Sept 27 – Oct 15
I knew I wanted to make Warriors and Serfs for a while before the Project phase started, and after almost an entire month of semester break I was starting to feel restless without doing anything productive to break up my gaming, so I decided to start a bit early. I also knew that getting into a productive rhythm again would take me some time, so I started off with easy tasks and only a couple of hours of work every day.
I played a lot of Economy-RTS games when I was younger, and I always enjoyed the production chains immensely. I would still play those games a lot, if they were still around… I did not like the recent games of the two major series I was inspired by, Anno and The Settlers, and not many similar games exist.
So I decided I would make one myself. A major reason for choosing this kind of game over a simpler game was that I wanted to use the time I had for this project, and do some more complicated programming, dive into AI for a bit, and more complex game mechanics / systems.
Warriors and Serfs follows the Settlers Formula quite closely. In fact, Knights & Merchants was my main inspiration, which itself closely follows the Settlers’ formula. Due to this, I could save a lot of time on Game Design, and invest it into programming and program design instead.
There was still enough Game Design in there however. I didn’t just want to make a copy of the game, but add and change things along the way, and modernize it. And in terms of balance and other details I had to make a bunch of design choices as well, as I didn’t know any of the combat numbers for example, or how the item delivery system worked under the hood.
Preparation and Research
I spent the first week without even touching an Engine.
I created my documents as I had become used to, a Todo list and a Glossary / Naming conventions document, which also doubled as a feature list.
Essentially, I also created a “What I did every day” document, where I wrote down what I did and how much time I spent on the project each day. I used this document both to make writing blog posts easier, and to be able to check how many hours exactly I invested into the project.
I then made a short Game Design Document early on, with some basic information about the background and key features of the game, in a pitch format. Furthermore I made wrote a “Deliverable Goals” document, which I used to outline the features I want for the three different levels of the deliverable I planned, demo, minimum viable product, and target product.
By October 3rd I had a good idea of what I needed to do in the coming months, and felt good about the fact that I knew what I had to program.
Jumping into Unreal Engine
For this Project I had decided to use the Unreal Engine. The main reason was that I wanted to learn the engine anyways, and having so much time for this project, in comparison to previous projects, meant that I could afford to spend the additional time on learning it.
So on October 4th I booted up the Engine and created the project. I checked back on the unity version of the game that I had spent a couple hours on a year before, and imported the models I had made then.
Next, I looked into how programming worked in Unreal, and decided to make base classes in C++, and use mostly Blueprint visual programming for behaviors.
I spent most of two days -still short days, around 3-4 hours each- on a very good tutorial series introducing Unreal Engine to experienced Unity users. The only thing it missed was an introduction to C++ coding with Unreal, so I had to learn that somewhere else. I attempted to add C++ code to the project, but had issues at first so I didn’t get into programming quite yet.
I was away from my work PC almost every weekend, so now that I started working in the engine had to find something else I could do from my laptop (I planned to work 6 days a week generally). That week I decided to design the C++ base classes I needed.
This -extremely useful- session ended with a Lot (as in a plot of land) class from which I would derive a constructionsite and a building class. I also wrote the basics for a Subject (as in citizen) class, which would be the base for the different characters. These classes were uncompiled, but written in C++ already, not pseudo code.
Monday of the next week I managed to create a simple c++ class in a testproject and extend it with a blueprint class, then making two more blueprints inherit from the first.
The next day was the first day I worked for relatively long, 5 hours, and the progress I made reflected that. I added the Subject class to the project and created a blueprint from it. I implemented a label above the subject (the player would be able to name subjects and buildings), health and health regeneration, as well as hunger, and hunger gain.
Over the following days I implemented the Lot class, stockpile functionality (adding and removing items from a Lot’s inventory) and production / crafting functionality, as well as a warehouse (no production, just storage).
I now had a sawmill building which turned logs in its storage (added per debug) into planks, following a recipe.
I spent that week’s day away on researching savegames and multiplayer in unreal, and noted down a bunch of stuff to be aware of for these features to work.