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.


Day 6 – Day in the life of a Hero

I think I’ve become allergic to blog posting as I’m still not in the mood to do a big introduction post to Eternal Struggle. Perhaps it’s because some major features are up in the air and suspect to change, but in all honesty I’m just so busy with making the game and doing my day job.

Yesterday I added probably the most important feature; the Action Outcomes system.

In Eternal Struggle, you are managing a team of 5 Hero characters. They each have a class, an equipment loadout, and attributes that determine how effective they will be when the time comes to fight The Dark Lord.

Your job is to manage their desires, relationships, and training regime to make sure they stand a fighting chance against the Dark Lord’s dungeon.


Gameplay Flow

  • Every day you choose a single action for each of your Heroes.
  • They travel to the location in town to perform that action
  • If they bump into each other, an event will occur based on their feelings towards one another (TBD)
  • Once they arrive at their destination, it will influence their power level, based on their action and their mood;
    • Training and Studying Actions will influence Attributes
    • Merrymaking Actions will influence Mood
    • Questing Actions will influence Relationships
    • Shopping Actions will influence Equipment
    • The Wizard’s Tower will provide valuable intelligence about the Dark Lord’s Dungeon.
  • The exact numbers of each of these Actions will depend on how the Hero feels, how strong they are already, and how close they are to other Heroes in the area… plus a healthy dose of RNG!


Eternal Struggle – Day 6


The Action Outcomes system (pic above) takes a player through this final point, telling them;

  • How each Hero feels
  • What they are about to do
  • What the outcome is
  • How the action effected their Mood

The above picture is ugly as hell (comparing this to The Yawhg feels like sacrilege), but it will eventually be much more entertaining.

At the end of each Action Outcome, the Hero’s stats are modified and the week begins anew!

The next day in Eternal Struggle will hopefully be figuring out what all this leads to… the Dark Lord’s Dungeon. Mainly design work, I’ll need to decide how to improve on the Outdoor formula to create a more easily decipherable challenge.

Quick Update – Days 4-5

Not a huge wall of text today, just a screenshot share;

Eternal Struggle - Days 4 & 5
Eternal Struggle – Days 4 & 5



I increased the building amount so that they’re just tied straight to Hero Actions. I can change them into “Taverns” and “Archery Ranges” later, for now a building is just a physical location for an action that will eventually feed into the management of your Heroes.


Heroes in Buildings

Currently, Heroes directly move into a building when you start an action. The plan is for Heroes to occupy a building and also set a target building for them to move into. This will create a path as they travel around town. Heroes who bump into each other may have an event


Mid-Autumn Development

Here in China, we just had a public holiday for Mid-Autumn festival. That’s one great thing about China, a crap ton of public holidays (we’ve got a week long one next month). Public Holidays (and Sundays) are my dev days, so this weekend I got about 1.5 days of work done.

Eternal Struggle - Day 2
Eternal Struggle – Day 2



Sunday was the most productive day, by far. I added in the foundations of the Town Map at the top, randomizing where each of my placeholder buildings is spawned. At the moment, it’s just ‘which blocks behave like which building’, but the ultimate goal is for the blocks themselves to be randomized in their position to create a unique town for every game.

The next feature added was basic UI for the Relationships between heroes. Taking a cue from Crusader Kings II, I used small portraits with a ‘What I think about them’ value on the top and a ‘What they think about me’ value on the bottom

The most obvious addition was the ripped character art from Desktop Dungeons, which I added to make the whole thing a little easier on the eye. Honestly, I don’t like to add art at this stage because I don’t want it distracting from the gameplay… but these heroes are supposed to have personality (it’s the core of the game), so a little art goes a long way to making the game feel right and make the UI readable.


Eternal Struggle - Day 3
Eternal Struggle – Day 3



Monday was typically slower as I decided I wanted to play some Captain’s Mode Dota 2, which took a few hours out of the day.

I added 2 systems though, the first was the Mood UI and foundations for Hero Moods. At the bottom right, you can see a The Sims style Mood gauge area. Depending on the Hero’s personality, they will function better or worse if they have specific moods. Typically being in a good mood will always help, although some more neurotic or darker characters will thrive when they’re depressed or angry. Monday’s work added the UI for this feature, and I’ll probably need to sit down and do some good ol’ design work before coding any more on this.

The last thing I added was the Item System. Heroes in Eternal Struggle will have a class and a race that determines which type of Weapon, Armor, and Item they can equip. During the game, players will want to make sure every hero has their loadout completed… with the right items for the dungeon at the end.


Next Time…

I’ve coded a lot of the basic UI and systems now, so I feel it’s a good time to step back and work on some design. I’ve taken a Game Jam approach with Eternal Struggle, jumping straight into development without really planning how these systems will interact and play out. Next time I think I’ll be working on mapping out what Actions can be taken and how Attributes will effect the Dungeon Battle.

I should also probably explain what the hell any of this stuff is!

