Tikal – A board game in 3D

Dieser Post zieht einen versunkenen Schatz aus der Tiefe zurück ans Licht. Ein Studienprojekt, das nicht vergessen werden soll.

This post pulls back a lost treasure. A study project which shall not be forgotten.

I want to  show off an older project of mine. It’s an adaption of the board game “TIKAL” by Ravensburger. It’s a turn based strategy game where you have to send out your archaeologists to explore the unknown world.  There are treasures and temples to discover. On each turn the player gets to draw a new tile from the stack and append it to the existing terrain. Afterwards he has 10 action points which he can spend to move to other tiles, dig for treasures or increase the value of a temple. The goal is to gather as much points as possible during the 5 evaluation rounds. These appear if a vulcano is drawn and added to the terrain.  Rules and gameplay are simply adapted from the original, but the visuals and controls are all 3D related making it a different experience.

I developed this together with a friend of mine as a small project for university. Because we recently attended a lecture on mobile development for android, we wanted to make the game an android application as well. We decided to adapt an exisiting game to gain experience in coding and designing a game application rather than designing a game. So we picked a board game we knew and liked playing. But to make it stand apart from the board game we decided to make it 3D. With this in mind I searched for a proper game engine to use and found LIBGDX. Hurray, all problems solved! A big thank you to the LIBGDX crew at this point, great work. It’s that good, we didn’t even had to consider much android specific stuff because LIBGDX hides this very well behind their API. I ended up spending half the time on reading through the LIBGDX API just to learn from them 😉

So take a look at the outcome.

This is how the game starts.

This is how the game starts.

Here are the different tiles to makeup the terrain. Each tile is a hexagon with 0-3 stones at the edges. They define how much it costs to move a figure across that edge. The stones are added in code.

We tried to keep the required interface to a minimum and focus on the fact that it’s in 3D. Therefore we chose to model all actions as little spheres which are placed above a tile if you click it. There are never more than 3 actions per tile so it won’t stack to high.  But this decision let to another problem. If the interface is inside the world you might not see it depending on the camera position. We fixed this and significantly improved the ease of use by moving the camera to always focus the clicked field. By that you can click your way through the tiles and it’s always a smooth motion allowing you to see what actions appear.

All action buttons are placed as 3D objects above a tile.

All action buttons are placed as 3D objects above a tile.

But for those elements that required a 2D representation we tried to keep it simple. On the left side is the interface which shows the players, action points and earned points. Every time you draw a new tile an info panel slides in to the top right corner. And each gamestep is announced via a centralized label. Handling text overlays isn’t as easy as I thought it would be. You have to consider display duration, placement, priorities and different screen resolutions if you support multiple. If you don’t consider this you’ll probably end up with overlapping or lost messages and a great mess on the hud. Because of this I wrote a little helper to manage placements and priorities. The timing is managed with LIBGDX actions that you can apply to actors in the 2d scene graph. All 2D animations are done that way.

Example of overlay placements and fading.

Example of overlay placements and fading.

We did a lot of stuff besides the actual gameplay. Basically it’s been more learning than developing. We digged into 3D modelling, 2D interfaces even on multiple screen resolutions. We played with lighting and modeled a sun which orbits around the world. It’s also raining in Tikal from time to time. Therefore we checked out the 2d particle system of LIBGDX. We also made first steps with shaders and OpenGL in general. All the colored rectangles above temples and camps are billboards. Usually they are used to model clouds in a cheap manner, because they are only rectangles which always face the camera. This behaviour is programmed directly in a shader.

To sum it up it’s been a good learning phase in game development. LIBGDX taught us much about game architectures, rendering and so much more. But the game did get no further than a simple prototype. There is a lot of space for improvements although the gameplay is completly implemented. But animations, effects, multiplayer, networking and stuff like this which are unique to computer games are missing. Im not overly proud on this work but it’s okay and teached me the basics for further projects. I would share the game with you but I’m not sure about licensing because this is originally a Ravensburger game. I’m not sure if I can publish it. But anyways it’s more of a tech demo than a fun game 😉

CommentYour comment

Leave a Reply

Your email address will not be published. Required fields are marked *