Hi! That's my first post here on the gamedev community so i aplogize in advance for making any kind of mistakes (breaking forum rules, etc...)
I have a few questions regarding my current project (not programming related, it has more to do with releasing/supporting this project after its release.)
Now what exactly am i talking about:
My current project is a first-person parkour styled platformer in which you race agains the time and try to beat maps/levels as fast/efficiently as possible by abusing the enviroment and using it to your andvantage. To visualize it better think about the general premise of Trackmania mixed with Mirror's Edge styled gameplay.
Now, i'm also working on multiplayer for this game.
The main progress in the game is done by playing each map one by one, win medals and proceed to the next map. Additionally your best times will be uploaded to a webserver so that you can compare your best time with other players.
In addition to that i'm also working on a server application so that players can race against each other in realtime. (Players will be able to host a server application to which clients can connect to.)
The server application itself is written in Java (more on that later.)
And here is the thing: I was thinking about releasing the server code to the public so that players can mod it and (potentially) extend it with server sided gameplay modes.
There are a number of reasons why i'm considering to do this:
- Players can mod it (new gamemodes?)
- Making it "open source" would benefit me as issues in the servercode (which i've overlooked) may be found by others
- The Java servercode is easy to decompile so if someone wants to get the source code, he could do that anyway. (of course i could use an obfuscator but...)
What speaks against it though is cheating. As i will release the server to the public (and i can't quarantee that someone doesn't decompile/alter the source code of the server) i already dropped the idea of allowing the server to change any important scores on the main webserver. So the realtime multiplayer scores will be only stored locally on the java server and not on the main webserver (to avoid anyone to cheat with the global scores.)
The question is: How do i prevent someone to host a server which is modified to allow cheating (by modifying the code)? Or a better question is: Should i worry about it?
The java based server application can't alter anything important on the main webserver (where all the time trial scores are) but there is still a chance that someone gets the idea to alter the servercode so that he gets certain "admin privileges" to (as an example) reset his time, teleport around the map, etc...
It certainly isn't going to be fun for anyone if someone on the server breaks the rules and uses servermodifications to his advantage.
And that's where i'm stuck. I don't know if releasing the source code is a good idea or how to restrict servermodifications/give players the ability to defend themselves against something like that. (I can't just "test" that out by releasing the source code to see how it goes. Once the source is out i can't do anything about it.) Maybe a reporting system would be a solution (as all hosted Java servers would register themselves with their IP onto the master server. If enough reports come in i might be able to block the IP for a certain amount of time.)
Is anyone out there who did a similar kind of thing? (Releasing a free/commercial game with a server which was also released with the source code?)
Any experiences to share?