While going through some of my old posts to look as to why I designed somethings, I noticed June 28th is the first post of me taking on this massive project. It’s always good to reflect on what you’ve done and accomplished and a one year anniversary is a good time to do that!
What I’ve accomplished
I love tables, so here’s a table of what I said is required to build an MMORPG, and what I’ve accomplished so far!
| Feature | Status | Notes |
|---|---|---|
| Reliable UDP Server/Client Code | ✅ | Adapted from reliable.io |
| Encryption/Decryption for Transport Security | ✅ | libsodium |
| ❌ | Need client-side prediction | |
| Serialization/Deserialization | ✅ | Handled by flatbuffers |
| Area of Interest System | ✅ | General implementation is in |
| Timers | ✅ | Handled by flecs |
| World Persistence | ✅ | Handled by flecs |
| Mesh Loaders | ✅ | Handled by ufbx |
| World/Landscape Meshes | ✅ | Handled by ufbx |
| Nav Meshes | ❌ | |
| Physics Engine | ✅ | Handled by JoltPhysics on server & client |
| AI for NPCs/mobs | ❌ | |
| Pathfinding | ❌ | |
| Ability System | ❌ | |
| Weather System | ❌ | |
| Quest System | ❌ | |
| Group/Guild/Clan/Alliance System | ❌ | |
| Chat System | ❌ | |
| World Event System | ❌ | |
| Outpost/Castle System | ❌ | |
| Sieging System | ❌ | |
| Calendar System (for seiging) | ❌ | |
| Reputation System | ❌ | |
| Anti-Cheat/Bot Detection | ❌ |
I’m actually pretty happy with my progress, even though one year sounds like a very long time. When I started I barely knew any C++. And now? I still barely know any C++!
But I have learned a ton about writing C++ code that works for both linux & windows and all the various pit falls of memory management. I’ve still got a long ways to go, and many refactors to do as I learn more.
While I was hoping to have multiple clients interacting at this point, I do feel like I’m extremely close. Which means I’ll have the majority of the major “important” systems in place.
- Networking, Physics, Interest Management and World State
I’m still excited to see where this goes and can’t wait until I have it in a playable state where I can really start to build out my own virtual world. For those readers who have been following along, thanks for your time, I hope you get even a fraction of what I am getting out of this!
