Here’s a quick overview of this month’s progress: there’s the start of the UI to let you interact with the game world, support for translation into multiple languages, and procedurally coloured tree generation!
If you look back at the development progress so far, you’ll see that most of the early updates were on designing and implementing a dynamic lighting system for the game engine. This month, it all comes together as dwarf characters can now be shown in-game with dynamic lighting applied. Read on to see how we did it!
After working on getting characters moving around the area map, where the map consisted of a literally random scattering of walls, I thought it was time to make a start on actual maps for use as game areas, and so this has been the focus of July’s development effort.
Following on from some work I’ve done previously with procedural generation, I decided I wanted to use midpoint displacement, aka the diamond square algorithm, to generate some random heightmaps to use as the basis for a 2d representation of the playable area in and around a mountain.
This month I’ve moved on from the lighting system that’s been the focus of development in previous months, onto getting characters into the game and moving around. The goal of the first playable prototype is to have dwarves in the game as a playable race, before working on bringing other races in.
First of all, it’s with great pleasure that I can unveil the first piece of concept art for King under the Mountain, produced by Anthony Avon. As something of a specialist in landscape concept art, I contacted Anthony with a description of the game, the setting, and a brief of producing a landscape depicting a dwarven settlement in the game world.
I’m back from (a fantastic) honeymoon and working on King under the Mountain once again. Apologies that there were no real updates – I was on the other side of the world for a month!
In development news, in addition to the point light system detailed earlier, I’ve been working on “outdoor” lighting, to illuminate the outdoor areas of the game compared to indoors and underground. Even more excitingly, I’ve also added the basics of a day/night cycle, where this lighting changes colour throughout the game day. As with nearly everything in the engine, the values used are open to modding by being stored in a simple JSON file, which will allow people to change the brightness, colours and times of the phases of the sunlight shown.
Light from outside bleeds inwards over a distance (as shown with the area on the right in the video). The goal is to tie this into game mechanics with how well lit areas are for the characters in the game to be able to “see” to perform actions.
I’d like to add a direction to the sunlight that changes throughout the day (simulating the sun rising, moving and setting) and shadows, but I think this will do for now while I concentrate on getting other basic systems in place to have something playable.
In other news, I’ve started outsourcing some creative work to some very skilled artists and composers and I can’t wait to share more details with you very soon!
I’m happy to say I’ve got the first major building block of lighting and shadows into the game. Here’s an example of the final result:
There were quite a few stages involved in getting these lights working, with a lot of thanks to Amit Patel’s excellent article on 2D visibility. Amit’s brilliant interactive tutorials helped me a great deal and I’m not sure I would have achieved these results without them. I also need to thank Wholehog Game’s article on lighting a 2D game for the clear explanation of using normal maps in 2D and lights as geometry.
This blog has started a short way into development of King under the Mountain so I’ll use this post to bring you up to speed on where we’re at.
For those interested in the technologies being used, King under the Mountain is written in Java using the LibGDX framework. LibGDX allows you to cross-compile your game for deployment on many different target platforms, so a port to mobile/tablet is a possibility in the future but for now the project is aiming at PC only. LibGDX is also a wrapper aroung LWJGL, which is a lower-level library and the one used to most notably create Minecraft.
The very first “working” version of the game was to get the concepts of the 2D world and “walls” working correctly. As I’m drawing inspiration from Prison Architect and a lot of older tile-based games, of course the game world in King under the Mountain is tile-based. The very first problem to tackle was the fact that as the game involves digging into the side of a mountain, I do not want walls next to each other to look like this: