This site uses cookies to ensure you get the best experience. More info
Got it!

Praedium Project

What is Praedium?

Praedium is the name of my project for Daj Się Poznać competition. It will be a text-based, full ASCII, terminal style farming simulation game.

The name Praedium stands for farm in Latin. I know, I’m very creative right?

If you have some knowledge about roguelike games, you may have a rough image about how such game could look like.
Good, and more modern examples of text-based games include the famous Dwarf Fortress or the amazing looking Cogmind, whose trailer you should really give a watch below.

The idea behind this project comes from a sentiment to the Harvest Moon game series which I really loved to play as kid.

Those games are about simulating the experience to live and work on your own farm. You had to buy seeds, plant them, water the crops for several days and harvest them in order to make some money.
There also were animals, such as chickens, sheep or cows which you had to feed and take care of so you could in the end sell the eggs, milk or wool.
You could also upgrade your house and farm, make a bigger chicken coop for example for which you had to gather the materials such as wood and stone.
There were also seasons which influenced the crops you could grow and harvest. To top it off, you could always marry and get a kid.

Basically those games are all about farm managing, including resource management with some role playing elements.

The original Harvest Moon Game from 1996, released on SNES The original Harvest Moon Game from 1996, released on SNES

Why text based?

During my times as a student I had an idea to utilise my knowledge to make a Harvest Moon-style game. Unfortunately, my experience was limited to simple console-based programs, so I had decided to utilise that and make it text based.

You can probably guess how that did end up, considering the fact that I’m trying to make the same thing now…
But, to give you an image - The code was poor, ugly and barely working, I didn’t have much time or experience to make it work as I wished to, so I gave up. I had lots of troubles with it and to make things worse I tried to make it for the piss-poor Windows’ Command Prompt.

That’s why I decided to give it another try and maybe this time - succeed.

But it’s not the only reason I choose this project over my other ideas.

  1. It’s a good pet project to focus on code architecture and code itself.
  2. Because it’s text based, any kind of more sophisticated user interface, animations and visuals such as lighting provide a challenge and must be resolved in the non-usual way.
  3. Although I would be able to make some assets myself without a problem, limiting myself to text is also a good challenge for creative mind on how to represent things with limited palette of characters and colors.
  4. I wanted to move away from the game engines and their toolboxes and try to make a decent game architecture on my own.

Brogue, an example of modern roguelike Brogue, an example of modern roguelike


To start it of I will be coding the game in C# language.

I was torn between Ruby, JavaScript and C#.
I use Ruby and JavaScript basically every day at work, as a full-stack developer on a number of projects so I’m very familiar with them and feel very comfortable using them.

C# is also familiar to me, although probably not as much as others. On the other hand I used C# a lot during my tries at making game prototypes, giving my best at gamejams and even used it for my engineering thesis. I had used it along with MonoGame or Unity and had a lot of fun doing so. That’s why C# is my language of choice when it comes to games. For now, at least.

Moving on to the frameworks and tools, I had already said that I’m not going to use any existing game engine at all. In fact, I’m going to make this game using simply Windows Forms.
Why? Well, Windows Forms provides me with the ability to play sounds and show some visuals in a nice window. And that’s all I really need to be honest. I’m going to take care of everything else by myself. Well, almost.

Before starting this project I had a little chat with Bob Nystrom about his old, abandoned project Amaranth. In short, I really wanted to use his two libraries - Bramble and Malison, which he used while developing Amaranth.

The first provides you with a handful of useful vector or rectangle classes which would definitely help me in making my game, and the second provides a very clever terminal implementation along with Windows Forms renderer already built in.

But, those projects were put on Bitbucket so I kindly asked him whether he could import them to GitHub, so I could fork them and give him the proper credit while trying to put them up to date, maintain and maybe upgrade them myself, and now you can see both of them forked by me here and here.
For now, I have upgraded the solutions to Visual Studio 2013, added a simple .gitignore and updated the NUnit framework’s version used in Bramble, but it’s very possible I’ll be tinkering in them more.

Speaking about Bob, if you have any interest in game development I highly suggest to give his book - Game Programming Patterns a try. It’s available for free on the web, or you can buy it and have it in another format.

As for writing code I will be of course using Visual Studio 2013 VIM.

Wrapping Up

I hope you are interested in following the development of this project, or maybe even my blog itself.
If you have any suggestions or expectations about Praedium or maybe played the Harvest Moon series or some roguelike games yourself, feel free to drop a comment below.

In the next post I’m going to jump into the code and talk a bit about the Game Loop, how it’s implemented in Praedium, and why.

If you are the type who wants to also dig around the code - here is the link to the project’s repository, although as time of writing it’s probably quite bare boned.