Adliti

C++ LUA

Background

Adliti is a tile based RPG game that I am working on with two friends, it is the most interesting project that I am working on at present, originally started in C# with the XNA library development was later ported to C++ and the gaming library allegro due to it's support for mobile devices which is a growing market.

Development

Development is going well, we currently have level loading of the .tmx (tiled) file format, including the loading of multiple sprites, movements and collision detection.

The story is currently in development, but in classic rpg style will no doubt involve kings, battles and generally saving the world!

Here is a current screenshot from development:

A simple level loaded in Adliti
Our brave hero explores the lovely village of Farenia

A sense of perspective

Despite being tile based we want to add a sense of realism to Adliti, so we have layers that are drawn under the sprite (background) and layers that are drawn over the sprites (foreground). This is great and lets us give some sense of perspective, but there are two other special situations we've coded for.

Walking behind and infront of the same object (middleground)

A fence is a great example since it's collision area does not occupy a whole tile so from the camera's perspective you could be standing in front of or behind the fence (depending on where the sprite is. This means that the fence tile has to behave like a background and foreground tile depending on where the sprite is. Acheiving this gives a better sense of depth to the levels.

The sprite behind a fence.
The fence behaves like a foreground tile and is drawn over the sprite.

The sprite in front of the fence.
The fence behaves like a background tile and is drawn under the sprite.

Shadows

Shadows can add a great sense of depth to a world, but in a lot of classic rpgs they had little effect on the sprites. Not so in Adliti! At the request of out level designer we've added in a shadow layer. The shadow layer has properties unique compared to the other layers, the logic being that if your sprite is standing on a shadowed tile then all shadows covering the sprite should be drawn over him, if the sprite is not standing in shadow they should be drawn behind him. This differs from the middle ground grid since it affects tiles other than the ones the sprite is standing on.

The sprite in the shadow of a house.
Since the sprite is standing in shadow he is covered by the surrounding shadow tiles.

vs.

The sprite in in front of the house and out of shadow.
The sprite is not in the shadow of the house and so does not appear in shadow.

Script implementation has begun!

We've just started implementing the code required to allow us to run LUA script files, in the final game all the actual events will be controlled in by LUA scripts which will hook into our main code to update the engine.

Lua is fantastic and known for it's power and flexibility, on a side note I did once write a scripting language for another project I did and was toying with the idea of updating that for this project but on reflection it seems to be an excellent choice for this type of project (although you do need to google around a bit for a decent c++ wrapper for it!

More to follow, no doubt!