The Creation of Teutoburg Trouble


Hi all!

It's been  two years since I made this project, but as it was one of my first steps into game development, I though it would be interesting to give some insight into it's development and what I learned from it.

So full disclosure, this is a first year, individual game development project, in c++. What this means is: it isn't polished (nor finished, per se) and probably serves more as a learning experience how not to make a game than otherwise. That being said, there were some big challenges, and I took them head on, and did manage to cobble some clever solutions together.

Teutoburg Trouble was  originally an experiment into captivating combat mechanics. Being a fan of the 'Souls' series, from 'FromSoftware', I was interested in creating a nuanced battle mechanic, with a limited amount of input. To a certain extent, I managed to play around with that: several weapons were implemented, each with only two attacks, but all with different timings, arcs, ranges which force the player to do more than merely smash a button. 

But what this project really taught me was how to make a mechanic scalable. If I have this sword with two attacks, how can I easily add an axe with a somewhat different attack, without redoing all of the work? Eventually I managed to add something of seven weapons each with mixed attacks, some of which with ranged capabilities.

Alas, this was all before I knew of the adage: "choose composition over inheritance". So it is mostly implemented through the use of inheritance and a lot of Enums. This allowed me to make different pickups, characters and props in much the same way.

Something I was quite fond of, was the splitting of the controller and character. This was before I worked with engines such as Unreal, where it is an inherent part of the design philosophy. By making both a player controller and an AI controller, I could easily take control of a Roman character if I wanted to, or make some friendly barbarians help me in combat.

Since I was only a starting game developer, common AI practices were unknown to me. The implementation of a grid or navigation system were outside the scope of the project. But by using some simple math, I managed to create seemingly clever behavior, by treating characters in game as magnets! A few calculations tell the characters not to bump into trees, unless they're lacking an alternative, which worked well to some extent.

Some other stuff worth mentioning:  the map generation is fully random, with a few fixed encounters, an idea inspired by 'Don't Starve' in which some objects are guaranteed to be in each others neighborhood within the randomly generated world.  There is a building menu! Since the game will not be further developed there is not much to it, but it is possible to build some houses and farms, and spawn friends by collecting beets and bringing them to the dwellings.

And then finally, the art. All of it was made by myself, using mostly spritesheets, except for the main menu, which you can admire on this itch-page, and was made by my talented brother. Same goes for the music, love it or hate it. My father contributed a track or two when he saw my enthusiasm at making some simple repetitive 'Age of Empires'-like tunes. 

Now, two years further, I still think this was a remarkable achievement and hope my following endeavors will teach me as much as this project did.

Thank you for your interest!

Quentin

Get Teutoburg Trouble

Leave a comment

Log in with itch.io to leave a comment.