I have been working on the server and client model for Phoenix USC over the last month. This, with out a doubt is the toughest portion of the project to code and develop. My goal is to make the client/server model as secure and cheat free as possible. This requires an approach known as client side prediction and an authoritative server. Basically a system that takes control away from the clients and makes the server the supreme authority on all aspects of the game.
The biggest problem with developing a system like this in a 'twitch' style game like Phoenix USC is the lack of position, velocity and other data being sent from the clients. In the above model only moves (left, right, thrust) and a time code are sent to the server. This makes it especially tough to implement in inertia style games where the client ship (actor) keeps moving between packets sent from the client or server. Additionally the ship can move in any direction and can form curved paths and also react to hitting a wall or other forces such as repel. All very difficult to predict and maintain a parity between the server game state and the clients games state.
So I am working on two different networking models at the moment. One as described above and another that allows additional client data to be sent to the server that is secured by encryption and other security measures. This second method uses a authoritative server and client prediction but relies on additional data from the client such as velocity and position. While potentially open to cheating the server monitors the actions of a client and can reposition a client if needed or discontinue a client that is cheating.
So, I am wading through all of this and it is really a matter of balancing security and performance. I will keep you posted on my progress and I am not to far off from locking this all down and moving forward. I have a working server and client and it is now a matter of choosing the best model for networking and security.
As some of you know it is just me here working on coding and developing this project and I can assure you that I am working every day to research and develop the best game possible. That said there is a need to help fund this project through a cash donation or hardware donation. I am getting to the point where I am in need of additional hardware such as an Android tablet, IPAD and a system setup to properly support Linux and Mac OSX. If you can help please donate at my site www.phoenixusc.com or if donating hardware message me here on Indie BD or at email@example.com. These hardware devices and systems are needed to compile and test Phoenix USC so if you have an older system or device you are replacing why not help out a worthy project like Phoenix USC by donating your hardware.
- Rich -