Now that the holidays are over, I'm back on game development. One of the cited goals for Cycles3D is to learn about Unity game engine networking, and in the past maybe six hours worth of actual work spread out over a couple days, I've learned quite a bit. As it stands now, Cycles3D supports:
- Hosting a server
- Having a player join a game in progress but wait until the next round to play
- The server can gracefully handle players leaving, and new ones coming in
- All players get player lists
- All players have their own cycles instantiated after the level is loaded
But the part I like the most is this:
- All the network management above the Unity layer is handled in a component that can be used in any game. All in-game commands are fed to this component even in single player games to hide the abstraction of being in a network game from the player.
So for instance, if I command the cycle to turn left, the script that takes in keyboard input calls "InputDirector.SendCommand("OnTurnLeft", my_cycle)". The InputDirector component will look at whether the player is the server, or a client, or playing alone, and decide the right action.
The next step is to make sure state synchronization is working; although the walls are 90 degrees now, I'm thinking about all the demands that will eventually be made to have smooth turning and even turning wall casting on and off. Then I need to test wall instantiation, and finally making it so only the server can decide who crashes before I meet my next milestone.
Here are some boring screens of my progress:
Image 1: A network game in progress from the server's POV. The cycle in the picture is that of the client; the selected item way in the back is the server's cycle.
Image 2: The host game screen. Behold its rugged developer-friendly glory!
I will make another post once I hit that next milestone!
Oh by the way, since this is the first news posting, some of you may not know that Cycles3D was a light cycle clone programmed over a decade ago, but has remained popular to this day. I finally decided to take it under Gamieon's wing with the intent to learn more about Unity, release the game for free, and to hopefully hand development over to someone else so I can focus on my four other projects. Here's some video of the single player game play:
this is amazing work! keeps it up!