MMOs are the hardest games to make by a very large margin. Find some smart folks on the forum and make a scaled down fantasy RPG, and iterate from there. Even if you don't get past prototype, you'll get a new and fun (and frustrating) hobby. Just stay clear of people with more than one hair color.I need the tools to get good enough for me to build my own MMO.
The biggest issue I see when you don't develop your own network stack/server and try to shoehorn an existing software to develop an MMO is the underlying persistent nature of an MMO. In normal multiplayer games--even with a large number of players or objects--once the match is over you can kill the server and start a fresh one. If it crashes just that match is affected. All players also start fresh, so it may be frustrating, but the other millions players couldn't care less.It's not that Unreal is bad at MMOs, MMO developers almost always implement their own networking stacks. But this is a tremendous amount of work, something one would expect when developing an MMO.
[...]
Epic also has a new experimental networking stack called Iris, which fundamentally changes the networking to handle open world games and large player counts, and will completely replace the existing replication system which has its roots in the old Unreal Tournament games (push vs polling, reducing CPU load on a server).
Event sourcing is a design approach where every change to the application state is recorded as a sequence of events, rather than just storing the current state. Each event captures the timestamp and nature of the specific change, allowing systems to reconstruct the current state or investigate past states by replaying these events.
This method is particularly useful for applications that require a complete history of operations, easy data recovery, or complex auditing. It enables systems to evolve rapidly and meet changing business needs, as it captures the journey of data rather than just the destination.
Caching is not the silver bullet for transactional issues. You are just moving the fundamental issue of ACID properties from the database to the "high performance cache service". We called things like this "middleware" back in the day, and I've seen and heard about horrors with in-house developed servers like those so many times (especially from Java developers that have no database or computer science background) that I stopped counting after all my fingers and toes were used up. "That transaction number, the one that shows up on customer invoices ... shouldn't that be ... I don't know ... unique?"Persistency can be accomplished through a variety of databases, with some sort of high performance cache service sitting between the database and game server(s). At some point in development, the game designers must choose how much of the world will live on between sessions (in an MMO, this is normally player states, quests, inventory, housing and perhaps some high end raid encounter timers).
That is a way to partition the load, but at the same time MMO systems are usually interlocking and interdependent: Quests requiring looting items (and when following the WoW design, also affecting loot tables), player states being affected by zone data (for example like M+ affixes, or jumping into water or lava), and combat being affected by items, buffs, or encounters.At some point in development, the game designers must choose how much of the world will live on between sessions (in an MMO, this is normally player states, quests, inventory, housing and perhaps some high end raid encounter timers).
You are describing a transaction log. You know, the like the ones we are using in things like ... databases and journaling filesystems? Although filesystems usually use intent logs.The DB cache for server meshing would most certainly need to use event sourcing to keep the multiple server-nodes in synch:
link to yesterdays stream
let me know if you get on and want to run with us on Lyneth serverIf that patch Shariff is talking about drops at the end of March like its supposed to - think Ill finally update the game and play again. Sieges![]()