Bardadum: The Kingdom Roads is a puzzle video game setting in a humorous medieval world.

Post news Report RSS Developer's diary, Part 2 / 3

For first article's readers: it's a bit more technical in this one. I'm trying to explain how it was hard to code Bardadum.

Posted by on

Hi,

In the previous article I described which tools and engines I have used. Now I will talk more about code and technical problems.

Technical problems and difficult tasks

One of the main problem was to design all game's architecture. With several types of tile I had to think about it really seriously. Hopefully I decided to create a GameElement class that is the base class of all tiles, characters and targets in the game. I also wrote a SimpleTile class to show unanimated tiles and a ComplexTile tile that factorize all animated tiles code.

Bardadum's UML Class Diagram

Characters movement animations were a bit hard to code because they had to be smooth and users could cancel their actions. All player actions are made quickly and my code had to deal with concurrent actions. To make matters worse, we first decided to let the user move the character's ghost around the level and start character's move moving on tap release. When we started to have big levels - at the end of the 1st world - we felt that it was breaking the player's experience by forcing him to wait till the end of the animation. So I started from scratch with the focus of the user experience.


A common problem we saw during the beta test - thanks to all our friends and familly for their help - was to trace the correct path. This was especially visible on small smartphones where user's finger has to target small tiles. Testers used to move very quickly and often move their fingers on wrong tiles.
We deciced to add a predictive path algorithm to help the player. This algorithm was hard to create but this decision fixed users frustration and enhanced widely their experience.

Thanks for reading. Next article is on the rails ...

Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: