Jump to content

Can we speed up Linda?


SpaceTimeNow

Recommended Posts

 

I have allways been a big fan of atmos beeing "somewhat realisticly" simulated in SS13. Since Linda is around, atmos has become very illogical, to the point of beeing flat out annoying.

 

First off: Yes i do totally understand that linda is way better for the server performance, which makes sense right? Making atmos act a lot slower oviously reduces the stress on the server.

 

Comarision of the two systems:

I have to admit i havn't looked at the exact changes between the previous system (i think it was called ZAS) but from what i have observed and what i gathered from some converstations, the main difference between those two systems appears to be the following:

 

ZAS: When a new gas was intodruced to a room then ZAS would almost instantly distribute the gas equally accross the room.

Linda: When a new gas is introduced then it is only spread to the nearest tiles of the gas source and expands very slowly from tile to tile until i eventually equalizes accross the room.

 

Both system could not be further appart from each other. Both systems obviously can not be called a truely realistic simulation, but at ZAS was believable and Linda is not.

 

Why Linda fails

Linda extremly fails to propperly distribute pressure accross the room, because it has very slowly jump from tile to tile. So Linda allows for totally illogical situations where one part of a room could be a flaming plasma inferno and the other could be open to space at 0kPa and it would take quite some time for this situation to resolve. ZAS would have dealt with fairly quick by constantly equalizing the pressure accross the room instantly and thereby allowing more gases to be vented (deleted) into space.

 

You can easly observe this if you overpressurize a room and slowly move away from the vent while using an atmos scanner and scan every tile. Same oviously happens if you syphon air. The bigger the room gets the more difficult it is to get it to a certain pressure.

 

Why it annoys me so much

Let's say i want to get a room back to 103 pressure, i will set the room to fill in order to speed the process up. The vent starts pushing out air, which will pile up on the vent tile and its neighboring tiles. At a certain point the the atmos controls will show the room at 103 (it' probably the avarege of all tiles in the room) and you stop the fillng and set it to filter, at which point everything should be fine, right? No! You still have this giant pile of pressure on your vent and the surrounding tiles wich will continue to slowly creep around the room and you can see the atmos alert suddenly showing you an overpressurization. Setting of this rediculous loop where you start overshooting the syphoning or filling the area. You spend a ridiculous amount of time guesstimating and waiting for it to equalize.

 

What's my intention with all this?

The easy and lazy fix:

Issn't it possible to speed up Linda to where it tries to spread air more frequently with neighboring tiles or where it simply spreads a higher amount of gas? Probably this solution will be difficult to balance because if it's to fast then plasma firest would have a bigger impact on the station again. But couldn't that be counteracted by simple making floor tiles melt faster, a plasma fire would fairly quick kill itsself by venting itself into space.

 

The way more elaborate fix:

