It’s been almost three months since the last blog post, so that throws my plan of one post a month straight out the window. Hopefully nobody started to think this project was dead, because that certainly isn’t the case. There have been some time-consuming events in my personal life, so I ended up spending all of the time I managed to find for the project on its development, rather than blogging. I’ve worked a lot on several smaller things, so while there has been significant progress, it’s not something I can write up in one thematic post like I have in the past. In this post I’ll give an overview of some of the features that have been added.
Some of you have seen the occasional screenshot in our #development channel on our Discord chat, but for some of you this will be the first time I’m actually showing screenshots of the full user interface. It’s far from finished, since there are dozens of different pages with all sorts of information to display and manage (not to mention the administration panel), but I think it’s time to show it.
Since elections are the cornerstone of the power dynamics in the game, the first screenshot shows an election results page.
One of the aspects of the game that adds a lot of depth to your party is the ability to recruit and manage your politicians. This has been covered already in a previous article but I’ve made a significant change in the design. Rather than opting for a fixed set of numeric attributes, like in a role-playing game, I implemented a system of named personality traits I call facets. Each facet has an effect on how that politician performs in elections, drive turnout, govern or perform other roles for your party. The facets all have a distinct name and background description, so they also add some flavour to your politician characters.
The facet system is designed to be flexible so that new facets and variations can easily be added in the future. For instance, the bonus effect of your politician being a Charismatic Speaker or a Populist Demagogue might be the same, but from a flavour and role-playing perspective it won’t.
In a previous post I showed the portraits the game generates. A key missing feature was displaying the age of the person. Creating aged versions of all assets is impractical, so I developed a procedural system for displaying the effects of aging. The one imperfection in my view is the sudden transition in the middle age hair style, but that’s unavoidable with the aforementioned constraints.
One system I’m quite excited about is that of the party actions. You’ll be able to choose from a set of at least a dozen actions that your party can undertake in order to influence the political landscape. The actions can accomplish various effects, such as raising additional political capital, have your politicians gain a certain facet, encourage allied activists to organize a protest, or even dig up dirt on an opponent. The actions will have a certain cost (that’s what the political capital is for), there will be a cool-down timer limiting their use, and they can have negative side-effects if the action backfires.
The election algorithm has grown significantly in complexity. Not just the ideology of the electorate and the parties or candidates matter, it also considers how well the coalition in power has governed, your politician’s individual facets, the focus your party puts on different aspects of campaigning, and several other factors. I may do a bigger write-up on elections in the future … but I want to be careful as well and not give away too much information about the secret sauce of this project.
The total code base (Java + Typescript) is now well past 100,000 lines of code!
Footnotes [ + ]