Game Dev Best Practices, Straight From the Voxel’s Mouth

Posted by admin on January 29th, 2012 filed in Games, jMonkeyEngine

In the “Not done with jMonkeyEngine” corner there are also some interesting news. Just found this nice looking Voxel world demo by Evan Todd. (Click the link for beautiful screenshots.) I think the project is called Lemma, and it’s targetting the PC and Xbox crowd. It’s really cool to see how people get inspired by the voxel concept and make it look better and better in each iteration! (I’m beginning to think this blog needs a “Voxel<3" tag...) Lemma uses less repetive textures than other voxel engines, I don't know what exactly he did... Possibly he created geometries out of voxel surfaces, and used large procedural textures on the whole chunk? I need to try that myself to see how that performs... I assume that Evan uses the Lemma world as backdrop for this Parcour Ninja game.

In his blog, Evan also makes some interesting points about game development and tools (he’s writing his own engine). Many developers set out to write their own game engine instead of using existing tools. This approach has pros and cons: If you are a very experienced developer, you can of course do what ever you want, and you’ll be successful. For beginners, having access to tried and tested tools speeds up game development significantly, and you don’t lose artistic freedom only because you use a preexisting engine (like my favorite jMonkeyEngine). It makes a huge difference whether you simply add a powerful feature by calling one method, or whether you avoid good features, only because you dread the overhead of code it incurs…

This kind of usability is a goal that you mustn’t let go “out of sight, out of mind”. Evan says about designing tools for game development:

The question should not be “how many shiny graphics techniques can I incorporate?”. It should be “how easy is it to create content for this game?”.

Since the jMonkeyEngine is a Java framework, and not a “visual MMORPG-generator”, the first step is actually to create “your own engine” based on jme3: You extend the SimpleApplication class and configure it the way you need. You add your branding and your defaults, your screen switching states and your GUI. When all the generic pieces are ready, you compile your custom game classes into a little JAR. This JAR depends on the jMonkeyEngine, and your upcoming games depend on your custom JAR (and indirectly also on the jMonkeyEngine). Hook in your content and off you go. Evan shares a similar experience:

[…] I didn’t really take advantage of [the audio] features, because it was a pain. I got away with the bare minimum. […] Suddenly I’m adding new sounds, playing with the settings, and actually enjoying it. What changed? […] The tool made the difference. It made it easy for me to go in and control sounds without writing code and recompiling. Now there will be a lot more variation in the sound, because it’s so easy to do.

Although the jMonkeyEngine SDK is no drag&drop “GarageBand” for game developers (where every chord is so restricted that it magically falls into place), it has sped up the development process drastically compared to jMonkeyEngine 2. No more worrying about classpath and build scripts and asset paths and packaging of the executable… No more switching between web browser and code editor for javadoc, code samples, or API details… Common tasks like converting, laying out, and previewing scenes is a context-menu away. When I started with jme1 and jme2 four years ago, I spent most of time figuring out the back-end. In jme3, I create a new game project and focus on my game content right away. That’s what a good tool should do.

I also liked Evan’s Global Game Jam 2012 Liveblog, it shows a realistic approach to game design. Yes yes I know, “Keep your realism out of my dream game!!” Every new developer crams as many ideas as possible into one game — and then gives up half-way through because it’s too complicated. (I am also guilty of that, I have restarted variations of the same game idea… how often now…? in the last four years.) Evan shows the evolution of a game idea that is simple enough to implement, and fun enough to play:

The game idea is a variation of Snakes, set inside a skyscraper. The snake travels through floors, staircases, elevators. The snake grows longer by eating people. The player strategically opens doors to lure the snake towards people and away from himself… When the snake is long enough, the player must trick it into biting its own tail to win. :-)

Comments are closed.