Development of Cosmodog - Part 1 Development framework
in this article, I want to share with you the development documentary on Cosmodog - a survival/adventure retro-style game with a post-apocalyptic sci-fi setting.
In this first part I will explain the framework and tools which I used to create Cosmodog.
The game was in development for ca. 3 years and it all started with an idea. Imagine being alone on an alien planet, similar to our earth but abandoned and full of dangers. Put yourself in the shoes of an astronaut who travels through the vast landscapes and destroyed cities trying to reveal the mystery behind the disappeared inhabitants. I wanted to build a game with this premise.
Another design decision for Cosmodog was the coherence of the game world. There are many survival games out there, but most of them use procedurally generated levels. I wanted the game to feel hand-crafted. Each secret area, each placed medkit, each enemy should be in the world for a reason. My main inspiration for level design were NES and SNES games like Metroid, Zelda and Super Mario. I wanted to augment every little corner of the game world with a unique landmark, be it a little puzzle, a secret tunnel, a fierce enemy or a new game mechanic.
I underestimated the task. Looking back, 70 to 80 percent of the development time went into the design of Lydport and outskirts, that is the game world. Programming, planning, designing game mechanics and creating assets turned out to be only a small part of the development compared to the level design.
Programming platform and tools
Being a Java developer and not gifted with extraordinary artistic talent, I choose a simple pixel look art style for Cosmodog and took the framework Slick2D as the basis for the game. Slick2D is an API around Java's implementation of the OpenGL interface and provides a simple framework for building a game. Different game states, like Main Menu, Intro, Credits etc., can be defined in slick2D and each of them lets you implement render() and update() methods to draw the game scene and execute game logic respectively.
For building the game map, I used the fantastic and free TiledMap editor. Graphical sssets were created with Gimp2 and GitHub served me as code repository.
If there is interest, I will continue this documentation and provide some insight on the development of the game. I can share some ideas on development concepts, such as postprocessing a TiledMap map programmatically (e.g. for generating collision based on meta data), integrating the A-Star algorithm for path finding, designing the fight system, controlling the game pace in an open world, writing story script and purchasing assets, such as music and sprites.