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

---Logopened Mon Jun 28 00:00:47 2021
00:09-!-snail_UES_ [] has joined #openttd
00:09-!-snail_UES_ is "Jacopo Coletto" on #openttd
00:19-!-snail_UES_ [] has quit [Quit: snail_UES_]
02:01<@DorpsGek>[OpenTTD/OpenTTD] telk5093 updated pull request #9376: Feature: Show the number of clients and companies in the online players window
02:02<@DorpsGek>[OpenTTD/OpenTTD] telk5093 commented on pull request #9376: Feature: Show the number of clients and companies in the online players window
02:26-!-gelignite [] has joined #openttd
02:26-!-gelignite is "gelignite" on #debian #llvm #openttd
02:41<TrueBrain>FLHerne: yeah .. I have the same issue :P I guess the best approach would be to first go over the wiki page and make sure there is some consensus about that .. even then ... lot of work with relative little benefit ..
02:46<@DorpsGek>[OpenTTD/OpenTTD] TrueBrain commented on pull request #9191: Codechange: Disable pointer locking by default
02:47<@DorpsGek>[OpenTTD/OpenTTD] TrueBrain approved pull request #9376: Feature: Show the number of clients and companies in the online players window
02:55-!-sla_ro|master [slamaster@] has joined #openttd
02:55-!-sla_ro|master is "slamaster" on @#sla #openttd
03:02-!-HerzogDeXtEr [] has joined #openttd
03:02-!-HerzogDeXtEr is "purple" on #openttd
03:13-!-Gustavo6046 [~Gustavo60@] has quit [Remote host closed the connection]
03:16-!-Gustavo6046 [~Gustavo60@] has joined #openttd
03:16-!-Gustavo6046 is "Gustavo Rehermann <>" on #openttd #llvm
03:32<@DorpsGek>[OpenTTD/OpenTTD] Taschi120 commented on pull request #9395: Change #9188: Netsave now behaves like autosave
03:35<@DorpsGek>[OpenTTD/OpenTTD] LordAro commented on pull request #9395: Change #9188: Netsave now behaves like autosave
03:35<@DorpsGek>[OpenTTD/OpenTTD] LordAro commented on pull request #9395: Change #9188: Netsave now behaves like autosave
03:56<TrueBrain>wauw .. you can have invalid entries in a settings .ini, and settingsgen doesn't complain about that ..
03:56<TrueBrain>it just skips the entry
03:57<TrueBrain>owh, sorry, it does "warn" about it
03:57<TrueBrain>in the blob of other stuff
03:57<TrueBrain>but .. no, just no .. why not error? lol
04:11<TrueBrain>dbg: [sl] Field 'HS?_??type??train??roadveh??ship??aircraft??effect??disaster' of type 0x56 not found, skipping
04:11<TrueBrain>do you think I made a mistake in my code? :P
04:18<LordAro>seems a bit likely
04:26-!-gelignite [] has quit [Quit: Stay safe!]
04:26-!-andythenorth [] has joined #openttd
04:26-!-andythenorth is "andythenorth" on #openttd
04:27-!-andythenorth [] has quit []
04:36<@DorpsGek>[OpenTTD/OpenTTD] ldpl commented on pull request #9322: Feature: store table headers for each chunk in savegame
04:48<Xaroth>Somebody got any popcorn, I seem to have run out.
05:27<@DorpsGek>[OpenTTD/OpenTTD] TrueBrain commented on pull request #9322: Feature: store table headers for each chunk in savegame
05:27<TrueBrain>Xaroth: stop putting wood on fire that doesn't exist please :)
05:28<TrueBrain>he is asking questions, and I am answering them. Seems nothing but fair :)
05:32<_dp_>yeah, it's finally getting constructive
05:32<_dp_>TrueBrain, if I change the name of the field in the header of the new savegame externally, will the game still be able to parse it correctly?
05:33<TrueBrain>you mean another tool than OpenTTD changes something in the savegame?
05:33<_dp_>not just something, the name of field to somthing random
05:34<TrueBrain>OpenTTD would read it; it won't understand the field of course
05:34<TrueBrain>but it would read the chunk fine
05:34<TrueBrain>even read the fields it can
05:34<TrueBrain>and warn about any missing fields it now has
05:34<_dp_>then that's exactly what I mean that new format uses the name for indentification
05:34<_dp_>you can't change the name without breaking the format
05:35<TrueBrain>okay, so when you talk about "format" you mean understanding the data
05:35<TrueBrain>format usually refers to how to read the data
05:35<_dp_>yeah, what I call identification you call understanding
05:35<TrueBrain>interpretation of the data is always up to the reader ofc
05:35<TrueBrain>like the classic: 10101001 means nothing till you assign it value
05:36<_dp_>if you see it like that I'm not even talking about the format then but the internal change of the way it interprets the data
05:37<TrueBrain>not sure what you mean there
05:37<_dp_>like, changing it to sqlite after 9322 is not a format change in my eyes because it's just a byte structure, all the logic is already there
05:37<TrueBrain>the savegame format is how things are stored on disk
05:37<TrueBrain>what the ones and zeros mean
05:37<TrueBrain>so there is a huge disconnect in thermology here ;)
05:38<TrueBrain> <- this is our savegame format
05:38<_dp_>well I don't know how would you call it then
05:38<_dp_>logic or structure of the data organization
05:39<_dp_>to me it's the part of the format, it's core, it's idea
05:39<TrueBrain>it is different for each chunk
05:39<TrueBrain>but okay, we now understand what we mean, that is more important
05:39<_dp_>no, with 9322 they're pretty much all just rdbms tables
05:39<@DorpsGek>[OpenTTD/OpenTTD] michicc commented on pull request #9322: Feature: store table headers for each chunk in savegame
05:41<@DorpsGek>[OpenTTD/OpenTTD] TrueBrain commented on pull request #9322: Feature: store table headers for each chunk in savegame
05:43<_dp_>except now you don't have sufficient information in the savegame to figure out said order
05:43<_dp_>unless you read the header
05:44<TrueBrain>yeah, I realised that after I posted; already edited it :P
05:44<@DorpsGek>[OpenTTD/OpenTTD] michicc commented on pull request #9322: Feature: store table headers for each chunk in savegame
05:45<+michi_cc>Eh, too slow :)
05:45<TrueBrain>hihi, I indeed misread michi_cc :D My edit was quicker :P But good point michi_cc :)
05:46<_dp_>to me that is just a consequence of a format "idea" change
05:46<_dp_>like, ofc, you can't skip header if it's identified by name
05:47<TrueBrain>yeah, I did not consider the case where you can no longer deduce what order is used, so that is completely fair
05:47<TrueBrain>it is btw a good reason to do this: it means we validate much more strict that the savegame we read has the data we assume :)
05:48<TrueBrain>it is so easy in the old way to overrun records and just read garbage ...
05:49<_dp_>but was that really a big issue before?
05:49<_dp_>other than for broken files
05:50<TrueBrain>"big issue" is a strong word, but for external tooling it was a pita
05:50<+michi_cc>On a related side note: While I don't have any string opinions whether we need or don't need these headers in savegames, I am somehwat sceptical of using external libraries for storage.
05:50<TrueBrain>michi_cc: I think several others agree with you. I am yet of no opinion till someone shows how it looks .. could be a disaster :D
05:50<TrueBrain>could be epic :P
05:51<TrueBrain>but what makes you skeptical, for my curiousity?
05:51<TrueBrain>_dp_: btw, as example, there was a setting added recently in the middle of the settings-blob .. took me a while to find why my tooling was doing very weird shit because of it :P
05:52<+michi_cc>Using the often cited SQLite as an example: They give a very, very strong guarantee about backwards compatibility, which is very good. They don't say anything about forward compatibility except that the format is "stable" though, which in theory means that the compiled library version might limit loading even if it is the same OTTD revision.
05:52<TrueBrain>michi_cc: wauw, yes, that is a very valid point
05:53<_dp_>it was a pita mainly because tooling had to replicate openttd code logic, and it's still a pita for anything that needs old format
05:53<TrueBrain>I cannot fix the past
05:53<+michi_cc>Like e.g. (constructed example), Linux Distro A switches to 5.0 ahead of everybody else, which adds some stuff the the file format, making compiles still using version 4 not be able to read it.
05:53<TrueBrain>I can only work towards a better tomorrow :)
05:53<TrueBrain>michi_cc: so the only way would be to vendor it, basically
05:54<_dp_>but if there was a way to declaratively describe the schema for all versions of the save it would be much more useful for tooling than 9322 that only has partial metadata for a single version
05:54<_dp_>* imo ;)
05:54<TrueBrain>but that is a very big issue indeed michi_cc , oof
05:54<+michi_cc>This is obviously constructed, and as far as I know, SQLite very, very rarely changes the on-disk format, but it is still something to keep in mind with any external library in general.
05:54<TrueBrain>_dp_: how would you envision this?
05:55<TrueBrain>michi_cc: it is funny, I am so used to version pinning my dependencies, that I did not even consider that scenario .. :D
05:55<_dp_>TrueBrain, for example for settings I have this:
05:55<_dp_>I generate this file automatically for every new game version and can use it to parse settings from any save version
05:56<TrueBrain>that is a valid approach
05:56<TrueBrain>one could even add an option to settingsgen to generate that JSON blob for you, if you so would like
05:56<_dp_>also can use it in server config system that has nothing to do with savegames on a surface
05:58<_dp_>yeah, and same approach can be extented to other chunks as well
05:58<_dp_>I even have something similar, just not as readable
05:59<_dp_>point is, that works much better for backwards compatibility imo, but offers no forward compatibility since you need a new schema to parse new games
05:59<TrueBrain>and 9322 solves that part ;)
05:59<TrueBrain>as the schema is embedded in the savegame now
05:59<TrueBrain>so after that PR, you can stop creating that JSON blob
06:00<TrueBrain>which would mean we could publish the JSON blob for all chunks once
06:00<_dp_>yeah, but it loses a lot in the process
06:00<TrueBrain>and never have to touch it again :D
06:00<TrueBrain>huh? what does it lose by embedding the schema? :)
06:00<_dp_>like server configuration can't use embedded schema because it has no save
06:01<_dp_>serverstat needs settings defaults that embedded schema doesn't have
06:01<TrueBrain>the first one I don't really get
06:01<_dp_>also some way to handle renaming of settingss
06:01<TrueBrain>the second one is a niche problem, isn't it?
06:02<_dp_>well, that's a real world example
06:02<TrueBrain>sure; but it is one tool that needs defaults
06:02<TrueBrain>it can get that in various of ways
06:02<TrueBrain>not sure how that stands in the way of embedding the schema in the savegame?
06:02<TrueBrain>there will always be tooling that needs more information; but even in the code we don't store what the defaults were for older savegame versions
06:03<_dp_>it doesn't stand in a way, it just gains nothing from it
06:03<_dp_>only disadvantage of having to parse table chunk as well now
06:03<TrueBrain>so 90% of the tools gain something from this, but 10% doesn't gain everything from it. That is fine, isn't it?
06:03<_dp_>where did 90% come from? I have about 5 tools and only one that possibly gains something is difftool
06:04<TrueBrain>your tools are not the whole universe of course :P But BaNaNaS tooling benefits (greatly even) from this, the dude on reddit that is creating maps based on savegames does, etc etc
06:04<_dp_>and approach with schema offers the same advantages anyway
06:04<TrueBrain>instead of having to find an alternative way to get the schema, it is now right there
06:04<TrueBrain>that is always a benefit, in my view
06:06<_dp_>dunno about bananas but somewhat doubt dude on reddit. He already parses a lot of what he can but a lot of what he needs isn't even in the savegame (like town names).
06:07<_dp_>Probably he doesn't need to deal with old formats and just require users to convert with openttd, so that's a huge benefit for him, yes
06:08<TrueBrain>also what BaNaNaS will do: load old games, save them again, read it
06:08<TrueBrain>means I can remove all the "old savegame" stuff
06:08<TrueBrain>which is pretty sweet :)
06:09<_dp_>anyway, it all comes to forward compatibility
06:10<_dp_>that's indeed a big advantage of 9322 imo, it should be its selling point
06:10<_dp_>but then again, why string field ids, not integer?
06:11<_dp_>integer you can just fix forever to id the field when with strings you have the whole renaming issue
06:11<TrueBrain>that would require yet-another-lookup-table, and I personally do not really fancy that.
06:11<_dp_>renaming "alias" table is just the same
06:11<TrueBrain>most of the times, a rename also means the intention changes
06:12<TrueBrain>which I already noticed with some names, as Rb asked me to rename a few
06:12<TrueBrain>so I am not sure it is a bad thing
06:12<_dp_>except how tooling will get renaming table is unclear and non-changeable ids are easy to guarantee
06:12<TrueBrain>yeah, but this is exactly the reason not to do that. If the name changes, it is likely the assigned value to the field changed too. So tooling should be aware of this rename, and adjust according, I think
06:13<_dp_>well, that basically means renaming is impossible and should be done by removing and readding the field
06:13<TrueBrain>that is what a rename in general is ;) But yeah, I would be fine with that as solution to renaming
06:14<_dp_>and old name is forever reserved and can't be used
06:15<TrueBrain>for OpenTTD it would be slightly different, as it needs to read the old field, assign it its new meaning, and store it as the new field, but that is just "how to do this in OpenTTD"
06:15<TrueBrain>staying backwards compatible is always tricky .. but nothing tooling should worry about
06:18-!-Samu [] has joined #openttd
06:18-!-Samu is "realname" on #openttd
06:18<_dp_>that's pretty much what I was talking about basic changes
06:18<_dp_>so in openttd if field is removed it now has to be put in some dumpster and never be used again
06:19<_dp_>and tooling is guaranteed that openttd does exactly that and field won't resurrect with different meaning in the future
06:19<_dp_>that's a nice forward compatibility guarantee to have and would be cool if that was actually documented somewhere
06:20<Samu>ship acceleration formula is just v->cur_speed + 1 every tick?
06:20<_dp_>basically, there is indeed no specific advantage to integer id's if you work with string id's as if they're integer ;)
06:20<TrueBrain>we have very little documented on how to deal with the content of chunks, as reality is nobody would read it ... so I wonder what an effective way is there
06:20<TrueBrain>_dp_: to word it differently, you want an unique-set .. either integers or strings, but they have to be unique for ever and ever
06:21<TrueBrain>removing of fields on its own rarely happens .. mostly we change the meaning of a field, causing it to be removed and a new one to be added
06:21<TrueBrain>this means afterload kicks in
06:21<_dp_>yeah, I guess, have id be forever bound to the field interpretation
06:21<TrueBrain>and both fields are still in the code of OpenTTD
06:21<TrueBrain>so in the general sense, this will work out itself just fine
06:22<TrueBrain>there are of course exceptions, where a field becomes completely redundant
06:22<TrueBrain>I have seen 1 or 2 during this work
06:22<TrueBrain>(basically, a removed feature in one case, and something that got moved from A to D in another)
06:22<TrueBrain>removing features is really unlikely, so I am not that worried about that case
06:26<_dp_>also, there is a similar guarantee that can be helpful for patches (or at least cmclient for sure) - have some field naming range that is guaranteed not to be used by the game.
06:26<_dp_>like, fields that start with __ or smth
06:27<_dp_>it's probably going to be true anyway but if it's documented it will provide a uniform way of doing it that is guaranteed not to break with master changes
06:28<_dp_>same thing with chunks, having a way to add custom chunk that's just ignored will be nice
06:28<TrueBrain>that is rather difficult, as I do not look at OpenTTD as a <upstream> vs <forks>
06:28<TrueBrain>as an example, say you make cmclient based on JGRPP
06:28<TrueBrain>he uses __, and you use __
06:28<TrueBrain>that still clashes
06:29<TrueBrain>some kind of fork-depending prefix would solve that
06:29<TrueBrain>for example, it is really unlikely we would even name a field "cm_NNN" or "jgrpp_NNN"
06:29<_dp_>master is way more dynamic than any of the patches so that's the main issue
06:30<_dp_>and, yeah, in that range patchpacks can add their own subranges
06:30<TrueBrain>so I think it is save to use names like that
06:30<TrueBrain>but guarantees .. I do not think that works
06:30<TrueBrain>still no clue why we guarantee "backwards compatibility" :P
06:31<_dp_>why? it's not hard to dedicate __ range for patchpacks, who's going to use that anyway?
06:31<TrueBrain>but that is nitpicking from my part; I think in general we can safely assume a name like "cm_NNN" is safe, or if you like, "__cm_NNN" I am 100% sure about we would never use :P
06:31-!-MTDL [] has joined #openttd
06:31-!-MTDL is "MTDL" on #openttd
06:31<_dp_>and doesn't even have to be in the code, just savegaem docs would suffice
06:31<TrueBrain>that doesn't even need documentation tbh :D
06:31<TrueBrain>but sure, we can write down some guidelines on that part
06:32<MTDL>Hi, I'm trying to work on a custom client but am running into difficulties with compiling the project once I start including headers from other files like company_base.h
06:32<_dp_>well, "cm_NNN" is generally "mmm_NNN" which I'm pretty sure can conflict with something
06:32<MTDL>Specifically, clang apparently can't resolve the numeric types like uint32 and byte:
06:33<TrueBrain>MTDL: without seeing the diff, a bit hard to help out .. but in general: make sure stdafx.h is included before any other include
06:33<TrueBrain>should be the top include in any file
06:34<MTDL>My file is literally only #include "company_base.h"
06:35<MTDL>Including #include<stdafx.h> does solve it
06:35<TrueBrain>see any other .cpp file, it always start with stdafx.h and ends with safeguard
06:36<TrueBrain>those 2 are really important :)
06:36<TrueBrain>all other includes should be between those 2 lines
06:36<MTDL>ah that's true, I was too focused on the header files
06:37<MTDL>Whenever I open one of the other header files in clangd I get the same errors
06:37<TrueBrain>OpenTTD pre-dates unified "uint32" etc, so we did it all ourselves :D
06:38<MTDL>It isn't linked on the docs so I figured it was something external
06:39<MTDL>thanks for pointing that out
06:44<MTDL>Now I can really get started
06:46<Samu>are there ships that have a max speed of 128 km/h?
06:46<Samu>i think i just found a bug
06:47<TrueBrain>MTDL: enjoy :D
06:47<@DorpsGek>[OpenTTD/OpenTTD] TrueBrain updated pull request #9322: Feature: store table headers for each chunk in savegame
06:47<TrueBrain>_dp_: added words for __ stuff
06:49<@DorpsGek>[OpenTTD/OpenTTD] TrueBrain updated pull request #9322: Feature: store table headers for each chunk in savegame
06:49<Samu>question: if ((byte)++spd == 0)
06:49<Samu>if spd is 256
06:49<Samu>what will the comparison be?
06:49<Samu>257 == 0? or 0 == 0?
06:50<milek7>byte value is 0-255
06:50<milek7>and unsigned overflow is defined to wrap around
06:51<Samu>spd is a uint, bye
06:51<_dp_>TrueBrain, yeah, perfect :)
06:51<Samu>by the way
06:52-!-felix [] has quit [Read error: No route to host]
06:52<_dp_>TrueBrain, what do you think of adding skippable chunks as well?
06:53-!-felix [] has joined #openttd
06:53-!-felix is "Felix Kaechele" on #osm-ca #openttd
06:53<_dp_>though naming is a bit constricted for those I guess
06:53<_dp_>but the reasoning is pretty much the same
06:54<Samu>hmm seems the comparison is 1 == 0
06:54<Samu>i thought it would be 0 == 0
06:55<LordAro>Samu: prefix ++ means increment happens first
06:56<LordAro>so you're comparing 257 == 0
06:56<Samu>i think it's 1 == 0
06:56<_dp_>though it looks like in cmclient case I can shove all the custom data to existing chunks
06:56<LordAro>then the cast happens, so 256 -> 0, 257 -> 1
06:56<LordAro>1 == 0
06:57<Samu>regardless, if a ship has a speed of 128 km/h, the acceleration looks bugged
06:57<Samu>but i need a real ship to test
07:00<Samu>squid ate fish doesn't have a 128 km/h ship
07:01<MTDL>Can I set up a secondary config folder for a second openttd version?
07:04<Samu>wow, nobody make a ship moving at 128 km/h
07:04<Samu>the newgrfs i found, have none
07:05<LordAro>yes, use -c commandline flag
07:07<MTDL>oh right thanks
07:08<TrueBrain>_dp_: I have nothing against that, but the current code does :P It dates back from a time where things were different, and patchpacks were few and far apart. It protects against developers doing stupid things and giving them an early indication of that
07:08<TrueBrain>I think it is out-dated
07:08<TrueBrain>but .. that would be a new PR for sure :)
07:08<TrueBrain>I tried my best to not touch chunks itself :P
07:09<MTDL>Just noticed that if you shift click on a settings option it shows "Estimated cost: 0"
07:12<TrueBrain>happens in more places, it is really funny :P
07:15<MTDL>btw is there a setting to automatically unpause when a save game is loaded?
07:16<Samu>enough looking for me
07:17<Samu>there are no 128 km/h newgrf ships
07:20<@Rubidium>probably because 128 km/h is not reachable
07:34<TrueBrain>MTDL: not that I know of; I use a game_start.scr script to unpause loaded games
07:34<FLHerne>Samu: 127km/h-ish is the highest speed that a ship action0 can set
07:34<FLHerne>0B is a byte `Speed in mph*3.2`
07:34<FLHerne>so the highest possible speed is 255/2
07:35<FLHerne>This annoys people who want to make ekranoplans
07:35<FLHerne>Road vehicles were the same until someone added an extra property that can set higher speeds
07:36<TrueBrain>and didn't do ships while at it? Tssk :P
07:37<MTDL>I guess I could just unpause manually in the code
07:37<MTDL>btw where would be a good place to hook into for one time setup code whenever a game is loaded?
07:38<TrueBrain>look for game_start.scr I believe
07:38<TrueBrain>that is called when a game is just started
07:39<MTDL>ah I see two places in openttd.cpp where it is executed
07:44<MTDL>Once when a game is loaded and once when a new game is started
07:44<MTDL>I guess I'll hook in afterwards to set up everything I need
07:47<@peter1138>Do I need to use SSIS or Microsoft Flows or what?
07:49<@peter1138>11:37 < TrueBrain> OpenTTD pre-dates unified "uint32" etc, so we did it all ourselves :D
07:49<@peter1138>We could do a PR to fix all that ;)
07:49<TrueBrain>I would say, go for it :P
07:50<TrueBrain>that would mess with a lot of people's head :D
07:51<@peter1138>I like the inconsistency of using byte/uint8, and word/dword/short/etc/etc...
08:02-!-Wuzzy [] has joined #openttd
08:02-!-Wuzzy is "Wuzzy" on #openttd
08:14<Samu>thanks FLHerne
08:21<TrueBrain>wow .. did not know we had 70 (!) settings to tune the pathfinder
08:22<TrueBrain>that sounds a bit overkill :D
08:22<Samu>im trying to calculate how many tiles are travelled by a ship going in axis direction at a given speed
08:23<Samu>and I don't seem to get a match
08:26<Samu>a ship travels 1999 tiles at 94 km/h. The timetabled says 586 days
08:26<Samu>@calc 586 * 74 * 2 * 94 / 256 / 16
08:26<@DorpsGek>Samu: 1990.33984375
08:26<Samu>1990 tiles
08:27<Samu>it's not 1999 :(
08:27<Samu>why don't I get a match
08:29<Samu>@calc 390 * 74 * 2 * 94 * 3 / 4 / 256 / 8
08:29<@DorpsGek>Samu: 1986.943359375
08:35<@Rubidium>missing km/h -> km-ish/h conversion?
08:39<@Rubidium>or what if the speed is actually 94.5 but visualised rounded down? And all other kinds of fun rounding excercises
08:41<@peter1138>acceleration time?
08:41<TrueBrain>hammer time!
08:41<@Rubidium>something like not having travelled 1999 full tiles but 1998.5 tiles or not having travelled exactly 586 days but 585.8 days or 586.2 days?
08:43-!-glx [] has joined #openttd
08:43-!-glx is "Loïc GUILLOUX" on #openttd.noai #openttd.notice #openttd
08:43-!-mode/#openttd [+v glx] by ChanServ
08:47-!-WormnestAndroid [] has quit [Remote host closed the connection]
08:48-!-WormnestAndroid [] has joined #openttd
08:48-!-WormnestAndroid is "WormnestAndroid" on #openttd
08:51<Samu>local days_in_transit = (distance * 256 * 16) / (2 * 74 * max_speed);
08:51<Samu>how do i simplify this
08:52<+glx>you can move the 2 on the other side of /
08:54<+glx>or just do (distance * 27) / max_speed
08:57<+glx><TrueBrain> wow .. did not know we had 70 (!) settings to tune the pathfinder <-- and often, everything is broken if you change one of them
08:57<TrueBrain>insane :P
08:58<Samu>local days_in_transit = (distance * 1024) / (37 * max_speed);
09:01<+glx>ah yes I was using the programmer mode of windows calc, it rounds to integers
09:16<MTDL>I wonder if it's decidable whether a train can get stuck given a rail network graph
09:16<MTDL>or whether there can be a gridlock
09:21<Timberwolf>I ran into similar fun with AI development and setting penalty weights for all the different ways it can lay track.
09:22<FLHerne>I don't think you can determine it in general; it depends on the number of trains and their orders
09:22<Timberwolf>There's a fine balance between, "sensible, good-looking routes", "utter chaos" and "AI takes 9 years of game time to find a route it's happy with"
09:23<+glx>TrueBrain: what I was talking about intellisense vs
09:24<Timberwolf>I wanted to get an AI which used more "human-like" rules, e.g. went out of its way to reuse existing track, tried to lay double track side by side, etc.
09:24<+glx>quite complex to do in AI
09:24<FLHerne>i.e. a simple "two branches with a signal each into one platform" can't deadlock if each branch has a train, but will if there are two on one branch
09:24<Timberwolf>At least, in reasonable time.
09:25<TrueBrain>glx: ah, yes, never noticed that .. but indeed
09:25<TrueBrain>VSCode fails to understand the function it is in too
09:25<Timberwolf>It's *possible* to make an A* algorithm do it, but it will probably explore almost the entire map before it goes, "yep, that's a minimum"
09:25<+glx>and it was worse with FOR_ALL macros
09:25-!-WormnestAndroid [] has quit [Ping timeout: 480 seconds]
09:26<TrueBrain>good thing those are almost gone :P
09:26<+glx>as it fails to see the function, but lists FOR_ALL in the list
09:26-!-WormnestAndroid [] has joined #openttd
09:26-!-WormnestAndroid is "WormnestAndroid" on #openttd
09:26<Timberwolf>Also I find most AI pathfinders only attempt to lay track, whereas the pathfinder should really be exploring "lay track and terraform" (which gets combinatorially worse)
09:28-!-Gustavo6046 [~Gustavo60@] has quit [Quit: ZNC 1.8.2 -]
09:28-!-Gustavo6046 [~Gustavo60@] has joined #openttd
09:28-!-Gustavo6046 is "Gustavo Rehermann <>" on #openttd #llvm
09:28<Timberwolf>The trick I was really looking for was messing with heuristic functions so rather than trying to follow all my rules *and* find an optimal route, it was able to go, "follow the rules unless you really cannot, and take a vaguely good-enough route, but accept a few compromises so you can do it quickly"
09:54<TrueBrain>hmm ... how to do string-hex -> int in C++ ... eeeuuuhhhhh
09:58<TrueBrain>ha, in this same file I am working in we have code for that, sweet :D
09:58-!-nielsm [] has joined #openttd
09:58-!-nielsm is "Niels Martin Hansen" on #openttd
10:32<@DorpsGek>[OpenTTD/OpenTTD] embeddedt updated pull request #9191: Codechange: Disable pointer locking by default
10:34<@DorpsGek>[OpenTTD/OpenTTD] TrueBrain commented on pull request #9191: Codechange: Disable pointer locking by default
10:34<@DorpsGek>[OpenTTD/OpenTTD] embeddedt commented on pull request #9191: Codechange: Disable pointer locking by default
10:37<@DorpsGek>[OpenTTD/OpenTTD] embeddedt updated pull request #9191: Codechange: Disable pointer locking by default
10:38<@DorpsGek>[OpenTTD/OpenTTD] embeddedt updated pull request #9191: Codechange: Disable pointer locking by default
10:41<TrueBrain>Codechange .. hihi, that is a bit of a lie :P
10:42<TrueBrain>well, everything is a codechange in the end, ofc
10:50<@DorpsGek>[OpenTTD/OpenTTD] TrueBrain approved pull request #9191: Codechange: Disable pointer locking by default for Emscripten
10:51<@DorpsGek>[OpenTTD/OpenTTD] TrueBrain updated pull request #9298: Change: move secrets out of "openttd.cfg" into "secrets.cfg"
10:52<@DorpsGek>[OpenTTD/OpenTTD] TrueBrain commented on pull request #9298: Change: move secrets out of "openttd.cfg" into "secrets.cfg"
10:53<TrueBrain>well, it became from_chars in the end anyway :D
10:53-!-sla_ro|master [slamaster@] has quit []
10:55<TrueBrain>someone is trying to sell chairs on info@
10:55<TrueBrain>if anyone is interested ..
10:57-!-snail_UES_ [] has joined #openttd
10:57-!-snail_UES_ is "Jacopo Coletto" on #openttd
11:23<Samu>ships keep on stacking on top of each other, no matter what i do
11:23<Samu>this hurts station cargo ratings
11:24<Samu>i can't know if I need to be adding ships when cargo waiting goes over 100
11:24<Samu>oh well
11:25<Samu>i can reduce route distances so that it never hurts rating performance
11:25<Samu>40 days in transit is the ideal number
11:31-!-snail_UES_ is now known as Guest801
11:31-!-snail_UES_ [] has joined #openttd
11:31-!-snail_UES_ is "Jacopo Coletto" on #openttd
11:36-!-Gustavo6046 [~Gustavo60@] has quit [Quit: ZNC 1.8.2 -]
11:37-!-Guest801 [] has quit [Ping timeout: 480 seconds]
12:00-!-Progman [] has joined #openttd
12:00-!-Progman is "Peter Henschel" on #openttd
12:04<@DorpsGek>[OpenTTD/OpenTTD] rubidium42 commented on pull request #9398: Fix: [Squirrel] Enforce comma usage in function calls
12:12<@peter1138>Rebase from 5 months ago is... painful.
12:15<blathijs>I think I still have a new map array branch somewhere from 10+ years ago, maybe I should try rebasing that one when I have some spare time? ;-)
12:17-!-Gustavo6046 [~Gustavo60@] has joined #openttd
12:17-!-Gustavo6046 is "Gustavo Rehermann <>" on #openttd #llvm
12:18<TrueBrain>Sounds a useful waste of your spare time indeed :D :D
12:18<TrueBrain>Also: hi :)
12:19<blathijs>I wonder how much of the OpenTTD code I would still recognize, after so long :-)
12:22-!-Gustavo6046 [~Gustavo60@] has quit [Quit: ZNC 1.8.2 -]
12:30<TrueBrain>Is A* code still there ..... :p
12:30<+glx>maybe, if it was NPF
12:31<LordAro>NPF has a nice function called AStar iirc
12:32<TrueBrain>AyStar, if I remember correctly :D
12:33<LordAro>close enough
12:33<+glx>aystar.cpp is still here
12:33-!-Gustavo6046 [~Gustavo60@] has joined #openttd
12:33-!-Gustavo6046 is "Gustavo Rehermann <>" on #openttd #llvm
12:37-!-Gustavo6046_ [~Gustavo60@] has joined #openttd
12:37-!-Gustavo6046_ is "Gustavo Rehermann <>" on #openttd #llvm
12:39<@DorpsGek>[OpenTTD/OpenTTD] TrueBrain merged pull request #9191: Codechange: Disable pointer locking by default for Emscripten
12:41-!-Gustavo6046 [~Gustavo60@] has quit [Ping timeout: 480 seconds]
12:41-!-Gustavo6046_ is now known as Gustavo6046
12:42<@DorpsGek>[OpenTTD/OpenTTD] TrueBrain merged pull request #9376: Feature: Show the number of clients and companies in the online players window
12:46-!-Gustavo6046 [~Gustavo60@] has quit [Read error: Connection reset by peer]
12:50-!-debdog [~debdog@2a00:79c0:63f:1c00:7a24:afff:fe8a:d04d] has quit [Quit: Initiating getting-the-hell-out-of-here maneuver!]
12:51-!-Gustavo6046 [~Gustavo60@] has joined #openttd
12:51-!-Gustavo6046 is "Gustavo Rehermann <>" on #openttd #llvm
12:53-!-WormnestAndroid [] has quit [Ping timeout: 480 seconds]
12:56-!-WormnestAndroid [~WormnestA@] has joined #openttd
12:56-!-WormnestAndroid is "WormnestAndroid" on #openttd
12:58-!-gelignite [] has joined #openttd
12:58-!-gelignite is "gelignite" on #debian #llvm #openttd
12:59-!-Taschi [~Taschi@2001:16b8:a080:5b00:2d1d:7a17:5162:2aa5] has joined #openttd
12:59-!-Taschi is "realname" on #openttd
12:59<@DorpsGek>[OpenTTD/OpenTTD] Taschi120 updated pull request #9395: Change #9188: Netsave now behaves like autosave
13:01<Taschi>i was so excited to see four new messages just moments after coming online but turns out it was just NickServ
13:01<TrueBrain>poor NickServ .. his messages are not appreciated :(
13:02<Taschi>poor Nicholas Serv is just too predictable
13:02<Taschi>question - i've had a couple of commits in PR 3935, most of them just fixing code style issues - do you prefer to have them as individual commits or should i go and squash them?
13:03<Taschi>also i'm sorry for being a big stupidhead
13:03<TrueBrain>it is up to you; we can either squash it on merge, which is fine in most cases
13:03<TrueBrain>or you can do it yourself .. we do not really care, honestly
13:04<TrueBrain>and why would you think you are a big stupidhead?
13:04-!-WormnestAndroid [~WormnestA@] has quit [Ping timeout: 480 seconds]
13:05<Taschi>i'm just really struggling to read over codestyle documentation and follow it
13:05<TrueBrain>well, just looking at my recent PRs, 90% of the time a push is followed by yet-another-push directly after ... as I fucked something up and I needed to fix it :P That is just how we roll ;)
13:05<TrueBrain>it is really pretty normal to need a few times to get things just right
13:06<Taschi>tbh it's probably how most software projects run
13:06<Taschi>but i know how frustrating it is to have to deal with a new team member who has not figured out yet how to properly format their code
13:06<TrueBrain>well, we also still have to deal with people around for 17 years who have to figure out how to properly format their code :D
13:07<TrueBrain>I wouldn't worry too much about it :)
13:07<Taschi>tee hee
13:07<Taschi>at work we have SonarQube but it's so poorly configured for our project that it's basically useless
13:08<TrueBrain>I love that in the Python world you just have "black"
13:08<TrueBrain>and that is the end of it :D
13:10<Taschi>there is a similar thing for Java but tbh I don't like it
13:10<Taschi>for example when i chain lots of function calls (e.g. in a builder pattern or working on collections with lambdas) i like to indent them in a way that "makes sense", same for line breaks
13:11<Taschi>and the code formatter then says "yoink, that line is too short, let me pull up another half-statement from the next line"
13:11<TrueBrain>I think in general for bigger projects, any automated coding style is always better than having humans waste their time doing it :P
13:11<TrueBrain>but "black" is one of the few I knew that is right in 99% of the time
13:11<TrueBrain>so the 1% you just have to suck it up
13:12<TrueBrain>that said ... I do change the linelength to more than 79
13:12<TrueBrain>as 79 is stupid
13:12<Taschi>these tools really can go only so far... e. g. they can enforce that Javadoc comments exist or variable names follow camelCase, but they can't enforce that comments are legible or variable names make sense
13:13<Taschi>which leads to gems like "@param insurance Insurance"
13:13<TrueBrain>yeah .. the human is always still needed to slap lazy developers around
13:13<Taschi>which we have probably 500 instances of in our codebase and YES I COULD HAVE GUESSED THAT
13:13<TrueBrain>like me .. always forgetting doxygen :D
13:14<Taschi>here it's mostly people who are under the illusion that their code is so compact and expressive that they do not need documentation
13:14<TrueBrain>and sometimes that is true
13:14<Taschi>which works GREAT in an environment where the average dev spends like two years
13:14<TrueBrain>but .. you just have to suck it up for those moments :D
13:20-!-Flygon [~Flygon@2001:44b8:411e:4e00:6d5f:48ee:3b72:49e4] has quit [Quit: A toaster's basically a soldering iron designed to toast bread]
13:24-!-Wolf01 [] has joined #openttd
13:24-!-Wolf01 is "Wolf01" on #openttd
13:34<@DorpsGek>[OpenTTD/OpenTTD] Taschi120 commented on pull request #9397: Feature: Persistant rotation of numbered autosave after restart
13:36<+glx>don't worry, I still make code style errors :)
13:36<TrueBrain>glx: btw, your FiosNumberedSaveName is not thread-safe. Not sure if that is worth mentioning in the docs somewhere?
13:37<+glx>I guess the previous static int was not either
13:37<TrueBrain>far less code, so far less chance of hitting it, but indeed
13:38<TrueBrain>and I mostly mean "prefix" btw .. didn't spot the first time it is static :D
13:39<TrueBrain>btw, not saying it is a problem. Was just wondering if it is worth mentioning :)
13:40-!-Smedles [] has quit [Ping timeout: 480 seconds]
13:40<@DorpsGek>[OpenTTD/OpenTTD] TrueBrain commented on pull request #9397: Feature: Persistant rotation of numbered autosave after restart
13:40<TrueBrain>here a suggestion for it :)
13:42<+glx>ah yes so it's more clear
13:43<+glx>anyway it's only used when constructing the object, so threading should not be a big issue for the particular use case
13:44<TrueBrain>yeah .. it is NOW only used when .. :P :P :P
13:44-!-andythenorth [] has joined #openttd
13:44-!-andythenorth is "andythenorth" on #openttd
13:55<MTDL>Which datastructure do I get the current tiles from?
13:55-!-Gustavo6046 [~Gustavo60@] has quit [Remote host closed the connection]
13:56<MTDL>My goal is to iterate over every tile in the map for a frame and extract the features I need
13:57<TrueBrain>_m1 .. _me
13:58<TrueBrain>or one of the many wrappers that exist for it
13:58<andythenorth>are we really going to wait for frosch and make him review this? :P
13:58<andythenorth>frosch won't be proud of us
13:58<TrueBrain>andythenorth: I think the amount of people that review NML is heavily limited anyway .. ;)
13:59<TrueBrain>MTDL: shows the exact details
13:59<andythenorth>I think I resigned my reviewer rights
14:00<andythenorth>it's funny, if I self-approved 7 people would show up to tell my why I am wrong, then revert it
14:00<andythenorth>but eh
14:00-!-Smedles [] has joined #openttd
14:00-!-Smedles is "Paul Smedley" on #openttd
14:00<TrueBrain>I can never remember what is what .. as GitHub doesn't render it .. ugh ..
14:02-!-Gustavo6046 [~Gustavo60@] has joined #openttd
14:02-!-Gustavo6046 is "Gustavo Rehermann <>" on #openttd #llvm
14:02<MTDL>TrueBrain, does that page exist in ?
14:03<TrueBrain>no clue
14:03<MTDL>It is an enigma
14:03<MTDL>so far the hardest part for me is to find the global variables that are scattered throughout the code
14:03<MTDL>Like _local_company, _m1 etc.
14:28-!-Gustavo6046 [~Gustavo60@] has quit [Remote host closed the connection]
14:35-!-Gustavo6046 [~Gustavo60@] has joined #openttd
14:35-!-Gustavo6046 is "Gustavo Rehermann <>" on #openttd #llvm
14:50-!-sla_ro|master [slamaster@] has joined #openttd
14:50-!-sla_ro|master is "slamaster" on @#sla #openttd
14:51-!-Taschi [~Taschi@2001:16b8:a080:5b00:2d1d:7a17:5162:2aa5] has quit [Quit: Leaving]
14:53-!-Gustavo6046_ [~Gustavo60@] has joined #openttd
14:53-!-Gustavo6046_ is "Gustavo Rehermann <>" on #openttd #llvm
14:56-!-Gustavo6046 [~Gustavo60@] has quit [Read error: Connection reset by peer]
14:56-!-Gustavo6046_ is now known as Gustavo6046
14:57-!-MTDL [] has quit [Quit: Leaving]
15:00<@DorpsGek>[OpenTTD/OpenTTD] DorpsGek pushed 1 commits to master
15:00<@DorpsGek> - Update: Translations from eints (by translators)
15:03<+glx><TrueBrain> _m1 .. _me <-- it's _m and _me, and should never be accessed directly :)
15:04<TrueBrain>ugh, save chunks spoiled me :P
15:05<+glx>of course save/load is an exception
15:08<@peter1138>Does OpenTTD still compile on SunOS/Solaris?
15:08<+glx>if it has cmake and c++17
15:08<TrueBrain>what prompted this question?
15:09<@peter1138>What about Haiku?
15:11<+glx>I think it was tested quite recently
15:12<+glx>yup last compile fixes for haiku merged a month ago
15:14<@peter1138>TrueBrain, *nothing* innocent whistle...
15:14<TrueBrain>I am slightly scared now :P
15:15<TrueBrain>owh boy ... you really did that .... lol
15:15<@peter1138>Main issue: half the code is now my fault ;(
15:15<TrueBrain>well, it would add a bit of sanity, as in, if you are used to other projects ... :P
15:16<TrueBrain>KHRONOS_SUPPORT_INT64 became KHRONOS_SUPPORT_int64t
15:16<TrueBrain>maybe replace case sensitive? :D
15:16<@peter1138>Hmm, I reverted that file. I guess not properly.
15:16<TrueBrain>Showing 566 changed files with 5,639 additions and 5,718 deletions. <- lol
15:17<@peter1138>Anyway, more reasonable would be including cstdint to typedef uint16_t uint16; etc... I think
15:17<TrueBrain>less code change for sure
15:18<@peter1138>As we're on C++17, cstdint should be available, so the weirdness for Haiku/Solaris should be... er... gone? I dunno...
15:25-!-y2kboy23_ [] has quit [Remote host closed the connection]
15:28-!-y2kboy23 [] has joined #openttd
15:28-!-y2kboy23 is "Got ZNC?" on #openttd
15:30<TrueBrain>I cannot believe you actually did this :P
15:34<@peter1138>Tbh, it was five minutes with VS Code's search & replace ;)
15:34<@peter1138>If that.
15:41-!-WormnestAndroid [~WormnestA@2607:fb90:88e0:83f:0:1d:e1d2:f501] has joined #openttd
15:41-!-WormnestAndroid is "WormnestAndroid" on #openttd
15:42-!-iSoSyS [] has joined #openttd
15:42-!-iSoSyS is "realname" on #/r/openttd #openttd
15:43-!-iSoSyS [] has quit []
15:46-!-Gustavo6046_ [~Gustavo60@2804:14d:4cd8:96b6:3214:4aff:fe7f:df8b] has joined #openttd
15:46-!-Gustavo6046_ is "Gustavo Rehermann <>" on #openttd #llvm
15:47-!-Gustavo6046 [~Gustavo60@] has quit [Remote host closed the connection]
15:47-!-Gustavo6046_ is now known as Gustavo6046
15:53-!-gelignite [] has quit [Quit: Stay safe!]
15:56-!-andythenorth_ [] has joined #openttd
15:56-!-andythenorth_ is "andythenorth" on #openttd
15:57-!-andythen_ [] has joined #openttd
15:57-!-andythen_ is "andythenorth" on #openttd
15:59-!-andythen_ [] has quit []
16:02-!-andythenorth [] has quit [Ping timeout: 480 seconds]
16:04-!-andythenorth_ [] has quit [Ping timeout: 480 seconds]
16:08<nielsm> good to know
16:14<TrueBrain>nielsm: tnx for sharing .. C++ is full of these pits :P
16:21-!-andythenorth [] has joined #openttd
16:21-!-andythenorth is "andythenorth" on #openttd
16:44-!-Gustavo6046 [~Gustavo60@2804:14d:4cd8:96b6:3214:4aff:fe7f:df8b] has quit [Quit: ZNC 1.8.2 -]
16:51-!-nielsm [] has quit [Ping timeout: 480 seconds]
16:52-!-Gustavo6046 [~Gustavo60@2804:14d:4cd8:96b6:5cca:9041:ea3e:7195] has joined #openttd
16:52-!-Gustavo6046 is "Gustavo Rehermann <>" on #openttd #llvm
16:52-!-Gustavo6046 [~Gustavo60@2804:14d:4cd8:96b6:5cca:9041:ea3e:7195] has quit []
16:54-!-Gustavo6046 [~Gustavo60@2804:14d:4cd8:96b6:5cca:9041:ea3e:7195] has joined #openttd
16:54-!-Gustavo6046 is "Gustavo Rehermann <>" on #openttd #llvm
16:54-!-Samu [] has quit [Quit: Leaving]
17:13-!-Gustavo6046 [~Gustavo60@2804:14d:4cd8:96b6:5cca:9041:ea3e:7195] has quit [Quit: ZNC 1.8.2 -]
17:15-!-Wolf01 [] has quit [Quit: Once again the world is quick to bury me.]
17:16-!-WormnestAndroid [~WormnestA@2607:fb90:88e0:83f:0:1d:e1d2:f501] has quit [Ping timeout: 480 seconds]
17:21-!-Gustavo6046 [~Gustavo60@2804:14d:4cd8:96b6:5cca:9041:ea3e:7195] has joined #openttd
17:21-!-Gustavo6046 is "Gustavo Rehermann <>" on #openttd #llvm
17:29-!-Gustavo6046 [~Gustavo60@2804:14d:4cd8:96b6:5cca:9041:ea3e:7195] has quit [Remote host closed the connection]
17:29-!-k32n13 [] has joined #openttd
17:29-!-k32n13 is "" on #openttd
17:31-!-andythenorth [] has quit [Quit: andythenorth]
17:31-!-Gustavo6046 [~Gustavo60@2804:14d:4cd8:96b6:2366:7d24:dce9:4acf] has joined #openttd
17:31-!-Gustavo6046 is "Gustavo Rehermann <>" on #openttd #llvm
17:34-!-debdog [~debdog@2a00:79c0:63f:1c00:7a24:afff:fe8a:d04d] has joined #openttd
17:34-!-debdog is "Wowbagger" on #openttd
18:03-!-Gustavo6046_ [~Gustavo60@] has joined #openttd
18:03-!-Gustavo6046_ is "Gustavo Rehermann <>" on #openttd #llvm
18:04-!-jottyfan [] has joined #openttd
18:04-!-jottyfan is "jottyfan" on #openttd
18:07-!-Gustavo6046 [~Gustavo60@2804:14d:4cd8:96b6:2366:7d24:dce9:4acf] has quit [Ping timeout: 480 seconds]
18:07-!-Gustavo6046_ is now known as Gustavo6046
18:08-!-snail_UES_ [] has quit [Quit: snail_UES_]
18:12-!-Progman [] has quit [Remote host closed the connection]
18:14-!-jottyfan [] has quit [Quit: jottyfan]
18:19-!-HerzogDeXtEr [] has quit [Read error: Connection reset by peer]
18:25-!-Gustavo6046 [~Gustavo60@] has quit [Quit: ZNC 1.8.2 -]
18:26-!-Gustavo6046 [~Gustavo60@2804:14d:4cd8:96b6:2366:7d24:dce9:4acf] has joined #openttd
18:26-!-Gustavo6046 is "Gustavo Rehermann <>" on #openttd #llvm
18:36-!-Gustavo6046 [~Gustavo60@2804:14d:4cd8:96b6:2366:7d24:dce9:4acf] has quit [Quit: ZNC 1.8.2 -]
18:36-!-Gustavo6046 [~Gustavo60@] has joined #openttd
18:36-!-Gustavo6046 is "Gustavo Rehermann <>" on #openttd #llvm
18:56-!-sla_ro|master [slamaster@] has quit []
18:59-!-tokai [] has joined #openttd
18:59-!-tokai is "Christian Rosentreter" on #openttd
18:59-!-mode/#openttd [+v tokai] by ChanServ
19:05-!-tokai|noir [] has quit [Ping timeout: 480 seconds]
19:19-!-Tirili [] has joined #openttd
19:19-!-Tirili is "realname" on #openttd
19:20<Tirili>For a town center, how can I select which enemy to attack?
19:24-!-k32n13 [] has left #openttd [I'm a happy Miranda NG user! Get it here:]
19:26<TrueBrain>If you are seeing enemies in OpenTTD, you started the wrong game I am afraid
19:27<dwfreed>need a "drive-bys" mod
19:27<Tirili>Oh well
19:28<Tirili>No wonder there are now answers. :D
19:28<Tirili>Will try again in #0ad.
19:28-!-tokai|noir [] has joined #openttd
19:28-!-tokai|noir is "Christian Rosentreter" on #openttd
19:28-!-mode/#openttd [+v tokai|noir] by ChanServ
19:29<TrueBrain>And he was trying to make those trains attack those busses ... :D
19:31-!-Gustavo6046 [~Gustavo60@] has quit [Quit: ZNC 1.8.2 -]
19:33-!-Gustavo6046 [~Gustavo60@] has joined #openttd
19:33-!-Gustavo6046 is "Gustavo Rehermann <>" on #openttd #llvm
19:35-!-tokai [] has quit [Ping timeout: 480 seconds]
19:45<Timberwolf>Not my fault if an AI decides to hurl trucks in front of my railway.
19:46-!-Gustavo6046 [~Gustavo60@] has quit [Remote host closed the connection]
19:46-!-Gustavo6046_ [~Gustavo60@] has joined #openttd
19:46-!-Gustavo6046_ is "Gustavo Rehermann <>" on #openttd #llvm
19:47-!-Gustavo6046_ is now known as Gustavo6046
20:02-!-Tirili [] has quit [Ping timeout: 480 seconds]
20:02-!-Gustavo6046 [~Gustavo60@] has quit [Quit: ZNC 1.8.2 -]
20:12-!-Tirili [] has joined #openttd
20:12-!-Tirili is "realname" on #openttd
20:39-!-Gustavo6046 [~Gustavo60@] has joined #openttd
20:39-!-Gustavo6046 is "Gustavo Rehermann <>" on #openttd #llvm
20:41-!-Gustavo6046 [~Gustavo60@] has quit []
20:54-!-Gustavo6046 [~Gustavo60@] has joined #openttd
20:54-!-Gustavo6046 is "Gustavo Rehermann <>" on #openttd #llvm
22:34-!-glx [] has quit []
22:52-!-Wuzzy [] has quit [Remote host closed the connection]
22:53-!-D-HUND [~debdog@2a00:79c0:671:d300:7a24:afff:fe8a:d04d] has joined #openttd
22:53-!-D-HUND is "Wowbagger" on #openttd
22:57-!-debdog [~debdog@2a00:79c0:63f:1c00:7a24:afff:fe8a:d04d] has quit [Ping timeout: 480 seconds]
23:05-!-WormnestAndroid [~WormnestA@2607:fb90:8911:436:0:18:38bf:6501] has joined #openttd
23:05-!-WormnestAndroid is "WormnestAndroid" on #openttd
23:13-!-WormnestAndroid [~WormnestA@2607:fb90:8911:436:0:18:38bf:6501] has quit [Ping timeout: 480 seconds]
23:13-!-WormnestAndroid [] has joined #openttd
23:13-!-WormnestAndroid is "WormnestAndroid" on #openttd
23:47-!-Tirili [] has quit [Quit: Leaving]
23:59-!-roadt__ [~roadt@] has joined #openttd
23:59-!-roadt__ is "roadt" on #openttd
---Logclosed Tue Jun 29 00:00:48 2021