Seperating the spreading of gas from the spreading of pressure, making pressure equalize way faster accross the room but keep the slow speed on the actual gases spreading. In other words, the gas (let's say plasma) is comming out of the vent and pushes the other gases away. So you have a high amount of toxin near the vent and almost pure air at the far end of the room.

 

 

I know there aren't that much atmos enthusiasts and this might no be such a hot topic for most of you, but i would really appreciate if we could do something about this.

 

Link to comment
Share on other sites

  • Replies 76
  • Created
  • Last Reply

Top Posters In This Topic

 

I'm certainly in agreement that atmos needs to be a lot faster to be realistic and get rid of several gameplay issues it creates (atmos tech being pretty much useless, decompression not working, plasma spread far too slow), but I believe the reason this hasn't already been done is that speeding up LINDA increases the server load to the same degree of the speed increase (even doubling it would have severe impact on the amount of lag), along with speeding up LINDA being an in-depth process rather than just changing some values.

 

Without a complete rework of atmos I think it's going to be an ongoing problem that everyone's going to have to deal with.

 

Link to comment
Share on other sites

Like i said, didn't acutally look at the code and i don't know enough about how byond works, so i can't really know what actually happens there and at what point it becomes a performance issue. But i fail to see how it would impact performance if Linda would just move more gas every time she moves gas. Nowadays the time it takes to multiply a value should be negligible.

Link to comment
Share on other sites

 

Why it annoys me so much

*snip*

 

This right here is a problem with Air Alarms, not with LINDA, as they weren't designed or programmed for LINDA's way of handling atmos, nor do I think they were meant for ZAS either.

 

Also from how the coders talk of Atmos code, it touches an expansive part of the code of the game to the point it is a hellish nightmare to do anything with.

 

Link to comment
Share on other sites

 

We actually could speed LINDA up fairly easily, just one value.

 

However, the performance impact from that is extremely significant, and problems would arise as pipes stopped working as fast as atmospherics proceessed, and things like the rooms not equalizing would still be an issue. We aren't going to get ZAS-like atmospherics using LINDA, it's not designed to be that violent.

 

Link to comment
Share on other sites

 

Why it annoys me so much

*snip*

 

This right here is a problem with Air Alarms, not with LINDA, as they weren't designed or programmed for LINDA's way of handling atmos, nor do I think they were meant for ZAS either.

 

Also from how the coders talk of Atmos code, it touches an expansive part of the code of the game to the point it is a hellish nightmare to do anything with.

 

It's not quite that easy, it obviously has other gameplay implications too, the air alarm part was just an example to showcase what happens. We are talking about the physics beeing faulty (or so slow to the point where they appear to be faulty) in a game that is heavily based on it. It makes no sense to have two completely different atmospheres inside the same room. In addion to this, hull breaches have become a non issue, you litterally could just add another vent in order to keep te atmosphere stable. And on the flip site, fires are also a non issue.

 

Atmospherics was an essential part of what made ss14 special, now it has devolved to merely a gimmick. I think this is incredibly sad, since i really loved doing atmos related stuff.

 

Edited by Guest
Link to comment
Share on other sites

 

We actually could speed LINDA up fairly easily, just one value.

 

However, the performance impact from that is extremely significant, and problems would arise as pipes stopped working as fast as atmospherics proceessed, and things like the rooms not equalizing would still be an issue. We aren't going to get ZAS-like atmospherics using LINDA, it's not designed to be that violent.

Well that point i don't really understand. Correct me if i am wrong, but Linda has to work something like this:

Every 100 ticks (or what ever the equivalent for byond is) Linda somehow moves "10 units of gas" from tile A to tile B.

 

There are two obvious ways to speed up the process:

1. make Linda move "10 units of gas" every 20 ticks (obvious performance impact, because Linda needs to process 5 times as often)

2. make Linda move "100 units of gas" every 100 ticks

 

(Obviously the numbers are completely made up to explain my point)

 

How is No. 2 impacting performance and can't we maybe use a mixture of the two to get a more resonable atmos situation while not impacting performance to much?

 

Link to comment
Share on other sites

 

It sounds like an exponential complexity thing to me. If you want to make it move faster, it means it's reaching more tiles faster. So, say, you want it to instead of update the surrounding tiles at each tick, you want it to make it update the two surrounding tiles, you just increased the complexity of the update by a power of 2. Which is bad.

 

At least that's how I think atmos is working now and why it's a mess to make it faster. I haven't looked at the code, just based myself on what everyone says it's behavior is

 

Link to comment
Share on other sites

 

It sounds like an exponential complexity thing to me. If you want to make it move faster, it means it's reaching more tiles faster. So, say, you want it to instead of update the surrounding tiles at each tick, you want it to make it update the two surrounding tiles, you just increased the complexity of the update by a power of 2. Which is bad.

 

At least that's how I think atmos is working now and why it's a mess to make it faster. I haven't looked at the code, just based myself on what everyone says it's behavior is

I get where you comming from but it already distributes gases everywhere, just a smaller amount at a time, so it needs to run the code anyway, i don't think increasing the amount that is transported will cause much of a difference in performance.

 

I am glad to be proven wrong but most people seem to go of what they heard from other people, which in turn probably heard it from someone else too :). I would really appreciate if someone could get some hard data on that. I would do it myself but i don't know shit about byond coding, compiling and running a testserver. And frankly i don't have the time to get into that, much less for actually coding it.

 

Link to comment
Share on other sites

 

There are two obvious ways to speed up the process:

1. make Linda move "10 units of gas" every 20 ticks (obvious performance impact, because Linda needs to process 5 times as often)

2. make Linda move "100 units of gas" every 100 ticks

 

(Obviously the numbers are completely made up to explain my point)

 

How is No. 2 impacting performance and can't we maybe use a mixture of the two to get a more resonable atmos situation while not impacting performance to much?

 

As a quick, super basic explanation, LINDA works based on turfs/tiles; if a turf accumulates enough gas/temperature/etc difference compared to the turfs/tiles around it, it becomes active (I believe it also activates the turfs/tiles around it as well; Tiger would know the specifics better than me). When a turf is active, it will be processed by the server's CPU on the next tick.

 

