Jump to content

ONI multiplayer


Recommended Posts

2 hours ago, KittenIsAGeek said:

The information required to make what's on the screen for ONI is .. massive.  At 1080 resolution I have 72x40 cells.  Each cell can contain multiple things (oxygen, ladder, gas pipe, liquid pipe, shipping rail, electric wire, debris (multiple stacks), critters, dupes)... Each object in the cell has its own attributes such as mass, temperature, etc.  Many of those attributes are updated multiple times per second, and many of the attributes are necessary for drawing the screen.  If you're wanting to pass all that information to the clients, you're going to quickly run into a bottleneck.

Many of these values to update extremely regularly, but you don't need to see all the updates.  The appearance of sandstone debris does not change when it goes from 30 C to 30.1 C, so why should the client be sent that information unless we ask for it?  Dupe positions are needed, but they also are predictable with a path, so the client can display the dupes on the projected path until they are told otherwise.  Occasionally, they might do a sort of jittery teleport if their path changes, but that wouldn't be too bad considering they already do that.  Same with critters.  My point is the map does not visually change very frequently, so you only have to update when it does or when the client does a query on it.

You do make a good point about the GPU though.  It is hardly used as is, so if it were used in this way, there would be almost no loss of performance.  But this results in a text problem where if you have a bad connection and it reduces the resolution, then you may not be able to read the text.  If you can't read the text, you can't play the game.

47 minutes ago, KittenIsAGeek said:

Hypothetical future: ONI allows trading between bases and two minutes later players are inundated with trade requests. "5 tons steel, $5!!"  "Gimme super coolant! Plzkthx!" "Why aren't you helping me?"  ... ONI reverses patch allowing trades and everyone breathes a collective sigh of relief.

$5 for 5 tons of steel?  Steel prices are out of control.  But I do agree that trading feels a bit redundant in this game and I see little benefit.

Link to comment
Share on other sites

1 minute ago, Zarquan said:

Who on earth would pay $5 for 5 tons of steel?  That's crazy.  

IDK. I have that exact same reaction to just about every MMORPG I play.  Invariably I have to regularly block people advertising selling game materials anyone can get.  I didn't intend anyone to take the statement literally -- it was meant to be obviously absurd.

Link to comment
Share on other sites

3 hours ago, KittenIsAGeek said:

IDK. I have that exact same reaction to just about every MMORPG I play.  Invariably I have to regularly block people advertising selling game materials anyone can get.  I didn't intend anyone to take the statement literally -- it was meant to be obviously absurd.

Ah, yes. I have made similar experiences. People do not understand supply & demand and are either far too willing exploiting themselves (hence killing prices) or demand far too low prices (hence killing prices). In actual reality, where you have significant running expenses, most of the MMO traders would be bankrupt within a few weeks at most. Completely removes the fun from trading. And then you have the bot-farmers that understand even less and kill prices completely because they flood the markets. 

I have absolutely no interest in such a trade system.

5 hours ago, KittenIsAGeek said:

The information required to make what's on the screen for ONI is .. massive. 

The data itself is probably not the problem. It is how everything is connected. For the data, think how long saving takes. And for the connections, think how long loading takes.

Link to comment
Share on other sites

21 hours ago, KittenIsAGeek said:

Hypothetical future: ONI allows trading between bases and two minutes later players are inundated with trade requests. "5 tons steel, $5!!"  "Gimme super coolant! Plzkthx!" "Why aren't you helping me?"  ... ONI reverses patch allowing trades and everyone breathes a collective sigh of relief.

that sounds terrifying, yeah I see why that'd be problematic.

Link to comment
Share on other sites

17 hours ago, Gurgel said:

The data itself is probably not the problem. It is how everything is connected. For the data, think how long saving takes. And for the connections, think how long loading takes.

The data is important, arguably more important than latency.  As long as the UI feels responsive, I think most players would accept it.  By responsive UI, I mean that when you click a build order, it appears on your screen quickly, even though the game may not know about it for a bit.  ONI does not require reaction times or anything like that.  Or, more to the point, if it does, you are probably doing something wrong.

Kitten and I are concerned about data in different ways.  I think pure video streaming can lead to compression artifacts or throttling making the text unreadable, thereby making the game completely unplayable due to resolution down scaling (because of all the small text in the game).  To experience this effect, watch an ONI youtube video with the resolution set low. 

