Back to Home / #openttd / 2021 / 06 / Prev Day | Next Day
#openttd IRC Logs for 2021-06-04

---Logopened Fri Jun 04 00:00:13 2021
00:38-!-Gustavo6046 [~Gustavo60@] has quit [Quit: ZNC 1.8.2 -]
00:39-!-Gustavo6046 [~Gustavo60@] has joined #openttd
00:39-!-Gustavo6046 is "Gustavo Rehermann <>" on #openttd #llvm
00:44-!-snail_UES_ [] has quit [Quit: snail_UES_]
00:53-!-Gustavo6046_ [~Gustavo60@] has joined #openttd
00:53-!-Gustavo6046_ is "Gustavo Rehermann <>" on #openttd #llvm
00:57-!-Gustavo6046 [~Gustavo60@] has quit [Ping timeout: 480 seconds]
00:57-!-Gustavo6046_ is now known as Gustavo6046
01:21-!-andythenorth [] has joined #openttd
01:21-!-andythenorth is "andythenorth" on #openttd
01:49-!-andythenorth [] has quit [Quit: andythenorth]
01:55-!-andythenorth [] has joined #openttd
01:55-!-andythenorth is "andythenorth" on #openttd
02:20-!-andythenorth [] has quit [Quit: andythenorth]
02:27-!-andythenorth [] has joined #openttd
02:27-!-andythenorth is "andythenorth" on #openttd
02:45-!-HerzogDeXtEr [] has joined #openttd
02:45-!-HerzogDeXtEr is "purple" on #openttd
03:26-!-y2kboy23_ [] has quit [Quit: ZNC -]
03:26-!-y2kboy23 [] has joined #openttd
03:26-!-y2kboy23 is "Got ZNC?" on #openttd
03:38<@DorpsGek>[OpenTTD/OpenTTD] TrueBrain updated pull request #9333: Codechange: merge guiflags and flags in settings .ini files
03:38<TrueBrain>now easier to review :P
03:40<@DorpsGek>[OpenTTD/OpenTTD] TrueBrain updated pull request #9335: Codechange: make [Save|Load]Settings() behave more like other Save/Load code
04:05-!-sla_ro|master [] has joined #openttd
04:05-!-sla_ro|master is "slamaster" on @#sla #openttd
04:06-!-y2kboy23 [] has quit [Ping timeout: 480 seconds]
04:13-!-y2kboy23 [] has joined #openttd
04:13-!-y2kboy23 is "Got ZNC?" on #openttd
04:28<@DorpsGek>[OpenTTD/OpenTTD] TrueBrain updated pull request #9322: Add: store settings as key->value pair
04:42<@DorpsGek>[OpenTTD/OpenTTD] TrueBrain updated pull request #9322: Add: store settings as key->value pair
04:48-!-nielsm [] has joined #openttd
04:48-!-nielsm is "Niels Martin Hansen" on #openttd
04:59<TrueBrain>fun fact, we always store 256 subsidies in a savegame
04:59<TrueBrain>even if they are all 0 :)
05:00<@peter1138>I went to get more coffee and only came back with a biscoff...
05:00<andythenorth>when we make ships like planes (1 extra cargo in a fake vehicle), that will need savegame bump? :D
05:00<andythenorth>pax + mail in ships when?
05:00<@peter1138>Have you made a PR for it?
05:01<andythenorth>yes, but it's invisible
05:01<andythenorth>possibly imaginary also
05:01<andythenorth>if you imagine reviewing and merging it
05:02<andythenorth>I can imagine playing the game with it
05:02<andythenorth>imaginary features, much less overhead
05:02<@peter1138>Also: splitting a ship up into multiple parts to help with sprite sorting.
05:02<@peter1138>(Locks might be fun)
05:04<andythenorth>bendy ships
05:04-!-namad7 [] has quit [Ping timeout: 480 seconds]
05:05<@peter1138>if you put all parts in the same location and just use sprite offsets to move the, er, sprites... might be actually work.
05:05<TrueBrain>ah, no, subsidies is not a sparse array
05:05<TrueBrain>so it adds 0-entries up till the last valid index
05:05<TrueBrain>that is just silly :P
05:05<andythenorth>is -be the new 'goes it throw out'?
05:05<@peter1138>Just google how to change your name.
05:06-!-andythenorth is now known as andythesouth
05:06-!-andythesouth is now known as andythenorth
05:06<@peter1138>Never Eat Shredded Wheat.
05:11<SpComb>raising elephants is so utterly boring
05:26<TrueBrain>with only access to the savegame, not knowing which savegame version or any of the other details of how the chunk is stored, I can now load it and produce this (small snippet):
05:32<@peter1138>key is stored?
05:35<TrueBrain>solves so many issues :P
05:46-!-EER [] has joined #openttd
05:46-!-EER is "..." on #openttd
05:49<_dp_>TrueBrain, how would it handle setting renames?
05:50<TrueBrain>that is a question with very little context .. for a viewer, that is rather irrelevant
05:50<TrueBrain>as on a savegame itself, "rename" has no meaning
05:53<_dp_>is game still parsing them by index?
05:54<TrueBrain>your head is somewhere, but you forgot to take us along
05:54<TrueBrain>I was talking about being able to load a savegame and showing information from it
05:54<_dp_>yeah, catching up to it myself...
05:55<_dp_>viewing is nice but it's one thing to know how it's called and another what it means :p
05:55<_dp_>serverstat for example
05:55<_dp_>it can use key to get the name but it can't merge them if it's renamed
05:58<_dp_>also was curious whether the game itself uses those key names for parsing settings in any way
05:58<_dp_>when loading savegames
05:59<TrueBrain>this is
06:00<_dp_>I was hoping for tldr xD
06:00<TrueBrain>read the description?
06:01<TrueBrain>I mean, it is like 5 sentences
06:06<_dp_>description doesn't really answer the renaming question...
06:06<_dp_>or rather it does but probably in a wrong way
06:07<_dp_>as old setting would be unknown and ignored
06:09<_dp_>also I don't see types in compat arrays, that feels wrong
06:10<andythenorth> very very much more confusing than irc or discord
06:10<Xaroth>feature request for your serverstat thing; showing the _default_ value, so it's easier to identify what settings are non-standard
06:10<@peter1138>"How is renaming of a setting key handled?"
06:10<Xaroth>and maybe blacklist some settings like generation_seed
06:10<_dp_>Xaroth, done, default is the blue one
06:10<Xaroth>that... is somewhat unclear, but good.
06:11<@peter1138>Hmm, I've got a paused savegame that I can't unpause.
06:12<TrueBrain>peter1138: do I want to know how you managed to do that? :D
06:12<_dp_>gs paused?
06:12<_dp_>pause have several flags
06:12<@peter1138>^ probably this, yes. GameScript paused on server, game saved, GameScript not present locally.
06:13<@peter1138>I guess manual pause should be allowed in this case.
06:14<TrueBrain>it survives a save/load? Lolz
06:14<TrueBrain>that is funny :)
06:15<Xaroth>You'd expect that manual intervention would override an automated process :P
06:29<@Rubidium>I'd expect, as maker of a GameScript that if I pause the game for some good reason the player cannot unpause it, as that would break my functionality
06:30<Xaroth>Or, possibly, try to pause again if the user unpauses, after showing an appropriate warning message explaining _why_ it was paused?
06:30<@Rubidium>similarly, if I were to join a server with min-players = 1 as spectator and then do rcon unpause, should that server then be unpaused? And what if I then leave, how would others know that I unpaused the game manually?
06:30<@Rubidium>or will the others start filing bug reports that autopause on too few players does not work anymore
06:31<Xaroth>Doesn't autopause clearly advertise that it is pausing because a lack of players?
06:31<Xaroth>and can min-players be changed during runtime? iirc it can
06:31<Xaroth>so the user remains in control.
06:32<Xaroth>the user decides that the game should be paused when there is not at least X players, the game clearly informs the user it is pausing because of this reason
06:32<Xaroth>so the user can then change the min-players setting, effectively unpausing the game.
06:32<Xaroth>so that leaves the same scenario
06:33<Xaroth>so yes, I _personally_ think that the user should have a way to overcome a pause.
06:34<Xaroth>after all, it's the user that is playing the game, not the GS.
06:34<@Rubidium>won't resetting/restarting the game script solve it?
06:35<@peter1138>No. There is no gamescript currently active.
06:40<@peter1138>gamelog doesn't mention which gamescript was in use.
06:40<@peter1138>Hmm, maybe I saved since.
06:41<@peter1138>Ah no, the version change is just from loading it.
06:42<andythenorth>ok is officially shite
06:42<andythenorth>do I have to get Slack? I really don't want Slack, something about it gives me the Twitch
06:42<Xaroth>I use slack on a daily basis, it's not _that_ bad
06:43<Xaroth>good collaboration capabilities as well
06:43<Xaroth>you can invite external people and they only have access to the channels you define
06:43<Xaroth>and the people they share channels with
06:45<andythenorth>I don't know what my objection to Slack is
06:45<andythenorth>hard to explain, it's like some aesthetic issue
06:45<Xaroth>Be glad it's not HipChat
06:45<andythenorth>I really just want Discord for Businesss
06:45<andythenorth>I thought was a discord clone
06:46<andythenorth>but it's not, it's weird and broken and fundamentally unusable
06:46<Xaroth>I prefer discord in terms of ease of use, but I wouldn't use it for business stuff
06:46<Xaroth>it doesn't have enough tools to manage it properly
06:47<andythenorth>too many issues
06:47<andythenorth>data security
06:49<Xaroth>if you want to self-host there's mattermost, and iirc
06:49<@peter1138>IRC works quite well.
06:50<andythenorth>irc is winningest
06:50<Xaroth>If you work with a lot of tech-savvy people, yes
06:50<andythenorth>but hosting an irc server is dull AF
06:50<andythenorth>but irc is best
06:51<@peter1138>We switched from "shouting across the room" to Microsoft Teams.
06:51<FLHerne>Matrix clients that aren't Element exist
06:52<FLHerne>(but they all seem to suck)
06:52<LordAro>Xaroth: (corpsethumb)
06:52<Xaroth>I think I missed something important.
06:52<Xaroth>ah, yeah, no
06:53<Xaroth>I'm _really_ glad I no longer have to deal with that thing
07:03<LordAro>it was fine as a user
07:03<LordAro>no different to any of the others
07:03<LordAro>but a main tonactually administer
07:04<LordAro>pain to actually*
07:52-!-nielsm [] has quit [Ping timeout: 480 seconds]
07:58-!-EER_ [] has joined #openttd
07:58-!-EER_ is "..." on #asahi-gpu #asahi-dev #asahi #openttd
08:02<@DorpsGek>[OpenTTD/OpenTTD] PeterN updated pull request #9289: Change: Shortcut varaction chains for callbacks.
08:02-!-EER [] has quit [Ping timeout: 480 seconds]
08:24-!-Samu [] has joined #openttd
08:24-!-Samu is "realname" on #openttd
08:27<TrueBrain>I did something really goofy:
08:27<TrueBrain>it has an interactive CLI to look at the savegame
08:27<TrueBrain>frosch123 might like it :)
08:31<TrueBrain>now with example image in the readme :)
09:01-!-snail_UES_ [] has joined #openttd
09:01-!-snail_UES_ is "Jacopo Coletto" on #openttd
09:06<@Rubidium>the image looks nice though ;)
09:48-!-glx [] has joined #openttd
09:48-!-mode/#openttd [+v glx] by ChanServ
09:48-!-glx is "Loïc GUILLOUX" on #openttd.noai #openttd.notice +#openttd
10:08-!-sla_ro|master [] has quit []
10:36<andythenorth>hot tub time?
11:03<Xaroth>Is that an invitation?
11:12<andythenorth>hut tubs are solitary places
11:49-!-Progman [] has joined #openttd
11:49-!-Progman is "Peter Henschel" on #openttd
12:04<Xaroth>That really depends on the company.
12:28<andythenorth>lol has a feature to show if user is offline or not
12:28<andythenorth>but it can't be enabled on the server because it has an unacceptable performance impact
12:28<andythenorth>but they left the feature in the client UI
12:29<andythenorth>so it just shows 'offline' for everyone
12:29<andythenorth>I really wanted to like, and pay them money for not being Slack
12:29<andythenorth>but it really isn't very good at all
12:29*andythenorth so off-topic
12:31<andythenorth>I sell a SaaS with a huge engineering backlog, so they have sympathy
12:31<andythenorth>but it really just is weirdly broken, and full of configuration stuff
12:31<andythenorth>like ... for enterprise, why would I want my users to decide if they're encrypting a conversation on a per-conversation basis?
12:40-!-frosch123 [~frosch@2a02:810d:a4c0:43a4:a047:4c22:78a:e975] has joined #openttd
12:40-!-frosch123 is "frosch" on #openttd
12:49<@Rubidium>moin frosch123; the bad news of SLE_CHAR is that it can't be removed due to the file format of an array of 128+ elements differs from a string. Though SLE_CHAR/SLE_VAR_CHAR is just SLE_INT8/SLE_VAR_I8 so old data could still be converted if you cut out the intermediate shortcuts
12:50<@Rubidium>with a savegame bump you can change the new saves to use strings, but that won't help with loading the old saves and it would add extra complexity to the load function
12:59-!-Flygon [~Flygon@2001:44b8:411e:4e00:e446:8358:d777:e773] has quit [Quit: A toaster's basically a soldering iron designed to toast bread]
13:01-!-EER [] has joined #openttd
13:01-!-EER is "..." on #asahi-gpu #asahi-dev #asahi #openttd
13:06-!-EER_ [] has quit [Ping timeout: 480 seconds]
13:10<frosch123>meh :/
13:10<frosch123>but thanks for looking into it
13:11<@Rubidium>renaming it will work though, and likely prevent further misuse of it
13:11<@DorpsGek>[OpenTTD/OpenTTD] rubidium42 opened pull request #9336: Fix: [Script] Ensure the saved script strings are properly validated and terminated when being read from the save game
13:12<@Rubidium>as a script, is your integer being truncated from i64 to i32 and then back to i64 expected/wanted for a saveload cycle?
13:12<@Rubidium>SQInteger is 64 bits, but we only save 32 bits of that...
13:13<frosch123>i thought everything was serialised to json :p
13:13<frosch123>but maybe that is just for strings and their parameters
13:15<@Rubidium>json is only used for the admin communication
13:18-!-Gustavo6046 [~Gustavo60@] has quit [Quit: ZNC 1.8.2 -]
13:36-!-Gustavo6046 [~Gustavo60@] has joined #openttd
13:36-!-Gustavo6046 is "Gustavo Rehermann <>" on #openttd #llvm
13:48-!-Tulitomaatti [] has quit []
13:50<TrueBrain>Rubidium: you removed SQ64 from Squirrel, so .... was that question to yourself? :D :D
13:54<frosch123>silicon valley needs 64bit integers for cargomasks (since there are 64 cargos). but i don't think those are stored in savegames
13:57<TrueBrain>pretty sure that if what he says is true, it is a bug :P Squirrel used to be this weird hybrid between 32bit and 64bit depending on your OS :)
13:57<TrueBrain>but these days it is fully 64bit
13:58<+glx>seems it always been 32bit for saves
13:59<@DorpsGek>[OpenTTD/OpenTTD] LC-Zorg opened issue #9337: Pressing a station name in the station list doesn't move you to the correct station
14:02<@DorpsGek>[OpenTTD/team] osprinkis opened issue #225: [lv_LV] Translator access request
14:03-!-y2kboy23 [] has quit [Quit: ZNC -]
14:04<TrueBrain>frosch123: and, do you like my new toy? :D At least shows the headers are stored in a format that is easily readable by other tools :)
14:05<TrueBrain>and that is works ... and contains sane data ..
14:05-!-y2kboy23 [] has joined #openttd
14:05-!-y2kboy23 is "Got ZNC?" on #openttd
14:05<frosch123>i did not try it yet, but the presence of a tui surprised me for sure :)
14:05-!-y2kboy23 [] has quit []
14:05<TrueBrain>it was just begging for it :P
14:06<TrueBrain>worst part, the "--export-json" I made as final addition
14:06<TrueBrain>as I thought you would appreciate that touch :P
14:06<TrueBrain>took me forever to figure out how to work with ncursus in a sane way on Python
14:06<TrueBrain>I (kinda randomly) picked urwid
14:06<TrueBrain>but .. ugh .. what a nightmare to get it doing what I wanted it to :D
14:07<frosch123>next time we need to diff savegames, we can run a json diff on it :)
14:07<TrueBrain>it also clearly shows I really need to either change GS to a RIFF or change the chunk itself
14:08<TrueBrain>there are surprisingly few RIFFs, and most really can be changed into a TABLE
14:08<TrueBrain>so that is promising :)
14:08<TrueBrain>but this is going to take a while to convert them all ... :P
14:08<TrueBrain>with a lot of small PRs to address local issues
14:09-!-y2kboy23 [] has joined #openttd
14:09-!-y2kboy23 is "Got ZNC?" on #openttd
14:09<TrueBrain>stuff like :P
14:09<TrueBrain>splitsing FileType from MemType into two variables still is best .. such a weird code to deal with it now
14:09-!-Wormnest [~Wormnest@] has joined #openttd
14:09-!-Wormnest is "Wormnest" on #openttd
14:14-!-sla_ro|master [] has joined #openttd
14:14-!-sla_ro|master is "slamaster" on #sla #openttd
14:19<@DorpsGek>[OpenTTD/OpenTTD] LordAro commented on pull request #9336: Fix: [Script] Ensure the saved script strings are properly validated and terminated when being read from the save game
15:03-!-Compu [] has joined #openttd
15:03-!-Compu is "Compu" on #help #openttd #/r/openttd
15:03-!-Compu [] has quit [Remote host closed the connection]
15:07-!-gelignite [] has joined #openttd
15:07-!-gelignite is "gelignite" on #debian #llvm #openttd
15:23<V453000>Could trains please have their own curve speed bonus in the vehicle properties? Something like tilt, but with more than 0/1?
15:23<V453000>That would solve all of my issues
15:24<V453000>I'm trying to implement an alternative solution in NUTS, but I'm just getting deeper and deeper into really stupid solutions
15:31-!-jottyfan [] has joined #openttd
15:31-!-jottyfan is "jottyfan" on #openttd
15:34<@DorpsGek>[OpenTTD/OpenTTD] rubidium42 commented on pull request #9336: Fix: [Script] Ensure the saved script strings are properly validated and terminated when being read from the save game
15:54-!-virtualrandomnumber [] has joined #openttd
15:54-!-virtualrandomnumber is "virtualrandomnumber" on #openttd #/r/openttd
15:58-!-virtualrandomnumber [] has quit []
16:11<@DorpsGek>[OpenTTD/OpenTTD] DorpsGek pushed 1 commits to master
16:11<@DorpsGek> - Update: Translations from eints (by translators)
16:14-!-gelignite [] has quit [Quit: Stay safe!]
16:34-!-EER [] has quit [Remote host closed the connection]
16:37-!-tokai|noir [] has joined #openttd
16:37-!-tokai|noir is "Christian Rosentreter" on #openttd
16:37-!-mode/#openttd [+v tokai|noir] by ChanServ
16:44-!-tokai [] has quit [Ping timeout: 480 seconds]
16:57<@DorpsGek>[OpenTTD/BaNaNaS] frosch123 opened pull request #100: Change: migrate OpenTTD user V453000 to GitHub user V453000
16:57<frosch123>must be an imposter
16:58<frosch123>the real one would have posted on IRC, not via forums :)
16:59<@DorpsGek>[OpenTTD/team] frosch123 commented on issue #225: [lv_LV] Translator access request
16:59<frosch123>another one who signed up to github just for us
17:01<@DorpsGek>[OpenTTD/BaNaNaS] TrueBrain merged pull request #100: Change: migrate OpenTTD user V453000 to GitHub user V453000
17:01<frosch123>43.7% packages, 25.7% users migrated
17:01<frosch123>similar numbers as the vaccination progress :p
17:01<V453000>writing a forum message was actually surprisingly difficult for me :P
17:01<TrueBrain>I hope it doesn't follow the same curve :P
17:03<frosch123>oh, hey, V was PR #100
17:03<V453000>can't be a coincidence
17:03<TrueBrain>at his house?
17:03<TrueBrain>can we just raid his house and have a party?
17:03<V453000>it's not a raid if I give you permission
17:03<V453000>so go ahead
17:04<frosch123>i think pm has been at his house before
17:04<TrueBrain>yeah, that is no fun
17:04<V453000>and I don't have a house
17:04<TrueBrain>you want me to draw you a house?
17:04<TrueBrain>won't be pretty
17:04<frosch123>and i have been at some other party organized by V
17:04<TrueBrain>but at least means you have a house
17:04<V453000>was factorio 1M sales party
17:04<TrueBrain>wait, you guys having secret parties and don't invite me?
17:04<frosch123>i didn't even pay
17:05<V453000>VIP yo
17:05<TrueBrain>as with all good parties
17:05<TrueBrain>did you get your moneys worth?
17:05<frosch123>when the girls at the entrance did not find me on the guest list, i just told them to look at the other list :p
17:05<TrueBrain>:D lol
17:05<frosch123>even got a t-shirt
17:05<TrueBrain>fake news!
17:06<V453000>christ, the website is asking me so many difficult questions, License, project website. Do you think I remember these things? :D Musa at least had it from last time :P
17:06<V453000>I wonder if you were on the other list or they just feared your might
17:06<frosch123>V453000: upload the file first, then it will prefill most stuff
17:06<V453000>I did, it hasn't? :D
17:06<TrueBrain>press the autofill button
17:06<V453000>told you I'm a good test of idiot proofness
17:07<TrueBrain>if you know a good UX/UIer, let us know :)
17:07<frosch123>though at this point "good" means "actually deliver something" :p
17:07<V453000>no it's a problem somewhere else
17:07<TrueBrain>frosch123: haha, yeah, we should lower that bar
17:08<frosch123>V453000: <- anyway, you were unsure about licenses before :p
17:08<V453000>not surprising at all XD
17:09<TrueBrain>"for this version, I am going with ....
17:09<TrueBrain>those tags .. lol
17:09<V453000>more tags = more video views
17:09<frosch123>i think V only came it second for "most tags" though
17:09<V453000>rules the world
17:09<TrueBrain>frosch123: don't give him ideas please
17:10<V453000>hm does a grf with only replace and replacenew blocks have a minimum version?
17:10<frosch123>all nml grfs have minimum 1.2
17:10<TrueBrain>ugh, adding headers to all the chunks is boring and slow
17:10<TrueBrain>takes ~3 minutes per chunk
17:10<TrueBrain>there are 79
17:11<TrueBrain>kill me, kill me now :P
17:11<TrueBrain>well, no, I rather have you don't, but what-ever
17:11<V453000>well, lets see how hard did I fuck up
17:12<frosch123>also, it's party time anyway. i quite my previous job 2 years ago (filed the notice)
17:12<TrueBrain>-e, I assume :)
17:12<V453000>BTW is there a way to see download numbers?
17:13<frosch123>you only see the aws invoices
17:13<TrueBrain>available after payment, ofc
17:13<TrueBrain>"Broken savegame - Table chunk without header"
17:13<V453000>TB's price is?
17:14<TrueBrain>for you? 2 euros
17:14<TrueBrain>for frosch123 ? 5 euros
17:14<V453000>that's not 3 euros frosch
17:14<frosch123>do i need to invade?
17:14<V453000>that's 250%
17:15<TrueBrain>it is nothing personal
17:15<TrueBrain>I think
17:15<frosch123>next time use a D100
17:15<TrueBrain>wtf is CargoMonitor
17:15<TrueBrain>and why isn't it in my savegame
17:16<frosch123>you need a gs for that
17:16<frosch123>use nocargoal or siliconvalley
17:16<frosch123>it's a thing to allow gs to track cargo flow
17:16<TrueBrain>ah .. it stores the header
17:16<TrueBrain>but there are no indexees
17:16<TrueBrain>so my savegame-reader doesn't "see" it
17:17<TrueBrain>so I clicked nocargoal
17:17<TrueBrain>downloaded it
17:17<TrueBrain>it reloaded newgrfs
17:17<TrueBrain>nocargoal not selected
17:17<frosch123>V453000: 2 euros won't cut it in the long run. we need a rich wife for tb, so he can continue to work on ottd
17:18<TrueBrain>finally applied for a job last week
17:18<TrueBrain>so that might come to an end soon :P
17:19<V453000>well I've replaced mainly installing any games for working on newgrfs recently, luckily it's not really hurting my productive time so far
17:19<V453000>but we all know how obsession goes
17:22-!-Samu [] has quit [Quit: Leaving]
17:30<Timberwolf>I would try that, except it turns out merely having OpenTTD and OpenRCT installed is enough to swallow all of my free time if I let it.
17:31<V453000>I've got RCT classic on the ipad, so it's kind of making me not want to play it on a PC
17:32<V453000>I've had it since like 2018 and I'm still not through all of the scenarios, it's ridiculous
17:32<Timberwolf>I have the tablet version, it's weird playing without a mouse for me.
17:33<V453000>I was actually shocked to find how great RCT is for touch controls
17:33<Timberwolf>tbf, I had RCT2 since it came out and I only finished all of the scenarios this year :)
17:33<Timberwolf>Oh yes, the RCT-engine games are way better for it.
17:33<V453000>RCT2 is incredible in many ways, esp the height view feature
17:34<V453000>but the classic version is great for me
17:34<frosch123>i only heard about larger maps
17:35<frosch123>what is height view?
17:35<Timberwolf>I like that they're still at the stage of having `void ec78b3d() { /* does something with how much guests are willing to pay with shop items, I think */ ... }` in their code.
17:35<V453000>you can basically hide objects under and above some height
17:35<V453000>so you get like a slice
17:35<frosch123>oh, i saw that, i assumed it was normal rct :p
17:35<Timberwolf>When did the last of those disappear from OpenTTD? :)
17:35*frosch123 never played rct
17:35<V453000>I think that's exactly what RCT needs, sometimes things just draw on top of each other and with busy parks you can't see them in any rotation
17:36<frosch123>Timberwolf: i cleaned up the names of the sound enum this year
17:36<frosch123>some of the names were completely off
17:37-!-sla_ro|master [] has quit []
17:37<Timberwolf>Oh yes... I mainly know it from the road vehicle sounds being not what you'd expect.
17:37<frosch123>but the last big chunk of "remove this unknown code" was when the old ai was deleted
17:38<Timberwolf>Well. I guess they are now.
17:38<Timberwolf>I theorise that Chris Saywer's asm source has, "I don't know what this does" comments in it when it comes to the AI :)
17:39<frosch123>Timberwolf: actually, look at the original map generator
17:39<frosch123>lot's of it looks like translated from asm
17:39<frosch123>"z = 1 + (((x ^ 0xF) + (y ^ 0xF)) >> 1);" <- stuff like that
17:40<Timberwolf>I think there's an interview somewhere where he talks about this in relation to RCT, about not being good enough at AI to make the peeps navigate intelligently within the performance constraints, then realising it was more realistic that they did stupid things and got lost.
17:40<+glx> <Timberwolf> I like that they're still at the stage of having `void ec78b3d() { /* does something with how much guests are willing to pay with shop items, I think */ ... }` in their code. <-- opendune was similar in begining
17:41<TrueBrain>but we fixed them all \o/
17:43-!-tokai [] has joined #openttd
17:43-!-tokai is "Christian Rosentreter" on #openttd
17:43-!-mode/#openttd [+v tokai] by ChanServ
17:46-!-jottyfan [] has quit [Quit: jottyfan]
17:50-!-tokai|noir [] has quit [Ping timeout: 480 seconds]
17:52<TrueBrain>Broken savegame - Invalid chunk size
17:52<TrueBrain>right, the smallest things can blow up the saveload stuff
17:52<TrueBrain>without real indication why :P
17:53<+glx>yeah it's easy to break, and can be on save (and impossible to load) or on load only
17:54<TrueBrain>owh ... found the issue .. hmm .. interesting
17:57<@DorpsGek>[OpenTTD/OpenTTD] TrueBrain updated pull request #9322: Add: store table header for each chunk in savegame
17:57<TrueBrain>right .. 4 more files done ... sssllllooowwwwww
17:57<TrueBrain>and now figuring out why the reader is failing
17:58<andythenorth>how can I force 1 instance of an industry type into every town on the map?
17:58<andythenorth>it has been explained to me why this cannot be done with GS
17:59<andythenorth>I thought I could abuse the probability callback, but I can't find a var for number of towns
17:59<frosch123>you cannot force it in 100% of all cases
17:59<frosch123>otherwise water towers would do that in tropic
17:59<+glx>you can limit to 1 per town, but can't force to have 1 in each
18:00<andythenorth>there must be a way
18:00<andythenorth>probability callback
18:01*andythenorth thinks there must be some 80+ var for number of towns
18:02<frosch123>why would there?
18:02<TrueBrain>build_date: 16777229
18:02<TrueBrain>I think that is wrong :P
18:03<andythenorth>'must' as in 'andy probably just looked in the wrong place' not 'is a requirement'
18:03<frosch123>@calc 16777229 / 74 / 365
18:03<@DorpsGek>frosch123: 621.1487967419474
18:04<frosch123>yeah, that is neither days nor ticks
18:05<TrueBrain>SLE_CONDVAR(Depot, build_date, SLE_INT32, SLV_142, SL_MAX_VERSION),
18:05<TrueBrain>maybe that gives you a hint what is wrong :P
18:06<andythenorth>hmm no towns count var anywhere obvious
18:06<andythenorth>oh dear :)
18:06<TrueBrain>@base 10 16 16777229
18:06<@DorpsGek>TrueBrain: 100000D
18:06<frosch123>TrueBrain: oh, right: network order
18:06<frosch123>ottd savegames are big endian, right?
18:06<TrueBrain>they are
18:06<TrueBrain>and I am doing that part correct
18:07<andythenorth>oh I don't need to know the town count
18:07<TrueBrain>but why is build_date a signed variable, I wonder ..
18:07<andythenorth>I just need to know if 'this' town has the specific industry
18:07<TrueBrain>ah, "Date" is int32
18:08<frosch123>so, it's days since year 0
18:08<frosch123>@calc 16777229 / 365.25
18:08<@DorpsGek>frosch123: 45933.549623545514
18:08<frosch123>pretty far in the future
18:08<TrueBrain>not sure if it is this savegame, as it is really old
18:08<TrueBrain>or my reader
18:09<TrueBrain>but .. it is acting weird as fuck :P
18:09<frosch123>what does "land info" say in game?
18:10<frosch123>you can use "scrollto <tileindex>" in the console to fnid it
18:10<TrueBrain>6th Aug 2390 vor 16777229
18:10<TrueBrain>same date for 13
18:11<TrueBrain>I think something is not working as expected in my Python reader or something :D
18:14<TrueBrain>@base 10 16 503316661
18:14<@DorpsGek>TrueBrain: 1E0000B5
18:14<TrueBrain>@base 10 16 50331661
18:14<@DorpsGek>TrueBrain: 300000D
18:14<TrueBrain>hmm .. pretty sure reading doesn't do what I expect it to do :P
18:15<TrueBrain>ah .. SL_REF
18:15<frosch123>there are a lot of 00 in the middle
18:16<frosch123>maybe you are off by some bytes
18:16<TrueBrain>yeah, those 00s are the name of the depot
18:16<TrueBrain>and I write the wrong info about an SL_REF
18:16<TrueBrain>as VarFileType() returns a value for SL_REF
18:16<TrueBrain>that is not correct
18:18<+glx>SL_REF needs AfterLoad, no ?
18:19-!-andythenorth [] has quit [Quit: andythenorth]
18:19<frosch123>no, but there are two chunk handlers. one which reads the index from the save and stores it in the pointer
18:19<frosch123>and one which replaced the index with the pointer
18:22<TrueBrain>so the reader is useful \o/
18:22<TrueBrain>from OpenTTD's perspective it was all dandy
18:22<TrueBrain>just reading the file via Python was .. impossible :P
18:24<TrueBrain>build_date: 873147
18:24<TrueBrain>@calc 873147 / 365.25
18:24<@DorpsGek>TrueBrain: 2390.5462012320327
18:24<TrueBrain>that is what it tells me ingame too
18:24<TrueBrain>what is a bit odd .. they all have the same date
18:24<TrueBrain>but what-ever, not my problem :)
18:24<frosch123>you said it was a old savegame
18:25<frosch123>maybe it started without a depot date
18:25<TrueBrain>funny, there is an entry in one of the chunks with "!dummy trains"
18:26<frosch123>depot name?
18:26<TrueBrain>no, GRPS chunk
18:26<frosch123>coop are those people who put "!" in front of names, to sort them first
18:26<TrueBrain>so yeah, coop name thing
18:27<@DorpsGek>[OpenTTD/OpenTTD] TrueBrain updated pull request #9322: Add: store table header for each chunk in savegame
18:27<TrueBrain>right, that fixes depots :)
18:28<TrueBrain>you can now look at depots via the Python app :D
18:28<TrueBrain>next I should port this to WASM and allow you to upload your savegame, right? :D
18:28<TrueBrain>11 / 79 done
18:29<TrueBrain>ugh, that number is depressing
18:30<frosch123>replace the scenario editor with it
18:30<TrueBrain>"YOU are in control" :D
18:30-!-tokai|noir [] has joined #openttd
18:30-!-tokai|noir is "Christian Rosentreter" on #openttd
18:30-!-mode/#openttd [+v tokai|noir] by ChanServ
18:30<TrueBrain>I wonder if there is a sane form to make map-chunks easier to read
18:30<TrueBrain>but they are so bit-stuffed
18:31<frosch123>hmm, i guess there is no obvious way to store in the table, which pool a SL_REF references
18:31<frosch123>i guess there isn't even an obvious way which chunk contains which pool :p
18:32<frosch123>TrueBrain: the schema would need to contain the bitfields :)
18:32<TrueBrain>frosch123: if only that was possible :P
18:32<frosch123>we discussed that before, because afterload moves some bitfields multiple times
18:32<frosch123>and it is really hard to not mess up that conversion
18:32<TrueBrain>but what a bitfield means depends on another bitfield
18:32<frosch123>so it would be better if all of them would only be moved once
18:32<TrueBrain>sometimes in another chunk :P
18:35<frosch123>hmm, yeah, we need to figure out a way to delete the map array then
18:35<TrueBrain>JSON? :P
18:36<frosch123>usually you say yaml
18:36<TrueBrain>I have been wondering about that, well, not JSON, but ..
18:36<TrueBrain>the map array in memory can be bitstuffed like this
18:36<TrueBrain>I really do not care
18:36<TrueBrain>but on disk, we don't have to
18:36<TrueBrain>it just takes more space
18:36<TrueBrain>so yeah, you could apply some schemas to it, depending on the savegame version
18:36<TrueBrain>assigning meaning to bits
18:36<frosch123>well, autosave should be fast
18:36<frosch123>or at least not pause the game long
18:37<TrueBrain>so remove 4k as valid dimension? :D
18:37-!-tokai [] has quit [Ping timeout: 480 seconds]
18:37<+glx>it's easier to directly write memory to file
18:37<frosch123>glx: but we don't even do that
18:37<frosch123>m1, m2, m3 ... are stored separtely in file
18:38<frosch123>but interleaved in memory
18:38<frosch123>(i think)
18:38<TrueBrain>we don't use memcpy
18:38<TrueBrain>lets keep it at that :P
18:38<TrueBrain>glx: in that mindset, we could just as well memcpy all objects to disk
18:38<TrueBrain>very fast
18:39<TrueBrain>just ... a complete nightmare for backwards compatibility :)
18:39<@peter1138>This is some mighty fine rabbit hole you've got yourself into.
18:39<TrueBrain>I think in the end these conversations always come back to the realisation that our _m storage just sucks :P
18:39<frosch123>hmm, i guess, if you would store the maparray as table, you would have a sparse table for each tiletype
18:40<frosch123>train station tiles, road station tiles, finished industry tiles, unfinished industry tiles, ..
18:40<frosch123>alls the messy details :p
18:40<+glx>hey at least it's not a union
18:40<TrueBrain>frosch123: if only it was that easy :P
18:41<frosch123>hmm, i forgot, can unions have member functions meanwhile?
18:41<TrueBrain> { 'M3LO', Save_MAP3, Load_MAP3, nullptr, nullptr, CH_RIFF },
18:41<TrueBrain> { 'M3HI', Save_MAP4, Load_MAP4, nullptr, nullptr, CH_RIFF },
18:41<TrueBrain>I love those details :P
18:41<frosch123>we can make the _m a union with private members and then put all mapaccessors into it
18:42<TrueBrain>but okay .. I first have ~30 easy chunks to convert
18:42<TrueBrain>after that I can change some RIFFs into TABLEs too
18:42<TrueBrain>and then I am done with it, and we merge the PR :P
18:42<TrueBrain>I need to find a nice way to have lists in tables
18:43<+glx>merge all m arrays into an array of tile struct
18:43<frosch123>oh, looks like unions could have non-virtual member functions since forever
18:44-!-tokai|noir [] has quit [Ping timeout: 480 seconds]
18:44<LordAro>frosch123: the tricky bit is packing the union so it stays the correct size
18:44<LordAro>i played around with the idea before
18:44<_dp_>array of struct may be bad for performance and compression
18:44<LordAro>pragma pack didn't seem to do anything
18:44<TrueBrain>is the correct size important?
18:45<frosch123>LordAro: i guess bitfields are still implementation-defined
18:45<TrueBrain>I mean, as long as we save/load is correct to what-ever is in memory
18:45<TrueBrain>it should be fine, not?
18:45<LordAro>hmm, perhaps
18:46<LordAro>other than cache misses and all that
18:46<LordAro>as _dp_ says
18:46<TrueBrain>do we want to compress memory now? :P
18:46-!-tokai [] has joined #openttd
18:46-!-tokai is "Christian Rosentreter" on #openttd
18:46-!-mode/#openttd [+v tokai] by ChanServ
18:46<TrueBrain>and I would wonder if cache misses really is a problem, or at least: a bigger or smaller problem
18:47<TrueBrain>as I think our map access is rather random anyway
18:47<TrueBrain>our tileloops are jumping around like a mad man :P
18:47<TrueBrain>ofc the union should not be 32 bytes instead of 1 :D
18:47<frosch123>the idea was that all the loop-over-all-tiles things would access stuff that fits into the cache at the same time
18:47<TrueBrain>what cache are we talking about exactly, sorry?
18:48<_dp_>arrange tiles in memory in tile loop order xD
18:48<frosch123>TrueBrain: L2 cache
18:48<+glx>even for 4K maps ?
18:48<frosch123>but it's big nowadays :p
18:48<TrueBrain>and "the idea was", the idea CS had?
18:48<TrueBrain>as building a game in a way that it favours L2 cache is ... difficult, I would argue :)
18:48<frosch123>TrueBrain: the point of _m and _me is, that sizeof(_m[0]) is a power of two
18:48<TrueBrain>especially with stupid CPUs without L2 cache, but that is childish :P
18:49<frosch123>so there are no zeros for alignment
18:49<frosch123>and _m can fit into L2, while _me is accessed rarely
18:49<TrueBrain>can it really fit into the L2? :D
18:49<TrueBrain>especially on modern PCs, I always wonder if that is the case
18:49<TrueBrain>in the old days you had a bit more control over it ofc
18:50<+glx>with all the threads now
18:50<frosch123>TrueBrain: sorry, i meant L3 :)
18:50<TrueBrain>ah, okay, that shifts the story a bit :P
18:50<TrueBrain>power-of-two alignment, I can get
18:51<TrueBrain>but that is more about alignment of your memory
18:51<TrueBrain>most RAMs are still read in pages
18:51<TrueBrain>not really power-of-two, ofc, but who is counting
18:51<frosch123>the compiler would align it anyway, but fill it up with zeros
18:51<TrueBrain>(well, they are, but meh)
18:51<TrueBrain>yeah, so you don't want to waste cache-lines .. I just wonder if that still matters on modern machines
18:52<TrueBrain>if our TileLoop would be 0..N
18:52<TrueBrain>I could get behind that
18:52<TrueBrain>but .... we are weird :P
18:52<frosch123>if a struct contains a uint32 and is 9 bytes in total, the compiler will put it into 12 bytes
18:52<frosch123>so that the uint32 is aligned in array of that struct
18:53<TrueBrain>don't compilers align to the dword boundary?
18:53<LordAro>something something premature optimisation something something
18:53<frosch123>TrueBrain: they align to the biggest alignment requirement of a member
18:53<TrueBrain>owh, I remember the CPUs that didn't allow misaligned memory access
18:53<TrueBrain>the fun days ...
18:54<frosch123>afaik it's still better in modern cpu
18:54<TrueBrain>Either way, if my memory serves me correct, it used to be a huge thing, how we arranged our _m and _me
18:54<TrueBrain>but I do wonder how much impact there is these days
18:55<TrueBrain>aligned memory access is always faster, I believe so too yes :)
18:56<+glx>yeah alignment still matters I think
18:56<TrueBrain>especially vars that are aligned over a boundary, are just brrrrr
18:57<TrueBrain>anyway, might just be worth profiling again in this modern day and age, to see what _m and _me do exactly in terms of performance
18:57<frosch123>measurement is always good :)
18:58<frosch123>i guess it's enough to add some dummy members to _m, just to make it bigger
18:58<frosch123>no need to shift everything around for profiling
18:58<TrueBrain>just towards what do you benchmark
18:58<TrueBrain>the "slow" games we have is not because of map access :D
18:59<TrueBrain>and the fast games are .. well ... fast :P
18:59<+glx>it's all because newgrf and pbs ;)
18:59<TrueBrain>and we don't care about sequential access, as we rarely do that
18:59<+glx>and signals
19:00<+glx>and ships pathfinding
19:01<frosch123>TrueBrain: don't underestimate the tileloop
19:01<+glx>plural ;)
19:01<frosch123>it takes ages to check whether a tile needs to build fences/hedges to the next one
19:01<TrueBrain>frosch123: I am not; I am wondering how we would benchmark it :)
19:02<TrueBrain>as there is a lot of noise
19:02<frosch123>i suggest to use a 1kx1k map, resonable amount of stuff on it, no newgrf
19:02<+glx>no autosave either
19:02<frosch123>you could also try a pure-water, a pure-clean-land and a pure-trees map
19:03<TrueBrain>how did this became a "you" and not a "we" :P
19:03<frosch123>"you" can also mean "someone"
19:03<+glx>the famous "somebody"
19:03<frosch123>but you are the only one who did something this week
19:04<frosch123>hmm, maybe rb did something as well
19:04<frosch123>i certainly didn't :p
19:04<+glx>I did minor stuff only
19:05<TrueBrain>we are also low on contributors :P
19:06<TrueBrain>funny, Tile has a static_assert to validate its size
19:06<TrueBrain>but TileExtended doesn't
19:07<TrueBrain>used twice
19:07<TrueBrain>that comment is in so many ways wrong :P
19:07<frosch123>i guess it's so you can write "a * STRAIGHT_TRACK_LENGTH"
19:07<frosch123>and it will do the mul before the div
19:08<TrueBrain>despite what it does .. that comment ist just priceless
19:08<frosch123>yeah, it reads like a conversation between at least 3 people
19:09<frosch123>kind of like when 3 people use @say
19:09<TrueBrain>anyway, started a 1kx1k game with -g -G0 and default terrain settings, with 8-byte Tile -> 1440us per RunTileLoop iterator
19:09<TrueBrain>added 4 bytes
19:10<TrueBrain>added 28 bytes
19:10<TrueBrain>but .. debug build :P
19:10<TrueBrain>owh, no, after a few iterations, 28 bytes becomes slightly slow
19:11<TrueBrain>1600us per iteration
19:11<+glx>debug build so already bigger because memory guards everywhere
19:11<TrueBrain>release-builds just take FOR EVER to build
19:11<TrueBrain>well, link
19:15<TrueBrain>still linking
19:15<TrueBrain>seriously, is the linker installed on Mars?
19:15<TrueBrain>OpenTTD/src/settings.cpp:2137:1: note: variable tracking size limit exceeded with ‘-fvar-tracking-assignments’, retrying without
19:15<TrueBrain>nice :D
19:16<TrueBrain>~250us for current code .. lol
19:16<TrueBrain>6 times faster, nice :D
19:17<+glx>keep current exe somewhere, to not have to rebuild
19:17<TrueBrain>exe? What are you, a Windows developer? OMG :P
19:20<TrueBrain>~270us with 4 bytes extra
19:21<TrueBrain>just to show how much time is spend in debug-code :P
19:21<TrueBrain>it is funny, with _m we are always worried about performance
19:22<TrueBrain>but in 1.11 we made some changes to the video driver that blew fastforward so fast, we couldn't track it
19:22<frosch123>in one of the recent msvc versions, ms advertised that they made debug builds faster by deleting lots of assertion-like things from the stdlib :p
19:22<TrueBrain>lol; really? Does that make debug builds faster? MS smart!
19:23<frosch123>i remembered the statement because it confused me. i thought they meant "compilation time" instead of "run time performance"
19:23<TrueBrain>with 28 bytes extra it is ~330us
19:24<+glx>more visible in release build then
19:24<frosch123>TrueBrain: how much does 4kx4k impact?
19:25<TrueBrain>do you have any idea how much time it takes to recompile this? :P
19:25<frosch123>just use the same build
19:25<frosch123>1kx1k vs 4kx4k
19:25<TrueBrain>I need at least 2 :)
19:25<+glx>no need to recompile to change map size
19:25<frosch123>the claim would be that it is more than 16x slower
19:25<TrueBrain>glx: no shit :P
19:26<+glx>(that's why I suggested to backup exe)
19:26<TrueBrain>anyway, 10% for 4bytes already kinda surprises me .. I expected a lot less
19:26<TrueBrain>glx: I know, but I am way too lazy for that shit :)
19:26<TrueBrain>well, it is 10% for doubling the size, I guess
19:27<TrueBrain>@calc 80 / 28
19:27<@DorpsGek>TrueBrain: 2.857142857142857
19:27<TrueBrain>about 3us per byte
19:28<TrueBrain>generating a 4k map .. this will take a while :P
19:28<TrueBrain>mainly the waiting for the function to loop 10 times the full map completely
19:29<+glx>and the townnames
19:29<TrueBrain>5500, give or take
19:29<TrueBrain>@calc 330 * 16
19:29<@DorpsGek>TrueBrain: 5280
19:29<TrueBrain>[2021-06-05 01:29:13] dbg: [misc] [RunTileLoop] 13986764 us [avg: 5463.6 us]
19:29<TrueBrain>[2021-06-05 01:29:13] dbg: [misc] [StateGameLoop] 15716385 us [avg: 6139.2 us]
19:29<TrueBrain>[2021-06-05 01:27:45] dbg: [misc] [RunTileLoop] 927493 us [avg: 362.3 us]
19:29<TrueBrain>[2021-06-05 01:27:45] dbg: [misc] [StateGameLoop] 1001331 us [avg: 391.1 us]
19:29<TrueBrain>give or take some noise
19:30<TrueBrain>@calc 360 / 390
19:30<@DorpsGek>TrueBrain: 0.9230769230769231
19:30<frosch123>so it's faster?
19:30<TrueBrain>@calc 5463 / 6139
19:30<@DorpsGek>TrueBrain: 0.889884345984688
19:30<TrueBrain>frosch123: faster than?
19:31<frosch123>@calc 5463.6 / 16
19:31<@DorpsGek>frosch123: 341.475
19:31<frosch123>that is less than 362.3
19:31<TrueBrain>yeah, as I said, minus some noise
19:31<TrueBrain>it was ~330
19:31<frosch123>ok :)
19:31<TrueBrain>so ballpark, it is a multiplier of 16
19:32<TrueBrain>these numbers are small enough that measurement issues are a big part of it too
19:32<frosch123>so, we can stop all bitpacking and just use 32bytes per tile? :p
19:32<TrueBrain>well, I was trying 36 bytes .. I was planning on 32, but I cannot count :P
19:32<TrueBrain>I would like to see a game that is impacted by this in a noticeable way
19:33<TrueBrain>sure, early game, FF will be slower
19:33<TrueBrain>but we went from 1000x to 1000000x
19:33<TrueBrain>so ... euh .. yeah ..
19:33<TrueBrain>and late-game, I cannot imagine map-access is the issue
19:33<TrueBrain>but, I can be completely wrong
19:34<TrueBrain>[2021-06-05 01:33:56] dbg: [misc] [RunTileLoop] 11838267 us [avg: 4624.3 us]
19:34<TrueBrain>[2021-06-05 01:33:56] dbg: [misc] [StateGameLoop] 13672344 us [avg: 5340.8 us]
19:34<TrueBrain>without the extra 28 bytes
19:34<TrueBrain>@calc 5463 / 4624
19:34<+glx>late game is slowed down by vehicles, not map I think
19:34<@DorpsGek>TrueBrain: 1.1814446366782008
19:34<TrueBrain>18% slower on 4kx4k for RunTileLoop
19:37<TrueBrain>okay, let me collapse _me into _m, see what that does
19:37-!-HerzogDeXtEr [] has quit [Read error: Connection reset by peer]
19:38<TrueBrain>surprisingly easy to make that change
19:38<TrueBrain>if you don't mind a nice "#define _me _m" :P
19:40<TrueBrain>I ... removed the TICC/TOCCs ..
19:41<TrueBrain>guess I have to wait again on the LTO ..
19:41<+glx>of course, it's more fun that way ;)
19:41<TrueBrain>I was like: either this is crazy slow, or I did something wrong
19:41<TrueBrain>the latter
19:41<TrueBrain>100% absolutely the latter :)
19:43<TrueBrain>3 minutes ... seriously .. unplayable, this LTO game
19:44<TrueBrain>[2021-06-05 01:44:48] dbg: [misc] [RunTileLoop] 13508528 us [avg: 5276.8 us]
19:44<TrueBrain>[2021-06-05 01:44:48] dbg: [misc] [StateGameLoop] 15146048 us [avg: 5916.4 us]
19:45<TrueBrain>that is a bit weird :P
19:45<TrueBrain>ugh, it bounces around a lot more
19:45<TrueBrain>[2021-06-05 01:45:33] dbg: [misc] [RunTileLoop] 12957398 us [avg: 5061.5 us]
19:45<TrueBrain>[2021-06-05 01:45:33] dbg: [misc] [StateGameLoop] 14537540 us [avg: 5678.7 us]
19:45<TrueBrain>seems a more fair value
19:46<TrueBrain>anyway, that was fun. Now zzzz, and tomorrow more saveload chunk conversions \o/
19:47-!-frosch123 [] has quit [Quit: be yourself, except: if you have the opportunity to be a unicorn, then be a unicorn]
20:16<@peter1138>originally it was separate arrays, like how the map is saved.
20:48-!-Progman [] has quit [Remote host closed the connection]
21:12-!-snail_UES_ [] has quit [Quit: snail_UES_]
21:56-!-snail_UES_ [] has joined #openttd
21:56-!-snail_UES_ is "Jacopo Coletto" on #openttd
22:37-!-Wormnest [~Wormnest@] has quit [Quit: Leaving]
22:40-!-tokai|noir [] has joined #openttd
22:40-!-tokai|noir is "Christian Rosentreter" on #openttd
22:40-!-mode/#openttd [+v tokai|noir] by ChanServ
22:47-!-tokai [] has quit [Ping timeout: 480 seconds]
22:54-!-glx [] has quit []
---Logclosed Sat Jun 05 00:00:15 2021