When it is processed it runs the mathematical calculations on ALL active turfs; those turfs that weren't "lit up" are not processed....meaning if there's zero atmospheric activity, then, hypothetically, LINDA doesn't process at all every tick.

 

Naturally speaking, the more active turfs there are, the longer the CPU has to spend processing them...and the longer it spends processing them, the less resources are available to process other things before it starts impacting the server's performance.

 

So, simply put, #2 isn't possible because that's just not how LINDA works; LINDA already processes all active turfs/tiles on the map every single tick....which means, if we want to speed LINDA up, we really only have two choices:

 

(1) Make LINDA process twice (or more) each tick (effectively double the cost of LINDA).

(2) Increase how often LINDA processes (currently it processes once every two seconds).

 

Either case will move more gas in less time---both, however, will utilize more CPU than it currently does, which gives far less wiggle room for cutting down on lag from other processes.

 

 

More-over, if we want to speed up LINDA, properly, we'd have to speed up pipe networks, as well, so they're not out of sync and pipes don't get overwhelmed by the (now) much faster flowing gas...which, as you've probably guessed, by now, requires even more processing power on the CPU's part.

 

 

Speeding up LINDA (and Pipenets) is super easy; only two numbers really need to be changed to do so---it's more of a matter of "can we afford to increase LINDA's speed right now?" If we could, then I wouldn't be opposed to increasing LINDA's speed quite dramatically, but if it's going to bog the server down and induce considerable lag---then it's something that would be unwise to implement.

 

I'm definitely not opposed to faster LINDA based on principle or game mechanics---it's mostly about performance and having an overall higher level of enjoyment for SS13 for a greater number of players (long term).

 

edit: guess that wasn't so short---oops.

 

Link to comment
Share on other sites

 

Thanks for the detailed answer.

 

So from what i gather Linda waits until the difference of pressure is worth calculating and then "moves gas". I would need more information about what actually happens when it moves gas, but i have the subjective feeling that this "moving gas" is terribly inefficient and just transfers tiny amounts of pressure, because two tiles next to each other can have quiet some difference in pressure for quiet some time. It just seem to keep transferring tiny amount of pressure over and over, if we would transfer more gas at once it would resolve the entire situation much faster and probably in less cpu cycles.

 

In other words: You guys are saying it takes x amount of time to dig a hole and the only way to dig this hole in less amount of time is to dig more often. I don't understand why we can't use a bigger shovel and move more dirt at a time.

 

Well i am probably unaware of what actually happens, when Linda happens. I just hope we can turn Linda into something that actually does what it's supposed to do. I just had a round where the windows at the brig shuttle were breached for quite some time (probably like 15 minutes or more) and the air alarms in the long hallway were stating blinking yellow. I mean come on, in it's current form Linda is a non solution.

 

Link to comment
Share on other sites

 

I just did a pretty simple test on paradise. I sucked the air out of of this room, obviously i didn't want to wait for linda to get a complete room to 0kPa. So the room was around 5 to 15 kPa -ish, for the sake of it, let's call that an empty room.

 

(Ignore the unmarked vents, they hat no gas to release)

 

 

I hit the refil option on the air controls and the tiles with the blue marked vents where instantly on 300 kPa, i immediatly set the vents and scrubbers to off. So there is no more outside influence of gas beeing pumped in or out.

 

grEQI6S.png?1

 

Linda needed 90 seconds to equalize all tiles to around 90 to 95kPa -ish!!

 

Keep in mind this is almost the perfect situation for Linda, fill a small room, with a overdimensioned amount of vents and without any walls or glass inbetween creating bottlenecks.

 

Link to comment
Share on other sites

 

Last test before the shuttle arrives (room as also only half emptyish when i started filling it):

A little bit more obstruction in a small room ca 150 secs..

 

MOssCVu.png?1

 

Just think about how long it would take if this room had no own working vent and would have to fill via the bottleneck of the one airlock...

 

Link to comment
Share on other sites

I don't want to change this subject from LINDA but what are the chances ZAS could be reincorporated? I remember it being merciless when exposed to space, sucking out all the air and leaving you to die. I kind of miss it I guess.

Link to comment
Share on other sites

 

I don't want to change this subject from LINDA but what are the chances ZAS could be reincorporated? I remember it being merciless when exposed to space, sucking out all the air and leaving you to die. I kind of miss it I guess.

A lot of people (including me.) miss it and wish we still had it, but it isn't coming back.

The reason is because LINDA is less buggy.

 

Link to comment
Share on other sites

 