So, what’s up?

It’s been a while, right?

So much has happened in the last almost-year that I feel it’s time to make a little update post for posterity, as well as to kickstart the whole blogging thingamajig again.


Previously on Virtu

It’s best to start with a little background information. I started Virtu as a formal statement that I wanted to make my own independent game. At the time, I had a nice severance package as part of the EA Playfish shutdown… which enabled me to work from home on my own project for a limited period of time.

Uffizi was a Renaissance town builder with 5 Noble characters that you had to befriend and pander to whilst trying to build the great works of Florentine art.


We shall meet again...
We shall meet again…


As my first ever ‘proper’ project, it was an exciting and informative time where I learnt a lot about Gamemaker (my development tool of choice) and independent development in general. The best form of learning is by failing, and I did a whole lot of that.

Uffizi just wasn’t fun. I fell into the trap of “It will be fun when I add this!”.

It’s a vicious cycle which kept repeating itself until I’d spent about 3-4 months on the game and it still wasn’t fun. I definitely think there’s something there in the concept that’s worth exploring but Uffizi is definitely on hiatus for the foreseeable future.



When it came to the 4 month mark in Uffizi‘s development, I decided that it was time to get a real job. My funds were running out and I eventually realized that Uffizi was the wrong project for what I was trying to do. I needed something smaller, leaner, and more fun at a prototype stage. But more than that, I needed a stable income.

I joined Happylatte, a medium-sized studio responsible for the successful mobile FPS game High Noon. The company hadn’t had a big followup success and were actively looking to work on new game IP. This sounded perfect to me, and I joined at the end of 2013.

High Noon, Happylatte's hit game
High Noon, Happylatte’s hit game


During my time at Happylatte I worked on major features for Days of Crime, a 3D reskin of the High Noon formula, while helping with pre-production design on an exciting F2P RPG game. More importantly for me, I was also pitching a few game concepts of my own and one of them, a Truck Driving Runner mixed with a Trading Sim, got greenlit all the way to pre-production.

Things were pretty much perfect. I had my own game at last. It was exciting, fun to work on, and I’d done the best design work of my life (although it was all on paper).

Then management informed us that they had to ‘restructure’ the company and all but 7 people were made redundant… including myself.

Sad times.



What now?

My time at Happylatte takes me to about 1 week ago… where I just joined Substantial Games.

We’re working on a very exciting project; The Ember Conflict, that I’m thrilled to be a part of (Twitter is here).


The Ember Conflict, an RTS game on Tablets. Coming soon!
The Ember Conflict, an RTS game on Tablets. Coming soon!


What about Virtu?

Since my last blog post, I’ve taken part in 2 more Game Jams; Ludum Dare 29 and 30;

Shanghai was my Ludum Dare 29 Jam entry with Chris McMath (who also happens to work at Substantial Games). The theme was Beneath the Surface and we had 72 hours.


Work 'Beneath the Surface' to pass Domestic Intelligence to Foreign Powers in 1930s Shanghai
Work ‘Beneath the Surface’ of 1930s Shanghai to pass Domestic Intelligence to Foreign Powers by connecting spies


Outdoor was my Ludum Dare 30 Compo entry, working solo over 48 hours. The theme was Connected Worlds.

Choose how to spend your 30 days inside the bunker, before heading outside to deal with the Apocalypse
Choose how to spend your 30 days inside the bunker, before heading outside to deal with the Apocalypse


Outdoor is definitely not as much fun as Shanghai. In fact, it’s kind of imbalanced and boring! However, one thing Ludum Dare is great at is demonstrating how feasible a project is and showing where the fun is. Outdoor as a concept is fun. Seeing what happens when you leave the bunker is fun. Managing your relationship with your brother, while trying to maximise your attributes, is fun.

The best thing about Outdoor is that I know I can build it… because I did build it.


Project: Eternal Struggle

I’ve decided that I need to get my own game out onto the market. Mainly for the experience, but also because I’m tired of external factors getting in the way of my work.

Outdoor is feasible, I know where the fun is, and I can build a prototype very quickly to start the iteration process… something essential to independent design and good game design in general.

But the game is not Outdoor.

  • The bunker was limiting.
  • Your relationship with your brother was shallow.
  • The apocalypse generated for each game was really really cool, but taking 30 turns before seeing any feedback was dull.

Eternal Struggle is a new game, using concepts from Outdoor.

  • Preparation for an unknown mission, with hints to your eventual fate
  • Managing conflicting relationships while trying to build power
  • A procedurally generated end-game with endless possibilities, providing a humorous and unique outcome to your actions that are different every game

Below is a screenshot of what I’ve got from my first day. It’s not much to look at yet, but I’m super excited about this project and I’m hoping it will be my first real product out on the market.

Eternal Struggle - Day 1
Eternal Struggle – Day 1


I also plan to blog a lot more about development because I’m absolutely awful at sharing things before they’re ready. Time to change!