10 ms·
The One Man MMO Project
- xwdv 7y agoHow do MMOs maintain and update state for tens of thousands of players and then push those updates from the server back to clients efficiently?
- codesushi42 7y agoMultiplexed sockets. Dead reckoning.
- parliament32 7y agoI remember a lot of dead reckoning happening in the old Runescape, once upon a time. Many moments of your player running in a direction then getting rubber-banded back because they got interrupted or something.
- codesushi42 7y agoDead reckoning is a bit harder when your game isn't using a perspective based camera (2D or orthographic). Otherwise you can use visual tricks to hide the rubber banding from a distance. Though when in 2D the solution is to interpolate between waypoints.
- Smithalicious 7y agoWhat actually happens in Runescape is that certain animations override the running animation. When the animation then ends, the game compensates by making your character move much faster than usual, which can look like zipping all over the place. This is all client side of course; server side your character moves as normal. Extreme example of someone using this in PVP: https://www.youtube.com/watch?v=kIFWSMW6Lzo https://www.youtube.com/watch?v=kIFWSMW6Lzo
- hesdeadjim 7y agoDepends massively on the type of game. In general the two techniques are heavily compressing the data format sent over the wire (e.g. using 16 bit floats instead of 32 bit where it doesn't matter, sending 3 element quaternions instead of 4 and recalculating w), and only sending what the player needs to know based on a radius or some other criteria. Eve Online slows the entire simulation down when huge battles are happening, but they also split simulations across servers based on which system you are in. Modern WoW shards plays heavily within zones, which is why you will almost never run into the same people while adventuring. They also attempt to limit how many players will be in the same shard at the same time. However there are ways around that through grouping, so when larger battles start happening things get laggy. You press buttons, they are queued up, and can take upwards of a second to show their effect in-game (they must go to the server and back).
- echelon 7y agoWill this change with technology like Google Stadia? Could a massive compute farm calculate all of the state for all players, and then just stream video data down? My guess is no - you'd want the rendering to happen on the edge close to the player, but with a sufficiently advanced compute topology maybe some tasks can be farmed down the graph?
- RussianCow 7y agoMy understanding is that the client-side isn't generally the bottleneck for MMOs, it's all the server-side computation that has to happen to make it all run. Calculating behaviors, physics, etc for hundreds or thousands of players simultaneously is really hard, and Google Stadia doesn't change that in any meaningful way. Edit: Well, now that I think about it, it depends entirely on the game; PlanetSide 2 is an example I can think of off the top of my head that brought my computer to its knees during big battles. But most MMOs aren't exactly pushing the envelope of graphics quality or physics simulation, so it's not as big of an issue.
- WrtCdEvrydy 7y agoPayload trimming is always the answer. Only update state that has changed...
- vvanders 7y agoSame way you don't render the whole world each frame: https://en.wikipedia.org/wiki/Potentially_visible_set https://en.wikipedia.org/wiki/Potentially_visible_set Also 3D data structures, which http://realtimecollisiondetection.net/ http://realtimecollisiondetection.net/ is still my go-to book.
- inimino 7y agoYou can do a lot with the right, simple architecture and a programming language at the right level of abstraction.
- Jasper_ 7y agoIn memory. MMO servers store all world state in memory, and each server has a capacity usually in the 10,000 player range. You'd be impressed how fast computers actually are -- 10,000 objects isn't actually that many. Since the server knows where all clients know, the server knows what the client can see, and the server only has to update the client with relevant information, like the 100 closest players to it.
- TylerE 7y agoGenerally the server does not in fact know what all the players are doing. They're sharded at the most granular possible level (typically a zone or instance) so any server instance knows about no more than 50-100 players.
- jmnicolas 7y ago> 10,000 objects isn't actually that many Yeah but these 10k objects are containing themselves many more objects (item inventory, proximity mobs etc).
- RussianCow 7y agoNot just that, but you have to do physics and other calculations on each object and even between objects many times per second. So if your server handles 20 ticks per second, you only have a budget of 50ms per tick. Even on a beefy, many-core server, that's a lot to do in not a lot of time, and you can't afford to have any inconsistencies with performance (like GC stalling for several ticks).
- sven_n 7y agoUsually, you keep all the state in memory and save at specific points/actions to a database. Then, not all state is shared with all thousand players, but only within a visible range. And then, not every kind of state is shared with other players. In the end it’s manageable with simple TCP or custom UDP connections.
- binthere 7y agoClients in MMOs don't need the entire state, just the state in a small area around the player's location. Some times it works like chat channel with a limited number of maximum players. When the limit is reached, player are put into different channels, so the state of one channel doesn't need to communicated to other players.
- throwaway744678 7y agoAs said before, different type of MMO use different technologies. I used to work on the server part of a (yet to be released) MMO game; we described the technology a bit in the following video [1]. A few things to consider: - the amount of information to be sent from the server grows quadratically with the number of clients (eg. if 100 players all 'see' each others, you naively would have to send 100*100 updates per server tick); the data received by each client only grows linearly, though - obviously these are kept in memory, and persistent data is flushed if needed to a permanent storage - one can reduce the quantity of information by: + distance: when a player (an object) is far away, it may get invisible (too far) or degraded (updated only every N ticks, low quality version of the assets sent/displayed) + number of entities around: when a lot of players are grouped closely (think a crowd), you can also degrade the information for those further away, even if they are close to the viewer in absolute value, since they are 'hidden' by others. + compression tricks: send deltas instead of absolute values for position (smaller numbers can be compressed more than larger ones), don't include the properties that did not change, etc. - at some point, you (may) need to split the work on several servers, and have an efficient algorithm to split the game space, and synchronise your servers [1] https://www.youtube.com/watch?v=QeZtqoydXpc https://www.youtube.com/watch?v=QeZtqoydXpc
- anonymousab 7y agoSharding, and many other finer (game and architectural) design and implementation details. Few MMOs actually have millions of simultaneous players in the same instance of the world or boss or raid at the same time. The MMO-lite I worked on was made to be as horizontally scalable as possible, and had extreme incentives built into the gameplay to push players towards actions and areas of the game universe that would more fully leverage benefits of the scaling trade-offs we made. Being able to segment and slice the outbound data from your clusters (and/or what the client requests) - that is, the data and game state equivalent of occlusion culling - goes a long way.
- skelet 7y agoNot a game dev but I guess you could go quite far with just an IRC server. Crosshatch your world in chat rooms, with a bot in each one. A player sends a command to his current chat room; the bot validates the player position and current action. Other players listen to bot responses in all nine chatrooms around them.
- Topgamer7 7y agoLovely to see Blender in a screenshot for the top link :)
- timwaagh 7y agoI think a mmorts is pretty unique. If you manage to spice up those menus a little bit and get the balance right (some) people will buy it for sure
- hombre_fatal 7y agoI used to play a now-defunct MMORTS back in the day with Warcraft3-looking graphics: Ballerium (https://www.youtube.com/watch?v=WgIk8HQPnP4 https://www.youtube.com/watch?v=WgIk8HQPnP4). Shattered Galaxy is also MMORTS and is still alive: https://www.youtube.com/watch?v=HBY-WGFQk98 https://www.youtube.com/watch?v=HBY-WGFQk98 Really hard game concept to get right, though. Something that was cool about Ballerium was that it was one big open world. I think Shattered Galaxy was a lot more instanced, but I didn't play it much. Definitely room for more exploration in the space.
- crtlaltdel 7y agolove it! i spent YEARS playing and coding for MUDs and ran a few games as a solo admin/coder. imo it is so very satisfying to watch the global chat channels after a new feature/area/weapon/mob gets rolled out...and what the community thinks of it. i can recall more than one occasion where a well planned quest resulted in interesting dynamics after players started interacting with it. an example; one quest would add an "invisible" token object to a player's inventory. quest stages would check for and modify the state of the token when it was "present". in this particular MUD there was PK...and eventually someone decided to carry the corpse of someone on the quest into an area where you must have the token to enter...and they "walked" right in. none of us had thought of that potential "use-case"...and it exposed a really interesting game play mechanic that we never knew existed...the equivalent of cutting off the guards finger to pass biometric locks in a spy story... ...damn...its hard not to want to start another MUD... EDIT: i know this post is NOT a MUD project...but the solo-MMO dev story just struck a nostalgia chord in me
- Diederich 7y agoAwesome...I also spent years playing/coding/admining MUDs, though the one I was writing never got very large. The mechanics you mentioned are interesting; what kind of MUD was it? I got hooked on DIKU MUDs in 1990 or so, and still play https://mume.org:4143/ https://mume.org:4143/ from time to time.
- crtlaltdel 7y agoi did a good amount of work on merc/rom based games...but it was lpmud that i really got into!
- Diederich 7y ago> lpmud Yes, I remember those, and played with them a bit. They were a far more flexible, dynamic environment, but 'back then' (in the early 90s), as I recall, the performance hit associated with LP MUDs (inherently dynamic) vs. DIKU MUDs (inherently static) was pretty large, and available memory/CPU cycles were at a premium. Mostly though I think I preferred DIKU MUDs because I happened to start with them, just by chance. Good times, thanks for sharing!
- blorenz 7y agoI really admire the determination of the One Man. Scrolling to the oldest updates reveals that his has been a passion since at least 2010. What a mark of constitution and fortitude to keep this passion burning. It is remarkable what his 2010 self knew and what his 2019 has learned in those years. This is his opus. Keep up the good fight!
- thrax 7y agoEspecially all the dev log updates with zero comments. It takes a strong will to keep pushing in the face of perceived apathy!
- OneManMMO 7y agoI always knew I was building a cool thing. And a MMO by one guy is a hard sell until it is finished and amazing looking. People have always been supportive, they just don't post on my blog much.
- OneManMMO 7y agoThank you.
- seanwilson 7y agoI remember ages ago it was common to see the advice "don't try to create your own MMO" as they were one of the most complex game dev projects you could do. Are MMOs any easier to make now given the libraries and cloud services that exist today?
- anonymousab 7y agoAs you suggest, there's much more legwork already done on both the technical and design fronts that people can leverage. But there's a wide difference between making a proof of concept and making something that scales+people want to play. The former is much more tractable these days, and the latter - ignoring the difficulty of competition - is a bit easier but still a hard problem. Content is somewhat easier to create, but still hard to scale (and quality demands are higher to match the improved general capabilities and expectations).
- munificent 7y agoIt's easier to make a 2010-era MMO today than it was today. The problem is that "MMO" today now means a 2019-era MMO. Player expectations rise in sync with technology advances, faster even. So if you're targeting a AAA, tech-heavy genre like an MMO, it never gets easier.
- rodolphoarruda 7y agoI agree. I have a long time design of an MMO resting in my computer. It is a text-based game that runs presidential elections in a corrupt country in Latin America. There are 4 parties competing and the winner, of course, it the one whose candidate is finally elected. The biggest design problem it had was: how to implement massive voting, programmatic. So maybe today, the 2019-era as you mentioned, using AI somehow could be the solution.
- srpinto 7y agoWould you be willing to share it? As a latin american this really interests me.
- 7y ago
- justusthane 7y agoOdd that http://theimperialrealm.com/index.html http://theimperialrealm.com/index.html and http://theimperialrealm.com http://theimperialrealm.com are two different destinations. The former is the home page which contains an intro video and more information about the game itself, while the latter is the blog. He has two index files; index.html and index.php. The server sends index.php by default, which is where the blog is.
- OneManMMO 7y agoIt doesn't do that for me...
- craze3 7y agoLooks awesome! I actually created a MMO prototype before, just by myself. A lot of people told me not it's impossible to do, but it was actually fairly easy. I used Babylon.js for the 3D game/controls, and I imported free 3D assets from various asset stores for the content. The backend was a simple socket server written in Node.js with socket.io connected to the web frontend via JS using the standard WebSockets API. I got realtime character movement, turning, & jumping implemented pretty quickly. Content became a bottleneck so I stopped developing, but I hope to finish it up sometime in the near future. Good luck!
- glouwbug 7y agocontent is almost always the bottleneck in any form of gamedev
- grogenaut 7y agoWell until you hire an army, then it's quality, and tooling to manage content, then it's back to creative direction as the blocker.
- platz 7y agothat's why I find self-limiting forms of gamedev more interesting than AAA games. I'd rather play a half-finished roguelike, gamejam games e.g. itch.io or Ludum Dare , indie games, concept games. You feel the creativity more. I don't care for a scripted piece of entertainment. I want to explore different game mechanics and explore ways of interacting. AAA games almost never give you that.
- hombre_fatal 7y ago> A lot of people told me not it's impossible to do, but it was actually fairly easy. A weekendware prototype isn't what people are talking about when they say gamedev/MMOs are hard. It's 0.001% of the work, it's trivial. Just as you, too, stopped at the actual hard part: building the game.
- jerf 7y ago
- dpedu 7y agoWow, looks like he's been at it for a decade. I'm curious how much game development technology has changed over this time and if it outpaces development.
- Dude2029 7y agoProbably some Unity3D starter pack and something like Improbable will get you there in few evenings.
- RussianCow 7y agoYou vastly underestimate the amount of work it takes to build a game, even with all the excellent tooling out there.
- georgeecollins 7y agoThis is a great example of marketing the dream of game development. You can make the argument that Star Citizen is a completely different version of the same thing-- I mean in that it is not the game you love it is the making of it. This guy is tapping into what we (on this forum) all love about game design, all the projects people have started or tried in our lives. It is such a drag to make games with huge teams, with marketing and technical compromises, design by committee. It drains the joy of developers and it bores a lot of the audience. This is the dream of one person pursuing their passion.
- DizzyDoo 7y agoA number of years ago I completed an MMO project by myself (art, programming, marketing, etc). It was fun! Real-time server was in Python Twisted, lots of Cython to speed up the deepest parts of the game loop. Django for the main website. The client was Flash (this was back in 2013, when it was still kinda a thing), which meant anyone could jump in really quickly, but technically that was challenging for a real-time 2D Zelda-style game because you were limited to TCP rather than UDP and the server has to be 100% authoritative since opening up Flash swf's or sniffing packets is so very easy. The server could support 250 people, and I had some fun tooling that let me spin up virtual players to stress-test it. Fun to remember! The thing with MMO projects that really gets you is, even after you've got a mature client and server you still need to put together enough content, which if you're level designing/writing/painting everything yourself, is an enormous quantity of work. If you don't want players to run out of quests and whatnot you've probably got to lean towards a sandbox experience, and this MMORTS is a particularly interesting way to go.
- jplayer01 7y agoEven teams with hundreds of developers aren't able to put out enough content to keep players satisfied without resorting to artificial limits. Maybe it's a problem with how these games and the tools are designed, but I've always believed something like EVE or Second Life is the only real viable paradigm for MMOs. Give players the tools to build their own experience. I recently had some time off and ended up burning through nearly all of Destiny 2's content inside of 2-3 weeks. Hell, I can jump into WoW and be raid ready inside of a week or two, and just go straight into the latest raid. I think there's something fundamentally very wrong with how modern MMOS are designed, but it doesn't seem like anybody is interested in properly exploring the solution space.
- DizzyDoo 7y agoIt's true, and it's why so many MMO's find themselves leaning into adding that grind to leveling, or a repetition in the end-game loop. The days of every developer taking a crack at creating a 'WOW killer' (and all of them failing) have thankfully past, I'm sure there are a bunch of traditional MMO's that are still trucking along nicely (Final Fantasy 15, Black Desert Online, the new Maple Story) but that sort of Quest Content driven game isn't so predominant nowadays (outside of nostalgia trips like WOW Classic and Runescape Classic). I can't say I miss them too much?
- wuliwong 7y agoSuper cool, I've had plans for games I want to build out over a long period of iterations percolating for a while now. I will keep following this project for sure.
- cptaj 7y agoThis guy remembers the old gamefaqs boards and probably luelinks
- chillaxtian 7y agohunter2
- BryantD 7y agoThis is very cool. In the same vein, I recommend Project Gorgon from Eric Heimburg and Sandra Powers -- a two person MMO, but still pretty cool. Check it out here: https://projectgorgon.com https://projectgorgon.com
- OneManMMO 7y agoTheir game is cool, but their old blog had a lot of great stuff on it, although it's now only available from the wayback machine. https://web.archive.org/web/20160311212030/http://www.eldergame.com/ https://web.archive.org/web/20160311212030/http://www.elderg...
- BryantD 7y agoThank you for finding that! I was looking but failed. It's great stuff. (Disclaimer: I used to work with Eric and Sandra.)
- skocznymroczny 7y agoAn interesting story about a one man MMO project (well, he enlisted help of his wife along the way), is the postmortem for Eternal Lands. It was a popular read on now defunct Devmaster.net website. It's available through Web Archive here: https://web.archive.org/web/20110303214710/http://www.devmaster.net/articles/mmorpg-postmortem/part1.php https://web.archive.org/web/20110303214710/http://www.devmas... It's an interesting throwback to the era before common availability of production-grade game engines like Unreal or Unity, back when everyone worked on their own Direct3D/OpenGL engine.
- umen 7y agokrunker io Is good example of one man building mmo game
- Eiriksmal 7y agoMy favorite one-man (I think?) MMO was Cursors.io: https://news.ycombinator.com/item?id=8477124 https://news.ycombinator.com/item?id=8477124 The genius of that game cannot be overstated. Its ludicrously simple mechanics somehow resulted in emergent gameplay that was deeply affecting.
- umen 7y agoGreat thread , looking for more threads like this one
- deleted 7y ago[deleted]
- Animats 7y agoThe toolkits are getting complete enough to allow individuals or very small teams to roll out an MMO, if you're willing to pay the bills for Spatial OS. Full VR support, even. Big-world support. Powered by Expensive Google Cloud. One of the first: Community Garden.[1] [1] https://www.youtube.com/watch?v=h2XEbJOWkxc https://www.youtube.com/watch?v=h2XEbJOWkxc
- bullen 7y agoI also made not one, but two "almost" OMMMOs (One Coder MMO?): 2001! http://www.rupy.se/raywalk/magequest.html http://www.rupy.se/raywalk/magequest.html (the graphics/sounds are "borrowed") 2011. http://aeonalpha.com http://aeonalpha.com (my neighbor made the music/sounds in exchange of a 960Ti for his Hackintosh) Both use Java, the first one is a mix of Applet/Application that you can try by running this file: http://www.rupy.se/raywalk/client.jar http://www.rupy.se/raywalk/client.jar The second is Application only so you download it here: http://aeonalpha.com/aeon.zip http://aeonalpha.com/aeon.zip I'm working on my third OCMMO: 2021? http://ahoy.rupy.se http://ahoy.rupy.se
- ThalesX 7y agoI like the intro water texture, is it procedurally generated or artistic?
- bullen 7y agoAh, that's artistic and "stolen", so I guess it's not going to be a One Coder MMO: https://medium.com/@gordonnl/wind-waker-graphics-analysis-a0b575a31127 https://medium.com/@gordonnl/wind-waker-graphics-analysis-a0... Actually it won't for sure because the skin mesh animation code was also "stolen" from a former colleague (they will all get mentions though) but I'm a bit ashamed to discover that I'm not good enough to do anything from scratch... at least not the first time around, is this what they call impostor syndrome?
- __s 7y agoAlso make sure to implement your own programming language & OS for the game to run on. While you're at it you should figure out how best to craft transistors to create your own CPU. But don't make use of anyone else's ideas, you should figure this all out on your own. In fact, don't read this comment, it might give you ideas
- bullen 7y agoHaha, way ahead of you on that one, bought a C64 and learning assembly/soldering and looking at how to make my own computer on FPGA (async. CPU) with my own OS/programming language and in parallel to that my own P2P radio internet: http://radiomesh.org http://radiomesh.org Even looked at making my own gerber editor and print my own PCBs with my AxiDraw plotter. On the subject: https://www.youtube.com/watch?v=5ODzO7Lz_pw https://www.youtube.com/watch?v=5ODzO7Lz_pw I looked at your github but nothing is playable out-of-the-box, you could make something presentable?
- serf 7y agofor those interested in 'one-person' MMO projects, check out Xenimus. It's a long-running MMO (from around the Ultima Online era of games) that is developed and ran by a single person. The amount of effort involved in such an ordeal is mind-boggling, personally.
- BinaryIdiot 7y agoI was just about to mention Xenimus. I used to play it after high school every day, the game has been around for over a decade (maybe 2 decades at this point?). It's amazing EJ Thayer has kept it going all this time while going back and forth with having a day job. The graphics may not be AAA but the game play was always pretty fun and the networking code, especially for a single person, ran pretty well. I kinda miss my old character that got de-leveled well over a decade ago. I let the account expire and when I tried returning some years later I couldn't get back into it. RIP Mythical Mage III
- Iv 7y agoLooks nice! MMO RTS nonetheless! A word of advice: if you want to make an easy immense graphical update, add shadows to your vehicles. Even just a dumb, circular flat alpha gradient under each vehicle. You would not believe the amount of immersion this adds.
- Pmop 7y agoBack in the day, I used to play a MMO called Faldon, which was developed mostly by one developer. I'm still astonished by such projects being done by one person, since game development requires so many skills; MMOs takes this to the next level.
- jhj 7y agoMMOs are happily two orders of magnitude easier to write today. Before game engines you can license or get for free really existed, it was just you, the compiler, and a text editor, which rapidly turned into many people, the compiler, your editors, and pain. I worked at Turbine off and on from 2001-2012, and was the MMO game engine tech lead in the time period up to when Lord of the Rings Online and Dungeons & Dragons Online shipped (2003-2005). Both were based on the same game engine core, which was a more or less complete rewrite of everything in the game engine (client and server) from the original Asheron's Call. Many of the concepts carried over, but the implementation was completely different. To this day, I still think this "G2" engine got many things right in its internals that many other game engines (MMO or otherwise) didn't really get, probably because everyone who worked on it was crazy but actually pretty nice and reasonable to work with. Some friends who ended up working at Unity or Epic from Turbine that I've talked with think the same. It certainly made many questionable assumptions as well. I got quite burned out from the rewrite (well over 1 million lines of C++ redone between 5-6ish people) and went part time/remote in 2006, left in 2007, came back in 2009 part time/remote again to help port the stuff to PS3 and Xbox 360 for projects that eventually got cancelled. My last six months (I stopped giving a shit at this point) was doing nothing but porting much of the client code to Mac OS X, which consisted of fixing endless compiler errors and patching up library/API differences in hundreds of thousands of lines of client code. This was actually kind of therapeutic because much of it was mindless. I do smile a bit when realizing that code I wrote on ~16 years ago is still plugging along in some datacenter somewhere and on people's PCs, long after the company and the people who worked on it have scattered to the winds. Many of the core team that worked on it back in that time period went on to found some companies (game or otherwise), are working at places like Google and Facebook, or remained in the industry at Epic Games and Unity and various game studios.
- vehementi 7y agoThanks for this. You may have heard that some time after AC was shut down, an AC server build somehow leaked and the community has now got a basically true/pure emulated server setup now. I can now go back to my first MMO safely whenever :)
- 7y ago
- foxhop 7y agoThis reminds me of Shattered Galaxy http://www.sgalaxy.com/ http://www.sgalaxy.com/ which is a game I played 20 years or so ago which was way ahead of it's time.
- OneManMMO 7y agoHello Hacker News, I wondered why my traffic went all bonkers today. To answer some of your questions: Yes, it is difficult to keep up with modern game tech, but I have lots of friends in the AAA industry who let me know what's going on at the bleeding edge, and I pick my battles. No, you couldn't make a game like Miranda with any off-the-shelf game tech I have seen. Game engines usually only allow one avatar per player, Miranda can have hundreds, theoretically thousands. Miranda is also seamless and single-sharded. The renderer does have soft shadows, but you're right they don't always show up really well. I'll take a look at that. The next update is coming pretty soon with a whole lot of gameplay additions, I just started the playtesting and debugging phase today. Thanks for visiting.