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 https://git.io/JYPk3 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 https://git.io/JYPmJ 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 https://git.io/JYXtv 07:35:11 <DorpsGek> [OpenTTD/OpenTTD] andythenorth commented on issue #8935: Crash on save on macOS https://git.io/JYXtv 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> https://steamuserimages-a.akamaihd.net/ugc/1736675300472270346/AD3F6D62C03EAF9AD1A55E8D234C9939010ABA27/ 08:33:05 <TrueBrain> like, is that the same game?! 08:33:37 <andythenorth> it is! 08:35:46 <andythenorth> https://www.impericon.com/media/catalog/product/4/0/4050538349498-8005-0600px-001_lg.jpg 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 https://git.io/JYX84 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> https://steamuserimages-a.akamaihd.net/ugc/1713031390938838442/6D7B6116FE52086913D2B19898A87E1F4E7DB319/ 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> https://0x0.st/-crJ.jpg 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 https://github.com/ddm999/OpenTTD/tree/steamworks 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 https://git.io/JYX4b 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> https://www.youtube.com/watch?v=_6Sv9UJK3HQ 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> https://0x0.st/-crv.jpg 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 www.openttd.org/contact.html instead 08:53:20 <andythenorth> 'find us on steam'? :) 08:53:28 <nielsm> with spacing: https://0x0.st/-crw.png 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 https://git.io/JYXRz 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> https://0x0.st/-crx.png 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> https://hg.icculus.org/icculus/steamshim/file hmm 09:04:25 <TrueBrain> LordAro: what am I looking at? 09:04:32 <nielsm> https://0x0.st/-crY.png sprite font 2x --- https://0x0.st/-crg.png 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 https://git.io/JYXEq 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 https://0x0.st/-cr6.png 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: https://www.gnu.org/licenses/gpl-faq.html#GPLPlugins 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 https://git.io/JeBQt 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 https://git.io/JYXuR 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: https://github.com/OpenTTD/OpenTTD/blob/master/CMakeLists.txt#L310 <- 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 https://git.io/JYXzR 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 https://partner.steamgames.com/doc/sdk/uploading/distributing_opensource, 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> https://github.com/OpenTTD/OpenTTD/tree/master/os/emscripten 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> https://0x0.st/-cr7.png 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 https://github.com/OpenTTD/OpenTTD/issues ? 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 https://git.io/JeBQt 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 https://www.gnu.org/licenses/gpl-faq.en.html#MereAggregation 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 https://www.gnu.org/licenses/gpl-faq.html#LinkingOverControlledInterface 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 https://www.gnu.org/licenses/gpl-faq.html#MereAggregation 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 https://git.io/JeBQt 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> https://open.spotify.com/user/ludde 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 https://steamcommunity.com/app/1536610/discussions/0/3076496088117199217/ 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 https://git.io/JYXMK 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> https://partner.steamgames.com/doc/features/cloud 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: https://gist.github.com/LordAro/f36be42d6af0fac088854bce7651a476 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: https://gist.github.com/TrueBrain/bccb44cf813cb556613dcb89889bd357 <- 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 https://www.openttd.org/downloads/openttd-releases/latest.html or https://www.openttd.org/downloads/opengfx-releases/latest.html 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> https://github.com/OpenTTD/BaNaNaS/ 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. https://gist.github.com/TrueBrain/bccb44cf813cb556613dcb89889bd357#possibly-approaches 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> https://user-images.githubusercontent.com/1663690/113479162-aeddc080-948d-11eb-9567-c12e5bde5f06.png 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: https://www.youtube.com/watch?v=M96VjKihxNc 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 https://git.io/JYiPm 13:49:23 <DorpsGek> [OpenTTD/OpenTTD] Bmo006 opened issue #8937: Ships saying they are lost https://git.io/JY1Ze 13:49:26 <DorpsGek> [OpenTTD/website] TrueBrain commented on pull request #204: Add: Announcement for April 9 livestream https://git.io/JY1Zv 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 https://git.io/JY1Za 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 https://git.io/JY1ZX 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> https://partner.steamgames.com/doc/api/ISteamNetworking btw for networking 13:57:12 <TrueBrain> https://partner.steamgames.com/doc/sdk/api <- 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 https://git.io/JYXMK 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> https://partner.steamgames.com/doc/api/ISteamFriends#GameRichPresenceJoinRequested_t 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 https://git.io/JYXtv 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> https://luajit.org/ext_ffi.html 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> https://github.com/pfalcon/squirrel-modules 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 https://git.io/JYXtv 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, "127.0.0.1:3978") 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 https://git.io/JY1BF 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 https://git.io/JY10F 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 https://git.io/JYiPm 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 https://git.io/JY1gO 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 https://registry-1.docker.io/v2/library/python/manifests/sha256:8c5882377911c49a538acb1a51551de40fbb699dc891a6ac6c8c7d0f93530c10: 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 https://git.io/JY1VW 15:21:19 <DorpsGek> [OpenTTD/OpenTTD] 2TallTyler reopened pull request #8688: Feature: Hide block signal GUI by default https://git.io/JtDJs 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 https://therecord.media/github-investigating-crypto-mining-campaign-abusing-its-server-infrastructure/ 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 https://git.io/JY1Ze 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 https://git.io/JeBQt 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 https://git.io/JeBQt 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 https://git.io/JY1ST 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 https://git.io/JY1HG 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 https://git.io/JtDJs 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 https://github.com/andythenorth/polar-fox/blob/master/src/graphics/piece_cargos/steel_slab_1.png https://github.com/andythenorth/polar-fox/blob/master/src/graphics/piece_cargos/ingots_1.png 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 https://git.io/JYXtv 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 https://git.io/JY1xn 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 https://git.io/JY1xw 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 https://git.io/JY1pm 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? https://newgrf-specs.tt-wiki.net/wiki/Callbacks#Custom_profit_calculation_for_cargoes_.2839.29 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 https://pastebin.com/t6KuCums 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 https://git.io/JY1hQ 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 https://git.io/JYiPm 17:54:18 <DorpsGek> [OpenTTD/website] TrueBrain merged pull request #203: Fix: Typo in screenshot description https://git.io/JYwyF 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 https://git.io/JeBQt 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 https://git.io/JYMer 18:04:38 * andythenorth wonders what vars are actually in scope for cb39 18:05:00 <andythenorth> https://newgrf-specs.tt-wiki.net/wiki/VariationalAction2/Cargos "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> https://www.twitch.tv/directory/game/OpenTTD <- 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> https://www.twitch.tv/directory/game/Transport%20Tycoon <- 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: https://www.igdb.com/games/openttd <- 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> https://github.com/twitchtv/igdb-contribution-guidelines/wiki 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> https://wiki.openttd.org/en/Community/Community <- 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> https://www.igdb.com/games/openttd/changes <- 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" https://i.imgur.com/sSQ19uE.png 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? https://newgrf-specs.tt-wiki.net/wiki/Action0/Cargos#Penalty_times_and_price_factor_.2810.2C11.2C12.29 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_> https://i.imgur.com/IYo8QN4.png 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 https://github.com/OpenTTD/OpenTTD/blob/master/src/blitter/32bpp_sse2.cpp#L83 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 https://git.io/JYMnP 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> https://raw.githubusercontent.com/frosch123/quaking/main/cargopayment_per_time.png 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: https://i.imgur.com/tn37oRu.png 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: https://i.imgur.com/EVERGWi.png 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> https://raw.githubusercontent.com/frosch123/quaking/main/cargopayment_per_time.png <- 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> http://webster.openttdcoop.org/?channel=openttd&date=1617408000 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 https://git.io/JYXtv 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 https://git.io/JYMnP 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 https://git.io/JYXtv 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 https://git.io/JYMnP 22:44:50 <DorpsGek> [OpenTTD/OpenTTD] giordy closed issue #8940: Background music doesn't play https://git.io/JYMnP 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