Hi all !
I’ve been working on a little project for the past few months, and I think it’s time I put it out there to get some feedback.
Before I start with the game itself, please keep a few things in mind :
- I am really worthless as far as Art / UI is concerned, so I’m not really looking for feedback there unless you are / know someone who would be interested in taking over this side of the project.
- A direct consequence of 1): All the artwork in there is stolen :p. I don’t think it is a problem for the development and feedback stages. I’ll be sure to change it before releasing it. If it is a problem to even have it here, please let me know.
- I am pretty new with both Unity and Game Design. I’ve been learning a lot as I went along, but if something seems obvious to you. Like “he should use this technique” or somesuch, please don’t be shy and let me know.
Ok. Let’s go.
The game started to take shape in my mind a while ago. I don’t play much, but most of the games I like were either RTS or RPG games. I wanted to create something that would combine the strategy of RTS and the levelling up of RPG. I wanted to create something simple that I could do alone - mostly to teach myself how to make games . Something 2D that would play on mobile. After a bit of research, I chose to do it using unity. That’s how I started on the path of what would become Apes vs Monkeys.
The game (in short)
- You are in charge of a tribe of monkeys (or apes) fighting the great war between Apes and Monkeys.
- Each animal in your tribe have a simple set of characteristics (Strength, Constitution, Dexterity, Intelligence, Magic) that evolve through XP that is gain by fighting.
- Each X GameYears (1 GameYear = 2h), each female in your tribe gets a baby. The baby’s characteristics are a random mix of both parents.
- Monkeys (and apes) live 80 GameYears (about a week) and die, letting you play with the following generations.
- Monkeys (and apes) can be of several races (Howler, Gorilla, Orangutan, Capuchin …) linked to the characteristics.
- Each race has a set of learnable skills that can be used during combat.
A few GIFs:
Beginning of an Ape game
Going to war
Different map
After a few weeks of playing
Reproduction System
One of the thing that makes the game different is that you don’t level up your character only, but the whole tribe. To do so, you need to level up your monkey of choice, then leave him to have babies. Then level up the most promising babies and so on.
If you keep playing with the same Uber monkey without waiting for babies, you risk its death, and the loss of hours of levelling up.
The reproduction system is quite simple.
-
Each monkey is assigned Male or Female at birth (this is not an opinion piece but a game mechanic
)
-
Monkeys younger than 15 do not participate in the reproduction process (but still in the fighting, go figure).
-
Monkeys older than a certain age do not participate in the reproduction process.
-
Every X years, each female gets a baby with a male of her choosing. The choosing is pseudo-random and works as follows:
-
If a female is of a specific race (tied to a characteristic), it will consider only males of the same race. If no male of the same race exist, it will consider all races. Female of the center race consider all males.
-
For each race, one male can be chosen as the Alpha. The alpha has a higher probability of being chosen than a normal monkey. This is a major way in which you can influence the direction your tribe is going.
-
Each of the baby’s characteristic is defined as a mix between the Mom’s and the Dad’s.
-
Babies start with the experience points that correspond to their characteristic values.
One of the problem I have with this is that unless there is a lot of deaths, the amount of monkeys grows exponentially with each generation. More on that later.
Characteristics System
After a lot of simplification, I settled on 6 characteristics : Strength, Constitution, Dexterity, Intelligence, Magic, Health.
Health is a special characteristic, because it is defined by your side in the war.
Apes have a greater Health value than Monkeys.
Except for Health, there is no difference in characteristic between Apes and Monkeys.
As a result, Apes fight against 3 Monkeys of the same power to get a fair fight.
When a unit levels up, a random upgrade happens. Random upgrades are designed to create peaks by giving a higher probability to characteristics that are already high.
The race of the monkey is chosen by thresholding.
Skills System
In the latest version, I attribute 3 skills per race except the “Center race”.
Of these skills. Some give you a new weapon or a passive skill, some an activeAction controlled by the unit AI, and 4 skills per army are “Special”.
Special skills are spells affecting all allied units, and are manually set off by the player (hopefully at the right time)
Battle System
The battle is so far the part I am less satisfied with.
The player select a group of apes or monkeys among his tribe he wants to fight with.
Monkeys should be selected by groups of 3 since 1 Ape = 3 Monkeys.
When the group is selected, the battle can start.
A TileMap is chosen as random among a predefined set.
Tiles can be : “Walkable, Unwalkable or SpawnPosition”.
A CountDown timer starts. Battle is over when CountDown reach zero or a player loses all its monkeys.
Units can be put on the map by clicking on a SpawnPosition tile.
Once units are on the map, UI takes over to Choose a Target, Move, Attack, Retreat, Heal, etc …
There is now two option :
Option n1 : Attack vs Attack
Each time an Ape is set down, the enemy randomly set down 3 monkeys of similar value.
Each time a Monkey is set down, the enemy check if the number of Apes in game is too low and set down an Ape of similar value.
Option n2: Attack vs Defense
The Defender has a Deploy phase in which to put its units down.
Then the Attack phase starts in which the Attacker puts down its units.
Game Design (my rambling thought process)
Game design process
I started with a simple idea : Monkeys reproduce, fight, evolve, repeat with the next generation.
My first few weeks learning Unity, I created the basic scripts to do all that.
My first monkeys had about 12 characteristics.
The reproduction system was pretty much the same as the current one.
There were no different types.
They were moving on a single TileMap of grass with a bit of impassable river.
The fights were very boring and repetitive, but I quickly grew addicted to making my monkeys evolve :p.
I started adding components to make the fight more interesting.
I had this idea of re-creating the evolution process prehistoric man must have gone through. Starting with monkeys discovering sticks as a way to fight and ending with mounted chimpanzee knights in full armor (spanning hours of gameplay).
To do so, I implemented a SkillManager, that would hold all the skills a monkey could learn in his life, along with a ConditionManager that would work as both a condition on characteristic and a technology tree.
Followed an InventoryManager (tightly linked to the SkillManager). I wanted to do something like : you have sticks and your monkey knows how to use sticks, so they can use sticks in a fight. Then I had in mind that the more you used a stick, the better you would understand the concept of weapon, and could start making your sticks pointy (or with a stone tip, or whatever)
I wanted the Intelligence characteristic to define the way the AI took advantage of the terrain / allies /etc. and started reading about AI.
I wanted fights to be multiplayer. So I dove into UNet and managed to do a LAN-type fight happen between two version of my games on the same computer (what a waste of time ).
Then I wanted to have a visual representation of my differences in monkeys. I started looking into how to make groups of my different monkeys into sub-tribes. I went down the rabbit hole for a while.
One day, I was reading articles about making your first game. And every single one of them mentioned the minimal viable product (Duh!)
I decided to to branch off my current version, strip the game to a minimum, and see where that led me.
I went through my characteristics, and removed all but six Strength, Constitution, Dexterity, Intelligence, Health, Magic (I hesitated a lot, but kept magic because whoooo! magic ! ).
From those characteristics, I defined my types of monkeys in a very simple way, using hard coded values of the ratio Characteristic / SumOfCharacteristics.
A bit later, I saw that it was very hard to get monkeys of low health, because they tended to die early and get rooted out of the reproduction cycle (yay natural selection!), so I decided to use the difference in health as a game mechanism, and divided them between Apes and Monkeys from the start. We were now on a 5 characteristic system.
With only 5 characteristics, it was easy to see that each skill in my system could be attributed to a race instead of the complex system of conditions which meant any monkey could get any skill if it evolved long enough.
And in the same spirit of simplification, I limited myself to 3 skills per race.
Now we have :
2 Armies ( Apes or Monkeys)
5 Characteristics (so 12 races - 1 for each characteristic + 1 for the “middle one” that doesn’t match any threshold)
3 Skills per “characteristic” race so 30 kills.
We can start with the balancing and start showing it to friends and random strangers on the internet.
If you want more info, feel free to ask. I like talking about it :)