But Kitten thinks my solution will use too much data and thinks it will hurt performance on the game, which is a very reasonable concern. 

I think a hybrid approach may be in order.  Perhaps a video for the basic screen and overlays, but when a client clicks on an object, it does a data query for what is on that tile and displays the text locally.

Link to comment
Share on other sites

2 hours ago, Zarquan said:

I think a hybrid approach may be in order.  Perhaps a video for the basic screen and overlays, but when a client clicks on an object, it does a data query for what is on that tile and displays the text locally.

That's a possibility.  Do the major graphics draws on the server's GPU and stream them, but do the text rendering overlays on the client.  That way you don't have to transfer all the objects, just the ones that the player wants info about.

Link to comment
Share on other sites

Just now, KittenIsAGeek said:

That's a possibility.  Do the major graphics draws on the server's GPU and stream them, but do the text rendering overlays on the client.  That way you don't have to transfer all the objects, just the ones that the player wants info about.

But you would have to be careful.  The simple mouse over appears to create a little interface for each object, even if there are thousands of objects.  I like one tile ranches, and the game freezes if I accidentally mouse over the critters.

Honestly, I think this is a bad thing for the game to be doing period, as most of them are drawn off screen, so why make them?  Just indicate that there are more objects without elaborating.

Link to comment
Share on other sites

5 hours ago, minespatch said:

Why do people want ONI multiplayer???

Because, aehm, "Multiplayer!"

The sad thing is that the multiplayer hype basically started as a stop-gap for MMOs and the like that were lacking in content. Did not work, at least the ones I tried were still boring. There are things suitable for multiplayer and there are things that are really not. And there are things were it is a huge effort on the development-side but adds very little. ONI is in the last class.

 

Link to comment
Share on other sites

i think it'd be sweet to build a base with a friend or two, dunno why some people seem so confused about that concept, playing with friends is nice

no clue about the specifics of the coding and all that

to the guy that was like "ok who owns the meat of the step cousin of my hatch" well i think u just make it like that : no one "owns" anything. like ur name isnt on anything. everyone can grab the meat on the ground. u play with friends and youre all trying to survive together anyway, like dst

Link to comment
Share on other sites

3 hours ago, Tristiss said:

to the guy that was like "ok who owns the meat of the step cousin of my hatch" well i think u just make it like that : no one "owns" anything. like ur name isnt on anything. everyone can grab the meat on the ground. u play with friends and youre all trying to survive together anyway, like dst

I wasn't speaking from a player perspective of ownership. I was speaking from the game perspective.  Remember, the OP  originally stated that "jobs started by player X are only filled by player X, and player Y's jobs are their own."  So now you've got a resource problem for the server to handle -- who owns the resources?  

Lets consider a food shortage problem.  Player X is a skilled player and has built a mealwood farm to provide for his dupes.  Since the jobs are generated by buildings he built, his dupes will be the only ones adding dirt to the planter boxes and harvesting the mealwood.  So it stands to reason that the mealwood that gets harvested is for his dupes.  Whomever codes the server has some choices at this point:

  1. Keep things completely separate.  Resources dug out by player X are owned by player X and player Y can't touch them.  This leads to the problem of "what about resources that drop without player action?", such as liquid (water/oil) crushing a world tile into debris.  It would also include the case of wild critter eggs and meat.  Are they FFA (free for all)?  What if player X has wrangled the hatches into their part of the base, but hasn't tamed them?
  2. Share everything.  Nobody 'owns' resources, so if player X digs out a copper vein, player Y can use the copper.  This has the unintended consequence of meaning that the farm player X built to feed his dupes is now being used by player Y.  Player X gets a food shortage, even though he's planned for his dupes.  Not a problem if the two players are already friends and go into the game assuming full cooperation, but it can be frustrating for 'gamer friends' where one feels like they're carrying all the responsibility of keeping the colony alive.
  3. Partial shares.  Food cooked by a building owned by player X is owned by player X.  "Raw" foods are up for grabs.  So this can still be somewhat frustrating if player Y is allowing their dupes to eat Mealwood while player X is trying to cook up liceloaf for the extra calories.  This also means that the game will have to determine what happens with other produced resources, such as the output from metal refineries or oil wells.  Again, speaking to the OP's post, if player X's buildings produce jobs that only player X's dupes can see, then who gets to use the output?

