<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description></description><title>Lodestar</title><generator>Tumblr (3.0; @lodestargame)</generator><link>http://blog.lodestargame.com/</link><item><title>After converting the scripted data elements into pure TML data...</title><description>&lt;img src="http://24.media.tumblr.com/c2e53bba42fad8d377ed9582a92e19e6/tumblr_mm2clla7MA1r30ciyo7_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://25.media.tumblr.com/80d63a2143a97f0ad13241faaa12cf75/tumblr_mm2clla7MA1r30ciyo1_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://25.media.tumblr.com/e92a2a984f32d00283ef1a8a3b0d6337/tumblr_mm2clla7MA1r30ciyo2_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://25.media.tumblr.com/183388a138b1af9c3937849ee701dce1/tumblr_mm2clla7MA1r30ciyo3_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/1ba7de4085717d08fd078ba439d86161/tumblr_mm2clla7MA1r30ciyo4_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/a7b504289d9c949971f19dde17ffc7b3/tumblr_mm2clla7MA1r30ciyo5_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/94b0e1b7f3a7a657ff003f91bc4b3122/tumblr_mm2clla7MA1r30ciyo6_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/142d16fcf3ab2c4388eefc04b45ca270/tumblr_mm2clla7MA1r30ciyo8_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;p&gt;After converting the scripted data elements into pure TML data elements, I decided to also convert the noise function definitions to pure TML data definitions. Before doing this, however, I wanted to consolidate and expand my noise library. I was using value noise and had noise code spread out all over the project.&lt;/p&gt;
&lt;p&gt;In my noise research, I ran across Joshua Tippetts’ &lt;a href="http://accidentalnoise.sourceforge.net/index.html"&gt;Accidental Noise Library&lt;/a&gt; written in C++. It is modular and supports 2d, 3d, 4d and 6d noise. All the d’s you’d ever need. Also, its modular nature lends itself well to the data-driven function chaining that I want my modders to have access to.&lt;/p&gt;
&lt;p&gt;During the process of porting the lib to Java, I soon wished I had a way to visualize how the functions were chained and be able to adjust parameters and chaining while seeing the results in real-time. That led to the development of the visual layer you see above with the blue grid background.&lt;/p&gt;
&lt;p&gt;The visual layer let me test new modules / functions and quickly see the results. Since I would be using the chained noise functions predominantly for terrain generation (2d value maps), I also wanted a way to see what the terrain might look like without having to export the chain, load up the game and click through to see it. That led to the blocky 3d preview you see above.&lt;/p&gt;
&lt;p&gt;The 3d preview runs as a server listening for connections from the 3d output modules in the visual layer. Whenever it receives a new array of values, it rebuilds and displays the output accordingly. This let’s me put the 3d preview on any machine, and just leave it running.&lt;/p&gt;
&lt;p&gt;I think this is going to dramatically cut down the time spent tweaking noise.&lt;/p&gt;
&lt;p&gt;The visual layer and 3d preview is not freely available, however t&lt;span&gt;he underlying noise lib is open-source: &lt;/span&gt;&lt;a href="https://github.com/codetaylor/Joise"&gt;&lt;a href="https://github.com/codetaylor/Joise"&gt;https://github.com/codetaylor/Joise&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.lodestargame.com/post/49259175547</link><guid>http://blog.lodestargame.com/post/49259175547</guid><pubDate>Tue, 30 Apr 2013 07:27:29 -0700</pubDate></item><item><title>Tuple Markup Language</title><description>&lt;p&gt;&lt;strong&gt;tl:dr&lt;/strong&gt; I rewrote Google&amp;#8217;s Gson JSON library for use with TML. If you use Java and want clean, human-readable/editable data, use it.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/codetaylor/Juple"&gt;&lt;a href="https://github.com/codetaylor/Juple"&gt;https://github.com/codetaylor/Juple&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Initially I decided to expose game data via scripts, or rather through a Java api. The scripts were just java classes that got loaded dynamically at run-time. Now keep in mind I&amp;#8217;m just talking about data, not logic. This seemed like an awesome idea at first. Then I started using it.&lt;/p&gt;
&lt;p&gt;It quickly became apparent that there was too much overhead, boiler-plate, cruft-shifting type coding going on. If I wanted to add a property to something, first I had to define it in the API, then go write the code to handle populating the value in-game, and finally, go modify the script. On top of that, there was the Java-doc for the API that would have to be kept up to date, not only for the data mapping methods, but also for the logic.&lt;/p&gt;
&lt;p&gt;If I have a game entity that has four values, I don&amp;#8217;t want to have to define a package, define imports, think of a clever class name (or concoct a new naming convention), write an interface in the API, write the class loading code, write the definition handling code, update the java-doc&amp;#8230; ugh. Monolithic Sisyphus syndrome.&lt;/p&gt;
&lt;p&gt;After a little thought, I decided to split the data definition from the scripting altogether. Scripts will now simply exist for logic and data will be defined without logic. Not to say that data will be generated illogically. A sniper? Let&amp;#8217;s give her a hand-to-hand combat bonus. What? I didn&amp;#8217;t see an &amp;#8216;if-then&amp;#8217;! No no&amp;#8230; I digress.&lt;/p&gt;
&lt;p&gt;The first tech that came to mind was XML. I played about with XML for a bit and then moved on to JSON. XML felt too cumbersome for what I imagined and JSON was a move in the right direction. Google has a pretty robust, open-source Java JSON lib called Gson, and I really liked how easy it was to use and extend. Then I ran across TML&amp;#8230;&lt;/p&gt;
&lt;p&gt;TML, or Tuple Markup Language, is a minimalist, all-purpose markup language created by John Judnich. I thought to myself, &amp;#8220;That&amp;#8217;s it! That&amp;#8217;s what I&amp;#8217;m going to use!&amp;#8221; I delved into the &lt;a href="https://github.com/judnich/TupleMarkup"&gt;GitHub repo&lt;/a&gt;.. ok C, C++, Javascript, Python: no lib for Java. So sad. Back to JSON I went, sighing all the way.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;I was writing stuff like this:&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
    "first name": "John",
    "last name": "Smith",
    "age": 25,
    "address": {
        "street address": "21 2nd Street",
        "city": "New York",
        "state": "NY",
        "postalCode": 10021
    }&lt;br/&gt;}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;&amp;#8230;while dreaming about stuff like this:&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[
    [first name | John]
    [last name | Smith]
    [age | 25]
    [address |
        [street address | 21 2nd Street]
        [city | New York]
        [state | NY]
        [postalCode | 10021]
    ]
]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;I felt like I was painting with rocks. I just had to have the power and flexibility of the Gson lib, but for TML.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;That&amp;#8217;s why I rewrote Gson for TML&amp;#8230; FTW.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s free, open-source, and has some decent docs, &lt;a href="https://github.com/codetaylor/Juple"&gt;check it out&lt;/a&gt;.&lt;/p&gt;</description><link>http://blog.lodestargame.com/post/48934974242</link><guid>http://blog.lodestargame.com/post/48934974242</guid><pubDate>Fri, 26 Apr 2013 09:12:03 -0700</pubDate></item><item><title>My friend is about halfway done with a ship model and texture...</title><description>&lt;img src="http://25.media.tumblr.com/11b4065cc9a32b6b9446de45748dfa94/tumblr_mkwkps7tWj1r30ciyo1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;My friend is about halfway done with a ship model and texture for the new game screen. Today I dropped it in to get an idea of how it will look.&lt;/p&gt;</description><link>http://blog.lodestargame.com/post/47397034593</link><guid>http://blog.lodestargame.com/post/47397034593</guid><pubDate>Sun, 07 Apr 2013 13:53:52 -0700</pubDate></item><item><title>It’s been almost two months since I started a major...</title><description>&lt;img src="http://24.media.tumblr.com/0284c7ba91085dce2d8681b3528ed939/tumblr_mk75ykdOre1r30ciyo1_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://25.media.tumblr.com/2f739007de7719b2b0b1cb3f3954ccff/tumblr_mk75ykdOre1r30ciyo2_r1_500.png"/&gt;&lt;br/&gt; Refactoring glitch&lt;br/&gt;&lt;br/&gt; &lt;img src="http://25.media.tumblr.com/6163c278b7d2e8a03a75a0ddbf08aac7/tumblr_mk75ykdOre1r30ciyo3_r1_500.png"/&gt;&lt;br/&gt; Refactoring glitch&lt;br/&gt;&lt;br/&gt; &lt;p&gt;It’s been almost two months since I started a major refactor on the context, input, state, asset, scene graph, shader and render systems. I’m pleased to say that the engine is just about back to where it was before I started, with some very beneficial added functionality.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Context System&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The rendering context now exists in its own thread and fires events to its listener, the main application. Some of the event methods include &lt;em&gt;initialize()&lt;/em&gt;, &lt;em&gt;update()&lt;/em&gt;, &lt;em&gt;restart()&lt;/em&gt;, &lt;em&gt;stop()&lt;/em&gt; and &lt;em&gt;destroy()&lt;/em&gt;. The other system components can then be established with access to the rendering context in the listener’s &lt;em&gt;initialize()&lt;/em&gt; method. Inside the main game loop, the &lt;em&gt;update()&lt;/em&gt; method, all of the other system components are updated. Changing the display properties calls the &lt;em&gt;restart()&lt;/em&gt; method causing the render manager and GUI to update with respect to the new properties. The &lt;em&gt;restart()&lt;/em&gt; method allows the context to be restarted at any time during the execution of the application without interruption; basically changing any display property will no longer force a restart of the entire application. When the player requests to exit the application, the &lt;em&gt;stop()&lt;/em&gt; method is called and after the context is destroyed, the &lt;em&gt;destroy()&lt;/em&gt; method is called.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Input System&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The old input system was very concrete, inflexible, and too many other systems were dependent on a specific output from the input manager. This became problematic when refactoring the core systems that were too tightly integrated with the input. The new input system uses components that separate the underlying input messages from the output. Keys, buttons, and axes can be mapped to the input system as triggers for defined events and listeners can be registered to listen for those events. Keyboard and mouse input components have been written and other components can be easily written and implemented in the future. Components for joystick or touch-based input could be swapped in without changing any game code. Additionally, this redesign makes user defined controls very easy to implement.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;State System&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Game states should not be a set of enums in a switch managed by a singleton. Singletons are like drugs; use one and pretty soon you’re using them all the time, all over the place. It wasn’t long before I had state changes being triggered from code that shouldn’t care about state. This design is naive and gets out of hand rapidly, so needless to say, the old state system was stupid. The new system uses state objects that are initialized and updated in the rendering thread, giving the states access to the application systems and the scene graph. States can encapsulate different portions of game logic; they are kept tidy and clean up after themselves. For example I have a state to control display and interaction with the main menu, a state to display and update the scene graph objects (planet, skybox) in the main menu, and a state that starts the game server and listens and reacts to state changes within the server. The state objects can now be cleanly used to separate different kinds of game logic.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Asset System&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The decision to undergo a major refactor stemmed from the need for better asset management. The old asset system loaded assets like images, fonts and models into memory and kept a hard reference. That’s it. There wasn’t even a way to unload dead assets. The new asset system leverages the java.lang.ref package, specifically the PhantomReference and WeakReference, to automatically free memory from unused assets when it’s needed. Some asset types are cloned from the original cached asset when requested. This allows the properties of the cloned asset to be manipulated independently from the other instances of the asset while still maintaining a reference to the shared asset data. The asset manager keeps track of the clones and, when the garbage collector deems that none of the clones are reachable, it cleans up the original asset if the memory is needed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Scene Graph&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The scene graph underwent many internal changes, but the overall functionality is relatively unchanged. The old scene graph used separate nodes for rotation, translation and scale. The new scene graph  combines the three into a single transform for each node and, instead of converting quaternions to rotation matrices and multiplying those, it simply uses quaternions for rotation. Some optimizations were made to the way the scene graph is updated. Previously, the transform data for each node in the scene graph was calculated every frame. Now, only the nodes that need to be updated are calculated.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Render System&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The render system underwent internal changes in the way that the renderable nodes are queued, culled and rendered. These changes aren’t really worth going into detail about. One change that is worth mentioning, however, is the way that the render system handles assets that are uploaded to the GPU such as textures and buffer data. It uses a method similar to the method used by the asset manager and leverages the java references to be notified when an uploaded asset is no longer reachable CPU-side. When the system is notified of a dead GPU asset, the asset is removed from the GPU. Another new feature of the render system ties into the new asset management. The asset caches can be cleared of specific types of assets, then the render system forced to re-initialize all attached rendering components. These two features, when combined, can be used to instantly reload shaders without restarting the application.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Shader System&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;All of the shaders are now GLSL 1.5 core instead of GLSL 3.3 core. This was done in response to shader compilation errors on OSX, which as I understand, is limited to OpenGL 3.2 and GLSL 1.5. When shader assets are loaded, they can be assigned global uniform bindings, which consist of commonly needed uniforms, such as the view matrix and projection matrix. When the shader is enabled, the global bindings are checked and updated. Technique specific uniforms exist within the lightweight technique objects and are updated in the same fashion. Many techniques can have a reference to the same shader asset, yet have different values for the technique specific uniforms.&lt;/p&gt;
&lt;p&gt;The old shader system used the positions of the far corners of the frustum in view space to cast a ray through a clip space fragment position and reconstruct the view space position of the fragment from the gbuffer’s depth texture. The frustum corner positions were calculated and passed into the shader every frame. Now the frustum corners are calculated in the shader by multiplying the full-screen quad corners by the inverse of the projection matrix.&lt;/p&gt;</description><link>http://blog.lodestargame.com/post/46235550676</link><guid>http://blog.lodestargame.com/post/46235550676</guid><pubDate>Sun, 24 Mar 2013 23:37:44 -0700</pubDate></item><item><title>The particle code is shaping up nicely. This is now the third...</title><description>&lt;img src="http://25.media.tumblr.com/cc3214fb31995d32045bb9377127b663/tumblr_mh8v4l0z0r1r30ciyo1_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/073d51591d4b7c8dce4822c350d633cc/tumblr_mh8v4l0z0r1r30ciyo2_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://25.media.tumblr.com/9ed6c835160d356d796ae0f6dd9b9d73/tumblr_mh8v4l0z0r1r30ciyo3_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/c0dc75e2464a9eb408b7f416682277fd/tumblr_mh8v4l0z0r1r30ciyo4_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;p&gt;The particle code is shaping up nicely. This is now the third re-design from the ground up and this is the one that I’m sticking with. I decided to use the CPU for particles. Yes, it is limiting and, yes I am aware of things like texture-data, transform feedback VBO, and OpenCL particle systems that run in parallel on the GPU. I chose to implement particles on the CPU because I wanted to have a modular system that was easily extensible. I didn’t want to write a tool that would dynamically generate a shader or OCL kernel for every possible combination of parameter manipulation modules. I wanted to have access to the particle data in order to do things like per-particle light sources and collision.&lt;/p&gt;
&lt;p&gt;The current system meets these needs by using what I’m calling modules. Modules implement interfaces and are assigned to emitter definitions; essentially a form of dependency injection. Emitter definitions are collected within system definitions or assigned to other emitter definitions as child emitters that spawn either at the birth of a particle or on the death of a particle. Particles exist in an array and are generated on start-up. The particle pool manages particles by allowing emitters to request either a sorted or unsorted particle, and allows a maximum of 10k sorted and 20k unsorted particles.&lt;/p&gt;
&lt;p&gt;When the particle manager receives a request to create a new particle system from a definition and attach it to the scene graph, it creates a new system instance, and subsequent emitter instances. The instance classes are very lightweight and contain instance specific members such as system world position, emitter position relative to the parent system, active particles, and counter modules copied from the definition. Each emitter contains a reference to it’s definition and, during the particle update loop, the modules attached to the definition are called and passed a particle to act upon.&lt;/p&gt;
&lt;p&gt;Using a modular dependency injection in this way greatly reduces conditional branching within the update loop and allows new behavior models to be added quickly, easily, and with very little risk of breaking the save format.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Features:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Position modules&lt;/li&gt;
&lt;li&gt;Velocity modules&lt;/li&gt;
&lt;li&gt;Acceleration modules&lt;/li&gt;
&lt;li&gt;Rotation modules&lt;/li&gt;
&lt;li&gt;Animated vector flow field based on Perlin noise&lt;/li&gt;
&lt;li&gt;Textures&lt;/li&gt;
&lt;li&gt;Billboard, +x facing, +y facing, +z facing&lt;/li&gt;
&lt;li&gt;Double sided with reversed texture on back&lt;/li&gt;
&lt;li&gt;Keyframe interpolation for color, alpha, size, texture index, rotation&lt;/li&gt;
&lt;li&gt;Burn parameter for smooth interpolation between alpha and additive blending&lt;/li&gt;
&lt;li&gt;Emissive parameter&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Total Project Statistics:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;---------------------------------------------------------------
Language     files          blank        comment           code
---------------------------------------------------------------
Java           645          15593           7098          45229
PHP            309          10275           5858          26722
CSS              6            641             68           3242
GLSL            62            458            130           1839
Javascript      14            262             89           1192
XML             11            158             16            771
HTML             3              8              0             42
DOS Batch        1              0              0              1
---------------------------------------------------------------
SUM:          1051          27395          13259          79038
---------------------------------------------------------------&lt;/pre&gt;</description><link>http://blog.lodestargame.com/post/41537580751</link><guid>http://blog.lodestargame.com/post/41537580751</guid><pubDate>Sat, 26 Jan 2013 10:38:17 -0800</pubDate><category>lodestar</category><category>lodestar universe</category><category>lodestar: stygian skies</category><category>lodestar game</category><category>particles</category><category>game development</category><category>game engine</category></item><item><title>Photo</title><description>&lt;img src="http://24.media.tumblr.com/b9a8010d87c0e28f35601e8a7f2ac2a8/tumblr_mgkq1xXEw71r30ciyo1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;</description><link>http://blog.lodestargame.com/post/40545718438</link><guid>http://blog.lodestargame.com/post/40545718438</guid><pubDate>Mon, 14 Jan 2013 14:00:56 -0800</pubDate><category>lodestar game</category><category>lodestar</category><category>lodestar: stygian skies</category><category>lodestar universe</category><category>game development</category><category>game engine</category><category>particles</category></item><item><title>Not sure if art or bad buffer stride.</title><description>&lt;img src="http://24.media.tumblr.com/8791f98f00f540ec4ff4650d4d0f102c/tumblr_mgjd5gGLSg1r30ciyo1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Not sure if art or bad buffer stride.&lt;/p&gt;</description><link>http://blog.lodestargame.com/post/40461900157</link><guid>http://blog.lodestargame.com/post/40461900157</guid><pubDate>Sun, 13 Jan 2013 14:01:03 -0800</pubDate><category>lodestar universe</category><category>lodestar: stygian skies</category><category>lodestar</category><category>lodestar game</category><category>game engine</category><category>game development</category><category>particles</category></item><item><title>Update 0.0.146e is live!
This update has a few fixes and one...</title><description>&lt;img src="http://24.media.tumblr.com/d97786169490f6eea6bbfc6745b7b04e/tumblr_mg2k66o1j71r30ciyo1_r1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;strong&gt;Update 0.0.146e is live!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This update has a few fixes and one major addition: sprite animation editor! Currently the animator supports three types of interpolation: step, linear and cosine. Initially I had planned to also use cubic interpolation like a Hermite or TCB spline, but decided against it. The cosine has some of the features of a parameterized spline, like the smooth ease-in and ease-out, but lacks the fine-tuned control of a TCB spline. I’m ok with that for now. The cosine interpolation is cheap and the sprites are blocky. Seriously, how much granularity do we need here?&lt;/p&gt;
&lt;p&gt;There is now an envelope editor that allows you to visualize all of the keyframes in the timeline for each transform and assign an interpolation type for each axis.&lt;/p&gt;
&lt;p&gt;Lodestar:&lt;br/&gt;* Fixed crash report newline spacing… again&lt;/p&gt;
&lt;p&gt;Launcher:&lt;br/&gt;+ Added animator to the menu&lt;br/&gt;* Fixed empty menu on initial download&lt;/p&gt;
&lt;p&gt;Sprite Animator:&lt;br/&gt;+ Initial release; v0.1b&lt;/p&gt;
&lt;p&gt;Sprite Editor:&lt;br/&gt;+ Added hotkey Q for Add&lt;br/&gt;+ Added hotkey E for Paint&lt;br/&gt;+ Added hotkey S for Erase &lt;/p&gt;
&lt;pre&gt;---------------------------------------------------------------
Language     files          blank        comment           code
---------------------------------------------------------------
Java           483          12830           5477          37052
PHP            309          10275           5858          26722
CSS              6            641             68           3242
GLSL            54            407            111           1579
Javascript      14            262             89           1192
XML             11            158             16            771
HTML             3              8              0             42
DOS Batch        1              0              0              1
---------------------------------------------------------------
SUM:           881          24581          11619          70601
---------------------------------------------------------------&lt;/pre&gt;</description><link>http://blog.lodestargame.com/post/39602157273</link><guid>http://blog.lodestargame.com/post/39602157273</guid><pubDate>Thu, 03 Jan 2013 15:13:20 -0800</pubDate><category>lodestar game</category><category>lodestar: stygian skies</category><category>lodestar</category><category>lodestar universe</category><category>game engine</category><category>game development</category><category>animation</category><category>voxel</category></item><item><title>Didn’t get much done this week with the holidays and all,...</title><description>&lt;img src="http://25.media.tumblr.com/e2816761035e7326e93724ddd687c5f4/tumblr_mfrkyuzQ3s1r30ciyo1_500.png"/&gt;&lt;br/&gt; Framework&lt;br/&gt;&lt;br/&gt; &lt;img src="http://25.media.tumblr.com/03c95d2f13f97ccfa8bd411d2fdca7f0/tumblr_mfrkyuzQ3s1r30ciyo2_500.png"/&gt;&lt;br/&gt; Keyframes and quaternions&lt;br/&gt;&lt;br/&gt; &lt;img src="http://25.media.tumblr.com/c6e39610e64146122b29390830ae8433/tumblr_mfrkyuzQ3s1r30ciyo5_r1_500.png"/&gt;&lt;br/&gt; Models&lt;br/&gt;&lt;br/&gt; &lt;p&gt;Didn’t get much done this week with the holidays and all, so I’m afraid there will be no update this weekend. I did get a great start on the animator and I hope to release it in next weekend’s update. Stay tuned!&lt;/p&gt;
&lt;pre&gt;---------------------------------------------------------------
Language     files          blank        comment           code
---------------------------------------------------------------
Java           472          12499           5307          35440
PHP            309          10275           5858          26722
CSS              6            641             68           3242
GLSL            54            407            111           1579
Javascript      14            262             89           1192
XML             10            134             14            669
HTML             3              8              0             42
DOS Batch        1              0              0              1
---------------------------------------------------------------
SUM:           869          24226          11447          68887
---------------------------------------------------------------&lt;/pre&gt;</description><link>http://blog.lodestargame.com/post/39157407999</link><guid>http://blog.lodestargame.com/post/39157407999</guid><pubDate>Sat, 29 Dec 2012 14:01:01 -0800</pubDate><category>lodestar game</category><category>lodestar</category><category>lodestar: stygian skies</category><category>lodestar universe</category><category>game engine</category><category>game development</category><category>animation</category></item><item><title>Version 0.0.144e is live!
This week was spent adding features to...</title><description>&lt;img src="http://25.media.tumblr.com/dd58a72104029ae07ebc058e44445f81/tumblr_mf7b3gFA581r30ciyo1_r1_500.png"/&gt;&lt;br/&gt; Origin&lt;br/&gt;&lt;br/&gt; &lt;img src="http://24.media.tumblr.com/c502a294b3f4522c444a667d94459019/tumblr_mf7b3gFA581r30ciyo2_r1_500.png"/&gt;&lt;br/&gt; New procedural color preview&lt;br/&gt;&lt;br/&gt; &lt;img src="http://25.media.tumblr.com/e6b392bcd672cf570d196dd7aeed99b5/tumblr_mf7b3gFA581r30ciyo10_r2_500.png"/&gt;&lt;br/&gt; Widescreen view &amp; better selection controls in 3D&lt;br/&gt;&lt;br/&gt; &lt;img src="http://25.media.tumblr.com/30f10da57e80c29b684660851bdcb67b/tumblr_mf7b3gFA581r30ciyo8_r1_500.png"/&gt;&lt;br/&gt; Luminosity preview&lt;br/&gt;&lt;br/&gt; &lt;img src="http://25.media.tumblr.com/ef8144e8ef556ff65aa99ef762e2ecc3/tumblr_mf7b3gFA581r30ciyo5_r4_500.png"/&gt;&lt;br/&gt; Symmetry&lt;br/&gt;&lt;br/&gt; &lt;p&gt;&lt;strong&gt;Version 0.0.144e is live!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This week was spent adding features to the sprite editor and I’m proud to say it’s done and time to move on to the animation editor. Here are some screens and the changelog.&lt;/p&gt;
&lt;p&gt;I have nightmares about Java layout code.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Launcher:&lt;/strong&gt;&lt;br/&gt;* Fixed Windows Aero graphical glitch&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sprite Editor:&lt;/strong&gt;&lt;br/&gt;+ Palette string tags&lt;br/&gt;+ Improved selected swatch indicator&lt;br/&gt;+ Widescreen view&lt;br/&gt;+ Center pane now uses all available space&lt;br/&gt;+ Procedural HSB palette variance&lt;br/&gt;+ Improved color preview in swatch editor and swatch selector&lt;br/&gt;+ Scroll wheel scrolls through slices when hovered over slice view&lt;br/&gt;+ Selection tool with selection size and location modification&lt;br/&gt;+ Cut / copy / paste selection&lt;br/&gt;+ Undo / redo paste selection&lt;br/&gt;+ Fill, paint, delete selection&lt;br/&gt;+ Select all&lt;br/&gt;+ Crop to selection&lt;br/&gt;+ Resize sprite&lt;br/&gt;+ Clear palette button&lt;br/&gt;+ Symmetrical editing: paint, fill, add, erase and most selection edits&lt;br/&gt;+ Hold A, W, or D and scroll to move selection in 3D view&lt;br/&gt;+ Hold A, W, or D + LShift to size selection in 3D view&lt;br/&gt;+ Copy / paste palette swatches&lt;br/&gt;+ Luminosity value for each palette swatch&lt;br/&gt;+ Luminosity preview mode in 3D view&lt;br/&gt;+ Swatch edits and pastes can now be undone&lt;br/&gt;+ Redo functionality&lt;br/&gt;+ Grid and sprite bounds visualization in 3D view&lt;br/&gt;+ Origin editing&lt;br/&gt;* Fixed timer thread shutdown bug&lt;br/&gt;* Fixed duplicate filename extension bug&lt;/p&gt;
&lt;pre&gt;---------------------------------------------------------------
Language     files          blank        comment           code
---------------------------------------------------------------
Java           413          11046           4183          30782
PHP            309          10275           5858          26722
CSS              6            641             68           3242
GLSL            54            407            111           1579
Javascript      14            262             89           1192
XML             10            134             14            669
HTML             3              8              0             42
DOS Batch        1              0              0              1
---------------------------------------------------------------
SUM:           810          22773          10323          64229
---------------------------------------------------------------&lt;/pre&gt;</description><link>http://blog.lodestargame.com/post/38558252956</link><guid>http://blog.lodestargame.com/post/38558252956</guid><pubDate>Sat, 22 Dec 2012 10:33:31 -0800</pubDate><category>lodestar game</category><category>lodestar: stygian skies</category><category>lodestar universe</category><category>lodestar</category><category>voxels</category><category>voxel editor</category></item><item><title>Update 0.0.143e is live!
For those of you who don’t know,...</title><description>&lt;img src="http://25.media.tumblr.com/42948e55971621ac9c7e96d43fd5032a/tumblr_mf39gcSzIN1r30ciyo1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;strong&gt;Update 0.0.143e is live!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For those of you who don’t know, you can snag the software and all future updates for only 5 USD &lt;a href="https://lodestargame.com/store"&gt;in our store&lt;/a&gt;. This update includes the 3D sprite editor, accessible from the little toolbox in the corner of the launcher. Get in early before the price goes up! Lodestar is still early in development and every little bit helps. :D&lt;/p&gt;
&lt;p&gt;Keep in mind you will need a video card capable of at least OpenGL 3.3 and Shader Model 3.0 to run the software. The 3D sprite editor will run with OpenGL 1.1.&lt;/p&gt;
&lt;p&gt;Here are the patch notes:&lt;/p&gt;
&lt;p&gt;&lt;span&gt;+ Added 3D Sprite Editor v0.1 to tooklit&lt;/span&gt;&lt;br/&gt;&lt;span&gt;+ New launcher&lt;/span&gt;&lt;br/&gt;&lt;span&gt;+ Access toolkit resources from launcher&lt;/span&gt;&lt;br/&gt;&lt;span&gt;+ Improved error handling&lt;/span&gt;&lt;br/&gt;&lt;span&gt;* Server threadpool now shuts down properly&lt;/span&gt;&lt;br/&gt;&lt;span&gt;* Fixed server crash when duplicate players try to connect&lt;/span&gt;&lt;br/&gt;&lt;span&gt;* Fixed five second session expiration bug&lt;/span&gt;&lt;br/&gt;&lt;span&gt;* Fixed silent crash when starting a game&lt;/span&gt;&lt;br/&gt;&lt;span&gt;* Crash report now generates proper newline for the issue tracker&lt;/span&gt;&lt;br/&gt;&lt;span&gt;* Fixed pre-launcher crashing when no internet connection&lt;/span&gt;&lt;br/&gt;&lt;span&gt;* Fixed pre-launcher Java 6 only requirement; now accepts 6 or 7&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;---------------------------------------------------------------
Language     files          blank        comment           code
---------------------------------------------------------------
Java           392          10315           4126          27732
PHP            309          10275           5858          26722
CSS              6            641             68           3242
GLSL            54            407            111           1579
Javascript      14            262             89           1192
XML             10            134             14            669
HTML             3              8              0             42
DOS Batch        1              0              0              1
---------------------------------------------------------------
SUM:           789          22042          10266          61179
---------------------------------------------------------------&lt;/pre&gt;</description><link>http://blog.lodestargame.com/post/38011246245</link><guid>http://blog.lodestargame.com/post/38011246245</guid><pubDate>Sat, 15 Dec 2012 14:01:45 -0800</pubDate><category>lodestar universe</category><category>lodestar game</category><category>lodestar</category><category>lodestar: stygian skies</category><category>game engine</category><category>game development</category></item><item><title>Sprite editor in progress… will be in the update this...</title><description>&lt;img src="http://24.media.tumblr.com/5088beb41396eee8e082e0a1e1c534a1/tumblr_mex1diYzbE1r30ciyo2_500.png"/&gt;&lt;br/&gt; Introductory mock-up with 3D view&lt;br/&gt;&lt;br/&gt; &lt;img src="http://24.media.tumblr.com/767dd8365e5b861cc5e9a9e765400e50/tumblr_mex1diYzbE1r30ciyo1_500.png"/&gt;&lt;br/&gt; Indexed palette and editing capability&lt;br/&gt;&lt;br/&gt; &lt;img src="http://24.media.tumblr.com/5b591a04e4f5f8b6193ef902b4f6c157/tumblr_mex1diYzbE1r30ciyo5_r1_500.png"/&gt;&lt;br/&gt; Arbitrary sized sprite maps and file IO&lt;br/&gt;&lt;br/&gt; &lt;img src="http://25.media.tumblr.com/0c9d781efaea041e691fc4adb54cf36e/tumblr_mex1diYzbE1r30ciyo6_r1_500.png"/&gt;&lt;br/&gt; Converter to load the old LSS sprite format&lt;br/&gt;&lt;br/&gt; &lt;img src="http://25.media.tumblr.com/8a8cb3a62435119efe5f6101e2014cdb/tumblr_mex1diYzbE1r30ciyo7_r1_500.png"/&gt;&lt;br/&gt; Axis indicators, paint / add mode, slice bounds visualization&lt;br/&gt;&lt;br/&gt; &lt;p&gt;Sprite editor in progress… &lt;strong&gt;will be in the update this weekend!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I had to write a converter to be able to load in the old LSS sprite format. As you can see by the picture with the orange hair, the old format was somewhat wasteful. Also, I ran into a problem: the old format uses three floats per voxel to represent color whereas the new format uses 16 indexed colors. This means that the old format used way more than 16 colors.&lt;/p&gt;
&lt;p&gt;When I first loaded the sprite with orange hair, I used a simple bit of code that just  put the first 16 unique colors into the swatches. All swatches were filled with various shades of orange. Not good.&lt;/p&gt;
&lt;p&gt;So I thought about it a little bit. RGB values from 0.0f to 1.0f can be thought of as three dimensional points in the first (+, +, +) octant. Therefore it should be pretty straightforward to use the distance formula &lt;strong&gt;[ d = sqrt(deltaX^2 + deltaY^2 + deltaZ^2) ]&lt;/strong&gt; as a measure of how similar two colors are. Testing against a threshold &lt;strong&gt;[ if d &lt; threshold … ]&lt;/strong&gt; allows subsequently discovered colors to use an existing indexed color if the new color is close enough.&lt;/p&gt;
&lt;p&gt;It’s not perfect as it still produces some anomalous results, but it’s good enough to retrieve some of the hard work I put in on the old sprites a year ago.&lt;/p&gt;
&lt;p&gt;Current features include:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Saving / loading sprites&lt;/li&gt;
&lt;li&gt;Importing / exporting palettes&lt;/li&gt;
&lt;li&gt;Importing old LSS sprite format&lt;/li&gt;
&lt;li&gt;Slice bounds visualization in 3D view&lt;/li&gt;
&lt;li&gt;View only selected slice in 3D view&lt;/li&gt;
&lt;li&gt;Axis indicators in 3D view&lt;/li&gt;
&lt;li&gt;View any of the 4 views fullscreen&lt;/li&gt;
&lt;li&gt;16 indexed colors&lt;/li&gt;
&lt;li&gt;Paint / add / erase in slice view&lt;/li&gt;
&lt;li&gt;Sprite sizes (1, 1, 1) - (64, 64, 64)&lt;/li&gt;
&lt;li&gt;Rotate / pan / zoom 3D view&lt;/li&gt;
&lt;li&gt;Paint / add / erase in 3D view &lt;/li&gt;
&lt;li&gt;Slice fill (not pictured)&lt;/li&gt;
&lt;/ul&gt;&lt;pre&gt;---------------------------------------------------------------
Language     files          blank        comment           code
---------------------------------------------------------------
Java           380          10137           4127          26833
PHP            309          10275           5858          26722
CSS              6            641             68           3242
GLSL            54            407            111           1579
Javascript      14            262             89           1192
XML              9            111             12            574
HTML             3              8              0             42
DOS Batch        1              0              0              1
---------------------------------------------------------------
SUM:           776          21841          10265          60185
---------------------------------------------------------------&lt;/pre&gt;</description><link>http://blog.lodestargame.com/post/37932072615</link><guid>http://blog.lodestargame.com/post/37932072615</guid><pubDate>Fri, 14 Dec 2012 14:01:03 -0800</pubDate><category>lodestar game</category><category>lodestar: stygian skies</category><category>lodestar universe</category><category>lodestar</category><category>game-engine</category><category>game development</category><category>indie game</category><category>sprites</category><category>sprite editor</category><category>modding</category></item><item><title>New launcher ready for next update.</title><description>&lt;img src="http://24.media.tumblr.com/ac078e0ee08a8b0740b34ef491646388/tumblr_meylrasFZ01r30ciyo1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;New launcher ready for next update.&lt;/p&gt;</description><link>http://blog.lodestargame.com/post/37858079653</link><guid>http://blog.lodestargame.com/post/37858079653</guid><pubDate>Thu, 13 Dec 2012 14:01:05 -0800</pubDate><category>lodestar</category><category>lodestar: stygian skies</category><category>lodestar universe</category><category>lodestar game</category><category>game-engine</category><category>game development</category><category>launcher</category></item><item><title>Improved error handling for the networking and scripting. Known...</title><description>&lt;img src="http://24.media.tumblr.com/ae38e2dec93bd0059c99c3358dae4b02/tumblr_metbgeLGud1r30ciyo1_r1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Improved error handling for the networking and scripting. Known errors that can be handled are displayed while everything gracefully saves and terminates in the background, returning the player to the title screen. The client no longer bombs all the way out when a minor exception is thrown.&lt;/p&gt;
&lt;pre&gt;&lt;a href="http://cloc.sourceforge.net"&gt;http://cloc.sourceforge.net&lt;/a&gt; v 1.56&lt;/pre&gt;
&lt;pre&gt;---------------------------------------------------------------
Language     files          blank        comment           code
---------------------------------------------------------------
PHP            308          10266           5858          26710
Java           354           9468           3860          24074
CSS              6            641             68           3242
GLSL            54            407            111           1579
Javascript      14            262             89           1192
XML              9            111             12            574
HTML             3              8              0             42
DOS Batch        1              0              0              1
---------------------------------------------------------------
SUM:           749          21163           9998          57414
---------------------------------------------------------------&lt;/pre&gt;</description><link>http://blog.lodestargame.com/post/37662649884</link><guid>http://blog.lodestargame.com/post/37662649884</guid><pubDate>Mon, 10 Dec 2012 14:01:13 -0800</pubDate><category>lodestar game</category><category>lodestar</category><category>lodestar: stygian skies</category><category>lodestar universe</category><category>game-engine</category><category>game engine</category><category>game development</category><category>game</category><category>sci-fi</category><category>error handling</category></item><item><title>Here’s a sneak peek at what the scripts look like. This...</title><description>&lt;img src="http://25.media.tumblr.com/216b9c2505cbabdd092ed4e863b5bbcb/tumblr_menggza3IA1r30ciyo1_r1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Here’s a sneak peek at what the scripts look like. This code, exposed through the ‘scripting’ API, generates the rudimentary biome that you’ve seen in all my screenshots.&lt;/p&gt;
&lt;p&gt;I refer to the files as scripts, but they’re really just Java source files.&lt;/p&gt;
&lt;p&gt;I’m currently employing Janino as a lightweight run-time compiler that generates Java bytecode from .java files. The scripts are loaded and compiled whenever a game is started. Additionally, the scripts are sandboxed, allowing only a select whitelist of packages to be imported, and run server-side only. The API exists simply as a collection of interfaces, enums and statics.&lt;/p&gt;
&lt;p&gt;The current API allows you to define blocks and biomes. When defining a biome you can register different value map plugins and test against those within the registered processing plugin. At this point the value maps consist of layered value noise combined in different ways.&lt;/p&gt;
&lt;p&gt;The goal is to allow players to script their own unique experience and share that with other players without the need for all players to have the same files. The API is documented and will be available as a compiled library and source package for easy integration into your favorite Java IDE. I will find an online home for the JavaDoc as well.&lt;/p&gt;
&lt;pre&gt;---------------------------------------------------------------
Language     files          blank        comment           code
---------------------------------------------------------------
PHP            308          10266           5858          26668
Java           356           9439           3839          23690
CSS              6            641             68           3242
GLSL            54            407            111           1579
Javascript      14            262             89           1192
XML              9            101             12            510
HTML             3              8              0             42
DOS Batch        1              0              0              1
---------------------------------------------------------------
SUM:           751          21124           9977          56924
---------------------------------------------------------------&lt;/pre&gt;</description><link>http://blog.lodestargame.com/post/37426899423</link><guid>http://blog.lodestargame.com/post/37426899423</guid><pubDate>Fri, 07 Dec 2012 14:00:50 -0800</pubDate><category>lodestar game</category><category>lodestar</category><category>lodestar: stygian skies</category><category>lodestar universe</category><category>game development</category><category>game engine</category><category>scripting</category></item><item><title>LAN host auto-discovery is working smoothly...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_mehtzcSJ9b1r30ciyo1_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/tumblr_mehtzcSJ9b1r30ciyo2_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://25.media.tumblr.com/tumblr_mehtzcSJ9b1r30ciyo3_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://25.media.tumblr.com/tumblr_mehtzcSJ9b1r30ciyo4_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;p&gt;LAN host auto-discovery is working smoothly now.&lt;/p&gt;
&lt;pre&gt;---------------------------------------------------------------
Language     files          blank        comment           code
---------------------------------------------------------------
PHP            308          10266           5858          26668
Java           340           9478           3707          23564
CSS              6            641             68           3242
GLSL            54            407            111           1579
Javascript      14            262             89           1192
XML              9            101             12            510
HTML             3              8              0             42
DOS Batch        1              0              0              1
---------------------------------------------------------------
SUM:           735          21163           9845          56798
---------------------------------------------------------------&lt;/pre&gt;</description><link>http://blog.lodestargame.com/post/37211580817</link><guid>http://blog.lodestargame.com/post/37211580817</guid><pubDate>Tue, 04 Dec 2012 14:01:13 -0800</pubDate><category>lodestar game</category><category>lodestar</category><category>lodestar: stygian skies</category><category>lodestar universe</category><category>game engine</category><category>game development</category><category>networking</category><category>multiplayer</category></item><item><title>Total Count</title><description>&lt;p&gt;Thought I&amp;#8217;d share my stats on the entire project so far. This count includes the web api, web app, web core, web backend, game client, game server, game pre-launcher, and game launcher. I took care to exclude the PHP libraries that I did not write.&lt;/p&gt;
&lt;p&gt;The web core is code shared between the web app and web backend. The web app handles player registration and account maintenance. The game pre-launcher updates the launcher and the launcher handles player authentication and game file updates; both use the web api. The game client and game server authenticate to each other and to the web app via the web api.&lt;/p&gt;
&lt;p&gt;You can visit the web app here: &lt;a href="https://lodestargame.com/home"&gt;https://lodestargame.com/home&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;---------------------------------------------------------------
Language     files          blank        comment           code
---------------------------------------------------------------
PHP            308          10266           5858          26669
Java           330           9317           3682          22777
CSS              6            641             68           3242
GLSL            54            402             86           1565
Javascript      14            262             89           1192
XML              9            101             12            501
HTML             3              8              0             42
DOS Batch        1              0              0              1
---------------------------------------------------------------
SUM:           725          20997           9795          55989
---------------------------------------------------------------&lt;/pre&gt;</description><link>http://blog.lodestargame.com/post/36902548182</link><guid>http://blog.lodestargame.com/post/36902548182</guid><pubDate>Fri, 30 Nov 2012 14:02:18 -0800</pubDate><category>lodestar</category><category>lodestar: stygian skies</category><category>lodestar game</category><category>lodestar universe</category><category>game development</category><category>game engine</category></item><item><title>The networking code is up and running!
When a player starts a...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_me8awqXVuM1r30ciyo1_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://24.media.tumblr.com/tumblr_me8awqXVuM1r30ciyo2_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://25.media.tumblr.com/tumblr_me8awqXVuM1r30ciyo3_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;img src="http://25.media.tumblr.com/tumblr_me8awqXVuM1r30ciyo4_500.png"/&gt;&lt;br/&gt; &lt;br/&gt;&lt;p&gt;The networking code is up and running!&lt;/p&gt;
&lt;p&gt;When a player starts a game, single or multi-player, the server application launches in a separate thread and generates an asymmetrical encryption key-pair. When a &lt;strong&gt;remote client&lt;/strong&gt; connects, after the handshake, the server sends the public key and a challenge. The client generates a symmetric, secret key, encrypts both the secret key and challenge with the server’s public key, and sends them back. The server then decrypts and verifies the challenge, verifies some other stuff, assigns the secret key to the player’s connection, and tells the client that all is well. The client switches to encrypted mode and all further communication between the client and server is encrypted after serialization.&lt;/p&gt;
&lt;p&gt;If the connecting &lt;strong&gt;client is local&lt;/strong&gt;, as in single player or multi-player host, the server and client switch transport mechanisms. This allows them to bypass the 7-layer burrito, bypass the encryption and serialization, and directly deliver packets to each other internally.&lt;/p&gt;
&lt;p&gt;Both transports use the same packet protocol and it’s easy to switch the local mode to use the remote transport on localhost for testing and debugging. When using the remote transport, packets can be encrypted and/or compressed after serialization. Structuring the code this way means that as I develop, I will be forced to use the protocol and think in terms of server &lt;-&gt; client architecture at all times.&lt;/p&gt;
&lt;p&gt;The offline mode indicator at the bottom is displayed when playing the game in offline mode. Go figure. You can choose to play in offline mode if you cannot connect to the server to verify your account. Unfortunately, you will not be able to enjoy multi-player or some extra perks, like rewarded titles and custom player sprite, when playing in offline mode.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://cloc.sourceforge.net"&gt;http://cloc.sourceforge.net&lt;/a&gt; v 1.56 T=1.0 s (369.0 files/s, 34135.0 lines/s)&lt;/p&gt;
&lt;pre&gt;---------------------------------------------------------------
Language     files          blank        comment           code
---------------------------------------------------------------
Java           312           7896           3506          20464
GLSL            54            402             86           1565
XML              2             34              4            177
DOS Batch        1              0              0              1
---------------------------------------------------------------
SUM:           369           8332           3596          22207
---------------------------------------------------------------&lt;/pre&gt;</description><link>http://blog.lodestargame.com/post/36832275571</link><guid>http://blog.lodestargame.com/post/36832275571</guid><pubDate>Thu, 29 Nov 2012 14:01:02 -0800</pubDate><category>lodestar</category><category>lodestar: stygian skies</category><category>lodestar game</category><category>lodestar universe</category><category>game engine</category><category>game development</category><category>networking</category></item><item><title>Scrollbars are done… kind of a pain in the...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_mdw43yU4c11r30ciyo1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Scrollbars are done… kind of a pain in the ass.&lt;/p&gt;
&lt;p&gt;Features:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;click the arrows to inc/dec by smallStep&lt;/li&gt;
&lt;li&gt;click the empty track to inc/dec by largeStep&lt;/li&gt;
&lt;li&gt;hover and scroll mouse to inc/dec by smallStep&lt;/li&gt;
&lt;li&gt;click and drag thumb to directly set value&lt;/li&gt;
&lt;li&gt;thumb size proportional to data displayed&lt;/li&gt;
&lt;li&gt;optional Skynet uplink for enhanced scroll precision&lt;/li&gt;
&lt;/ul&gt;</description><link>http://blog.lodestargame.com/post/36309792947</link><guid>http://blog.lodestargame.com/post/36309792947</guid><pubDate>Thu, 22 Nov 2012 14:00:41 -0800</pubDate><category>lodestar: stygian skies</category><category>lodestar game</category><category>lodestar</category><category>lodestar universe</category><category>game development</category><category>game engine</category><category>gui</category></item><item><title>I think everyone should have to code a text input control. It...</title><description>&lt;img src="http://24.media.tumblr.com/tumblr_mdox0vxVso1r30ciyo1_500.png"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;I think everyone should have to code a text input control. It builds char[].&lt;/p&gt;
&lt;p&gt;I’ve come to a point where I can no longer put off the text input. Inspired by the recent text input adventures of Hume over at &lt;a href="http://humespeaks.tumblr.com/" title="humespeaks.tumblr.com"&gt;humespeaks.tumblr.com&lt;/a&gt;, I decided to buckle down and handle it.&lt;/p&gt;
&lt;p&gt;The current iteration has most of the amenities you look for in a text box. Things like a movable, blinking horizontal and vertical cursor, key repeat with adjustable delay and repeat rate, accepted character filter, home, end, backspace and delete. It also supports arbitrary fonts, font sizes, and kerning.&lt;/p&gt;
&lt;p&gt;I imagine this is much more difficult with a lack of string abstraction.&lt;/p&gt;
&lt;p&gt;Also, this:&lt;/p&gt;
&lt;pre&gt;&lt;a href="http://cloc.sourceforge.net"&gt;http://cloc.sourceforge.net&lt;/a&gt; v 1.56
T=2.0 s (160.0 files/s, 14882.0 lines/s)
---------------------------------------------------------------
Language     files          blank        comment           code
---------------------------------------------------------------
Java           264           7373           3309          16808
GLSL            54            402             86           1564
XML              2             35              4            183
---------------------------------------------------------------
SUM:           320           7810           3399          18555
---------------------------------------------------------------
&lt;/pre&gt;
&lt;p&gt;Not sure why it says only 160 files and 14k lines in the top part. That is obviously not right.&lt;/p&gt;
&lt;p&gt;As it turns out, during the creation of this control, I discovered a substantial bug in my text renderer. The renderer was using glBufferSubData to buffer new VBO data into the eldest VBO in the cache. &lt;strong&gt;Note:&lt;/strong&gt; This doesn’t work when the VBO data you’re replacing is smaller than the data you replace it with.&lt;/p&gt;</description><link>http://blog.lodestargame.com/post/36017374098</link><guid>http://blog.lodestargame.com/post/36017374098</guid><pubDate>Sun, 18 Nov 2012 14:00:34 -0800</pubDate><category>lodestar</category><category>lodestar: stygian skies</category><category>lodestar universe</category><category>lodestar game</category><category>game development</category><category>game engine</category><category>text rendering</category><category>text input</category><category>gui</category></item></channel></rss>
