Times are UTC Toggle Colours
10:31:47 *** godbed is now known as debdog 10:41:50 <andythenorth[d]> oh GS runs in pause 10:41:50 <andythenorth[d]> ok 10:44:38 <Samu> for some reason yes, i really dunno why 10:44:49 *** UnluckyDoge has joined #openttd 10:44:49 <UnluckyDoge> join now https://discord.gg/tiktoksex 10:47:14 <CplBurdenR3294> UM 10:47:44 <Simo333> Unexpected development 10:47:55 <CplBurdenR3294> https://tenor.com/view/bold-strategy-dodgeball-cotton-strategy-tactics-gif-4957668 10:48:17 <LordAro> don't react to spammers 10:48:25 <LordAro> just call an admin however you do that 10:48:32 <CplBurdenR3294> Rico 10:48:45 <CplBurdenR3294> I wasn't sure if Unlucky was a Spammer given their role though 10:48:59 <Simo333> Most likely hacked 10:49:05 <CplBurdenR3294> Ah, that'd explain it 10:50:13 *** Rico[d] has joined #openttd 10:50:14 <Rico[d]> Banned 10:51:48 <CplBurdenR3294> Excellent, I've removed my gif since, nothing to react to. 10:59:21 <reldred> Too bad the IRC users still had to put up with everything π 11:06:14 <CplBurdenR3294> Well its their fault for refusing to modernise π 11:07:40 * LordAro slaps CplBurdenR3294 with a large trout 11:08:01 <CplBurdenR3294> ah memories 11:08:33 <CplBurdenR3294> I say the modernise thing somewhat with irony, as man i've been running some old hardware and software up until recently, so I am one to talk 11:43:59 <FLHerne> random code-style question: 0xFFFF or UINT16_MAX? 11:44:08 <FLHerne> the existing code mostly uses the former 11:44:30 <FLHerne> I realised that I was inconsistent and used both in different places of https://github.com/OpenTTD/OpenTTD/pull/10365/files 11:44:48 <LordAro> "it depends" :p 11:44:51 <petern> Hmm, what is Gemini, and why are there so many clients and servers for something I've never heard of... 11:45:38 <FLHerne> personally I prefer UINT16_MAX as being less arbitrary, but then it makes newgrf.cpp inconsistent unless I changed the various other instances 11:46:11 <LordAro> i would say that UINT16_MAX should be used if you're trying to fit something into a uint16 11:46:15 <LordAro> otherwise, it's a different constant 11:46:24 <LordAro> (that just happens to be the same) 11:47:37 <petern> If it's NewGRF stuff, then it should be 0xFFFF, as the spec will be 0xFFFF not "UINT16_MAX" 11:47:48 <petern> But in that case it should also be a constant π 11:47:50 <FLHerne> LordAro: specifically it's "there's no speed limit, so we make the speed limit the highest possible speed" 11:48:26 <FLHerne> it's in NewGRF code but not directly grf-API-facing 11:48:47 <FLHerne> (speed being a uint16) 11:49:32 <petern> `if (speed == 0xFFFF) speed = 0;` ... well 11:49:45 <FLHerne> petern: I didn't add that one :p 11:49:50 <petern> Yeah, that one is right. 11:50:11 <FLHerne> actually, I'm currently halfway through a patch to take that one out 11:50:13 <petern> `bridge->max_length = 0xFFFF` should probably be UINT16_MAX 11:50:33 <FLHerne> I was going to do bridges like that with special-cased 0 speed 11:50:37 <petern> That's the only existing 0xFFFF used that way./ 11:50:49 <FLHerne> then I realised just how many hacks are scattered through the codebase to deal with special-cased 0 speed 11:51:15 <FLHerne> almost all of which just treat it as UINT16_MAX (implicitly or explicitly) anyway 11:51:15 <petern> So if (speed == 0) speed = UINT16_MAX 11:51:20 <FLHerne> yeah 11:51:40 <petern> Yeah, so in that case, use UINT16_MAX π 11:51:52 <FLHerne> so now I started (seperately from this PR) trying to remove the speed = 0 hack from road/railtypes 11:52:03 <FLHerne> unless I've missed some reason it's necessary 11:52:08 <FLHerne> well, not hack 11:52:23 <Samu> i fail at 2's complement 11:52:25 <FLHerne> but I don't see the point 11:52:51 <petern> FLHerne: Every conditional takes time... 11:53:23 <FLHerne> petern: yeah, so removing all the "if speed == 0" conditions should be an improvement 11:53:59 <FLHerne> I'm just wondering if there's some reason I missed that just making "no limit" UINT16_MAX doesn't work for road/railtypes 11:54:28 <FLHerne> after all, someoneβ’ wrote all the speed-0-is-unlimited stuff in the first place 11:54:52 <petern> Probably not, just remember to change the default value in the original data. 11:55:00 <FLHerne> yes, I've done that :-) 11:56:02 <FLHerne> not closely relevant - is there any way a grf can overwrite another grf's action0? 11:56:20 <petern> As long as you check in all case that 0 limit is treated the same as max limit. 11:56:25 <petern> Yes. 11:56:44 <FLHerne> I'm wondering if I should be doing the "if (speed == 0) speed = UINT16_MAX" in AfterLoadGRFs 11:56:53 <FLHerne> rather than directly in action0 11:57:07 <petern> I don't see any reason to do that. 11:57:10 <FLHerne> because that's where similar stuff seems to be done 11:57:16 *** MarcosBisbalMUFH|C1 has joined #openttd 11:57:16 <MarcosBisbalMUFH|C1> https://cdn.discordapp.com/attachments/1008473233844097104/1064876054168219739/image.png 11:57:16 <MarcosBisbalMUFH|C1> Don't know if this could be the right place to share this but, well... here it goes! I've been playing this game since before it was called "OpenTTD", it was just called "Transport Tycoon Deluxe" back then, and recently I'm using the Steam version. I've always have the feeling that industries are unbalanced in terms of quantity. What do I mean? Well, as a player, personally, I always connect 3 or 4 industries that produce 11:57:16 <MarcosBisbalMUFH|C1> industry and of course, there are industries that stay there unnecessarily because I never use them, some of them even close due to lack of raw materials. It doesn't make any sense to me to connect only one producing industry with only one receiving industry. I would like something to be able to balance the number of industries in the game or at least to have the option available, each player will determine whether to use 11:57:16 <MarcosBisbalMUFH|C1> get some numbers I share these numbers with you which I show in the image. 11:57:16 <MarcosBisbalMUFH|C1> How would I balance it? Well, in the case of the first scenario, for a single Factory I would use 3-4 Steel Mills and 9-12 Iron Ore Mines. The same for the case of the second scenario, one Printing Works, 3-4 Paper Mills and about 9-12 Forests. 11:57:18 <MarcosBisbalMUFH|C1> Call me crazy if you want, but I would really like an option to be able to balance the industries in a better way. 11:57:48 <petern> AfterLoadGRFs is mainly where you need the original state while loading, which you don't here. 11:57:57 <FLHerne> so I tried to think why it would matter, and I thought maybe the grf would do the action0, and then something else might modify the action0 value after that but before AfterLoadGRFs is called 11:58:16 <FLHerne> but I don't know if that's true :p 11:58:32 <petern> If something else modifies it, then the same condition would be executed. 11:59:25 <FLHerne> ok 11:59:59 <Samu> these guides on the internet don't do what i want 12:00:05 <FLHerne> MarcosBisbalMUFH|C1: NewGRF can do that 12:00:13 <FLHerne> there's no game setting 12:00:33 <FLHerne> you can place them by scenario but they'll end up drifting back by industry opening/closure 12:00:48 <FLHerne> or start a game with very few industries and create more primary ones by prospecting 12:01:19 <FLHerne> *in the scenario editor 12:04:45 *** WormnestAndroid has joined #openttd 12:07:14 <MarcosBisbalMUFH|C1> Oh, wait. Prospecting? How can i do that? 12:07:35 <MarcosBisbalMUFH|C1> FLHerne: Any good recomendation? 12:08:13 <Brickblock1> firs 12:08:33 <FLHerne> MarcosBisbalMUFH|C1: settings -> manual industry placement method -> prospecting 12:09:10 <FLHerne> or you can set it to fund them in a specific location like secondary industries, but that's cheating-ish IMO 12:12:01 <FLHerne> I play with FIRS, but tbh the balance of industry numbers is one thing I don't love about it 12:12:08 <FLHerne> not sure what else is out there 12:12:46 <Samu> I need help, I want 3392918397 to become -902048899, help me 12:13:08 <Samu> int64 to int32 12:13:42 <FLHerne> what 12:13:48 <MarcosBisbalMUFH|C1> FLHerne: Well well, thanks for all the comments, really apreciated. π 12:14:21 <Samu> I want (int32)3392918397 = -902048899 12:14:31 <Samu> to maintain compatibility 12:14:45 <Samu> need to make the operation manually 12:14:57 <Samu> because i'm working as int64 12:15:20 <Samu> how is this convertion done in code? 12:15:24 <Samu> with maths 12:16:27 <Samu> because i'm working in squirrel, I can't just use(int32)thenumber 12:16:42 <Samu> I'm forced to do the convertion using maths 12:22:30 *** keikoz has joined #openttd 12:23:09 <Samu> two's complement conversion guides i've found on the internet don't do exactly what I ask 12:27:33 <LordAro> i'm certain you're doing the wrong thing 12:28:16 <andythenorth[d]> I am very puzzled 12:40:52 *** Lemuria has joined #openttd 12:40:53 <Lemuria> Hey, how do I compile the OpenTTD JGR source into a debian package? 12:47:22 <Lemuria> Ah, it's `./make_bundle.sh` 12:47:28 <FLHerne> Lemuria: he does build debian packages for the released versions: https://github.com/JGRennison/OpenTTD-patches/releases 12:50:00 <Lemuria> I still prefer to build it myself, but thanks for linking though. 13:32:51 <andythenorth[d]> hmm circular tile search from a town? 13:33:03 * andythenorth[d] needs to build industries specific to a town 13:33:09 <andythenorth[d]> need to find an xy 13:33:21 <andythenorth[d]> in GS 13:33:43 <petern> Add a parameter to the prospecting command that only OWNER_DEITY can use... 13:34:50 <andythenorth[d]> that would be ideal 13:35:03 <andythenorth[d]> currently I'm reading the GS libs to see which ones have a tile search 13:35:30 <andythenorth[d]> Spiral.Walker.nut 13:35:53 <andythenorth[d]> don't really want to use a lot of commands trying to build on each tile in a spiral π 13:36:45 <andythenorth[d]> how do we extend GS anyway? π 13:37:08 <dP> it's not ideal to move custom functionality from mod to the game 13:37:28 <dP> why do you even need a tile search, just place industry somewhere near 13:38:31 <dP> citymania places industries in an uneven rectangular frame around town, imagine adding parameters for that :p 13:39:23 <petern> Does that cope with finding suitable terrain to place the industry nearby, or does the GS have to handle that? 13:39:54 <dP> it just does a high enough number of tries 13:40:14 <petern> "It" being the command or the GS? 13:40:53 <dP> command, also it's done on map generation 13:41:31 <andythenorth[d]> it just seems a bit odd 13:41:48 <FLHerne> some better generic tile search would improve GS/AI I think 13:42:01 <dP> though idk what you mean by command, it's a patched map generator code 13:42:02 <andythenorth[d]> if I tried to write my own prospecting routine, half the channel would be like 'wtf are you doing, you are a content author, stop doing things you don't understand' 13:42:03 <FLHerne> a lot of them seem to spend months of game time doing relatively trivial searches 13:42:16 <petern> What if x,y is unsuitable but x+4,y+4 is suitable? 13:42:18 <andythenorth[d]> but if we want constrained prospecting, now I'm suddenly an expert programmer? 13:42:48 <petern> dP: "Don't change command code just for GS" "Btw I changed the code" Uh-huh. 13:42:52 <andythenorth[d]> changing the goal doesn't change my skill level π 13:43:38 <dP> petern: I changed a lot of code and hardly any of it is useful for anyone but me :p 13:44:01 <petern> Yes, but you changed it because you couldn't achieve what you wanted with a GS. 13:44:13 <petern> (Or you could but it was quicker & simpler) 13:44:34 <Samu> SQInteger is int64, right? 13:44:36 <dP> there just are way to many cases of industry placement to add it to the game itself 13:44:52 <dP> it's like inbuilt citybuilder that openttd has but noone uses because it sucks 13:45:13 <andythenorth[d]> I have considered this, and I think I disagree π 13:45:35 <andythenorth[d]> being able to constrain placement to a segment of the map is not going to do harm 13:45:44 <andythenorth[d]> it has been discussed before in various forms π 13:45:46 <andythenorth[d]> regions etc 13:46:44 <dP> it's useful, but it my experience pretty much any game mode I do requires a custom map generator for placing industries 13:47:00 <dP> I can't even figure out a coherent way to put it in the config 13:48:01 <andythenorth[d]> frosch wrote something about 'areas' https://wiki.openttd.org/en/Development/Design%20Drafts/Scripts/Area%20Control 13:48:11 <andythenorth[d]> someone else did similar for 'regions' but I can't find it 13:49:32 <petern> How do you find these things? 13:49:37 <andythenorth[d]> google 13:49:40 <andythenorth[d]> honestly 13:49:52 <andythenorth[d]> but usually I know that somebody talked about it once or twice 13:50:05 <andythenorth[d]> they're all on frosch's wiki page also 13:50:16 <andythenorth[d]> https://wiki.openttd.org/en/Archive/Community/Users/Frosch 13:51:14 <dP> andythenorth[d]: I don't see how that would help you fund an industry that belongs to a certain town, it's a very complex area to define 13:51:44 <dP> also I still don't understand why you want that as if you plan to use cargomonitor it's doesn't count cargo by industry town 13:52:34 <andythenorth[d]> it's more like "why can't industries be placed in a certain town?" 13:52:47 <andythenorth[d]> how can anything interesting be done with GS if the spec is constantly nerfed? 13:53:04 <dP> it would be way more simple to just add a method to set town of the industry 13:53:29 <andythenorth[d]> right 13:54:14 <andythenorth[d]> do we know which town a tile belong to before an industry is built? 13:54:17 <dP> iirc even game doesn't know the area that belongs to the town, it can only check each tile individually 13:54:34 <dP> and that involves iterating all towns 13:54:41 <andythenorth[d]> I am uncertain if GS has a 'test' mode, like holding shift as player 13:54:56 <dP> if it doesn't it should xD 13:54:57 <andythenorth[d]> can I test building an industry and getting a result? 13:55:10 <andythenorth[d]> 'this would have succeeded' 13:55:11 <dP> testing doesn't even need 1 tick delay 13:55:43 <andythenorth[d]> how does GS even? The wiki is mostly about AI and limited 13:55:50 <andythenorth[d]> do I need to fix the docs or something? 13:56:08 <andythenorth[d]> seems GS has to be learnt by (1) reading Zuu scripts (2) reading openttd src 13:56:59 <Samu> i think i did it 13:57:03 <andythenorth[d]> these are the GS docs https://wiki.openttd.org/en/Manual/Game%20script 13:57:07 <andythenorth[d]> and then doxygen 13:59:37 <petern> There is ScriptExecMode and ScriptTestMode, but I don't know how they work or are used. 13:59:53 <andythenorth[d]> I will google π 14:00:31 <andythenorth[d]> ` /* In test mode we only return 'false', telling the DoCommand it 14:00:31 <andythenorth[d]> * should stop after testing the command and return with that result. */ 14:00:31 <andythenorth[d]> ` 14:00:38 <andythenorth[d]> someone ask chatGPT 14:01:35 <Samu> if ((r & 1 << 31) != 0) r = r | ~((1 << 31) - 1); 14:01:48 <Samu> r = (int32)3392918397 = -902048899 14:01:53 <Samu> success! 14:08:36 <glx[d]> andythenorth[d]: AI existed before GS, and GS is very similar to AI with more powers, and some extra API 14:08:57 <andythenorth[d]> yes 14:09:17 <andythenorth[d]> I think the TL;DR would 'can doxygen be made searchable' 14:09:25 <andythenorth[d]> either by a plugin, or indexing, or it not being doxygen 14:09:46 <andythenorth[d]> /* In test mode we only return 'false', telling the DoCommand it 14:09:46 <andythenorth[d]> * should stop after testing the command and return with that result. */ 14:09:51 <LordAro> https://www.doxygen.nl/manual/searching.html 14:09:55 <andythenorth[d]> https://www.doxygen.nl/manual/config.html#cfg_searchengine 14:11:32 <andythenorth[d]> oh there's a pipeline for doxygen to sphinx using something called breathe? https://devblogs.microsoft.com/cppblog/clear-functional-c-documentation-with-sphinx-breathe-doxygen-cmake/ 14:14:55 <LordAro> i don't think we'd want anything other than client side searching 14:15:05 <LordAro> server side searching gets complicated fast 14:15:17 <LordAro> and the current deployments certainly aren't set up for it 14:16:14 <andythenorth[d]> wondering if I can run sphinx locally 14:16:20 <petern> Deliberately as static as possible, aren't they? 14:16:25 <LordAro> yup 14:16:27 <andythenorth[d]> yes 14:16:39 <LordAro> andythenorth[d]: it's hard enough to run on a server, i wouldn't bet on it 14:17:35 <andythenorth[d]> anyway I 'googled' src for ScriptTestMode and it's clearly a thing 14:17:43 <andythenorth[d]> but I can't discern how to switch mode 14:18:04 <andythenorth[d]> no examples in tt-forums 14:18:28 <glx[d]> It's scope based 14:18:40 <LordAro> AITestMode is definitely used in a few AIs 14:18:45 <LordAro> should be able to copy that 14:18:46 <andythenorth[d]> google only finds our src 14:18:49 <LordAro> but yeah, complicated 14:19:03 <LordAro> ...are you googling ScriptTestMode or GSTestMode ? 14:19:11 <andythenorth[d]> trying AITestMode now 14:19:31 <andythenorth[d]> got a result https://www.tt-forums.net/viewtopic.php?t=37887 14:19:33 <LordAro> Script* only exists in the cpp code 14:19:43 <andythenorth[d]> yeah I keep forgetting the prefix changes 14:20:04 <andythenorth[d]> we can improve all this, if we can make nfo workable, this is relatively easier 14:23:32 <andythenorth[d]> oh left turn, I'd never seen this https://www.tt-forums.net/viewtopic.php?t=68828 14:23:43 <andythenorth[d]> GS adapter for the admin port 14:23:48 <andythenorth[d]> so...multiple GS? π 14:24:13 <andythenorth[d]> but you have to run them via some external process π 14:29:24 <glx[d]> We could possibly optionally enable some doxygen stuff like CHM generation or macos doc sets 14:39:02 <andythenorth[d]> might be nice 14:40:22 <Samu> i wish github desktop could show me unified diffs from different commits together 14:40:38 <Samu> is there a way, or must I upload to the web 14:56:55 <LordAro> you definitely don't need to push it anywhere to view more than one commit at once 14:57:04 <LordAro> but github desktop may not be able to display more than one, i suppose 14:57:27 <LordAro> `git show <my-commit-hash-here>` from the command line 15:05:33 <Samu> well, i decided to use the web 15:05:41 <Samu> im too noob for command line stuff 15:06:00 <petern> Didn't know there was some desktop github app. 15:06:11 <petern> I just use git stuff within VS Code. 15:06:26 <Samu> so, the unified diff for regression.txt doesn't show anything related to random values https://github.com/OpenTTD/OpenTTD/compare/master...SamuXarick:OpenTTD:script-random-values?expand=1#diff-8648c291a66295a5733e63097d9ab4761676f87d5cdc956d546bc5c3ccef84ba 15:06:46 <Samu> which means... my random number convertions are working! 15:07:29 <Samu> but i had to regress api version to 13 to test regression 15:07:46 <Samu> force it to use the compat_13.nut 15:08:03 <petern> If nothing is different, is anything different? 15:09:49 <Samu> look at compat_13.nut 15:10:30 <LordAro> petern: https://xkcd.com/722/ 15:10:30 <glx[d]> But regression should use current api 15:11:25 <glx[d]> Else how could it detect an issue ? 15:12:02 <LordAro> i imagine Samu is adding compatibility functions and wants to make sure that nothing more has changed 15:12:13 <LordAro> possibly. 15:14:35 <Samu> i want the old Rand() to still return negative values for API 13 and lower 15:14:44 <Samu> that's what the convertion do 15:14:56 <Samu> the new Rand() will only return positives 15:15:10 <Samu> for API 14 possibly 15:16:37 <dP> I imagine Samu randomly changing random seed until his randomly generated code fixes some random issue 15:16:44 <dP> possibly wrong π 15:20:36 *** nielsm has joined #openttd 15:22:02 <petern> Huh, of course, the javascript change event occurs after the form is submitted. 15:22:09 <petern> I hate front-end... 15:24:19 <andythenorth[d]> 'event-driven JS' 15:25:03 <andythenorth[d]> I used to hate async Flash: your call has returned, but you decided to be non-blocking, so now local state has changed 15:25:10 <andythenorth[d]> GG 15:25:24 <andythenorth[d]> 'mistakes were made' 15:27:13 <petern> It's a stupid design, the values are updates as you change them via API, and the submit button doesn't actually submit the values, it just says "yup, it's done" 15:27:32 <petern> For "reasons" 15:28:17 <petern> I guess really it should just be a full-on modern front-end instead of a shameful hybrid. 15:30:46 <Samu> regression RandRange tests are a bit low number 15:33:40 <andythenorth[d]> can we add longshore drift to sea coasts? 15:34:10 <andythenorth[d]> https://cdn.discordapp.com/attachments/1008473233844097104/1064930639721279608/480px-Spurn_in_1979.png 15:34:40 <LordAro> oh hey, i've been there 15:34:51 <LordAro> or, to where the tarmac now ends 15:35:04 <andythenorth[d]> GS 15:35:14 <andythenorth[d]> GS could actually do it 15:35:39 <andythenorth[d]> remarkably hard to find appropriate tiles or locations though 15:36:11 <andythenorth[d]> could we also have the inverse, and do Dawlish? 15:39:07 <LordAro> if you can do it in such a way that isn't just incredibly annoying to gameplay, i'll be impressed 15:44:49 <andythenorth[d]> I think it's one of those "don't ask if it's actually good" kind of ideas 15:44:54 <andythenorth[d]> "we did it for the lolz" 15:46:13 <andythenorth[d]> but finding coast tiles suitable for fake longshore drift might also.... 15:46:36 <andythenorth[d]> - aid placing coastal industries 15:46:48 <andythenorth[d]> - placing objects like lighthouses, forts etc 15:47:21 <andythenorth[d]> /me can't convince self 15:59:30 <petern> Heightmap generator? 16:15:19 *** _aD has joined #openttd 16:15:24 <DorpsGek> [OpenTTD/OpenTTD] LC-Zorg commented on pull request #10355: Change #10077: make maximum loan a positive multiple of the loan interval https://github.com/OpenTTD/OpenTTD/pull/10355#issuecomment-1385672215 16:16:15 <petern> Uh oh 16:39:40 <andythenorth[d]> new TGP? 16:39:45 <andythenorth[d]> dynamic TGP π 16:39:56 <andythenorth[d]> every n ticks, the landscape changes 16:43:29 <TallTyler> https://cdn.discordapp.com/attachments/1008473233844097104/1064948086637604894/dates.PNG 16:43:29 <TallTyler> Okay, when economic periods aren't tied to calendar years, how do we label the "time" axis of graphs and records? `Now, -1, -2`? (This will get even harder with timetable dates) 16:43:40 <TallTyler> Right now this is economic years since game start 16:44:17 <TallTyler> But I do NOT want to expose players to the alternate calendar, unless it's presented as real-world time. So each calendar year is 12 minutes, and that's all they need to know 16:48:54 <andythenorth[d]> remember I had a proposal that kind of missed? about your company just being in 'month 7' or 'year 5' or something 16:49:03 <andythenorth[d]> that's not what's needed here? 16:49:16 * andythenorth[d] is glad about NoDL, but I'm not really getting it yet :) 16:50:15 <andythenorth[d]> oh 16:50:23 <andythenorth[d]> can we just do 'elapsed real world time'? 16:50:26 <LordAro> TallTyler: probably dependent on the window? there's only ever 3, so "24-36 minutes ago", "12-24 minutes ago", "last 12 minutes" ? 16:50:43 <andythenorth[d]> every 12 minutes you get the finance window 16:50:51 <Brickblock1> I am not a huge fan of seeing things that irl would be done quarterly done based on irl minutes instead it just doesn't feel right 16:50:52 <andythenorth[d]> vehicles service every 3 minutes 16:50:53 <andythenorth[d]> etc 16:51:26 <petern> I guess keeping it as calendar years and just letting the values get big is not an option? 16:51:50 <petern> (interest rate would pretty tricky to explain too :)) 16:52:00 <andythenorth[d]> I should build the PR and play a game π 16:52:05 <LordAro> also, i fear this sort of "just paper over the calendar" will result in thousands of feature requests along the lines of "12 minutes is a strange interval, can i have 10 minutes intervals instead?" 16:52:32 <andythenorth[d]> it might 16:52:34 <andythenorth[d]> but testing 16:53:00 <andythenorth[d]> we can record all the things that might not work or might be weird π 16:53:17 <andythenorth[d]> but we should keep going on this until Tyler wins, gets bored, or rage quits 16:53:44 <petern> Nice, turns out when I break javascript it falls back to standard posts which I didn't properly implement and it's broken π 16:53:51 <petern> Rabbit hole. 16:54:01 <andythenorth[d]> petern: you can blame former you 16:54:04 <TallTyler> petern: If we support "Frozen" economic time this isn't an option 16:54:08 <andythenorth[d]> former self was always an idiot 16:54:16 <andythenorth[d]> worst person in the world 16:54:49 <TallTyler> If we go down to 1% of current speed and don't support Frozen, almost nothing player-facing has to change and we just get huge values everywhere. No need for real-world time, we can keep Months and all that. 16:54:51 <petern> Well it can just accumulate in the current year... but yeah. 16:55:00 <TallTyler> But that's how the current daylength works and it makes the numbers meaningless 16:55:18 <TallTyler> Or at least too large for the average person to comprehend 16:57:33 <TallTyler> andythenorth[d]: That's how it works, yes π 16:58:12 <TallTyler> I wonder, can timetables use the user's local time for start date and such, where it currently uses the date? 16:58:22 <TallTyler> Is the computer's local time a safe thing to access? 16:59:09 <TallTyler> Hmm, could potentially be a desync risk converting the user-input Timetable Start Date to in-game time 16:59:12 <petern> Seem bad if you actually pause the game :p 16:59:18 <TallTyler> Or fast-forward 17:00:33 *** Speedy` has quit IRC 17:00:41 *** Speedy` has joined #openttd 17:04:32 <TallTyler> Okay, maybe a change of strategy is giving up on 0%/Frozen speed and the switch to real-world time units, since that seems to be the biggest point of contention 17:04:50 <TallTyler> 1% is still plenty slow and a huge improvement 17:05:49 <TallTyler> It's still not daylength, because daylength also slows down the economic simulation speed of paying running costs, changing station ratings, etc. 17:06:13 <petern> God damn it Chopin, I can't do that polyrhythm thing, even if it is one of the simpler ones :/ 17:06:29 <TallTyler> Tile loop is the most frustrating daylength thing because it's so pointless 17:06:50 <TallTyler> "What if it took fifteen IRL minutes for the ocean to flood and for grass to grow on bulldozed tiles?" 17:07:43 <petern> Can we just do both? 17:08:13 <petern> Hmm, probably not a good idea π 17:08:21 <petern> What is profit last year. 17:08:31 <TallTyler> ? 17:09:28 <petern> Basically giving the player the option of seeing it in economy time or calendar time. Bad idea though. 17:10:13 <TallTyler> That would truly be a terrible idea for future support and features 17:10:29 <TallTyler> Worth considering but I already did that and rejected it π 17:12:31 <TallTyler> Okay, so if we ditch real-world time units and just let the user slow time down to 1% of default, it really is Daylength 2.0...which is fine 17:12:40 *** _aD is now known as Guest1632 17:12:44 *** _aD has joined #openttd 17:12:56 <petern> But not what you wanted π 17:13:01 <TallTyler> Do we need to make some settings more granular, like autosave frequency, servicing frequency, etc? 17:13:26 <TallTyler> Although arguably autosave should actually be real-world time even if you build while paused 17:14:12 <petern> Real-world is fine until you want it to autosave quicker during FFWD. 17:14:25 <TallTyler> Do we cater to service frequency granularity or ignore it since breakdowns are a dumb feature and users don't have to slow-down time? 17:14:51 <petern> service frequency should be economy time? 17:14:54 <TallTyler> Real-world autosave frequency is out of scope, IMO 17:15:07 <petern> And probably autosave should be economy time too. 17:17:14 *** Guest1632 has quit IRC 17:17:57 *** Wolf01 has joined #openttd 17:20:29 <TallTyler> Expressed in real-world minutes? 17:20:52 <Wolf01> Funny, I poisoned myself again because I'm gluttonous 17:22:36 <LordAro> yes... funny 17:23:14 <DorpsGek> [OpenTTD/OpenTTD] rubidium42 commented on pull request #10355: Change #10077: make maximum loan a positive multiple of the loan interval https://github.com/OpenTTD/OpenTTD/pull/10355#issuecomment-1385769392 17:23:52 <DorpsGek> [OpenTTD/OpenTTD] rubidium42 updated pull request #10355: Change #10077: make maximum loan a positive multiple of the loan interval https://github.com/OpenTTD/OpenTTD/pull/10355 17:26:09 <andythenorth[d]> shall I end run daylength, and just put an intro date scaling parameter in all my grfs? 17:26:23 <andythenorth[d]> Pruple: already did it, so there's precedence 17:26:30 <TallTyler> No, that's only a good idea if you only use your own GRFs 17:26:40 <andythenorth[d]> does it matter if Horse Fake Train is introduced in 1978 when IRL it was introduced in 1967 17:26:59 <TallTyler> If you do that but use someone else's house set you'll get skyscrapers at inappropriate years 17:27:04 <andythenorth[d]> yes 17:27:09 <TallTyler> Or someone else's vehicle set 17:28:05 <andythenorth[d]> the upside is it doesn't preven NoDL 17:28:05 <TallTyler> There's maybe a handful of people who can use only their own GRFs: you, Timberwolf, Erato...that might be it 17:28:50 <andythenorth[d]> it makes testable the hypothesis that 'I want vehicle progression to be slower" is the main driver for DL 17:29:01 <TallTyler> Why do we need to test that? 17:29:15 <TallTyler> The people arguing for DL are explicitly asking for it 17:29:23 <TallTyler> Well, some of the people 17:29:49 <TallTyler> The other ask is for slower station rating drops, cargo and passenger production etc., which I think is a separate PR to slowing calendar time 17:29:51 <TallTyler> Both are valid 17:29:57 <TallTyler> But don't need to be done simultaniously 17:30:04 <andythenorth[d]> I am trying to arrive at an understanding in my brain of something that doesn't click π 17:30:14 <andythenorth[d]> not trying to gatekeep NoDL, 100% supportive of it 17:30:31 <andythenorth[d]> but everything about DL just baffles me, when it comes to time and ticks and scaling 17:30:32 <Samu> is this good english? 17:30:33 <TallTyler> I'm not defensive, hope I'm not coming off that way π 17:30:34 <Samu> * \li AIBase::Chance randomized 'max' value is now in the correct range when tested with 'out' 17:30:51 <Samu> sounds like bad english, how can i improve this statement 17:31:16 <andythenorth[d]> can GS mess with time? π 17:31:17 <nielsm> Samu: it sounds wrong, especially the last part "when tested with 'out'" 17:31:27 <Samu> out is a param 17:31:37 <Samu> max is another param, this one gets randomized 17:31:37 <TallTyler> If we make time a setting, then GS can change it 17:31:48 <nielsm> but "when tested with" is wrong 17:31:56 <Samu> then it returns randomized(max) < out 17:31:59 <nielsm> you need a different verb than "tested", maybe compared 17:32:06 <TallTyler> Would arguably be the easiest way to implement "research" to move time forward 17:32:29 <andythenorth[d]> GSEventDayAdvanced 17:32:42 <andythenorth[d]> GSTimeAdvanceDay 17:32:56 <andythenorth[d]> allow or deny OpenTTD moving the day forward 17:33:07 <andythenorth[d]> I am aware that this is really not a thing 17:33:10 <andythenorth[d]> π 17:33:39 <TallTyler> Well, I'm starting to come to the conclusion that 1% of current rate is an order of magnitude less work than going all the way to 0% of current rate 17:33:46 <TallTyler> And is good enough for my purposes 17:33:53 <andythenorth[d]> ahem, is there a global tick counter somewhere? 17:34:01 <andythenorth[d]> can we just modify it behind OpenTTD's back? π 17:34:14 <TallTyler> At 100% rate a year takes 12 minutes. At 1% rate a year takes 20 hours. 17:34:25 <TallTyler> I think that is plenty 17:35:11 <Pruple> andythenorth[d]: did I? 17:35:21 <andythenorth[d]> UKRS 99 has 1960 forever, I think? 17:35:41 <andythenorth[d]> https://cdn.discordapp.com/attachments/1008473233844097104/1064961221285118075/image.png 17:37:45 <Pruple> https://cdn.discordapp.com/attachments/1008473233844097104/1064961743312400384/Untitled.png 17:37:46 <Pruple> π€ 17:38:18 <Pruple> must have imagined it π 17:38:44 <andythenorth[d]> BAD FEATURES 17:39:18 <andythenorth[d]> hmm 17:39:35 <andythenorth[d]> what if pause wasn't pause? 17:39:45 <andythenorth[d]> so the economy, vehicles etc just kept running 17:39:47 <andythenorth[d]> but time did not 17:39:55 <Wolf01> Just freeze time 17:40:13 <andythenorth[d]> https://tenor.com/view/stuck-in-time-clock-time-tick-tock-gif-5358530 17:40:22 <nielsm> TallTyler: have you considered making the calendar speed setting measured in ticks per day instead? it will give the full granularity of setting, the main disadvantage is that you don't get an easy % speed change readout 17:43:22 <TallTyler> That's how the current daylength implementation in JGRPP does it, but I don't feel like that's an acceptable interface to expose to the player 17:43:51 <Samu> isn't there a better way to work with the compat_.nut files? having to copy paste the same thing over 30 files is tiring -> https://github.com/SamuXarick/OpenTTD/commit/ba784026c33144d007a70c43ac436db4af635e08 17:44:44 <andythenorth[d]> hmm 17:44:56 <andythenorth[d]> my idea, which I self-rejected, was to just start the game year at 0 17:45:01 <andythenorth[d]> advance at the current speed 17:45:17 <andythenorth[d]> but find everywhere that has an intro date or expiry date, and make it take a scaling factor 17:45:25 <andythenorth[d]> I decided it was mad and confusing 17:45:33 <Wolf01> You'll get trains when you'll be 80 years old 17:45:43 <andythenorth[d]> but I'm not convinced that I understand daylength so eh 17:46:21 <DorpsGek> [OpenTTD/OpenTTD] ldpl commented on pull request #10355: Change #10077: make maximum loan a positive multiple of the loan interval https://github.com/OpenTTD/OpenTTD/pull/10355#issuecomment-1385797872 17:47:05 <Wolf01> I think that the entire daylength concept is wrong, I had a lot of different problems working with that, instead of just working on the date 17:50:22 <dP> what if you decouple both economy year and tech year? xD 17:50:30 <dP> economy year can't be frozen but tech one can 17:50:49 <andythenorth[d]> https://cdn.discordapp.com/attachments/1008473233844097104/1064965029574750298/16.png 17:50:49 <andythenorth[d]> games like Township progress via levels, not dates 17:50:57 <andythenorth[d]> a lot of casual games my kids play do this 17:50:59 *** Flygon has quit IRC 17:51:06 <dP> btw, nuts has scalable intro dates iirc 17:51:10 <andythenorth[d]> it does 17:51:17 <andythenorth[d]> I long ago was going to do it in Horse 17:51:35 <andythenorth[d]> just didn't figure out a nice UI 17:51:51 <TallTyler> dP: That's the current implementation, but there are a lot of complaints about "real-world time units feel wrong" and also a lot of code to change 17:51:58 <TallTyler> And the problem of no fixed reference 17:51:58 <andythenorth[d]> then GS tech tree feature became available, so maybe it should be GS not grf 17:52:09 <andythenorth[d]> there is a tech tree GS existing 17:52:13 <andythenorth[d]> I tried it, didn't understand it 17:52:21 <dP> TallTyler: no, I mean economy year will be player-facing date 17:52:31 <dP> and tech progress in whatever units 17:52:34 <andythenorth[d]> https://cdn.discordapp.com/attachments/1008473233844097104/1064965468840005652/image.png 17:52:50 <TallTyler> I previously tried that: https://github.com/OpenTTD/OpenTTD/pull/9789 17:53:17 <TallTyler> It was (correctly) deemed too confusing from the player's perspective 17:53:21 <TallTyler> By you and others π 17:54:11 <dP> yeah, but now do both at the same time xD 17:54:20 <dP> I already kinda commented that idea there 17:54:27 <andythenorth[d]> I upvoted 9789 π 17:54:37 <andythenorth[d]> this democracy sucks, I want my money back π 17:54:42 <dP> economy year is player-facing one but can be slowed down and sped up, but not frozen 17:55:08 <dP> techno year convert to something that isn't a year 17:55:25 <dP> "12 minutes" xD 17:55:35 <dP> though it kinda sucks even that way 17:55:36 <TallTyler> But NewGRFs use year for availability... 17:56:00 <dP> you don't need to show newgrf year to player ;) 17:56:13 <TallTyler> but mah realism" 17:56:27 <dP> mah realism use 100% techo speed ;p 17:57:16 <andythenorth[d]> hmm 17:57:22 <andythenorth[d]> what about two clocks 17:57:32 <andythenorth[d]> ticks advance, and ticks reverse π 17:57:33 <dP> and techno year can probably even use two ways of showing it, as a year for 100% and as something else for other 17:57:46 <dP> it's also needed in way less places than economy year 17:58:07 <andythenorth[d]> https://en.wikipedia.org/wiki/Differential_steering#Double-differential 17:58:40 <andythenorth[d]> lol signed ticks, alternating 17:58:42 <andythenorth[d]> like AC current 17:59:20 <andythenorth[d]> we math.abs for game progress 17:59:28 <dP> actually, is techno year even shown anywhere directly or just as intro dates? 17:59:29 <andythenorth[d]> we accumulate signed ticks for date 17:59:41 <dP> intro dates can just be scaled arbitrarily into economic year 17:59:49 <andythenorth[d]> we offer a knob for the ratio of -ve ticks to +ve ticks 17:59:55 <andythenorth[d]> ok my solution is the best so far 18:00:39 <andythenorth[d]> ticks are constant rate, but the mix of -ve and +ve ticks can be adjusted 18:00:50 <andythenorth[d]> between 0:74 and 74:74 18:01:19 *** gelignite has joined #openttd 18:02:07 *** Wormnest has joined #openttd 18:03:52 <petern> Oh that was a bad idea. 18:04:33 <andythenorth[d]> in the new, improved version of the game, you start with maglev, and everything is taken away 18:04:42 <andythenorth[d]> you end up with a slightly round rock 18:04:50 <andythenorth[d]> and a log 18:04:55 <andythenorth[d]> and you have to build stonehenge 18:05:10 <andythenorth[d]> then the spaceship lands and you win 18:05:39 <andythenorth[d]> you have to use the good tech rapidly at game start, because you're going to lose it 18:05:59 <petern> TallTyler: Not really a complaint from me, it's just I also don't know what is a good solution. 18:06:23 <dP> hm, negative tech progression is an interesting gameplay idea xD 18:06:32 <andythenorth[d]> neverending story 18:06:33 <dP> gs disables engines as the game goes 18:06:39 <andythenorth[d]> also the tiles are removed 18:06:41 <andythenorth[d]> to blackness 18:06:55 *** _aD is now known as Guest1649 18:07:00 *** _aD has joined #openttd 18:07:37 <petern> Expose the map as the game progresses 18:08:19 <petern> Fog-of-war? 18:09:13 <dP> free timeline navigation 18:09:20 <dP> changing the past changes the future 18:10:24 <dP> fog of war isn't a bad idea actually 18:10:41 <andythenorth[d]> petern: we can do overlays, I don't know how, but there's the cdist thing 18:10:48 <andythenorth[d]> so we could fog of war 18:11:00 <dP> kinda hard to do fairly though 18:11:12 <andythenorth[d]> start with 'do' 18:11:23 <andythenorth[d]> 'fair' is for advanced civilisations 18:11:24 *** Guest1649 has quit IRC 18:12:03 <dP> ha, reminds me of a minesweeper mode I did 18:12:55 <dP> There was actual fog of war 18:15:20 <dP> can probably even fix desyncs with 12.0 18:17:05 * petern gives up on the 4:3 polyrhythm again. 18:17:41 <andythenorth[d]> likely better than me 18:17:55 <andythenorth[d]> I can't even beat normal 4 4 time reliably 18:19:28 <andythenorth[d]> fog of war...another case for areas / regions π 18:20:41 <DorpsGek> [OpenTTD/OpenTTD] rubidium42 commented on pull request #10355: Change #10077: make maximum loan a positive multiple of the loan interval https://github.com/OpenTTD/OpenTTD/pull/10355#issuecomment-1385841936 18:23:12 <petern> andythenorth[d]: GS could loop the map and hide individual tiles π 18:23:54 <TallTyler> Time for Garry G's cloud objects? 18:25:16 <andythenorth[d]> GS weather? 18:29:59 <andythenorth[d]> hmm 18:30:02 <andythenorth[d]> grf weather 18:30:09 <andythenorth[d]> but GS driven 18:30:30 <andythenorth[d]> grf feature 18: fog of war 18:30:36 <andythenorth[d]> grf feature 28: weather 18:30:53 <andythenorth[d]> GS decides the region / area of effect 18:31:01 <andythenorth[d]> and sets the local periodic condition 18:33:40 <petern> With NoDL can I have make it realtime? One day is... one day... 18:34:29 *** _aD has quit IRC 18:37:03 <dP> I had an idea once to do clouds as gs-controlled airplanes 18:37:20 <andythenorth[d]> petern: realtime map sizes also 18:37:47 <andythenorth[d]> lol, given that 16k ^ 2 runs at 0.5x game speed on my laptop 18:37:52 <andythenorth[d]> that might be a fail idea 18:38:17 <dP> auto-adjust map size to run 1x 18:38:34 <andythenorth[d]> if you have realtime DL, you also need 1 mile to be 1 mile 18:38:42 <andythenorth[d]> unless our physics is...less than accurate π 18:38:47 <andythenorth[d]> imagine if it was 18:39:57 <JGR> At what point is it easier to just hang around at the end of a platform with a camera π 18:41:19 <petern> It's -2Β°C, so never π 18:41:39 <dP> shouldn't train honks sound differently on diagonals because of space distortion? 18:44:04 <DorpsGek> [OpenTTD/OpenTTD] DorpsGek pushed 1 commits to master https://github.com/OpenTTD/OpenTTD/commit/dcc06f44bc0b6bbd6cd08913a16337209db9d73f 18:44:05 <DorpsGek> - Update: Translations from eints (by translators) 18:44:16 <TallTyler> petern: No, that would be 0.004%, and the percentage setting is an integer 18:46:25 <TallTyler> I'm looking forward to someone coming along with a depreciation spreadsheet to complain that purchase prices aren't realistic because vehicle life is tied to calendar time and maintenance costs are tied to economy time, therefore vehicles last much longer than they should and the purchase costs should be scaled accordingly 18:46:27 <TallTyler> "no" 18:46:54 <petern> Uh oh 18:47:05 <TallTyler> Time for a walk to clear my head 18:48:22 <JGR> You can't please everyone 18:51:10 <JGR> Sometimes a fait accompli is a more pragmatic way to get things done π 19:02:54 <petern> Converting old code to use DateOnly instead of DateTime is... a huge project :/ 19:10:24 <andythenorth[d]> do I want an M2? 19:10:45 <andythenorth[d]> Iron Horse might compile in 20 seconds on it 19:15:28 <petern> Yes, but not with macOS. 19:17:08 <andythenorth[d]> does it do Windows yet? 19:17:09 <andythenorth[d]> probably not 19:24:49 <andythenorth[d]> ok so tile a