Log for #openttd on 3rd April 2021:
Times are UTC Toggle Colours
00:00:21  <snail_UES_> if I just go from Angel to Old Street, I don’t care if I’m traveling in a royal train or something
00:00:24  <andythenorth> if we want to use realism, higher ticket price is higher ticket price
00:01:00  <andythenorth> seems simple
00:01:23  <andythenorth> the payment rate madness might be an artefact of 'we increased map sizes many years ago'
00:01:23  <snail_UES_> but no one would buy it, so from the standpoint of a railway company, it won’t give you the additional profit you expect
00:01:37  <andythenorth> I fail to understand the problem :)
00:01:47  <andythenorth> player chooses which vehicles to use
00:01:48  <andythenorth> not me
00:01:52  <andythenorth> I just draw them
00:02:19  <frosch123> i always thought payment depends on travelling speed (distance/time)
00:02:22  <snail_UES_> same for me, I just draw them and code them
00:02:23  <frosch123> so map size does not matter
00:02:35  <snail_UES_> but I would like to give every vehicle I draw and code a chance...
00:02:46  <andythenorth> frosch123 I might misunderstand it
00:03:09  <frosch123> andythenorth: yes, there are a lot of myths, and little facts :)
00:03:17  <andythenorth> I have read the formula many times
00:03:25  <andythenorth> and looked at DP's graphs a few times
00:04:06  <andythenorth> I did a big test game also, but it wasn't very conclusive
00:04:24  <frosch123> it's late, night :)
00:04:27  *** frosch123 has quit IRC
00:04:40  <andythenorth> it is
00:04:42  *** andythenorth has quit IRC
00:13:33  *** glx has quit IRC
00:34:01  *** Progman has quit IRC
00:48:39  <DorpsGek> [OpenTTD/OpenTTD] perezdidac opened pull request #8934: Change: NewGRF window apply button to disable if changes not made
00:49:04  *** didac has joined #openttd
01:16:33  *** spnda has quit IRC
01:18:00  *** didac has quit IRC
01:22:30  <DorpsGek> [OpenTTD/bananas-server] perezdidac commented on pull request #43: Add: pass upload date to OpenTTD client
01:42:03  *** WormnestAndroid has quit IRC
01:42:42  *** WormnestAndroid has joined #openttd
02:00:41  *** Flygon has joined #openttd
02:53:52  *** Wormnest has quit IRC
04:08:50  *** gnu_jj has quit IRC
04:44:33  *** snail_UES_ has quit IRC
05:49:07  *** Wuzzy has quit IRC
06:15:35  *** gnu_jj has joined #openttd
06:23:45  *** gnu_jj has quit IRC
06:45:07  *** andythenorth has joined #openttd
06:50:37  *** Progman has joined #openttd
07:05:31  *** nielsm has joined #openttd
07:20:39  <andythenorth> uuuf
07:20:45  * andythenorth stares into the abyss
07:20:47  <andythenorth> walks away
07:22:48  <DorpsGek> [OpenTTD/OpenTTD] smsm1 opened issue #8935: Crash on save on macOS
07:35:11  <DorpsGek> [OpenTTD/OpenTTD] andythenorth commented on issue #8935: Crash on save on macOS
07:41:25  *** Wolf01 has joined #openttd
07:47:28  *** iSoSyS has joined #openttd
07:48:01  <Wolf01> So what came out from yesterday's live? Only the PR to remove the cargo colours UI? :D:D:D
08:05:40  <TrueBrain> So nobody tested saving on Mac? :p
08:14:02  <andythenorth> seems not
08:14:27  <LordAro> oops
08:14:42  <LordAro> what changed between beta2 & release that could affect that?
08:14:49  <andythenorth> the save works
08:15:06  * andythenorth guesses something window handling
08:15:55  <TrueBrain> Threading, if I would guess
08:16:09  <TrueBrain> Something executed from the wrong thread
08:17:23  <TrueBrain> Does autosave also crash?
08:17:47  <andythenorth> not that I've seen no
08:30:22  <andythenorth> I can test more later today
08:30:44  <TrueBrain> seems our friend that is banned from tt-forums and Discord found a new place to write weird stuff :P
08:30:58  <andythenorth> I noticed
08:31:06  <andythenorth> 'community management'
08:31:17  <andythenorth> means well, has life issues
08:32:50  <TrueBrain> some uploaded screenshots look amazing
08:33:01  <TrueBrain>
08:33:05  <TrueBrain> like, is that the same game?!
08:33:37  <andythenorth> it is!
08:35:46  <andythenorth>
08:38:18  <LordAro> TrueBrain: you can't just say that and not link the weird stuff :p
08:38:55  <TrueBrain> I know right :P
08:39:09  <TrueBrain> it is not bad btw; just weird
08:39:38  <DorpsGek> [OpenTTD/OpenTTD] kneekoo opened pull request #8936: Add Romanian plural support
08:40:06  <TrueBrain> wait, we don't have all specials forms yet?
08:40:09  <TrueBrain> 13 still isn't enough?
08:40:45  <andythenorth> lol
08:40:46  <andythenorth>
08:40:46  <LordAro> lol
08:40:47  <TrueBrain> Rb spend so much countless hours on this
08:40:53  <andythenorth> stuff like that ^^ still surprises me
08:40:57  <andythenorth> and I drew most of those sprites :P
08:41:29  <Wolf01> Is that OpenTTD? lol
08:43:02  <nielsm>  top vs bottom?
08:44:28  <TrueBrain> nielsm: honestly, neither looks good .. but I am trying to see if I have suggestions .. which isn't trivial :D
08:44:39  <Wolf01> nielsm, the thing always bothered me of the main menu is that you have non modal popups, and you might misclick, btw I prefer the bottom one
08:45:01  <TrueBrain> some padding between buttons also help btw, but that is not what you asked I assume :D
08:45:54  <LordAro> someone i know has just linked me to this
08:45:57  <nielsm> TrueBrain: I could make it a drag-down menu like the toolbar!
08:46:00  <LordAro> ...i've just had to explain about GPL & linking
08:46:04  <LordAro> which is a shame
08:46:07  <TrueBrain> nielsm: worth a shot
08:46:13  <TrueBrain> LordAro: yup .....
08:46:35  <TrueBrain> nielsm: for me the bottom one is most consistent, but the windows blend too much together, too little contrast
08:46:38  <DorpsGek> [OpenTTD/OpenTTD] LordAro commented on pull request #8934: Change: NewGRF window apply button to disable if changes not made
08:46:41  <TrueBrain> so the other approach would be to use another background colour
08:46:44  <TrueBrain> which is also all sorts of wrong :P
08:46:52  <TrueBrain> our windows miss shading
08:47:48  <TrueBrain> all other windows are bigger than the main menu window
08:47:54  <TrueBrain> that would be the other solution I can come up with
08:47:58  <TrueBrain> but dropdown might just work too :)
08:47:59  <andythenorth> videos of original TTD show tutorials had green background
08:48:05  <andythenorth> for dialog
08:48:23  <TrueBrain> LordAro: he build that quickly btw
08:48:33  <LordAro> indeed
08:49:11  *** sla_ro|master has joined #openttd
08:49:16  <TrueBrain> looks solid too
08:49:18  <TrueBrain> just yes .. linking
08:49:22  <andythenorth>
08:50:46  <LordAro> TrueBrain: remind me, would dlopen be ok with GPL, or not?
08:51:01  <TrueBrain> honestly, I have not looked into the problem really
08:51:16  <TrueBrain> I just know we cannot link the SDK statically
08:51:36  <TrueBrain> last time I searched for it, I had a hard time finding good information about it
08:51:51  <nielsm>
08:52:14  <TrueBrain> that is a lot better nielsm
08:52:20  <TrueBrain> I would still add padding between the buttons :D
08:52:52  <TrueBrain> and some rewording on the buttons .. "Official website" could just be "Website" I guess :)
08:53:08  <LordAro> would need to see it in the sprite font to be sure :p
08:53:18  <TrueBrain> "Community forums" maybe to the instead
08:53:20  <andythenorth> 'find us on steam'? :)
08:53:28  <nielsm> with spacing:
08:53:30  <TrueBrain> forum is not the most ... friendly of places for new players to go to :P
08:53:31  <andythenorth> hmm maybe controversial
08:53:54  <TrueBrain> My OCD triggers it is not the same padding as the window below, but with padding looks better imo :)
08:54:02  *** iSoSyS has quit IRC
08:56:20  <_dp_> is that the only thing that triggers your OCD there? :p
08:57:07  <DorpsGek> [OpenTTD/bananas-server] TrueBrain commented on pull request #43: Add: pass upload date to OpenTTD client
08:57:23  <TrueBrain> are you gatekeeping my OCD now?
08:58:46  <_dp_> yes, your OCD is not OCD enough to be called OCD! :p
08:59:52  <TrueBrain> hmmm .. 5 times now I was going to do something, got distracted, couldn't remember what I was going to do, remembered, etc
09:01:41  <TrueBrain> LordAro: btw, dynamic linking in general has the nicely added bonus that we don't have to build 2 binaries :P
09:01:47  <TrueBrain> but that is more a practical thing
09:01:54  <LordAro> TrueBrain: i said that too
09:02:11  <nielsm>  probably need better text, or make the buttons larger
09:02:15  <LordAro> a "steam version" is something to avoid if at all possible
09:03:28  <TrueBrain> nielsm: haha, yes, but it looks good in my opinion :)
09:03:46  <TrueBrain> not sure it is clear to people the buttons on the right will open their browser .. but on the other hand, they will find out when they click it :P
09:03:58  <LordAro> hmm
09:04:25  <TrueBrain> LordAro: what am I looking at?
09:04:32  <nielsm>  sprite font 2x  ---  and 1x
09:04:38  <LordAro> "Here's some C code for talking to Steamworks without linking against Steamworks, for the GPL crowd."
09:04:46  <TrueBrain> nielsm: maybe just "Community"?
09:05:35  <TrueBrain> LordAro: just creates a second process by the looks
09:05:40  <LordAro> yeah
09:05:42  <TrueBrain> very windows-only
09:05:55  <TrueBrain> for me, when I think about it, there are two sides
09:05:59  <TrueBrain> we define the license of our product
09:06:00  <LordAro> there's definitely some #ifdef _WIN32 in there
09:06:12  <TrueBrain> so if we dlopen to steamworks .. who is going to disagree with it?
09:06:26  <TrueBrain> worst case, we can sue ourselves to challenge if that is truly GPL?
09:06:39  <DorpsGek> [OpenTTD/OpenTTD] glx22 commented on pull request #8936: Add: Plural support for Romanian translations
09:06:43  <TrueBrain> but I am also thinking about SDL, how it dlopen()s everything
09:06:48  <TrueBrain> including OpenGL etc
09:06:50  <LordAro> i think the issue is that all other authors can also do that?
09:06:56  <TrueBrain> which drivers are truly ... not open :P
09:06:58  <LordAro> i'm really not sure
09:07:01  <LordAro> yeah
09:07:14  <LordAro> anyone got a software lawyer on retainer? :p
09:07:57  <LordAro> i'd suggest an email to FSF, but they're probably a bit biased
09:08:04  <nielsm> okay good, I did make it right so it mirrors in RTL language
09:08:16  <TrueBrain> haha
09:08:17  <TrueBrain> nice
09:11:13  <nielsm> hm I wonder if putting "Known bugs" at bottom is better, from my personal theory that the last item has more visibility than the second-to-last (and the license text is probably the least interesting of the four text files)
09:11:43  <TrueBrain> LordAro:
09:11:48  <TrueBrain> at least that is really clearly worded
09:12:03  <TrueBrain> nielsm: what I like is that it aligns with "Report a bug"
09:12:07  <TrueBrain> that is visually really nice to me
09:12:27  <LordAro> TrueBrain: mm
09:12:45  <LordAro> TrueBrain: well, it doesn't specify "optional" or not
09:12:49  <TrueBrain> so maybe: Readme - Changelog \n Manual - Community \n License - Website \n Known bugs - Report a bug ?
09:13:10  <TrueBrain> LordAro: at least it gives bandwidth. For sure using a fork and only doing callbacks, they consider fine
09:13:23  <TrueBrain> funny enough, we have to consider NewGRFs too :)
09:13:27  <TrueBrain> we "dynamically" link to them
09:13:38  <DorpsGek> [OpenTTD/OpenTTD] nielsmh updated pull request #7786: Add: Help and manuals window
09:13:43  <LordAro> quite
09:13:51  <LordAro> maybe we just quietly ignore that problem :p
09:13:58  <TrueBrain> nielsm: added preview label to your PR, so I can look at it ingame :D
09:14:02  <nielsm> TrueBrain: right now it's organised so the left column is text files and right column is web links
09:14:20  <TrueBrain> nielsm: yeah, I understood. So not sure my idea works at all :P
09:14:21  <nielsm> will it work with the text files viewing? I'm not sure
09:14:50  <TrueBrain> hmm .. they are external files?
09:14:52  <nielsm> but I think it's almost time to begin the laborous process of squashing
09:14:57  <TrueBrain> yeah, then they need to be embedded first :D
09:15:09  <LordAro> embedding megabytes of text is undesirable
09:15:13  <DorpsGek> [OpenTTD/OpenTTD] kneekoo commented on pull request #8936: Add: Plural support for Romanian translations
09:15:17  <TrueBrain> embedding in emscripten LordAro :)
09:15:20  <TrueBrain> which is already megabytes
09:15:27  <LordAro> *i guess*
09:15:33  <LordAro> but might as well try to compress them
09:15:49  <LordAro> no need to make it bigger than necessary
09:16:04  <TrueBrain> nielsm: <- defines what files are available to emscripten
09:17:03  <nielsm> ah I'll take a look at that
09:17:07  <nielsm> first, shower
09:17:11  <TrueBrain> LordAro: I think you create a problem that doesn't exist :P The only thing I could consider worth doing, is make a shorter changelog
09:17:27  <TrueBrain> but compared to the size of the rest, known-bugs, license and readme are not making any dent
09:18:18  <TrueBrain> even the changelog is not even a megabyte :P
09:18:59  <TrueBrain> either way, emscripten is served via http, which does gzip compression
09:20:17  <TrueBrain> the more I read the blob GNU wrote, the more I think they are just splitting hairs
09:20:21  <TrueBrain> if you use fork/exec, it is fine
09:20:27  <TrueBrain> but if you do it via VM-based code, it is not
09:20:30  <TrueBrain> is basically what they say
09:20:40  <TrueBrain> which makes 0 sense from a licensing perspective
09:20:59  <TrueBrain> (VM-based code like Squirrel, for example)
09:22:17  <DorpsGek> [OpenTTD/OpenTTD] kneekoo commented on pull request #8936: Add: Plural support for Romanian translations
09:23:54  *** peter1138 has joined #openttd
09:23:54  *** ChanServ sets mode: +o peter1138
09:41:26  *** Samu has joined #openttd
09:52:58  *** spnda has joined #openttd
09:53:19  <nielsm> how much work is it to set up an emscripten build environment of my own...
09:53:23  <TrueBrain> LordAro: I keep circling back to, which makes it pretty clear ..
09:53:29  <TrueBrain> nielsm: I supplied a Dockerfile :)
09:53:44  <TrueBrain> and a README
09:53:45  <TrueBrain>
09:53:57  <nielsm> okay so I need to play with ducks
09:54:11  <TrueBrain> you can also locally install emsdk
09:54:16  <TrueBrain> but, you can also wing it :)
09:54:26  <TrueBrain> I mean, you have to add 3 files I think, update the PR
09:54:30  <TrueBrain> the preview will autobuild it :P
09:54:48  <TrueBrain> or, if you like, I can add it next week or so :)
09:55:27  <nielsm> yeah no text files right now
09:55:38  <TrueBrain> LordAro: the only way "out" seems to be if we define an API which we explicit license differently than the rest of our code
09:56:25  <TrueBrain> maybe also just rename "Manual/Wiki" into "Manual"?
09:56:35  <TrueBrain> that it is hosted via a wiki is maybe not that important? (honest questions, to be clear)
09:56:51  <TrueBrain> Report a bug should maybe link to ?
09:57:35  <peter1138> Is that Steam page about distributing on Steam, or linking to an SDK?
09:58:32  <TrueBrain> not sure what you are asking, but to copy/paste the first sentence of that page: "The Steamworks SDK is incompatible with some open source licenses, which may affect your ability to distribute open source software via Steam."
10:00:49  <peter1138> So a better title for their page would be "Distributing Open Source Applications linked with Steamworks SDK" rather than "... on Steam"
10:01:38  <DorpsGek> [OpenTTD/OpenTTD] nielsmh updated pull request #7786: Add: Help and manuals window
10:05:26  <TrueBrain> LordAro: from what I understand of all of this, the following: we can make a plugin-system that uses dlopen() with a predefined API which loads plugins (lets call it a "rich presence" API)
10:05:47  <TrueBrain> if this system is not designed for only Steamworks SDK for example
10:05:49  <TrueBrain> that is perfectly fine
10:05:57  <TrueBrain> especially if we provide a GPL library to work with it
10:06:01  <TrueBrain> even with limited functionality
10:06:06  <TrueBrain> (say, an IRC bridge, or what-ever)
10:06:19  <TrueBrain> that plugin system is even allowed to load non-GPL plugins
10:06:22  <TrueBrain> the problem is distribution
10:06:35  <TrueBrain> you are basically not allowed to bundle OpenTTD with a non-GPL plugin
10:06:50  <TrueBrain> if the user would combine those, how-ever, that would be fine
10:06:56  <TrueBrain> he only cannot distribute it
10:07:03  <TrueBrain> (Basically, in some sense, what we do with NewGRFs :P)
10:07:45  <TrueBrain> the suggestion made is to license such "rich presence" API with additional conditions
10:07:50  <TrueBrain> which would allow the scenario
10:08:10  <TrueBrain> FSF doesn't really like that, but there is a huge gap between what FSF wants GPL to be, and what lawyers think GPL really is
10:08:13  <TrueBrain> just ... 0 court-cases
10:08:30  <TrueBrain> so it boils down to: do you want to use GPL how FSF intends, or what the letters on the page say
10:09:38  <nielsm> I doubt anybody will complain if the windows installer and steam distribution contains a binary of a library that's open source under a different license and is linked with a non-free library
10:09:52  <nielsm> the windows installer can offer to not install that integration library
10:10:15  <TrueBrain> I agree nielsm , but there is a minor but. Any developer with a sufficient large enough contribution to OpenTTD could fight that
10:10:30  <TrueBrain> say, some old dev really really doesn't want us to combine OpenTTD with the Steamworks SDK
10:10:34  <TrueBrain> they could make a claim
10:10:53  <nielsm> yes it's "against the intent" but then you could pull out the argument of the (non-cleanrooom) reverse-engineering origins of OTTD itself
10:11:11  <TrueBrain> given only a developer can make that claim, and it would destroy OpenTTD overnight
10:11:24  <TrueBrain> you could wonder if that is a line worth walking or not :)
10:11:42  <TrueBrain> (developer == contributor with a significant amount of code changes. So not a single-line PR contributor)
10:12:12  <TrueBrain> but how ever you slice it, it is against the spirit of GPL
10:12:35  <spnda> Well what if you reverse engineer the Steam API and build against that? lol
10:12:44  <andythenorth> would it destroy OpenTTD overnight?  Law tends to seek remedies, not destruction
10:12:45  <TrueBrain> if you want to be banned from Steam, sure!
10:12:55  <TrueBrain> andythenorth: depends on the country :)
10:13:05  <andythenorth> well I can't armchair lawyer the globe :D
10:13:22  <TrueBrain> if I look at court-cases in the US, I would say they are just out for blood :P
10:13:24  <nielsm> andythenorth I guess the idea is this developer with a very sore behind demands that all their contributions to the code are removed in the entirety
10:14:01  <TrueBrain> his work and all derivatives of his work
10:14:01  <andythenorth> does GPL allow revocation of copyright?
10:14:09  <andythenorth> that would be an interesting test case
10:14:31  <TrueBrain> but yeah, if we go this road, basically OpenTTD wouldn't be "pure" anymore
10:14:39  <TrueBrain> some I am 100% sure some purist will complain about that :D
10:14:47  <nielsm> no the GPL is intended so when you've released your code under that license once, you can't recoke the right to use that code under that license
10:14:47  <TrueBrain> some = so
10:14:51  <nielsm> revoke*
10:15:10  <andythenorth> I don't have a specific point, just finding the edges of the question
10:15:42  <TrueBrain> either way, most funny about all this is, that the code itself is not so much the issue
10:15:47  <andythenorth> purity is one thing, "what's the worst plausible outcome" is another
10:15:47  <TrueBrain> the distribution of the combined package is
10:16:15  <TrueBrain> for Steam, we can .. circumvent it, as we can distribute 2 separate packages
10:16:17  <andythenorth> presumably it does cross the boundary into a 'program'?
10:16:20  <TrueBrain> 1 OpenTTD, 1 SDK
10:16:26  <TrueBrain> and the user would be non the wiser :P
10:16:28  <Zuu> So it is not possible for an app to communicate with steam installed on the computer but must itself include files from steam in the installation folder?
10:16:31  <TrueBrain> for something like Discord however, that is more difficult
10:16:54  <nielsm> but how will you make players downloading from steam get the steam integration? they will need to go somewhere else to complete it manually?
10:16:55  <TrueBrain> Zuu: I honestly do not know if the SDK is preinstalled
10:17:10  <TrueBrain> nielsm: no, how the Steam distribution works, they have depots
10:17:13  <spnda> Most Steam games come with "steamapi64.dll" in their directory, so I doubt it
10:17:27  <TrueBrain> for example, currently, if you have Windows, you get the win64 depot + OpenGFX depot + OpenMSX depot + OpenSFX depot
10:17:39  <TrueBrain> they are all "distributed" seperately
10:17:44  <TrueBrain> it is really splitting hairs, to be clear
10:17:45  <andythenorth> we can download something via bananas? :P
10:17:46  <andythenorth> oof
10:18:15  <nielsm> so you want to make the argument that it's not us combining the GPL and non-free code, it's the user doing it by asking steam to download the game (according to a configuration we provided)
10:18:22  <TrueBrain> but I guess strictly seen, we would never distribute a combined work for OpenTTD + SteamSDK in that case :D
10:18:36  <TrueBrain> yes .. walking the line ;)
10:19:15  <nielsm> and the windows installer could also offer to download and chain-install the integrations I guess?
10:19:32  <peter1138> Just make the Steamworks API part of the OS...
10:19:33  <TrueBrain> well, Discord integration is a different issue
10:19:49  <TrueBrain> peter1138: that is another claim people have tried, argue that Steam is an OS from the perspective of starting a game
10:20:00  <TrueBrain> not many people agree with that line of thought :)
10:20:32  <andythenorth> does Steamworks API make the software less free?
10:20:36  <TrueBrain> either way, there are 2 worlds here: what is legally allowed, and what is socially acceptable
10:20:50  <TrueBrain> if we make a rich presence API that is fully optional
10:21:00  <TrueBrain> I would argue that we are still full Open Source, and completely free
10:21:09  <TrueBrain> optionally, you can bind to non-Open Source products
10:21:15  <TrueBrain> but that is my personal opinion on the matter
10:21:23  <michi_cc> I can't seem to find the essay I was thinking of at the moment, but some people are arguing that mixing GPL and non-GPL through plugin-loading is okay as long as there is no tight coupling, i.e. everybody can make different plugins that do the same job and freely use whatever they want.
10:21:46  <TrueBrain> michi_cc: that is basically what I say, yes
10:21:52  <TrueBrain> you just cannot DISTRIBUTE the combined parts :)
10:21:59  <TrueBrain> as that would make it tightly coupled
10:22:10  <TrueBrain> FSF disagrees btw
10:22:13  <TrueBrain> but they are on the purist side of this
10:22:20  <michi_cc> FSF disagrees with everything :)
10:22:26  <TrueBrain> yup ..
10:22:35  <andythenorth> FSF can bring case law
10:22:40  <andythenorth> oh wait...
10:22:43  <TrueBrain> no
10:23:07  <TrueBrain> anyway, I can also imagine us linking this via BaNaNaS
10:23:14  <michi_cc> E.g Audacity is GPL 2 and happily allows loading any VST plugin (but doesn't ship with proprietary ones of course).
10:23:15  <TrueBrain> where you can download "Rich Presence" plugins
10:23:22  <TrueBrain> michi_cc: exactly
10:23:31  <TrueBrain> the common advise is to license your API to make this explicit
10:23:59  <TrueBrain> if we do it via BaNaNaS, we can add a popup: you are about to download non-free software
10:24:02  <TrueBrain> are you sure?
10:24:21  <nielsm> TrueBrain I think it's a risky move to put actual real native binary code on bananas, both because you suddenly get platform-specific files there, and also because it's a much higher security risk to users if someone manages to sneak bad code up there
10:24:44  <TrueBrain> as much risk as someone sneaks bad code in our binaries, I would guess?
10:25:10  <TrueBrain> do we consider the risk of files on the S3 bucket of BaNaNaS higher than the files on the S3 bucket of the CDN?
10:25:35  <michi_cc> Directly linking to steamworks from OTTD is probably a no-go, no matter how. But practically speaking, using intermediary plugins and applying it might be entirely possible to legally get away with it.
10:25:40  <nielsm> bananas has an API that allows any user to upload files, the CDN doesn't
10:26:04  <TrueBrain> nielsm: not really. CDN files are uploaded via GitHub Actions
10:27:24  <nielsm> michi_cc: the argument FSF will make is that if you distribute two (entirely separable) binaries in a single download, and they can integrate with each other when combined, and one of GPL and the other is non-free, then the entire download package is a GPL violation because you're distributing a non-free package
10:28:01  * andythenorth reading
10:28:21  <andythenorth> I think it's moot because we don't have a contrib. agreement that assigns copyright to the project
10:28:27  <TrueBrain> andythenorth: applies partially, that section, as we are not a library :D
10:28:49  <TrueBrain> but that is the gist of what you could do to license the API seperately
10:28:55  *** gnu_jj has joined #openttd
10:29:20  <TrueBrain> but as we do not license our NewGRF API separately, that is just splitting more hairs
10:29:40  <TrueBrain> it comes down to risk .. do we see any developer that would oppose us having such rich presence API, knowing it is meant for integration with Steam, Discord, etc
10:29:42  <michi_cc> nielsm: Of course, but just because the FSF argues that doesn't mean it is supported by law.
10:30:06  <andythenorth> see also
10:30:17  <TrueBrain> andythenorth: michi_cc linked that a moment ago, yes :P
10:30:34  <andythenorth> oh yes :)
10:30:36  <andythenorth> duplication
10:30:43  <DorpsGek> [OpenTTD/OpenTTD] nielsmh updated pull request #7786: Add: Help and manuals window
10:30:45  <michi_cc> You could probably take out 90% of the drama potential by somehow getting hold of ludde, Tron, Celestar and Rubidium to confirm.
10:31:03  <TrueBrain> contacting Rb is not an issue
10:31:07  <TrueBrain> the other 3 .. 0 clue :P
10:31:29  <michi_cc> Celestar droppen in here a couple years ago.
10:31:49  <peter1138> DV?
10:31:56  <michi_cc> ludde... hmm, write to uTorrent? :)
10:32:04  <TrueBrain> contacting DV is also not an issue
10:32:07  <peter1138> k
10:32:12  <TrueBrain> mainly, the Dutch people are not an issue :P
10:32:19  <andythenorth>
10:32:24  <TrueBrain> the German people neither
10:32:48  <michi_cc> Well, Celestar is German... :)
10:32:57  <TrueBrain> doh ..
10:33:00  <TrueBrain> okay, I take that back :D
10:33:30  <TrueBrain> but yeah, tldr; this is tricky :)
10:33:47  <michi_cc> Militantly disagreeing for the sake of disagreeing seems like a Tron thing to do.
10:33:57  <TrueBrain> you said it
10:34:02  <TrueBrain> but it is why I brought it up :D
10:34:53  <TrueBrain> if such rich presence API is only an addition to the game, never a replacement (read: no Steam Workshop)
10:34:57  <TrueBrain> it is hard to argue honestly
10:35:00  <peter1138> Turns out that merging things causes the most drama, eh...
10:36:04  <TrueBrain> as NewGRFs, AIs, etc
10:36:07  <TrueBrain> are all very very similar
10:36:44  <TrueBrain> on the other side of the spectrum: if you think mb's NewGRFs are fine, in the same line of thought, so should SteamSDK :P
10:36:47  <LordAro> i don't think the workshop was ever desirable anyway
10:36:48  <michi_cc> IMHO Tron would be the most likely candidate to object, just because. ludde, well, he can't really complain too loudly about legal loopholes :)
10:36:54  <TrueBrain> LordAro: I agree
10:37:51  *** gnu_jj has quit IRC
10:38:10  <TrueBrain> what some projects do, which has a legal base, is to make, say, a GitHub issue, asking all past contributors if they agree
10:38:19  <TrueBrain> not all will reply, but the idea is that you need to do due dillegence
10:38:23  <TrueBrain> try to reach as many as possible
10:38:55  <LordAro> realistically that's impossible though
10:39:05  <TrueBrain> no, that is very realistic, that is exactly my point :)
10:39:12  <TrueBrain> that is why I wrote: not all will reply
10:39:16  <TrueBrain> and that is perfectly fine
10:39:19  <TrueBrain> you are not aiming for 100%
10:39:49  <TrueBrain> many projects changed their license with far less coverage :P
10:40:04  <TrueBrain> you just have to show that you did your best to reach everyone
10:40:22  <TrueBrain> (at least, that is the claim under EU law .. god knows what US thinks about this)
10:41:38  <TrueBrain> from my perspective, we have 2 things to resolve. 1) do we want to integrate with non-free software yes/no (which is a policy / social aspect), 2) figure out how we do distribution
10:43:21  *** FLHerne has joined #openttd
10:44:16  <LordAro> wait, go back a bit, what are you suggesting that we ask all contributors about?
10:44:55  <TrueBrain> the worry is, that some past contributors might object to us integrating with non-free
10:45:01  <TrueBrain> pure for the reason of .. disagreeing
10:45:16  <nielsm> whether they will accept openttd binaries being distributed together with a non-free binary that does steam and/or discord integration
10:45:34  <TrueBrain> you can preemptively tackle that by simply asking all past contributors if they mind; additionally, making an additional condition to the license for the rich presence API to allow this explicitly
10:45:45  <peter1138> I could just object now and save you the hassle of contacting long gone people...
10:45:46  <nielsm> ("non-free" in the FSF meaning)
10:45:52  <TrueBrain> peter1138: you can :)
10:46:00  <LordAro> practically speaking, dlopen-ing steamworks is no different from loading a non-GPL GRF
10:46:03  <TrueBrain> yeah, non-free in the FSF meaning :D Good point :)
10:46:27  <LordAro> less so if anything, because the GRF would be "required" (for that particular game), whereas the SDK would always be optional
10:46:55  <TrueBrain> the reason I mentioned that if you think mb's GRFs are fine, arguing Steamworks SDK is weird :P
10:46:59  <peter1138> Anyway, who cares about the FSF these days with their continued support of toxic... characters.
10:47:17  <TrueBrain> this is all about risk :)
10:47:21  <TrueBrain> we can "just do it"
10:47:32  <peter1138> Are MB's GRFs distributed with OpenTTD?
10:47:41  <TrueBrain> peter1138: they are non-free
10:47:56  <LordAro> not even via BaNaNaS, iirc?
10:47:59  <TrueBrain> again, there is a difference between allowing Steamwork integration, and the distribution of it
10:48:01  <TrueBrain> LordAro: indeed
10:48:15  <TrueBrain> we first need to agree if we allow such integration
10:48:17  <LordAro> relatedly, cute
10:48:20  <TrueBrain> after that we can see how to distribute it :D
10:48:34  <LordAro> what would we be distributing?
10:48:46  <TrueBrain> how the user would get the DLLs, basically
10:48:58  <TrueBrain> installer, shipped-with, additional download, etc
10:49:02  <DorpsGek> [OpenTTD/team] RichardYan314 opened issue #182: [zh_CN] Translator access request
10:49:07  <LordAro> what DLLs are we talking about her?
10:49:11  <LordAro> here*
10:49:14  <TrueBrain> Discord API, SteamWorks SDK, ..
10:49:19  <TrueBrain> the non-free parts
10:49:28  <TrueBrain> (and a shim around them to talk to OpenTTD, but details)
10:49:30  <LordAro> i wasn't aware that we'd need to actually distribute those?
10:49:41  <LordAro> i thought they were part of discord/steam
10:49:52  <TrueBrain> even if we don't need to ship those, I really havent looked into it, we do need to ship the non-free shims
10:50:06  <TrueBrain> OpenTTD cannot directly call the SteamSDK DLLs
10:50:12  <TrueBrain> that is a clear violation of GPL
10:50:20  <TrueBrain> (it cannot be tightly coupled)
10:50:36  <FLHerne> TrueBrain: I don't see that asking everyone is a good idea
10:50:37  <LordAro> and we've decided that dlopen counts as tightly coupled?
10:50:47  <TrueBrain> that is well decided, yes :)
10:50:50  <LordAro> (despite existing GRF stuff, yes)
10:51:00  <FLHerne> If everyone says "yes", or nothing, it's pointless
10:51:02  <TrueBrain> GRFs also use a generic interface LordAro
10:51:04  <TrueBrain> there is the difference
10:51:11  <LordAro> right
10:51:14  <TrueBrain> I wrote that a bit earlier, but: if your interface allows GPL stuff
10:51:16  <TrueBrain> that is fine
10:51:20  <TrueBrain> if it ONLY allows non-free stuff
10:51:21  <TrueBrain> it is not
10:51:22  <FLHerne> And if one person says "no"... you're going to not do something useful and permitted?
10:51:42  <FLHerne> Or explicitly ignore their opinion
10:51:43  <TrueBrain> FLHerne: it is about being transparent and open
10:51:56  <LordAro> TrueBrain: dlopen could perfectly easily allow GPL stuff, just a library that happens to provide the exact functions we require from steam
10:51:56  <TrueBrain> if someone say "no", you can evaluate the contributions he made
10:51:59  <TrueBrain> and remove them, for example
10:52:23  <TrueBrain> LordAro: that is something some projects did, yes, but .. that is really hard to do if there is Steam in the API names :P
10:52:34  <TrueBrain> better to make a rich presence API which doesn't have that, and make a non-free shim
10:52:49  <TrueBrain> at least, that is my translation of what I read :D
10:53:05  <LordAro> i'm not sure the function names are a particularly relevant part of the API
10:53:18  <TrueBrain> it is hard to argue that you did it to bypass licensing :D
10:53:36  <FLHerne> TrueBrain: If peter1138 does object, removing them might be hard :p
10:53:40  <TrueBrain> having an API has its benefits, as it allows others to make other integrations too :)
10:53:49  <FLHerne> (assuming we still want a game)
10:56:41  <peter1138> No such luck, I have no such objection.
10:57:19  <LordAro> there's also the can of worms where if someone objects, but their contribution has been built on since
10:57:34  <LordAro> i think if we have to ask the question, we have to assume the answer is no
10:57:41  <peter1138> Laundry Detergent... bottles keep getting small but they keep saying they last longer...
10:59:07  <TrueBrain> FLHerne: if he would really object, that is something we have to deal with anyway
10:59:32  <TrueBrain> not asking people's opinion because you are afraid of the answer is not a valid strategy in my book :)
10:59:57  <TrueBrain> LordAro: I am not sure about that. But not asking the question feels even worse
11:00:06  <TrueBrain> that feels like: we know this is not okay, so we are just ignoring your no
11:00:11  <TrueBrain> but that is my opinion :)
11:00:17  <TrueBrain> transparency goes a long way with many people
11:00:33  <TrueBrain> and better to know before we do it that people object
11:00:35  <TrueBrain> than after
11:00:39  <TrueBrain> which can be a whole lot worse
11:00:44  <LordAro> i don't mean just proceeding regardless of possibly getting a 'no' response, i mean just not proceeding at all
11:01:03  <LordAro> if the question has to be asked, it can be used as evidence of "bypassing the licence"
11:01:23  <TrueBrain> the question is more in the lines of: do you mind if we add this condition to our license, or what-ever
11:01:36  <TrueBrain> so how would that bypass the license? It is being open and transparent we want to integrate with non-free
11:01:59  <LordAro> because of the impossibility of reaching all contributors (which also includes all translators, past and present, btw)
11:02:10  <TrueBrain> again, we do not need to reach all
11:02:12  <TrueBrain> that was never the goal
11:02:20  <TrueBrain> dunno how I can say that differently :P
11:02:32  <FLHerne> Adding a condition to the license would be a mistake, it's an ongoing problem (e.g. license compatibility with libraries) for no legal benefit
11:02:39  <FLHerne> If I understand what you're saying
11:02:43  <LordAro> why is it not? what prevents someone from coming along 6 months later and objecting?
11:02:56  <FLHerne> My thinking is:
11:03:04  <TrueBrain> LordAro: from what I understand, legally, the defense is: you had the chance
11:03:09  <TrueBrain> in very short terms :P
11:03:11  <FLHerne> --if some major, active contributor objects, we can know that now/soon
11:03:18  <TrueBrain> many projects, even big ones, changed their complete license based on it
11:03:40  <TrueBrain> wasn't it CPython that did something similar?
11:03:49  <spnda> wait you want to switch licenses to be able to use Steamworks and Discord Game SDK?
11:03:54  <FLHerne> --if someone else objects, we should accept that they disagree and do it anyway, perhaps with some mitigation
11:04:25  <FLHerne> --in that case, we might as well do it anyway immediately, and then do the mitigation if/when someone objects
11:04:28  <TrueBrain> anway, as we are drowning in a detail, to get back to the original problem: if we are afraid that a past developer object to us integrating with non-free, that is one of the options we have, that has been done by other projects
11:04:32  <TrueBrain> but it is about risk
11:04:55  <TrueBrain> FLHerne: legally, that is a very bad approach :)
11:05:04  <FLHerne> If you mean linking directly to Steam in a way that violates the GPL, I'd agree
11:05:17  <FLHerne> But I thought it was already determined that's not necessary
11:05:45  <TrueBrain> okay, I get the feeling we are not all talking about the same things here
11:05:51  <TrueBrain> I will write a gist with what I found, links etc
11:05:55  <FLHerne> grfs etc. have already set the precedent that we don't consider things using extension interfaces to be a derived work
11:05:56  <TrueBrain> so we can level that :P
11:06:35  <TrueBrain> as we now have: one person mentions something, the next gives a mitigation, yet another goes down on that solution with the wrong start .. so that is not helping :D
11:06:51  <TrueBrain> but first, lunch
11:07:33  <LordAro> My opinion: If cannot make use of RP-APIs in a GPL-"safe" manner without modifying the licence (adding an exception or otherwise), then we just have to accept that it can't happen
11:07:50  <LordAro> If we*
11:08:03  *** gnu_jj has joined #openttd
11:08:28  <peter1138> Did I read that cloud-saves are possible without any code changes?
11:08:37  <peter1138> It's just the RP/Networking stuff that needs the API.
11:08:44  <peter1138> "just"
11:09:02  <LordAro> if cloud saves are just a matter of defining a particular folder as "this goes in the cloud", then yeah, probably
11:09:33  <LordAro>
11:09:47  <LordAro> seems so
11:12:33  * andythenorth BBLs
11:12:37  *** andythenorth has quit IRC
11:14:25  <TrueBrain> Issue with cloud saves is mostly a folder thing. What to save, how about patchpacks, etc
11:14:45  <TrueBrain> Can we sync NewGRGs, etc :p
11:15:26  <TrueBrain> Just a matter of someone sitting down and really looking at it
11:15:39  <FLHerne> Thinking with different assumptions about what the question is:
11:16:34  <FLHerne> --the 'presence extension API' can be done without violating the GPL, so asking people would be out of courtesy rather than for legal reasons
11:16:52  <FLHerne> (I agree with LordAro; if that's not true it kills the entire idea)
11:17:48  <FLHerne> --the set of people whose objection can/should prevent doing it out of deference to their views is basically the set of people here
11:18:08  <FLHerne> plus maybe a handful of inactive core developers, who probably can't be reached anyway
11:18:09  <peter1138> TrueBrain, just savegames in my opinion. NewGRFs can be content-downloaded, etc.
11:18:16  <LordAro> ^
11:18:19  <FLHerne> (a subset of)
11:18:25  <LordAro> and patchpacks not (directly) our concern
11:18:47  <FLHerne> --asking everyone else and then saying "never mind, we're doing it anyway" seems to me less courteous than simply doing it
11:19:44  <peter1138> If it doesn't violate GPL then there's no need to ask.
11:20:01  <peter1138> If it needs an exception and others don't agree, then you can't do it.
11:20:19  <LordAro> equally, asking, getting a negative response, removing their stuff and then doing it anyway is also very uncourteous
11:20:45  <peter1138> That is almost impossible.
11:21:36  <peter1138> Especially when their contributions were often massive code cleanups throughout everything.
11:22:53  <LordAro> certain contributions might be (trivially) reversible, but they're a fairly small set of things
11:23:10  <TrueBrain> peter1138: how about scenarios, heightmaps, .. :) But really, it is just a matter of someone writing out what we do and do not cloud sync :)
11:23:15  <TrueBrain> configuration after that is trivial
11:23:20  <TrueBrain> (and free)
11:23:47  <LordAro> syncing non-content_download scenarios folder ?
11:24:07  <LordAro> and of course, do we cloudsave all saves, or just a subfolder?
11:24:22  <peter1138> Is there a size limit?
11:24:33  <TrueBrain> peter1138: there is, but none that is relevant to us :)
11:25:07  <LordAro> would possibly require some changes to the saveload dialog, as it has "issues" displaying multiple folders at once in some scenarios
11:25:36  <FLHerne> Cloudsaving autosaves might not be desired
11:25:40  <TrueBrain> some people also want their configuration sync'd, to name one
11:25:54  <TrueBrain> so someone (not me) should make a list of what we store, what we want to sync, get consensus, and lets gooooo
11:26:27  <LordAro> yup
11:28:16  <LordAro> just for fun, a list of number of lines of code "owned" by a particular person:
11:28:22  <LordAro> RB still a *long* way in the lead
11:28:53  <TrueBrain> it mixes real names with nick names
11:28:56  <LordAro> (not dedup'd, of course)
11:29:29  <TrueBrain> might help in the stats :P
11:29:30  <TrueBrain> most people we can reach, funny enough :)
11:29:32  <TrueBrain> nice list :D
11:32:20  <LordAro> regardless, i think peter1138, FLHerne & I are approximately in agreement
11:32:27  <LordAro> though we may well be agreeing to the wrong question
11:32:39  <TrueBrain> I am writing things down
11:32:42  <LordAro> :)
11:32:49  <TrueBrain> I made the old mistake of trying it on IRC :)
11:32:53  <TrueBrain> not sure if everyone read the same thing
11:33:02  <TrueBrain> neither if we kept talking about the same subjects ;)
11:33:10  <LordAro> quite
11:33:17  <TrueBrain> we took one side-road, and we got lost in it, it seems
11:33:34  <TrueBrain> it is not binary :) But okay, typing ... :)
11:41:49  <peter1138> And still they ask for full Steam integration, heh.
11:42:23  <nielsm> okay the help/manuals text file viewer with markdown doesn't quite work in emscripten
11:42:31  <nielsm> the links are not clickable properly, and sometimes it crashes
11:43:47  <LordAro> i still think a perfectly valid response is "Due to licencing restrictions from decisions made ~18 years ago, we cannot do Steam integration"
11:43:51  <LordAro> nielsm: "sometimes"
11:44:18  <nielsm> well, when I click on the right spot, which I'm not entirely sure which is
11:44:32  <nielsm> because I have this stupid thing (in firefox) where the mouse cursor is constantly drifting downwards
11:46:28  <nielsm> it's related to clicking the links, but hitting the links doesn't work quite right it seems, and I have no idea what "Uncaught 578754584" in the browser console means
11:48:55  <LordAro> well i can reproduce it
11:49:08  <LordAro> but yeah, it's not from OTTD itself, looks like it's coming from emscripten
11:57:10  <nielsm> I have no idea how to debug that
11:57:24  <LordAro> me neither :p
11:59:24  <nielsm> hmm okay it has to do with using sprite fonts actually, because I can reproduce it on win32
12:02:45  <nielsm> it appears to be generating text layouts differently, somehow
12:05:41  <milek7> if MS would make Xbox Live social features available via winapi, would that count as part of the OS? :P
12:10:23  <TrueBrain> LordAro: <- bit of a wall of text, but I tried to put everything in a single place
12:10:26  <TrueBrain> I hope I didn't forget anything
12:11:36  <nielsm> okay looks like I am in fact the first to use Layouter::GetCharAtPosition() at all, no idea why it was even written when never used :)
12:11:52  <nielsm> but it doesn't work for sprite fonts, the layouts count things different there
12:14:24  <TrueBrain> I used "splitting hairs" a lot
12:14:25  <TrueBrain> as it really is
12:14:50  <TrueBrain> being a purist and the real world simply doesn't combine .. which we have found out many times in our history before :P
12:15:06  <TrueBrain> (BaNaNaS distribution license discussion, non-free NewGRFs, ... :P)
12:15:41  <TrueBrain> let me know if I forgot any input of anyone; I read IRC over, and I think I got them all
12:16:17  <nielsm> regarding licensing there is also the silly question of, "are you allowed to make videos/streams/dother documented gameplay of OTTD, and make a profit off that?"
12:16:31  <nielsm> of course GPL says "any use without limitations" so that's fine
12:16:31  <TrueBrain> ugh, yes. Lets not have that one today :P
12:16:38  <nielsm> but some NewGRFs might not agree with that
12:16:59  <TrueBrain> but, strictly by our licenses, any NewGRF is GPL too anyway :P :P :P
12:19:17  <nielsm> I've thought that it might be reasonable to put a page on the wiki or something to explain the position that "in our opinion, it is permitted to display gameplay of unmodified OpenTTD using OpenGFX (and optionally OpenSFX and OpenMSX) basesets on monetized platforms and for-profit without limitation. however, if other basesets, or any NewGRF addons are used, you need to individually verify
12:19:17  <nielsm> the license of those addons for permission."
12:19:43  <nielsm> or maybe "it is our intent that ... is allowed"
12:19:54  <TrueBrain> I hate that the world became this big huge legal driven shitshow
12:20:14  <nielsm> then it's not "a legal opinion" but a declaration of author's intent
12:20:16  <nielsm> yeah
12:20:25  <TrueBrain> nielsm: you can put that or
12:20:26  <TrueBrain> if you like
12:20:44  <TrueBrain> I reached out to some library authors to ask for their intent of the license
12:20:48  <TrueBrain> I had a library that was GPL
12:20:53  <TrueBrain> so impossibly to use as library, basically
12:20:56  <TrueBrain> I asked for his intent
12:21:04  <TrueBrain> his reply: euh, I just don't want people to modify it without giving back
12:21:12  <TrueBrain> "okay, so I am going to violate your license now", was my response :D
12:21:23  <TrueBrain> intent is so much more important than the letter of the law, in my book
12:21:40  <TrueBrain> (I now use his library as if it was LGPL licensed)
12:23:46  <TrueBrain> nielsm: not sure if BaNaNaS is the right medium, but I was thinking a bit more what you said. Maybe good some background info: via the API you cannot upload the same binary twice. That is: the API has no permission to overwrite files in the S3
12:24:01  <TrueBrain> so a good safeguard would be that via a Pull Request the rich presence plugin has to be announced
12:24:11  <TrueBrain> and after uploading a version, it cannot be overwritten
12:24:21  <peter1138> This game is a ♥♥♥♥♥♥♥ mess, its just... stupid.
12:24:28  <TrueBrain> (well, or they need to access our AWS account as root, but all hope is lost at that point anyway)
12:24:38  <TrueBrain> does that take your worry away a bit?
12:24:40  <peter1138> Constructive criticism :D
12:25:43  <nielsm> what I was thinking was, what if someone found an exploit in the bananas-api that allowed them to upload a new version of "ottd-steamworks-integration-win64" with a standard user, and nobody noticed for weeks
12:25:59  <TrueBrain> hence the: via a Pull Request
12:26:07  <TrueBrain> that would make that nearly impossible to happen without anyone noticing :)
12:26:14  <TrueBrain>
12:26:17  <TrueBrain> in case you didn't know
12:27:26  <TrueBrain> so the S3 backend is write-once, and the metadata is done via a Pull Request. Means the API has no say in it :P
12:28:25  <TrueBrain> wow ... someone complains OpenTTD doesn't run on WinXP anymore .. I am seriously worried for that user .. he considers WinXP "good enough for him" .. where to even start ..
12:29:29  <peter1138> Oh him.
12:30:14  <TrueBrain> there is no good reply there :P
12:30:18  * TrueBrain closes his window
12:30:30  <TrueBrain> at least we found that one Windows XP user
12:30:39  <nielsm> does openttd 1.11 run on ubuntu from 2005?
12:30:57  <TrueBrain> no clue what it includes
12:31:02  <TrueBrain> but glibc2.17+ is needed
12:31:11  <nielsm> certainly not a C++14 compiler
12:31:23  <TrueBrain> you don't need to compile it on that machine to run it :)
12:31:39  <TrueBrain> the generic linux variant we publish works on surprisingly many machines :D
12:33:15  <peter1138> XP is from 2001.
12:34:08  <peter1138> What was I doing in 2001...
12:34:23  <TrueBrain> figuring out life
12:34:25  <nielsm> windows XP is reaching that age where it's getting safe to connect it to the internet again because nobody wants to bother attacking such a small target
12:34:27  <TrueBrain> still doing that btw :P
12:34:48  <peter1138> I may have had my Athlon 800 by then, but if not, Pentium 233MMX.
12:34:54  <milek7> xp sp3 was in 2008
12:35:50  <peter1138> TrueBrain, I've given up on that. It's just... flowing inexorably forward.
12:36:03  <peter1138> There's massive segments I don't remember.
12:36:20  <peter1138> 2005-2010. I'm guessing it was mostly here, actually.
12:38:27  <peter1138> Stop it.
12:39:09  <TrueBrain> ugh, I tried replying on that forum post again, I really shouldn't :P
12:42:33  <LordAro> XP isn't the issue, really, it's more compilers that target that platform
12:42:43  <LordAro> there's not really a lot we can do about that
12:42:43  <nielsm> I put a good argument in the thread
12:43:15  <peter1138> Compelling.
12:43:21  <TrueBrain> it mostly just scares me someone runs Windows XP and can access tt-forums
12:43:26  <TrueBrain> that .. is just .. all kinds of wrong
12:43:34  <LordAro> that is a bit suspicious
12:43:41  <LordAro> XP doesn't have SNI, right?
12:43:45  <TrueBrain> fair point
12:43:54  <TrueBrain> maybe Chrome supports it?
12:43:55  <TrueBrain> :P
12:43:56  <LordAro> though i suppose it'll probably be a dedicated connection
12:44:06  <LordAro> i feel like there were issues at the OS level
12:44:17  <TrueBrain> it is just .. no
12:44:19  <TrueBrain> or: fuck no
12:44:22  <TrueBrain> either way works
12:44:24  <LordAro> but maybe orudge still needs to disable SSLv3 :p
12:44:53  <TrueBrain> anyway, to get back to rich presence, now I can put things in context. point 1, as possibility has asking all contributors, was my remark
12:44:58  <TrueBrain> I am fully okay us not doing 1), to be clear :)
12:45:06  <TrueBrain> I think doing 2 is more than fine
12:45:19  <TrueBrain> and 3 with only the active contributors
12:45:23  <TrueBrain> but, it is a risk
12:45:31  <TrueBrain> one specific person being a risk was already mentioned :P
12:46:44  * LordAro will look later
12:46:47  * LordAro aways
12:46:55  <TrueBrain> aawwaaayyyyyyyyy
12:46:56  <TrueBrain> :P
12:52:51  *** FLHerne has quit IRC
12:53:07  *** FLHerne has joined #openttd
13:00:29  <TrueBrain> nielsm: why did you add so many files in emscripten? Are those all viewable from in-game now?
13:01:18  <nielsm> yes, via hyperlinks
13:01:41  <TrueBrain> ah!
13:01:44  <TrueBrain> did not expect that :D
13:02:16  <TrueBrain> is it the intention that wrap-text is char-based, not word-based?
13:02:40  <TrueBrain> owh, it is word-based, except for links :D
13:02:44  <nielsm> depends on the layout system I think
13:03:07  <TrueBrain>
13:03:13  <TrueBrain> "in\ncludes" :D
13:03:17  <nielsm> right now it seems things break badly if you use sprite fonts, so make sure you use truetype fonts
13:03:32  <TrueBrain> works fine for other text
13:03:59  <TrueBrain> really cool :D
13:04:29  <spnda> Already at 2.5k players on steam and the peak is in ~4 hours
13:04:32  <spnda> nice
13:09:24  <FLHerne> TrueBrain: Not sure if it's possible given the Steam API, but one solution would be to create a non-free "Steam network tunnel/presence" utility that provides a very generic interface so that it can't possibly be considered a derived work of OTTD
13:09:47  <nielsm> FLHerne yes
13:09:56  <FLHerne> i.e. that could be used by any game wanting to share online status and create a network tunnel
13:09:58  <nielsm> FLHerne: the problem with that approach is distribution
13:10:19  <nielsm> which has already been discussed at length
13:10:22  <TrueBrain> FLHerne: that is the API suggestion in my gist, not? :)
13:11:05  <TrueBrain> well, I guess I did not specific if that is an ABI or an API, in that sence
13:11:06  <FLHerne> No
13:11:08  *** frosch123 has joined #openttd
13:11:23  <FLHerne> "f you distribute both OpenTTD and, say, the Steamworks DLL, you are still in violation of the license, as the derivitive work is not GPL (see earlier)."
13:11:54  <FLHerne> If the Steamworks utility is *not a derivative*, then "mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License."
13:12:51  <TrueBrain> but that utilty talks to OpenTTD, right?
13:12:58  <FLHerne> The problem with plugins as such is that, given they only do something useful when embedded in the program, they're probably derived works
13:12:59  <TrueBrain> so what is the license of that utility?
13:13:09  <FLHerne> "talks to" doesn't make it a derivative
13:13:16  <FLHerne> "only talks to and is useless otherwise" does
13:13:25  <TrueBrain> exactly
13:13:38  <TrueBrain> so that utility only works for OpenTTD, right?
13:13:49  <FLHerne> My proposal is that the utility shouldn't
13:13:50  <TrueBrain> I am trying to understand you, to be clear, but I miss a connection :D
13:14:43  <FLHerne> It should have an API that allows a user to pass in Steam credentials and exchange the information we care about
13:15:10  <FLHerne> But that could equally well be used by another game that wanted to exchange the same information
13:15:19  <TrueBrain> so basically what I wrote about RSAREF
13:15:21  <TrueBrain> and GMP
13:15:47  <FLHerne> Yes
13:16:51  <TrueBrain> so what you suggest is in the API section; you move the API to another app, but the problem holds, from what I understand: distribution is the issue. If you combine OpenTTD with that (non-free) utility
13:17:00  <TrueBrain> you basically make them tightly coupled
13:17:02  <TrueBrain> in the vision of FSF
13:17:06  <TrueBrain> (on which you can disagree :P)
13:17:14  <TrueBrain> which is what that whole argument is about :)
13:17:23  <TrueBrain> a shim around the SteamSDK
13:17:29  <TrueBrain> and a generic API
13:18:06  <FLHerne> Distribution is only an issue if they're tightly coupled, so they should be as untightly-coupled as possible
13:18:21  <FLHerne> and then distribution is fine
13:18:30  <TrueBrain> in your view; FSF seems to disagree :)
13:18:35  <TrueBrain> but that is what I tried to write in the API chapter
13:19:28  <TrueBrain> which underlines the whole issue: as this hasn't been in court yet, it is mostly opinions depending on your view on this
13:19:31  <TrueBrain> which makes this really difficult
13:19:35  <TrueBrain> so we just need to take a stance here
13:19:44  <FLHerne> I don't agree that FSF don't agree in this case :p
13:19:54  <TrueBrain> but yes, the common solution is: shim around SteamSDK and a common interface from the application
13:20:09  <TrueBrain> you can hide the shim how-ever you like, that doesn't really matter, it seems
13:20:20  <FLHerne> If you create an API in a GPLed application, and someone creates a plugin that only works with that API, that makes it a derived work
13:21:05  <FLHerne> (and there are no other applications that the API can be used with)
13:21:27  <TrueBrain> in your scenario, it should be fine to dlopen to the SteamSDK too, right?
13:21:34  <FLHerne> at least in the FSF's opinion, which I also think is wrong, but eh
13:21:34  <TrueBrain> as the SteamSDK is a common interface used by many things
13:22:21  <TrueBrain> basically, FSF made this incredibly difficult for no good reason other than to not allow any loopholes
13:22:22  <milek7> wtf vcpkg
13:22:25  <milek7> The following VS instances are excluded because the English language pack is unavailable.
13:22:28  <TrueBrain> so if we say it is okay, it is okay, it boils down to
13:22:36  <FLHerne> No, dlopen() is definitely wrong
13:23:33  <FLHerne> Unless you consider Steam SDK to be a system library, which it is on SteamOS but probably not elsewhere
13:23:59  <TrueBrain> but if I consider the Steam SDK a utility shim
13:24:02  <TrueBrain> it is non-free
13:24:07  <FLHerne> "For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on
13:24:09  <FLHerne> which the executable runs, unless that component itself accompanies the executable."
13:24:10  <TrueBrain> so where is it different? (honest question, to be clear)
13:25:16  <FLHerne> If you link it, dynamically or not, I'm pretty sure FSF consider that to make it part of "the executable work"
13:25:37  <TrueBrain> and this is where FSF disagrees with most sane people, I think
13:25:39  <FLHerne> If you talk to it via an API, it isn't, but it might still be a derivative
13:25:54  <TrueBrain> linking is also done via an API
13:25:59  <FLHerne> If you talk to it via an API that isn't specific to your application, it's 100% not a derivative
13:26:09  <TrueBrain> so they just put it all on one big pile, and say: if it is loaded, it is linking, it is GPL :P
13:26:11  <FLHerne> Yes, but it links the executable code into the same process
13:26:26  <FLHerne> It's not just exchanging information
13:26:36  <TrueBrain> ugh, I read many articles where people tried to defend GPL vs non-free with "if it is in the same memory segment"
13:26:41  <TrueBrain> which was also hilarious to read, the pros and cons
13:27:00  <TrueBrain> FSF says: if the communication is REALLY minimum, it is okay ... if you REALLY have to :P
13:27:09  <TrueBrain> they just want to make the whole world GPL
13:27:12  <TrueBrain> which is impossible
13:27:14  <FLHerne> They do
13:27:17  <FLHerne> But that's nonsense
13:27:22  <FLHerne> There's nothing in the license about that
13:27:26  <TrueBrain> and this is the line we have to draw for ourselves
13:27:42  <TrueBrain> where is the line where we say: this is okay, and this is not okay
13:27:44  <FLHerne> It's just their own made-up definition of how they'd like people to behave
13:27:58  <TrueBrain> making Steam SDK mandatory? not okay
13:28:02  <FLHerne> tbh, this argument seems daft to me when we have NewGRFs
13:28:05  <TrueBrain> so, we have that going for us :)
13:28:13  <TrueBrain> FLHerne: that is what I have been saying a few times now, yes
13:28:15  <FLHerne> Every OTTD committer has implicitly agreed that it's acceptable
13:28:20  <TrueBrain> also what I wrote down, in fact
13:28:26  <FLHerne> I saw that
13:28:30  <TrueBrain> and that is why I think the BaNaNaS approach is the most "clean"
13:28:32  <FLHerne> But we're still having the argument :p
13:28:46  <TrueBrain> honestly, I think we left the argument part like 10 minutes ago
13:28:50  <TrueBrain> and we are now just bitching against FSF
13:28:56  <TrueBrain> but I might have misunderstood how this conversation went :)
13:29:00  <FLHerne> I think the BaNaNaS approach is legally meaningless, but if it makes you happy ;-)
13:29:37  <TrueBrain> well, shipping the SteamSDK with every download also feels silly
13:29:38  <FLHerne> If it's not a derived work, distributing it directly with OTTD is "mere aggregation" and we're fine
13:29:47  <FLHerne> If it is, its a license violation anyway
13:29:52  <TrueBrain> as most people who download OpenTTD, would not want the Steam integration :D
13:30:13  <FLHerne> Yeah, you wouldn't want to make everyone download it
13:30:30  <FLHerne> Given it's non-free, some people would refuse to anyway
13:30:31  <TrueBrain> that is mostly why I think BaNaNaS is cleanest
13:30:35  <TrueBrain> keeps our users happy, as they have a choice
13:30:39  <TrueBrain> and legally .. "properly fine"
13:30:44  <FLHerne> I assumed it would be bundled just with the Steam downloads
13:30:50  <TrueBrain> yeah, we also have Discord
13:30:57  <FLHerne> (anyone using Steam is ok with non-free software by definition...)
13:31:00  <TrueBrain> yup
13:31:03  <FLHerne> Oh, that thing
13:31:10  <FLHerne> You're right
13:31:17  <TrueBrain> yeah, sorry, I tried to fix Rich Presence all at once :P
13:31:25  <TrueBrain> I don't fancy having this conversation ever again :D
13:31:56  <TrueBrain> and I am sure people want to make IRC plugins
13:31:59  <TrueBrain> and Slack
13:32:02  <TrueBrain> and ... :P
13:32:04  <TrueBrain> GOG?
13:32:10  <TrueBrain> Epic Launcher?
13:32:11  <TrueBrain> I dunno ..
13:32:47  <FLHerne> So you're putting OTTD on Epic next? :D
13:33:01  <TrueBrain> I shortly did look if that would be possible
13:33:04  <TrueBrain> but got a bit lost, I have to admit
13:33:13  <TrueBrain> I also want to do Stadia
13:33:52  <milek7> pixel-art and video compression doesn't mix too well ;P
13:34:00  <FLHerne> Hey, I had this great idea, the 'company manager' face thingy should include famous video-game characters
13:34:12  <FLHerne> Quick, go and sign cross-licensing deals with EA
13:34:23  <FLHerne> and Blizzard and so on
13:34:30  <TrueBrain> and this was the moment TrueBrain realised he had to run as fast as he could
13:34:37  <TrueBrain> weirdo :P
13:34:42  <TrueBrain> (which is a compliment, to be clear)
13:34:47  <TrueBrain> no clue how it translates in your language :D
13:34:51  <FLHerne> (they can have the rights to use the Toyland house sprites)
13:35:00  <FLHerne> no-one ever sees them anyway
13:35:00  <Eddi|zuHause> we should have made a deal to be Epic-exclusive for 1 year? :p
13:35:11  <TrueBrain> Eddi|zuHause: LOL!
13:37:02  <Wolf01> Aahah
13:37:43  <frosch123> TrueBrain: funnily, NewGRF were designed as plugins to TTDP, so they violated TTDP's GPL. OTTD clearly only mplemented a common standard, NewGRF were not designed to exclusively work with OTTD. For AI/GS your argument completely holds, all non-free AI/GS are a violation of OTTD's GPL :)
13:38:05  <TrueBrain> frosch123: that case could be made if TTDP still existed :P
13:38:11  *** glx has joined #openttd
13:38:11  *** ChanServ sets mode: +v glx
13:38:15  <TrueBrain> which I guess is the slippery slope here :D
13:38:19  <TrueBrain> but, yeah, splitting hairs :D
13:41:01  <TrueBrain> I understand why this is all why it is, it is just such non-sense for a game like ours :)
13:41:36  <frosch123> unfortunately none of your linked sourced talk about "intent"
13:42:06  <frosch123> if a software links GMP, GMP is probably an essential part for the whole thing to work
13:42:39  <frosch123> OTTD otoh is a game, and it's not the essential part to provide socials
13:43:02  <TrueBrain> I think most of us said that by now: we should talk about intent
13:43:11  <TrueBrain> but .. that is not how GPL works :(
13:43:39  <frosch123> but it is how NewGRF/AI/GS work :p
13:44:06  <TrueBrain> I think we all came to that conclusion by now: our intent is that this is fine
13:44:13  <TrueBrain> so implicit every developer already agreed to this
13:44:19  <TrueBrain> so it doesn't require any change of license
13:44:29  <TrueBrain> it is just like NewGRF/AI/GS
13:44:33  <TrueBrain> just for .. paid products
13:44:55  <TrueBrain> euh, non-free products
13:44:58  <TrueBrain> not paid :P
13:45:56  <frosch123> i don't think NewGRF/AI/GS create a problem on their own. if the user combines them, it's fine. the real problem seems to be bananas, which has the intent to add non-free content into ottd :p
13:45:58  <TrueBrain> also:
13:46:05  <Wolf01> What's the difference between non-free and paid?
13:46:22  <TrueBrain> Wolf01: Steam is "free", as in, you don't have to pay money
13:46:31  <TrueBrain> but it is not non-free, in terms of software licensing
13:46:41  <TrueBrain> I shouldn't have used "paid", it is a different dimension :)
13:46:47  <frosch123> TrueBrain: do we now always use that link, when disagreeing with something? :p
13:46:55  <TrueBrain> frosch123: yes :D
13:47:15  <TrueBrain> frosch123: and I guess it is a valid point: one could argue that BaNaNaS is the one breaking GPL
13:47:43  <frosch123> yes, the bananas client inside ottd
13:47:59  <TrueBrain> more reason to do rich presence via BaNaNaS :P
13:48:11  <TrueBrain> (I honestly am not sure that is the best medium, but it feels like it fits the rest)
13:49:02  <DorpsGek> [OpenTTD/website] TrueBrain updated pull request #204: Add: Announcement for April 9 livestream
13:49:23  <DorpsGek> [OpenTTD/OpenTTD] Bmo006 opened issue #8937: Ships saying they are lost
13:49:26  <DorpsGek> [OpenTTD/website] TrueBrain commented on pull request #204: Add: Announcement for April 9 livestream
13:49:27  <Wolf01> BTW, I have a random idea, GRF defined UI and functionality
13:49:39  <TrueBrain> not as random as you might think Wolf01 :)
13:50:41  <frosch123> i wonder whether we can make scripted shims, that describe an ABI, so ottd creates a wrapper at rum-time. and so we do not have to distribute platform specific stuff via bananas
13:51:05  <TrueBrain> hmmm
13:51:09  <TrueBrain> that is smart
13:51:22  <TrueBrain> might work for simple stuff
13:51:29  <TrueBrain> I do not think it works for more complex parts
13:51:34  <TrueBrain> like networking
13:51:58  <frosch123> dll/so name, c signature, ... i just don't know whehter we can fill the fnuction parameters/results at run-time properly
13:52:05  <TrueBrain> it does give me another idea to make the BaNaNaS distribution more controlled
13:52:11  <DorpsGek> [OpenTTD/website] michicc commented on pull request #204: Add: Announcement for April 9 livestream
13:52:11  <TrueBrain> we can make the shims in their own repo
13:52:17  <TrueBrain> have GHA distribute them to our CDN
13:52:26  <TrueBrain> what we upload to BaNaNaS, is a simple file with a location the shim is at
13:52:43  <DorpsGek> [OpenTTD/OpenTTD] Milek7 opened pull request #8938: Codechange: Use COINIT_MULTITHREADED in CoInitializeEx
13:52:44  <TrueBrain> where it picks the right OS variant from
13:53:00  <TrueBrain> but okay, that is way too technical already, sorry :P
13:53:25  <TrueBrain> updated gist to read NewGRFs / AIs / GSes :D
13:54:12  <frosch123> better stay away from non-free scenarios :p
13:54:22  <TrueBrain> yes, not opening that can of works
13:54:25  <TrueBrain> worms
13:54:25  <TrueBrain> lol
13:54:57  <Wolf01> Clockwork can of worms
13:55:23  <TrueBrain> frosch123: such auto-generated code needs to be relatively complex
13:55:30  <TrueBrain> but maybe it is possible
13:55:38  <TrueBrain> just .. we also need to distribute the SteamSDK DLL
13:55:58  <TrueBrain> and the Discord DLL
13:56:10  <frosch123> hmm, i assumed the dll would already be instlaled on users' machines, if they have steam
13:56:19  <frosch123> does every steam game include its own copy?
13:56:24  <TrueBrain> I assumed the same thing too, but the API says you need to distribute it
13:56:30  <TrueBrain> I think it is because of versioning
13:56:35  <Wolf01> I want to do something... but I forgot how to develop :(
13:56:45  <TrueBrain> btw for networking
13:57:12  <TrueBrain> <- Getting Started
13:57:16  <TrueBrain> states you need to copy the dll :)
13:57:23  <TrueBrain> "You must also ship the steam_api[64].dll in your run-time directory (next to your programs executable, or in your dll search path)."
13:57:31  <milek7> I don't think we want to use steam networking, it sort of creates walled platform
13:57:34  <TrueBrain> but, we could just reference that to a http, and download it
13:57:44  <frosch123> TrueBrain: that's not helpful to me :) i never used steam, i have no idea what users expect ottd to do with it :)
13:58:02  <TrueBrain> take Factorio, I started it
13:58:05  <TrueBrain> my friend is like: cool!
13:58:12  <TrueBrain> he rights clicks my name in the friends list, and says: join server
13:58:15  <TrueBrain> that is all
13:58:15  <frosch123> i was hoping we would just get an authenticated used-id from it, and would do the rest via our own servers
13:58:32  <TrueBrain> that is one of the things most people ask about on Steam atm
13:58:41  <TrueBrain> it does away with all the firewalling etc etc
13:58:50  <TrueBrain> (as Steam relays the network completely)
13:59:55  <TrueBrain> there are other things, like the GitHub shared earlier today by someone already implementing a few things, like opening links in the Steam overlay
14:00:17  <TrueBrain> and it unlocks achievements, which I am still -0 about
14:00:42  <TrueBrain> additionally, we could do "cloud saves" that way with a button, where you can browse your cloud-stored saves
14:00:45  <TrueBrain> instead of syncing it
14:01:08  <TrueBrain> I think that is about it
14:02:34  <TrueBrain> we could of course also set up our own relay for networking
14:03:02  <TrueBrain> in that case you only need to handshakes to find who your friend is :P
14:03:46  <frosch123> is the networking stuff on the level of "here is an ip, and the NAT-punched port" or is it "send this blob, receive some blob"?
14:03:57  <TrueBrain> I linked the API docs :P
14:04:14  <TrueBrain> I never worked with the Steamworks SDK, so I know as much as you atm :)
14:04:24  <DorpsGek> [OpenTTD/team] glx22 commented on issue #182: [zh_CN] Translator access request
14:04:28  <frosch123> damn, i thought you knew everything :)
14:04:39  <TrueBrain> sorry to disappoint :)
14:04:53  <TrueBrain> RetrieveData() exists
14:05:17  <TrueBrain> but honestly, this is all pretty easy stuff .. it is just a bit of CFFI
14:05:33  <TrueBrain> and we can hardcode a lot .. as there are not THAT many APIs :P
14:05:46  <TrueBrain> like .. any recv() function will have: socket, buffer, size :P
14:05:48  <frosch123> morally i would prefer if we use steam for "advertise server to friends only", but not for "make NAT punching easy"
14:06:00  <frosch123> we should have our own function in the master server for the latter
14:06:13  <TrueBrain> to implement, not difficult
14:06:20  <TrueBrain> but cost can be a factor
14:06:24  <TrueBrain> similar with cloud-saves
14:06:39  <TrueBrain> but we can pilot it, and just see what it does
14:07:13  <TrueBrain> anyway, I believe Factorio does the same: Steam allows easy network joins, and otherwise you have to do it yourself
14:07:19  <TrueBrain> which works/feels fine
14:09:08  <TrueBrain> but I get that giving perks to a platform like Steam feels wrong
14:09:12  <TrueBrain> and a move towards non-free
14:09:29  <TrueBrain> where Steam Workshop is obvious, networking is a bit more grey
14:11:29  <TrueBrain> handles the Steam friend-invite-game request
14:12:30  <TrueBrain> that char is one send from the one doing the invite
14:12:47  <TrueBrain> if I read this correctly, you do a InviteUserToGame(<friendid>, <server-ip>)
14:12:54  <TrueBrain> the friend gets the above URL callback, with the server-ip
14:13:28  <TrueBrain> frosch123: can't we use Squirrel to be the shim? :D
14:14:22  <frosch123> haha, i already had that thought when suggesting the scripted shim, but did not dare to write it :p
14:14:28  *** supermop_Home has joined #openttd
14:14:56  <frosch123> but yes, i was looking into a generic: describe c function prototype in squirrel, and generate API wrapper at run time
14:14:57  <TrueBrain> I think it kinda works
14:15:10  <TrueBrain> it doesn't even have to generate anything, I think
14:15:13  <frosch123> then use squirrel to convert OTTDs API to whatever the external one provides
14:16:11  <frosch123> TrueBrain: currently we have a lot of .hpp.sq, which we compile
14:16:22  <TrueBrain> what if we make some Squirrel functions that are like dlopen wrappers
14:16:46  <frosch123> i don't know whether there is a generic method to fill va_args at runtime
14:16:49  <TrueBrain> so the shim would do stuff like: inviteUserToGame = GetFunction("steam.dll", "InviteUserToGame")
14:17:12  <TrueBrain> owh, right, the prototype of that function
14:17:12  <TrueBrain> dammit :P
14:17:40  <frosch123> no, it would do GetFunction("steam.dll", "InviteUserToGame", "void", "char*", "int")
14:18:05  <frosch123> and then we would know how to put that stuff onto the stack/into registers, and call the function
14:18:11  <nielsm> yes and then you have to generate machine code to perform the call
14:18:27  <frosch123> of course we could have a list of 500 templates in ottd, to cover the most common signatures, but lol :p
14:18:40  <DorpsGek> [OpenTTD/OpenTTD] smsm1 commented on issue #8935: Crash on save on macOS
14:18:42  <TrueBrain> nielsm: well, dlopen() :P
14:18:49  <TrueBrain> no need to generate machine code I think
14:19:13  <nielsm> yes there is, to do the actual function call with parameters unknown at compile time
14:20:31  <nielsm> also because different OS and ISA have different call conventions, so you can't assume return in registers or stack for everything
14:20:53  <TrueBrain> you mean "generate machine code" on compile time, I guess?
14:20:55  <frosch123> nielsm: we can savely assume c caling convention for plugins
14:21:09  <nielsm> best case maybe you can implement a function in assembly that takes a block of memory and copies onto the machine stack and calls the function
14:21:17  <TrueBrain> I read it as on runtime, which felt a bit icky :D
14:21:21  <nielsm> "C calling convention" differs between OS and ISA
14:21:47  <milek7> GetFunction(["x86": "stdcall", "arm64": "cdecl"], "steam.dll", "InviteUserToGame", "void", "char*", "int")
14:22:02  <frosch123> it comes down to: we need to support 5 types (void, void*, char*, int32, int64) and 0 to 10) paramaeters. so we need 5^10 templates inside ottd :p
14:22:25  <frosch123> well void only applies to the return value
14:22:32  <frosch123> @calc 4**10
14:22:32  <DorpsGek> frosch123: 1048576
14:22:46  <frosch123> just one million templated wrappers :)
14:23:06  <nielsm> and then maybe you need to handle passing/returning strings or buffers in some special ways
14:23:26  <TrueBrain> frosch123: you are basically reinventing CFFI
14:23:30  <TrueBrain> pretty sure this is a solved issue :)
14:23:33  <milek7>
14:23:46  <frosch123> TrueBrain: i was hoping so, but did not find anything et
14:24:10  *** jgx has quit IRC
14:24:20  <frosch123> milek7: nice, we need exactly that :)
14:24:30  <TrueBrain> just for Squirrel, not lua :P
14:24:31  <milek7> but I don't think it is good idea :P
14:25:03  <TrueBrain>
14:25:05  <TrueBrain> has FFI :)
14:25:13  <TrueBrain> milek7: I am glad you explain why you think that :P
14:25:53  <frosch123> milek7: we will not expose that API to all AI/GS :)
14:25:56  <milek7> overly complex, platform-dependent
14:26:18  <nielsm> how about we implement the simple DLL interface solution and offer it as a separate download and no bundled versions, and then work out the legal stuff for it afterwards
14:27:09  *** FLHerne has quit IRC
14:29:32  <TrueBrain> owh, that Squirrel FFI library uses libffi
14:29:38  <TrueBrain> which I already have installed :P
14:29:43  <TrueBrain> I was a bit like: how does this really work?!
14:29:46  <TrueBrain> pretty neat
14:30:26  <TrueBrain> nielsm: not sure why frosch123 brought it up, but I assumed it was not for the legal discussion, more for the: how can we distribute this neatly
14:30:41  <nielsm> also, if you call steamworks.dll from squirrel via FFI, that requires you to reverse/reimplement the SDK in another language, are you sure steam's license allows that?
14:30:46  <DorpsGek> [OpenTTD/OpenTTD] michicc commented on issue #8935: Crash on save on macOS
14:30:53  <TrueBrain> huh?
14:31:15  <TrueBrain> it feels like we are having 2 completely different discussions, I have to say :D
14:32:08  <frosch123> my point was: i don't want to distribute binaries from bananas, and make ottd execute random code from the user directory
14:32:30  <TrueBrain> with Squirrel FFI, we can do: _call("InviteUserToGame", 12, "")
14:32:33  <frosch123> i rather have some interface, that is under control of the ottd binary
14:32:46  <TrueBrain> well, with allowing dlopen, it is rather similar
14:32:55  <TrueBrain> so that would require restricting the functions / dlls you can open frosch123 :)
14:33:06  <DorpsGek> [OpenTTD/OpenTTD] nielsmh approved pull request #8938: Codechange: Use COINIT_MULTITHREADED in CoInitializeEx
14:34:17  <frosch123> TrueBrain: or query the user for confirmation
14:34:35  <frosch123> but ok, maybe that only works in a pink world
14:35:37  <TrueBrain> we can ofc just whitelist some DLLs we allow
14:35:40  <TrueBrain> there is little harm in that
14:36:46  <TrueBrain> but okay, trailing back to what it would solve: we already have SteamWorks library we have to distribute somehow
14:36:52  <TrueBrain> in DLL / so / dylib format
14:36:55  <TrueBrain> so OS specific
14:37:05  <TrueBrain> we need to glue that into the OpenTTD somehow
14:37:12  <TrueBrain> via a common API like AI / NewGRF
14:37:25  <TrueBrain> so if I translate this well, it is about that glue part, how it looks
14:37:31  <TrueBrain> either a binary shim, or some FFI method
14:38:41  <TrueBrain> totally unrelated, I added Olionkey to our organisation as Editor, just so he can see the Developers member page :)
14:40:09  <TrueBrain> frosch123: the reason I like the FFI approach a bit, has also to do with my dislike for the "scripts" folder we have now :P
14:40:18  <TrueBrain> as it is basically a bunch of hooks in our code
14:40:26  <TrueBrain> it would also allow server-admins to do things via Squirrel
14:40:30  <TrueBrain> but I might be a bit crazy here :D
14:40:46  <TrueBrain> (so do stuff on server startup, etc)
14:42:04  <DorpsGek> [OpenTTD/website] 2TallTyler commented on pull request #204: Add: Announcement for April 9 livestream
14:43:57  *** gelignite has joined #openttd
14:44:20  <frosch123> TrueBrain: i see, discord group membership has become important :p
14:44:31  <TrueBrain> I just asked a simple question :D
14:44:48  <frosch123> TrueBrain: let's approach this from the other side. what would not be okay to do with such ffi?
14:45:01  <frosch123> let's take the aggressively competing city builder servers
14:45:19  <frosch123> would such ffi allow to make non-free patches for ottd?
14:45:42  <TrueBrain> it might be a goal we set for that, yes
14:45:45  <frosch123> link the town-growth mechanics via ffi to some social credit system?
14:45:55  <TrueBrain> haha
14:46:12  <TrueBrain> but basically parts of that servers is also rich presence .. only server-side :P
14:46:19  <TrueBrain> might be stretching the definition here
14:47:16  <frosch123> hmm, i guess it comes down to: we do not allow 3rdpary to upload binaries to bananas :)
14:47:31  <frosch123> everything else is on the same level as distributing custom clients
14:47:48  <TrueBrain> if we consider "friends list"
14:47:53  <TrueBrain> you can get that from Steam
14:47:54  <TrueBrain> Discord
14:47:57  <TrueBrain> and hopefully some day our own
14:48:11  <TrueBrain> I think it is within the OpenTTD goals to have that modular
14:48:15  <TrueBrain> that you can pick which you want
14:48:30  <frosch123> yes, we are fine with that. but what when using the ffi to change gameplay?
14:48:53  <TrueBrain> an other extreme, just to name a few to see what it does to us
14:48:58  <TrueBrain> Pathfinding is slow in Squirrel
14:49:04  <TrueBrain> so .. is using FFI here fine?
14:49:11  <frosch123> when accepting binary plugins, we probably need to define the line where our GPL ends
14:49:28  <frosch123> excellent example :) i don't think i would be okay with people using non-free pathfinders in their ais
14:49:53  <TrueBrain> license there, I think I am not fine with any binary library that is not signed by someone I trust
14:50:03  <TrueBrain> so either OpenTTD, Steam, Discord, ..
14:50:06  <TrueBrain> and I want to pick which I trust
14:51:25  <TrueBrain> so for me, any binary plugins should be heavily curated
14:52:06  <TrueBrain> regarding your non-free comment, strictly seen I can already upload a non-free pathfinder to BaNaNaS and use it in my AI
14:52:35  <TrueBrain> you just cannot make it closed-source atm
14:53:42  <nielsm> yeah the requirements for bananas to accept an upload is that you grant bananas the right to distribute your work, and grant any user downloading it from bananas right to execute the work
14:54:12  <nielsm> nothing about further redistribution or make derived works
14:54:38  <TrueBrain> revisiting past decisions, I would have been happier if we would enforce free licenses on BaNaNaS :P But publishing your source was not a real thing back in the day
14:57:16  <TrueBrain> the more I think about it: I am not fine with FFI for anything that can be done in another more open way
14:57:28  <TrueBrain> euh, FFI = binary
14:57:42  <TrueBrain> so if I want Steam integration, I have to accepts that needs to be done via a binary
14:57:49  <TrueBrain> but the smaller that part is, the happier I become
14:58:59  <TrueBrain> so no, no FFI to change gameplay
14:59:23  <TrueBrain> FFI only for "external closed source" dependencies
14:59:28  <TrueBrain> meh, difficult line :P
14:59:48  <glx> so only when we can't avoid it
14:59:49  <TrueBrain> (replace FFI for "binary distribution", still holds)
15:00:18  <glx> (btw newgrf are binaries ;) )
15:00:31  <TrueBrain> ish, but yes, that is also why I do not really like them I guess :P :P :P
15:00:38  <DorpsGek> [OpenTTD/website] michicc updated pull request #204: Add: Announcement for April 9 livestream
15:00:47  <glx> but we run the VM for newgrf
15:01:01  <glx> so they can't do what they want
15:01:03  <TrueBrain> yeah, I was joking. I mean binary here in machine code
15:01:45  <TrueBrain> something that runs natively on the machine without our direct approval for instructions executed :P
15:02:02  <DorpsGek> [OpenTTD/website] TrueBrain approved pull request #204: Add: Announcement for April 9 livestream
15:02:20  <michi_cc> LordAro, Timberwolf
15:02:21  <glx> yeah a dll could do anything in theory, even from the entry point
15:02:24  <michi_cc> Opps :)
15:02:49  <milek7> I don't quite get why would squirrel-ffi be better than generic dll interface shim
15:03:34  <michi_cc> LordAro, Timberwolf: The website announcement mentions you as participants. Last minute confirmation? Obviously, we can still change that if something should come up.
15:04:13  <TrueBrain> GHA is still acting up, it seems
15:04:40  <glx> there's also an option to use an external tool and connect via admin port
15:05:03  <nielsm> people keep bringing up admin port here
15:05:08  <TrueBrain>  Get EOF
15:05:16  <TrueBrain> lovely error
15:05:27  <nielsm> admin port is for administering multiplayer servers, the problem is administering a game client
15:05:42  <glx> well an other port can be added too
15:05:54  <nielsm> just generic IPC then
15:07:05  <glx> as I understand it, the idea is to have openttd build and work the same with and without external deps
15:07:39  <TrueBrain> frosch123: another crazy idea here, we could use such "Rich Presence" also for things like window-interactions and colours etc etc :P
15:07:47  <TrueBrain> client-side-only modifications :D
15:07:56  <michi_cc> TrueBrain: What did you do to Discord, BTW? I liked my colour :P
15:08:05  <milek7> glx: I think steam overlay will be confused with external tool
15:08:15  <TrueBrain> don't blame me michi_cc !
15:08:31  <TrueBrain> well, maybe a little
15:08:34  <michi_cc> But you were complaining about loosing your yellow :)
15:08:34  <TrueBrain> I wanted to be yellow :P
15:08:42  <TrueBrain> mostly, I wanted to be special! :D
15:08:54  <michi_cc> Now we are all yellow :)
15:09:03  <TrueBrain> yeah, so still not what I wanted :P
15:09:08  <TrueBrain> so we are now both unhappy!
15:09:56  <TrueBrain> think we are going to pass 3k players tonight
15:10:40  <TrueBrain> we are currently more popular than Starbound and PlanetSide 2 :P
15:12:12  <TrueBrain> michi_cc: I keep pressing "rerun" in the hope one day Docker Hub doesn't fail midjob :P
15:13:21  <michi_cc> 2,872 players now.
15:13:38  *** FLHerne has joined #openttd
15:14:00  <_dp_> wait, is client gs happening here? xD
15:14:29  <TrueBrain> that is a bit what the debate is about yes :P
15:15:11  <TrueBrain> not as much gs, just s
15:15:12  <TrueBrain> but okay :P
15:15:14  <TrueBrain> CS!
15:15:21  <TrueBrain> that won't be confusing at all :D
15:16:19  <_dp_> just s? you mean it exists but can't do shit?
15:16:24  <_dp_> wait, that's gs :p
15:16:41  <TrueBrain> no clue what you are smoking :P
15:16:52  <TrueBrain> but I mean it is not a client game script, it is client script
15:16:59  <FLHerne> TrueBrain: Chris Sawyer?
15:17:41  *** snail_UES_ has joined #openttd
15:18:27  <_dp_> I'm just very much missing any sane way to do client-side logic :p
15:18:34  <FLHerne> I'm sure he'd be good at setting game objectives
15:18:41  <TrueBrain> _dp_: what would you like to do?
15:18:57  <FLHerne> "All this grf stuff is a Bad Feature. Service more oil rigs."
15:19:26  <_dp_> well, ui is like #1, though it's not necessarily client-side
15:19:34  <_dp_> but a lot of gameplay stuff as well
15:19:43  <TrueBrain> I need more detailed examples, if you don't mind :)
15:19:50  <TrueBrain> those generic terms I figured out on my own :P :P
15:19:55  <_dp_> ok, let me think for a bit...
15:21:05  <TrueBrain> frosch123: any dlopen() access should be whitelisted on "uniqueid" and what file can be opened, and only allowed in the cases there really is not another way to do it, is my conclusion :P
15:21:15  <DorpsGek> [OpenTTD/OpenTTD] 2TallTyler commented on pull request #8688: Feature: Hide block signal GUI by default
15:21:19  <DorpsGek> [OpenTTD/OpenTTD] 2TallTyler reopened pull request #8688: Feature: Hide block signal GUI by default
15:21:49  <_dp_> oh, actually, ui is not quite server-side as some of could use fast updates
15:21:59  <_dp_> citymania is spamming goal updates like crazy atm
15:23:35  <_dp_> ok, another example - town growth, not just growth rate but custom algorithm
15:23:57  <_dp_> can techically be done with on server but will suck tremendously
15:24:24  <TrueBrain> seems we have very different concepts of client-side :P
15:24:26  *** Wuzzy has joined #openttd
15:24:35  <TrueBrain> client-side, things only executed on the client async of the server
15:24:39  <TrueBrain> in other words: doesn't influence game-state
15:24:52  <_dp_> ah, no both sides ofc I mean
15:25:25  <_dp_> "gameplay stuff" kinda means changing game state in my book :p
15:25:27  <FLHerne> TrueBrain: hey look, it happened
15:25:28  <TrueBrain> There are 534 clients, 431 IPv4 servers and 99 IPv6 servers in this list. <- its busy
15:25:38  <TrueBrain> FLHerne: yeah .. that was just a matter of when, not if :)
15:25:49  <TrueBrain> _dp_: there is a reason I said "s", not "gs" :)
15:26:49  <_dp_> well, without game state it's just some of ui
15:26:57  <_dp_> somewhat useful ofc but not nearly as exiting :p
15:27:14  <TrueBrain> what you describe is more GS APIs
15:27:27  <TrueBrain> or NewGRF props
15:27:30  <TrueBrain> what-ever fits best
15:27:33  <TrueBrain> I gave up on that a while ago :P
15:27:41  <_dp_> nothing fits, that's the problem :p
15:27:45  <frosch123> TrueBrain: i have no idea what you mean with window-interactions and colours :)
15:27:49  <milek7> would need some sort of sync-gs
15:27:57  <milek7> that can hook various gameplay functions
15:28:00  <TrueBrain> frosch123: I was thinking about people asking about shit like themas
15:28:02  <TrueBrain> dark-mode
15:28:07  <TrueBrain> having the buttons on the other side of the window :P
15:28:11  <TrueBrain> I know it is a bit crazy :)
15:30:21  <frosch123> i think last time we discussed that, the conclusion was "any kind of theming plugin would be specific to a single ottd version, require constant maintainance, and be dead after each release"
15:30:47  <frosch123> it still confuses me how dead zbase/abase are...
15:30:51  <TrueBrain> hmm, I am curious to why that conclusion was made, but not something for today :D
15:31:20  <frosch123> so many zbase users, but noone is bothered my missing sprites
15:31:52  <frosch123> otoh, we are lucky, since we currently have no option for hosting a zbase repository :)
15:31:55  <_dp_> a lot of ppl seem to have aesthetics of more pixels = better :p
15:32:00  <DorpsGek> [OpenTTD/OpenTTD] James103 commented on issue #8937: Ships saying they are lost
15:32:01  <frosch123> it exceeds gh limits
15:32:14  <TrueBrain> haha
15:32:18  <TrueBrain> good excuse to close it down? :P
15:32:28  <TrueBrain> can we just roll back 32bpp in NewGRFs in general?
15:32:59  <_dp_> roll back EZ, leave 32bpp :p
15:33:03  <frosch123> _dp_: that's subjective. i am more confused about about the discrepancy of subjective opinions between creators and players
15:33:07  <TrueBrain> some glitch in the matrix and act like it never excisted?
15:33:19  <frosch123> i would have expected creators like zbase equally to users
15:33:59  <frosch123> TrueBrain: V made an automatic 32bpp->8bpp converter. the results look outstanding
15:34:05  <frosch123> i still want to integrate that into nml
15:34:11  <DorpsGek> [OpenTTD/OpenTTD] nielsmh updated pull request #7786: Add: Help and manuals window
15:34:52  <_dp_> rly? I thought 8bpp in V's stuff was kinda meh
15:34:55  <TrueBrain> frosch123: cool :D
15:35:01  <_dp_> well, disagreement++ I guess :p
15:35:30  <frosch123> wtf... i did not except a "add help manual windows" pr to have 39 commits :p
15:35:49  <nielsm> frosch123: it's a lot of sausage making and checkpoint commits
15:35:58  <nielsm> I mean to clean up the history later
15:36:17  <frosch123> TrueBrain: as you know, the main strength of 32bpp is transparency, font aliasing, and stuff
15:36:36  <frosch123> for opaque sprites it's not a big deal
15:44:40  *** Flygon has quit IRC
15:46:41  <michi_cc> Steam broke 3000 players.
15:50:28  <frosch123> they want a honey economy
15:59:07  <glx> main issue with 32bpp packs is they chose to focus on extra zoom levels too
15:59:07  <_dp_> TrueBrain, oh, I know what your "s" is
15:59:25  <_dp_> without game state modification client script is basically a rudimentary patched client :p
15:59:30  *** Zuu has quit IRC
16:00:38  <frosch123> _dp_: exactly. the whole afternoon was about: what level of client-side patching can loophole the gpl
16:02:27  <_dp_> yeah, but that means it's pointless for anything other than that legal bs
16:03:31  <TrueBrain> michi_cc: w00p!!
16:08:39  <nielsm> okay figured out those crashes on hyperlink click too, it's because you somehow manage to click on a single-pixel row that belongs to the second line of a one-line paragraph
16:12:32  *** Wormnest has joined #openttd
16:12:38  <frosch123> TrueBrain: meh, steam overlay must be initialised pretty early (before opengl init), so it's a "restart" for toggling such plugins
16:18:21  <DorpsGek> [OpenTTD/OpenTTD] nielsmh updated pull request #7786: Add: Help and manuals window
16:18:36  <nielsm> okay I think that's all the link bugs
16:19:05  <nielsm> ah no, it's not, there's still the weird how-do-you-count-characters thing with start/end of links
16:25:18  <DorpsGek> [OpenTTD/OpenTTD] nielsmh commented on pull request #7786: Add: Help and manuals window
16:25:39  *** Dwight has joined #openttd
16:25:41  <Dwight> hi
16:26:05  <Dwight> well I have a kinda advanced question: is there any method of making shuttle buses?
16:26:19  <TrueBrain> frosch123: meh indeed
16:26:57  <Dwight> like, the AI can't differ between people it just unloaded and people that came from another airport
16:28:45  <peter1138> AI?
16:29:06  <_dp_> pretty sure he just means the game
16:29:11  <peter1138> Yes.
16:29:57  <Dwight> well the built in AI for transport networks
16:30:14  <peter1138> There is no built-in AI
16:30:22  <Dwight> hm
16:30:49  <Dwight> question: does load have priority over 'load if can'?
16:31:05  <peter1138> What I think you're asking for is called Cargo distribution, in typical OpenTTD fashion there are settings for it. Manual is the standard behaviour you see.
16:31:21  <TrueBrain> Negative review "Amazing Game, but lack of BEE based industry. Let me transport Honey!" :D
16:31:46  <_dp_> has bee-based gamescript though :p
16:32:28  <Dwight> where's that setting?
16:33:32  <Dwight> ok found it
16:33:44  <Dwight> but I'm not sure what to change here
16:33:45  <peter1138> There's at least 4 of them :D
16:34:30  <spnda> TrueBrain: My favourite negative review is "I like the soundtrack"
16:34:40  <peter1138> Basically "manual" means you get to decide what goes where. In this mode you can pick up and deliver whereever you like, but of course this makes your 'shuttle buses' not work.
16:34:49  <Dwight> yeah, but I'm not sure what to change here
16:34:49  <TrueBrain> that sounded a lot like: I have nothing else positive to say :P
16:35:02  <Dwight> asym or sym?
16:35:17  <nielsm> symmetric is a bit easier
16:35:57  <peter1138> Asym vs symmetric is largely to do with forward and return traffic. Either way will give cargo a specific destination that it wants to go to.
16:36:26  <Dwight> I see
16:36:29  <spnda> Probably best review yet is (translated): "Good game but it's difficult to understand where to begin and how things function. There's no tutorial". Other than that there are really no negative reviews. But I guess nielsm's pr is gonna fix that mostly
16:37:09  <Dwight> yeah you gotta go to see the guides
16:37:14  <Dwight> also fiddle around yourself
16:37:26  <Dwight> okay let me try again now lol
16:37:28  <peter1138> Dwight, it does, I guess, make the game harder. But IMHO it makes building intricate linked up networks more fun.
16:37:29  <spnda> I got into the game with a frtiend explaining stuff over Skype.... good times
16:37:38  <DorpsGek> [OpenTTD/website] TrueBrain approved pull request #203: Fix: Typo in screenshot description
16:38:00  <TrueBrain> wtf, this game doesn't have Steam Join Game integration? How am I suppose to play with my friends now? :P
16:38:15  <TrueBrain> (I have to find out how to port-forward on my router .. I have no clue :P)
16:38:26  <TrueBrain> I am serious btw, wanted to start a MP game, but gave up :D
16:38:52  <TrueBrain> also, really annoying to start a map with the same AI/GS/NewGRF as a savegame I have .. took me a while to find to save a preset
16:38:59  <TrueBrain> but it is still lacking GS in that case
16:39:45  <TrueBrain> "restart" etc doesn't keep NewGRF settings of the game :)
16:39:53  <TrueBrain> THING TO IMPROVE! :D
16:41:54  <_dp_> can make you a server on citymania if you want xD
16:43:41  <DorpsGek> [OpenTTD/OpenTTD] 2TallTyler updated pull request #8688: Feature: Hide block signal GUI by default
16:43:49  <_dp_> may or may not come with inbuilt citybuilder xDDD
16:45:34  <FLHerne> Dwight: When you enable cargo distribution, the list of waiting passengers in the station window will want to go to a specific station via somewhere else
16:46:20  <FLHerne> you can expand the list with the little '+', and change the way it's arranged by the confusing "Via - Destination - Source" dropdown
16:48:18  <Dwight> well it's kinda understandable imo
16:48:25  <Dwight> also it's working now
16:48:28  <Dwight> thanks
16:49:05  <Dwight> but like if humies don't want to go somewhere specifically a lot of current transport systems would cease to function
16:54:46  *** snail_UES_ has quit IRC
16:56:02  <FLHerne> Well, it's good that it makes sense to someone :-)
16:59:28  <Dwight> technically
16:59:29  *** snail_UES_ has joined #openttd
17:00:02  <Dwight> so basically the first layer is from where they're from
17:00:08  <Dwight> the second layer is where they want to go
17:00:18  <Dwight> and that's about it
17:00:23  <Dwight> wording is indeed a bit wierd
17:01:42  *** andythenorth has joined #openttd
17:01:46  <snail_UES_> andythenorth: in FIRS 4, Aluminum can be transported in coils, but Alloy Steel, Stainless Steel etc. is only in ingots or slabs?
17:02:12  <andythenorth> unknown
17:03:09  <andythenorth> the coil carriers in Horse refit to Alloy Steel, Stainless Steel
17:03:21  <andythenorth> but the industries only show slab/ingot for those cargos
17:03:32  <andythenorth> perfection is not attainable here :)
17:04:23  <Dwight> uh
17:04:38  <Dwight> what benefits do subsides give?
17:05:58  <snail_UES_> I see. While I’m adding your new cargoes, I’m thinking to match your industries’ look as well :p
17:08:55  <snail_UES_> in terms of coloring, I was thinking about having different shades of grey, from the lightest to the darkest:
17:09:10  <snail_UES_> Aluminum (lightest) —> stainless steel —> alloy steel —> carbon steel —> zinc —> cast iron —> pig iron (darkest)
17:09:15  <snail_UES_> does this make sense to you?
17:12:01  <andythenorth> snail_UES_ these are sprites I use
17:12:27  <peter1138> Dwight, improved profit I think
17:12:34  <andythenorth> there aren't enough shades to really differentiate the types of metal I think
17:14:38  <snail_UES_> oh, so you share the same shades across a few types of metal
17:15:10  <snail_UES_> I’ll probably do the same on my side then
17:15:46  <andythenorth> I tried to make ingots a bit lighter I think, but it's not much to see
17:17:21  * andythenorth wonders where the cargo payment calculation is in src
17:17:39  <peter1138> Copper Ingots
17:17:45  <andythenorth> did I do those?
17:17:54  <andythenorth> I think copper is coil currently
17:17:54  <snail_UES_> I have copper ingots too :p for other sets
17:18:43  <andythenorth> CargoPayment looks promising
17:19:32  <andythenorth> oh there's a CargoPaymentPool
17:19:34  <andythenorth> :D
17:19:47  * andythenorth adventures
17:20:48  <peter1138> NewCargoPayments?
17:21:07  <peter1138> Hmm, station-walking or bus networks?
17:21:37  <andythenorth> both
17:21:47  <peter1138> Oh, no, I can't do bus. It's 1881.
17:21:50  <andythenorth> tram
17:21:53  <FLHerne> Dwight: They just pay you so much money if you transport the relevant stuff
17:22:36  <DorpsGek> [OpenTTD/OpenTTD] amf0336 commented on issue #8935: Crash on save on macOS
17:22:43  <FLHerne> Dwight: financially it's very rarely worth bothering, but it can be nice when you can't decide what to do next
17:22:46  <peter1138> Using Timberwolf's stuff. Missing ships...
17:25:40  <snail_UES_> andythenorth: did I miss any progress on CargoPayments?
17:26:46  <andythenorth> not according to logs
17:27:00  <andythenorth> I can't find the calculation in src yet
17:27:11  *** didac has joined #openttd
17:27:34  <andythenorth> step 1 would be to see if OpenTTD code actually matches what newgrf wiki said
17:27:43  <andythenorth> I used to trust these things...but now I have...experience
17:28:03  <andythenorth> writing docs is hard
17:29:43  <snail_UES_> we might even pick two birds with a stone, and check if the cargo aging code is actually doing what it’s supposed to do...
17:35:07  <andythenorth> grepping DaysInTransit might be useful
17:35:38  <DorpsGek> [OpenTTD/OpenTTD] perezdidac commented on pull request #8934: Change: NewGRF window apply button to disable if changes not made
17:35:51  <andythenorth> ok it's GetTransportedGoodsIncome
17:35:59  <_dp_> last time I checked it all worked as expected
17:37:19  <DorpsGek> [OpenTTD/OpenTTD] perezdidac commented on pull request #8902: Feature: show upload date in the network content window
17:38:00  <_dp_> not that I paid much attention to what wiki says...
17:39:43  <_dp_> AgeCargo is what you want to grep probably
17:41:26  <DorpsGek> [OpenTTD/OpenTTD] perezdidac opened issue #8939: Object selection window button doesn't appear lowered after clicking on it
17:46:11  <andythenorth> AgeCargo looks useful, but it's the payment that's more interesting
17:46:26  * andythenorth stayed up too late :P
17:46:37  <andythenorth> this is all just blah blah blah to me right now :)
17:46:58  <andythenorth> GetTransportedGoodsIncome definitely does....something
17:48:06  <andythenorth> is there anyone with a long long memory who knows why cb39 was ever added?
17:48:13  <andythenorth> I can't envisage any possible use for it
17:51:06  <Dwight> is water transport practical for 1 tile wide rivers?
17:51:14  *** FLHerne_ has joined #openttd
17:51:23  <nielsm> andythenorth: alcoholic spirits that have been in transport for several years suddenly gain value
17:51:44  <_dp_> here's the js version my graph uses
17:52:13  <_dp_> dunno if it helps though, it's not that much different
17:53:05  <DorpsGek> [OpenTTD/OpenTTD] DorpsGek pushed 1 commits to master
17:53:06  <DorpsGek>   - Update: Translations from eints (by translators)
17:53:11  <nielsm> (one brand of danish/norwegian Akvavit markets itself on on having matured in barrels on board an oceangoing ship)
17:53:39  <_dp_> andythenorth, well, if you want to make sqrt(distance) in payments or some other nonsense cb39 can probably do it ;)
17:53:42  <DorpsGek> [OpenTTD/website] michicc merged pull request #204: Add: Announcement for April 9 livestream
17:54:18  <DorpsGek> [OpenTTD/website] TrueBrain merged pull request #203: Fix: Typo in screenshot description
17:54:20  <michi_cc> TrueBrain: That other website PR can probably go together, right?
17:54:26  <TrueBrain> :P
17:54:48  *** FLHerne has quit IRC
17:55:20  <michi_cc> Who's doing the tag?
17:55:22  <didac> Q&A livestream, that sounds cool. Is that next Friday at the same time as the one yesterday?
17:55:31  <michi_cc> didac: Yep.
17:55:43  <didac> neato
17:55:48  <spnda> What kind of profiling tools could I use for OpenTTD? I want to profile which functions take the longest when using the content downloading window but I can't find a good tool
17:56:45  <michi_cc> Don't get used to that stream frequency though. There's some time opportunity and good Steam buzz to use right now.
17:56:59  <didac> yeah definitely
17:57:15  <TrueBrain> michi_cc: feel free to tag after you validated it looks good on staging, I would say
17:57:15  <_dp_> lol, cb39 doesn't use BigMulS like default calculation does
17:57:19  <TrueBrain> and if you like you can do the socials too :P
17:57:23  <_dp_> so can probably overflow on miltiplication xD
17:57:26  <FLHerne_> Is there a process for people who want to be on the stream?
17:57:30  <FLHerne_> (I certainly don't)
17:57:44  <TrueBrain> biggest mouth
17:57:47  <FLHerne_> But maybe there should be before the existing team run out of crazy patches
17:57:52  *** FLHerne_ is now known as FLHerne
17:58:14  <michi_cc> TrueBrain: That would need me either having proper credentials (or a sufficiently known reddit account).
17:58:27  <TrueBrain> you don't have access to 1password?
17:58:28  <TrueBrain> awh
17:58:48  <michi_cc> I'm also not a Discord Town Crier :)
17:58:52  <TrueBrain> I will do it after you tagged; copy/pasting is not that hard luckily enough :)
17:59:13  <TrueBrain> oops, 1 of the 2 staging deploys is going to fail
17:59:14  <TrueBrain> owh well
17:59:18  <TrueBrain> not the worst thing in the world
18:00:02  <TrueBrain> staging is updated
18:00:45  <DorpsGek> [OpenTTD/OpenTTD] nielsmh updated pull request #7786: Add: Help and manuals window
18:01:01  <michi_cc> Yeah, seems to be okay. I'll tag.
18:01:53  *** Dwight has quit IRC
18:02:33  <TrueBrain> you know what, after that, you can also do forums :P We don't have a DorpsGek there anyway :D
18:04:33  <DorpsGek> [OpenTTD/website] michicc created new tag: 1.4.25
18:04:38  * andythenorth wonders what vars are actually in scope for cb39
18:05:00  <andythenorth> "Currently, cargos don't have 40+x, 60+x, or 80+x variables, but they might be added later."
18:05:05  <andythenorth> seems non-promising
18:05:36  <TrueBrain> owh, right, I should also post it on Steam I guess
18:12:24  <TrueBrain> twitter, reddit, steam, discrdo: done
18:12:28  <TrueBrain> tt-forums: up to you :D
18:12:37  <michi_cc> Just done :)
18:12:45  <TrueBrain> \o/
18:13:23  <michi_cc> andythenorth: I posted something on #8935, but I can only test it in a few days.
18:13:36  <michi_cc> Website seems done, too.
18:13:58  <TrueBrain> yeah, I waited for that to post the others :P
18:14:14  <andythenorth> I'll pull 8935 in a bit
18:14:15  *** Dwight has joined #openttd
18:14:48  <Dwight> yup, the wiki said that people in this game is just like cargo unless changed in commands
18:15:03  <Dwight> *settings
18:15:46  <michi_cc> FLHerne: For the next stream it was who answered first in our secret cabal Discord channel.
18:16:06  <TrueBrain> as I said: biggest mouth :P
18:16:10  <TrueBrain> :D :D
18:16:29  <frosch123> who added the "rts" tag to openttd on twitch? :p
18:16:42  <TrueBrain> it kept adding random tags yesterday
18:16:45  <TrueBrain> which kinda annoyed me :D
18:17:58  <TrueBrain> where are tags in Twitch?
18:18:59  <frosch123> <- i have no idea how twitch gains game categories
18:19:22  <TrueBrain> ah, so there it was getting them from ..
18:20:01  <TrueBrain> no clue if/how you can claim such pages
18:20:49  <frosch123> <- there is also that, so it's probably fed from some databse
18:20:59  <frosch123> maybe it will just fetch openttd from steam somewhen :)
18:22:16  <peter1138> Last time I tried streaming it it would only allow "Open Transport Tycoon Deluxe"...
18:22:26  <peter1138> Whatever that is.
18:23:20  <TrueBrain> seems I can claim games, but I have to register as such .. so I will do that :)
18:24:17  *** Dwight has quit IRC
18:24:42  <TrueBrain> takes a week, they say
18:25:52  <TrueBrain> after that I can update boxart
18:27:10  <TrueBrain> hopefully tags too :)
18:28:18  <andythenorth> frosch123 so before any potential change to cargo payment, we should verify current state? :P
18:28:30  <frosch123> haha, exactly my thought
18:28:54  <frosch123> yesterday was a bit like: cargo aging does not work... we want a new payment method... it shall work like cargo aging :p
18:29:08  <andythenorth> seemed to be
18:29:34  <andythenorth> I am not making a discussion for this yet, but I think it needs pinning into separate concerns
18:29:43  <andythenorth> 1) does payment work as docuemented
18:29:43  <TrueBrain> frosch123: <- this is their source
18:29:48  <frosch123> one thing i found/remembered. cargo age is maxed out after 1.5 years or so, so that may be relevant to ludicrous map sizes
18:30:01  <andythenorth> 2) does cargo aging work as expected and is it useful?
18:30:08  <andythenorth> 3) cargo payment multiplier, for vehicles
18:30:21  <_dp_> frosch123, it's irrelevant because cargo payment flats out sooner
18:30:28  <andythenorth> yeah it caps at something like 255 * 2.5 or so
18:30:36  <frosch123> TrueBrain: great, and who wrote that? :p
18:30:44  <TrueBrain> no clue
18:30:47  <TrueBrain> fixing whatever crap is on there
18:30:52  <_dp_> 255 * cargo_aging / 74 to be precise ;)
18:30:54  <TrueBrain> the name of the game is even explained wrong
18:31:33  <andythenorth> relevant function is GetTransportedGoodsIncome and the calculations that produce time_factor
18:32:01  <nielsm>
18:32:09  <andythenorth> cargo transit_days also seems significant
18:32:11  <frosch123> TrueBrain: it links steam, so some editor must be active there
18:33:05  <TrueBrain> some parts are really good
18:33:08  <TrueBrain> other parts are plain wrong :)
18:33:09  <frosch123> "IGDB is operated by Twitch" <- lol
18:33:10  <TrueBrain> it is a nice mix :)
18:34:03  <TrueBrain> wrong wiki, points to a facebook, not twitch, but Steam, etc etc :)
18:34:37  <TrueBrain> funny, there is no entry for the MSStore
18:34:45  <TrueBrain> Steam, Gog, Epic, Google, App Store, Itch
18:34:47  <TrueBrain> but no MSStore :D
18:34:59  <frosch123> <- we also link to a fbook
18:35:26  <supermop_Home> snail_UES_ any side effects?
18:35:35  <andythenorth> so many good reviews on Steam
18:35:56  <frosch123> no curator review yet though
18:36:35  <andythenorth> it's such an antidote to tt-forums
18:36:47  <frosch123> well, it's mostly spam though
18:36:48  <andythenorth> and reddit is very...sweet...but is an awful lot of "I can't computer"
18:37:11  <snail_UES_> supermop_Home: from the vaccine?
18:37:20  <supermop_Home> yeah
18:37:24  <snail_UES_> not really, I only felt a bit dizzy and feverish the day after
18:37:25  <supermop_Home> mines tomorrow
18:37:33  <snail_UES_> which one are you getting?
18:37:40  <TrueBrain> okay, IGDB update done, takes ~24 hours it says
18:37:41  <supermop_Home> not sure!
18:37:59  <supermop_Home> i heard health and hospitals corp. is mostly j&j
18:38:05  <snail_UES_> I see, my friends who got Pfizer/Moderna told me they felt good after the 1st shot
18:38:10  <supermop_Home> but it didn't say on my appointment
18:38:13  <TrueBrain> <- guess people can vote for my changes :P
18:38:15  <snail_UES_> the 2nd shot was what made them feel bad
18:38:27  <snail_UES_> got it. In any case it depends on the person, I guess
18:38:48  <supermop_Home> i was planning to do some volunteer work in the afternoon, but wondering if i should clear my calendar just in case
18:39:08  <TrueBrain> I cannot update my update
18:39:08  <TrueBrain> funny
18:39:31  <snail_UES_> yeah, not sure. I still felt good on the same day. The side effect kicked in the morning after
18:39:59  <_dp_> "OpenTTD is a business simulation game" >:)
18:40:26  <TrueBrain> have you read the old one?
18:40:31  <TrueBrain> traffic simulator? Wuth?
18:41:00  <_dp_> idk which one is worse :p
18:41:26  <michi_cc> _dp_: Would it make sense to upgrade cargo_age to an int16?
18:42:30  <_dp_> michi_cc, idk, it's unclear to me if cargo aging is of any use in the first place
18:42:51  <TrueBrain> _dp_: I guess I have some bad news for you, as we broadcast everywhere OpenTTD is a business simulation game
18:44:31  <andythenorth> I wanted to know if cargo aging is scaled to map
18:44:37  <andythenorth> I also wonder about daylength, but eh
18:44:42  <frosch123> michi_cc: i would think it helps. to my understanding payment depends on speed (distance/age), but everyone else claims only distance matters :p
18:44:45  <andythenorth> I can't see any map size scaling in the code I read
18:44:55  <_dp_> TrueBrain, I know, so I keep grumbling :p
18:45:04  <andythenorth> frosch123 empirically in my test games speed matters
18:45:10  <TrueBrain> sounds a useful way to spend your energy ;)
18:45:11  <andythenorth> that's why it's about half a day to test :P
18:45:33  <andythenorth> speed of different horse generations varies a lot
18:45:51  <andythenorth> formula suggest speed matters also :P
18:45:52  <TrueBrain> right ... another source of "untruth" addressed .. maybe one day we get ride of the fact people think OpenTTD stands for something :)
18:46:18  <andythenorth> stands for OpenTTD no?
18:47:08  <TrueBrain> I start to understand why it is a full time job to manage social media :P
18:47:10  <frosch123> michi_cc: ok, looks like i was wrong. GetTransportedGoodsIncome does not divide dist/days
18:48:15  *** nielsm has quit IRC
18:48:16  <frosch123> yeah, now i get why aging hardly matters
18:48:37  <andythenorth> TrueBrain funny isn't it
18:48:37  <_dp_> oh, btw when I said it's irrelevant I though frosch meant days_in_transit, not cargo_age_period
18:48:39  <andythenorth> not hard, just work
18:48:46  <andythenorth> like supermarket checkout
18:49:03  <michi_cc> The usual complaint/exploit is that when you hit the age limit, profit starts to go up again because it doesn't matter anymore how slow or fast you go, so you can just go straight across the map.
18:49:16  <_dp_> frosch123, it does divide but indirectly as cargo payment goes down with time
18:49:17  <michi_cc> _dp_: I meant days_in_transit for the int64, too.
18:49:21  <TrueBrain> andythenorth: well, also a bit hard, as you need to deal with community people constantly :P
18:49:21  <michi_cc> *int16
18:49:34  <TrueBrain> very happy kamnet is also looking after Steam discussions, and doing a great job at it :)
18:49:45  <_dp_> days_in_transit is completely irrelevant as cargo payment flats out before it gets to 255
18:50:14  <_dp_> though I guess it may make sense if cargo payment is also changed so it can be extented
18:50:24  <frosch123> michi_cc: so, changing it to int16 does nothing. GetTransportedGoodsIncome clamps it earlier
18:50:49  <andythenorth> _dp_ flats out where?
18:51:05  <_dp_> in general the way cargo payment is defined it kind feels like it does nothing
18:51:11  <michi_cc> Okay, I somehow though that days_in_transit is the only clamping performed.
18:51:14  <_dp_> you just conrol 2 points where it changes slope
18:52:41  <_dp_> andythenorth, depends, but it does so before 255 "days"
18:53:12  <_dp_> note that "day" = 2.5 days ;)
18:54:21  <frosch123> now it reads like time_factor is more like a bonus for very short distances
18:54:48  <frosch123> transport coal from source to target in less than 7 days, get a bonus, indepednent of distance
18:55:14  <frosch123> for long distances, speed does not matter at all, it's just linear with distance
18:55:38  <frosch123> so, to get back to that first class passenger thing
18:55:50  <frosch123> maybe MIN_TIME_FACTOR should be vehicle-dependant
18:56:24  <frosch123> increasing or lowering that would not change short travels, but largely impace long distance
18:57:05  <andythenorth> I assume this is accurate?
18:57:29  <frosch123> yes, it is
18:57:44  <frosch123> for long distance only the last line matters
18:58:07  <frosch123> but you can change that via the cargo payment callback
18:58:24  <frosch123> just not vehicle-specific
18:59:01  <frosch123> but you can already write a grf to increase the impact of cargo aging
18:59:08  <andythenorth> I think I misunderstand the cargo payment callback
18:59:27  <andythenorth> as there are literally no vars available, how does it do anything beyond what the static props do?
18:59:53  <frosch123> you can add a sqrt to distance, you can remove the clamping
18:59:56  <frosch123> quite a lot actually
19:00:02  <frosch123> just not vehicle-specific stuff :)
19:00:07  <andythenorth> oh so it can replace the calculation
19:00:11  <andythenorth> if you have your own ideas
19:00:14  <frosch123> you have access to both distance and cargo age
19:00:19  <frosch123> and combine them as you like
19:00:40  <frosch123> oi, that callback is even signed
19:01:06  <andythenorth> cargo penalty?
19:01:07  <frosch123> you can punish long distances hard, by giving negative income :)
19:01:26  <frosch123> "you have to deliver fish within 20 days, or it will be rotten"
19:01:29  <andythenorth> 'finally people can fix planes'
19:01:30  <andythenorth> lol
19:02:13  <frosch123> you can also limit the impact of distance, and just not pay more at some distance, or well add that sqrt thing
19:02:14  <snail_UES_> frosch123: it’d be great to have something like: “you have to deliver fish within 20 days, unless it’s in a refrigerated van”
19:02:27  <frosch123> snail_UES_: you can already do that :)
19:02:44  <frosch123> make the cargo payment callback return 0 after 20 days
19:03:02  <frosch123> use the cargo aging propery to extend the 20 days to 80 in refridegerated vans
19:03:18  <_dp_> it doesn't know the "refrigirated van" piece
19:03:33  <_dp_> only with mb some aging trickery
19:04:37  <andythenorth> ?
19:04:50  <frosch123> andythenorth: i DISAGREE with dp :)
19:06:00  <andythenorth> so does this just require co-operation between vehicle grf authors and cargo authors?
19:06:03  <andythenorth> and what is 'this'?
19:06:13  <_dp_> frosch123, huh? where? we basically wrote the same thing xD
19:06:27  <andythenorth> seems that nerfing cargo aging just enforces a play style of requiring certain wagons?
19:06:31  <snail_UES_> frosch123: from what you wrote above, I seem to understand we should have “MIN_TIME_FACTOR” to be vehicle-specific...?
19:06:51  <snail_UES_> which I assume is not as of now?
19:06:58  <andythenorth> snail_UES_ I understand same, different vehicles age differently
19:07:09  <andythenorth> current cargo aging is which factor?
19:07:10  * andythenorth looks
19:07:30  <frosch123> snail_UES_: yes, but you can do a newgrf prototype with current specs
19:07:44  <frosch123> and use the cargo callback to give a greater impact on cargo aging
19:07:46  <andythenorth> "modify the period in ticks after which cargo carried by the vehicle is aged" default 185
19:09:56  <frosch123> hmm, in all cases, this mostly works by punishing the default vehicles, so will result in controversy :p
19:10:04  <frosch123> so, better to only make newgrf do the changes :)
19:14:33  <frosch123> which means, making vehicle grf affect MIN_TIME_FACTOR does not work.
19:15:08  <snail_UES_> andythenorth: what I found when I tested cargo aging, was that values higher than 185 had a very limited impact on revenue. However, values smaller than 185 could decrease revenue significantly
19:15:12  <frosch123> you cannot add a bonus to some vehicles. you first have to nerf default vehicles
19:15:34  <snail_UES_> so, current cargo aging works as a penalty for certain vehicle, but does not work as a reward for others
19:15:58  <frosch123> yes, the default vehicles already max out the bonus :)
19:16:14  <frosch123> you can use the cargo-callback to change that
19:16:18  <SpComb> I'm having trouble understanding how people can stand to play with the default breakdown settings :X
19:16:30  <frosch123> but you can't change vanilla, or the baldy's of this world will hunt you down :p
19:16:52  <SpComb> trains suddenly deciding that they need to service at the nearest depot on a random branch line, and then getting lost because there's no way back to where they were supposed to be going
19:16:53  <andythenorth> FIRS could do it, but then I break all non-adjusted vehicle sets
19:17:12  <snail_UES_> frosch123: so the best way to use cargo aging, is to treat luxury coaches as default, and punish local coaches…
19:17:22  <andythenorth> snail_UES_ that's the current approach yes/no?
19:17:32  <frosch123> snail_UES_: no, you really need to use the cargo aging callback
19:17:47  <andythenorth> ...which only the industry set can do...
19:18:16  <snail_UES_> hmm. So far I’ve used cargo aging as part of CB36
19:18:27  <frosch123> s/cargo aging callback/cargo payment callback/
19:18:28  <andythenorth> I can trivially branch FIRS for this, but I don't know what formula I need
19:18:52  <andythenorth> I am much more interested in the simple multiplier as a separate concern
19:19:03  <andythenorth> but we need to work through this properly, like we did with map gen
19:20:28  <TrueBrain> seems 3000 players online is a bit our tab
19:20:33  <TrueBrain> has been pretty steady for the last few hours :P
19:20:55  <andythenorth> \o/
19:20:56  <_dp_> wait, where is cargo age period clamped? looks uint16 to me...
19:20:57  <snail_UES_> andythenorth: my current approach is use the default value of 185 for mixed 1st/2nd class coaches. Then I have 350 for 1st class and 600 for luxury. 2nd class and below get lower numbers
19:21:38  <andythenorth> snail_UES_ this is all for narrow gauge trains with low speeds?
19:21:59  <spnda> Important question, is DrawWidget for any Widget called every frame or just once to build it?
19:22:25  <snail_UES_> yes, I ran my test over a distance of 55 tiles at 45 km/h for 20 passengers
19:22:33  <frosch123> oof... okay nevermind, the cargo payment callback is just oof
19:22:52  <snail_UES_> and tested cargo agings from 20 to 1475 with (initially) intervals of 5
19:22:57  <andythenorth> snail_UES_ I have 56 for default pax coaches
19:23:07  <_dp_> you can't quite nerf adequately with cargo aging because of cargo payment rates but rewarding should be fine
19:23:18  <andythenorth> _dp_ I disagree
19:23:36  <andythenorth> rewarding does precisely FA observable effect on a 64 tile route
19:23:39  <snail_UES_> andythenorth: you can run a similar test with your trains :p
19:23:51  <andythenorth> snail_UES_ I ran several days of tests already
19:24:02  <andythenorth> my conclusion is that it's all a waste of time
19:24:03  <snail_UES_> nice, did you write a table with the results?
19:24:06  <andythenorth> no
19:24:14  <andythenorth> 1 line: it's a waste of time
19:24:25  <andythenorth> it's absolutely and completely pointless IMHO
19:24:37  <andythenorth> there are too many confounding factors
19:24:41  <_dp_> andythenorth, idk, 64 tiles is like nothing
19:24:52  <snail_UES_> well, you can keep all the other elements constant
19:24:57  <andythenorth> _dp_ another vote for pointless
19:25:12  <andythenorth> you can keep the elements constant in a test
19:25:19  <andythenorth> you can't keep the elements constant in a game
19:25:22  <_dp_> cargo aging basically scales payment rates on x axis
19:25:34  <andythenorth> train speeds and capacity per tile increase
19:25:42  <andythenorth> which means junction clearance and delays reduce
19:25:46  <_dp_> so if your rates are about the same it does nothing
19:25:57  <_dp_> but if they change significantly there should be an effect
19:25:59  <andythenorth> loading speeds vary
19:26:04  <andythenorth> cargodist varies
19:26:10  <andythenorth> the amount of transfers varies
19:26:14  <andythenorth> towns grow and shrink
19:26:20  <andythenorth> players use daylength
19:26:33  <andythenorth> players have wildly differing views of what is 'short' and 'long'
19:26:56  <snail_UES_> all this shouldn’t stop us from trying to have 1st class coaches earn more than 2nd class over long distances :p
19:27:10  <andythenorth> you can already do that
19:27:15  <andythenorth> you just nerf the 2nd class
19:27:21  <andythenorth> then LC shows up and proves you did it wrong
19:27:34  <andythenorth> what is a 'long distance'?
19:27:49  <andythenorth> we're trying to define dimensions on something that's effectively dimensionless
19:28:10  <andythenorth> oh for extra lolz, FIRS messes with pax payment rates, and I can't fix it
19:28:43  <andythenorth> practically speaking, why should 1st class earn more than 2nd class over long distance? :)
19:28:48  <TrueBrain> we clearly entered the age of LC
19:28:58  <andythenorth> LC is a plague on all our houses
19:29:32  <andythenorth> it's very hard to argue with someone who has gone to the effort of providing a detailed and comprehensive savegame showing all the ways you (me) fucked up again
19:29:41  <andythenorth> it's kind of rude to not respect the effort
19:30:50  <frosch123> respect it by buying more popcorn?
19:30:59  <snail_UES_> andythenorth: comfort? it’s better to sit in a luxury coach than in a subway car if I have to stay there for multiple hours
19:31:09  <andythenorth> snail_UES_ but the payment-per-mile changes?
19:31:19  <andythenorth> 1st class costs more to go further, above some threshold?
19:31:42  <andythenorth> I think what you are looking for is occupancy factor, not payment
19:31:51  <andythenorth> if next hop is n tiles, prefer this vehicle
19:31:52  <_dp_> idk, I just tldr most of lc's posts xD
19:32:14  <andythenorth> snail_UES_ if you could rank vehicles in order of preference for loading available cargo?
19:32:24  <andythenorth> so 1st class always fills first?
19:32:31  <_dp_> they're usually so offtopic he may as well discuss weather on mars
19:34:11  * andythenorth looks how stations assign cargo to vehicles
19:35:56  <snail_UES_> andythenorth: probably wouldn’t work if 1st and 2nd class cars shared the same vehicle ID
19:36:07  <andythenorth> if they did what now? :)
19:37:48  *** qwebirc33654 has joined #openttd
19:37:49  <andythenorth> are you supporting TTDPatch? :)
19:40:29  <_dp_>
19:40:29  <snail_UES_> no, but I hate having a cluttered purchase list
19:40:40  <_dp_> I think I already posted it at some point though
19:40:57  <_dp_> but they start the same and end the same, but peak differently
19:41:35  <_dp_> lowering period doesn't rly go well but extending it should work in theory
19:43:14  *** qwebirc33654 has quit IRC
19:43:17  <_dp_> also logically speaking that point of switching to flat line should be beyond the map size
19:43:27  <_dp_> which is gg because every cargo has it in different spot xD
19:44:05  <_dp_> oh, every consist, not just cargo xD
19:58:46  <spnda> How the hell did std::max<unsigned char> take 1.173 seconds?
20:00:35  <spnda> This one to be exact
20:01:09  <milek7> debug build?
20:01:18  <spnda> ah yes could be it
20:01:40  <spnda> still surprising, as its the 3rd longest taking function in the whole game
20:08:03  <milek7> performance of stdlib-template monsters on unoptimized builds might be bad
20:08:08  <milek7> maybe it's zero cost abstraction, but not on debug :P
20:08:44  <milek7> and apart from that, it's inside hot loop in rendering code anyway, and I'm not sure how accurate is sampling on instruction-level on modern cpus
20:09:31  <milek7> ie. if multiple instructions are in flight, it has to pick something
20:09:51  <glx> <spnda> Important question, is DrawWidget for any Widget called every frame or just once to build it? <-- every time they are drawn IIRC, but not every frame (unless the window is constantly marked dirty)
20:18:49  <spnda> ok thanks
20:19:36  <spnda> nevertheless, used some profiling to find some caveats and O(n^2) stuff that I might be able to "improve"?
20:19:45  <andythenorth> frosch123 so GetTransportedGoodsIncome seems a long way from any vehicle scope?  For a multiplier, it would need the multiplier passed along as a parameter somewhere?
20:19:47  * andythenorth out of depth
20:19:52  <spnda> if not I'll try to put the stuff on other threads
20:21:49  *** Gustavo6046 has quit IRC
20:25:00  <frosch123> andythenorth: i am doing some excel currently, then i am going to disagree with everyone :)
20:25:36  <DorpsGek> [OpenTTD/OpenTTD] giordy opened issue #8940: Background music doesn't play
20:25:42  * andythenorth such excite
20:25:47  <andythenorth> hope there will be charts
20:30:50  *** Zuu has joined #openttd
20:35:32  <frosch123>
20:35:58  <frosch123> main difference to other plots: i show cargo income per time, not per trip
20:36:13  <glx> andythenorth: maybe you can check #8940
20:36:18  <frosch123> a faster vehicle will do multiple trips in the same time, so income per trip is silly
20:37:10  <frosch123> in my example: cargo age actually does not max out for 50 km/h average over 500 tiles
20:37:41  <frosch123> time factor is clamped for the 50 km/h curves at about 400 tiles, you can see the bend
20:38:09  <frosch123> luxurypax has double the cargo aging period compared to pax, the rest are default cargos
20:38:20  <frosch123> so, imo cargo aging and payment works well
20:38:39  *** Gustavo6046 has joined #openttd
20:38:43  <frosch123> unless you have huge distance > 400 tiles at low average speed < 50 km/h
20:38:58  *** Gustavo6046 has quit IRC
20:39:30  <frosch123> of course all my numbers could be wrong :)
20:39:31  *** Gustavo6046 has joined #openttd
20:40:07  <_dp_> frosch123, isn't that just cargo payment rates as game shows?
20:40:16  <_dp_> well, different y scale but the same chart
20:40:46  <frosch123> possible, i have no idea what the game plots :)
20:41:16  <_dp_> it literally plots what it says above the chart
20:42:02  <_dp_> but since you don't take acceleration into account you get the same chart shape :p
20:42:04  <frosch123> in-game has fixed distance, variable speed
20:42:10  <frosch123> i have fixed speed, variable distance
20:42:30  <frosch123> _dp_: i also do not consider signals, and loading times
20:42:33  <frosch123> just average speed
20:42:57  <_dp_> if you count acceleration you'll get my charts :p
20:43:23  <frosch123> your charts showed income per trip, didn't they?
20:43:40  <_dp_> they have several chart types
20:44:14  <_dp_> yours equals yearly income I guess
20:44:46  <frosch123> so, why do people claim that long distances are better for profit?
20:45:25  <_dp_> because yearly income only matters when you're limited on trains
20:45:40  <_dp_> usually you're limited on cargo so profit per cargo matters more
20:45:58  <_dp_> and that goes to infinity when payment hits min bound
20:46:24  <frosch123> so running cost are too low :p
20:46:53  <_dp_> running cost is just flat value
20:47:22  <frosch123> they scale per vehicle
20:47:37  <_dp_> well, yeah, I guess it does smth for unlimited vehicle case
20:47:59  <_dp_> it's so low that I never rly thought much of it
20:48:05  <frosch123> so if you put running cost at 0.3 per day for 50km/h you will make a loss at > 150 tiles?
20:48:51  <frosch123> @calc 0.3*365*10*30
20:48:51  <DorpsGek> frosch123: 32850
20:49:19  <frosch123> ok, that would be for 10 wagons with 30 units each.
20:49:40  <frosch123> so running cost are factor 20 too low :p
20:51:26  <frosch123> andythenorth: i conclude, the problem are running cost :)
20:51:54  <frosch123> they are too low to keep the cargo payment in the interesting range
20:52:06  <frosch123> people can just max out the range, and not bother about running cost
20:53:04  <frosch123> andythenorth: do you want to try to x20 the running cost, and /20 the purchase cost in iron-horse?
20:53:52  <frosch123> that should make travel times relevant, and thus make cargo-aging-period relevant
20:55:10  <_dp_> x20 costs:
20:56:12  <frosch123> what's the difference between left and right?
20:57:04  <_dp_> left default rigth x20 running cost
20:57:14  <_dp_> and, yeah, that kinda works
20:58:36  <_dp_> ah, no, I x20'ed it in the wrong place
21:02:17  <_dp_> fixed:
21:02:47  <FLHerne> The graphs are getting steadily weirder, I see
21:02:48  <_dp_> still a bit of increase so needs a bit more than x20 I guess
21:06:07  <_dp_> there is some bug with the chart drawing though so values on axes may be off, but general shape should be correct
21:06:53  <frosch123> even at x20, the value at 8k distance is way below the maximum
21:07:24  <spnda> I will thanks rubidium for this beautiful line in a constructor: memset(this, 0, sizeof(*this));
21:07:24  <milek7> so long routes should be unprofitable? why?
21:07:56  <frosch123> milek7: only long routes with slow vehicles
21:08:05  <_dp_> not unprofittable, just less optimal, at least the way I see it
21:08:35  <frosch123> the maximum should be in the middle and depend on vehicle speed and stuff
21:09:11  <frosch123> if maximum profit is at maximum distance, there are less vehicle options
21:10:30  <_dp_> and in general leads to stupid map usage as you just make 2 diagonals
21:11:17  <andythenorth> frosch123 "do you want to try to x20 the running cost, and /20 the purchase cost in iron-horse" no :)
21:11:38  * andythenorth was afk, reads back
21:11:38  <frosch123> basecost grf it is then :p
21:11:58  <andythenorth> I never understood the 'travel further, pay more' claim
21:12:06  <andythenorth> I know _dp_' charts show it, but eh
21:13:07  <_dp_> everything shows it, even if you just look at the formula
21:13:23  <_dp_> my charts at least showed there is a local max in between :p
21:14:29  <frosch123> the max for 20x is actually that much lower than the default one. so you do not even need /20 purchase cost
21:15:01  <frosch123> just /2 purchase cost is good enough
21:15:06  <andythenorth> frosch123 can I stick with my conclusion 'trying to balance for cargo aging is a waste of time'? :D
21:15:10  <andythenorth> or do we disagree?
21:16:02  <_dp_> x20 running costs though can potentially be disasterous for less-than-optimal routes
21:16:22  <andythenorth> x20 running costs would be lol, players already report they can't use Iron Horse profitably
21:16:32  <andythenorth> but as a nice experiment...
21:16:39  <andythenorth> ...I could ship it
21:17:03  <frosch123> andythenorth: x20 compared to default vehicles
21:17:08  <andythenorth> ah
21:17:19  <frosch123> i have no idea how iron-horse engines compare to default vehicles in power and cost
21:17:25  <andythenorth> well default wagons don't have run costs?
21:17:27  <_dp_> yeah, horse may need some other cost factor
21:17:28  <andythenorth> hmm
21:18:04  *** Samu has quit IRC
21:19:53  <andythenorth> engine similar to SH 40 is £22870 run cost in Horse
21:20:04  <andythenorth> £3843 for SH 40
21:20:20  <andythenorth> so ~6x default run cost
21:20:55  <frosch123> so only 3x to go :)
21:21:08  <andythenorth> it is making £369k/year on [some route with arbitrary contributing factors]
21:21:19  <andythenorth> the amount per year bounces around a lot
21:21:27  <andythenorth> transfers and things
21:21:54  <andythenorth> so it would still make money at £70/year
21:21:59  <andythenorth> £70k/year
21:22:25  <frosch123> yes, at optimal distance, only very little changes
21:22:39  <andythenorth> I don't really understand the goal of forcing payment rates via the train grf
21:22:46  <andythenorth> seems very ... not a thing
21:22:55  <andythenorth> (payment rates over distance)
21:23:04  <andythenorth> is it about 'planes are OP' or something?
21:23:26  <andythenorth> I just want to have some low capacity vehicles that pay higher per unit cargo transported
21:23:40  <andythenorth> but they take more tiles, so that's a minor grief
21:23:53  <andythenorth> and they look nice
21:24:16  <andythenorth> I couldn't care less about forcing people to choose the 'correct play style'
21:24:22  <frosch123> no, the point is: default payment rates already have a sane optimium for profit (payment/time). but that optimum only works if you have infinite cargo supply and finite amount of trains
21:24:26  <spnda> I'm surprised I actually made this quite a lot slower by optimizing this
21:25:18  <frosch123> by increasing the running cost, you remove the option for "infinite number of trains", so there is a meaningful optimum for distance for each train generation
21:26:00  <andythenorth> ha
21:26:12  <andythenorth> I suspect that's the opposite of a goal I am pursuing
21:26:23  <andythenorth> I spend most of my time trying to make things nearly-level
21:26:33  <frosch123> <- andythenorth: basically, cargo aging works in the middle of the chart
21:26:39  *** snail_UES_ has quit IRC
21:27:04  <frosch123> but too low running cost allows players to ignore the chart, use the right-most value, and just increae the number of trains to make more profit
21:27:10  *** snail_UES_ has joined #openttd
21:33:14  *** Dwight has joined #openttd
21:33:30  <Dwight> hi, I have another question
21:33:48  <andythenorth> frosch123 so...this is good, bad, or indifferent? :)
21:34:05  <Dwight> what's the difference between far end, middle and near end?
21:34:14  <Dwight> for trains
21:34:30  <frosch123> andythenorth: you and snail complained that cargo-aging is pointless. the answer is: it's only pointless if running-cost are insignificant
21:34:52  <frosch123> Dwight: use a train that is shorter than the platform, then just try it
21:35:09  <Dwight> oh
21:35:15  <Dwight> that's what it meant
21:35:20  <snail_UES_> frosch123: what’s the connection with running costs?
21:35:32  <andythenorth> snail_UES_ charts in the logs
21:35:44  <andythenorth>
21:36:06  <andythenorth> ok so now we have facts, not opinions?
21:36:42  <DorpsGek> [OpenTTD/OpenTTD] smsm1 commented on issue #8935: Crash on save on macOS
21:37:51  <spnda> im really amazed that I made this SOOOOOOOO much slower
21:37:55  <DorpsGek> [OpenTTD/OpenTTD] andythenorth commented on issue #8940: Background music doesn't play
21:38:26  <milek7> spnda: ?
21:39:18  <spnda> just wanted to optimize some stuff regarding network content and the window now renders at like 0.1fps because there is so much overhead
21:41:19  <milek7> content fetching needs to be moved to separate thread, probably
21:41:45  <spnda> yeah wanted to do that after I change some stuff just to test how things turn out to be
21:41:53  <spnda> and it made things extremely bad
21:43:29  <andythenorth> let's see if I can set up cargos for instant aging
21:43:38  <andythenorth> I think I looked at that before and it's not possible
21:43:59  <snail_UES_> so the conclusion is, lower purchase costs, raise running costs?
21:44:13  <snail_UES_> my 1st class coaches already have a higher running cost than 2nd class coaches…
21:44:35  <andythenorth> maybe I can set cargo prop 0 to something silly
21:44:38  <snail_UES_> i.e. more care needed to clean it up
21:46:04  <frosch123> snail_UES_: for default vehicles running cost should be 20x higher. purchase cost could be lowered by 2x to 4x in return
21:46:45  <_dp_> I'll probably disagree on lowering purchase cost
21:46:59  <frosch123> i.e. if you play good, you can make equally good profit as before, and don't need much purchase cost compensation
21:47:10  <frosch123> but if you play bad, it will make a huge impact :p
21:47:12  <_dp_> but incresing running cost does seem like a possible solution, however wrong it may seem at first
21:47:29  <andythenorth> if it's a solution, what was the problem again?
21:47:36  * andythenorth considers a gist
21:47:49  * andythenorth tries negative prop 10 and 11
21:47:56  <frosch123> andythenorth: the problem was "vehicle choice does not matter" :p
21:48:05  <andythenorth> oh
21:48:15  <andythenorth> yeah, I'm trying to achieve 'vehicle choice does not matter'
21:48:27  <andythenorth> so we have disagreeing goals in the channel :)
21:48:48  <frosch123> why did you join the discussion on cargo-aging? :p
21:48:48  <andythenorth> "Action 0 property too small" can't have -ve cargo prop 10 and 11 then
21:48:50  <_dp_> idk, my problem is mostly that optimal distance increases infinitely xD
21:48:56  <_dp_> but it may solve smth else as well
21:49:00  <andythenorth> frosch123 the discussion sort of evolved
21:49:18  <andythenorth> one of us here proposed a simple multiplier per vehicle
21:49:30  <andythenorth> and then it descended into 'forcing players to play the way the grf author wants'
21:49:34  <andythenorth> or so :)
21:50:18  <frosch123> you read too much forums
21:50:35  <andythenorth> and steam, and discord
21:50:38  <andythenorth> and even....reddit!
21:52:10  <andythenorth> I did consider exporting the FIRS cargo payment values to Iron Horse
21:52:18  <andythenorth> then copying the payment algorithm in
21:52:27  <andythenorth> then calculating days since last loaded, which we might have a var for
21:52:33  <frosch123> there are two routes for you: the game shall challenge the player to find profitable routes dependnig on the available vehicle stats and cargo supply. or you can play sandbox, but then you don't need more multipliers
21:52:34  <andythenorth> then adjusting the running costs
21:52:35  *** FLHerne has quit IRC
21:53:47  <andythenorth> in which case all pax vehicles should just be same cost + capacity
21:53:51  * _dp_ still thinks andythenorth is chasing clouds
21:53:56  <andythenorth> and the appearance is just the appearance
21:54:16  <snail_UES_> andythenorth: I proposed a simple multiplier per vehicle. But due to the shape of the cargo payment rate, we thought it’d be more effective to include the distance traveled in the calculation
21:54:27  <andythenorth> yeah I'm lost in all that TBH :)
21:54:28  <snail_UES_> and we expanded that concept :p
21:54:39  <andythenorth> I still don't know why that would be a thing :)
21:54:43  <andythenorth> it's very confusing
21:54:48  <andythenorth> but it seems to be important
21:54:53  <snail_UES_> “that”, what?
21:55:17  <andythenorth> I don't understand what distance travelled has to do with vehicle set author
21:55:21  <andythenorth> it's the player's business no?
21:55:54  <snail_UES_> a simple multiplier would always allow 1st class coaches to get a higher profit than 2nd class
21:55:59  <milek7> huh, twitch banned Revision
21:56:00  <andythenorth> I don't really play for profit or anything
21:56:14  <snail_UES_> however, the advantage of 1st class is that it’s more comfy for long-distance travel
21:56:31  <andythenorth> yes but the game can't define 'long-distance'
21:56:39  <andythenorth> this seems a bit circular TBH :)
21:56:52  <snail_UES_> that’s why I proposed to compute it as number of tiles traveled / size of map
21:57:12  <andythenorth> but then you need to scale all the vehicle speeds also
21:57:15  <snail_UES_> so at least long-distance would be defined “relative to the map"
21:57:26  <andythenorth> @calc 4096 / 64
21:57:26  <DorpsGek> andythenorth: 64
21:57:34  <andythenorth> hmm I dunno
21:57:36  <snail_UES_> not necessarily...
21:57:41  <andythenorth> I think I just delete these vehicles and move on
21:57:54  <andythenorth> as usual, trying to expand the newgrf spec is fairly futile :)
21:58:00  <snail_UES_> vehicle speed is fixed, because it’s embedded in the scale of the map
21:58:06  <snail_UES_> the scale never changes
21:58:07  <andythenorth> we should do a livestream about modding
21:58:17  *** virtualrandomnumber has joined #openttd
21:58:32  *** virtualrandomnumber has quit IRC
21:58:40  <snail_UES_> andythenorth: ok, you might not be interested in it. But maybe others are
22:00:04  <andythenorth> but that doesn't need spec change, frosch123 charts show how to achiever that result
22:00:11  <andythenorth> you just increase running cost 20x or so
22:00:39  <andythenorth> you'll need to scale by vehicle speed
22:00:50  <andythenorth> and decide which generations of trains are profitable, and which are unplayable
22:00:59  <andythenorth> due to speed increases over time
22:04:02  <andythenorth> snail_UES_ alternative proposal, just have 1st and 2nd class passenger cargos
22:04:07  <andythenorth> with different payment rates
22:04:10  *** Kitrana has quit IRC
22:04:16  <andythenorth> seems much cleaner
22:05:00  <andythenorth> then a very cheap industry type 'passenger transformer', which player can place at each station
22:05:07  <andythenorth> so you don't need 1st and 2nd class buses or trams
22:05:51  <andythenorth> maybe 'passengers' for buses and trams
22:06:05  * frosch123 runs
22:06:08  *** frosch123 has quit IRC
22:06:08  <andythenorth> then they get transformed into 1st, 2nd and 3rd by the special industry
22:06:09  <snail_UES_> George did something similar, by including “tourists"
22:06:29  <andythenorth> nah that never worked
22:06:30  <andythenorth> just confusing
22:06:38  <andythenorth> that was just for the castle
22:06:44  <andythenorth> this would be different
22:06:44  <snail_UES_> why? I like it, it’s fun to play with it
22:06:54  <snail_UES_> you get tourist centers, and can build dedicated lines
22:07:05  <andythenorth> hmm
22:07:34  <snail_UES_> any I drew special liveries in my set just for those
22:07:36  <andythenorth> anyway I think I just delete the different kinds of passenger car in Iron Horse
22:07:45  <andythenorth> the conclusion is pretty clear
22:08:17  <andythenorth> and the luxury railcars
22:08:22  <andythenorth> and the restaurant cars
22:08:40  <snail_UES_> maybe make them visually-different alternatives?
22:08:43  <andythenorth> and the refrigerated cars and livestock cars
22:08:50  *** sla_ro|master has quit IRC
22:10:11  <andythenorth> and the cryo tankers and edibles tankers
22:10:53  <andythenorth> actually the wagons can stay, just remove cargo aging adjustment
22:11:40  <andythenorth> so how much capacity should a pax car have if there's only one type?
22:12:16  *** Kitrana has joined #openttd
22:12:25  *** andythenorth has quit IRC
22:17:13  <DorpsGek> [OpenTTD/OpenTTD] michicc commented on issue #8935: Crash on save on macOS
22:30:28  *** iSoSyS has joined #openttd
22:37:11  *** Dwight has quit IRC
22:44:47  <DorpsGek> [OpenTTD/OpenTTD] giordy commented on issue #8940: Background music doesn't play
22:44:50  <DorpsGek> [OpenTTD/OpenTTD] giordy closed issue #8940: Background music doesn't play
22:48:09  *** supermop_Home has quit IRC
23:15:08  *** gelignite has quit IRC
23:22:32  *** Wolf01 has quit IRC
23:25:38  *** Henrique has joined #openttd
23:31:04  *** didac has quit IRC

Powered by YARRSTE version: svn-trunk