IRC logs for #openttd on OFTC at 2025-02-01
β΄ go to previous day
00:00:38 *** HerzogDeXtEr has quit IRC (Read error: Connection reset by peer)
03:20:45 *** Wormnest has joined #openttd
03:22:09 *** gnu_jj_ has joined #openttd
03:25:26 *** gnu_jj has quit IRC (Ping timeout: 480 seconds)
03:32:51 *** Wormnest has quit IRC (Quit: Leaving)
04:05:50 *** debdog has quit IRC (Ping timeout: 480 seconds)
04:17:44 *** D-HUND is now known as debdog
04:42:04 <DorpsGek> - Update: Translations from eints (by translators)
06:00:34 *** Webster has joined #openttd
07:40:08 <andythenorth> Oof my GPT generated Horse code may not be GPL compliant
07:43:15 <andythenorth> that's irritating
07:52:32 *** HerzogDeXtEr has joined #openttd
08:06:36 *** peter1138[d] has joined #openttd
08:07:10 <peter1138[d]> That should not have surprised you.
08:09:16 *** Flygon has quit IRC (Read error: Connection reset by peer)
08:16:31 <andythenorth> I did check before incorporating any
08:16:48 <andythenorth> but my check was....the wrong question
08:20:30 <andythenorth> quite irritating, it was a nice feature
08:23:52 <andythenorth> `Ownership of content. As between you and OpenAI, and to the extent permitted by applicable law, you (a) retain your ownership rights in Input and (b) own the Output. We hereby assign to you all our right, title, and interest, if any, in and to Output. `
08:23:54 <andythenorth> is what I checked
08:24:20 <andythenorth> however 'to the extent permitted by applicable law' turns out to be critical
08:24:43 <andythenorth> computer-generated output is not copyrightable
08:24:53 <andythenorth> so I might 'own' it, but I don't have copyright
08:27:16 <_zephyris> Unless you have made transformational changes
08:28:37 <andythenorth> it's unclear from my initial reading what safely counts as 'transformational'
08:29:04 <andythenorth> probably easier for visual art than for code
08:30:34 <Rubidium> you could document the bits of code not falling under GPL
08:31:23 <andythenorth> the conventional case seems to be that machine output is public domain unless some other provision clearly applies
08:31:39 <andythenorth> but 'public domain' is not a license, and not therefore can't directly be copyleft
08:35:40 <andythenorth> I could move all the GPT code into a separate module
08:35:51 <andythenorth> but it's used in the same runtime as the GPL code
08:39:24 *** florafex has joined #openttd
08:39:24 <florafex> andythenorth: well part of the problem is that doesn't really apply - lots of models will happily output 1:1 code under licenses
08:40:37 <andythenorth> I would expect that's covered by copyright law
08:44:04 <florafex> it means you're also at risk of violating licenses
08:44:50 <andythenorth> so there are two problems
08:45:18 <andythenorth> the risk based, somewhat, I'll take my chances, and that's civil law
08:45:48 <andythenorth> punitive damages are unlikely, and anything I've infringed I can probably substitute, thereby complying with cease-and-desist
08:46:18 <andythenorth> the second case, is that I can't use machine output in a copyleft project because there's no license
08:47:15 <andythenorth> possibly CC0 (Creative Commons Zero) can be applied, but I don't see how I could apply that if I'm not the license holder
08:47:54 <florafex> note its not just two seperate things, you end up mixing the two too
08:48:10 <florafex> if i take some of your code that is say, private, release it to the world claiming it's CC0
08:48:16 <florafex> that would be quite the problem
08:48:25 <andythenorth> but that's covered by copyright
08:48:41 <andythenorth> only the rights holder can apply CC0
08:49:09 <andythenorth> well, maybe I have to delete elements of Horse
09:03:37 <andythenorth> the copyright only applies to my modifications, not the public domain (or otherwise unlicensed) parts
09:07:29 <andythenorth> if I use the public domain way *at all* including having read it, or gone through the process of asking GPT to write it
09:08:00 <andythenorth> then I need to do something completely different to produce a novel creative work that I can copyright for GPL
09:08:24 <andythenorth> how does this apply, to, e.g. text books, or reference implementations?
09:10:00 <merni> the solution for those is probably "don't use gpt" :P
09:10:34 <andythenorth> this doesn't surprise me
09:11:21 <merni> but I don't fully understand your reasoning
09:11:37 <merni> for instance if I include some mathematical formula in my project
09:11:43 <merni> Or some public domain data set
09:12:07 <merni> that still means I can license the entire project under GPL, right?
09:12:33 <merni> isn't the whole point of public domain that you can do whatever you want with it?
09:13:06 <merni> you can't claim copyright over that specific bit but I don't see how that matters
09:13:29 <andythenorth> no, GPL is copyleft
09:13:34 <andythenorth> and relies on copyright
09:13:51 <andythenorth> common misconception is that public domain works can be included
09:14:05 <andythenorth> they can if compatibly licensed, such as CCO (some people think)
09:14:33 <andythenorth> but 'public domain' is not a license
09:14:42 <truebrain> merni: be mindful andy is having a puristic conversation. Given nobody has copyright on public domain, nobody can sue you, so how ever you license it, you will be fine π
09:15:03 <merni> I don't see how you could conceivably make any sort of program that doesn't rely on anything that's in the public domain
09:15:36 <andythenorth> FSF wouldn't like it because it undermines GPL
09:15:49 <merni> FSF isn't the regulator of GPL
09:16:17 <andythenorth> a nominally GPL licensed project using PD **isn't ** GPL unless it's clearly some compatible multiple-licensing arrangement
09:17:22 <merni> I wonder if their own software complies with this
09:17:42 <andythenorth> ah I can do it under UK law
09:17:51 <andythenorth> UK Copyright Designs and Patents Act
09:18:03 <merni> now you are starting to make sense :p
09:18:12 <andythenorth> "In the case of a computerβgenerated work, the author of the work shall be taken to be the person by whom the arrangements necessary for the creation of the work are undertaken.
09:18:31 <andythenorth> UK Copyright, Designs and Patents Act 1988 (CDPA) section 9 (3) allegedly
09:19:07 <merni> what were you looking at all this while π
09:20:29 <LordAro> as if that has any relevance /politic
09:20:45 <andythenorth> meta-game solved
09:22:33 <andythenorth> back to GPTHorse
10:10:36 *** virtualrandomnumber has joined #openttd
10:11:02 *** virtualrandomnumber has quit IRC ()
10:53:20 *** kuka_lie has joined #openttd
10:55:45 *** kuka_lie has joined #openttd
12:34:41 <xarick> what do you think of this graph for #13163
12:43:16 <merni> you should probably post it in the PR rather than here where it will get lost :p
13:02:21 <truebrain> Emscripten uses LLVM
13:02:48 <Rubidium> in either case, I find that a really old version for something that was released in April of last year.
13:03:57 <truebrain> It is because Emscripten is weird π
13:04:08 <truebrain> we use libccx LLVM 18.1.2, in our emscripten version
13:06:54 <merni> Very rarely do I miss C, but this is one of those times :p
13:10:15 <merni> Hmm, is regex_replace really the simplest way of replacing one substring with another?
13:10:51 <_jgr_> merni: To be honest I would suggest that you don't use std::regex at all unless you have an extremely good reason
13:11:24 <merni> What I really need is a lot more fixed which doesn't actually need regexes
13:11:45 <merni> But... there seems to be no library function for that :p
13:12:02 <merni> Hmm maybe openttd has one?
13:13:58 <merni> well if there is I can't find it
13:14:03 <_jgr_> You can use std::string's find and then replace?
13:14:22 <merni> That'd need to run in a loop to replace all instances, no?
13:14:35 <merni> I could do that I suppose
13:14:56 <merni> I guess it's a Python mindset to expect string replacement to be abstracted away π
13:15:32 <_jgr_> I expect you'll find it easier to use separate input and output strings
13:15:54 <merni> how does that change things?
13:16:16 <merni> apart from not needing str.replace
13:16:51 <merni> (by which I mean std::string::replace, bah)
13:17:22 <_jgr_> It'd make your loop, iterator management, etc. significantly easier
13:17:42 <merni> could always write back to the same string at the end of the loop
13:18:07 <_jgr_> Though the broader question is what is this actually for
13:18:10 <truebrain> Rubidium: Emscripten really doesn't like it? Awh π¦
13:18:25 <merni> I'm looking at making the Markdown parser in the game understand backslash escapes
13:18:32 <merni> So it works the same as github
13:19:05 <merni> Because right now it's a choice between writing markdown that renders in the game but breaks on github, or markdown that renders on github but shows ugly backslashes in the game
13:20:13 <_jgr_> Is search and replace the correct way to resolve that?
13:20:56 <merni> genuinely asking, I thought it was π
13:23:07 <_jgr_> The meaning of the backslash character inherently depends on its context, which isn't something you can easily handle with a search and replace operation on the document
13:24:54 <merni> Oh crap yes, escaping wouldn't make sense inside a `code block`
13:25:40 <merni> I guess this is why people write 3rd party libraries for this kind of thing π
13:33:13 <merni> Though, our existing markdown reader does use regex to identify links, and presumably would identify anything matching `\\[(.+?)\\]\\((.+?)\\)` even if it occurred inside a code block or something
13:39:28 <_jgr_> The in-game parser does not appear to know about code blocks at all
13:40:06 <_jgr_> What sort of content are you wanting to show that you need to use \ to escape?
13:42:02 <merni> I included the ` character as part of instructions to open the console
13:46:23 <merni> anyway this was only a side-track so doesn't matter mcuh
14:14:59 <Rubidium> truebrain: it's not emscripten that messing things up, it's an old gcc in the docker image that's used for the build tools
14:15:32 <truebrain> as that docker mostly comes from emscripten ..
14:16:32 <truebrain> `ubuntu:jammy` seems to be their base
14:16:36 <truebrain> I always forget what "jammy" is
14:17:44 <_glx_> often it's possible to install more recent than default compiler
14:19:03 <_glx_> but we only needed to do that for clang in 22.04
14:20:05 <_glx_> (our code used to be fine with default 22.04 g++
14:21:54 <truebrain> this is a PR, so by pure definition, it contains new code π
14:22:08 <truebrain> so possibly this PR would also have failed on Ubuntu 22.04 .. but our CI now runs on Ubuntu 24.04 π
14:22:36 <truebrain> Rubidium: basically, that brings the question: is it okay to become GCC 13+? Or do we need to find a clean way to still support GCC 11? π
14:24:14 <truebrain> Ubuntu 22.04 ships with GCC 11
14:24:44 <_glx_> 11.2.0 in package list for gcc and multiple gcc-10
14:25:27 <truebrain> Rubidium: maybe some clever `enabled_if` could make the code GCC11 compatible?
14:25:38 <truebrain> but not sure it is actually important to support GCC 11 π
14:27:00 <Rubidium> it's either enabled_if or concepts, not both
14:27:13 <_glx_> an option could be to switch to clang maybe
14:27:37 <truebrain> _glx_: no, the primary question is: do we still want to support GCC 11
14:27:42 <truebrain> it is not: how do we get Emscripten to pass π
14:28:08 <truebrain> (that follows after the answer to this question π )
14:29:22 <truebrain> I don't even have an idea how many of our developers are on Ubuntu 22.04 π
14:30:38 <truebrain> if we do want to support GCC 11, maybe we should also add that to the nightly CI π
14:30:55 <truebrain> the subtle changes because GitHub upgraded their runners π
14:32:06 <peter1138> #13426 is like Rubidium's already seen my unpushed branch that adds yet more code to support EnumBitSets as settings :-)
14:32:47 <truebrain> The nightly Linux binaries run on GCC 12 btw
14:34:28 <truebrain> `OpenTTD/src/linkgraph/../core/pool_type.hpp:269:53: warning: β**_20.LinkGraph::Pool<LinkGraph, short unsigned int, 32, 65535>::PoolItem<(& _link_graph_pool)>.Pool<LinkGraph, short unsigned int, 32, 65535>::PoolItem<(& _link_graph_pool)>::indexβ may be used uninitialized [-Wmaybe-uninitialized]`
14:34:32 <peter1138> Debian Stable has 11 and 12.
14:34:34 <truebrain> btw, that shows up in Linux Release builds
14:34:50 <peter1138> Yeah, that's basically a bogus warning.
14:35:09 <truebrain> `warning: β((_IO_FILE**)this)[3]β may be used uninitialized` from `saveload.cpp:2298`
14:35:24 <truebrain> lot of warnings, with this GCC 14 compiler π
14:35:56 <peter1138> I think someone (Rubidium or glx) already had a look at these and concluded it was mostly BS.
14:37:30 <truebrain> Rubidium: now that change I would classify as a "workaround" π
14:38:15 <Rubidium> I opened the pantry and only saw hak hak hak hak hak ;)
14:38:24 <truebrain> You can also just run `apt install -y gcc-12`
14:38:28 <truebrain> might be a bit cleaner solution π
14:38:37 <truebrain> but it avoids the actual conversation: do we want to support GCC 11 π
14:38:50 <truebrain> (as your PR would still fail to compile on Ubuntu 22.04 π )
14:39:00 <_glx_> peter1138: yeah it's because we do weird thing when initialising pool items, but index is always correct at this point
14:39:27 <peter1138> Okay, personally I suggest we do not want to support gcc 11. We should look forwards not backwards.
14:39:37 <peter1138> But that's just my opinion :)
14:40:13 <truebrain> always a balance of: how many developers do we leave behind π But I do agree with your opinion π
14:42:41 <truebrain> oof, the language server on vscode doesn't understand that "requires" statement π
14:47:13 <Rubidium> assuming we don't support GCC 10, then debian stable would be fine, debian oldstable didn't have 11 or 12. Ubuntu jammy has 11 (and you can install 12), the LTS before that also doesn't have 11. Other distro's I'm not that familiar with, but aren't the most common one rolling releases?
14:49:15 <truebrain> MinGW also has GCC 14
14:49:56 <truebrain> especially because you can install GCC 12 on 22.04 just fine, it should be just fine
14:50:05 <peter1138> Dare I go food shopping? I'm kinda hungry..
14:50:43 <peter1138> That's always the issue.
14:52:28 <Rubidium> peter1138: leave all electronic payment stuff at home and leave for the shop with a few quid ;)
14:55:03 <truebrain> owh, I guess we don't need `gcc-12`, but only `g++-12`? Owh well
14:55:32 <truebrain> I think it is prettier to have both the same version π
14:56:27 <truebrain> `The CXX compiler identification is GNU 12.3.0`
14:57:08 <truebrain> so now which-user-was-it can complain more about our "modern" compiler requirements for "such an old game" π
14:58:22 <peter1138> Don't think I saw that, unless it was part of the signal 9 stuff that I glossed over.
14:59:03 <truebrain> owh, was a reddit post a while back
15:01:25 <Rubidium> or was it the one complaining we removed "support" for a platform that didn't work a few years due to their aging compilers?
15:01:45 <truebrain> ha, thatone was funny too π
15:02:40 <Rubidium> peter1138: did you already enum-bitset PoolType?
15:05:05 <peter1138> I like that the old code had `C_NONE | C_GENDER`
15:07:47 <peter1138> Right, supermarket run, wish me luck :D
15:36:05 *** Wormnest has joined #openttd
15:46:24 <peter1138> Under 40 minutes, not bad I guess.
16:26:45 <andythenorth> supermarket run time
17:30:52 <peter1138> (I've updated that comment a few times now...)
17:43:19 <peter1138> I wonder if the IntSettingDesc can be updated as well.
17:43:29 <peter1138> So that StrongTypedefBase is not needed at all.
17:43:47 <peter1138> Currently I add EnumBitSetBase to allow that to work there.
17:43:54 <peter1138> But I'd rather not :)
17:44:32 <Rubidium> peter1138: probably. That's a rat's nest though, so I left it out for now to get the framework in.
17:46:45 <Rubidium> likewise with the strongly typed pool IDs, I just pivoted to the simple ones to get the basic framework in. Then the complicated types will be separate PRs
17:49:40 <peter1138> Ok. Then my commit to allow it is still necessary. Fine :)
17:50:37 <peter1138> OverflowSafeInt does have an endian buffer specialisation, but no others that I can see. (Not counting ClampTo.)
17:56:22 <peter1138> `if constexpr (ConvertibleThroughBase<Tdef>) {` seems to be okay.
17:56:50 <peter1138> But I can't use `ConvertibleThroughBase<Tdef>` in the `std::enable_if`. Hmm.
17:59:03 <peter1138> Seems to work if I just remove those, but probably not ideal :)
18:24:56 <peter1138> template <typename T>
18:24:57 <peter1138> concept SettingInt = std::is_convertible_v<T, int32_t> || ConvertibleThroughBase<T>;
18:25:18 <peter1138> template <SettingInt Tdef, SettingInt Tmin, SettingUint Tmax, SettingInt Tinterval> IntSettingDesc(const SaveLoad &save, SettingFlag flags, bool startup, Tdef def,
18:25:38 <Tirili> What's the best solution these days to run OpenTTD on two monitors at the same time? I have one UHD and one 1680x1050 screen, running on Wayland currently.
18:26:02 <peter1138> OpenTTD can only do one scaling at a time.
18:26:30 <peter1138> Maybe Wayland can do scaling itself, but Wayland is generally problematic.
18:27:02 <_glx_> yeah wayland likes to complicates
18:27:05 <Tirili> I read that running one instance of OpenTTD for each monitors and connecting to the same multiplayer server is one "solution".
18:27:34 <_glx_> seems silly, but it indeed should work
18:27:44 <peter1138> Could work. Everything would be complete separate of course.
18:30:59 <_glx_> via the magic of touching source code it could be possible to have a second window
18:31:48 <_glx_> (but not an easy task as openttd assumes there's only one)
18:35:25 <Tirili> if I don't set the UHD-instance to fullscreen, it lags, and if I do, the fUHD-instance is minimized (?) as soon as I click something on the small-instance.
18:35:56 <peter1138> OpenTTD only uses exclusive-fullscreen, so that's pretty normal.
18:36:05 <peter1138> Lagging if it's not fullscreen is a bit weird though.
18:36:23 <peter1138> (Could just be Wayland...)
18:36:24 <Tirili> Alt+TAB gets the instance back, so it could be worse.
18:36:57 <Tirili> I don't have a dedicated videocard, but a Ryzen 4650G Pro
18:38:02 <Tirili> Alright, let me try switching back to X11.
18:38:16 *** Tirili has quit IRC (Quit: Leaving)
18:40:47 <peter1138> Integrated GPUs should be okay.
18:41:03 <peter1138> You might want to fiddle with the Hardware Acceleration option in OpenTTD.
18:41:15 <_glx_> Ryzen integrated are not very good though
18:42:59 <Tirili> The problem with X11 is that I can only set a "global scale" to 150% - not each screen individually.
18:43:19 <_glx_> last time I checked, my ryzen 5 7600X GPU was not really better than my GTS450
18:43:24 <Tirili> When I just ran the game on Wayland, I didn't even use any scaling at all.
18:45:26 *** Tirili has quit IRC (Remote host closed the connection)
18:48:15 *** ChanServ sets mode: +v tokai
18:55:09 <Tirili> Thanks to plasma options, it's possible to remove the border (title bar, etc.) of the small instance.
18:55:20 *** tokai|noir has quit IRC (Ping timeout: 480 seconds)
19:00:20 <Tirili> Playing on reddit server now. Maybe, I can make a friend like this game...
19:00:47 <Tirili> oh wait, this sounds wrong :D
19:01:21 <Tirili> Let me try again: Maybe a friend of mine will like OpenTTD, if I show him what's cool about it.
19:17:00 *** gelignite has joined #openttd
20:04:32 <xarick> need to experiment something about GetOwner and inheritance
20:15:23 <truebrain> and the fact the PR template was skipped didn't bother you? π
20:17:51 <truebrain> `Interestingly, two days before Oracle deleted my account and all servers associated with it, I publicly criticized Oracle's CEO in a viral post for promising dystopian AI surveillance technology to his investors.`
20:20:02 <Rubidium> so... long story short: the "termination team" is an AI, and they got no bloody idea what that AI is doing (as is common with AI)
20:20:40 <truebrain> given we also use Oracle for parts of our hosting, I refuse to voice my opinion π
20:21:13 <truebrain> (and no, AWS isn't better; they too do this stuff without giving any reason)
20:24:09 <kuka_lie> btw those pentiums that i talked earlyer was faster than i thought. them are really new (vista time) and them have two cores and xfce and openttd runs really smoothly. i think could i double amount of users by making all computers multiseat (them have 2 gpus). how would openttd run?
20:26:01 *** audigex has joined #openttd
20:26:01 <audigex> Remember that TTD is from the era of single core Athlon/Duron and Pentium/Celeron - anything even vaguely modern (dual core or better) will probably run OpenTTD okay as long as you donβt get carried away with map size and number of vehicles
20:27:46 <kuka_lie> i have 2 computers running debian 12 and those will be connected together via ethernet (direcly, i dont have switch) so i could get 4 insted of 2
20:28:32 <kuka_lie> xarick: it dont matter i just download binary version
20:30:28 <kuka_lie> btw if its integrated grafics can handle multibly displays i could possibly have 4 users/computer and 8 users total
20:31:54 <_glx_> truebrain: but GDPR stuff will be fun
20:32:28 <xarick> I am absolutely stupid! I had no idea about this "inheritance" thing... the documentation doesn't make it clear even
20:32:58 <xarick> GetName, SetName, GetLocation, they're defined in AIBaseStation, but I can call them from AIWaypoint
20:33:22 <xarick> I never thought this would work
20:33:23 <kuka_lie> i have some random wireless cards so i could possibly connect 2 computers wirelessly together and if i put ethernet to that other computer i can get 8 with just 2 users/computer or 4 users/computer and 16 total!
20:33:48 <xarick> that's clear for someone who knows what it means
20:38:53 <xarick> GetOwner needs to be moved from ScriptStation to ScriptBaseStation
20:39:01 <xarick> as someone suggested me days ago
20:39:11 <xarick> then it will work for waypoints
20:40:29 <_glx_> yeah I suggested that days ago π
20:40:45 <_glx_> and you even tested it IIRC
20:42:05 <xarick> what I tested was actually me writing GetOwner for them both
20:50:10 *** gelignite has quit IRC (Quit: Stay safe!)
21:03:38 <_glx_> you could have kept the PR open, and updated it to do the right thing
21:10:51 <andythenorth> ConsistFactoryTime
21:12:26 <peter1138> _settings_game.game_creation.landscape = _settings_game.game_creation.landscape & 0xF;
21:12:41 <xarick> Script missing mode enforcement / Script missing mode enforcement
21:12:46 <peter1138> landscape isn't a bitset, so `& 0xF` is not correct :)
21:13:11 <xarick> there was none, but now it's required
21:14:52 <xarick> oh, it was a spam of cancelled jobs
21:15:00 <xarick> nevermind, my email got bombed
21:15:02 <_glx_> nothing changed here, previously it was using ScriptStation::IsValidStation (with enforced company mode), now it's ScriptBaseStation::IsValidStation (with same requirement)
21:18:39 <xarick> I thought the run was cancelled because scripts were missing mode enforcement
21:19:02 <xarick> turns out, the job with the name "Script missing mode enforcement" was cancelled
21:22:45 <xarick> rename to "Script mode enforcer"?
21:30:20 <xarick> does the Re-run Checks only work if I have permissions?
21:30:59 <xarick> i tried clicking it for my other PR with errors but nothing seems to happen
21:31:26 <_glx_> I don't think you have the power
22:01:41 <xarick> no idea what's the point of those initiatives
22:03:19 <xarick> as if someone is planning for some catastrophe to happen
22:04:22 <_jgr_> If you wait until disaster strikes before you start archiving things, you've left it too late
22:23:20 *** Wolf01 has quit IRC (Quit: Once again the world is quick to bury me.)
22:43:36 *** nielsm has quit IRC (Ping timeout: 480 seconds)
23:04:01 <andythenorth> hmm tomorrow is another day
23:04:10 <andythenorth> ConsistFactory.clone() eh
23:11:59 *** keikoz has quit IRC (Ping timeout: 480 seconds)
23:43:47 *** HerzogDeXtEr has quit IRC (Read error: Connection reset by peer)
23:54:46 <_glx_> the stuff added by #13389 was actually not used (could not put breakpoint in it, meaning functions were not generated at all)
23:55:25 *** Tirili has quit IRC (Remote host closed the connection)
continue to next day β΅