Tuesday, August 25, 2015

What's in a Name?

I don't remember now when exactly the name "Undecima" became officially the name of the game – it took me quite a while before I came up with it. I have decided right away that I'm not going with any "generic" game names like "The Age of Dragons", "The Clash of Giants", or "The War of Heroes" – there were too many variations of that kind in the Internet already and I wanted something unique. 

So, my next attempt was the "Middle-Earth" way – something like Elandor, Oarvind, or Meaneer – something that sounds like the name of a fantasy kingdom. Having together A and E (like Evealore) would make it even cooler as it would sound a bit more "Elvish". But again, all these names were lacking some substance; it wouldn't make much difference whether it's Evealore or Evaelour as neither mean anything to anyone.  

My last attempt was to use something from a different language; I played with some languages and gradually descended to Latin. At that point I already have an idea of separating the game into multiple levels, but wasn't sure into how many levels exactly. Again, I wanted to have some "unusual" number, and the first number that I couldn't associate with any other game I knew was eleven. I tried "Eleven" to see how it sounds in Latin – it was Undecimo - liked it, changed the ending to a feminine form and Undecima was the name.

Tuesday, August 18, 2015

The Heart of the Game

Deciding finally on the set of tools that I'm going to use was comforting but there was still a really big question, which I haven't addressed yet and which was really bothering me – how on the Earth all these games work? I mean, you start doing something in the game, you log off, then log in and it's all done. And presumably it's all happening in your browser without your involvement (updating later a database somewhere on the server). 

Well, I have to admit that if it is indeed somehow client-based, then I still don't know how it's done and what the secret is. Understanding that nobody is going to share this secret with me (but still unsuccessfully trying to Google it), I spent a lot of time wrecking my brain and trying to figure it out, but all to no avail… It was either extremely inefficient or just was not going to work at all. To let you understand better what it is all about, let's see an example: 

If you are sending your troops to attack somebody, it's going to take some time. When you launch this attack, a new task is created in the database and it's supposed to finish after some time. I don't want to wait all this time, so I log off, do something else, log in again tomorrow and can see that the battle happened when it was supposed to happen and your troops are already back home. The question is what made it to happen?  

The only way I could see it's happening purely on the client-side is to execute all pending tasks for a user at the moment when he (or she) logs in the game, back-dating all tasks with whatever date-time they were supposed to be executed and recursively iterating through tasks that depend on other tasks (e.g. returning your troops home). That would work in theory, but there would be so many complications, that in practice it would be totally inefficient.  

The only way I could see it happening is to have some external and independent mechanism that would be monitoring all existing tasks and when it's their time, pull them out of the database, execute them and update the database again. This mechanism will be controlling all processes happening in the game, and it will become ultimately the Heart of the Game. The decision was made again and I started working on the Undecima Task Manager. 

A downside of having an external application of that kind and why I actually tried so hard to figured out how to do it all on the client-side was the fact that now I'll have to hire a whole dedicated server to run this application and the cost of hosting this project would jump up hundred times comparing to a simple web-app that was initially in my mind.

Tuesday, August 11, 2015

What Language Do You Speak?

Before starting any actual development, I wanted to try and see if it was possible at all for me to create a game of that kind. It may sound very plausible for some people as I stated earlier that I was a programmer at that time, but there is a vast difference between commercial programming and game programming. I have created a few games before, but they were all desktop mini-games and hardly could help me in developing Undecima.
The first thing I noticed is that most of the browser games of that kind are written in PHP, which I knew very little and didn't like much. Every time I had an encounter with the PHP code, it looked to me way too messy, comparing to C# code. Maybe I just happened to see the work of messy PHP-programmers all the time, but that was my impression and even though I could read most of the PHP-code, I couldn't write it and starting a new language was not exactly in my plans.
Another argument I had was about databases – if I go with C#, then it will be MS SQL Server and if I go with PHP, then it will be MySQL. Two databases are very similar and use almost identical script language, but MS SQL Server is licenced (you have to pay for it) and MySQL is free. It is of course the matter of habit and preference, and in my case, the preference was clearly with MS SQL Server, which pushed the possibility of using PHP even further away.
So, after some consideration and finding more excuses for not starting with a new language that I didn't like too much, I decided to write a browser strategy multiplayer game in ASP.NET using my favourite C#.

Monday, August 3, 2015

The Beginning

The idea of creating Undecima came to me about seven years ago, but the background for this likely formed much earlier in my childhood. I remember myself when I was ten years old or even younger, shading different countries in my school geography workbook and assigning troops and resources for them, depending on their population. A pair of dice was my universal random number generator and a box of colouring pencils was my graphics interface. I have created quite a few little board games to play with my friends at that time and later on, but that was all very domestic and didn't get out of the family and friends circle.

Well, seven years ago or so, I was playing one of the online strategy multiplayer games popular at that time and got bored and even mildly annoyed with all little and not very little things that to my understanding could be much better and would make the game much more interesting. Being already a programmer at that time, I thought "Why don't I try creating then something that will be not boring or annoying – and the idea of creating Undecima was born.