I decided to take part in a competition called "Get Noticed" (in Polish "Daj Się Poznać") this year and it starts today. So, as some introduction:
What is it about?
In short, the competition is about developing a software project for 10 weeks and writing about it on a blog. I've been meaning to breathe some life into this blog for quite some time now, but I've always lacked motivation. When I heard about this competition, I thought that it might be something that will let me overcome my laziness and finally give me something to write about. I have some projects still waiting for their turn, so I chose one of them and decided to register. Let's get to work, then!
My first idea for a project for the competition was to finally move the procedural universe generator forward a bit (I've written about it in a few entries under the name "The Universe Project"). I was worried, though, that I won't be able to create anything meaningful in just 10 weeks. That's when I turned my attention towards one of the other projects that I had started in the past, but never finished - "Ktulu Online".
I should probably begin by explaining what Ktulu actually is (and no, it's not misspelled Cthulhu) - and it is a party game similar to Mafia, but a lot more complex. For people who don't know Mafia either, here is a short summary of the rules:
About 10-20 people sit in a circle with one of them leading the game. The players are randomly divided into fractions - ordinary citizens, mafia and the police. Being a member of a fraction is something to be kept secret, except in some special situations mentioned below. The only person with the full knowledge is the leader.
The game has a day-night cycle. During the day the players talk and try to decide who among them belongs to the mafia. They accuse and defend each other. At the end of the day a vote takes place, which lets the players choose one person that shall be killed - this person leaves the game and their identity is revealed. The citizens together with the police try to eliminate all mafia this way. The mafia, on the other hand, tries to kill everyone else, but they mostly work at night. When the night falls, the leader asks the players to close their eyes and then tells the mafia to "wake up". The mafia then get to know each other and choose a person to kill using gestures. The victim, similarly to those killed during the day, leaves the game and reveals their identity. After the mafia goes back to sleep, the police get their turn - they can choose a person whose identity they will get to know. This knowledge will allow them to help the citizens during the day. The game ends when one of the fractions (the mafia or the righteous people) achieves their goal.
The game is pretty simple, but very entertaining and a source of hours of fun. Ktulu works the same way, but is much more complex. The full description of the rules would be too long to fit here, and the original one is only in Polish, so I'll just say that in Ktulu every member of every fraction has some specific ability they can use to help their allies win (quite different from Mafia, where the only thing ordinary citizens do is talking and voting during the day). I will probably write a full translation of the rules during the development of the project, as one of my goals is not to limit it to Polish users.
[Update: I've added a description of the rules in the third entry.]
Moving Ktulu into the virtual world is an idea that appeared probably shortly after the game was created. I've tried to accomplish this task with a friend when we were both still at high school. We made some progress, but my part got severely limited when I experienced a hard drive crash (an advice: make backups!). The friend has been developing the project by himself for some more time, he even got it to a point where a limited feature set made it possible to play the game a bit. It looks like the whole thing died shortly after, though (to be honest, I'm not quite sure what actually happened, since I lost contact with the friend).
I toyed with this idea a few times during the years, but I never managed to gather enough motivation to actually develop it. I hope that this competition will finally make it possible ;)
Regarding the technology I intend to use during this project - I chose Rust. The main reason is that it became my favourite language almost immediately when I learned about it - it combines the low level and speed of C++ with the convenience of dynamic languages and safety of managed languages. The other reason, though less important to me personally, is that Rust code is almost automatically portable. The abstractions provided by this language isolate the developer from the OS-specific details very well, which makes creating software working on all popular platforms practically effortless.
To sum up, I have the pleasure to announce that I have entered the competition and I invite everyone to follow the progress of the project :)