It's now been roughly five weeks since I started with Astrofighter.Net and I estimate that I may have put in 150-200 hours during the five weeks. I've been off on paternity leave but that still requires a lot of work with a 1.5-year-old and a 2 month old, so it's mainly been when the kids have gone a sleep that I can work on the project, between 8pm and 2-3am.
I realize that I haven't made it easy for myself since I am, with this project, learning Unity, learning C#, learning network game development, and learning object oriented development all at once. The only object oriented development I have played around with before is BlitzMax, but I never really created anything with it.
Since my last update I've got a lot of development done. It's not so much game-play wise because I decided to ensure that I got a menu system and game state machine running so I don't bump into any troubles further down the line. To be more specific, this is what I've done the past 2 weeks:
- Design a custom GUI for Unity to suit my space-look
- Developed a menu system which scales to any screen resolution
(still a lot of menu items to put in, but the menu framework is all there)
- Developed Pilot account management with a PHP/MySQL backend so you can create and login to accounts seamlessly from within Astrofighter.Net
- Account creation and session validation for Pilot accounts so a server can verify a token for the pilot in order to secure the integrity of statistics for pilots
- Developed a Game State Manager that takes care of transitioning between scenes and game states, such as Menu --> Host Game --> Start Server --> Load Level --> Prepare For Match --> Play Match --> Show Results.
The Server issues all the state changes and the clients follow.
- Redesigned the class structures separating out a GameStateManager class (state management), GameManager class (player management), MatchManager (match management), etc.
- Developed a flexible Settings class so game settings can be loaded / saved / accessed in the game and in the menu system
Today I also had a look at UnityPark uLink that are offering a nice scalable solution for networking in Unity. Ironically enough it does much of what I've put a lot of effort into developing in terms of account management and backend server communication. I may, or may not, decide to switch to uLink depending on findings down the road... but I may have to pre-purchase the uLink indie license because they have a limited deal on it until end of October.
Here's a video from today showing some of the menu GUI, player account management (with PHP/MySQL backend), and game state handler switching from menu, to "prepare", to "match":