For those interested in the development side of this project, I thought I’d write up some information about how the game is being developed. If you’re not interested in the technical side of things, you could always forego this post, or just skip to the fancy colorful diagram at the bottom.
Measuring programming progress by lines of code is like measuring aircraft building progress by weight.Bill Gates
Web-based software projects like Particracy typically have three big layers (called tiers) in their architecture: the part that users see (the front-end), the part that runs the mechanics and algorithms (the back-end), and the database that keeps all the data securely and safely stored.
The back-end is written in the Java programming language, using Spring and Spring Boot to glue everything together. I use the excellent JetBrains IntelliJ IDEA editor, which in my view is one of the best pieces of software ever written. If you’re a Java programmer who is used to Eclipse or NetBeans, I strongly suggest taking a look at IntellIJ. I use Hibernate, both to define the data model and to generate the database schema. Internally I went for a fully anemic domain model, which means the data objects themselves don’t have meaningful code in them, and all the logic is in the service layer. I’m normally not in favor of this approach, since it contravenes some tenets of object-oriented programming, but for database-based applications and this project in particular, it works really well.
The front-end is built with Google’s Angular 4+ framework, using Microsoft’s TypeScript language. It’s cute to see that these two competing tech giants have designed such complementary tools. There are a lot of things that frustrate me about the web frontend technology ecosystem, because every couple months, the new hype of the moment seems to pop up. I feel more naturally at home in the more stable back-end world, but of course this project needs a really good user interface, so last spring I took a good look at various JavaScript user interface frameworks and tools, and decided upon Angular/TypeScript because it fits well with I was looking for: intelligent templates, static typing, conventions that impose a certain structure, and good tool support (really, check out IntelliJ). It’s definitely not perfect, but it works for me.
The data is stored in a PostgreSQL database, using the PostGIS extension for geographical data. That enables me to use proper GIS industry features like projection transformations and geographical queries, though the use cases I have for it are pretty mundane for now.
As of this blog post, there are 151 database tables, more than 1000 database columns, the back-end is 63,000 lines of Java code, and the front-end clocks in at 17,000 lines of Typescript code, measuring all non-blank source code lines. I’m aware SLOC isn’t a good measure of project progress (hence the quote), but I do feel it gives an impression of how big of a project this really is, especially for a one-man team.
I tried a couple of tools for planning the workload, but in the end what I really wanted was just a very big list of planned features that I could easily manipulate and keep up to date, so I settled with a large spreadsheet (using Google Sheets) in which I categorize and mark all features I can think of for the game and its behind-the-scenes administration panel. Right now the count stands at 641 features, of which I’ve already finished 349, but I anticipate the final count will be close to 1000… so I definitely don’t feel like I’m half done yet. If you think I’ve been infected by the feature creep microbe… you’re almost certainly right.
I’ve identified three big thematic groups in which the game features belong: the political, economical and international arcs. This might help present an overview of what this game will eventually become!
Hi Wouter.
I’m a long term player of particracy classic. I’ll definitely play the new game when it’s ready!
Anyway, I donated some money to you via paypal a few months ago in the hopes of getting a picture enabled on my party’s page (as previous donors have). Any chance you could enable that for me?
My user name is Stadius.
Done! Also, that appears to have been 15 months ago, time flies …
but … when can we play !? 🙂
When it’s done!
When it’s ready 😛