IRC logs for #openttd on OFTC at 2023-08-15
⏴ go to previous day
00:01:00 <peter1138> talltyler: eol style?
00:03:45 <talltyler> I don’t know what that means, but it was showing me changes I’d made that weren’t even part of either the beginning or ending commit
00:03:51 <talltyler> Just user error I’m sure
00:13:20 *** debdog has quit IRC (Ping timeout: 480 seconds)
01:38:45 *** tokai|noir has joined #openttd
01:38:45 *** ChanServ sets mode: +v tokai|noir
01:41:13 *** tokai has quit IRC (Ping timeout: 480 seconds)
01:41:34 *** Flygon has quit IRC (Quit: A toaster's basically a soldering iron designed to toast bread)
01:51:53 *** Wormnest has quit IRC (Quit: Leaving)
02:25:01 *** debdog has quit IRC (Ping timeout: 480 seconds)
03:59:33 *** leothejewishturtle has quit IRC (Quit: User went offline on Discord a while ago)
04:12:55 *** D-HUND is now known as debdog
06:44:46 <andythenorth> truebrain: the spare MBP has about 500GB free disk space
06:45:44 <andythenorth> I can see now what our April 1 post is going to be 😛
06:49:32 *** HerzogDeXtEr has quit IRC (Read error: Connection reset by peer)
06:51:13 <andythenorth> `GSOrder.InsertOrder(vehicle, 0, destination, 0);` works for me
06:51:43 <andythenorth> not seeing any syntax difference there
06:52:13 <andythenorth> what's the context of the call?
06:52:42 <andythenorth> GS debugging is fairly horrific
06:55:27 <Eddi|zuHause> so does GSOrder ever get properly imported?
06:56:50 <truebrain> poeh, performance measurements are still busy ... creating binaries takes a long long time 😛
07:17:22 <truebrain> funny, using vectors for objects and/or a change for newgrf class (both on the same day, hard to tell which did what) made OpenTTD's memory drop by 4MB. Turns out, those are good things to do 😛
07:19:57 <peter1138> Yeah that one was silly.
07:23:01 *** twb has quit IRC (Remote host closed the connection)
07:23:33 <truebrain> turns out, added "uint64 travel_time_sum" to BaseEdge of the LinkGraph has a huge memory impact on the bigger cargodist games 😄
07:24:04 <truebrain> which goes mostly mitigated later in time by making the edge sparse
07:24:17 <truebrain> but the latter wouldn't have done as much without that change 😛
07:25:42 <Eddi|zuHause> sometimes a thing must get worse to get better :p
07:28:09 <Bouke> Eddi|zuHause: I did add `require("order.nut");` just now, but it makes no difference.
07:28:27 <Bouke> Hmm nvm that is from a library.
07:29:53 <peter1138> Well, I wonder where 4 billion ticks isn't enough...
07:30:30 <peter1138> Horse & cart on a 4kx4k map?
07:30:33 <Bouke> I have `function GetAPIVersion() { return "13"; }`, I would expect that to be the latest API
07:37:41 <truebrain> could I suggest you check `game_changelog.hpp`? 🙂
07:38:30 <truebrain> lolz ... so if you disable cargodist after you enabled it, linkgraph will keep on doing something 🙂
07:39:27 <Bouke> truebrain: Ah... the online docs refer to the nightlies, not 13.4. 😦
07:40:04 <truebrain> right there in the header even!
07:40:04 <Bouke> No orders for me then 😦
07:41:31 <truebrain> okay, I don't understand linkgraph enough to actually understand this, but it explains why the titlegame of 1.4 acts this weird .. linkgraph is constantly doing something at a much higher frequency than would be good for performance measuring 😄
07:41:58 <truebrain> once enabled, ALWAYS ENABLED *evil laughter*
07:42:05 <truebrain> _jgr_: ping for visbility 🙂
07:42:29 <truebrain> I don't see any code that actually allows you to disable linkgraph after you enabled it 🙂
07:42:39 <truebrain> (and debug-statements show it constantly runs still)
07:42:45 <Eddi|zuHause> _jgr_ is now the leading expert on linkgraph?
07:42:53 <truebrain> no, we were talking about it yesterday
07:43:22 <truebrain> owh, he pinged me that after I went to sleep
07:43:25 <truebrain> and Discord didn't tell me
07:45:08 <truebrain> slowly explaining all performance-related changes 🙂
07:46:54 <truebrain> compiling binaries will take another 24h or so, to finish up ... lol
07:48:14 <truebrain> 443 done, 125 more to go
07:53:06 <peter1138> If we want to squeeze our data down a bit, we should rearrange structs so they are better aligned.
07:53:46 <peter1138> This does mean that related things are split and unrelated things come together.
07:54:28 <truebrain> just a cleanup of our structs would also really help 😛
07:54:46 <peter1138> Vehicle has a lot of pointers
07:57:26 <Eddi|zuHause> i think we tried that already... :p
07:58:42 <truebrain> maybe I should have compiled OpenTTD without threads, to avoid the linkgraph issue
07:58:50 <truebrain> bit late now .. not going to recompile 443 binaries 😄
07:59:39 <peter1138> You'd then miss regressions in threading 😉
07:59:42 <Eddi|zuHause> isn't it better to test the binaries people would actually use?
07:59:50 <truebrain> peter1138: it is always something! 😛
08:00:12 <peter1138> Okay, using a remote computer to compile OpenTTD is quite nice, my desktop doesn't grind to a halt. Shame it's slower than my desktop, though.
08:00:30 <truebrain> get a new remote computer!
08:00:49 <peter1138> Get a new desktop and related this to be remote...
08:01:49 <truebrain> to complain again that the remote is slower .......... 😛
08:02:06 <Eddi|zuHause> i tried setting up a remote computer once, but it always caused usability issues with seamless integration into my desktop
08:02:50 <peter1138> vs code does it very well, but that's only vs code.
08:03:21 <Eddi|zuHause> like, if one of them rebooted, trying to weed out all the lost connections
08:05:06 <peter1138> Huh... what is Vehicle::RefitList for?
08:05:46 <Eddi|zuHause> ... listing the available refits, i would assume?
08:06:12 <andythenorth> peter1138: get a MBP, but in the cloud
08:07:03 <alfagamma_0007> You keep referring to it a lot
08:07:07 <peter1138> No, it's not used at all 🙂
08:07:28 <peter1138> It's what professionals use to host highly available websites and server infrastructure.
08:08:27 <Eddi|zuHause> "the cloud" is probably the buzzwordiest misnomer that actually stuck around
08:08:34 <alfagamma_0007> The Mac something
08:08:44 <alfagamma_0007> Eddi|zuHause: Agreed
08:08:57 <andythenorth> Eddi|zuHause: "desktop" is probably second place
08:09:07 <andythenorth> every computing use of it is .... about wrong
08:09:17 <alfagamma_0007> Also AI nowadays is a buzzword as well
08:10:00 <Eddi|zuHause> andythenorth: so it fulfills the "misnomer" part, but i don't see the "buzzword" part
08:10:15 <Eddi|zuHause> andythenorth: it just evolved away from the original meaning
08:10:43 <_jgr_> In terms of squeezing data down, some of the STL containers are surprisingly memory-hungry and slow
08:11:29 <andythenorth> "desktop computing" was a buzzword when I was young
08:11:43 <_jgr_> set and map in particular with their very chunky nodes
08:12:21 <_jgr_> A fair bit of the performance stuff I've been doing in my branch is just getting rid of those
08:12:45 <alfagamma_0007> andythenorth: That was probably 30-40 years ago?
08:13:26 <peter1138> DeskTop Publishing was a buzzword...
08:13:46 <alfagamma_0007> Sounds ancient
08:13:56 <alfagamma_0007> It's still a thing but ok
08:14:01 <andythenorth> hmm such object GUI
08:14:29 <alfagamma_0007> andythenorth: What game is this from
08:16:41 <andythenorth> they're mostly not objects really, they have gameplay effects
08:22:04 *** justanortherner has joined #openttd
08:22:04 <justanortherner> Since when was there a Tropico mobile?
08:25:27 <justanortherner> Fuck me, it's £9
08:25:46 <peter1138> I remember when computer games were £9...
08:26:14 <peter1138> I paid £14.95 for Repton Infinity on the BBC Micro 😄
08:27:04 <justanortherner> Get the zimmer frame ready for Peter guys!
08:27:37 <pickpacket> I don't recall what I paid for Age of Empires 🤔
08:33:22 <andythenorth> not sure how long I played Tropico for, but I would guess it's cost me 15p per hour
08:33:47 <alfagamma_0007> peter1138: BBC micro
08:33:47 <alfagamma_0007> That's ancient
08:34:36 <Eddi|zuHause> before steam, i paid for maybe like 3 games...
08:35:30 <Eddi|zuHause> only 2 of which i can actually name now...
08:36:20 <Eddi|zuHause> and one of these is transport tycoon
08:58:27 <pickpacket> when I get a new computer I might get myself a steam account
08:59:12 <alfagamma_0007> I don't intend to get a steam account
08:59:43 <pickpacket> another thing I want to do is record a few videos and put on youtube
08:59:57 <pickpacket> "Get rich quick" schemes for openttd
08:59:59 <alfagamma_0007> Unless perhaps I would be able to afford something else than that simcity3k clone I used to play on my phone
09:00:08 <Eddi|zuHause> originally i didn't intend to get one either, but someone bought me a game for my birthday, which came on CD/DVD, but required a steam login for activation
09:00:29 <alfagamma_0007> that's the easiest way to make money
09:00:32 <pickpacket> alfagamma_0007: yes. Although I'm planning to do a series with different cargoes
09:01:00 <pickpacket> coal, pax, grain/livestock/goods, etc
09:01:17 <Eddi|zuHause> do a toyland one
09:01:44 <pickpacket> I have an idea for another ottd video I want to do too, but then I'll need to get some friends together for a silly co-op :)
09:01:50 <pickpacket> alfagamma_0007: toyland or tea?
09:02:00 <pickpacket> Eddi|zuHause: I have literally never played in toyland
09:02:23 <alfagamma_0007> found it funny but not very interesting
09:02:50 <pickpacket> that's my prejudiced view of it too
09:03:17 <Eddi|zuHause> the conventional wisdom is that toyland offers a more complex economy than the other default climates
09:03:24 <pickpacket> though I do believe Tea Tea Deluxe works in toyland too. I know it works in the other climates
09:03:41 <alfagamma_0007> Tea needs to be a valid cargo
09:03:51 <alfagamma_0007> in FIRS or something
09:03:53 <Eddi|zuHause> dunno either, that's just what people are saying when they defend toyland
09:04:14 <alfagamma_0007> Toyland has defenders?
09:04:21 <alfagamma_0007> well weird taste
09:05:06 <alfagamma_0007> Is it compatible to FIRS or FIRS clones though?
09:05:19 <alfagamma_0007> I am addicted to FIRS
09:06:14 <pickpacket> I haven't tried. It just adds a tea industry chain and a couple of carriages. If FIRS disables other industry NewGRFs to avoid collisions then it's not compatible
09:06:36 <pickpacket> there's a risk of cargo id collisions too, I guess
09:07:04 <alfagamma_0007> XIS works with Tyler's piecemeal passenger newgrfs
09:07:43 <pickpacket> piecemeal passenger?
09:11:11 <alfagamma_0007> are Tyler's grfs
09:13:07 <pickpacket> Ah. I assume Tea Tea Deluxe would be incompatible with XIS because of colliding cargo IDs
09:14:21 <pickpacket> definitely compatible with the other two, though
09:15:40 <pickpacket> though I mainly play in temperate climate and food has no recipient there
09:16:24 <alfagamma_0007> I got bored playing in temperate
09:16:26 <pickpacket> there should be a Cloning Facility that makes passengers
09:16:35 <alfagamma_0007> I mostly play in tropical
09:16:46 <pickpacket> what makes tropical more interesting?
09:17:10 <alfagamma_0007> It looks great with opengfx+ mainly
09:17:22 <pickpacket> I might make a cloning facility newgrf actually 🤔
09:17:40 <alfagamma_0007> Cloning facility
09:17:58 <pickpacket> I use opengfx. All my graphics are inspired by that
09:18:15 <Wolf01> How cute, windows decided to update video drivers by itself... now I need to reboot
09:18:34 <alfagamma_0007> Common windows L
09:18:45 <pickpacket> kinnda like those plazas Tyler's newgrf added, but a cloning facility :D
09:18:53 <pickpacket> serve the same purpose
09:19:01 <alfagamma_0007> Make it a pub then
09:19:04 *** Wolf01 has quit IRC (Quit: Once again the world is quick to bury me.)
09:19:28 <pickpacket> weird shit = more fun
09:33:34 <ahyangyi> alfagamma_0007: Nice
09:34:05 <ahyangyi> I happen to be drinking tea while seeing this
10:04:24 <peter1138> truebrain: any noticeable memory impact from switching to std::string all over the place, or have we done that too slowly to notice?
10:05:16 <truebrain> No, it shows up, but many commits on a single day, so I need more time to trace the exact moments
10:05:50 <truebrain> Both on CPU and memory btw
10:05:52 <peter1138> Well, that's partly because we "made" Rubidium split it up 😉
10:06:15 <truebrain> Yup, which helps us now. Just my script needs more time 😛
10:13:22 <FLHerne> apparently all the devs' problems can be solved by one 2019 Macbook Pro, so it's suggested at every opportunity
10:13:52 <FLHerne> with a certain degree of sarcasm :p
10:24:47 <Eddi|zuHause> the more interesting comment is imho further down, where the guy goes "you reinvent <buzzword>, just use <buzzword> to <buzzword> ..."
10:26:47 <pickpacket> ahyangyi: whenever I see anything at all there's a high probability that I'm drinking tea
10:28:46 <pickpacket> is there a way to solve cargo id collisions? Could the game allocate that dynamically somehow?
10:32:20 <andythenorth> no and probably not 🙂
10:33:02 <andythenorth> alternative answers are probably available
10:35:00 <pickpacket> I guess the answer is "it's possible" but the caveat is that it has some level of difficulty...
10:35:05 <Eddi|zuHause> pickpacket: other systems have "GRM"
10:35:21 <pickpacket> andythenorth: how many cargo ids does FIRS have?
10:35:37 <andythenorth> depends on the economy
10:35:40 <pickpacket> Eddi|zuHause: GRM?
10:36:03 <FLHerne> I might be wrong, but cargo-ID /collisions/ as such aren't really a problem
10:36:07 <pickpacket> andythenorth: at most?
10:37:18 <FLHerne> you just end up combining the industry chains, which might be what you wanted (i.e. extension grfs) and probably makes thematic sense if you're using vaguely consistent IDs
10:37:29 <FLHerne> even if it might mess up the balancing
10:38:15 <FLHerne> it's simply having too many to fit in OTTD's 64 cargo slots that's a problem
10:38:41 <pickpacket> FLHerne: that's kind of what I want. I.e. combining sets.
10:39:10 <FLHerne> and that's a bits-in-the-various-storage-types issue, not really an allocation one, AIUI
10:40:20 <Eddi|zuHause> there's often a difference between "IDs that the grf internally uses to reference its stuff" and "IDs that the game uses"
10:40:37 <Eddi|zuHause> like, vehicle IDs
10:41:03 <andythenorth> that doesn't apply for cargos, unless it was fixed and I missed it
10:41:14 <andythenorth> I have half-memory it was looked at
10:41:44 <Eddi|zuHause> it probably wasn't done, on account of "you still shouldn't mix industry sets"
10:42:22 <pickpacket> pick and choose which industries you want
10:42:51 <pickpacket> ideally the base set of industries and vehicles would be NewGRFs too
10:42:51 <Eddi|zuHause> pickpacket: well, vehicle sets have the problem if not every set disables the original vehicles, you get multiple copies.
10:43:09 <peter1138> flherne: Cargo slots are not allocated per-GRF, the GRF specifies a global slot.
10:43:19 <Eddi|zuHause> that would probably happen to industry sets as well, if you give each their own scope
10:43:27 <pickpacket> Eddi|zuHause: only if the new set includes vehicles that already exist
10:43:28 <peter1138> This is in contrast to railtypes, roadtypes, stations, engine IDs, etc...
10:43:42 <FLHerne> peter1138: yeah, you're right having just read the docs
10:43:48 <FLHerne> I shoulddothisfirst :p
10:43:58 <FLHerne> also my spacebar seems glitchy
10:44:27 <pickpacket> Eddi|zuHause: My Asiastar Redux NewGRF just adds two more train engines
10:45:33 <Eddi|zuHause> pickpacket: yes, but it keeps the original vehicles
10:45:47 <peter1138> It's probably possible, but unlikely to be worth the effort.
10:46:01 <Eddi|zuHause> pickpacket: and if you now add another set that "just adds two more trains", and doesn't disable the original vehicles, you get every original vehicle twice
10:46:07 <peter1138> Speaking of which, shall I make tea with a tea bag or some loose-leaf tea?
10:46:30 <pickpacket> Eddi|zuHause: why would I get every vehicle twice then?
10:46:35 <Eddi|zuHause> peter1138: throwing out the real religous questions now?
10:46:36 <pickpacket> peter1138: loose leaf
10:47:08 <Eddi|zuHause> pickpacket: because every vehicle set first gets a copy of the original vehicles to play around with
10:47:16 <pickpacket> though if the bag is in a properly sealed package then that works too
10:48:06 <pickpacket> Eddi|zuHause: whaaa..? Why? And how come I don't get duplicates when I add just one NewGRF?
10:48:55 <Eddi|zuHause> hysterical raisins.
10:49:31 <Eddi|zuHause> in the old days, the second vehicle set would just overwrite the changes of the first one
10:50:16 <Eddi|zuHause> meaning you couldn't load two vehicle sets, unless one was specifically written as an addon
10:50:27 <peter1138> I don't think you'll get duplicate original engines, but I could be misremembering.
10:53:04 <Eddi|zuHause> pickpacket: but when it was implemented that each vehicle set gets its own scope, it was necessary to pre-fill each of the scopes with the default vehicles, because some vehicle sets rely on these default values.
10:54:47 <pickpacket> but I have updates to do to Tea Tea Deluxe first
10:55:30 <Eddi|zuHause> *most* vehicle sets these days start by disabling all the original vehicles, and then overriding all the values instead of just the ones they change
11:03:17 <peter1138> They are not prefilled for each "scope".
11:07:32 <andythenorth> goes it something?
11:07:44 <andythenorth> I have a MBP here, is it useful for anything?
11:07:47 <andythenorth> can it make grfs?
11:09:22 <Eddi|zuHause> a MBP can only be as smart as its user :p
11:13:46 <pickpacket> andythenorth: it can power all of the infrastructure
11:13:57 <pickpacket> set up a mirror of everything on it
11:15:29 <alfagamma_0007> Can AI code grfs?
11:17:13 <Eddi|zuHause> does the AI run on a MBP?
11:18:24 <Eddi|zuHause> the whole MBP discussion reminds me of a joke: "on average, the river was 0,5m deep, but still the horse drowned"
11:18:54 <alfagamma_0007> Eddi|zuHause: Eddi asking the real questions here
11:19:42 <andythenorth> HN seems like TheRegister, but with the humour removed
11:19:55 <andythenorth> I'm not very familiar with HN
11:20:05 <peter1138> It's shit, and full of shit people.
11:20:26 <FLHerne> andythenorth: it's TechBro Reddit
11:20:52 <FLHerne> (alternatively, the reincarnation of SlashDot)
11:21:07 <andythenorth> The Year Of The Linux Desktop
11:21:18 <andythenorth> "2001: the year Linux finally goes mainstream"
11:21:25 <andythenorth> I too was a /. reader
11:21:36 <andythenorth> nobody ever called it /.
11:21:58 <alfagamma_0007> Man that's old
11:22:04 <alfagamma_0007> Older than me even
11:22:34 <pickpacket> like, 9/11 wasn't very long ago...
11:22:48 <_jgr_> HN may leave a lot to be desired, but the wider internet is worse
11:23:55 <Eddi|zuHause> there's no communito so bad that it doesn't find another community which it calls "look how bad THOSE guys are"
11:24:53 <FLHerne> they kind of celebrate being the worst community
11:40:58 <truebrain> similar when libcurl got added, you see that jump too 🙂
11:44:31 <truebrain> in some games it saves 15MB of RAM (out of the 100MB it was using, so significant for those games)
11:45:37 <truebrain> adding harfbuzz on the other end increase the memory (another library to load in memory)
11:49:56 <truebrain> and that seems to explain all big-ish jumps in memory
11:52:50 <truebrain> the only thing I haven't found a cause for yet, is both a CPU drop and memory increase around 2023-04-16 or 17 .. lot of commits in those 2 days 🙂
11:56:45 <truebrain> as that was profiled
12:08:05 <truebrain> last 2 years keeping it stable 😄
12:08:30 <truebrain> peter1138: turns out, I haven't found any change in performance (both memory and CPU) that I can blame on std::string directly 🙂
12:09:16 <truebrain> ow, wow, that snapshot doesn't even allow you to manipulate the filters .. that is kinda useless ..
12:09:34 <truebrain> I can click savegames to only see them, giving you much better overview .. this snapshot stuff kinda sucks balls 😛
12:14:12 <_glx_> So my VS report is closed as duplicate, and the duplicate was closed as "lower priority"
12:15:01 <truebrain> sounds like VS QA for you 🙂
12:30:45 <talltyler> Sounds like it’s time for a job interview
12:36:22 <alfagamma_0007> Me at Google would be like
12:37:48 <truebrain> talltyler: You already are a dev; not sure why you want an interview, but we can arrange that 😛
12:39:18 *** nielsm has quit IRC (Ping timeout: 480 seconds)
12:46:11 <talltyler> I meant an interview for glx at Microsoft 😛
12:52:00 <talltyler> I don’t think I have a button to re-run actions, you might be special 🙂 Glad it’s sorted though.
12:52:04 *** _aD has quit IRC (Quit: leaving)
12:54:28 <truebrain> You should have it too
12:54:42 <talltyler> Could be user error 😉
12:54:43 <truebrain> When you go to a job, it should be I the top right
12:55:14 <truebrain> You can even rerun finished jobs
12:57:03 <truebrain> Might be a permission issue, but then I need to fix that 😛
13:01:43 <truebrain> yeah, it says you should have permissions
13:02:21 <truebrain> `People with write permissions to a repository can re-run workflows in the repository.`
13:09:29 *** gelignite has joined #openttd
13:11:43 <talltyler> Oh, I was looking in the wrong place
13:11:50 <talltyler> User error indeed 🙂
13:15:33 <truebrain> Or rather: today you learnt 🙂
13:39:51 <Bouke> So having spent way too much time learning gamescript, figuring out the intricacies of various APIs (or lack thereof) I can conclude this: the rail layout I wanted to test _does_ have a gridlock problem. At least thank you everyone for getting me this far :).
13:41:24 *** virtualrandomnumber has joined #openttd
13:46:24 <andythenorth> remember when grfs had a web translator? 🙂
13:47:29 <ahyangyi> I also want to do that, though my idea stays on paper at this moment
13:47:49 <talltyler> Bouke: Unsafe signal placement all over the place, of course it gridlocks! 😉
13:47:51 <ahyangyi> I misunderstood that
13:48:52 <ahyangyi> I don't want to combine sets as in, running two industry sets in one game. I want to combine sets as in, make a gigantic set that offers the functionality of many different existing sets
14:02:23 <_glx_> when moving the mouse over a job you get the "re-run" icon for it too
14:03:06 <_glx_> useful when you get annotation because github had a little connection issue
14:10:33 <andythenorth> do we want translated grfs?
14:10:50 * andythenorth design choices here :P
14:21:52 *** gelignite has quit IRC (Quit: Stay safe!)
14:25:37 <truebrain> commit before push? NEVAH!
14:32:36 <_glx_> little brother of compile before commit ?
14:32:47 <truebrain> I never compiled it, that is for sure 😛
14:40:26 <Bouke> talltyler: Indeed. Thanks for the suggestion. Runs much better now.
14:52:15 <andythenorth> 3 grfs are generated from 1 compile
14:52:24 <andythenorth> each has to have a lang file
14:52:35 <andythenorth> some of the lang is duplicated between grfs
14:53:12 <andythenorth> if I de-duplicate (to a dir like common/dutch.lng), then I'll have to write a concatenation script to unify the lng file
14:53:39 <andythenorth> if I write a concatenation script for untrusted third party content, I'm probably at risk of vulns
14:54:12 <andythenorth> currently my python doesn't touch the third party content at all
14:54:24 <andythenorth> I want nothing to do with it in code I'm writing
14:56:10 <andythenorth> I would much rather bananas handled all translations, but eh, we are where we are 😦
14:57:30 <peter1138> What is openttd.cpp:1300-1303 meant to be doing? It's obviously broken, but I don't think there's a simple way to compare the data structure it's trying to compare...
15:01:27 <_glx_> nmlc has a flag to specify lang dir, but you can also just use a common langfile for all grfs, unused strings will be skipped
15:07:06 <andythenorth> can't remember why I didn't do that
15:07:16 <andythenorth> oh, some strings are redefined per grf
15:07:30 <andythenorth> UK Horse -> Open Wagon; USA Moose -> Gondola
15:07:51 <andythenorth> I could switch that in the python compile for the nml though
15:08:06 <andythenorth> was just nicer originally to move it to lang files
15:08:53 <talltyler> I will happily help translate Moose
15:10:48 <alfagamma_0007> needs lots of overpowered locomotives
15:11:02 <alfagamma_0007> For Iron Moose
15:14:05 <andythenorth> ok I simplify the lang files and switch some conditional things in python
15:16:13 <LordAro> i feel like it wouldn't be too difficult to wire up eints to arbitrary newgrf repos
15:16:56 <LordAro> by which i mean the current instance, as it was perfectly happy doing them before for ottdc repod
15:22:11 *** Wormnest has joined #openttd
15:22:25 <locosage> _zephyris: here some good images showing mask blending
15:29:06 <andythenorth> the problem is that requires pulling untrusted code from randoms
15:30:51 <andythenorth> /me says, whilst simultaneously pasting production code from GPT 😛
15:32:12 <_glx_> eints originaly was for nml translations
15:32:40 <andythenorth> and the GPT code was actually broken, of course 😛
15:32:48 <andythenorth> I should stop paying OpenAI
15:32:59 <andythenorth> I only pay to find out what I might be missing
15:33:01 *** virtualrandomnumber has quit IRC (Quit: virtualrandomnumber)
15:34:02 <LordAro> andythenorth: as far as i know merely a git pull should never have any way of running anything untoward
15:34:22 <andythenorth> `STR_NAME_SUFFIX_ROLLER_ROOF_HOPPER_CAR_pONY`
15:34:27 <LordAro> they'd probably have to use the right repo layout and file content, but..
15:34:30 <andythenorth> why lowercase a single character?
15:34:45 <andythenorth> in a paste of 100 lines
15:34:54 <_glx_> yeah eints just parse language files
15:34:55 <LordAro> and otherwise it'd be a "on request" service i'd imagine
15:35:02 <_glx_> it doesn't run anything
15:35:18 <andythenorth> can GPT do the translations though?
15:36:54 <peter1138> No, that would be using someone elses copyrighted content...
15:37:15 <andythenorth> it would be safer IMHO to decompile grfs when they arrive at bananas, then recompile them daily with any new translations
15:37:30 <andythenorth> I am sure that won't cause any problems with mismatched MD5 etc on new versions 😛
15:47:04 <Eddi|zuHause> well, we have a feature that sprite resolution downgrades don't affect GRF MD5, that could be done for translations as well?
15:47:42 <andythenorth> when eints grf was active, a lot of releases I did were 'translations bumped'
15:47:53 <andythenorth> and players were very dependent on me getting around to doing it
15:48:43 <Eddi|zuHause> well, bananas won't take that from you. but you could run a nightly automatted script.
15:49:13 <andythenorth> I mostly just deleted translations
15:49:25 <andythenorth> and require manually verifying untrusted source
15:51:30 <LordAro> i mean, OTTD seems to do fine
15:51:52 <LordAro> no one's reported any horrific slurs or whatever getting sneaked in
15:52:16 <LordAro> which i think happened to minecraft once upon a time
15:53:46 <talltyler> I’ve been managing translations manually for my grfs and I do get months behind because I can’t be arsed to bump versions and click buttons in Bananas
15:54:10 <truebrain> Finish the CLI and automate it! 😛
15:54:36 <truebrain> But please not on a daily base .. that would be horrible (for users and our backend :D)
15:55:04 <alfagamma_0007> Handled by Mr bigbrain here
15:56:34 <andythenorth> LordAro: more bothered about untrusted code
15:56:58 <alfagamma_0007> OTTD does have code checks right?
15:57:39 <andythenorth> I would expect that eints can be used as quite a good attack vector
15:58:00 <truebrain> Attack what, a translation?
15:58:21 <andythenorth> how much string sanitisation do we do?
15:58:34 <andythenorth> presumably there's some viable overflow attacks?
15:58:45 <andythenorth> just nobody went looking yet
15:58:52 <truebrain> Did you ever try to translate with eints? 😄
15:59:20 <andythenorth> I was one of the original authors of the original version
15:59:45 <Eddi|zuHause> that's not an answer to the question :p
15:59:55 <truebrain> No, that was MiHaMiX .. you can't claim that trophy
16:00:01 <andythenorth> I never used OpenTTD eints no
16:00:27 <truebrain> So look into what kind of validation it does before starting rumours 😄
16:01:10 <andythenorth> so I can put the tinfoil away?
16:01:27 <andythenorth> this wasn't about OpenTTD eints originally, it was about nml
16:01:42 <truebrain> Not: don't trust and start a conspiracy theory 😄
16:01:46 <talltyler> andythenorth: Yes, that’s the example you gave 😛
16:02:27 <truebrain> andythenorth: You quoted LordAros mention that OpenTTD has seen no real abuse over the 20 years, I hooked into that 🙂
16:02:46 <andythenorth> I think it was a case of the escalation gif
16:03:53 <truebrain> Either way, eints validates the translation is valid for the English string. As such, the only abuse people can do is make bad translations.. luckily people aren't dicks like that 🙂
16:04:25 <_glx_> yeah any param taking an argument has to be in english too
16:04:32 <andythenorth> do we know if anyone has tried attacking the validation?
16:04:40 <truebrain> And no, we cannot host other projects on our eints instance .. the way the storage is implemented is.. not very good for performance 😄 frosch was working on that .. 🙂
16:05:05 <andythenorth> my limited experience of sanitising user input for html / javascript is that it's endlessly plugging gaps
16:05:10 <_glx_> validation is so strict we broke eints when adding new control codes in openttd 🙂
16:05:18 <andythenorth> because blanket deny never quite meets business needs
16:05:29 <_glx_> because we forgot to tell eints about it
16:05:32 <truebrain> And wild accusations never helped anyone
16:06:52 <_glx_> I think nmlc also validates control commands in translation matches the english string
16:09:03 <andythenorth> but I also parse strings in a templater for docs
16:09:20 <andythenorth> and it's one simple exec() away from getting my local system owned
16:11:01 <_glx_> I guess the safest way for you to translate your grf is PRs 🙂
16:11:32 <_glx_> that way you can review the changes before merging
16:15:32 <andythenorth> yeah I've been reviewing PRs
16:15:41 <andythenorth> but I've stopped
16:16:10 <andythenorth> when they're e.g. Cyrillic I have no idea what unicode might be hiding in there
16:25:01 <andythenorth> on the risk scale, likelihood low, embarassment high
16:25:07 <peter1138> Either its valid unicode or not.
16:25:59 <_jgr_> Invalid Unicode and such is a non-issue really
16:26:03 <andythenorth> isn't unicode a basic OWSAP vector?
16:26:55 <_jgr_> The main failure mode I've seen are random bits of untranslated English left over, and confusion between STRING AND STRINGn
16:28:53 <peter1138> OWASP and unicode is only really concerned about directory transversal due to incorrect handling of invalid sequences. Neither of which apply. I don't imagine that EINTS accepts user translation input as filenames...
16:29:56 <truebrain> I also assume NML refuses invalid utf-8 strings (but I wouldn't know if it actually does), and OpenTTD refuses invalid utf-8 strings
16:31:39 <truebrain> I think the question you are trying to ask, but you do it in a weird tinfoil hat kinda way: how much risk is it to just blindly accept users making translations. From a technical point-of-view, we filter this in all kinds of places. And if something gets through, that is a bug in OpenTTD and needs addressing there. From a functional point-of-view, people might be dicks and insert nasty words ..
16:31:39 <truebrain> but so far we never have seen that happen, but that is no guarantee
16:32:13 <truebrain> OpenTTD itself mitigates the latter by making people request access .. you have to be a really really really big dick to ask translation access to fuck up a translation, because you wanted to. Lot of effort 😛
16:32:41 <truebrain> for GRFs one can imagine you do some random checks the first time a user contributes
16:32:46 <truebrain> Google Translate is your friend there
16:34:59 <andythenorth> There are two questions really. The first is simple: do we trust my code to validate translations (no). The second is do we trust OpenTTD-managed to code to validate translations (yes).
16:35:24 <andythenorth> The other question is, do I delete translation support from my grfs.
16:35:53 <truebrain> the latter is one only you can answer 🙂
16:36:29 <_jgr_> If translation support is there, and not actively broken, why delete it?
16:37:26 *** HerzogDeXtEr has joined #openttd
16:37:34 <truebrain> something random and completely different: we support `HTTP_PROXY` environment variable on Linux with 14.0 🙂
16:38:12 <truebrain> (read somewhere a few days ago someone complaining OpenTTD doesn't support proxies .. but we will in 14.0! 😄 )
16:38:56 <andythenorth> _jgr_: It is broken currently, I'm fixing it, which is yak-shaving
16:39:13 <andythenorth> and I can't be arsed to make releases just for translation commits
16:39:21 <truebrain> back on subject of NewGRFs and translations: I am still of the opinion that translations shouldn't be part of the `.grf` file, as it doesn't allow updating only the translations, making the whole flow of translation-updates awkward as fuck
16:39:31 <truebrain> just imagine abase had a new translation-only release every week, or even every month .. brr
16:40:05 <_glx_> no translations inside basesets
16:40:06 <truebrain> point still stands 🙂
16:40:11 <truebrain> pick any huge NewGRF
16:41:06 <truebrain> we once talked about the ability to fetch new translations via HTTP from a centralized server
16:41:16 <truebrain> with GS the same subject came by btw
16:41:40 <truebrain> one can even argue it is a bit silly we send everyone .. how many translations? for OpenTTD, while they only use one 😄
16:42:10 <peter1138> Well, yeah, design an interface for remote translation support... Hmm.
16:42:14 <_jgr_> I suppose you could generalise that to doing content upgrades by diff instead of sending the whole thing each time 😛
16:42:15 <truebrain> (the latter is a problem with emscripten btw; fetching that much data is just .. problemetic 😄 )
16:42:31 <truebrain> _jgr_: that is a fair point, honestly
16:42:36 <truebrain> a long solved problem 🙂
16:42:36 * peter1138 fucks around with st->goods
16:42:56 <truebrain> so I now know two solutions for this "problem" 😄
16:43:19 <truebrain> peter1138: few months ago that was very difficult, but now we can just throw http connections around, it might even bacome reasonable 🙂
16:43:52 <truebrain> wow, so many typos in one sentence, that was impressive
16:43:59 <truebrain> (fixed on Discord; screw you IRC dude :P)
16:46:51 <andythenorth> is there some kind of container format for our content 😛
16:46:57 * andythenorth should look at bananas
16:50:54 <LordAro> truebrain: you are englisher guud
16:51:19 <truebrain> a typical case of brain faster than hands ... I want better computer interfacing!
16:51:29 *** gelignite has joined #openttd
16:55:53 <peter1138> Translations are mostly text... so a text-based container is... reasonable? json?
16:56:17 <truebrain> or just the CSV format we have now 😛
16:56:31 <truebrain> the talk we had around GS was to integrate strgen in the base game, so language files don't have to be precompiled or something
16:56:39 <truebrain> (I don't always follow these conversations 😄 )
16:56:59 <peter1138> I suppose linking the strings to the strings within the NewGRF would need some magic.
16:57:36 <truebrain> (it is possible the above mentioned GS stuff is the path already taken 😛 )
16:57:56 <truebrain> just on first-time start I guess you have to compile it (and possibly store the result) for fast access
16:58:07 <truebrain> there you can do the NewGRF magic too 😄
16:59:24 <truebrain> might also mean you can reload translations without exiting the game (for both OpenTTD, GS and NewGRF)
16:59:40 <truebrain> I wouldn't be surprised if frosch has things written out for this 😛
17:00:46 <Bouke> Dynamic translations would also have to consider the base version, as the translation targets a specific version. The base template could change, causing newer translations to no longer apply to older versions.
17:01:03 <peter1138> Easy enough to include version metadata.
17:01:30 <truebrain> checksum over the english string in the translation or what-ever 🙂
17:02:16 <Bouke> Dynamic translations would be great though, to fixup boo boos after the release. (I noticed some issues in the Dutch translation today, but as the release is months away, I couldn’t be bothered to fix them)
17:02:36 <truebrain> terrible attitude! FIX THEM NOW!
17:04:13 <Bouke> Well… it is a consistency issue, so would have to review _a lot_ of strings 🥺
17:04:42 <Bouke> But branching support in eints it is
17:04:50 <truebrain> and often those consistency issues have had their fair share of debate among translators over the years 😄
17:05:55 <andythenorth> has GPT 3 got worse?
17:06:10 <andythenorth> it's totally failing at basic text formatting tasks, which it usually does ok at
17:06:19 <andythenorth> then it apologises and says it will try harder
17:06:24 <andythenorth> then repeats the exact same result
17:06:26 <truebrain> pretty sure this is the wrong Discord channel for that question 😄
17:10:46 <Azusa> I still remember contributing some translations for FIRS back when the online translator thing still supported it
17:11:29 <andythenorth> now GPT is just erroring
17:13:14 <andythenorth> GPT is getting better results, but generates so slowly
17:13:59 <Azusa> I personally think that the online translator thing is much better than having to make a PR every time you want some translations updated or changed
17:16:24 <andythenorth> GPT 4 is eliding the pasted list, it keeps inserting "List format continues" or similar
17:16:34 <andythenorth> this is NOT the future that can replace humans
17:16:45 <andythenorth> despite a lot of very very stupid journalists
17:17:41 <Eddi|zuHause> i'm not worried about the stupid journalists. i worry about the stupid managers.
17:17:55 <LordAro> i see a lot of people complaining that it's been dumbed down since initial release
17:18:49 <andythenorth> ach I give up on this
17:18:53 <peter1138> People expecting it to be something it is not.
17:18:59 <andythenorth> waste of time and money
17:19:21 <peter1138> $700,000 per day allegedly.
17:19:40 <andythenorth> fastest paid subscription curve in human history
17:19:53 <andythenorth> it's junk for tasks it should be good at
17:20:05 <andythenorth> but I might as well just do a python script
17:20:14 <andythenorth> or delete translations from grf
17:21:17 <andythenorth> glad I made this a branch, not main 🙂
17:22:21 <andythenorth> yeah, going to delete compile-time translations from my grfs, too much trouble
17:35:24 <peter1138> Hrmm, still can't get OpenTTD working with X11 forwarding :/
17:52:42 <Bouke> I was running OTTD on Github Actions to get some timings, but the action timed out after 6 hours. A bit strange as it reported an orphaned process (openttd). Any ideas why the process might get orphaned, even though all invocations should've errored out due to missing graphics sets (assumption). See last 2 lines:
17:56:11 <_glx_> I though the timeout would happen faster
17:57:14 <_glx_> how do you start openttd ?
17:57:38 <Bouke> You can see it a few lines above in the output
17:58:15 <_glx_> no, I just get uri expired json 🙂
18:22:16 *** frosch123 has quit IRC (Quit: User went offline on Discord a while ago)
18:27:19 <Bouke> I get "dbg: [misc] SignalSegment too complex. Set _tbdset is full (maximum 256)". What does it mean? Is my rail network too complex?
18:31:04 <truebrain> I am not sure how that build is confusing to you honestly 😄 It says so right there what your problem is 😄 "Error: Failed to find a graphics set. Please acquire a graphics set for OpenTTD. See section 1.4 of README.md." 😄
18:32:00 <Bouke> That's not the part that is confusing. Have a look at the timestamps. It determined that the graphics were missing in about 1 seconds. Then it waited for 6 hours to timeout and kill an orphaned openttd process. Why was there an orphaned process?
18:32:21 <truebrain> that is GitHub Actions for you; but yes, the process never ends
18:32:26 <truebrain> `-vnull` has that tendency
18:32:38 <truebrain> (when a baseset cannot be found)
18:32:46 <truebrain> could be considered a bug, but has never been a real problem 🙂
18:33:13 <truebrain> (if I would be to guess, it becomes orphaned when GitHub starts to kill shit to get the VM shut down)
18:34:45 <truebrain> Bouke: this means you have a single signal-block of more than 256 signals; don't do that
18:35:20 <truebrain> "signals" here btw is not the ones you see; well, also, but also things like bridges, tunnels, etc
18:35:37 <Bouke> What is a signal-block?
18:36:54 <truebrain> basically exactly what you would expect. Rail with more than 256 "signals" connected to it, in an isolated block
18:37:05 <truebrain> so you can stand in your network somewhere
18:37:28 <truebrain> and see 256 "signals" from there; and don't look past any other signal you see on that stretch of rail
18:37:57 <truebrain> so when a train enters that block, all signals attached to that block are updated
18:38:11 <truebrain> in other words: a really poorly designed network 😛
18:38:57 <Eddi|zuHause> of course it's poorly designed, it uses block signals :p
18:39:08 <Bouke> So any piece of rail cannot connect to more than 256 signals?
18:39:19 <alfagamma_0007> Use path *and* block
18:39:25 <truebrain> if a train goes through a signal, and 256 signals have to update
18:39:43 <alfagamma_0007> Simple as that
18:39:58 <Bouke> I’m only using PBS, no block signals
18:40:32 <truebrain> tbdset is used for any signal, including ones in depots, bridges, tunnels, etc etc
18:41:57 <Eddi|zuHause> ok. the thing is, even with path signals, the game must look for any block signals.
18:42:32 <truebrain> `tile and enterdir are initialized here, unless I'm mistaken.` .. comments filled with convidence! 😄
18:43:24 <truebrain> basically, there are many ways to break the game if you go looking for it; but if you build normal networks that work, you will never see this limit 🙂
18:43:44 <truebrain> and a block (or sometimes called segment) in the code with 256 adjacent signals, no train can peacefully move through that 😄
18:44:16 <truebrain> worded differently: it could have 255 trains waiting on 1 train to exit the block / segment 🙂
18:44:32 <truebrain> all visibily rendered on the map, so not 255 trains in a depot 😛
18:44:46 <truebrain> I think I ran out of ways to explain it 😛
18:47:33 <truebrain> lol, the code reads a bit funny .. it is possible each rail-track is also considered part of a segment .. but that I cannot deduce from the code that easily
18:48:12 <truebrain> only if direction changes? I dunno .. that statement is impossible to figure out
18:50:10 <Bouke> So this messages appears _during_ my GS build of the network. However after it is build, there are no longer blocks with 256 signals. However as the message has appeared, the internal respresentation of the network is broken and trains get lost. After saving and loading the game, the message doesn't appear anymore and trains no longer get lost.
18:50:35 <truebrain> when you hit this error, the game kinda sorta gives up on that segment
18:51:03 <truebrain> so I should rephrase, as it is "signals" + any rail with more than 2 exists
18:51:12 <truebrain> I think .. that last part is just .. brr @ code 😄
18:51:16 <_jgr_> This error doesn't have anything to do with pathfinding, so it cannot make trains "get lost"
18:52:28 <truebrain> if I would guess, you build the rails first, signals after?
18:53:38 <Bouke> Is there any other way?
18:53:39 <michi_cc[d]> It can't make trains get lost, as it is only temporary internal state during signal block update, not something stored in the map or beyond the update run.
18:55:05 <Bouke> But yeah; I build _all_ the rails first: big grid of rails. Then adding signals to it. So there probably is a moment where there are more than 256 signals in a block.
18:55:24 <truebrain> yeah, well, signals + junctions, as I mentioned
18:55:28 <truebrain> so that error is to be expected
18:55:35 <truebrain> but as mentioned, that recovers when signals are buildf
18:55:53 <Bouke> Well that's the problem here; it doesn't recover.
18:56:02 <_jgr_> If the signals are all PBS there is nothing to be recovered anyway
18:57:05 <_jgr_> What is the purpose of building such a strange layout, incidentally?
18:58:21 <Bouke> Mostly just toying around with path-finding, trying to find interesting edge-cases, mostly trying to break it.
18:58:32 <peter1138> Hmm, okay, libsdl1.2 works, libsdl2.0 does not 😦
18:58:45 <truebrain> peter1138: that is .. impressive!
18:58:56 <truebrain> (that libsdl1.2 still works, mostly 😄 )
18:59:05 <_jgr_> A grid of rails is not going to challenge the pathfinder at all
18:59:35 <_jgr_> That's effectively the trivial case, a bit like the case with ships
19:00:54 <FLHerne> I'm not convinced that's true
19:01:07 <FLHerne> the ship case notoriously does challenge the pathfinder
19:01:43 <FLHerne> vast number of similar-length routes is terrible for performance of A*-type pathfinding
19:02:03 <FLHerne> otoh, you're not going to "break" it, it'll just be a bit slower
19:02:31 <_jgr_> It's challenging only in the sense of cycles used up, there isn't anything complicated or unusual happening code-path wise
19:03:02 <_jgr_> Looking for edge cases using a uniform grid seems odd to me
19:03:29 <FLHerne> to be fair, the 256-signal-per-block limit is an interesting thing to discover
19:03:55 <FLHerne> I've been playing for like 15 years and never run across it for obvious reasons
19:04:01 <truebrain> is rediscovered every N years 😛
19:06:48 <_jgr_> It's the kind of limit that usually only matters for people building coop-style contraptions
19:09:51 <_glx_> Bouke: an error is supposed to kill openttd, but in some occasion it pops a message box waiting for validation, even if it's not supposed to do that in nogui video mode like "null"
19:10:04 <peter1138> Might have broken it 🙂
19:10:38 <truebrain> _glx_: for `vnull` it is broken for as long as I can remember 😛 Never bothered to fix it, as ... yeah 🙂
19:13:49 <andythenorth> ach, I can't just delete all Horse translations
19:13:52 <andythenorth> people will be sad
19:14:12 <andythenorth> maybe I write my own translation analyser and concatenater
19:15:17 <andythenorth> what do strings look like in nfo?
19:15:49 <andythenorth> hmm, no I can't do much with those 🙂
19:17:10 <andythenorth> I need lang files concatenated from 3 locations, 1 of which is untranslated, 2 of which should be translated
19:17:23 <andythenorth> expecting translators to figure that out in the repo is silly
19:17:37 <andythenorth> maybe I can write a thing that puts the compiled translation in the repo
19:17:42 <andythenorth> and translators work against that
19:18:29 <Eddi|zuHause> what again was wrong with using eints for translations?
19:19:30 <andythenorth> in the old incarnation? far too many things
19:20:07 <andythenorth> I assume we couldn't host it
19:20:10 <andythenorth> nor connect it to git
19:22:03 <peter1138> Ah, fingers crossed it's just an uninitialized struct.
19:28:40 <andythenorth> can't be arsed to write a lang file parser, again
19:28:49 <andythenorth> maybe I just move all the Horse strings to json
19:32:57 <truebrain> peter1138: lol; I am sure that would be considered a regression 😄
19:33:46 <truebrain> can the MBP fix it?
19:36:42 <truebrain> almost done with building all binaries .. roughly 30 left .. pam pam pammm
19:36:45 <andythenorth> meh json doesn't allow trailing comma on last item
19:37:48 <truebrain> 533 binaries build in .. 3 days? So slow ... so slow ...
19:39:04 <Rubidium> maybe run it linearly and with ccache next time? Might be faster
19:39:06 <Eddi|zuHause> in all likelyhood, the MBP would outperform my current PC
19:39:28 <andythenorth> in what way is that surprising? 🙂
19:39:41 <truebrain> Rubidium: I delibrately did not went that route, to make sure no binary had a weird quirk for one reason or the other
19:40:06 <truebrain> so every time it starts a clean docker; that way I am sure the binaries are the same 🙂
19:41:09 <_glx_> yeah it should not do that when running ctest
19:41:51 <_glx_> the failure was expected, I renamed the folder to test
19:43:16 <_glx_> but it does the same for -D
19:45:46 <peter1138> I used to get that, I think I had a config inthe wrong place or something. Can't remember exactly.
19:48:23 <peter1138> First one was full debug, maybe Wentbourne is just that slow 🙂
19:48:52 <_glx_> ok we use ShowOSErrorBox() for that, so on windows of course it shows a message box, but on linux it's just a printf
19:50:06 <locosage> peter1138: this would go well with my payment "fix" xD
19:51:26 <_glx_> oh UserErrorI() doesn't check for GUI
19:58:28 <andythenorth> peter1138: did we miss the chance to say "run GPT on MBP for cost saving"?
20:04:13 <_glx_> of course commit checker
20:04:37 <truebrain> yeah .. I enabled auto-squash, but that won't work 😛
20:04:48 *** gelignite has quit IRC (Quit: Stay safe!)
20:11:20 <_glx_> the bot reaction time is "fast" 😉
20:11:50 <truebrain> the MBP is rendering GPT I see
20:20:14 <andythenorth> I used GPT to convert .lng to a json format
20:20:17 <Bouke> I've changed the building of the network, first building parts of the network and connecting them only after adding the signals. It seems the trains getting lost is due to the network being too complex (?).
20:20:18 <andythenorth> it's kinda worked
20:21:41 <truebrain> wauw, GitHub -> Dorpsgek is slow 😛
20:23:05 <Bouke> So maybe the pathfinder doesn't know how to handle my grid after all?
20:24:40 <_jgr_> Would you mind posting the savegame?
20:26:12 <_glx_> truebrain: "Docs" is not a valid keyword 😉
20:28:26 <truebrain> owh well .. this is why we normally don't do this 😛
20:30:31 <Bouke> OT; the macOS nightly bundle has the bundle name as `OpenTTD.app`. After downloading a few nightlies, my Downloads folder starts to look like "OpenTTD-#" with # an increasing number. It would make sense for me to include the actual version number in there (only nightlies). So the file would be named something like `OpenTTD-20230813-master-g61dfd74e44.app` instead.
20:38:45 <_jgr_> You can fix the "getting lost" issue by bumping the `pf.yapf.max_search_nodes` setting high enough
20:39:57 <_jgr_> Though that makes pathfinder slower instead of giving up earlier
20:40:44 <truebrain> _glx_: Luckily for me, we no longer run the commit checker on merge 😛
20:40:48 <truebrain> no clue why not .. but .. yeah 😛
20:41:13 <truebrain> NOBODY WILL KNOW! 😛
20:41:17 <andythenorth> how can I lose the leading spaces from this in python? ` STR_NAME_SUFFIX_RESTAURANT_CAR:Restaurant Car`
20:41:27 <andythenorth> lstrip() loses all the spaces, unwanted
20:41:42 <truebrain> you want to strip spaces but you don't want to strip spaces
20:41:44 <truebrain> that is confusing 😛
20:42:12 <truebrain> from the manual: lstrip(): `Return a copy of the string with leading characters removed.`
20:42:19 <_glx_> Bouke: you can check the release workflows
20:42:19 <truebrain> sounds exactly like your question 😄 So paint me confused 😛
20:42:41 <truebrain> _glx_: the name has to be `OpenTTD.app`, for our various targets 🙂
20:43:47 <andythenorth> also my editor decided to wrap at 80 chars
20:43:50 <truebrain> lol, was looking into how we could handle minidumps, so we can record OpenTTD crashes in Sentry .. Cloudflare released a blog post today how they do it for their WASM workers .. gave some inspiration .. libraries like https://github.com/rust-minidump/rust-minidump seem to make it trivial to process it ourselves .. might be worth looking into 🙂
20:44:43 <truebrain> first step is to integrate breakpad in OpenTTD, I guess 🙂 Only question is .. with or without the Sentry SDK around it .. Sentry takes care of a few quirks .. but also adds a bunch of extra code 😛
20:48:16 <_glx_> doesn't seem to require breakpad
20:48:31 <truebrain> it does; you have to select a backend, and breakpad is the better fit for us
20:50:27 <truebrain> wow, I did that 30 minutes ago 😛
20:54:33 <andythenorth> the .lng file for nml is generated from this via reasons
20:55:09 <andythenorth> possibly I should use TOML or something
20:55:50 <truebrain> okay, breakpad does only handle the creating of a minidump .. sentry-native adds a bit of glue around it, to restore the system in a somewhat decent state to do this, adds some extra metadata, checks for minidumps on startup, and more of that .. there are pros and cons to both ..
20:56:03 <truebrain> if we use breakpad directly, we can reuse part of our Fio handling
20:56:20 <truebrain> and we possibly can just hook it into our own crash handling
20:56:36 <truebrain> but by using sentry-native, they maintain all the tricky situations for us ..
20:56:43 <truebrain> guess this requires experimentation 😄
20:56:54 <truebrain> breakpad will be a smaller footprint, that is for sure
20:57:16 <truebrain> basically replacing crash.dmp, in that sense
20:57:53 <_glx_> it's supposed to handle our crash.dmp
20:58:16 <truebrain> what do you mean? (I can read that sentence in more than one way 😄 )
20:58:28 <_glx_> but it's not very clear about the symbols
21:00:40 <truebrain> you have to be a bit more clear what you are reading .. the context is lost on me 🙂
21:01:09 <_glx_> I'm reading the github link you posted 🙂
21:01:24 <truebrain> ah; that project basically digests a minidump
21:01:33 <truebrain> the rest of my chatting is about OpenTTD's side
21:01:38 <truebrain> where we create the actually minidump
21:01:47 <truebrain> and how to send it properly to our backend 🙂
21:01:58 <truebrain> when it arrives at the backend, that project I linked kicks in, and does its magic 🙂
21:02:58 <truebrain> _glx_: that project I linked does the default breakpad / minidump "trick", and needs breakpad symbols to create readable backtraces
21:03:15 <truebrain> for some reason, Windows does make a minidump, but uses its own symbol file .. no clue why 😛
21:03:25 <truebrain> luckily, it is easy enough to create a breakpad symbol file 🙂
21:03:35 <_glx_> so it needs some conversion of openttd.exe and openttd.pdb
21:04:01 <truebrain> in the more generic way, you build with RelWithDebInfo, and split the executable from the debug symbols
21:04:15 <truebrain> that is: you create a breakpad symbols from that executable, then strip the executable from the debug symbols
21:04:23 <truebrain> same for all targets (not only Windows)
21:05:36 <truebrain> basically, this unifies our OSes, so not only Windows is special and can create a crash.dmp 😛
21:06:13 <_glx_> ah yes it does special handling of the pdb (exe doesn't contain the symbols)
21:06:47 <andythenorth> ok TOML might be better than JSON, but then it's not in python 3 standard lib
21:06:52 <truebrain> if we integrate breakpad ourselves, we also have more control over the metadata we send .. hmm ..
21:07:07 <_glx_> main reason why crash.log on windows is often not very useful without the crash.dmp
21:07:44 <andythenorth> if only I could google
21:07:45 <truebrain> (read-only, mind you. It cannot write TOML files)
21:07:51 <andythenorth> but my training data doesn't go past 2021
21:08:06 <truebrain> Python 3.11 has it, because pyproject.toml is kinda standard now 😛
21:08:21 <andythenorth> TOML seems a better fit for what I want
21:08:23 <truebrain> okay, I need to experiment with breakpad .. will be fun 😄
21:08:42 <truebrain> especially if that means I can leave the rest of our crash-handler alone
21:09:56 <_glx_> our crash code should already have entry points for dump generation
21:10:12 <_glx_> even if it's only implemented for windows
21:12:09 <_glx_> `virtual int WriteCrashDump();`
21:13:45 <_glx_> nice future proofing of our Crashlog object 🙂
21:48:17 <andythenorth> tomorrow I'll make it understand over-rides for certain of the generated grfs 😛
21:48:31 <andythenorth> if an over-ride is present, that is used instead
21:58:06 *** Wolf01 is now known as Guest9000
22:03:06 *** Guest9000 has quit IRC (Ping timeout: 480 seconds)
22:06:33 <andythenorth> oof...must not include support for python templating in these strings
22:29:39 *** keikoz has quit IRC (Ping timeout: 480 seconds)
23:05:18 *** Wolf01 has quit IRC (Quit: Once again the world is quick to bury me.)
23:08:29 <truebrain> Yes, that you do it was apparent 😛 but I know other places in the code do it differently 😛
23:09:03 <truebrain> My only objections against your style is the lack of spaces, so I find it hard to spot the initializers
23:09:22 <truebrain> Nothing that can't be fixed by adding a few spaces 🙂
23:09:40 <peter1138> Before, inside or both?
23:09:40 <truebrain> But we should pick a style and go with it 🙂
23:09:56 <truebrain> I do both, but that is a personal preference honestly
23:10:26 <truebrain> Clang-format would so help with this 😛
23:10:30 <peter1138> "{}" is more commonly used than "{ }" at least.
23:10:51 <peter1138> We mostly use "{ }" for empty single-line functions.
23:11:17 <truebrain> `a {}` and `b { 0 }` is what I use in my own projects
23:11:35 <truebrain> Just so you see the bloody value 😛
23:12:00 <truebrain> But .. I am not married to that 🙂
23:15:35 <truebrain> Guess as we broke all patches with uint8_t, we might as well introduce clang-format and be done with formatting errors 😄
23:16:53 <peter1138> clang-format by itself does a bad job 😮
23:23:29 <peter1138> Also removes spacing if I put it in, so it prefers the way I've done ;p
continue to next day ⏵