IRC logs for #openttd on OFTC at 2023-05-30
00:13:45 <DorpsGek> [OpenTTD/nml] trolleytrev opened issue #294: Technical Question: What is the reason for limitation of 6 sprite sets per station?
00:49:38 <DorpsGek> [OpenTTD/nml] glx22 commented on issue #294: Technical Question: What is the reason for limitation of 6 sprite sets per station?
02:39:42 *** D-HUND has joined #openttd
02:43:03 *** debdog has quit IRC (Ping timeout: 480 seconds)
03:42:38 *** keikoz has joined #openttd
04:23:53 *** felix has quit IRC ()
04:24:16 *** felix has joined #openttd
05:18:22 *** Flygon has joined #openttd
05:23:44 *** keikoz has quit IRC (Ping timeout: 480 seconds)
06:00:27 *** Seriphyn has joined #openttd
06:00:27 <Seriphyn> Are there any plans to add more industry settings, such as 'Primary industries only' (while still respecting the industry sets intended spawn rates) and/or, better yet, Primary industries only plus 1 of each secondary/tertiary etc.
06:03:59 <Eddi|zuHause> there are no such plans
06:04:49 <Eddi|zuHause> but an industry GRF could set the spawn chances such that it would come pretty close to that
06:06:08 <pickpacket> Tried to get rich quick with tea leaves last night. Couldn't. It turns out that the cargo payment rates I specified work as intended. Very annoying ๐Ÿ˜‚
06:09:58 <andythenorth> Seriphyn: GS
06:13:22 <pickpacket> Eddi|zuHause, Seriphyn: actually an industry GRF could set the spawn chances to be exactly like that
06:13:50 <andythenorth> it could set the chances
06:13:57 <andythenorth> it can't guarantee '1 of each'
06:14:02 <andythenorth> it might be 0 of some
06:14:11 <andythenorth> GS can try harder to guarantee
06:15:24 <andythenorth> TallTyler: it's for the as-yet-unused 'make towns happy' feature in GS
06:15:39 * andythenorth should finish that :P
06:17:24 <pickpacket> andythenorth: doesn't it normally force one instance to be created at map gen, unless IND_FLAG_DO_NOT_FORCE_INSTANCE_AT_MAP_GENERATION is set? Maybe it doesn't do that when prob_map_gen is set to 0
06:17:35 <Eddi|zuHause> the game tries to create at least 1 of each non-0 chance industry
06:17:48 <andythenorth> yes, generally it will work fine
06:17:48 <Eddi|zuHause> it's not *guaranteed*, but it tries really hard
06:18:01 <andythenorth> it amuses me to say 'GS' to every request
06:18:33 <Eddi|zuHause> why would GS do a better job at that?
06:18:52 <pickpacket> yeah. So one could set all secondary industry prob_map_gen to 0 and have non-zero values for the primary industries
06:20:02 <pickpacket> speaking of: coal is by far the most valuable cargo, considering the high start value and slow value decrease. Yet coal mines have the highest prob_map_gen of all default industries
06:22:09 <andythenorth> Eddi|zuHause: practically it wouldn't, due to the implementation
06:22:31 <andythenorth> theoretically it has more ability to place industries, it can understand any location restrictions and it can terraform
06:23:27 <Eddi|zuHause> it can't understand location restrictions, because it doesn't know which NewGRF is active
06:23:40 <andythenorth> of course it does silly
06:23:45 <andythenorth> we fixed that a long time ago
06:24:04 <andythenorth> it was one of those daft "we can never do X" things which was a couple of commits to solve
06:24:10 <Eddi|zuHause> but you can't force-pair it with a single newgrf
06:24:18 <andythenorth> not in bananas no
06:24:42 <andythenorth> TB thinks that will be solvable with some form of bundling
06:25:11 <andythenorth> and there's a load order issue which means the grf can't check the GS is present
06:25:48 <andythenorth> but they can be solved later, after we've solved the issues around GS being fundamentally flawed architecturally
06:30:59 <Eddi|zuHause> yay, forum drama...
06:39:08 <andythenorth> what else are traditional forums for?
06:39:38 <andythenorth> Lego forum: "Lego are idiots and don't know what they're doing, they should listen to true fans like me"
06:40:28 <andythenorth> Model Train forum: "why does nobody make the exact item I want on my wishlist, in the condition it existed on 14th June 1957, it would surely sell millions"
06:40:54 <andythenorth> repeat per niche interest
06:41:19 <andythenorth> "if only we had a survey about what players actually do" ๐Ÿ˜›
06:44:43 * pickpacket is fully aware that he always wants things with an exact specification that never exists and has accepted that fact
06:54:05 <petern> <>
06:55:50 <TrueBrain> haha ๐Ÿ˜„ Took long enough ๐Ÿ˜›
06:57:22 <TrueBrain> Picking up pitchforks is the most enjoyable thing in life! Listening to people and having a discussion is scary shit .. so yeah: PITCHFORKS! ๐Ÿ˜„
06:58:50 <Eddi|zuHause> why is it called a pitchfork anyway?
06:58:58 <TrueBrain> because it is a fork that pitches!
06:59:26 <petern> Because it's used to pitch material.
06:59:51 <petern> > throw roughly or casually.
07:00:14 <petern> I guess sports pitchers would argue with that definition.
07:00:41 <TrueBrain> haha
07:07:11 *** _aD has joined #openttd
07:13:13 <pickpacket> "every time I think of making any contribution I just go, what's the point? Nearly everything seems to get rejected anyway." <-- I get the feeling there's some grain of truth in this, but i also get the feeling that most changes are rejected because of poor code quality. But i have absolutely no idea. Does anyone care to share their view on it with
07:13:13 <pickpacket> me? :)
07:13:41 <pickpacket> the project has no lead... is there a roadmap?
07:16:09 <Rubidium_> I don't think that many things are rejected, but stay in limbo because there are some (quality) issues with the PRs that for some reason do not get fixed. Furthermore, reviewing and "coaching" people to get things right takes a lot of time and is frustrating when they leave with almost finished PRs
07:17:49 <DorpsGek> [OpenTTD/OpenTTD] PeterN commented on pull request #10541: Feature: Industry production graph
07:19:58 <Eddi|zuHause> i think a lot of times that refers to repeatedly-rejected ideas that never actually left the idea stage...
07:21:59 <Eddi|zuHause> and there's certainly an abundance of those
07:22:14 <TrueBrain> ah, the lovely "nearly everything gets rejected" ๐Ÿ˜› Haven't read that one in a while ๐Ÿ™‚
07:23:10 <Eddi|zuHause> people also often think "a developer commented negatively" as "rejection"
07:23:36 <TrueBrain> pickpacket: for a bit of context, that quote has been floating around for more than 10 years ๐Ÿ™‚
07:25:01 <TrueBrain> it is not only that sometimes PRs are of low quality, there are also several PRs that are just not mature enough in their idea. Take daylength .. now only after 10 years I have the idea that for the first time there is an idea that might actually work ๐Ÿ™‚
07:25:16 <andythenorth> the nice thing is that it's the same armchair experts every time
07:25:24 <TrueBrain> a common mistake people make, that from the sideline things always look easy. But when you actually delve in, it turns out to be a lot more complicated ๐Ÿ™‚
07:25:36 <andythenorth> whereas the problems on reddit and steam are quite different to the concerns of the armchair experts
07:27:30 <petern> Hmm, this branch compiles, what functionality did I forget to include...
07:27:48 <TrueBrain> haha, what a way to work ๐Ÿ˜› "What did I screw up?" ๐Ÿ˜„
07:27:55 <petern> ๐Ÿ™‚
07:27:56 <Rubidium_> petern: C++20/23
07:28:12 <petern> I disabled a bit because it needs refactoring. I think I haven't reenabled it ๐Ÿ™‚
07:28:17 <pickpacket> It's weird to me how people talk about "the developers" as some sort of closed group far away.
07:28:22 <Eddi|zuHause> "it actually works, what am i missing?" :p
07:28:37 <petern> "HOW does it work"
07:28:47 <pickpacket> "WHY does it work"
07:29:02 <TrueBrain> pickpacket: it is a way people use to distant themselves from any responsibility or ownership ๐Ÿ™‚ The best example is with soccer: if your team wins, it is: WE WON! If they lose it is: THEY lost. People are funny like that ๐Ÿ™‚
07:29:06 <andythenorth> pickpacket it can feel like quite a closed group to an outsider
07:29:39 <petern> We've been available on IRC for 18 years ๐Ÿ™‚
07:29:40 <pickpacket> two things I hate about development: "I'm doing the same thing that worked yesterday but today it breaks." and "I'm doing the same thing that always broke yesterday but today it works."
07:29:47 <petern> Some of these people even used to be on IRC.
07:30:09 <pickpacket> andythenorth: yeah... That's true
07:30:31 <andythenorth> anyway, things get changed in the game, and so far, the objections have been predictable, from predictable sources
07:30:52 <andythenorth> so intentional choices with intentional outcomes...
07:31:20 <petern> I have added my response to that thread, hopefully it's right :p
07:31:30 <pickpacket> about that topic: will the shares be removed?
07:31:41 <petern> Shares has already been removed.
07:31:48 <andythenorth> shares are gone!
07:31:58 <TrueBrain> we had pie
07:32:03 <andythenorth> I didn't add to that thread, last time I got mod warned
07:32:08 <pickpacket> ๐Ÿ‘
07:32:16 <pickpacket> petern: great response!
07:32:18 <andythenorth> and I am banned on another forum for telling the armchair experts they're idiots
07:32:35 <pickpacket> andythenorth: uhm... maybe bad choice of words?
07:32:42 <pickpacket> try being a bit more diplomatic?
07:32:52 <andythenorth> I have a quote for this ๐Ÿ˜›
07:33:03 <petern> andy will just tell them to use a gamescript...
07:33:06 <andythenorth> โ€œNever argue with an idiot. They will drag you down to their level and beat you with experience.โ€
07:33:15 <andythenorth> allegedly Mark Twain
07:33:44 <pickpacket> lol
07:33:54 <andythenorth> an idiot has an unshakeable belief in their correctness, they are not open to reasoned argument
07:34:10 <andythenorth> they are unpersuadable, and often also have a grievance
07:34:30 <pickpacket> apparently I wrote a blog post last year about committing to open source things and the responsibilities of maintainers:
07:34:44 <petern> CodeQL: `Variable _ is not used. ` yes... that's why it's be named `_`
07:35:29 <TrueBrain> `[[unused]]` ๐Ÿ™‚
07:35:41 <petern> `std::ignore` was the solution
07:36:02 <petern> Needs std::tie instead of auto [] though.
07:36:07 <petern> Poor rubidium ๐Ÿ™‚
07:36:44 <andythenorth> pickpacket I just saw your "why do corporations have to grow?" series ๐Ÿ™‚
07:37:01 <andythenorth> do your OpenTTD games stop at 3 buses and a train? ๐Ÿ™‚
07:38:15 <pickpacket> andythenorth: ... no... :D
07:38:58 <pickpacket> What I'm questioning is the "either we grow or we die" idea.
07:39:25 <petern> Captialism is a dead end.
07:39:41 <pickpacket> My gf thinks I have an evil side and that it fully comes to fruition when I play OpenTTD
07:39:47 <petern> It assumes there is room for infinite growth.
07:40:24 <pickpacket> "I should remove this lake to straighten out this train line." "wtf is wrong with the local authority? They don't like me? Bribe!"
07:40:30 <Rubidium_> petern: as far as we're aware there is room for infinite growth given the observable universe seems to be expanding at an increasingly faster pace
07:41:06 <pickpacket> Rubidium_: it's expanding but no further raw material is added
07:41:13 <pickpacket> resources are still finite
07:41:22 <petern> So far we've not managed to exploit anything beyond our solar system, afaik.
07:41:34 <TrueBrain> Pff, let's just ignore entropy; we will be fine ๐Ÿ™‚
07:42:06 <LordAro> can i?
07:42:18 <LordAro> i haven't posted on the forum in nearly 2 years
07:42:43 <Rubidium_> [citation needed]?
07:42:45 <TrueBrain> you had that discussion with him already ... last year? Year before? ๐Ÿ™‚
07:43:18 <LordAro> i definitely recall a similar discussion as well, but it wasn't on the forum...
07:43:23 <Rubidium_> Q.E.D.
07:43:27 <LordAro> oh, was it reddit?
07:43:33 <TrueBrain> or IRC?
07:43:47 <LordAro> don't think RL has been on IRC in many years
07:44:01 <petern> Invalid github filter?
07:46:00 <LordAro> not on reddit either, strange
07:46:03 <LordAro> maybe it was irc
07:46:14 <TrueBrain> maybe it wasn't with RL, but it was a similar discussion I remember
07:46:23 <LordAro> ,mm
07:46:27 <TrueBrain> I remember, because I was surprised how you went heads-on with: show me what we rejected?
07:46:30 <andythenorth> in paid software projects, plausible demand for engineering effort is reckoned to be about 10x capacity
07:46:31 <TrueBrain> and it got a bit silent ๐Ÿ˜›
07:46:50 <LordAro> to the logs!
07:47:06 <Eddi|zuHause> didn't TTDPatch have a "rejected ideas" list?
07:47:28 <andythenorth> it is funny how long we say "X is not possible" though
07:47:31 <andythenorth> and then someone turns up with C
07:47:43 <Eddi|zuHause> yes.
07:48:23 <TrueBrain> petern:
07:48:28 <Eddi|zuHause> sometimes things become possible, if someone puts enough effort in
07:48:29 <TrueBrain> took a bit to find the actual correct link ๐Ÿ™‚
07:49:03 <Rubidium_> TrueBrain: that still contains many PRs that were not rejected, but got closed because someone made a better PR or something similar
07:49:13 <TrueBrain> absolutely
07:49:19 <TrueBrain> so the number isn't bigger than that ๐Ÿ™‚
07:49:21 <Eddi|zuHause> anyone remember this OpenTTD+5000 (or so?) thing? did we officially "reject" that?
07:49:26 <TrueBrain> but we don't have anything better ๐Ÿ˜„
07:50:01 <TrueBrain> there are 4 PRs for NRT that are closed in that list ๐Ÿ˜› And it clearly got added ๐Ÿ˜„
07:50:49 <petern> But shouldn't've been ๐Ÿ˜›
07:51:28 <Eddi|zuHause> remember that time when we "rejected" PBS? :p
07:52:30 <petern> A perfect example of removing something to (eventually) put something much better in its place.
07:52:51 <LordAro> TrueBrain:
07:52:53 <LordAro> found it
07:53:03 <TrueBrain> owh, that was more recent than I remember
07:54:00 <Eddi|zuHause> time got weird in the last 3 years
07:54:30 <andythenorth> anyway, circling the wagons in the face of criticism is not a good look ๐Ÿ˜›
07:55:00 <andythenorth> there is no need to feel defensive about some armchair experts having a chat amongst themselves
07:55:14 <andythenorth> TL;DR project is in good shape, but working on / in it can be frustrating as fuck
07:56:48 <LordAro> <3
07:57:50 <Eddi|zuHause> in all likelyhood, daylength is the most "rejected" feature that anyone actually put effort in to implement
07:58:12 <LordAro> closely followed by infrastructure sharing, i'd imagine
07:58:30 <LordAro> well, perhaps not closely
07:59:09 <Eddi|zuHause> copy&paste?
07:59:09 <andythenorth> timetables
07:59:15 <andythenorth> "timetables"
07:59:22 <andythenorth> signals on bridges
07:59:25 <andythenorth> signals in tunnels
07:59:26 <andythenorth> chunnel
07:59:28 <andythenorth> shunting
07:59:34 <andythenorth> daylength
07:59:39 <andythenorth> timetables
07:59:42 <andythenorth> daylength
07:59:53 <TrueBrain> *andythenorth is kicked for spamming*
07:59:59 <andythenorth> yeah not irc any more
08:00:09 <LordAro> about bloody time
08:00:11 <LordAro> :p
08:00:57 <Eddi|zuHause> i hate that dude anyway, he has all the worst ideas
08:01:24 <petern> Shunting is a great one. It's pretty complex and breaks many assumptions about the game, and the only real purpose is eye-candy.
08:03:17 <TrueBrain> ugh, trying to apply for a job, and I need to write a letter why I want to work there .. I have motivational issues writing that .. writers block? ๐Ÿ˜›
08:04:33 <Eddi|zuHause> dunno, i've never worked at a job i actually needed to apply to
08:05:35 <Eddi|zuHause> i've written one application once, but it became pretty clear during that process that it wouldn't be a job i'd want
08:06:19 <LordAro> TrueBrain: "money can be exchanged for goods and services"
08:07:26 <Eddi|zuHause> actually, that sounds like a job for ChatGPT... a letter that is completely meaningless and probably won't be read anyway, just checked that it is there.
08:16:38 <DorpsGek> [OpenTTD/OpenTTD] jengelh closed pull request #10633: Codechange: replace bridge cost loop by more efficient calculation
08:17:42 <petern> ^ another rejected PR!
08:17:53 <LordAro> :o
08:24:50 <pickpacket> petern: not rejected! Closed by the author
08:27:48 <Eddi|zuHause> i think you missed the joke :p
08:44:11 <TrueBrain> right, finally found some inspiration \o/
08:46:44 <petern> \o/
08:48:10 <pickpacket> I did indeed miss the joke >.<
08:57:17 <petern> Me too
09:18:12 <petern> Hmm, maybe I should go back to bed.
09:20:51 *** ZoeAngel has joined #openttd
09:20:51 <ZoeAngel> Hi guys. I want to try do first my project: pack of music which is on your choose folder. What should I do know to start it? (What language is in openttd for music etc.)
09:21:15 <petern> Basically, it has to be (General) MIDI files.
09:24:39 <ZoeAngel> Okay
09:30:48 <petern> There is also a metadata file (.obm iirc) which describes what goes where.
09:31:51 <petern> There's probably a description of that somewhere, or you can look at some existing ones.
09:32:04 <petern> There's also a GUI-based generator apparently, no idea how well that works.
09:33:29 <ZoeAngel> petern: I'll probably do that
10:03:01 *** gelignite has joined #openttd
10:23:53 <pickpacket> Speaking of music that hasnโ€™t worked for me since I started compiling the game myself
10:23:57 <pickpacket> ๐Ÿคท
10:24:13 <LordAro> linux?
10:24:31 <LordAro> fluidsynth dep missing, possibly?
10:41:04 <pickpacket> 32 bit debian
10:41:22 <pickpacket> I'll have to have a look at the deps, but I thought I had everything
11:35:52 *** _aD has quit IRC (Quit: leaving)
11:44:12 *** keikoz has joined #openttd
12:30:49 *** D-HUND is now known as debdog
13:32:29 <TrueBrain> Lol, crab language .. a fork of rust as reaction to the drama in rust community
13:32:34 <TrueBrain> Guess we are fine :p
13:35:38 <LordAro> again?
13:38:43 <LordAro> it does seem rather overblown
13:39:26 <Eddi|zuHause> forum thread going as well as i expected, it seems :)
13:40:02 <Eddi|zuHause> and i'm sure the poll is totally representative
13:41:06 <LordAro> of course
13:41:14 <LordAro> just like the forum is totally representative
13:41:25 <LordAro> just like irc is totally representative
13:41:43 <TrueBrain> I am happy I am an average player :p
13:42:11 <CK2347> I might be just a casual player
13:42:29 <TrueBrain> And the rust leadership is a bit weird atm .. they should communicate with each other and the world a bit better and transparent .. but everyone likes a good bonfire
13:42:44 <TrueBrain> So I am just having some popcorn
13:42:50 <LordAro> indeed
13:43:24 <LordAro> a suitable apology about not being able to offer this keynote speech and i'd imagine none of this would have happened
13:43:46 <LordAro> + some amount of compensation, i imagine
13:45:09 <TrueBrain> Or just, you know, don't invite someone in the first place ๐Ÿ˜„
13:45:32 <TrueBrain> But okay, Crab language is a rather childish reply to the whole thing
13:45:43 <TrueBrain> It is funny, but childish ๐Ÿ™‚
13:45:50 <CK2347> What happened to rust
13:46:29 <TrueBrain> Go to Hacker News and look for Rust articles of the last week
13:46:49 <TrueBrain> Too much too summarise ๐Ÿ™‚
13:54:04 <LordAro> TrueBrain: quite
14:04:10 *** nielsm has joined #openttd
14:09:28 *** _aD has joined #openttd
14:23:13 <TrueBrain> hmm .. we did not write our script API with the intend to ever replace Squirrel in a simple way ๐Ÿ˜› It is ... EVERYWHERE
14:28:25 <DorpsGek> [OpenTTD/team] alextov opened issue #422: [uk_UA] Translator access request
15:07:00 <dP>
15:07:00 <dP> lol, I accidentally realized I've never seen this crown icon before
15:15:04 <DorpsGek> [OpenTTD/OpenTTD] ldpl opened pull request #10891: Change: Simplify advertisement by removing small and medium options
15:20:42 <TrueBrain> hmm ... I can segfault this wasm interpreter really easily .. I guess that should worry me ๐Ÿ˜›
15:20:55 <TrueBrain> if I destroy the engine before the JIT is finished with the work, it crashes
15:21:12 <TrueBrain> so I disable the JIT, I was thinking, but it still runs in the background
15:21:13 <TrueBrain> nasty nasty
15:23:57 <DorpsGek> [OpenTTD/OpenTTD] orudge commented on pull request #10891: Change: Simplify advertisement by removing small and medium options
15:46:01 <DorpsGek> [OpenTTD/team] glx22 commented on issue #422: [uk_UA] Translator access request
15:46:30 <glx[d]> TrueBrain: maybe we should have used gpmi instead ๐Ÿ˜‰
15:46:36 <TrueBrain> ๐Ÿ˜„ ๐Ÿ˜„
15:46:42 <TrueBrain> now I feel old ๐Ÿ˜›
15:46:57 <TrueBrain> eDLL was funny .. lazy-loading DLLs ๐Ÿ™‚ I had such fun building that ๐Ÿ˜›
15:48:48 <TrueBrain> no, but our scripting engine .. it evolved .. it was written for AIs only, GS got added in a .. bit of a dirty way. Some generalization went over it .. but it is just a bit of a mess now ๐Ÿ™‚ Something else to untangle some other day/month/year ๐Ÿ˜›
15:49:48 <glx[d]> event driven GS was not the smartest choice (it's fine for AIs though)
15:50:04 <TrueBrain> I doubt anyone is actually using events in AI in a sane way ๐Ÿ˜›
15:50:14 <TrueBrain> most what I have seen they just try and hope for the best ๐Ÿ˜„
15:50:17 <DorpsGek> [OpenTTD/OpenTTD] ldpl commented on pull request #10891: Change: Simplify advertisement by removing small and medium options
15:50:41 <glx[d]> yeah but AIs don't really care, while GS could benefit from using callbacks
15:51:01 <TrueBrain> mostly the weird hybrid form it got is a bit weird ..
15:51:10 <TrueBrain> but okay .. past mistakes and bladiebladiebla ๐Ÿ˜„
15:51:37 <glx[d]> yeah hard to make it right on first try ๐Ÿ™‚
15:51:39 <DorpsGek> [OpenTTD/OpenTTD] orudge commented on pull request #10891: Change: Simplify advertisement by removing small and medium options
15:52:04 <dP> callbacks can be useful but with GS only running on server they won't solve everything
15:52:10 <dP> i.e. UI would still suck
15:52:30 <glx[d]> UI is another issue yes
15:52:58 <glx[d]> but with callbacks GS could be more reactive maybe
15:53:21 <TrueBrain> the main issue for me is, that what ever we consider a problem with GS, we have to support it till the end of days anyway .. so it is a bit meh, but meh we have to live with ๐Ÿ˜„
15:53:49 <TrueBrain> which means the question / challenge is, can we improve it without going insane ๐Ÿ™‚
15:54:24 <glx[d]> with callbacks we would need to plug calls in so many places
15:54:28 <TrueBrain> I still think WASM would be a nice candidate for that, mainly as it can be drastically faster to execute .. so opcode limit can be .. a bit .. more .... generous ๐Ÿ™‚
15:54:59 <TrueBrain> if you go with callbacks, you have to think about preemptive or async behaviour
15:55:01 <glx[d]> and calls can't be suspended
15:55:09 <glx[d]> which is another issue
15:55:40 <TrueBrain> GRF ofc solves most of that, so yeah ... GS is a mistake ๐Ÿ˜›
15:55:51 <TrueBrain> "a learning experience" ๐Ÿ˜„
15:56:10 <TrueBrain> right, time to rip out this wasm runtime, and to plug back in the next .. see where this one leads ๐Ÿ™‚
15:58:20 *** HerzogDeXtEr has joined #openttd
15:59:31 <DorpsGek> [OpenTTD/OpenTTD] ldpl commented on pull request #10891: Change: Simplify advertisement by removing small and medium options
16:03:58 <dP> glx[d]: being reactive mostly matters for ui
16:04:58 <dP> also, imo, just leave gs be and let whatever wasm thing to be is more of a newgrf replacement than gs
16:06:09 *** gelignite has quit IRC (Quit: Stay safe!)
16:06:24 <dP> it should will mostly fill the gap between newgrf and gs ofc, but at that point letting also provide resources isn't a big issue
16:07:31 <dP> saves the hassle of adding proper compression to newgrf xD
16:08:19 *** gelignite has joined #openttd
16:08:56 <TallTyler> You might get less pushback from players (forums, not Owen) if you include the automatic feature in vanilla. Then itโ€™s an improvement instead of simply a removal.
16:11:03 <dP> I have thoughts on doing that, yes
16:11:15 <TrueBrain> hihi, I now have a WASM runtime here that is 45MiB on disk, stripped. It does include a compiler (LLVM), but still .. I hope that doesn't translate to diskspace OpenTTD requires ๐Ÿ˜„
16:11:17 <dP> eventually xD
16:11:19 <TrueBrain> (owh no, 45 MiB! :D)
16:11:52 <dP> not the same pr anyway
16:12:49 <TallTyler> Yes, but could/should be proposed simultaneously so they can be considered together
16:13:12 <TallTyler> Or at least, add automation and then consider simplified options
16:13:16 <TallTyler> In that order
16:13:25 <dP> well, it's kind of different thing to automate 1 option or 3
16:13:36 <DorpsGek> [OpenTTD/OpenTTD] btzy commented on issue #10886: [Bug]: Opening the town directory does not focus on the search box
16:15:04 <dP> at the very least because of different price for rating point gained
16:29:43 <dP> actually, part of the reason I didn't add small/medium options to auto-advertiment in cmclient is that it just bad gameplay
16:29:52 <dP> even if it's technically more effecient
16:32:23 <dP> btw, I think auto-advertisement was one of my first patches to openttd xD
16:32:34 <dP> if not the first
16:37:54 <DorpsGek> [OpenTTD/OpenTTD] npabisz commented on issue #10887: [Bug]: Multiplayer server listing missing servers
16:38:06 <dP> nah, auto-funding was earlier xD
16:43:48 <dP> can some cmake jedi plz automate combining compat* files? it's getting out of hand with each version ๐Ÿ˜‰
16:47:24 *** gnomechomsky has joined #openttd
16:47:24 <gnomechomsky> Does anyone want to review/merge some of my PRs?
16:49:14 *** _aD has quit IRC (Ping timeout: 480 seconds)
16:51:19 <DorpsGek> [OpenTTD/OpenTTD] TrueBrain commented on issue #10887: [Bug]: Multiplayer server listing missing servers
16:51:46 <DorpsGek> [OpenTTD/OpenTTD] ldpl updated pull request #10891: Change: Simplify advertisement by removing small and medium options
16:52:11 <TrueBrain> okay, I hope I puzzled together correctly what the reporter is saying in 10887, but that was pretty hard ๐Ÿ™‚
16:53:32 <TrueBrain> gnomechomsky: wait, these kind of URLs work?! TIL! Cool ๐Ÿ™‚
16:53:42 <TrueBrain> and yeah, YAPF ... always tricky to find someone who wants to touch that ๐Ÿ˜›
16:54:37 <DorpsGek> [OpenTTD/OpenTTD] PeterN commented on pull request #10891: Change: Simplify advertisement by removing small and medium options
16:55:00 <dP> I've seen multiple people reply servers dropping out of the list from time to time
16:55:08 <dP> not sure what's causing that though
16:55:25 <dP> haven't seen that with citymania servers since the new master server
16:57:55 <DorpsGek> [OpenTTD/OpenTTD] ldpl commented on pull request #10891: Change: Simplify advertisement by removing small and medium options
16:58:08 <gnomechomsky> TrueBrain: Yes my one time cost solution does actually fix some bugs people are having, but updating it in a way that's backwards compatible might be harder
16:58:24 <gnomechomsky> But if anyone can suggest something I'd be glad to work on it
16:58:35 <gnomechomsky> A solution, I mean
16:58:46 <TrueBrain> We are scared of YAPF ๐Ÿ˜„
16:59:09 <TrueBrain> (A way of saying: it is not you, it is us) ๐Ÿ™‚
17:09:22 <DorpsGek> [OpenTTD/OpenTTD] PeterN commented on pull request #10891: Change: Simplify advertisement by removing small and medium options
17:26:58 <DorpsGek> [OpenTTD/OpenTTD] 2TallTyler commented on pull request #10891: Change: Simplify advertisement by removing small and medium options
17:52:10 <DorpsGek> [OpenTTD/OpenTTD] ldpl commented on pull request #10891: Change: Simplify advertisement by removing small and medium options
18:03:19 <DorpsGek> [OpenTTD/OpenTTD] Notts90 commented on pull request #10891: Change: Simplify advertisement by removing small and medium options
18:07:19 <dP> well, I guess advertisement is gonna suck forever
18:07:22 <dP> I blame shares :p
18:07:44 <dP> btw, I forgot I actually disabled small and medium advertisement on citymania completely because of those reasons
18:08:14 <dP> so those options just give an error
18:11:54 <DorpsGek> [OpenTTD/OpenTTD] TrueBrain commented on pull request #10891: Change: Simplify advertisement by removing small and medium options
18:13:46 <dP> TrueBrain: did you read my reply to Peter? my patchpack is doing fine
18:14:39 <dP> in fact, now that I remembered I fixed server as well maybe I should just close this issue as it's solved for everything I play
18:18:32 <TrueBrain> `Failed to execute the function: function signature mismatch` this WASM engine at least doesn't segfault when I fuck up ๐Ÿ˜„ Hihi ๐Ÿ™‚
18:19:57 <TrueBrain> okay, before: 11MB .. let's see how big this binary gets with the WASM engine compiled in there ..
18:20:12 <TrueBrain> TallTyler: will there be a keynote speaker btw?
18:20:35 <TrueBrain> well, no, I am not referencing Rust drama here; but I expects speakers to talk about things! ๐Ÿ˜„
18:20:57 <DorpsGek> [OpenTTD/OpenTTD] ldpl commented on pull request #10891: Change: Simplify advertisement by removing small and medium options
18:21:00 <DorpsGek> [OpenTTD/OpenTTD] ldpl closed pull request #10891: Change: Simplify advertisement by removing small and medium options
18:21:08 *** Wolf01 has joined #openttd
18:24:56 <TallTyler> TrueBrain: Surprise, it's you! ๐Ÿ˜›
18:24:57 <TrueBrain> lol, so I am building a release-build .. it is ratting out that I made a mistake with the ICU layouter ๐Ÿ˜„ How polite of the release-build to do so ..
18:25:08 <TrueBrain> TallTyler: haha, don't tempt me ๐Ÿ˜› You will regret it ๐Ÿ˜„
18:25:50 <TrueBrain> Rubidium / petern : not sure for who this is, but:
18:25:50 <TrueBrain> `src/town_gui.cpp:1202:36: warning: โ€˜bufโ€™ may be used uninitialized [-Wmaybe-uninitialized]
18:25:50 <TrueBrain> 1202 | GetTownName(buf, &this->params, this->townnameparts, lastof(buf));`
18:26:55 <TallTyler> Do we need an alternative way to take over AI companies? A console command or a button in the script debug window, or something?
18:27:05 <TallTyler> That's the only legitimate complaint in the current drama thread
18:27:33 <TrueBrain> weren't there already sufficient ways to do so?
18:27:57 <TrueBrain> you can stop AIs .. you can clean the company .. I think there already is?
18:28:01 <TrueBrain> well, not a fancy button I guess
18:28:31 <TrueBrain> for me that is the main problem with all kinds of forum drama .. it rarely is a conversation about facts ๐Ÿ™‚ Just a lot of pitchforks and emotions ๐Ÿ™‚
18:28:48 <TallTyler> That thread sure has a lot of emotions involved
18:29:03 <TallTyler> Apparently we've ruined JGRPP too, somehow
18:29:15 <TallTyler> Almost wrote "you" but then remembered I approved your PR ๐Ÿ˜›
18:29:51 <TrueBrain> yeah, still not sure why they were picking on JGRPP too ... was it backported to there? I dunno ๐Ÿ™‚
18:30:11 <TrueBrain> these threads just always remind me how easy it is to set things on fire
18:31:26 <TrueBrain> anyway, please do confirm, you can actually remove an AI company; but I am pretty sure that is already possible ๐Ÿ™‚
18:32:03 <TrueBrain> 11MB -> 15MB .. a 13.1 build vs master+WASM. So that is not bad. Pretty sure if you remove Squirrel it reduces again ๐Ÿ˜›
18:32:24 <TallTyler> I think the usecase that may be missing is taking over an AI company that has not gone bankrupt, such as if it crashes
18:32:50 *** Flygon has quit IRC (Quit: A toaster's basically a soldering iron designed to toast bread)
18:34:28 <DorpsGek> [OpenTTD/OpenTTD] TrueBrain opened pull request #10892: Codechange: initialize all values of ICURun on construction
18:34:28 <dP> bad as shares were for some people they did tickle a capitalist roleplay itch of taking over your competitor
18:35:03 <dP> And there is always "nostalgic" argument :p
18:35:49 <TrueBrain> TallTyler: I was right: `stop_ai` cleans up the AI company from console
18:35:52 <DorpsGek> [OpenTTD/nml] frosch123 commented on issue #294: Technical Question: What is the reason for limitation of 6 sprite sets per station?
18:36:04 <TrueBrain> totally eradicates it
18:36:14 <DorpsGek> [OpenTTD/OpenTTD] 2TallTyler approved pull request #10892: Codechange: initialize all values of ICURun on construction
18:36:25 <DorpsGek> [OpenTTD/OpenTTD] 2TallTyler commented on pull request #10892: Codechange: initialize all values of ICURun on construction
18:36:49 <TrueBrain> If that should be a button or not, is always the discussion ofc ๐Ÿ™‚
18:38:05 <frosch> TallTyler: TrueBrain It is a common power-fantasy to buy-out all AI competitions (even if they are succesful), by being more successful, and then cleaning up their mess and making their tracks "proper"
18:39:55 <JGR> The shares feature is a bit useless, bit it's not very much code either
18:40:15 *** _aD has joined #openttd
18:40:39 <JGR> The net time saving from removing it is likely less than what will be wasted on arguments about it
18:40:41 <frosch> TrueBrain: i can hold a key-note "every single feature in ottd can be argues to be useless" ๐Ÿ™‚
18:40:43 <andythenorth> JGR: can you please keep it in
18:40:56 <andythenorth> then you can have the pitchfork users
18:41:02 <DorpsGek> [OpenTTD/OpenTTD] DorpsGek pushed 1 commits to master
18:41:03 <DorpsGek> - Update: Translations from eints (by translators)
18:41:05 <TrueBrain> JGR: welcome to OpenTTD, I guess ๐Ÿ˜„ Hihi ๐Ÿ™‚
18:41:29 <TrueBrain> frosch: be careful, before you know it is boils down to: life is useless, and you sound like Marvin
18:41:43 <TrueBrain>
18:42:04 <frosch> shall i bring a towel?
18:42:08 <TrueBrain> yes please
18:42:30 <andythenorth>
18:42:44 <TrueBrain> frosch: so basically a hostile takeover; now that sounds more interesting ๐Ÿ˜„
18:43:34 <frosch> if you do not like the share system, maybe you can please them by adding a "buy-out at once" button instead
18:43:46 <andythenorth>
18:43:46 <andythenorth> we should amalgamate all devs into one avatar
18:43:52 <andythenorth> people would be nicer
18:44:02 <andythenorth> "the developers" is a non-person, it's other, it's easy to hate the power
18:44:08 <dP> frosch: that's 4 times less satisfaction! :p
18:44:09 <andythenorth> nobody hates JGRPP
18:44:31 <andythenorth> and people complain about me and my grf choices, but only about 2 of them bring pitchforks
18:45:30 <andythenorth> so what shall we call the OpenTTD developer?
18:45:32 <andythenorth> Marvin?
18:45:43 <andythenorth> I'll edit wikipedia soon
18:45:59 <andythenorth> "OpenTTD is a project begun by Ludde, and taken over by Marvin"
18:46:21 <frosch> andythenorth: btw. what is a leopard? afaik nothing is as inconsistent as trivial-names of cats. iirc there are like 5 vastly different beasts called panther :p
18:46:42 <Rubidium_> TrueBrain: I'm not really seeing a reason for that town_gui.cpp warning. Though it will be significantly rewritten after #10810 gets merged
18:46:43 <andythenorth> a leopard is spotty
18:46:54 <TrueBrain> so from what I can find, WASM doesn't support any form of objects .. which is a bit annoying. As that makes working with things a lot easier .. so I guess that means there should be a wrapper per popular language to make it more OO-like?
18:47:21 <TrueBrain> Rubidium_: release-builds with clang really don't like it, so we will only see it once we release ๐Ÿ˜„ So let's hope 10810 gets merged before release ๐Ÿ™‚
18:47:36 <frosch> TrueBrain: yes, handles everywhere. embrace the win32 api in wasm ๐Ÿ™‚
18:47:40 <dP> OO is overrated :p
18:48:17 <TrueBrain> frosch: yeah .. I was hoping with custom pointers or something you could work around that .. but no
18:48:18 <TrueBrain> just no
18:48:53 <JGR> andythenorth: That's not strictly true ๐Ÿ˜›
18:49:32 <TrueBrain> well, at least most WASM runtimes implement external-reference
18:49:42 <TrueBrain> so basically: a host-pointer
18:49:53 <TrueBrain> so the classic C API is doable in that sense
18:50:06 <andythenorth> JGR: ok logarithmic hierarchy of hate: "the developers", andythenorth, JGR
18:50:12 <andythenorth> largest -> smallest
18:50:41 <TrueBrain> anyway, why I was poking about keynotes to TallTyler , I think we should do a session about NewGRF, GS and AIs during the meetup. And assign a lot of tasks to andythenorth , as he is our project manager
18:51:30 <frosch> andythenorth: at the last meetup (the 2nd), we noticed that several attendees from the 1st meetup had become developers
18:51:49 <frosch> so by attending the next meetup you can level-up your hate-level
18:52:04 <TrueBrain> hahaha, now that is a good incentive ๐Ÿ˜„
18:53:21 <frosch> when you do want to do the sessions between lunch, museum and dinner? you may have the most free time while driving :p
18:53:31 <frosch> feel free to assign tasks to all the dutchies
18:56:03 <TrueBrain> no, still andythenorth ; he wanted this title, so now he has to live up to it!
18:56:04 <TrueBrain> ๐Ÿ˜„
18:56:42 <dP> andythenorth: I almost feel like I should've rebased cmclient to jgrpp after #9725
18:57:08 <dP> now that I already wasted a month merging that it feel kinda late
18:57:31 <JGR> I don't think that there's very much overlap between users on my branch and city builder users
18:58:02 <JGR> I sure you'd find other WTF things in my code base to object to ๐Ÿ˜›
18:58:59 <dP> yeah, that's the main reason actually, there is nothing much to gain for me in terms of gameplay features
18:59:22 <dP> performance improvements would be nice though
19:00:05 <dP> JGR: at least you don't seem to rewrite the codebase for no particular reason xD
19:00:42 <JGR> If I did that, it would make merging vanilla more difficult
19:00:50 <TrueBrain> funny, this WASM runtime allows "async" .. so I was like: wtf is async .. what they mean is that the WASM function can be executed in a thread, and you can do other things. "async" ๐Ÿ™‚
19:03:36 <dP> JGR: what do you do with vanilla changes like that though? merging them is difficult but not merging them means more problems in the future?
19:03:47 <dP> like savegame format and network command changes in particular
19:04:49 <Eddi|zuHause> savegame format is much more merge-friendly nowadays, and why would network commands be difficult to merge?
19:04:59 <JGR> For save games I've got parallel backends
19:06:00 <JGR> The command system I've got doesn't quite match either the old or new vanilla ones
19:06:18 <dP> Eddi|zuHause: because they are designed to completely eradicate the possibility of having the command container that I heavily relied on
19:08:02 <dP> JGR: you mean just a separate code for loading vanilla saves?
19:09:03 <dP> JGR: yeah, it's almost funny how there are 3 different command systems now in forks
19:11:23 <JGR> dP: Yes, I'm using the vanilla backend for savegame version >= 293, and the "old" backend for vanilla < 293, jgrpp, springpp, jokerpp and chillpp
19:17:37 <DorpsGek> [OpenTTD/OpenTTD] TrueBrain merged pull request #10892: Codechange: initialize all values of ICURun on construction
19:28:58 <glx[d]> TrueBrain: nightlies don't seem to trigger that, is it only with real releases (though nightlies don't use clang except for macos)
19:29:29 <TrueBrain> well, I have it locally with CLang 14 in release ๐Ÿ™‚
19:29:31 <TrueBrain> not in debug
19:34:01 <glx[d]> macos seems to be clang13
19:34:21 <TrueBrain> okay, this wasm runtime is pretty cool .. you can define a "cost" for host functions
19:34:29 <TrueBrain> and limit how much cost a WASM call can do
19:46:45 <TrueBrain> it is funny how all the wasm runtime docs assume you know exactly how WASM itself works ๐Ÿ˜› I dont ๐Ÿ˜„
19:50:26 *** gelignite has quit IRC (Quit: Stay safe!)
19:57:04 <frosch> i am not sure whether wasm people know how it works
19:57:34 <frosch> i had the impression it's very incrementally designed, and already started accumulating tech debt
19:57:48 <TrueBrain> I do not think you are wrong there ๐Ÿ™‚
19:57:56 <TrueBrain> there is now WASIX, which adds POSIX stuff to WASM
19:57:58 <TrueBrain> including sockets
19:57:59 <TrueBrain> and threads
19:58:05 <frosch> yes, i also read hn :p
19:58:29 <TrueBrain> okay, I should get statistics, but it remains zero .. what am I doing wrong ...
19:58:46 <pickpacket> Wasm == web assembly ?
19:58:47 <frosch> i hope you don't plan to add wasm sockets to ottd ๐Ÿ™‚
19:58:56 <TrueBrain> owh please no, no noooooooo
19:59:19 <TrueBrain> this runtime has nice tricks, like you can really build a VM per AI pretty easily
19:59:23 <TrueBrain> pickpacket: yes
19:59:42 <frosch> though it would be "modern" to have ai/gs connect remotely, and run them in the cloud behind a pay wall
19:59:54 <TrueBrain> oooeeehhh, I like how you are thinking
20:00:09 <frosch> ottdaas :p
20:01:13 <TrueBrain> hihi, if we do WASM, what you end up with is that the "first time startup" has to compile all WASM with an AoT, so it becomes fast ๐Ÿ™‚
20:01:20 <pickpacket> I never understood the rationale for wasm
20:01:30 <TrueBrain> so you get this classic loader on startup with "busy doing stuff"
20:01:35 <TrueBrain> feels very mature ๐Ÿ™‚
20:03:24 <Eddi|zuHause> "reticulating splines"? :p
20:03:35 <TrueBrain> this runtime is also fully thread-safe .. it is weird how mature it is
20:03:43 <TrueBrain> most so far were ... FAR from maturity ๐Ÿ˜›
20:04:15 <frosch> the one i looked at only had a mature c api. the c++ wrapper was crap
20:05:08 <frosch> well, "crap" is the wrong word. it was not wrong, but it had a lot of holes
20:05:42 <frosch> not sure, maybe it even stored "this" as int inside the vm
20:05:49 <TrueBrain> I tried `wasm-micro-runtime` earlier; and it has a lot of weirdness, crashes easily (because I was doing things wrong), needs a lot of validation, etc
20:06:01 <TrueBrain> but now I am looking at `WasmEdge`, as that is also available in vcpkg, and it is scary well done
20:06:11 <TrueBrain> `dbg: [script] Instruction count: 4, Instruction per second: 1081081.081081081, Total cost: 14`
20:06:14 <TrueBrain> w00p, figured it out ๐Ÿ™‚
20:07:30 <TrueBrain> `dbg: [script] Failed to execute the function: cost limit exceeded`
20:07:34 <TrueBrain> but you can't resume, it seems ..
20:07:54 <TrueBrain> so it is more of a runaway protection ๐Ÿ™‚
20:10:39 <frosch> yes, the one i tried also just used the wasm "trap" exception
20:10:51 <frosch> both for runtime and memory limits
20:11:13 <frosch> if you want to resume, you have to use threads
20:12:08 <TrueBrain> yeah, and as this is fully thread-safe and isolated, that isn't actually a problem
20:12:22 <frosch> i think lua had some performance-timer callbacks, which were called periodically, and which you could use to insert suspends
20:12:33 <frosch> maybe your wasm runtime has something similar
20:12:44 <TrueBrain> not currently, by the looks
20:12:50 <TrueBrain> they do intent to implement yield/resume
20:12:59 <TrueBrain> but that is kinda different
20:14:21 <TrueBrain> owh, the "async" part can do it
20:16:15 <TrueBrain> as in, you can do an AsyncWaitFor, timeout, suspend thread, and continue on with anything else
20:16:21 <TrueBrain> come back, revive thread, and repeat ๐Ÿ™‚
20:16:48 <TrueBrain> so it becomes time-based, instead of opcode-based; so it depends on your CPU ๐Ÿ˜›
20:17:35 <TrueBrain> (the reason we went with opcodes for Squirrel, is to make sure if it runs on my PC it runs on your PC; if you go for actual time, it might be it works fine on my PC, but gives a horrible experience on yours)
20:19:29 <frosch> is the costlimit also in realtime then?
20:19:34 <TrueBrain> no, that is based on cost
20:19:37 <TrueBrain> but it terminates the VM
20:19:43 <TrueBrain> or better worded: it leaves it in a bad state
20:20:19 <TrueBrain> they too have their Rubidium: ๐Ÿ˜›
20:20:58 <TrueBrain> that review bot .... do we dare? ๐Ÿ˜„
20:22:03 <TrueBrain> by the looks, it is doable to make an Async Cost thing, that suspends, rather than interrupts
20:22:46 <TrueBrain> we modified Squirrel enough for me to know we never going to find anything that works exactly how we want it ๐Ÿ˜› But seems upstreaming things is pretty doable .. ๐Ÿ™‚
20:23:43 <TrueBrain> 81% coverage on that project, that is impressive
20:25:07 <TrueBrain> adding a host function consumes 8 lines of code, per function ๐Ÿ˜„ haha ๐Ÿ™‚ Owh well, templates will fix that ๐Ÿ™‚
20:25:39 <frosch> oh dear... at my old job people ran cppcheck on c89 sources
20:25:49 <TrueBrain> scary
20:25:54 <frosch> the code used memset everywhere to initialise stuff
20:26:22 <frosch> and cppcheck would complain every single time, that they should use value-initialisation instead
20:26:52 <frosch> some teams ignored it, others let some intern replace memsets with {} :p
20:27:26 <TrueBrain> ๐Ÿ˜„ Not a bad idea ๐Ÿ˜›
20:27:28 <TrueBrain> can we have some interns
20:27:30 <TrueBrain> wait .......
20:27:31 <TrueBrain> are we .....
20:27:33 <TrueBrain> the interns?
20:27:44 <frosch> if we had clang-format, maybe clang-tidy could do it :p
20:28:11 <TrueBrain> we have an editor-config .. that is almost clang-format!
20:29:15 <frosch> problem with interns working on legacy c89 code they do not know... there are no unittests, enjoy the missing memset in production :p
20:29:32 <TrueBrain> AND NO UNITTESTS?! OMG OMG OMG OMG! ๐Ÿ˜›
20:29:59 <frosch> i read "no unittests" is the definition of "legacy code"
20:30:07 <TrueBrain> ๐Ÿ˜„
20:30:15 <TrueBrain> hmm ... how do I send a string to a WASM module ..
20:30:23 <frosch> you don't ๐Ÿ™‚
20:30:30 <TrueBrain> I guess as a externalref
20:30:58 <glx[d]> at least now most of our strings are std::string
20:31:11 <TrueBrain> but that means it is difficult to do string manipulation in the WASM module .. hmm
20:31:21 <frosch> that can also be a good thing
20:31:23 <TrueBrain> glx[d]: not actually helping, as these are C-APIs ๐Ÿ˜›
20:31:29 <glx[d]> oups
20:31:30 <frosch> you have to use proper translatelable stringids and dparams
20:31:57 <frosch> and not let the gs do it english-only
20:35:15 <TrueBrain> I guess you have to
20:35:30 <TrueBrain> both sides can have strings, but there isn't actually a way to send them to each other ๐Ÿ˜„
20:35:30 <frosch> <- why are they comparing wasm with docker?
20:35:42 <TrueBrain> yeah, wasmedge is a funny project
20:35:49 <TrueBrain> it is working surprisingly well too
20:35:53 <frosch> you can send strings from wasm to outside. std::span<char> is c-ish enough
20:36:19 <Eddi|zuHause> is that running wasm in edge or running edge in wasm? :p
20:36:36 <frosch> well, i guess you can also allocate heap inside the vm from the outside
20:36:45 <TrueBrain> heap seems to be the only way honestly
20:37:11 <TrueBrain> WasmEdge really only knows integers, floats, and externalref ๐Ÿ˜›
20:37:24 <TrueBrain> I tried returning a function with a string as parameter .. it just flatout refuses to load it ๐Ÿ™‚
20:37:39 <TrueBrain> well, not completely true .. it wants to import `string`
20:37:44 <TrueBrain> so if you map that on the heap, you should be fine
20:37:49 <frosch> yeah, just please use length-based string, no zero-termination ๐Ÿ™‚
20:39:37 <TrueBrain> haha, so I have this super simple javascript program to test with
20:39:50 <TrueBrain> translates into 13 lines of WAT (WAT is a WASM file before you make it binary)
20:39:56 <TrueBrain> now I change the parameter to `string`
20:40:13 <TrueBrain> I now have 1783 lines of WAT
20:40:43 <TrueBrain> I am not even using it, mind you ๐Ÿ˜›
20:41:18 <TrueBrain> ` (func $~lib/rt/itcms/Object#makeGray (param $0 i32)`
20:41:21 <TrueBrain> makeGray?!
20:45:14 <TrueBrain> but okay, that is this specific compiler that does this
20:45:28 <TrueBrain> it uses ints to talk to the host for those strings
20:47:07 <TrueBrain> takes 9260 instructions to convert an integer to a string ๐Ÿ˜›
20:47:20 <TrueBrain> performance wise, banning strings isn't the worst idea here ๐Ÿ™‚
20:47:30 <TrueBrain> it just makes debugging so incredibly difficult
20:55:33 <TrueBrain> hmm .. you are not allowed to cast an uint8 to a char?
20:55:53 <TrueBrain> owh well, reinterpret it is ๐Ÿ˜›
21:05:54 *** nielsm has quit IRC (Ping timeout: 480 seconds)
21:06:19 *** keikoz has quit IRC (Ping timeout: 480 seconds)
21:08:13 <TrueBrain> the downside of all these runtimes with their own headers .. it takes effort to find out how to, in this case, find an exported symbol ๐Ÿ™‚
21:12:46 <TrueBrain> sorry frosch , seems Javascript doesn't want to do length-based strings ๐Ÿ˜›
21:14:29 <TrueBrain> even worse, it is UTF-16 ... eeuuhhh .....
21:14:34 <TrueBrain> ieuw?
21:14:58 <DorpsGek> [OpenTTD/OpenTTD] rubidium42 opened pull request #10893: Codechange: replace C-style idioms with C++-style for OS specific file calls
21:17:49 <frosch> i don't dare to ask why you picked js :p
21:18:04 <TrueBrain> because I think that will be the most likely language people will want to write in ๐Ÿ™‚
21:18:11 <TrueBrain> learning people Rust of C++ might not be ideal ๐Ÿ˜‰
21:18:22 <andythenorth> python WASM compiler yet? ๐Ÿ˜›
21:18:39 <andythenorth> maybe not
21:18:54 <TrueBrain> Python will be one of the most difficult languages to use for this
21:18:59 <TrueBrain> mainly as it would make HUGE WASM files
21:19:04 <andythenorth> such bytes
21:19:18 <andythenorth> but we can't python -> js transpile?
21:19:22 <andythenorth> I thought that was a thing ๐Ÿ˜›
21:19:49 <dP> aren't there some python-like compiled languages
21:19:57 <andythenorth>
21:19:58 <dP> likey cython or whatever was it called...
21:20:10 <andythenorth> ^^ looks a bit weird
21:20:40 <dP> nah, not cython but something similarly named iirc
21:20:41 <JGR> Trying to shoe-horn Python into compiled contexts seems a bit odd to me
21:20:48 <andythenorth> nobody wants to teach me Rust?
21:20:56 <andythenorth> is that what we're saying here?
21:21:09 <dP> it is kinda odd but python is just awesome
21:21:19 <DorpsGek> [OpenTTD/OpenTTD] TrueBrain commented on pull request #10893: Codechange: replace C-style idioms with C++-style for OS specific file calls
21:21:40 <JGR> To be honest, I don't really why understand why Python is seen like the best thing since sliced bread
21:22:07 <TrueBrain> frosch: in case you are bored, a nice WTF-16 read: ๐Ÿ˜›
21:22:10 <andythenorth> the problem I have is that my hierarchy of preferred programming languages is:
21:22:10 <andythenorth> python -> python -> python -> Flash ActionScript -> C++ -> Squirrel -> BBC Basic -> Javascript
21:22:21 <andythenorth> oh I missed nfo
21:22:28 <dP> JGR: how well do you know python?
21:22:35 <andythenorth> nfo is preferable to javascript
21:22:47 <frosch> TrueBrain: in any case, it's more reason to not have any strings in the api ๐Ÿ™‚
21:22:56 <TrueBrain> yeah, but what about debugging?
21:22:56 <JGR> dP: I've done enough of it that I would never pick it for any kind of green-field project
21:23:00 <dP> andythenorth: es6 javascript might be slightly better
21:23:18 <frosch> some interpreters have debug hooks
21:23:26 <TrueBrain> that is way to low level ๐Ÿ˜›
21:23:32 <frosch> do you want to go printf debugging again?
21:23:35 <TrueBrain> when you are working on an AI or what-ever, you just want to add printfs ๐Ÿ™‚
21:23:36 <JGR> I just find it very weird, and performance is not great
21:23:54 <andythenorth> python is slow, and probably not suitable for people who can actually program
21:24:08 <TrueBrain> JGR: that is objectively untrue ๐Ÿ˜› Performance is what you make of it, similar to any other language ๐Ÿ™‚
21:24:15 <andythenorth> I find it very intuitive, much more than any other language I tried
21:24:17 <TrueBrain> but yeah, you need a bit of experience before it shines ๐Ÿ™‚
21:24:31 <andythenorth> anyway, WASM ๐Ÿ˜›
21:24:34 <TrueBrain> mostly why Python is very useful, is because it has a whole eco-system that actually works ๐Ÿ™‚
21:24:39 <TrueBrain> also why Rust is taking off like a mofo
21:24:51 <andythenorth> python it's really very hard to foot-gun yourself
21:24:57 <andythenorth> it took me about 5 years of trying
21:25:00 <dP> python is way more enjoyable to work with than any other language I know, and that's a lot of them
21:25:09 <dP> and performance is not usually the issue if you use it right
21:25:19 <TrueBrain> being able to write an HTTP proxy in 20 lines of code in 10 minutes .. not many languages that allow me to do that ๐Ÿ˜„ But it does require knowing how to do that exactly .. which takes a few months / years ๐Ÿ˜›
21:25:27 <TrueBrain> but that brings us to the question .. what is your poison? Perl? ๐Ÿ˜„ ๐Ÿ˜„
21:25:42 <JGR> I do still write Perl
21:25:47 <TrueBrain> CALLED IT! ๐Ÿ™‚
21:25:55 <JGR> Though my usual go to for quick untyped stuff is JS
21:26:05 <frosch> oh dear.. i just learned wtf-8 and wtf-16 are actual encodings. i thought it was a joke name
21:26:10 <TrueBrain> Go is also up and coming for those quick things ๐Ÿ™‚
21:26:11 <JGR> NodeJS is actually fairly nice
21:26:20 <JGR> Async stuff in Python is a bit painful
21:26:26 <TrueBrain> it is?
21:26:36 <TrueBrain> makes me wonder if you ever used it right ๐Ÿ˜› ๐Ÿ˜„
21:26:39 <TrueBrain> (just pulling your leg)
21:26:46 <TrueBrain> frosch: yeah, I have nightmares now
21:26:57 <andythenorth> anyway, surely we can just transpile or something ๐Ÿ˜›
21:27:01 <JGR> Modern Python is probably better than last I had to deal with someone else's async Python ๐Ÿ˜›
21:27:11 <andythenorth> my squirrel GS code is somewhat written in python ๐Ÿ˜›
21:27:13 <TrueBrain> JGR: 3.10+ is a huge difference from 2.7, yes ๐Ÿ˜„
21:27:33 <TrueBrain> async since 3.7 is very easy to use
21:27:52 <TrueBrain> just too many darn libraries don't support it yet ๐Ÿ˜ฆ
21:27:52 <dP> pre-asyncio async was pretty weird I guess
21:27:54 <JGR> Golang is pretty nice TBH, though weirdly limited in some places
21:28:07 <TrueBrain> I am trying really hard to not learn yet-another-language ..
21:28:23 <TrueBrain> frosch: but if no strings, what would you suggest for the log of an AI or GS? Just nothing?
21:28:34 <DorpsGek> [OpenTTD/OpenTTD] rubidium42 commented on pull request #10893: Codechange: replace C-style idioms with C++-style for OS specific file calls
21:28:35 <dP> it's not hard to find reasons not to learn go))
21:28:42 <dP> at least it was for me
21:29:24 <JGR> Go is a such a small language that you can learn it very easily
21:29:32 <frosch> TrueBrain: we can also use stringid+setdparam for debug output
21:29:41 <TrueBrain> sounds though
21:29:44 <TrueBrain> but I guess
21:29:48 <TrueBrain> means you can translate it! ๐Ÿ˜„
21:30:07 <frosch> maybe you can abuse some import statement to define strings
21:30:26 <dP> I think for me go is mostly just a weird middle ground between python and rust that I have no use for
21:30:27 <TrueBrain> well, this WTF-16 can be translated to a length-based string by some templating on the Javascript-side
21:30:29 <frosch> import "some text with {CARGO}"
21:30:33 <TrueBrain> we need to template it anyway, to make objects possible
21:33:40 <DorpsGek> [OpenTTD/OpenTTD] rubidium42 updated pull request #10893: Codechange: replace C-style idioms with C++-style for OS specific file calls
21:34:02 <DorpsGek> [OpenTTD/OpenTTD] TrueBrain approved pull request #10893: Codechange: replace C-style idioms with C++-style for OS specific file calls
21:34:05 <TrueBrain> I even missed a `&`, pfff
21:35:13 <TrueBrain> btw, this WTF-16 problem is just because of the random Javascript -> WASM I picked .. I am sure there are others ๐Ÿ˜„
21:37:06 <dP> OpenTTD/src/saveload/../safeguards.h:59:19: error: โ€˜SAFEGUARD_DO_NOT_USE_THIS_METHODโ€™ was not declared in this scope
21:37:06 <dP> 59 | #define fprintf SAFEGUARD_DO_NOT_USE_THIS_METHOD
21:37:06 <dP> ok, now this is annoying
21:37:32 <dP> I used it for print debugging
21:37:57 <dP> because Debug isn't included in half of the code
21:38:02 <dP> at least it wasn't last time I tried
21:38:23 <JGR> You can just comment it out
21:38:52 <dP> yeah, but I'll have to do that every damn time and try not to forget to uncomment after I'm done
21:39:02 <dP> same with Debug, I can include it, it's just annoying
21:39:19 *** _aD has quit IRC (Ping timeout: 480 seconds)
21:39:56 <JGR> It's your own branch, you can comment stuff out permanently if need be
21:40:15 <JGR> Or whatever else makes debugging easier
21:42:00 <dP> I do want to print stuff in vanilla code quite often
21:42:21 <dP> fprintf worked everywhere
21:42:26 <TrueBrain> lol, I tried a Javascript -> WASM (I was using "TypeScript" -> WASM) .. it produces a 1MB WASM file .. haha, no tnx ..
21:42:44 <dP> even though format string is a nuisance
21:44:35 <Rubidium_> you are aware of fmt::print?
21:44:49 <dP> Rubidium_: and that is included where?
21:44:57 <TrueBrain> frosch: I guess it also solves people naming vehicles etc in AIs .. would force them to be translatable ๐Ÿ˜›
21:45:19 <JGR> dP: Currently in vanilla, in all files
21:45:55 <Rubidium_> (except when manually disabling precompiled headers)
21:47:01 <frosch> TrueBrain: i never name managers or vehicles, sometimes i even leave the groups just numbered :p
21:47:17 <TrueBrain> are you an AI? ๐Ÿ˜›
21:47:18 <dP> hm, not seeing it stdafx.h but if it's somehow included that's awesome
21:47:35 <frosch> anyway, i kind of like the idea of defining strings by "importing them"
21:47:39 <dP> well, cmclient uses it's own fmt version because it started before vanilla but I'll figure it out...
21:47:57 <TrueBrain> frosch: what does it solve?
21:49:29 <frosch> `import "fmt"."my debug print {NUM}"` would "import" a function, taking a single parameter (the NUM) and returning a string handle
21:49:50 <frosch> that keeps all the strings and encoding crap out of the api
21:50:10 <TrueBrain> I am not sure that is possible in WASM .. I think all imports need to exist before you can load a WASM module ๐Ÿ™‚
21:50:43 <frosch> you can compile them, and then query what they need
21:51:13 <frosch> the interpreters i used just gave you a vector of imported functions, with name and signature
21:52:08 <TrueBrain> from both runtimes I now worked with, neither really allowed to do that manually, unless you really went under-the-hood ๐Ÿ˜›
21:52:13 <TrueBrain> which is far from "fun" ๐Ÿ™‚
21:52:21 <TrueBrain> which kinda make sense, tbh
21:52:53 <TrueBrain> hmm, can't really find another TypeScript -> WASM compiler .. annoying ๐Ÿ˜›
21:53:03 <TrueBrain> so I guess it will be Rust / Go / C++ ๐Ÿ˜›
21:53:35 <frosch> i am excited how andy's pyrust, pygo an pyc++ will look like
21:53:41 <TrueBrain> frosch: thinking some more about this .. in C++ that will be ... "fun"? ๐Ÿ˜„
21:53:47 <TrueBrain> as, how do you do spaces ๐Ÿ˜›
21:54:15 <frosch> could be a lightning talk at cppcon: do you hate the c preprocessor? i replaced it with jinja templates
21:55:30 <frosch> hmm, ah right... i only looked at the wasm format. ofc compilers expect it to be c prototype names
21:56:07 <frosch> well, too bad, i thought it was a nice way of numbering the strings inside the vm
21:56:33 <TrueBrain> you are not wrong
21:56:48 <TrueBrain> for some compilers you can fix that by annotation
21:57:24 <TrueBrain> owh, you can do too for C++
21:57:28 <TrueBrain> you can set the `import_name`
21:57:44 <TrueBrain> it just makes very long lines to write to create strings
21:58:09 <TrueBrain> `_attribute__((import_module("strings"), import_name("my debug print {NUM}"))) int32_t MyDebugPrint(int32_t);`
21:58:22 <TrueBrain> for .. every ... single ... string ๐Ÿ˜„
21:58:33 <frosch> well, maybe rather want a regular english.txt, and then generate some header from it
21:58:41 <TrueBrain> yup
21:58:56 <frosch> in other news, so far 29 people are "interested" in the event ๐Ÿ˜ฎ
21:59:03 <TrueBrain> so how ever you slice it, if we go for WASM, we do need to prepare some boilerplate for some languages ..
21:59:15 <TrueBrain> ugh, I really hope 22 of them don't show up ๐Ÿ˜›
21:59:21 <TrueBrain> I blame TallTyler , being so inclusive ๐Ÿ˜„
21:59:23 <TrueBrain> hihihihi
22:13:51 <TrueBrain> lol, I can read the signature of a function, but I cannot execute it .. that can't be right ๐Ÿ˜›
22:14:07 <TallTyler> I suspect there will be nowhere close to 29
22:14:14 *** Wolf01 has quit IRC (Quit: Once again the world is quick to bury me.)
22:14:18 <TallTyler> Maybe half that maximum
22:14:33 <TrueBrain> too many people, I am not that social! ๐Ÿ˜„
22:28:39 <TrueBrain> hihi, AssemblerScript takes 4 instructions where clang-C++ takes 24 instruction for the same code ๐Ÿ˜„
22:34:44 *** HerzogDeXtEr has quit IRC (Read error: Connection reset by peer)
22:39:22 *** esselfe has quit IRC (Quit: rebooting)
22:43:00 *** esselfe has joined #openttd
22:45:52 <TrueBrain> frosch: okay, in theory it is possible, your import idea for strings. Would require some boilerplate, but again, we have to do that anyway ๐Ÿ˜›
22:46:25 <TrueBrain> still questionable if it actually solves anything, but that is not the point ๐Ÿ˜„
23:10:58 <DorpsGek> [OpenTTD/nml] trolleytrev commented on issue #294: Technical Question: What is the reason for limitation of 6 sprite sets per station?
23:19:53 *** Smedles has joined #openttd
23:19:53 *** Smedles_ has quit IRC (Read error: Connection reset by peer)
23:26:22 <DorpsGek> [OpenTTD/nml] glx22 commented on issue #294: Technical Question: What is the reason for limitation of 6 sprite sets per station?