Since about two years we — me and my fiancée Ola — are working on amateur video game development. Our goal is to create narrative game with gameplay based mostly on text (something like text-based cRPGs), but with visual representation of whole world that will help to make it more immersive. We want to focus mostly on dialogues and world exploration.

My main inspiration to create it was Gothic 2 video game — as a teenager I loved to play that game and after some time I started doing some modifications and I have started dreaming about making my own game. Ola was drawing when she was younger, she wanted to try something different, but sill related to art, so she decided to practice some form digital art. Doing a game together was an easy choice as it allowed us to collaborate on something and practice the stuff that we’re interested in. Here I am going to share a story of our game’s evolution.

Initial attempts

At the beginning we were considering different ways to display our game. Should we use some game engine available for free or code it on our own? Should it be 2D or 3D? We decided that doing it on our own will be much more entertaining and I will be able to learn more as a programmer. As for graphics our choice was 2D as we aren’t planning any gameplay elements that would greatly benefit from this third dimension and it would just create unnecessary complexity.

Top-down

Our first attempt was to draw everything by had in image manipulation software (we have chosen GIMP) and use top-down view. For displaying our assets in-game I have implemented our own simple framework that was using LibGDX library under the hood. Unfortunately result was not as good as our expectations.

Our first attempt with assets drawn in GIMP

Isometric objects

Instead of adding more content into something that we weren’t satisfied with we decided to use different approach. Ola has switched from GIMP to 3D software — Blender and we have changed projection to from top-down to isometric which gave our world a little bit more depth. Additionally I have created world editor that helped us to place objects into our world much faster and it was much closer to the result that we wanted to achieve, but we didn’t liked how objects like trees and fences are so repeatable.

World editor with isometric orthographic camera

Current approach

As we liked a lot in our second approach we decided to just tweak it a little bit instead of completely rebuilding. I have stopped development of world editor and we started preparing whole world in 3D software. Blender was great tool for that as thanks to the Python scripts that it can run and how easy is to prepare them we were able to automate process of generating assets with all the data needed by the game to one click.

Preview of our map in Blender

In order to move that scene from Blender to our game we needed to create different layers for foreground and background objects. Thanks to that some static elements of the world can cover dynamic characters as they are displayed on the top layer. Beside that we needed to somehow pass the data about collisions. In order to achieve that we have created collision layer and added another output image that is interpreted in our engine and places marked with black shapes that you can see on the screenshot below are not accessible for player and other characters. And all those images were generated with one click of a button with simple script that was just changing layer’s visibility and render engine properties.

From left to right — background layer, collision map and foreground layer

In-game effect

Obviously that approach has some drawbacks with the main one being the fact that every piece of the world increases amount of the data that user would need to download to their phone. However, as we are creating small game we won’t be able to create really big world anyway and even if we would do so, then specific levels could be downloaded separately in the background to make it more convenient for the user.

After all we are finally happy with the way our game looks like and we are able to start adding more content. Of course — it’s far from perfect and doesn’t look like AAA productions but it has the vibe that we wanted to achieve and we can slowly increase quality of some elements as we proceed.