View Full Version : OpenSource competitive network game

04-15-2008, 06:46 AM
Hello, hello!

I'm currently in the designing stage of my game -- I really want to make it OpenSource. However, it's primarily a competitive network game. Is it possible to create this game, as OpenSource with minimal risk of cheaters (More than if it were closed source). ie, someone could make a proxy, since the netcode would be available and pretty much do anything.

That was certainly a cloud above the release of the 'Quake 3' source -- many commercial games still used the engine.

I'm keen on ideas!
Thanks in advance.

Mario F.
04-15-2008, 07:19 AM
I faced the same problem with my current project, since it is also due to go Open Source once beta is over. The solution I found, on my particular case, was to separate the game in 3 parts. Only two are open source.

The Client Application is OS.
The Server Application is OS.
The Game Engine is Closed Source.

The Game Engine on my case is really just a couple of dlls. It contains the game rules and algos as well as the access routines to the database that necessarily only operate through validation. These DLLs are only meaningful to the Server Application, naturally.

My plan is to do things in stages.

- The client application is the one to go OS first. I'm building a rather complete Client Application, so I doubt anyone will want to code one themselves. However, they may want to port the current code. And maintain the ports as the game features increase. I may also eventually remove myself from the Client Application entirely.

- The Server Application goes OS if and when I realize there is an interest in it. The game user base one day justifies the need to run concurrent games with their own administrators who may want to tweak the code, or I may have trouble adding features to the game as I start to concentrate on other things.

- The Game Engine will stay closed source and I will pick myself those interest in working on it with a final team no larger than 5 people, including me.

We are coding different beasts. Mine's a large scale PBeM Multiplayer turn base strategy game. But maybe this will help you somehow.

04-15-2008, 07:25 AM
i was also trying to write a simple networked pong game (2 player).
i was thinking that i will write one program which will first try to connect, and if failed, will become the server.
no separate server-client versions.
i will try to finish it soon and then post my *great* creation in games section! behold!

ps ps ps: was that an off topic? was that a hijack?? >_<

04-15-2008, 09:14 AM
Well, define cheating?

OS will always risk people writing bots, but CS has te same problem it just takes not much longer.

04-15-2008, 11:12 AM
Game security against cheating comes in two flavours.

1) Server-side security based on analyzing the player's incoming data. This is secure, but unreliable. There are many ways of cheating that can't be detected, such as information hacks. (Basically, any information the client has, it can be forced to give the player.)
The solution is to make the clients as thin as possible, i.e. give them minimal data and let the server interpret low-level commands. The obvious disadvantage of this is the highly increased traffic, and consequentially, latency.

2) Client-side security against manipulation of the game state. If your client is open-source, this is a hopeless endeavor.

04-15-2008, 01:15 PM
I agree with the second point you made, but on the first, traffic is usually reduced when using server side procesing, but server load is increased, which results in latency issues. Bandwidth is reduced because the server no longer sends the info on things the client cant 'see'.

Mario F.
04-15-2008, 01:48 PM
server load is manageable and usually where admins like to concentrate their efforts. Anything outside this is harder to manage and usually more expensive to deal with.

04-16-2008, 08:29 AM
Server load can only be managed up to a point. Players per instance is capped at what one server can handle usually. Not that this is a serious bottleneck, the average server can easily handle several hundred clients depending on the game engine itelf of course.