Its something that needs to be considered by whomever decides to make a game multiplayer.  What are the rules for player interactions?  ONI doesn't have any clearly defined goals, aside from the two end-game achievement scenarios, so it makes player interactions somewhat tricky from the coding side of things.  

This reminds me of the original Lemmings on the Amiga back in the 80s. As a one-player game, each level was a puzzle to solve.  You had X number of lemmings that could perform specific and limited skills. The goal was to get as many of your lemmings from the starting point to the ending point.  Some maps required that you get them ALL out.  The two player game became a MUCH different beast.  Each player started on opposite sides of the map, so they crossed paths somewhere in the middle.  It became a game of sabotage -- each player wanted to get as many of their own lemmings out the door as they could while simultaneously preventing as many of the other player's lemmings from reaching their goal.  The game goals were the same, "Get from start to finish," but the style of play changed completely.  Instead of just building a ramp across a chasm, you'd build it so that it prevented your opponent from doing the same.

Anyway, with ONI's lack of goals other than "Survive," the design of the multiplayer game is going to have to think about player interactions on the map.  Which dupes get assigned to which jobs.  Which resources, if any, are "owned."  Do you want to allow only cooperative play, or will it be allowable for player X to send a dupe to deconstruct player Y's steam turbine?  Is the multiplayer going to be networked (how most players assume it will be) or will it be like Lemmings, where you have to players on one computer using opposite sides of the keyboard and an extra mouse?  If its networked, how will players be chosen to participate?  Once the game starts, how will dupes be assigned jobs?  How will resources be managed?  Is it a free-for-all or will there be limitations?  Is pausing allowed?  If so, what are the pausing rules? Will one player be allowed to pause and then forget about the game for a couple of days?  What happens if two players start and then one abandons the game? Do their dupes continue to drain map resources or do they expire?  What if the second player comes back later?  What if the server player quits? 

ONI maps aren't short 15 minute or even 2-hour runs. Its not like doing a boss run on an MMORPG or sabotaging each other across a Lemmings map.  Its a long-play simulation sandbox.  Any multiplayer design will have to account for how to handle periodic game play and, because of this, it will have to account for resource management.

------------------------------------------------

Worst-case scenario: Players are picked from Steam based on who's interested in joining a multiplayer ONI map.  Player A starts the game, so becomes the server even though their system is barely adequate.  Two other players join in.  Player B is player A's friend, and Player C is on Player B's friend's list, but they're not personally friends.  Game starts at three different printing pods with at least one biome separating any particular set of players. 

For the first 10 cycles, there are no player interactions -- they're still isolated.  Game is played at regular speed (controlled by the inexperienced Player A) which frustrates the experienced Player C.  Those 10 cycles take 150 minutes -- 3 and a  half hours.  By this point, Player C has four dupes, a mealwood farm, and has tapped a cool steam vent to produce oxygen for their dupes and power for their base.   Player A has just started researching, so is digging out their biome to find Muckroot to keep from starving.  Their dupes are frequently out of breath, slowing things down even further.  But they're talking over Discord with Player B who is helping them figure out what to do.  Player B is not as far along as Player C, but has a decent setup and doing OK.

Cycle 20 rolls around.  Player C has gotten frustrated by the lag -- Player A's low-resource computer is having a difficult time managing 16 dupes (4 for Player A, and 6 each for Player's B and C) AND transmitting the necessary data to the two clients across the network.  Player C is also frustrated by how slow this game has been going.  Its now 7 hours in and only up to cycle 20!  Their base is mostly self-sustaining, but they've bumped in to Player A's biome and now Player A's dupes are "stealing" Player C's food.  Also, frustratingly, Player A in their pursuit of muckroot has dug into the cool steam vent that Player C tamed much earlier in the game, letting steam escape and overheat his farm.  Player C fixed the problem with some insulated tiles, but it will still be a couple of cycles before the farm cools back down enough to start growing again, adding to the food shortage.  Player B has been so busy trying to help Player A that they're still isolated from everyone else and not really contributing.