I don't want to change this subject from LINDA but what are the chances ZAS could be reincorporated? I remember it being merciless when exposed to space, sucking out all the air and leaving you to die. I kind of miss it I guess.

A lot of people (including me.) miss it and wish we still had it, but it isn't coming back.

The reason is because LINDA is less buggy.

I would like to know as well, since I'm running my own server. If I can get that ZAS-style rapid depressurization you see on, say, Bay12 back, I'd be very happy.

 

Link to comment
Share on other sites

 

Not to burst your bubble of glitter, but zas has it's own problems. Linda is better for paradise's implementation on many fronts, and there are quite a number of in development as well as already implenented changes on tgstation that severely speed up and dynamic Linda.

Coming from someone who was in the yoniguni chanel when zuhayr originally chose Linda and ported it from paradise; paradise's implementation of Linda is hacky, and incomplete.

 

Link to comment
Share on other sites

  • 4 weeks later...

 

We actually could speed LINDA up fairly easily, just one value.

 

However, the performance impact from that is extremely significant, and problems would arise as pipes stopped working as fast as atmospherics proceessed, and things like the rooms not equalizing would still be an issue. We aren't going to get ZAS-like atmospherics using LINDA, it's not designed to be that violent.

 

This is what I find hilarious about the assertion that LINDA is less computationally intensive than ZAS.

 

No, it isn't! ZAS does pressure changes like this basically instantly. To get LINDA to the same speed you have to be damn near running a super computer. What you guys have is a more fine-grained, more detailed system that processes atmos at a MUCH slower rate than ZAS.

 

You didn't add something more efficient, you added something less efficient and then dramatically underclocked it so it ran faster than the significantly more efficient ZAS system, but worked LESS and declared that a success. Just thinking about this actually being implemented is blowing my mind. And now you've got an atmos system where there's hardly even a point to having atmos. Vacuum is rarely a threat, pressure and atmospheric composition changes take an eternity; open windows can be ignored through entire shifts just because LINDA can't process atmos changes in reasonable timeframes. In return, LINDA gives us... spess wind? We lose one of the core mechanical elements of the game for slightly more efficient spess wind!?

 

Just, what was the bloody point?

 

The atmos system doesn't even create serious amounts of lag to begin with; ZAS was fine before and is fine now, even with all its bugs - and if you were REALLY concerned about efficiency you would have been better off cleaning up ZAS code than switching over to LINDA.

 

Link to comment
Share on other sites

Calculation speed doesn't equal intensiveness, ZAS wasn't better in any way with its "lets fill up the entirety of the central hallways with plasma because a few doors are open"

Link to comment
Share on other sites

 

Calculation speed doesn't equal intensiveness, ZAS wasn't better in any way with its "lets fill up the entirety of the central hallways with plasma because a few doors are open"

That has nothing to do with computation speed or efficiency. That is a gameplay complaint.

 

Quite frankly there's better ways of dealing with that than removing a core gameplay mechanic and much loved feature.

 

Link to comment
Share on other sites

 

LINDA is terrible. I won't get bogged down in an argument about why though.

I will - I do, but I gotta keep reminding myself that most of the coders here have highly selective hearing, especially on pet projects.

 

Jesus, it just isn't worth it. I feel like I get dumber reading half the things that get added or changed with the code and there's no way to make these people SEE that their awesome cool idea actually isn't that as awesome as they think it is.

 

Man, I've heard all the excuses before: Go make your own server. Go do your own coding. I'm doing this for free so suck my dick; you don't deserve my code.

 

Fuck. I gotta jam. I'm getting too worked up over this crap.

 

Link to comment
Share on other sites

 

Sometimes I sit back and wonder what it would be like if /tg/ had ZAS.

Going back a few years now - but I remember when I first encountered ZAS on baystation. I was a /tg/ admin at the time and a few of us (failcakes, yina, couple other players) decided to hop over to bay and have some fun with their features.

 

First thing I remember was opening an airlock and getting sucked out into space at mach speed. It was at that moment that I fell in love with ZAS. It did everything I expected atmospheric depressurization to do. (This was also back when baystation was still a multi-level map.)

 

Everyone we brought over to play around on bay usually said the same thing: ZAS is awesome and hilarious.

I think a few coders were onboard with the idea of having it on /tg/, but nobody wanted to touch atmos code to port it over because that shit's magnets.

 

ZAS also wound up being one of the main reasons I started playing on paradise, and (was) another reason I preferred paradise over /tg/'s codebase.

 

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Terms of Use