IRC logs for #openttd on OFTC at 2023-01-17
01:24:16 *** urdh has quit IRC (Ping timeout: 480 seconds)
01:26:44 *** Etua has joined #openttd
01:40:11 *** Etua has quit IRC (Quit: Etua)
02:01:58 *** Etua has joined #openttd
02:10:21 *** Eddi|zuHause has quit IRC (Ping timeout: 480 seconds)
02:10:47 *** tokai|noir has joined #openttd
02:10:47 *** ChanServ sets mode: +v tokai|noir
02:17:41 *** tokai has quit IRC (Ping timeout: 480 seconds)
02:24:26 *** Etua has quit IRC (Quit: Etua)
02:51:25 *** Wormnest has quit IRC (Quit: Leaving)
03:14:35 *** godbed has joined #openttd
03:17:56 *** debdog has quit IRC (Ping timeout: 480 seconds)
03:27:37 *** urdh has joined #openttd
03:44:07 *** Eddi|zuHause has joined #openttd
04:15:01 *** crem has quit IRC (Read error: Connection reset by peer)
04:33:57 *** Flygon has joined #openttd
04:41:19 *** keikoz has joined #openttd
06:00:23 *** keikoz has quit IRC (Ping timeout: 480 seconds)
06:00:23 *** WormnestAndroid has quit IRC (Remote host closed the connection)
07:16:51 <andythenorth[d]> wonder if I can arbitrarily extend cargo town effects
07:19:06 <andythenorth[d]>
07:19:18 <andythenorth[d]> seems to just map onto traditional cargo IDs for specific cargos
07:24:23 *** HerzogDeXtEr has joined #openttd
07:27:29 <andythenorth[d]>
07:27:52 * andythenorth[d] was considering TOWN_EFFECT_VEHICLES or TOWN_EFFECT_NUCLEAR_WASTE etc
07:44:58 <Pruple> wasn't the discussion yesterday that cargo town effects basically do nothing?
07:47:46 <Pruple> passengers / mail just adds the production stat to the town window, goods/candy does nothing at all, water/food just turns growth on and off in the snow or desert.
07:52:14 <andythenorth[d]> well
07:52:28 <andythenorth[d]> I guess the question is 'should they do something'
07:52:59 <andythenorth[d]> I can just ignore them because my GS knows all about FIRS cargos
07:53:31 <Pruple> what would they do?
07:53:40 <andythenorth[d]> yes
07:53:42 <andythenorth[d]> I don't know
07:53:49 <andythenorth[d]> TOWN_EFFECT_ELECTRICITY?
07:54:13 <andythenorth[d]> what even are they? Just a mapping new -> old for legacy reasons?
07:57:20 <reldred> I’m just going to use town cargo delivery to influence building appearances,
07:57:53 <reldred> Which in turn affects cargo acceptance some more.
07:58:07 <reldred> Really it’s just an aesthetic thing and a delivery sink,
07:58:08 <andythenorth[d]> I haven't looked what citybuilder scripts do with them
07:59:15 <reldred> For instance I’ve got my little industrial parks, but nothing beyond minimum age to protect them. I’ll probably make a callback chain pulling local delivery stuff to then protect the buildings from being demolished
07:59:24 <reldred> Which then allows them to expand
07:59:33 <andythenorth[d]> oh that's quite neat
07:59:49 <reldred> Maybe the expansion will unlock more delivery cargo’s
08:00:24 <reldred> Maybe just goods or food to start off with but if you satisfy those maybe more specialised buildings will appear that can accept vehicles or building materials
08:01:29 <reldred> In theory you could have a tech tree of such to develop the city based on delivering certain things
08:01:54 <andythenorth[d]> 'if only there was a town grf spec'
08:02:03 <reldred> I am certain that the correctly designed and integrated city set, industrial set, and game script could create some truly spectacular results
08:02:04 <andythenorth[d]> you could influence the actual growth rate then
08:02:50 <andythenorth[d]> reldred: sounds like you have actual ideas
08:03:39 <reldred> I mostly get inspired thinking what I can do with fridaemons sprites, as it turns out he apparently gets inspired to draw based off what I can code 😛
08:03:48 <andythenorth[d]> well
08:03:57 <andythenorth[d]> owing to certain mistakes that were made
08:04:05 <andythenorth[d]> by people who may or may not be in this chat
08:04:05 <reldred> So for now I’m waiting on more sprites 🙂
08:04:29 <andythenorth[d]> we have an under-developed GS / grf interface for towns
08:05:12 <andythenorth[d]> no idea if anyone wants to implement it but grf town control seems like a thing we should have
08:05:37 <andythenorth[d]> something like: grf should get a monthly callback for growth
08:05:43 <andythenorth[d]> and any missing vars
08:05:48 <reldred>
08:05:58 <reldred> So there’s an example of industrial park
08:06:02 <andythenorth[d]> nices
08:06:19 <reldred> Those truck yards can only spawn next to other truck yards or warehouses
08:06:59 <reldred> Only three ‘root’ warehouses can spawn per town, after that all subsequent ones have to spawn directly adjacent another warehouse or truck yard
08:07:35 <reldred> Oh and only one warehouse per 2500 population
08:08:00 <reldred> Everything is subject to change ofcourse
08:08:43 <reldred> And min pop to spawn first warehouse
08:09:36 <reldred> It’s mostly visual tbh, I don’t have any grand plans for it, I just want nice interesting town gen and growth
08:10:13 <reldred> But I want there to be a practical impact to a town based on what’s going on in a game
08:10:31 <andythenorth[d]> grf town spec demanded
08:10:57 <andythenorth[d]> can take hints from a GS, but grf has direct control over town
08:11:07 <andythenorth[d]> dunno who gets control of the town window though
08:11:20 <reldred> Yeah affecting/impacting the actual zones of a town would be nice
08:11:30 <reldred> But not super critical tbh
08:12:09 <reldred> Zones can be created within the existing zone structure like how ITL does it
08:12:11 <andythenorth[d]> I guess there's a precedence, grf has control, so if grf provides town window text, it wins out over GS
08:12:44 <andythenorth[d]> there was a debate lost in the mists of time
08:12:53 <andythenorth[d]> that grf is for 'items' and GS is for 'game'
08:12:56 <reldred> I dunno, I don’t really find myself wanting to touch the town window, I dunno what I’d do/want with that
08:13:26 <andythenorth[d]> it's weird to let grf control town growth, but not provide the option to explain that to player
08:13:43 <reldred> When I mentioned GS before I was thinking more industries but admittedly I don’t know much about GS
08:13:58 <reldred> I mean, GS can already influence town growth?
08:14:03 <andythenorth[d]> yair
08:14:07 <andythenorth[d]> but the neatest way to think about GS is 'hints'
08:14:13 <andythenorth[d]> and 'goals'
08:14:38 <andythenorth[d]> GS can't reliably do things like: walk all the towns on a large map monthly
08:14:43 <andythenorth[d]> and it 's trivial to demonstrate that
08:15:33 <reldred> Goes it write complementary GS for Fridaemon and Aegir’s Building Set V2 In NML Overhaul Redux (GPL Collection Pt.69)
08:15:50 <andythenorth[d]> probably
08:15:54 <reldred> Oh yeah, Renewal Set.
08:15:55 <andythenorth[d]> GS: every home should have one
08:15:58 <reldred> Forgot one
08:16:14 <reldred> Oooh! “Project:”
08:18:01 <Pruple> andythenorth[d]: is town growth a mechanic that needs explaining to the player?
08:18:05 <reldred> I mean, I’m not trying to actually change OTTD gameplay, I mostly just want to make a building set with enough smarts to generate towns that look like they’ve been richly detailed with a newobjects set
08:18:33 <reldred> And kinda, provide positive reinforcement to actions the player takes?
08:19:00 <andythenorth[d]> Pruple: needs explaining to me, dunno about others 🙂
08:19:15 <andythenorth[d]> just at a basic 0/1 level
08:19:34 <andythenorth[d]> "Town is [happy | unhappy]"
08:19:36 <andythenorth[d]> or something
08:20:24 <reldred> Bad ratings: houses all self destruct, ghost town ensues
08:20:32 <andythenorth[d]>
08:20:32 <andythenorth[d]> oh we already have
08:20:36 <andythenorth[d]> well
08:21:10 <reldred> Nah, I don’t want to abuse the building destruction callback much, mostly just to maintain an aesthetic
08:22:20 <andythenorth[d]> Pruple: but is town growth a mechanic that needs explaining to the player?
08:22:41 <andythenorth[d]> using 'town happiness' in FIRS to affect industry production....has nothing to do with that 😛
08:22:53 <andythenorth[d]> and is a FIRS GS<->FIRS grf thing
08:23:20 <reldred> I definitely like the idea of leaning into the protection callback though to maintain stuff that to the player would be ‘in use’ or ‘active’
08:24:04 <reldred> I like the idea of influencing higher density residential to be around pax transit as well
08:25:04 <reldred> So lack of public transport creates humongous urban low density sprawl, creating public transport opens up higher density housing which should then make populations skyrocket
08:25:18 <reldred> Ideas to ponder 🤔
08:25:57 <reldred> Alas, I must go have dinner at the pub, so long, I shall see you all again once the social anxiety has claimed me as it’s next victim.
09:09:50 <CplBurdenR3294> reldred: *Ghost Town by the Specials Intensifies*
09:11:02 <CplBurdenR3294> Thinking about it, could be interesting to have a GS that means that (for the base industry set, or one with a suitable industry), towns need a nearby (define that how you will) power station to be supplied with a minimum amount of coal/oil/cargo of choice per month to grow
09:28:07 <dP> CplBurdenR3294: there are about 10 gamescripts that do that already xD
09:28:27 <CplBurdenR3294> Well, thats excellent then 🙂
09:28:28 <dP> town growth is one of the few things gs is actually decent at
09:29:00 <CplBurdenR3294> Sorry, the last time i was really active, GS were rather new
09:35:14 <petern> 2012?
09:42:55 <CplBurdenR3294> Genuinely, yes
09:43:40 <CplBurdenR3294> I dabbled for a bit in 2016 but, not in the community. That was just "get latest patchpack, play". Last time I tried coding anything etc was back then. I did the Royal Scot for UKRS2
09:44:18 <CplBurdenR3294> and it was prior to certain events in my life, so yes, it was pre-2013, so that'd be around 2012
09:50:34 *** Samu has joined #openttd
09:52:55 <petern> Not sure when I last properly played. Probably before that too.
09:53:12 <petern> I always get hung on fixing some issue I find. Maybe I should properly play more 🙂
09:53:22 <andythenorth[d]> the game is actually really good
09:53:30 <andythenorth[d]> I don't play many games, but OpenTTD is a good one
09:57:46 <Samu> your doesn't parse links correctly
09:58:19 <CplBurdenR3294> petern: This is my experience with my work on other games too. I spend so long modding them, I never *play* anything 😄 last year I quite literally, played nothing. The entire year, was just modding.
09:58:53 <Samu> can you get to the right page when clicking the link logged here:
09:59:44 <LordAro> Samu: it's erroneously escaping the '?'
09:59:49 <Samu> yes
10:00:01 <LordAro> (and the =)
10:00:10 <Samu> yes yes
10:00:31 <LordAro> i don't actually know who or what runs
10:01:18 <andythenorth[d]> petern: TBH the game is much more playable since chunky bevels 😛
10:03:12 <petern> I'm glad I added that joke-feature just as a teset...
10:04:17 <petern> The main work on that big set of changes was making padding consistently scaled so that things stay in proportion.
10:04:49 <LordAro> :D
10:16:47 <petern> Also there's still some more to do but I keep getting side-tracked.,
10:27:42 <Samu> regression API version requirements is already 14? I mean, how do you even test the compat_xx.nuts?
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
10:47:14 <CplBurdenR3294> UM
10:47:44 <Simo333> Unexpected development
10:47:55 <CplBurdenR3294>
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:13 <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
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 <petern> So if (speed == 0) speed = UINT16_MAX
11:51:15 <FLHerne> almost all of which just treat it as UINT16_MAX (implicitly or explicitly) anyway
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>
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:52 <Lemuria> Hey, how do I compile the OpenTTD JGR source into a debian package?
12:47:22 <Lemuria> Ah, it's `./`
12:47:28 <FLHerne> Lemuria: he does build debian packages for the released versions:
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:01 <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'
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]>
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:56 <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
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>
14:09:55 <andythenorth[d]>
14:11:32 <andythenorth[d]> oh there's a pipeline for doxygen to sphinx using something called breathe?
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
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:31 <andythenorth[d]> oh left turn, I'd never seen this
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
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 <glx[d]> But regression should use current api
15:10:30 <LordAro> petern:
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:39 <andythenorth[d]> can we add longshore drift to sea coasts?
15:34:10 <andythenorth[d]>
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:13 <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
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>
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 (Ping timeout: 480 seconds)
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:48 <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 (Read error: Connection reset by peer)
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
17:23:52 <DorpsGek> [OpenTTD/OpenTTD] rubidium42 updated pull request #10355: Change #10077: make maximum loan a positive multiple of the loan interval
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]>
17:37:45 <Pruple>
17:37:45 <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:44 <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]>
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 ->
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
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]>
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 (Quit: A toaster's basically a soldering iron designed to toast bread)
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]>
17:52:50 <TallTyler> I previously tried that:
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:55:59 <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:15 <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]>
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:40 <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:54 <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 (Remote host closed the connection)
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
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:08 <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 (Read error: Connection reset by peer)
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
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 areas / regions / whatever
19:24:52 <andythenorth[d]> most important thing
19:24:56 <andythenorth[d]> what to call them?
19:24:59 <andythenorth[d]> NoRegion?
19:25:18 <andythenorth[d]> ChunkyAreas?
19:26:52 <dP> YouShallNotPass
19:27:05 <andythenorth[d]> EscapeFromColditz
19:27:09 <andythenorth[d]> Virus
19:27:27 <andythenorth[d]> hmm, Blockbusters is too UK specific, but some will get the reference
19:29:33 <Rubidium> is it, I thought there is like one Blockbuster in the US
19:31:54 <CplBurdenR3294> andythenorth[d]: "I'll have a P please Bob" ?
19:31:58 <DorpsGek> [OpenTTD/OpenTTD] LC-Zorg opened issue #10367: [Detail] Main menu window looks "cheap" at magnifications other than like 1x, 2x, 4x
19:32:18 <dP> andythenorth[d]: TrespassersW
19:32:37 <petern> Cheap.
19:33:39 <dP> you should've added ornaments :p
19:34:11 <DorpsGek> [OpenTTD/OpenTTD] LC-Zorg commented on issue #10367: [Detail] Main menu window looks "cheap" at magnifications other than like 1x, 2x, 4x
19:34:15 <LordAro> the lack of zoom is a bit odd
19:35:07 <petern> Non-integer nearest-neighbour scaling looks absolutely terrible.
19:35:58 <LordAro> but i think we can come up with a better title than "cheap"
19:40:50 <petern> If the game was rendered by OpenGL you would just allow it. But it's not.
19:42:31 <Rubidium> maybe scale everything down to 0.25, then it's just whole integer nearest neighbour ;)
19:45:49 <petern>
19:45:49 <petern> Such legible.
19:47:36 <petern>
19:47:36 <petern> Oh, and this is the one thing that IS drawn with OpenGL...
19:55:09 <petern> Back in the old days the blitter scaled on the fly, although they could still only do power-of-2 scaling.
19:58:02 <dP> why is it not scaling anymore?
19:58:08 <dP> wouldn't that be faster?
19:58:14 <dP> and less memory
19:59:06 <petern> I don't think would be faster, but less memory certainly.
20:01:48 *** _aD has joined #openttd
20:06:31 <Samu> glx, i had a LoadScript() crash again, instance was nullptr
20:06:43 <Samu> not sure how to reproduce this one, it was unexpected
20:08:45 <Samu> wait not instance
20:08:49 <Samu> it was
20:09:07 <Samu> i post screenshot
20:09:37 <andythenorth[d]> extend GSNews?
20:09:39 <Xarick>
20:09:47 <andythenorth[d]> per-company method to clear the news history?
20:14:09 <glx[d]> From the call stack it seems it's not related to the savegame changes and delay load
20:14:44 <petern> Did you use a wrong style comment?
20:15:45 <DorpsGek> [OpenTTD/OpenTTD] rubidium42 requested changes for pull request #10227: Fix 3c047b1: AIGroup.GetProfitLastYear could get values different than those displayed in GUI
20:15:57 <glx[d]> Move up in the call stack
20:17:23 <glx[d]> If `this` is null here, the cause is in the caller
20:17:27 <Samu> ah, i know what went wrong, i made a boo boo in the compat_xx.nut file
20:17:40 <Samu> and the compat_xx didn't compile
20:17:43 <andythenorth[d]> hmm is clear news history per company command, or per player?
20:18:13 <glx[d]> Oh so it could be related to Andy's issue
20:19:26 <andythenorth[d]> sounds similar
20:20:11 <Samu> try this to reproduce it, create an error in compat_13.nut file, then launch an AI that requires compatibility to the API 13, it will fail compiling the script and then crashes openttd
20:21:04 <JGR> andythenorth[d]: It's per client
20:21:50 <JGR> It's a UI thing, not something that GS can (or should) do
20:23:21 *** sla_ro|master has joined #openttd
20:26:22 <andythenorth[d]> ok
20:26:56 <andythenorth[d]>
20:26:56 <andythenorth[d]> it seemed like a possible alternative solution for this:
20:30:46 <DorpsGek> [OpenTTD/OpenTTD] AdminChucky opened issue #10368: [Crash]: Client chrashed with an error message (13.0RC1)
20:35:51 <JGR> A message mode to turn off industry news would be a better fix for news spam like that
20:36:43 <andythenorth[d]> seems like it's non trivial
20:36:59 <andythenorth[d]> if I've understood correctly, the event bubbling to the GS relies on the news message
20:37:41 <JGR> No, they are separate
20:38:53 <JGR> GS/AI events are their own thing, news is just for the humans to ignore in the UI
20:41:14 <andythenorth[d]> what do I grep for? 😛
20:41:34 <JGR> As an example, see: <>
20:42:34 <andythenorth[d]> oh so we could suppress news on a flag?
20:45:52 <JGR> There are settings for each of the news types in `enum NewsType`
20:46:07 <JGR> And it seems that you can disable industry open/close news already
20:48:04 <Samu> Pruple, do you have an aircraft with a range big enough, like max(uint16), or just tell me what's the max range you can insert
20:48:32 <Samu> wanna test some overflow with a real newgrf
20:50:48 <andythenorth[d]> JGR: in GS? 😮
20:51:00 <andythenorth[d]> for a specific instance of construction / prospecting?
20:51:12 <JGR> No, in the settings
20:51:55 <andythenorth[d]> yes
20:53:22 <Samu> how large is a W?
20:54:02 <JGR> <>
20:54:14 <Pruple> No, I don't have any aircraft with ranges. Since the longest possible distance is much less than ffff, what overflow are you expecting in real grfs?
20:56:42 <Samu> Pruple,
20:56:53 <Samu> this is multiplying uint16 * uint16
20:58:52 <Pruple> Why? :/
21:00:31 <glx[d]> oh #10368 is a nice one, no front window at all
21:01:01 <Rubidium> glad RC1 did not become the final release ;)
21:01:01 <JGR> The calculation of `AircraftCache.cached_max_range_sqr` has the same issue
21:01:04 <andythenorth[d]> why am I driving a terrible tank in Blitz and losing
21:01:10 <andythenorth[d]> instead of patching GS?
21:01:25 <andythenorth[d]> oh I think Samu has the monopoly on silly C++ questions today 🙂
21:01:29 <andythenorth[d]> there is no room for mine
21:02:04 <glx[d]> well I'm just assuming based on the assertion failure
21:04:01 <Rubidium> glx[d]: it's easily reproducable. It requires network and autorestart, but... you can make a savegame that is just before the autorestart point. Then start that server and load that savegame. It will simply reload that savegame upon restarting, so it's "ready" for the next debug run
21:05:10 *** tokai|noir has quit IRC (Read error: Connection reset by peer)
21:06:05 *** tokai has joined #openttd
21:06:05 *** ChanServ sets mode: +v tokai
21:16:06 *** Wormnest has quit IRC (Ping timeout: 480 seconds)
21:22:41 *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
21:22:49 *** WormnestAndroid has joined #openttd
21:23:38 <andythenorth[d]> ok so GS revival fork?
21:25:06 <Rubidium> glx[d]: and it's a relatively easy fix I think
21:25:27 <glx[d]> anyway I misread the message box
21:25:55 <DorpsGek> [OpenTTD/OpenTTD] glx22 commented on issue #10368: [Crash]: Client chrashed with an error message (13.0RC1)
21:27:41 <glx[d]> there's a window while they should all be closed at that point
21:28:36 <DorpsGek> [OpenTTD/OpenTTD] rubidium42 opened pull request #10369: Fix #10368, Fix 994bf19: server restarting game caused clients to hit assertion
21:34:06 <Rubidium> yup, that should do the trick
21:34:35 <glx[d]> there's one `new` in bootstrap close
21:35:39 <glx[d]> maybe ErrmsgWindow too
21:37:51 <Rubidium> the bootstrap one checks for _exit_game, which is set when closing OpenTTD in GM_MENU and GM_BOOTSTRAP. So that shouldn't trigger
21:39:54 <glx[d]> I checked all Close()
21:40:41 <glx[d]> and funnily highscore was checking for GM_MENU to not reopen vital windows 🙂
21:40:58 <glx[d]> but endgame did not
21:42:30 <Rubidium> ErrmsgWindow would crash too, if it weren't for UnshowCriticalError that unset the boolean to open the next error message so this issue doesn't trigger for critical errors
21:43:28 <Rubidium> the highscore window GM_MENU check was why I could so quickly figure out what might work ;)
21:44:36 *** keikoz has quit IRC (Ping timeout: 480 seconds)
21:48:43 <DorpsGek> [OpenTTD/OpenTTD] glx22 approved pull request #10369: Fix #10368, Fix 994bf19: server restarting game caused clients to hit assertion
21:48:46 <DorpsGek> [OpenTTD/OpenTTD] rubidium42 merged pull request #10369: Fix #10368, Fix 994bf19: server restarting game caused clients to hit assertion
21:48:49 <DorpsGek> [OpenTTD/OpenTTD] rubidium42 closed issue #10368: [Crash]: Client chrashed with an error message (13.0RC1)
21:50:08 <andythenorth[d]> oh can merge? 🙂
21:50:10 <andythenorth[d]> pls?
21:54:59 <TallTyler> Does it work for you?
21:55:09 <TallTyler> (I don't have a GS that prospects to test with)
21:55:23 *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
21:55:56 *** WormnestAndroid has joined #openttd
21:59:18 <Samu> ScriptOrder.GetOrderDistance doesn't even enforce conditions
21:59:30 <Samu> seems wrong
21:59:49 *** Wormnest has joined #openttd
22:01:04 <Samu>
22:01:23 <Samu> what if i give invalid vehicle type, invalid tiles, etc?
22:02:02 <glx[d]> andythenorth[d]: please attach your broken GS in #10361 as I can't reproduce when trying to create a broken one myself
22:04:38 <DorpsGek> [OpenTTD/OpenTTD] andythenorth commented on issue #10361: [Crash]: GS crashes OpenTTD with malformed comment prefix
22:05:11 <andythenorth[d]> But also as TB asked - with official nightly, no crash
22:07:12 <DorpsGek> [OpenTTD/OpenTTD] andythenorth commented on issue #10361: [Crash]: GS crashes OpenTTD with malformed comment prefix
22:07:44 <andythenorth[d]> well with official 13.0 beta 2 no crash
22:07:50 <andythenorth[d]> but nightly does crash
22:08:02 <andythenorth[d]> something to bisect?
22:09:56 <glx[d]> if I can reproduce it will be a good start
22:10:27 <andythenorth[d]> # is l61 in temp_prototyping.nut
22:11:07 <andythenorth[d]> TallTyler: untested, but I'd rely on the approval 🙂
22:11:20 <andythenorth[d]> merge is just a bureaucracy step at that point
22:12:06 *** nielsm has quit IRC (Ping timeout: 480 seconds)
22:12:09 <glx[d]> if non prospect worked, prospect should now work the same 🙂
22:13:37 <TallTyler> I don't want to merge without either testing it myself or seeing test results, seems like bad form 🤷
22:14:01 <andythenorth[d]> bit of a judgement call, depending what it is, who committed it, and who approved it 🙂
22:14:54 <andythenorth[d]> TL;DR I'd test the PR, but compiling is faff for me right now due to local issues
22:15:03 <andythenorth[d]> I have to patch every time to compile
22:22:42 <andythenorth[d]> is bedtime?
22:23:33 <Rubidium> agreed ;)
22:26:10 <Rubidium> Samu: an invalid vehicle type will give you the manhattan distance, an invalid tile will at least mean that you do not get into the IsStationTile branches because that checks for invalid tile, and both Distance functions check for invalid tiles as well. So you'd just get -1
22:27:13 <Samu> it returns as uint, so, not really -1
22:28:20 <glx[d]> andythenorth[d]: it doesn't crash with my debug build 😦
22:29:02 <Rubidium> Samu: it doesn't crash and you get a "garbage" distance back. Fine in my book ;)
22:29:12 <Samu> haha
22:29:47 <andythenorth[d]> glx[d]: 😐
22:29:50 <andythenorth[d]> mac build specific?
22:30:04 <andythenorth[d]> don't they handle crashing differently?
22:30:23 <glx[d]> building release (but I hate to do it, it takes so much time)
22:30:31 *** HerzogDeXtEr has quit IRC (Read error: Connection reset by peer)
22:32:33 <glx[d]> hmm I could just try to launch steam nightly
22:33:09 <DorpsGek> [OpenTTD/OpenTTD] 2TallTyler merged pull request #10360: Fix: Switch to OWNER_TOWN prevented OWNER_DEITY test during industry prospecting.
22:33:12 <TallTyler> YOLO
22:33:25 <Samu> question
22:33:33 <Samu> is UINT32_MAX the same in all systems
22:33:39 <Samu> all builds, etc
22:33:51 <Samu> the same value
22:34:27 <Samu> AITown.GetTownCargo has a return UINT32_MAX
22:34:40 <glx[d]> TallTyler: it can't be more broken than before the fix 🙂
22:35:56 <Samu> oops GetCargoGoal
22:35:57 <Samu> my bad
22:36:00 <glx[d]> and no crash with nightly andythenorth[d]
22:37:09 <andythenorth[d]> oof
22:37:45 <petern> Watching John Romero creating a Doom map...
22:38:26 <petern> Not very productive
22:39:53 *** Wolf01 has quit IRC (Quit: Once again the world is quick to bury me.)
22:43:22 <glx[d]> andythenorth[d]: the only way to find where it crashes for you would be to run it through debugger
22:43:58 <glx[d]> because [04] openttd 0xba798001003b29c4 (Game::StartNew() + -5009832372984610448) does tell much 🙂
22:44:49 <Rubidium> does it? That's quite a big offset for it to still be in that function
22:45:51 <glx[d]> forgot a "not"
22:46:25 <andythenorth[d]> petern: is he any good at it? 🙂
22:46:49 <petern> I think he might have done it before.
22:46:51 <glx[d]> probably somewhere in Game::instance->Initialize(info); call, but that's all I can guess
22:47:13 <andythenorth[d]> well not tonight 🙂
22:47:27 <andythenorth[d]> more sleep needed, less illness also
22:48:01 <glx[d]>
22:48:10 <glx[d]> that's all it does for me
22:48:26 <andythenorth[d]> yeah that's what the 13 beta 2 does for me
22:48:39 <andythenorth[d]> I suspect something in the mac build, but pure guessing
22:48:49 <glx[d]> oh could be the fonts
22:49:39 <glx[d]> can't remember if font code was touched between beta2 and RC1
22:49:59 <andythenorth[d]> I can try and repro more another day
22:50:07 <andythenorth[d]> we could just say "don't ship broken GS"
22:50:13 <andythenorth[d]> but seems a bit DoS potential
22:50:42 <glx[d]> there's also Change: [macOS] Set minimum macOS version to 10.13
22:52:28 *** Wormnest has quit IRC (Ping timeout: 480 seconds)
22:53:41 <glx[d]> so maybe test 7425660b3eb603c5fda21c7f4379dbb91d9d4887 and 5eb7e1d3abab9032ffb3733a3138a8d6f4434dab
22:56:28 <Samu> this is almost ready for PR... maybe tomorrow
22:57:48 *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
22:58:33 *** WormnestAndroid has joined #openttd
22:59:20 <glx[d]> anyway only changes specific to macos are 7425660b3eb603c5fda21c7f4379dbb91d9d4887 and some fontcache stuff
23:02:49 *** Samu has quit IRC (Quit: Leaving)
23:25:20 *** gelignite has quit IRC (Quit: Stay safe!)
23:27:01 *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
23:28:23 *** WormnestAndroid has joined #openttd
23:29:55 *** Wormnest has joined #openttd
23:32:51 <glx[d]>
23:32:51 <glx[d]> and no crash in wsl
23:36:31 *** sla_ro|master has quit IRC ()