Making of the.ridiculousgame.ca (v0.1) Intro Well well well, as I explained in the introduction, I wanted for a long time to create a video game.
I was planning to make it a bit fun if possible, and not to complex for a first version.
Mandatory criteria The important criteria was to be online/multiplayer and text-based.
I had to think online/multi from the start, rather than make an offline/solo game and try to adapt it later, as I know adaption doesn't work well generally.
Back to reality I work in IT and I made my studies in IT field. I had the opportunity to learn many things including algorithmic, basic programming, oriented object programming, databases... but I never was a developer. Then I don't know the design patterns that, if I remember, dictates how programming is supposed to be done.
Programming language I chose python.
I used it a lot in the last months and I think it is an easy language. It allows readily to manipulate the text values and the connection with the other hosts.
As far as I know, there is two ways to develop: basic or oriented-object (O-O).
I tried to think a way to do it O-O, but I didn't succeed in using it intelligently. I changed back to basic. I'm not done with O-O, I plan to upgrade the code later.
Client vs. Clientless The development of a client might double the development work, and it requires trust between the developer and the players.
Non-Web "clientless" limits the interaction. I played this kind of game in the past so I had an idea of what I could do.
Hmm... clientless it is!
Theme choice I have many ideas, I selected the one that was adapting the best with all of the requirements: a Maze Dungeon.
I search for a way to make the maze. I found many available resources on the Internet, most of them are based on an algorithm and some of them are in Python. Yeay.
Putting everything together I began with having one player walking around, according to the map configuration. Once I had it working well, I made a main program that, 1- is creating a new map, 2- is waiting for the players to connect. Then a new process is created for each player: it handles the player actions independently.
I chose the room/map size according to the Windows telnet configuration. If I had chosen I bigger map, bigger ASCII art, most of the players would have troubles to get a correct display. Even if telnet is not user friendly, I wanted to keep it simple at most.
The next step was to add the monsters, the mechanisms (signs, chests, NPCs...), the objects and theirs respective actions.
Finally I added special enemies, including Sanic, the immortal Ghost, the nice Dog, the fake Chest (who has lost half of their IPs? :P) and the crazy&mad customer BOSS.
Fighting system There is probably many recommendations on how to do that well balanced from the start to the end on the Internet.
I designed the fights the way they are from the start. I tested it and thought it would be ok for the first version. In fact, I wanted people to loose all of their InternetPoints in order to make them discover the magnificent Fountain of Youth (Jouvence in French).
Laziness Ok I'm a bit lazy and I wanted to have the game released. It is great to have people playing in your game and I couldn't wait for it.
That is the main reason for the map changing after a reboot. When the map is created, it is loaded into the memory of the server and was not saved, while the players information were saved into a file. It was possible to do it for the map/maze. I didn't :P
A bit of security I'm paranoid on security. Then before asking people to use Telnet, I made sure to explain what it is.
The password are protected on the server, I used some hashing and salting. Once the protection is applied I can't decrypt the cypher myself.
Even if it is protected on the server, when you use telnet, the traffic between the client and the server is not encrypted. As an example, if you share your network with someone that listen to the traffic, that person would be able to get that password.
After speaking about it with a friend (Hello friend), I decided to specify the password myself. I 1- avoid having some players choosing the same password they use somewhere else and 2- avoid getting one of their account hacked because of the game :)
The bugs Before releasing the game I tested the game in many ways, but it's hard to think of all the possibilities.
It had (and still has) some remaining bugs.
- The main bug was in the Chest rooms, with bad luck the player was caught in an infinite loop with the server. As I added a security feature that was forbidding a user to connect twice, the player could not login again. Ooops :(
- Another known bug happens when the player send (could be by accident) a non-ASCII character to the server.
Working Time I began 3 weeks ago. I developed the game for 2to3 hours a day, weekdays only. It took around 35 hours in total I think.
All of that work isn't lost. I should be able to reuse my code for some new multiplayer games.
No Real time and not multiplayer As someone indicated, it is not a real-time game in the end, but turn--based.
Also, there wasn't some real multiplayer interactions. You could talk with others using ":" as indicated by the Tips 1 sold by the Sorcerer and you were sharing the same monsters (first one to put the monster to sleep get the loots).
I wanted to add some mechanisms involving 2 to 3 players, but I decided that it would come with the next versions as the code was already complex.
Questions If you have additional questions, you can ask :)
If you have similar projects and want to talk about it, you can contact me here or on the GOG chat :)
Tallima: I tried to make a multiplayer version of my hacker game yessir hunt but have come up empty. It's tough!
Do you want to share a bit about your project?