What a great week it's been on the development front. Completed the coding and testing of the Master/Login servers, built the standalone client, added in the new chat services we have been working on... The list goes on. But, as with anything great, you take the good with the bad. I messed up the repository by trying to sneak some changes into a file, accidentally deleted the repo copy aaand.. lost a couple days of work but HEY! That's what makes this exciting right?
The development community has been amazingly helpful. A resource system is ready to implement, mounts are ready to implement and updated GUI elements are now pending a push to Test. I spent a couple of hours today working with the community group testing an upgrade to the network layer. The results were outstanding. We capped out at 107 unique clients connected to the hosting server (which was a 4CPU 3.3Ghz 8gigRAM ) and there was no errors or hiccups. This was with 100+ people in a tiny area all updating each other with network packets. Was a beautiful sight to see. We then ran a similar test with the old network code and the server ended up melting down at 80 clients in the same general area. We started to see errors at 50 but the whole thing went south for the winter at just over 80.
So what does this mean for indie MMO development? Let's put it in perspective, Path of Exile never really has more than 20 people in a town at a time, World of Warcraft rarely has 100 people in close proximity (as in field of view top LoD). Even Elder Scrolls Online rarely sees 100+ player battles in close proximity. Albion online turns into a slideshow with 60+ people in a zone. I for one was very very pleased with the network results. This tells us we can have hundreds of players in an instance and a large portion of them in very close proximity. (Towns and cities anyone?) A massive amount of work has gone into the Unity HLAPI-CE network layer and it is really starting to show. Big props to vis2K and Paul and the rest of the development community for their work on that asset. This can change indie gaming development in such a positive way.
I am going to implement some of the new systems into the game like mounts, GUI updates and harvesting. These are foundational and allow for testing and need time for debugging. I’ve had the servers up for 4 days now and everything is running awesome. The Database is happy as a clam, the chat servers are good and... once I fix my boo boo with the client (related to the chat system but it desychn'd the entire client build arg!) we'll be in great shape!
At this point I am comfortable saying that I anticipate putting "Milestone 1: Servers and core infrastructure" behind us this weekend and move on to feature implementation. The faction system is coming along well. I watched a test of AI fighting each other based on faction checks, very cool. Building an mmo is a massive, just a sec need that to sink in... I mean MASSIVE with a triple bold capital flashing letters M A S SI V E undertaking. Taking a project based approach, defining sprints and milestones and stabilizing your core game systems is, in my opinion, the only way to start. It's not about fireballs and story writing or anything else. Having the coolest fireball spell in the world means nothing if the server desynch's every time you cast it. I am hoping to put the website back up for the game "soon"(tm) but really focused on the nuts and bolts right now and not trying to make the project look all snazzy. I anticipate having some pretty cool screens and our first video footage in the next 2-3 weeks. That being said I am out of town for a week shortly so here is hoping I can get some stuff done.
If any of you are experienced Unity3D world builders with a keen sense of poly optimization, LoD and occlusion feel free to drop me a line. World building is tremendously fun but.. I will be the first to admit it's really not my forte. If you want a project to showcase your world building talents and create some wicked in game video of your worlds we should talk.
And remember... It's your world now!