Big leap from exercises to a basic game - Upgrade MonkeyZone

Big leap from basic, intermediate and advanced exercises to a basic game
I went through the book and the online exercises and found that, when I actually started to make a game and was adding controls and appStates, I had almost no idea of how to do it. I also ran into the ‘modifying the scene graph from another thread’ and thought that, at this point, I should have a good idea of the strategy of how to give input without it happening at the wrong time. I’d like to see if anyone has upgraded MonkeyZone so that it is a better learning tool. I know it was done in a short amount of time.

For example:

  1. All input has to set a state (yawRight=true) that gets processed in the spatial’s controlUpdate(float fps) code. MonkeyZone does it but, it could be more clear.
  2. I wanted to add networking to my space flight sim. I thought I could just add a NetworkEnable as a base class and found that it took a lot of work. In the end, I rewrote the whole class. I added the third dimension and combined the moveX, moveY, moveZ into move(linearVelocity.mult(tpf)) and turnX, turnY, turnZ into rotate(angularVelocity.mult(tpf)). I ended up duplicating all the functions that operate on spatials; move(float), rotate(float).
  3. I still want to have players come and go from a running game instead of having them join at the same time and have the game die when they all leave.

Before I do all this, has anyone else done it?

They aren’t based on Monkey Zone but the sim-ethereal examples sim-eth-basic and sim-eth-es are actually space flight networked games that you can start a server and then join/leave whenever you want. Probably closer to what you are looking for.

Plus… it uses SimEthereal which is probably better for real time networking than what MonkeyZone was using. MonkeyZone was doing TCP over SpiderMonkey directly because its real time requirements were low. SimEthereal wraps SpiderMonkey’s UDP messaging to provide real time updates.

Edit: if you really want to jump ahead and blow your mind… entity systems are worth looking into. That’s the difference between sim-eth-basic and sim-eth-es. Sim-eth-es has a more advance ES based architecture that is easier to extend.