Eternal Struggle

Project: Eternal Struggle is currently very aptly named. Not only do I have an eternal struggle with development (either getting the time or motivation to work effectively), but I’ve also been struggling with writing a blog post about it! As the Chinese National Holiday begins, I felt that it’s finally time to write a very brief overview of what Eternal Struggle is and what you can expect over the coming months


Eternal Struggle

A procedurally generated fantasy hero management adventure


What is Eternal Struggle?
In Eternal Struggle, you have a party of 5 Heroes that you must train in order to fight The Dark Lord. Each turn, you decide which action to make each Hero perform. The outcomes of these actions will increase their strength. When you run out of turns, your party heads to the Dark Lord’s Dungeon where you can witness the outcome.

If they lose, you can try again… but this time you have more knowledge of what worked and what didn’t. If they win, congratulations! You have stopped the Dark Lord returning for 500 years. At this point, time advances until he returns once more and you have a new challenge to overcome. How long can you keep defeating The Dark Lord in this Eternal Struggle?


The Hero Management Part
Eternal Struggle is a culmination of many projects I’ve started over the years.

Back when I was in EA Playfish, I pitched a Fantasy Hero Management Simulation akin to Majesty or Dungeon Village. I also pitched something similar to Happylatte. I’ve always been really fascinated with managing a group of unique heroes with their own personalities and relationships with each other… more so than the actual fighting!


Majesty 2 (Left) & Dungeon Village (Right)
Majesty 2 (Left) & Dungeon Village (Right)


As mentioned in earlier posts about Eternal Struggle, it’s also based on Outdoor, my Ludum Dare 30 entry. This game in turn is similar to The Yawhg, a choose-your-own-adventure style simulation. You know something bad is coming, you must prepare for it. The journey is the game, the outcome is the win or, more likely, loss condition.

Eternal Struggle therefore is a preparation style adventure in which you manage a group of heroes over a number of turns in order to defeat the great evil that approaches. You want to power them up to defeat the evil that awaits, but you cannot forget that heroes are human (or human-like!) and have needs, personalities, and relationships that you also must manage.

Basically it’s the Council of Elrond… before the heroes set off for Mordor.


The Council of Elrond
The Council of Elrond



Imagine Boromir, Frodo, and Sam chilling in Rivendell….

  • Imagine that Boromir is a mad drunk who has a taste for Hobbit meat. You want to train his warrior skills, but far from Frodo and Sam.
  • At the same time Frodo must unlock his secret ICE MAGIC by questing in the Lich’s Cave
  • Sam, who is now a cleric, can only find his true strength if he’s close to his one true love; Frodo.
  • Unfortunately Frodo wants to be questing, while Sam needs to be at the library.
  • Boromir would love to train at the Lich’s Cave with Frodo, but that could end up badly for his tasty stunted companion.

The goal of Eternal Struggle is to give players a huge challenge babysitting their Heroes. There are obvious stats and attributes that each Hero wants to improve… but doing so efficiently and without drama is going to be a challenge.


The Procedural Part
Procedural Generation is something that has fascinated me since reading about Dwarf Fortress. Now, I’m definitely not a fan of environment generation or roguelikes (please god, no more roguelikes!) but the procedural story, character, and history generation is what really inspired me. The way that a system can generate a deep and compelling history… a web of events, characters, and relationships was incredible to me.


Dwarf Fortress - The real game doesn't come with the handy MS Paint annotations...
Dwarf Fortress – The real game doesn’t come with the handy MS Paint annotations…


Before starting Eternal Struggle, I was working on some procedural character generation of my own. I’d started a pipe-dream project which required me to generate 40 player characters… create personalities and unique playstyles for each of them, then create a relationship network that determined which characters were friends or enemies (based on the personalities and traits). That project is extremely exciting to me, something I’d only ever dreamed of making, but is completely commercially not viable and the thought of multiplayer server code makes me cringe. What it has done is teach me how to generate content.

There are many constants in Eternal Struggle, things that are not generated ever. These can be learned and discovered, like knowing what certain Pokemon can do in combat or where they like to hang out.

  • Heroes will be fixed.
    • Boromir the mad drunk will always be a mad drunk with a taste for hobbit flesh.
  • Enemies will be fixed.
    • Skeleton Warriors will always have 300 HP and deal physical damage with a godawful chance to hit.
  • Environments will be fixed.
    • The Magma Chamber will always have monsters with a fire taste to them.


I won't have as many Heroes as Dota 2, but I want them to feel just as unique
I won’t have as many Heroes as Dota 2, but I want them to feel just as unique


However, with these constants in mind… everything else will be randomized/configured by the system. Every time you start a new game of Eternal Struggle, you must discover what has changed and how to adapt your typical strategies.

  • The Dark Lord’s Dungeon will be generated
    • Perhaps it’s an Ice Cave, followed by a Magma Bridge, and an Undead Fortress
    • Or maybe it’s a Futuristic Insectoid Hive, followed by an Undead Bridge and a Magma Cave
  • The enemy configuration inside the environment will be generated
    • The first Magma Cave you will experience might be full of Burning Fire Elementals. Hot stuff!
    • The second Magma Cave you come across might drop the Fire Elementals in favour of some Black Dragons.
  • The Heroes configuration and their relationships will be generated
    • In your first game, Humans and Elves hate each other… they’re mortal enemies and you’ve got to keep Legolas and Boromir apart. If not, they might duel in the city streets!
    • In your next game, Humans and Elves are great allies. Boromir still dislikes Archers, but him and Legolas can quest together if the player wishes
  • The Town config will be generated
    • Every action a Hero can perform on their turn corresponds to a physical area in the Town
    • Each time a game starts, the town’s configuration of buildings will be different
    • Perhaps Legolas and Boromir (who now love each other) want to train together for a 25% bonus… but the Barracks and the Archery Range are on opposite sides of town. Damn!
    • On top of different building position configs, certain building types will be more or less effective. A tavern is a great place to gain Happiness in a typical game, but the Prowling Lion Tavern in this game has notoriously bad ale and will only appeal to the drunkest in society. You’ll have to find your Happiness elsewhere!


The Development Part
Eternal Struggle is the first project I’ve started that I know I can build. I built a light version of it in 48 hours for Ludum Dare! Knowing this is a great relief, and development is going pretty well (despite my complaining). Every week I hope to have progress to show you.

I’m going with this whole ‘open development’ thing, trying to get something horrendously ugly but playable into the hands of players as soon as possible. There are no secrets here, no worries about ideas being stolen. I’m not big enough for that! I’ve been guilty of developing in a bubble for way too long. Eternal Struggle is a change to my typical process and I’ll make sure to publicise this blog and the game a lot more once I’ve got my first playable version.

It’s too early to say when that will be, but I’m hoping within a couple of months (which translates to about 8-10 working days) at the latest.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s