It is done, ship it! In November we opened the first batch of worlds with Aphrodite, the first new god addition to Grepolis since 2012. She is one of 2 new gods that we’re introducing to our beloved game, Grepolis, and its passionate players. And, she is looking great. But what might look like a simple thing to do, has had the developers travelling a long path.
Let’s have a look into the distant past. When Grepolis was first launched it featured four gods: Zeus, Hera, Athena and Poseidon. With Grepolis 2.0 we added Hades as the fifth god to the pantheon (https://en.forum.grepolis.com/index.php?threads/guesses-on-the-new-god.13051/). Soon afterwards with the introduction of the Hero Worlds – not to be confused with the worlds with heroes – Artemis made her appearance. This must have been somewhat around the end of 2011. But since hero worlds were not accessible by all players, she remained a special guest in our collection. That was until we dissolved the Hero Worlds – with the release of worlds with heroes – and brought their features to all players, Artemis included.
The last big change in those base entities of our game was the Divine Envoy, who arrived in 2012, giving players an additional mythical unit that is common to all gods. Adding him to the game was already quite a challenge since all our windows and views were not designed to feature an additional third mythical unit.
All this happened 8 years ago and Grepolis has undergone a lot of changes since then. Team members have joined and left, features have been added and removed, new coding styles and paradigms were introduced and bigger parts of our game have been completely rewritten in that time.
When the idea of new gods was raised, we invested a lot of time into considering how we can create meaningful additions to our existing offerings. They should not be overpowered; they should not replace or contradict anything that we already have in the game. Ideally, they will fill spots that remained empty until now or introduce interesting alternatives for players to choose from. And, at their best, they will surface possibilities to introduce new mechanics that add strategical choice and depth to the game.
With Aphrodite we not only added a new god and 2 mythical units, but also added the concept of passive powers and abilities. Early on in the design phase of those, we had to check the source code to identify the spots that could be affected by these and since I mentioned above how long ago the last change on the fight system or the units was, you can imagine this was no mean feat.
Grepolis as of today features a multitude of aspects that come into play with units. Starting with the fight itself of course, but there is also all sorts of movements (town attack, colonization, support, temples, bandit camps, island quests, conquests, revolts, …) and there is a lot of places where units are displayed (main UI, barracks and harbor, attack window, attack/runtime simulator, attack planer, mass recruit, …). And finally, units and gods have different kind of images to represent them in the game on browser and mobile.
But, let’s look at the things that we added, and discuss some of the challenges we faced.
Aphrodite’s passive power Pygmalion
This power will be active in the current city once you have chosen Aphrodite as the god. With this power we had to consider two challenges. The smaller one was to make sure the spell is properly shown on your city once you made your decision to worship Aphrodite. Since we already had similar solutions for the temple buffs and Land Expansion, this was an easier challenge to overcome.
More complicated was finding a go(o)d solution to reflect the change in population. With the Land Expansion we already have a similar effect but this one is static. Once cast on your city, it is active and doesn’t get lost, making it quite an easy technical implementation. Pygmalion on the other hand is volatile by nature, as it gets lost once you switch gods. We had to take this into account for population that is already occupied by built units. To not block players from switching their god but also not to punish this decision too hard, we decided to allow negative population in this case. We accept that this puts the game into an invalid state, but we also ensure that the game flow stays.
With Narcissism and Hymn to Aphrodite we get rather straight forward powers that were easy to implement into the game. But, we also added the concept of scaling values. Aphrodite’s powers benefit from any other running power or spell that is already on the target city which gives it some nice strategical options. In order to keep the feature easy to understand and technically not too complicated, we decided against having this a constant changing number when spells are added or removed, but instead the benefit it provides is persisted once the spell is cast and stays at the same value for it’s lifetime.
The Charitable Festival was a more complicated case. Implementing this spell has two challenges that we needed to figure out. Once the spell is cast, it doesn’t expire, but instead stays active until its effect is consumed. This expiration by consumption was more complicated to implement. Until now the costs for a Victory Procession has been constant, so there was no need to store consumed battle points for the player but instead, we only needed to remember how many times such a festival was run. With introducing variable costs, we not only needed to migrate our existing structure to accommodate this, but we also had to make sure that this is done for all players in the same moment we are putting these changes live. Otherwise, players might suddenly see too many unspent battle points and start using them. In fact, this led to a recent incident we had around negative or too much battle points, which led to another incident on how to fix this. But to go into this in detail would require a whole separate article.
Aphrodite comes with two amazing units. First is the Satyr, which has no extras added to him, but is just a super fast land unit. The second unit added are the Sirens. Not only do we get another fast naval unit, but Sirens also boost your unit movement speed. The more Sirens you add to your attack, the faster your attack becomes. This is the first passive ability we are adding for normal units, though we have similar concepts for several heroes already in the game. Thankfully, having this groundwork done, adding this passive ability was a lot easier for us.
The ultimate challenge – Not spoiling the fun
When we started talking about the new gods, there was also the wish to not show the new god to the players before she was finished. Since the development of such a feature usually takes longer and spans over multiple updates this was not an easy task to achieve. We want to be able to always test the feature in our dev systems including all her visuals, but we don’t want to have her out worldwide. The way how our browser game and the mobile app works we have a lot of this data exposed to the public. In fact, most User Scripts make use of it. On the other hand, our code is so old, it was no longer possible to deactivate a god, and is always sending all available data. We needed to take a lot of time and more effort than planned to hide her as best as possible. The most visible solution were most likely her pictures in the game which we replaced with question marks. Some user scripts even reported this as an error when they saw the weird artwork and fixed their scripts to longer show this placeholder image. So, mission accomplished on this front, we think! The community was pleasantly surprised by her arrival when announced in our community contest, the Divine Trials of Hermes.
Eventually, as you all know, Aphrodite hit the servers and so far has been received with passion by our beloved players. If you have further questions, please leave them in the comments and I am more than happy to discuss them with you.
Enjoy playing Grepolis, and I hope you enjoy the next god when he arrives…