IRC logs for #openttd on OFTC at 2025-05-31
โด go to previous day
00:13:39 *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
00:14:13 *** WormnestAndroid has joined #openttd
00:19:13 *** Zathras is now known as debdog
00:38:41 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
00:40:37 *** WormnestAndroid has joined #openttd
02:44:26 *** gnu_jj_ has joined #openttd
02:48:04 *** gnu_jj has quit IRC (Ping timeout: 480 seconds)
03:25:41 *** debdog has quit IRC (Ping timeout: 480 seconds)
03:56:35 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
03:56:37 *** WormnestAndroid has joined #openttd
03:56:47 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
03:56:48 *** WormnestAndroid has joined #openttd
03:56:51 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
03:56:51 *** WormnestAndroid has joined #openttd
04:08:52 *** ipravd_ has joined #openttd
04:20:22 *** ipravd_ has joined #openttd
04:21:59 *** ipravd_ has joined #openttd
04:28:58 <ipravd_> I am looking at bug #14277 at Github and I went down the rabbit holde trying to understand airport blocking mechanisms. What does AirportBlocks actually represent? Is it a block as in part of the airport layout or as a obstruction of an area of the airport? It seems like it acts as both
04:35:10 *** ipravd_ has quit IRC (Quit: ipravd_)
04:35:41 *** ipravd_ has joined #openttd
04:39:32 <DorpsGek> - Update: Translations from eints (by translators)
06:20:16 *** D-HUND is now known as debdog
06:28:11 *** ipravd_ has quit IRC (Ping timeout: 480 seconds)
08:05:02 *** mindlesstux has joined #openttd
08:11:01 *** mindlesstux has joined #openttd
09:56:52 <xarick> I shouldn't speak against it, but it could perhaps use the excessive cpu valuator thingy
09:59:04 <andythenorth> ha ha in retrospect maybe railtypes should have had classes ๐
10:00:17 * andythenorth tries to work out if we can do predicates for partial matching against railtype labels
10:00:44 * andythenorth this is not wise
10:07:21 <andythenorth> `railtype_has_byte(value, shift, mask)` ๐
10:07:39 <andythenorth> wonder if raw nfo can do that
10:24:20 *** brickblock19280 has joined #openttd
10:24:20 <brickblock19280> Current railtype and functions should work
10:24:45 <brickblock19280> But nothing makes sure the actual label follows the scheme which is why current railtype doesn't work
10:31:36 *** riuzaki56 has joined #openttd
10:31:36 <riuzaki56> I would like to add a city name, is it possible? โค๏ธ
10:44:53 <xarick> `i++.tostring()` is squirrel smart enough to understand this?
10:45:37 <FLHerne> riuzaki56: The existing town name lists aren't being changed, but you can create a NewGRF with whatever names you like
10:46:09 <FLHerne> (there are already 'French Town Names' and 'French Small Town Names')
11:09:24 <LordAro> riuzaki56: the way the internal town name lists is by index, so to change them will result in renaming towns in all existing saves
11:09:55 <xarick> just discovered some anomaly
11:10:09 <LordAro> so thank you for the lovely words, but we cannot alter those names (without significantly reworking town names)
11:14:35 <xarick> the problem happens in the `while` test. I made sure coordinates x and y always make up valid tiles inside the map, but somehow the tests only returns true the first time, and false on the next. I thought it could be due to async mode when tested without it, it still happens.
11:19:30 <xarick> BuildSign doesn't return a true
11:22:11 <xarick> `while (GSSign.IsValidSign(GSSign.BuildSign(GSMap.GetTileIndex(x, y), i.tostring()))) {` this works
11:26:29 <belajalilija> I just saw in the jgr channel thereโs bugs relating to the grf window but that theyโre vanilla bugs
11:26:36 <belajalilija> I think i have another
11:27:10 <belajalilija> When arranging grfs one can control click on move up to send a grf to the top
11:27:41 <belajalilija> The intended behaviour is that the last grf becomes the first and the old first becomes the second
11:28:11 <belajalilija> However the reality is that they just swap around
11:41:03 <_jgr_> It is not a vanilla bug, it is fixed now anyway
11:57:14 *** akimoto has joined #openttd
12:01:09 *** reldred has quit IRC (Quit: User went offline on Discord a while ago)
12:02:42 <peter1138[d]> Nice, you tackled the other issue while I was out cycling instead.
12:06:13 <peter1138[d]> Hmm, not sure about it though. I think the drop function needs to consider half-positions.
12:27:57 *** toktik is now known as Guest17069
12:28:01 *** Guest17069 has quit IRC (Remote host closed the connection)
12:33:38 <xarick> something's wrong with the face
12:44:54 <peter1138[d]> Did you not know that LordAro has no nose or mouth?
12:49:36 <andythenorth> witness protection programme
12:49:41 <andythenorth> sunglasses, obscured features
12:50:42 <_glx_> maybe something wrong in `RandomCompanyManagerFaceBits` and callees
12:51:14 <_glx_> or it's the drawing code
12:52:56 <_glx_> truebrain: with reusable workflow I think it should be fine in OpenTTD repo
12:54:51 <peter1138[d]> xarick: Can you get the face number, or at least a save game?
12:55:14 <peter1138[d]> I have my branch for faces so would be interesting to see.
12:56:13 <xarick> yes, as soon as I can do it: I'm in the middle of a GS massing 1 million vehicles
12:56:31 <_glx_> ah another stupid test ๐
13:00:01 <xarick> it's about moving wagons
13:03:55 <peter1138[d]> Heh, it works on OpenGFX 1 and 2. Fun.
13:05:37 <peter1138[d]> Some bug generating the number, though.
13:05:59 <peter1138[d]> It's not possible to enter this number.
13:06:48 <peter1138[d]> Let's try my branch ๐
13:07:25 <xarick> I think AroAI changes gender if it's not male, let me check
13:12:25 <peter1138[d]> I think `ScaleAllCompanyManagerFaceBits()` doesn't take all the conditional parts into account, and Zephyris' fix to allow a wider ride of valid values then falls foul.
13:13:50 <peter1138[d]> With my branch, it's still broken until I go into the face window which doesn't allow the invalid face.
13:14:05 <peter1138[d]> So my branch will fix this from happening in future, at least.
13:14:56 <peter1138[d]> But also my branch doesn't allow changing gender, because the ethnicity and gender markers are removed and replaced with a generic numeric face type.
13:16:06 <peter1138[d]> Maybe I need to add a property to the face number :/
13:29:41 *** gelignite has joined #openttd
13:33:08 <andythenorth> face classes, labels, badges?
13:34:32 <peter1138[d]> Are face classes like cargo classes, or like badge classes?
13:39:11 <peter1138[d]> Well, that's easy.
13:39:29 *** jfkuayue has joined #openttd
13:40:52 <xarick> when random gives you a perfect round number
13:42:12 <xarick> there are 300000 vehicles
13:42:48 <xarick> how many face combinations there are
13:46:44 <peter1138[d]> If you count all the variants of moustache/no moustache, glasses/no glasses, earing/no earing... etc... as separate faces...
13:47:43 <peter1138[d]> Yes, all variants, but only valid.
13:47:48 <xarick> took me a while to get this error
13:48:08 <peter1138[d]> What a waste of 32 bits ๐
13:48:36 <peter1138[d]> There is not uint25_t though.
13:51:55 <peter1138[d]> NewGRF authors: if there was a NewGRF face spec, would you create faces?
13:52:16 <peter1138[d]> (Or am I just over-engineering these changes...)
13:53:12 *** reldred has joined #openttd
13:53:12 <reldred> Would be fun to implement the mars faces as new faces rather than replacing
13:53:35 <reldred> But thereโs probably things to be NewGRFโd higher on peopleโs wish lists
13:54:47 <peter1138[d]> Yes, but wish list priority isn't the same as implementation priority.
13:55:03 <xarick> a list with 64000 SignIDs can't trigger excessive cpu in filter function
13:55:18 <xarick> only a list with 300000 VehicleIDs can
13:55:51 <xarick> unless i make the filter function really bad
13:55:58 <reldred> peter1138[d]: Hence the tongue sticking out face ๐
13:56:47 <peter1138[d]> Basically, if I design these face changes to use labels, but don't actually implement anything in NewGRF, then it means it's ready-to-go for later if someone does implement it.
13:57:50 <peter1138[d]> And using labels basically just means that when you save your favourite face it knows which face it's meant to be, instead of just a numeric ID which could change later.
13:58:35 <reldred> Yeah I mean if youโre already there it makes sense
13:58:42 <peter1138[d]> Face no. then becomes something like "label:number"
13:58:56 <peter1138[d]> (We are not adding labels for all the different combinations, hehe)
14:03:02 <andythenorth> give each character meaningful semantics
14:03:11 <andythenorth> "that won't end badly"
14:06:59 <peter1138[d]> GRFv9.A should make all labels be string labels.
14:10:52 *** akimoto has quit IRC (Remote host closed the connection)
14:24:40 <talltyler> Is it finally time for pickpacketโs beard faces?
14:36:58 *** Wormnest has joined #openttd
14:41:25 <xarick> ``` local filter_function = function(item, out, max, j) {
14:41:25 <xarick> ret = GSBase.Chance(out % max, max);
14:41:54 <xarick> I'm however surprised about random not being deterministic
14:46:26 <xarick> ah, different map seeds, im stoopid again
14:51:01 <xarick> my stuff is slow, must fix
14:59:48 <peter1138[d]> Is AI's ability to get/set gender important?
15:01:17 <xarick> unsure which AIs base their decisions on president gender
15:02:15 <xarick> maybe CivilAI, it does some whacky stuff
15:10:10 <yiffgirl> peter1138[d]: barely count as a newgrf developer but i've wanted to commission art for a furry faceset for ages, if that means anything.
15:11:44 <pickpacket> talltyler: I have a GS to finish first. Trying to wrap my head around how GSText works ๐คจ
15:12:38 <peter1138[d]> Bah, I can't pipe SetBitIterator() into std::views::drop() ๐ฆ
15:13:05 <pickpacket> talltyler: and also a string issue thingy
15:13:16 <pickpacket> to fix, I mean. Before the beard NewGRF
15:16:40 <pickpacket> Ohhhh! Now I understand GSText
15:19:35 <pickpacket> is anything following # in a lang file a comment or only when the line starts with #?
15:24:57 <peter1138[d]> Probably not anything, strings might need to contain
15:27:16 <_zephyris> peter1138[d]: Quite possibly, but using the highly controversial stable diffusion... ๐
15:27:40 <_zephyris> What's your imagined spec?
15:27:48 <peter1138[d]> If you're running it locally and you trained it all yourself...
15:27:56 *** Wormnest has quit IRC (Ping timeout: 480 seconds)
15:28:08 <_zephyris> Funny you should say that...
15:30:45 <peter1138[d]> You get a blank slate of options.
15:31:19 <peter1138[d]> You get to to add layers in whatever order you like, and those layers can have whatever number of sprites you like.
15:31:31 <peter1138[d]> That will allocate enough bits to store a value for that layer.
15:32:52 <_zephyris> How are you thinking of handling cross-compatibility?
15:33:07 <peter1138[d]> Well, it's NewGRF, so everyone needs to have the same NewGRFs.
15:33:38 <_zephyris> Meaning face style compatibility. Ogfx features aren't compatible with original
15:34:05 <peter1138[d]> I'm not sure what you mean.
15:34:06 <_zephyris> But, someone might want to add a new layer to ogfx
15:34:23 <peter1138[d]> Basesets have to stick to the existing rules.
15:34:35 <peter1138[d]> But NewGRFs get to define their own.
15:34:56 <_zephyris> So how would two newgrfs interact?
15:35:07 <peter1138[d]> Same as anything else?
15:35:22 <peter1138[d]> You get faces from both NewGRFs...
15:36:25 <_zephyris> Say there is a newgrf "steampunk faces", how will "beards for steampunk faces" indicate it should add a layer to the other newgrf?
15:38:17 <peter1138[d]> Well, keeping it simples, all NewGRF faces are standalone, not adding layers to something else.
15:38:45 <peter1138[d]> So "beards for steampunk faces" would have to fork "steampunk faces" and add the layer it wants.
15:39:30 <peter1138[d]> Making it more complex, perhaps NewGRFs could be added the ability to add a layer to another face, as long as bits are available.
15:41:06 <_zephyris> At a practical drawing level, there are three tiers. Overall design/pose. Distinct genders/skin tones/etc which can share features. Then, layers within those groups.
15:41:44 <_zephyris> Might be nice to be able to add cross newgrf, but also might be too much work for too little effort
15:41:46 <andythenorth> can we lego people? ๐
15:42:28 <peter1138[d]> skin tones and genders are abstract concepts.
15:42:44 <peter1138[d]> In my branch those are moved to numbered styles.
15:43:23 <peter1138[d]> Of course, different styles can reuse sprites if they want to. The layers are defined separately for each style.
15:43:51 <peter1138[d]> So you don't need to choose a skin colour, or a gender. You just choose a base style.
15:44:07 <peter1138[d]> Hence my question about the script API, which decided that gender was important.
15:44:19 <_zephyris> peter1138[d]: Yup, equivalent to overall pose, full body vs head, etc.
15:46:18 <_zephyris> peter1138[d]: Is there any gender agreement in strings?
15:47:04 <peter1138[d]> Faces have no impact on any strings used in game (other than the display of the selected gender)
15:47:42 <peter1138[d]> The API is just there to allow an AI to present as male or female without having to understand the numerical format of face nos.
15:47:56 <xarick> oops, i managed to crash openttd
15:48:07 <peter1138[d]> When an AI changes gender, it makes a random face for the AI.
15:49:07 <xarick> `type filter_function_return` = crash
15:50:04 <_zephyris> Doesn't sound very important!
15:51:25 <peter1138[d]> Nope. Just this AI uses it to be a little interesting ๐
15:52:54 *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
15:54:29 *** WormnestAndroid has joined #openttd
16:11:31 *** ipravd_ has joined #openttd
16:43:48 *** ipravd_ has quit IRC (Read error: Connection reset by peer)
16:47:51 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
16:48:35 *** WormnestAndroid has joined #openttd
16:57:35 <xarick> this->Died() nulls this->engine, RegisterGameTranslation wants to engine.GetVM() but struct at NULL
17:00:46 *** ipravd_ has joined #openttd
17:22:46 <peter1138[d]> Would splitting out the face no. be any benefit... instead of 353666203, "Y:Y:1:2:3:1:2:2:2:2:1"
17:23:40 <peter1138[d]> Remember when chunky bevels was a joke-meme and we didn't have it?
17:23:55 <andythenorth> life was less good
17:33:50 <_glx_> xarick: that looks like a squirrel compile error (`type filter_function_return` is a syntax error)
17:34:33 <_glx_> but it's probably happening during compat loading
17:34:47 <_glx_> not the best place for compile errors I guess
17:36:11 <_glx_> oh I see, it used to be fine but some code has been reordered IIRC
17:40:12 <peter1138[d]> As I say, easy fix ๐
17:40:12 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
17:46:50 *** WormnestAndroid has joined #openttd
17:54:19 <_zephyris> peter1138[d]: That bevel settings list looks nice, trying to work out what you've refined
17:54:20 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
17:55:47 *** WormnestAndroid has joined #openttd
17:57:33 <peter1138[d]> peter1138[d]: Previously the matrix was floating inside the main panel which covered most of the window, instead of being next to it.
17:58:01 <peter1138[d]> So it's more like a other matrix-infused windows.
18:07:54 *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
18:11:13 *** WormnestAndroid has joined #openttd
18:20:34 <_zephyris> Works well IMO, good style match
19:01:34 *** WormnestAndroid has quit IRC (Remote host closed the connection)
19:01:37 *** WormnestAndroid has joined #openttd
19:02:17 <_zephyris> peter1138[d]: Style 1/5?
19:02:54 <peter1138[d]> The weirdness was having chunky bevels off ๐
19:03:29 <_zephyris> I can imagine a "Set 1/N" at the top level, for newgrf defined face sets.
19:05:43 <peter1138[d]> None of the values have names, so the styles don't have names either. And one of the considerations was that the terms "European" and "African" are not entirely... neutral.
19:06:03 <peter1138[d]> So now it's all just numbers.
19:06:47 <_zephyris> I was just confused why it's 5 instead of 4 styles...
19:08:49 <peter1138[d]> As a quick test, I added a style with no layers ๐
19:09:00 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
19:09:30 *** WormnestAndroid has joined #openttd
19:19:56 <peter1138[d]> GetPresidentGender()
19:20:07 <peter1138[d]> return Random()? ๐
19:20:20 <peter1138[d]> (Or return 4; guaranteed random...)
19:34:54 <xarick> List of potentially nasty function:
19:34:54 <xarick> `ScriptTileList::AddRectangle`
19:34:54 <xarick> `ScriptTileList::RemoveRectangle`
19:34:54 <xarick> `ScriptTile::IsBuildableRectangle`
19:34:54 <xarick> `ScriptTile::LevelTiles`
19:35:21 <andythenorth> what's nasty about them?
19:35:54 <_glx_> but using AI on 4k map is unusual
19:36:27 <peter1138[d]> Doctor, doctor, why does it hurt when I smack my head against the wall?
19:37:00 <xarick> OtviAI was found adding rectangles with 1.5 million tiles
19:37:01 <andythenorth> are we once again learning that computation is computationally expensive?
19:37:15 <andythenorth> I mean...I learn that every month or so with Horse
19:38:12 <xarick> PlantTreeRectangle seems reasonable
19:38:17 <xarick> caps at a max of 20x20
19:41:51 <xarick> i thought otviai had a repository
19:43:14 *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
19:49:53 *** WormnestAndroid has joined #openttd
19:54:38 *** WormnestAndroid has quit IRC (Remote host closed the connection)
19:54:50 *** WormnestAndroid has joined #openttd
20:04:48 *** WormnestAndroid has quit IRC (Remote host closed the connection)
20:04:51 *** WormnestAndroid has joined #openttd
20:14:23 <xarick> nest quest: slow rectangle
20:21:38 <riuzaki56> I'd like to create a NewGRF that allows Vannes to be added as a city.
20:21:40 <riuzaki56> name: string(STR_GRF_NAME);
20:21:42 <riuzaki56> desc: string(STR_GRF_DESC);
20:21:42 <riuzaki56> url: string(STR_WEBSITE);
20:21:44 <riuzaki56> min_compatible_version: 1;
20:21:48 <riuzaki56> styles: string(STR_TOWN_VANNES);
20:21:50 <riuzaki56> text(string(STR_TOWN_VANNES), 1),
20:21:52 <riuzaki56> But it tells me this: "nmlc ERROR: "Vannes.nml", line 1: Syntax error, unexpected token "vannes" Help me
20:22:51 <_glx_> clearly invalid nml, I guess you asked an AI for that
20:24:10 <_glx_> anyway a townname grf with a single town is not a good idea, you won't be able to get more than one town on the whole map
20:24:12 <fairyflossy> riuzaki56: The problem you also need to consider is that you can only have only one town name set active
20:24:15 <andythenorth> GPT got closer, but still bullshit `grf {
20:24:15 <andythenorth> grfid: "VNNS01",
20:24:15 <andythenorth> name: string(STR_GRF_NAME),
20:24:15 <andythenorth> desc: string(STR_GRF_DESC),
20:24:17 <andythenorth> min_compatible_version: 1,
20:24:17 <andythenorth> palette: PAL_NONE,
20:24:21 <andythenorth> STR_GRF_NAME : string("Vannes Town Name Set")
20:24:21 <andythenorth> STR_GRF_DESC : string("Adds a single town name: Vannes")
20:24:23 <andythenorth> town_names(VANNES_SET, french) {
20:24:27 <andythenorth> town_name(VANNES_NAME) {
20:24:27 <andythenorth> name: string(STR_TOWN_NAME_VANNES);
20:24:31 <andythenorth> STR_TOWN_NAME_VANNES : string("Vannes")
20:24:44 <_glx_> yeah that's invalid nml too ๐
20:24:57 <andythenorth> "vector collapse"
20:25:20 <andythenorth> infinite monkey typewriter
20:28:19 <riuzaki56> Why is your pp the Breton logo?
20:32:57 <peter1138[d]> That's a bit personal ๐
20:32:58 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
20:34:14 *** WormnestAndroid has joined #openttd
21:28:29 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
21:34:27 *** WormnestAndroid has joined #openttd
21:44:21 *** ipravd_ has quit IRC (Ping timeout: 480 seconds)
21:44:34 *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
21:45:39 *** WormnestAndroid has joined #openttd
21:46:53 <peter1138[d]> `player_face = default/face4:85230720`
21:47:11 <peter1138[d]> Config changes, woo.
21:57:16 <peter1138[d]> Just the script gender connundrum :/
21:57:41 *** keikoz has quit IRC (Ping timeout: 480 seconds)
22:03:02 *** WormnestAndroid has quit IRC (Remote host closed the connection)
22:03:05 *** WormnestAndroid has joined #openttd
22:04:23 *** Wolf01 has quit IRC (Quit: Once again the world is quick to bury me.)
22:15:12 <peter1138[d]> Faked it, but...
22:34:11 *** WormnestAndroid has quit IRC (Remote host closed the connection)
22:34:14 *** WormnestAndroid has joined #openttd
22:42:51 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
22:43:24 *** WormnestAndroid has joined #openttd
22:49:20 <peter1138[d]> Very side-quest.
22:51:28 <peter1138[d]> Hmm, unused strings.
22:53:16 <peter1138[d]> I should do my graph stuff at some point.
22:55:28 <peter1138[d]> Huih, that's actually slightly less lines of code, although it's a bit on the messy side at the moment.
23:02:39 *** Flygon has quit IRC (Read error: Connection reset by peer)
23:08:45 *** Wormnest has joined #openttd
continue to next day โต