Cycle 30: Player C quit at the 10 hour mark to get some sleep, but players A and B are still going.   Player A's 12 GB of RAM is full now, causing Player B to get disconnected when Player A's machine quits sending network data to load from the swap file.  Player B ended up being under Player A, so now they're having to quickly scramble to deal with the tons of CO2 that Player A didn't deal with.   Player A has dug up to space, but hasn't bothered to seal the path behind them, so oxygen is rapidly being lost.  A few cycles later, players A and B call it a night.

Three days later, Player A wants to play some more.  Neither player B nor C are available, but player A starts up anyway and plays another dozen cycles.  A few days later its the weekend and all three are available to play again.  Player C left at cycle 28 and now its cycle 45.  They log in to find that three of their dupes are dead -- two from starvation, one from suffocation.  Player C has had enough and simply quits.  Player B is now getting frustrated with Player A, but they're friends so he keeps trying to help out.  Player C's remaining dupes are still doing their thing consuming resources, but not contributing to the growth of the base.  Player B tries to make up the difference, but without Player A understanding how to manage resources, it isn't going well.  By cycle 50, Player B is spending most of their time just doing damage control.  Reconnect to network, run to the top, seal off the -- reconnect to network -- base from space.  Run to -- reconnect to network --  the bottom and seal off -- reconnect to network -- that volcano Player A blundered into...  At cycle 55, 3 and a half hours after starting the game up again, Player B finally has had enough.  Player A's machine as the server is definitely struggling to handle the physics, pathfinding, and network communications necessary for a multiplayer game.

Player A hops on the message boards and writes a post about how nobody wants to play multiplayer and that they've got a dozen maps and haven't even built their first rocket yet.  They complain about ONI designing such a poor game.  They complain about how others start a game, then quit.  They complain about everything under the sun.  A new player comes along and the first post they see is Player A's, so they get a bad picture of the game and decide to not even bother.  I mean, if the game is that poorly designed, why play?

-----------------

So:  There are a LOT of things that will need to be considered before taking a game like ONI to multiplayer.  You need to handle how players interact, how resources are managed, and where the game is actually run.  It isn't nearly as straightforward and simple as most of the people who want multiplayer make it appear to be.  I guarantee that without significant redesign, a multiplayer version of ONI will fail hard.  It wasn't designed to be multiplayer.  "Simply" adding multiplayer functionality won't work.

Link to comment
Share on other sites

1 hour ago, KittenIsAGeek said:

So:  There are a LOT of things that will need to be considered before taking a game like ONI to multiplayer.  You need to handle how players interact, how resources are managed, and where the game is actually run.  It isn't nearly as straightforward and simple as most of the people who want multiplayer make it appear to be.  I guarantee that without significant redesign, a multiplayer version of ONI will fail hard.  It wasn't designed to be multiplayer.  "Simply" adding multiplayer functionality won't work.

I fully agree. Probably would need an 80% rewrite or so with significant additional work. Software beyond simple business logic is _hard_. I don't know why so many people do not get that.

Link to comment
Share on other sites

On 2/17/2020 at 12:42 PM, KittenIsAGeek said:

IMHO it would be FAR more economical, performance-wise, to have the main machine use the GPU to create a map-sized virtual display, then simply stream the visual data for wherever the players are looking rather than sending the data out to clients to construct their own displays.  Most modern GPUs have video compression/decompression circuits already, so the CPU would only need to worry about passing the stream data to the network.  

Overlays too? Yikes.

Link to comment
Share on other sites

On 2/22/2020 at 3:38 PM, KittenIsAGeek said:

So now you've got a resource problem for the server to handle -- who owns the resources

Almost every point you made regarding ownership including building and wild drops can be handled with a claim system the same as Minecraft uses for anti griefing and team play.
Unfortunately in MP games the speed has to be normalised and disable pausing most likely, which introduces some challenges, otherwise an RTV system could be used for controlling speed and each player gets a limited number of pauses that regen over time, other players get a ready button to unpause and the game unpauses once a timer is reached.
As to coop vs comp, both game modes could be viable and interesting, pop caps might have to be introduced like in most RTS games.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

Please be aware that the content of this thread may be outdated and no longer applicable.

×
  • Create New...