IRC logs for #openttd on OFTC at 2023-01-19
        
        
        
            โด go to previous day
00:01:02  <dP> finally managed to merge rc1 to cmclient...
 
00:04:59  <dP> laptop display is too small to test 2x though
 
00:33:09  <TallTyler> I renamed that issue ๐
 
00:39:56  <reldred> โIf you donโt like it donโt use itโ
 
00:41:50  <petern> (Excuse the bad fonts, that's because I only implemented 8bpp-simple, so there's no font antialiasing)
 
01:15:31  *** Wormnest has quit IRC (Ping timeout: 480 seconds)
 
01:25:26  *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
 
01:25:49  *** WormnestAndroid has joined #openttd
 
01:56:08  *** Wormnest has joined #openttd
 
02:10:54  *** ChanServ sets mode: +v tokai
 
02:17:51  *** tokai|noir has quit IRC (Ping timeout: 480 seconds)
 
02:48:50  *** Wormnest has quit IRC (Ping timeout: 480 seconds)
 
03:15:48  *** D-HUND has quit IRC (Ping timeout: 480 seconds)
 
03:26:16  *** Wormnest has joined #openttd
 
03:45:05  *** andythenorth[d] has quit IRC (Remote host closed the connection)
 
03:45:05  *** Brickblock1 has quit IRC (Remote host closed the connection)
 
03:45:05  *** TheRisky_Bandit030 has quit IRC (Remote host closed the connection)
 
03:45:05  *** Heresy has quit IRC (Remote host closed the connection)
 
03:45:05  *** TallTyler has quit IRC (Remote host closed the connection)
 
03:45:05  *** EmperorJake has quit IRC (Remote host closed the connection)
 
03:45:05  *** JohnFranklin has quit IRC (Remote host closed the connection)
 
03:45:05  *** TrueBrain has quit IRC (Remote host closed the connection)
 
03:45:05  *** Gwyd has quit IRC (Remote host closed the connection)
 
03:45:05  *** dP has quit IRC (Remote host closed the connection)
 
03:45:05  *** luk3Z has quit IRC (Remote host closed the connection)
 
03:45:05  *** Thomas[d] has quit IRC (Remote host closed the connection)
 
03:45:05  *** Ellwill has quit IRC (Remote host closed the connection)
 
03:45:05  *** TonyPixel has quit IRC (Remote host closed the connection)
 
03:45:05  *** MnHebi has quit IRC (Remote host closed the connection)
 
03:45:05  *** petern has quit IRC (Remote host closed the connection)
 
03:45:05  *** Pruple has quit IRC (Remote host closed the connection)
 
03:45:05  *** glx[d] has quit IRC (Remote host closed the connection)
 
03:45:05  *** JGR has quit IRC (Remote host closed the connection)
 
03:45:05  *** DorpsGek_v has quit IRC (Remote host closed the connection)
 
03:45:05  *** frosch has quit IRC (Remote host closed the connection)
 
03:45:05  *** michi_cc[d] has quit IRC (Remote host closed the connection)
 
03:45:05  *** I-IUI-IBlakhole73I-I has quit IRC (Remote host closed the connection)
 
03:45:05  *** Olionkey has quit IRC (Remote host closed the connection)
 
03:45:05  *** scrubbles has quit IRC (Remote host closed the connection)
 
03:45:05  *** Kot has quit IRC (Remote host closed the connection)
 
03:45:05  *** reldred has quit IRC (Remote host closed the connection)
 
03:45:05  *** imlegos has quit IRC (Remote host closed the connection)
 
03:45:05  *** All_Heil_Lord_Pepe has quit IRC (Remote host closed the connection)
 
03:45:05  *** kamnet has quit IRC (Remote host closed the connection)
 
03:45:05  *** discord_user_f4a0790 has quit IRC (Remote host closed the connection)
 
03:45:05  *** MarcosBisbalMUFH|C1 has quit IRC (Remote host closed the connection)
 
03:45:05  *** Lemuria has quit IRC (Remote host closed the connection)
 
03:45:05  *** Xarick has quit IRC (Remote host closed the connection)
 
03:45:05  *** mlt has quit IRC (Remote host closed the connection)
 
03:45:05  *** Rico[d] has quit IRC (Remote host closed the connection)
 
03:45:05  *** Merni has quit IRC (Remote host closed the connection)
 
03:45:05  *** CplBurdenR3294 has quit IRC (Remote host closed the connection)
 
03:45:05  *** UnluckyDoge has quit IRC (Remote host closed the connection)
 
03:45:05  *** NotLuke has quit IRC (Remote host closed the connection)
 
03:45:05  *** Simo333 has quit IRC (Remote host closed the connection)
 
03:45:32  *** DorpsGek_v has joined #openttd
 
04:19:01  *** Wormnest has quit IRC (Ping timeout: 480 seconds)
 
04:24:02  *** Wormnest has joined #openttd
 
04:25:21  *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
 
04:26:10  *** WormnestAndroid has joined #openttd
 
05:43:48  *** HerzogDeXtEr has joined #openttd
 
06:40:23  *** keikoz has quit IRC (Ping timeout: 480 seconds)
 
06:55:21  *** HerzogDeXtEr has quit IRC (Read error: Connection reset by peer)
 
07:07:23  *** nielsm has quit IRC (Ping timeout: 480 seconds)
 
07:39:57  *** sla_ro|master has joined #openttd
 
07:58:34  *** andythenorth has joined #openttd
 
08:24:16  <andythenorth> petern: svg **all** the pixels
 
08:24:27  <andythenorth> get dalle to do it
 
08:26:13  <GLaDOS> Hi Iโm working on a patch to replace sdl and sdl2 with a x11 implementation if i was to submit it would it be accepted?
 
08:35:11  *** reldred has joined #openttd
 
08:35:11  <reldred> The SDL implementation I believe is also used for the Android port (maintained by Pelya who I believe also maintains the Android SDL port)
 
08:36:39  <reldred> Pelya last I heard was busy dealing with some unwanted Russian speaking visitors in his garden.
 
08:39:19  <andythenorth> bah GS is so frigging slow
 
08:43:56  <andythenorth> ok so testing GS is really quick when it's isolated functions at game start
 
08:44:11  <andythenorth> but now every time I init the script, there's 5s of walking all the map tiles
 
08:44:18  <LordAro> GLaDOS: why would we want a native X11 driver instead of SDL ? (genuinely asking)
 
08:44:25  <andythenorth> then it inevitably crashes due to my syntax error
 
08:44:32  <andythenorth> suddenly this is less fun
 
08:44:49  <LordAro> SDL does all sorts of other platform abstractions for us, why should be lose those?
 
08:45:16  <GLaDOS> LordAro: Itโs an extra dependency that is not used on windows and mac
 
08:45:42  <LordAro> ("replacing SDL" will never be accepted, "in addition to" *might* have slightly more luck)
 
08:46:07  <LordAro> but X11 is on its way out, no? (kinda, ish, eventually)
 
08:46:21  <LordAro> we already have bug reports that are specifix to wayland
 
08:47:35  <LordAro> i don't view an SDL dependency as a particular issue
 
08:47:41  <GLaDOS> i can implant way land but it dose not support open lower than egl3.0 in the protocal from what i read and the game looks to be using pre 3.0 gl
 
08:48:06  <LordAro> practically speaking it's just as "native" as the windows/macos libraries
 
08:48:34  <LordAro> (just as much as X11 is, anyway)
 
08:49:38  <LordAro> to summarise, i don't understand what problem you are trying to solve, and how an X11 driver would be a solution to that problem
 
08:50:28  <GLaDOS> It sets it up for me to write a vulkan backend later on
 
08:51:57  <andythenorth> hmm I see no obvious way for GS to get the count of industries in a town
 
08:52:04  <LordAro> that would be neat... but why does that mean removing SDL?
 
08:52:11  <andythenorth> well other than writing it myself with primitives ๐
 
08:52:29  <GLaDOS> Sdl can be a pain to link vulkan to
 
08:52:45  <GLaDOS> Due to it not being designed for vulkan first
 
08:52:57  <LordAro> it's a pain to link to opengl as well :p
 
08:53:26  <GLaDOS> vulkan can be worse ๐ค
 
08:54:06  <LordAro> looks reasonable enough from a brief google
 
08:54:55  <GLaDOS> Might have changed from last i used the sdl but it was a nightmare when I tried last
 
08:55:33  <GLaDOS> Guess i can create a branch and check it out
 
08:55:39  <LordAro> a vulkan backend would absolutely be desirable, but i don't see SDL2 going anywhere
 
08:56:02  <andythenorth> FML can't get the town of an industry either
 
08:56:07  <andythenorth> have to get the tileindex
 
08:56:16  <andythenorth> none of this is awful, just fucking tedious
 
08:56:20  <GLaDOS> andythenorth: What are you talking about?
 
08:57:21  <GLaDOS> ok tbh I thought that game used lua
 
08:58:33  <LordAro> i think you need to actually investigate what the state of play is, before deciding what to do
 
08:59:10  <andythenorth> wtf is the keyword for boolean true in squirrel?
 
08:59:22  <andythenorth> I am in both versions of the squirrel docs and can't find it
 
09:00:06  <andythenorth> the actual question was really 'where are the reliable searchable squirrel docs'
 
09:00:30  <andythenorth> but I think we're not on 3.2?
 
09:01:05  <LordAro> (ish because it's been modified a certain amount)
 
09:01:40  <andythenorth> googling common terms, like 'squirrel table' just gets me mammals with fluffy tables ๐
 
09:02:02  <GLaDOS> LordAro: I have been at the code for abit but have not really touched or lood at the scripting engine
 
09:02:47  <andythenorth> well we do welcome contributors ๐
 
09:03:02  <andythenorth> it's just quite often that 'can we change all of X?' is a question
 
09:03:08  <andythenorth> and there's a lot of history and reasons
 
09:03:28  <LordAro> (the scripting engine hasn't really changed since... 2007?)
 
09:03:31  *** WormnestAndroid has quit IRC (Remote host closed the connection)
 
09:06:24  <andythenorth> although in the long run, being on a patched dead squirrel
 
09:06:36  <andythenorth> we have fixed bigger problems before
 
09:10:41  <GLaDOS> Tbh the code feels a little weird to me as iโm used you more descriptive layouts with more fileโs partitioning the code more
 
09:13:12  <LordAro> andythenorth: i'm pretty sure we're the only remaining users of squirrel2
 
09:13:22  <LordAro> but we can never move to squirrel3, there are too many incompatibilities
 
09:13:40  <LordAro> iirc AdmiralAI uses a feature that was removed in 3
 
09:13:58  <andythenorth> so break it ๐
 
09:14:12  <GLaDOS> LordAro: And what feature is that?
 
09:14:13  <andythenorth> if someone found an exploitable CVE in squirrel 2 we'd have no choice anyway
 
09:14:26  <andythenorth> mods must die over time
 
09:14:39  <andythenorth> oh but we have the savegame forever promise
 
09:14:44  <andythenorth> yeah, that was naive
 
09:14:46  <LordAro> andythenorth: we've fixed plenty of other bugs over time
 
09:15:09  <andythenorth> how do I pick a random item from a GSList ๐
 
09:15:14  <andythenorth> feel like I did this before more than once
 
09:15:24  <andythenorth> GSBase.RandItem doesn't do it
 
09:15:54  <andythenorth> GSList doesn't have a method for it
 
09:15:55  <LordAro> GLaDOS: i can't remember exactly, i think it was something to do with slots
 
09:16:12  <LordAro> glx will probably remember
 
09:17:53  <andythenorth> ok I have to learn valuators
 
09:18:00  <andythenorth> it's a concept I've not seen anywhere else
 
09:18:13  <andythenorth> this is apparently how to get a random item
 
09:18:15  <andythenorth> `    // Randomize the station location
 
09:18:15  <andythenorth> tile_list.Valuate(GSBase.RandItem);
 
09:18:49  <andythenorth> this is how to filter a list to remove water tiles
 
09:18:49  <andythenorth> `    tile_list.Valuate(GSTile.IsWaterTile);
 
09:18:49  <andythenorth> tile_list.KeepValue(0);
 
09:19:08  <andythenorth> ^ that's really elegant, but also complete WTF compared to any other language I've used
 
09:22:59  <andythenorth> so can I valuate this somehow?
 
09:22:59  <andythenorth> `    foreach (industry, _ in industry_list) {
 
09:22:59  <andythenorth> if (GSIndustry.GetIndustryType(industry) == scrap_yard_id) {
 
09:22:59  <andythenorth> local industry_town = GSTile.GetClosestTown(GSIndustry.GetLocation(industry));
 
09:22:59  <andythenorth> towns_with_scrap_yards[industry_town] <- true;
 
09:23:07  <andythenorth> seems like it would be shorter with a valuator
 
09:24:07  <petern> Is Valuate a squirel thing or a GS API thing?
 
09:24:35  <LordAro> script API, i believe?
 
09:24:57  <LordAro> i don't know, i've not written squirrel in 10 years, and valuators were too advanced for me at the time
 
09:25:19  <dP> andythenorth: isn't that just a typical functional thing like map and filter in python?
 
09:25:46  <andythenorth> it is but I understand those ๐
 
09:26:13  <andythenorth> list comprehension is super obvious
 
09:26:29  <andythenorth> valuate is an abstracted function that has to be understood
 
09:26:40  <andythenorth> seems neat but eh
 
09:27:23  <andythenorth> I can't find the squirrel docs for it
 
09:28:11  <petern> Yes, it's MODE 2 except it's meant to be MODE 13.
 
09:28:21  <andythenorth> quite christmasy
 
09:28:31  <petern> (Blitters inherit from other blitters, even though their backbuffers are incompatible.
 
09:29:52  <andythenorth> I don't get lists
 
09:30:15  <andythenorth> they're like arrays?
 
09:30:33  <andythenorth> [(a, b), (c, d)]?
 
09:34:44  <dP> "They allow fast and easy manipulation of all kinds of data"
 
09:35:37  <dP> looking at the code they seem disgustingly ineffecient :p
 
09:35:38  <andythenorth> so assuming it's pairs, when they're valuated, what happens?
 
09:36:08  <dP> ffs, it has a map by value but KeepValue still iterates all items and removes them individually
 
09:39:52  <andythenorth> why does the foreach pattern always have e.g. foreach (industry, _ in industry_list)
 
09:40:08  <andythenorth> the _ is just unpacking the second value, but it's usually empty?
 
09:40:12  <petern> _ usually means discard.
 
09:41:19  <petern> andythenorth: Yeah, that would look a lot better.
 
09:50:17  <andythenorth> we can't write squirrel in the game?
 
09:50:28  <andythenorth> it would be nice having an interactive prompt, like python ๐
 
09:50:56  <andythenorth> seems like the best way to figure out GS is to actually just write loops, and log what methods are doing
 
10:19:02  <petern> Hmm, there's some rounding errors here.
 
10:30:38  <petern> When you deduplicate code, but it requires a function with 7 parameters...
 
10:32:09  <andythenorth> are there are also 7 if statements?
 
10:32:14  <andythenorth> but now it's all in one function?
 
10:33:49  <petern> Yes but only coincidentally. The function is 50 lines, so it's worth it.
 
10:34:26  <andythenorth> hmm back to random item from list
 
10:34:35  <andythenorth> probably superlib does it ๐
 
10:39:48  <andythenorth> crashed the game again ๐
 
10:46:19  <andythenorth> ok GS now puts a scrap yard in every town with population above > n
 
10:46:37  <andythenorth> the need to walk all the tiles at game start is....funky
 
10:46:50  <andythenorth> areas might be nice to prepopulate
 
10:46:57  <andythenorth> -> all tiles for each town
 
10:47:00  <andythenorth> -> all snow tiles
 
10:47:04  <andythenorth> -> all coast tiles
 
10:47:35  <andythenorth> there's probably some cool structure we could use, like voroni something ๐
 
10:48:10  <andythenorth> then the other areas can be arbitrarily extensible
 
10:48:24  <dP> andythenorth: map array :P
 
10:48:37  <dP> voronoi is only for closest points like towns
 
10:48:50  <andythenorth> I defer to those with greater knowledge ๐
 
10:48:56  <andythenorth> I'm just here writing clown GS
 
10:49:23  <andythenorth> in some cases 'all' might not be needed
 
10:49:33  <andythenorth> 'most' would be enough
 
10:50:09  <andythenorth> if e.g. all the water areas were individual areas
 
10:50:19  <andythenorth> I could solve FIRS ports stupidity just by measuring the length of the list
 
10:50:40  <andythenorth> I don't actually care if they connect to edge of map, they just look stupid in small lakes
 
10:51:46  <dP> andythenorth: so you want map_size*4 byte structure just to measure length? ๐
 
10:51:59  <andythenorth> 'could' not 'want'
 
10:53:13  <andythenorth> but different case: if you wanted to plant industries on water, then a list of water regions has utility
 
10:53:31  <andythenorth> if you wanted to limit e.g. fishing grounds to one per region, then same
 
10:53:39  <andythenorth> area / region /s
 
10:56:49  <andythenorth> `Communication during game-initialisation. NewGRFs are loaded first. They cannot query GS information at this point. GS can then also not influence placement of initial industries etc.` from frosch spec
 
10:57:11  <andythenorth> but when loading the grf, we know what GS settings are in OpenTTD?
 
10:57:21  <andythenorth> i.e. we know if a GS is selected or not, and which one?
 
10:57:47  <andythenorth> and we know what GS is in a savegame / scenario file?
 
10:58:21  <andythenorth> currently my GS needs to clean up where FIRS grf has tried to place industries accurately during map gen, but can't always do it
 
10:58:26  <Samu> there is a long standing bug about GS's in scenario editor
 
10:58:50  <andythenorth> I can't default to FIRS not placing any industries, because the GS needs to be optional
 
10:59:50  <Samu> and the recent fixes to allow changing GS's in scenario editor makes it worse
 
11:01:45  <Samu> the scenario file, when loaded, will lack information whether the GS has already started or not, it just assumes it did, but that's not always the case for scenario files
 
11:02:06  <Samu> it is for savegames though
 
11:07:12  *** andythenorth is now known as Guest1828
 
11:07:13  *** Guest1828 is now known as andythenorth[d]
 
11:28:25  <FLHerne> Squirrel is pretty tiny, can we upgrade to 3.2 for new scripts while keeping the old version as a fallback?
 
11:30:35  <petern> Samu: TBH for scenarios we should start the GS fresh.
 
11:31:23  <petern> *For playing scenarios.
 
11:31:37  <petern> For editing scenarios, the GS probably shouldn't be loaded.
 
11:33:20  <Samu> what when you rename a .sav to .scn and load it in the scenario editor? the GS was already started before
 
11:45:17  <andythenorth[d]> petern: I should delete them eh ๐
 
11:46:01  <petern> Samu: It be started again, as you have converted a savegame to a scenario.
 
12:04:54  <andythenorth[d]> squirrel tables eh?
 
12:05:11  <andythenorth[d]> so if I walk everything on the map at game start
 
12:05:20  <andythenorth[d]> I can put it all into squirrel
 
12:05:30  <andythenorth[d]> towns, industries, tiles
 
12:05:34  <andythenorth[d]> 'what could go wrong?'
 
12:05:46  <andythenorth[d]> do we memory limit script API?
 
12:11:25  *** glx is now known as Guest1831
 
12:11:26  *** Guest1831 is now known as glx[d]
 
12:11:38  <glx[d]> LordAro: I can't remember, it was a long time ago
 
12:14:13  <petern> Mortgage gone from 2.1% to 5% over the past year, joy.
 
12:18:59  <andythenorth[d]> at some point carrying around our own dead Squirrel is a bit weird
 
12:19:13  <andythenorth[d]> stuff and things ๐
 
12:20:38  <petern> It's impossible to update old scripts, don't you know?
 
12:22:00  <petern> I fixed an issue with my updated js and it now has exactly the same problem as the original. So that rewrite was totally worth it.
 
12:25:22  <petern> Is it breakfast time yet?
 
12:27:17  <andythenorth[d]> petern: someone on the forums might complain
 
12:27:49  <andythenorth[d]> petern: that is perfectly executed refactoring, do all your tests fail exactly the same?
 
12:28:17  <andythenorth[d]> goes it OpenTTD PeterPP?
 
12:28:53  <Eddi|zuHause> as long as PeterN doesn't go PeterT :p
 
12:29:30  *** WormnestAndroid has joined #openttd
 
12:29:51  <glx[d]> We can redefine functions in compat scripts, but in this case it's a variable like language keyword
 
12:30:12  <andythenorth[d]> can we break things and see what happens? ๐
 
12:30:22  <andythenorth[d]> it's not like OpenTTD runs nuclear power stations
 
12:30:29  <andythenorth[d]> OTOH, I don't actually enjoy the drama at all
 
12:30:49  <andythenorth[d]> the people on one side of the drama are often the least equipped socially for it
 
12:31:37  <Eddi|zuHause> andythenorth[d]: breaking things if you previously promised to not break things generally is bad style
 
12:31:59  <andythenorth[d]> well the first thing to break is the promise not to break things ๐
 
12:32:32  <andythenorth[d]> someone pointed out recently I think
 
12:32:39  <Eddi|zuHause> andythenorth[d]: the problem with breaking things isn't the people who complain, but the people who aren't around anymore to update their stuff
 
12:32:40  <andythenorth[d]> the promise is that savegames will load
 
12:32:55  <andythenorth[d]> not that behaviour will be guaranteed
 
12:33:28  <glx[d]> Maybe it's possible to reintroduce vargc but as vargv usage is very different it's complicated
 
12:33:37  <petern> We should've updated to v3 10 years ago.
 
12:33:47  <Eddi|zuHause> that is true, we had that discussion with an acceleration change which "broke peoples networks"
 
12:33:59  <andythenorth[d]> disabling GS or AI
 
12:34:03  <andythenorth[d]> is not breaking the promise
 
12:34:19  <andythenorth[d]> in principle a game could be manually migrated to new version of script
 
12:34:44  <Eddi|zuHause> andythenorth[d]: that's like saying "making the map flat isn't breaking the promise"
 
12:35:03  <glx[d]> We have compatibility mechanism via API version to not break stuff
 
12:35:15  <andythenorth[d]> where is the promise, and which armchair layer wrote it? ๐
 
12:36:11  <Eddi|zuHause> andythenorth[d]: imagine we say "we don't load v6 grfs anymore"
 
12:36:34  <glx[d]> Because throwing away perfectly fine but not maintained scripts is wrong
 
12:37:13  <andythenorth[d]> Eddi|zuHause: imagine if we could go through the grf spec after that and delete some of it
 
12:37:43  <andythenorth[d]> scorched earth <-> sensible conservatism
 
12:37:55  <Eddi|zuHause> andythenorth[d]: you can perfectly well do that without dropping v6
 
12:38:09  <andythenorth[d]> TBH things like this are better as a triangle, not a single linear scale
 
12:38:32  <andythenorth[d]> dunno what the 3rd vertex would be
 
12:38:38  <andythenorth[d]> probably not 'progress'
 
12:39:12  <petern> Implement sq3 and keep sq2. That's work well ๐
 
12:39:23  <andythenorth[d]> glx[d]: how many are there I wonder?
 
12:39:26  <Eddi|zuHause> be careful, you could end up in a 26 dimensional optimisation space very quickly
 
12:39:39  <andythenorth[d]> sometimes a survey shows the problem is very not real, or really very real
 
12:40:50  <andythenorth[d]> if only bananas had column count and date sort ๐
 
12:41:21  <dP> add WASM and make no promises :P
 
12:42:50  <andythenorth[d]> could expand that with AIs, then plot update / release dates
 
12:43:29  <andythenorth[d]> I don't know how to google sheets properly ๐
 
12:45:27  <Eddi|zuHause> andythenorth[d]: i don't think that list helps us in any way
 
12:45:49  <dP> tbf, making a new thing with no compatibility while keeping legacy newgrf and gs spec is the most reasonable way going forward imo
 
12:46:05  <petern> Easier to make a new game.
 
12:46:21  <dP> yeah, I already considered that
 
12:52:21  <Eddi|zuHause> people make new games all the time, yet people are also still here
 
12:53:59  <Eddi|zuHause> loading extremely old stuff is the unique selling point of this game
 
12:55:01  <dP> not as much when your whole game is old stuff :p
 
13:11:43  <andythenorth[d]> Eddi|zuHause: you don't read reddit enough ๐
 
13:11:53  <andythenorth[d]> that is not a USP reddit is aware of
 
13:33:16  <petern> Want to play that old game with an old gamescript? Just play OpenTTD before version 13...
 
13:34:01  <petern> There. Guaranteed compatibility.
 
13:34:53  <dP> yep, menu is just a launcher, you open the save it picks the right version ;)
 
13:36:09  <dP> also, rust clone wen? even Vangers have one nowadays ๐
 
13:36:29  <petern> Can you mix C++ and rust?
 
13:38:07  <dP> well, if you consider c a separate language and now just write c in c++
 
13:41:03  <petern> It seems to be more "I mean you could, but" territory...
 
13:42:43  <dP> yeah, but `extern "C"` basically
 
13:43:37  <dP> makes sense as Rust is no oop
 
13:48:38  <petern> Okay so I can write `extern "C"` and then start writing code in rust, gotcha.
 
14:05:19  <petern> Yeah, rust OOP is totally different, so that'll be fun ๐
 
14:15:08  <andythenorth[d]> was that WASM-everything?
 
14:15:24  <andythenorth[d]> we port to Rust, but inside a WASM container?
 
14:19:32  <dP> in container it's not exactly port, it's just that you can write mods in rust
 
14:19:56  * andythenorth[d] back to FIRS GS
 
14:20:12  <andythenorth[d]> maybe I should move more of the logic into python compile
 
14:20:25  <andythenorth[d]> I don't like squirrel much, I keep falling over my own feet in it
 
14:21:01  <andythenorth[d]> then when you do the Rust version, I can just make new templates for FIRS GS
 
14:29:23  <petern> How much is this non-power-of-2 nearest-neighbour scaling hated?
 
14:33:58  <petern> I hate it less than I thought I would, but...
 
14:37:06  *** TallTyler has joined #openttd
 
14:37:06  <TallTyler> It looks fine until you look closely and notice that lines which are supposed to match (bar graph width) don't
 
14:39:12  *** gelignite has joined #openttd
 
14:45:37  <petern> That might be an obiwan, the right-most column/bottom-most row is missing currently.
 
14:48:04  <Samu> attempting compat conversion
 
14:48:19  <Samu> not sure if it can be simplified further
 
14:49:03  <LordAro> at the very least, you are allowed to use variables...
 
14:49:06  <Samu> also, it won't work 100%, because 'from' can become an edge tile, and when passing it to BuildRail, it will fail on IsValidTile
 
14:49:31  <Samu> so... not sure what to do at this point
 
14:49:53  <LordAro> petern: looks fine to me
 
14:50:04  <Samu> by edge tile, i actually meant void tile, my bad
 
14:50:05  <LordAro> but also... does the book look upsidedown to anyone else?
 
14:50:59  <petern> `/* 14 ensures rail can't be built backwards */` What is backwards?
 
14:51:42  <LordAro> honestly, this feels like a bug fix to me
 
14:51:47  <LordAro> which doesn't need compatibility at all
 
14:51:59  <LordAro> if you were doing it before, it was wrong and was not doing what it was supposed to
 
14:53:07  <petern> What is backwards though?
 
14:53:17  <glx[d]> It made no sense to not have tile between from and to
 
14:54:08  <glx[d]> In map pov, not tileindex view
 
15:00:56  <glx[d]> And the screenshot shows it builds rail [tile,to) as the doc says
 
15:03:43  <andythenorth[d]> petern: on a scale of 0-10 where 10 is most hated?  0
 
15:03:57  <glx[d]> Some constraints are not fully enforced but it seems to work as intended
 
15:04:26  <andythenorth[d]> why does the map start at 1,1 not 0,0?
 
15:05:11  <glx[d]> Easiest way to detect the border
 
15:05:13  <andythenorth[d]> I hate writing docs, but I forsee a 30% chance I volunteer to write GS docs
 
15:05:20  <andythenorth[d]> or expand the AI script guide
 
15:05:24  <andythenorth[d]> I hate writing docs
 
15:05:52  <andythenorth[d]> the fucking frustrating thing is that doxygen is pretty comprehensive ๐
 
15:06:01  <andythenorth[d]> but does not give you what you actually need
 
15:06:26  <andythenorth[d]> I think doxygen can have extra comments, occasionally  there's an inline example
 
15:07:08  <andythenorth[d]> I still have NML docs with my name on them though ๐
 
15:07:23  <glx[d]> Usually when looking for a function in script API the flow is to suppose what would be the logical class for it
 
15:08:04  <glx[d]> Then you look in the doc to see if something with a name matching what it would do exists
 
15:17:58  <Rubidium> andythenorth[d]: if you set freeform_edges to false, then you will have 0,0 ;)
 
15:18:34  <Rubidium> the whole map border will also implicitly become water
 
15:22:21  <Samu> hmm, 'from' and 'to' don't actually require IsValidTile check
 
15:22:33  <andythenorth[d]> sounds like a GS needs to know if freeform edges are set? ๐
 
15:22:56  <petern> GS just needs to know if a TileIndex is valid.
 
15:23:03  <Eddi|zuHause> why would they need to know?
 
15:23:31  <andythenorth[d]> put it another way
 
15:24:10  <Eddi|zuHause> if any map border is freeform, the map is 1 tile smaller
 
15:24:11  <andythenorth[d]> when adding all valid tiles on the map to a TileList using AddRectangle, it's important to know whether to start at 0,0 or 1,1 for first vertex
 
15:24:21  <andythenorth[d]> which requires a test of 0,0
 
15:24:26  <Rubidium> andythenorth[d]: you can't really build anything useful on the 0 "row"/"column" in either case, so just ignore that "row"/"column" in your GS
 
15:24:44  <andythenorth[d]> oh are the water tiles non-buildable?
 
15:25:24  <andythenorth[d]> what I'm doing in the GS I shouldn't be doing anyway
 
15:25:28  <Rubidium> well, technically you can probably build on it but why add complications to your script to support it?
 
15:25:39  <andythenorth[d]> the GS is a lolz script to see what breaks
 
15:25:52  <andythenorth[d]> and learn what docs we might need, if I could face writing any
 
15:26:12  <andythenorth[d]> copying all the tiles in the map into a GSTileList is unwise
 
15:26:23  <andythenorth[d]> then I walk over all of them and put them in a table/slots structure
 
15:26:31  <petern> Have you PR'd areas/regions?
 
15:26:47  <andythenorth[d]> I think it's more likely that I'll write docs ๐
 
15:26:53  <andythenorth[d]> more chance of success
 
15:28:00  <andythenorth[d]> I apparently have 29 commits, which is 23 more than I remember
 
15:28:47  <petern> I don't know if it knows about all commits from the SVN days.
 
15:28:53  <andythenorth[d]> 10% of my commits are GS
 
15:29:15  <petern> Hmm, starts early, so I guess it does.
 
15:29:32  <andythenorth[d]> yeah mostly I did docs commits
 
15:30:00  <andythenorth[d]> petern: you probably have a branch for areas/regions?
 
15:30:02  <andythenorth[d]> from last time?
 
15:30:18  <Eddi|zuHause> the svn accounts were matched to github accounts wherever that was known
 
15:30:46  <LordAro> assuming people have linked username@openttd.org to their GH account
 
15:30:57  <LordAro> if they're not linked, they don't show up at all
 
15:31:13  <Eddi|zuHause> no, there was a bit more effort put into that
 
15:31:58  <Eddi|zuHause> what was not matched was svn patch authors vs. committers...
 
15:33:07  *** Smedles has joined #openttd
 
15:33:58  <Eddi|zuHause> at least i removed more lines than i added... that must mean the code is better :p
 
15:35:03  <Samu> but involves changing the rules a bit
 
15:35:38  <Samu> if my prediction is correct, then conversion can be done afterwards!
 
15:38:55  <Samu> AIMap.DistanceManhattan complicates things a bit, it's not exactly equal to OpenTTD's own DistanceManhattan
 
15:40:25  <glx[d]> For me your are trying to fix a non-issue, yes some preconditions might be missing, but BuildRail seems to build what it's supposed to build
 
15:44:59  <andythenorth[d]> Samu is trying to fix everything, and I'm trying to break everything ๐
 
15:45:58  *** imlegos has joined #openttd
 
15:51:33  <Samu> there should be a AITile.IsVoidTile
 
15:52:00  <Samu> but I understand why there's not
 
15:53:29  <andythenorth[d]> it's testable no?
 
15:55:25  <Rubidium> Samu: void tiles are an implementation detail about the map border, they serve no purpose to the end user (script, AI, player)
 
15:56:02  <Samu> IsValidTile returns false, but i can't assume just because it returned false, it was a void tile
 
15:56:31  <Rubidium> why do you want to know if it's a void tile?
 
15:56:42  <petern> GS don't need to know about void tiles, they are simply invalid tiles.
 
15:57:55  <Samu> well, if the tile is inside mapsize, and is not valid, i can assume it's a void tile, right?
 
15:58:16  <petern> You can assume an invalid tile is invalid.
 
15:59:22  <Samu> mapsize is something like 256*256 = 65536. so if tileindex is above 65535, then it can no longer be a voil tile, but if it's <= 65535 and is invalid tile, then it's a void tile
 
15:59:49  <petern> Write-only mode again.
 
15:59:54  <andythenorth[d]> there are no useful cases for needing to specifically know a tile is void ๐
 
16:00:08  <andythenorth[d]> if it's void you can't do anything with it ๐
 
16:00:22  <andythenorth[d]> if the number of void tiles at map edge was variable, THEN we might need to check them
 
16:00:28  <LordAro> a human doesn't need to know if it's a void tile, why should an AI?
 
16:00:29  <andythenorth[d]> but ... it isn't really
 
16:01:12  <petern> I'll make a circle map with void tiles
 
16:01:15  <andythenorth[d]> oh is this some difference of approach. Duck-type, but defensively, vs. 'everything must be exactly specified'
 
16:01:37  <andythenorth[d]> petern: make pacman face
 
16:01:51  <andythenorth[d]> chuckie egg map
 
16:02:02  <Rubidium> Samu: I wouldn't even say that in case of map size 256x256 a tileindex above 65535 needs to be invalid. I can really imagine higher tiles being misused for stuff like corners/junctions/stations in tunnels and bridges
 
16:02:04  <andythenorth[d]> isn't there a hole in the middle of the Catan board?
 
16:02:09  <andythenorth[d]> oh donut maps might be a thing
 
16:02:14  <andythenorth[d]> this a great idea
 
16:02:17  <andythenorth[d]> ok, more void tiles
 
16:02:26  <andythenorth[d]> donut maps mean you have to go round, not across
 
16:02:29  <LordAro> wasn't head2head implemented using void tiles?
 
16:02:34  <petern> Rubidium: PR please ๐
 
16:05:21  <Rubidium> I Publicly Renounce the idea of corners/junctions/stations in tunnels and bridges ;)
 
16:05:51  <andythenorth[d]> oh...can we tunnel through the void though?
 
16:05:54  <andythenorth[d]> in the donut map?
 
16:05:59  <andythenorth[d]> donut?  doughnut?
 
16:06:46  <Rubidium> would essentially be an infinite map
 
16:07:03  <LordAro> i feel like i've seen that suggestion before
 
16:07:24  <LordAro> if you could visually wrap a 4k map, would anyone ever know?
 
16:08:49  <petern> They might as well be.
 
16:08:59  <andythenorth[d]> Mรถbius maps, but you can fly your biplane around them
 
16:09:19  <andythenorth[d]> we've been way too conservative with OpenTTD ๐
 
16:09:28  <andythenorth[d]> we should add many more things
 
16:09:31  <andythenorth[d]> just not an email client
 
16:10:15  <andythenorth[d]> well maybe an email client
 
16:17:15  *** _aD has quit IRC (Quit: leaving)
 
16:20:53  <FLHerne> macOS CI failed for some spurious reason :-/
 
16:21:28  <Samu> ah crap, i can't set AIError's
 
16:21:41  <Samu> ScriptObject is not accessible 
 
16:22:24  <Samu> but! I can provoke a precondition fail
 
16:22:59  <Samu> gonna cheat the precondition fail in
 
16:23:20  <Rubidium> FLHerne: it's even worse :(
 
16:24:17  <FLHerne> Windows seems the same
 
16:24:52  <FLHerne> oberhumer.com is just broken atm
 
16:41:50  <FLHerne> It does for me now too
 
16:42:08  <FLHerne> Can someone rerun the CI?
 
16:43:21  <glx[d]> Looks like bad luck and new image so no cache yet
 
16:48:49  <glx[d]> Cancelled and re-run, seems better
 
16:50:11  <LordAro> FLHerne: also, opening { should be on its own line
 
16:53:43  <glx[d]> And I won't cancel again the previous CI (to cache vcpkg as it worked this time)
 
17:15:39  <petern> I rage-quit out of Doom yesterday, then realised I hadn't saved any progress on that level. Oops.
 
17:17:54  <FLHerne> petern: I don't understand your comment at all
 
17:18:10  <LordAro> FLHerne: Doom is a game from the early 90s
 
17:18:14  <FLHerne> the four STR_BRIDGE_SELECT_INFO_* strings are all used in the same place
 
17:18:44  <FLHerne> not all of them use all the parameters because that's the whole point of them being separate strings
 
17:18:53  <FLHerne> LordAro: that I understand
 
17:19:05  <petern> `STR_SELECT_BRIDGE_INFO` is used in scenario editor mode now.
 
17:19:17  <petern> Previously it was used in normal game mode.
 
17:19:46  <petern> Given the parameter change as well...
 
17:20:03  <FLHerne> oh, different from the old code
 
17:56:17  <dP> still needs a bit of work before finished ๐
 
18:11:19  <andythenorth[d]> model train layout? ๐
 
18:22:48  *** Flygon has quit IRC (Quit: A toaster's basically a soldering iron designed to toast bread)
 
18:26:30  <andythenorth[d]> wonder if I can crash GS some more
 
18:27:55  <andythenorth[d]> can the town for a tile change during game?
 
18:29:01  <andythenorth[d]> also, my OpenTTD normally runs around 500 MB RAM use
 
18:29:29  <andythenorth[d]> storing all the town tiles in GS pushes that to about 800 MB
 
18:29:31  <andythenorth[d]> probably fine?
 
18:30:01  <andythenorth[d]> 4 seconds to walk all the tiles at game start
 
18:36:31  <dP> andythenorth[d]: yes, you can found towns during the game
 
18:36:43  <Eddi|zuHause> andythenorth[d]: if you found a new town some tiles may change
 
18:37:24  <Eddi|zuHause> andythenorth[d]: also, towns that grow faster can grow into the area of other towns, so the town which "owns" the tile is not necessarily the "town authority" responsible for the town
 
18:37:45  <Eddi|zuHause> *last "town" should be "tile"
 
18:39:18  <dP> lol, I wonder what happens when you fund industry by replacing houses
 
18:39:27  <dP> does it get town of the tile or of the house
 
18:39:53  <andythenorth[d]> ok so we'll need to walk all the tiles periodically
 
18:39:55  <andythenorth[d]> maybe once a month
 
18:40:03  <andythenorth[d]> 4 seconds is fine?
 
18:40:16  <andythenorth[d]> do I get free opcodes if GS pauses the game?
 
18:40:21  <dP> if you just need to fund industries you don't need to store tiles at all
 
18:40:33  <andythenorth[d]> I need to put them in a specific town
 
18:40:48  <dP> e.g. chose town, chose random direction, find border in that direction and try funding
 
18:41:20  <andythenorth[d]> is town area of influence a regular shape?
 
18:42:14  <dP> may not even be convex in general
 
18:42:38  <dP> but don't think it matters much for this
 
18:44:53  <dP> actually should be convex by definition (for manhattan distance)
 
18:44:59  <andythenorth[d]> how does the town for an industry change?
 
18:45:11  <DorpsGek>   - Update: Translations from eints (by translators)
 
18:45:13  <andythenorth[d]> that is a pleasing answer
 
18:45:47  <Samu> from BuildRail side of things in OpenTTD code, I additionally allowed the tile 'from' and tile 'to' to be void tiles
 
18:46:13  <Samu> this allows building from and towards void tiles
 
18:47:11  <Samu> builds rails in their direction, that is! It does not really place rails on void tiles
 
18:49:49  <Samu> i will update the PR soon
 
18:53:29  <Samu> all the confusing code was needed so I could circumvent IsValidTile checks
 
18:53:54  <Samu> I'll try to tidy it nicely
 
18:54:31  <petern> Maybe adding lots of preconditions doesn't actually add anything of value?
 
18:56:49  <glx[d]> I still don't get what was the issue, based on the attached screenshot it worked fine
 
19:02:46  <andythenorth[d]> wonder what silly thing I can do next in GS
 
19:02:56  <andythenorth[d]> I guess walk all the tiles on a 4k^2 map ๐
 
19:03:01  <andythenorth[d]> so boring testing those
 
19:03:07  <andythenorth[d]> map gen so slow ๐
 
19:03:30  <andythenorth[d]> petern: shall I write a terrain modifying GS? o_O
 
19:03:38  <andythenorth[d]> can I make mountains
 
19:05:49  <andythenorth[d]> hmm can't raise to target height in one command ๐
 
19:06:00  <andythenorth[d]> lol this 4k map is still generating
 
19:06:02  <andythenorth[d]> 3 minutes later
 
19:07:53  <andythenorth[d]> ha ha look closely
 
19:08:03  <andythenorth[d]> I called DemolishTile on every tile at map start ๐
 
19:19:55  <andythenorth[d]> hmm mountain making is failing
 
19:19:58  <andythenorth[d]> `GSTile.RaiseTile(GSMap.GetTileIndex(1, 1), (GSTile.SLOPE_N | GSTile.SLOPE_W | GSTile.SLOPE_S | GSTile.SLOPE_E));`
 
19:20:04  <andythenorth[d]> just doesn't do anything
 
19:20:47  <andythenorth[d]> well, to be strict, it's returning false
 
19:21:49  <andythenorth[d]> oh I have to be in a company scope?
 
19:23:38  <andythenorth[d]> but there is no company at game start
 
19:23:51  <andythenorth[d]> why is modifying the landscape limited to companies?
 
19:24:33  <nielsm> towns can definitely modify the landscape
 
19:24:55  <Rubidium> andythenorth[d]: I think having all sides raised is not allowed
 
19:24:55  <petern> They do it directly though.
 
19:25:28  <petern> OWNER_DEITY is explicitly denied.
 
19:25:44  <andythenorth[d]> no new map gen then
 
19:25:54  <petern> I'm not saying it should be...
 
19:25:58  <andythenorth[d]> goes it patching?
 
19:26:17  <andythenorth[d]> I'm already committed to a fork here, as the AI debug text colour change has been blocked
 
19:26:24  <andythenorth[d]> so that's me running a fork forever
 
19:26:51  <andythenorth[d]> `EnforcePrecondition(false, ScriptObject::GetCompany() != OWNER_DEITY);`
 
19:27:23  <andythenorth[d]> given that I can't even make the compile work
 
19:27:42  <andythenorth[d]> I think that was Samu doing a funny
 
19:27:51  <andythenorth[d]> as my PR said 'someone will object'
 
19:27:55  <nielsm> it seems strange to not allow OWNER_DEITY to modify the landscape tbh
 
19:28:11  <petern> GS can't plant trees either.
 
19:28:26  <andythenorth[d]> as I actually kind of understand the script API definitions
 
19:28:30  <andythenorth[d]> I am making local changes ๐
 
19:28:33  <petern> I think these are all a bit... arbitrary.
 
19:28:33  <andythenorth[d]> with godlike power
 
19:28:40  <andythenorth[d]> GS is arbitrary ๐ฎ
 
19:32:15  <andythenorth[d]> hmm change doesn't work though ๐
 
19:34:17  <andythenorth[d]> this is src, not compiled script dir? src/script/api/script_tile.cpp
 
19:36:02  * andythenorth[d] builds from clean
 
19:39:43  <andythenorth[d]> ok I don't understand script API yet ๐
 
19:40:24  *** HerzogDeXtEr has joined #openttd
 
19:43:34  <petern> Do I hate non-integer scaling of sprites less more or less than this? Hmm.
 
19:52:45  <Rubidium> yeah, the missing dashed line doesn't make it look that pretty ;(
 
19:53:52  <andythenorth[d]> crashed openttd again ๐
 
19:54:16  <andythenorth[d]> `Log.Info(GSTile.RaiseTile(GSMap.GetTileIndex(1, 1), GSTile.SLOPE_N | GSTile.SLOPE_W | GSTile.SLOPE_S | GSTile.SLOPE_E));` hangs the client
 
19:54:36  <andythenorth[d]> * patched though so eh
 
19:55:17  <andythenorth[d]> I don't think it's the patch that causes it
 
19:58:40  <andythenorth[d]> I think it's trying to level the entire map in one command
 
19:59:56  *** Wormnest has joined #openttd
 
19:59:58  <andythenorth[d]> seems to work if I demolish tiles first
 
20:00:02  <andythenorth[d]> not sure though, hard to repro
 
20:01:03  <andythenorth[d]> oh demolish doesn't demolish the tile
 
20:01:15  <andythenorth[d]> "Destroy everything on the given tile."
 
20:01:22  <andythenorth[d]> except buildings / industries / objects
 
20:02:27  <andythenorth[d]> seems that industries aren't removable by GS?
 
20:03:26  <andythenorth[d]> "I heard you like mines on a hill"
 
20:05:54  <petern> RaiseTile should only do one tile, no?
 
20:06:47  <andythenorth[d]> yes but LevelTiles takes a rect ๐
 
20:06:59  <andythenorth[d]> seems to just use one command
 
20:07:16  <petern> Oh it wasn't RaiseTile that was hanging...
 
20:07:29  <petern> With GS there are no terraform limits.
 
20:07:37  <andythenorth[d]> yeah it was LevelTile, but unless I learn to use the debugger we'll never know
 
20:07:45  <andythenorth[d]> the GS crash handling is broken on my macOS build
 
20:08:02  <andythenorth[d]> so we don't get any crash log, it just hangs the client
 
20:08:02  <petern> Or rather, with OWNER_DEITY there are no terraform limits.
 
20:08:30  <petern> If you were levels the whole map...
 
20:08:42  <andythenorth[d]> ah, the opcode limit won't kick in
 
20:08:57  <andythenorth[d]> but in other cases, the CPU use limit has kicked in
 
20:09:05  <petern> Maybe it had, who knows.
 
20:09:10  <petern> Your debugger could tell you
 
20:09:28  <andythenorth[d]> if only I'd learn
 
20:09:36  <andythenorth[d]> only been doing this since I was 11
 
20:13:47  <dP> great, my pc is suddenly having some disk issue and i've nfi why
 
20:13:59  <dP> also i'm >2000km away from it so debugging is "fun"
 
20:16:52  <andythenorth[d]> do I just miss the command for demolish industry?
 
20:17:01  <andythenorth[d]> or did stupid grf authors insist GS can't have that?
 
20:17:01  <dP> does anyone know with mirrored zfs pool is bad if I import it in degraded state and try to fix from there?
 
20:18:00  <dP> just demolish any tile, no?
 
20:18:51  <dP> iirc it was pr'ed to work in like 12.0 or smth
 
20:19:51  <dP> though having gs method to just remove it by id would make sense
 
20:21:20  <dP> hm, or maybe I'm confusing that with objects or smth
 
20:21:47  <andythenorth[d]> I've called DemolishTile on every tile on the map
 
20:21:56  <andythenorth[d]> industries and objects are preserved
 
20:21:58  <andythenorth[d]> houses are not
 
20:22:09  <JGR> What is the purpose of doing this?
 
20:22:26  <andythenorth[d]> reimplement map gen in GS
 
20:22:35  <JGR> Why would you want to do that?
 
20:22:37  <andythenorth[d]> 'purpose' is a strong word
 
20:22:43  <andythenorth[d]> think of it like Everest
 
20:23:05  <JGR> Seems like making a rod for your own back to me ๐
 
20:23:43  <andythenorth[d]> stupid things are the best way to uncover where the API is crippled
 
20:23:51  <andythenorth[d]> which is 'some places, not all'
 
20:23:55  <dP> I'm having magic bulldozer on my servers just to be able to remove industries
 
20:23:56  <andythenorth[d]> also it throws up interesting things
 
20:24:11  <dP> well, and disable stupid authorities, but that's fixed
 
20:24:16  <JGR> I'd suggest trying with magic bulldozer enabled
 
20:24:20  <andythenorth[d]> like walking all the tiles and performing commands is perfectly possible at game start for 512^2 map or less
 
20:25:17  <andythenorth[d]> oh do we have GSCheat?
 
20:25:32  <andythenorth[d]> that's weird, we don't
 
20:26:43  <dP> cheats don't even work in mp
 
20:27:20  <dP> yeah, just move them to settings ffs :p
 
20:32:49  <Rubidium> dP: can describe how the setting is going to work to cheat money?
 
20:33:40  <dP> for active cheats like money they won't
 
20:33:52  <dP> but all the toggles can go there
 
20:36:02  <andythenorth[d]> ok drawn a smiley face with GS
 
20:36:13  <andythenorth[d]> quite a rudimentary pixel pattern
 
20:36:24  <andythenorth[d]> the more l33t way is to use a parametric equation
 
20:38:04  <andythenorth[d]> lol good job I see the funny side eh
 
20:38:15  <andythenorth[d]> literal example of bikeshedding, in pure form
 
20:38:26  <andythenorth[d]> 'GS is a bit crippled, how can we make it better?'
 
20:38:41  <andythenorth[d]> 'let's debate the error colour to death in the frigging illegible debugger'
 
20:39:18  *** TrueBrain has joined #openttd
 
20:39:18  <TrueBrain> let's remove the debugger completely, and think for a year for a better replacement?
 
20:39:24  <TrueBrain> reintroducing the same window, with a different colour
 
20:39:29  <andythenorth[d]> with drawings of UIs in photoshop
 
20:39:46  <andythenorth[d]> it's ok, I'm running a patchpack ๐
 
20:40:16  <andythenorth[d]> my OS is apparently crippled for building, so patch #1 just nerfs some things in the build
 
20:40:20  <andythenorth[d]> 'probably fine though'
 
20:40:50  <andythenorth[d]> what shall I make GS draw on the map next?
 
20:40:55  <andythenorth[d]> not Bebo things
 
20:41:42  <andythenorth[d]> maybe I can encode the pixel grid for roman charset
 
20:41:48  <andythenorth[d]> in a crude font
 
20:41:52  <andythenorth[d]> and write messages on the map
 
20:42:14  <andythenorth[d]> python PIL can generate images including fonts
 
20:42:22  <andythenorth[d]> I can then read the pixel xy locations
 
20:42:33  <andythenorth[d]> I can then use those for map offsets
 
20:42:46  <petern> andythenorth[d]: No dev has actually commented ๐
 
20:42:48  <andythenorth[d]> the entire compile actually has this facility in place already ๐
 
20:42:54  <JGR> Crude(ly written) messages on the map sounds like the reddit servers
 
20:42:56  <andythenorth[d]> petern: I am aware, just moaning ๐
 
20:43:25  <andythenorth[d]> compile can write text to python Image โ
 
20:43:36  <andythenorth[d]> pixascan can scan pixels โ
 
20:43:46  <andythenorth[d]> python compile can generate GS โ
 
20:44:05  <andythenorth[d]> I can write my own heightmap generator too
 
20:44:22  <andythenorth[d]> you get one heightmap, hard-coded to the GS ๐
 
20:44:35  <andythenorth[d]> ha no, this has real actual use
 
20:44:36  <petern> I would do it all, but I'm too busy playing Doom right now.
 
20:44:52  <andythenorth[d]> some industries need specific terrain layout
 
20:44:56  <petern> Trying to find that last secret.
 
20:45:15  <andythenorth[d]> I can draw the terrain, and use GS to sculpt tiles before placing the industry
 
20:46:04  <andythenorth[d]> petern: I am trying to find a 'Y' to complete the word 'RALLY' in an Art of Rally level
 
20:46:11  <andythenorth[d]> I could cheat...
 
20:48:04  <petern> Hmm, I can see on the map where the secret sector is, but I can't reach it.
 
20:50:39  <petern> Found it, and after all that, the level force-killed me back to 50 pistol rounds.
 
20:53:25  <petern> Okay what the hell was that.
 
20:54:29  <nielsm> it's doom, of course it's hell
 
20:54:32  <petern> Tackling this sprite clipping is less scary.
 
20:54:48  <petern> It was a very snowy map actually.
 
20:55:56  <petern> Gotta love editors that show CRLF all the time.
 
20:56:25  <petern> I can tell it's a line break because there's a new line...
 
20:56:28  <Eddi|zuHause> it snowed today. there's a thin white film outside
 
20:56:58  <petern> Oops, I didn't cycle again.
 
20:57:12  <petern> I must be like 700-800km down already.
 
20:58:31  *** HerzogDeXtEr has quit IRC (Read error: Connection reset by peer)
 
21:03:40  <petern> I think the GfxBlitter function works in sprite-coordatines, and then scales.
 
21:07:16  <supermop_toil> petern: bike in doom?
 
21:09:30  *** gelignite has quit IRC (Quit: Stay safe!)
 
21:10:53  <petern> I think I broke it ๐
 
21:12:58  <Samu> and now i gotta repeat it for RemoveRail, then repeat both on all 27 compat_xx.nut files
 
21:14:42  <andythenorth[d]> supermop_toil: are those animated and floating around?
 
21:14:53  <petern> You're going to hit the op-code limit just calling that...
 
21:14:56  <andythenorth[d]> petern: are those animated and floating around?
 
21:15:07  <petern> They are, but not deliberately.
 
21:25:08  *** nielsm has quit IRC (Ping timeout: 480 seconds)
 
21:27:20  <petern> Stupid optimizing... 104 * 45053 is not 0.
 
21:32:00  <supermop_toil> petern: in grasshopper today i tried to set a param to infinity to test against and it set the param to 100,000,000
 
21:32:52  <petern> This is just the debug not being useful because the compiler optimized things away.
 
21:47:58  *** keikoz has quit IRC (Ping timeout: 480 seconds)
 
22:05:18  <reldred> petern: OOOOOoooOooOOoOOoooo
 
22:19:18  <andythenorth[d]> somehow this town was protected from DemolishTile ๐
 
22:19:44  <andythenorth[d]> seems some buildings are protected ๐
 
22:19:51  <andythenorth[d]> I guess there's a house flag
 
22:20:23  <FLHerne> will 10365 be backported to 13.0?
 
22:20:34  <FLHerne> I'm trying to decide which tag to use in grfspecs :p
 
22:22:20  <andythenorth[d]> do we use the RC as a freeze? or do we keep adding?
 
22:22:24  <andythenorth[d]> I never know ๐
 
22:23:17  <petern> Should be, so bug fixes only.
 
22:25:05  <DorpsGek> [OpenTTD/OpenTTD] SamuXarick updated pull request #10376: Fix: [Script] Ensure building/removing rail lines can't be backwards and allow building/removing rail lines coming from or heading to the void https://github.com/OpenTTD/OpenTTD/pull/10376
 
22:25:21  <Samu> trailing whitespace removed
 
22:26:00  <Samu> why wouldn't the commit checker remove it for me?
 
22:26:33  <Samu> that's mostly copy paste
 
22:26:46  <TallTyler> Is that ITL? Looks like the building protection flags I set.
 
22:26:58  <Samu> there's no better way to edit compat_ files in
 
22:31:51  <FLHerne> petern: well, Pruple labeled 10362 as [Bug], so I labeled 10365 as [Fix]
 
22:32:13  <FLHerne> whether that makes it actually count as a bugfix is the question :p
 
22:32:19  <DorpsGek> [OpenTTD/OpenTTD] SamuXarick updated pull request #10376: Fix: [Script] Ensure building/removing rail lines can't be backwards and allow building/removing rail lines coming from or heading to the void https://github.com/OpenTTD/OpenTTD/pull/10376
 
22:37:44  <FLHerne> I was optimistic and wrote "From [OTTD 13] set to "0" for no limit at all. " in the docs :p
 
22:42:36  <Samu> gah, found another typo! due to copy pasta
 
22:47:45  <DorpsGek> [OpenTTD/OpenTTD] SamuXarick updated pull request #10376: Fix: [Script] Ensure building/removing rail lines can't be backwards and allow building/removing rail lines coming from or heading to the void https://github.com/OpenTTD/OpenTTD/pull/10376
 
22:47:59  <Samu> copy paste error fixed :)
 
22:48:40  <Samu> it's turning into a boring copy paste task
 
22:49:15  <Samu> someone should come up with a better way to deal with compat files
 
23:01:07  <Rubidium> let's sleep on them...
 
23:01:29  <andythenorth[d]> good idea ๐
 
23:04:45  <petern> Sucks to be a 3rd party Twitter client developer.
 
23:24:34  *** Samu has quit IRC (Quit: Leaving)
 
23:27:56  *** Etua has quit IRC (Quit: Etua)
 
23:37:53  *** sla_ro|master has quit IRC ()
 
23:51:42  *** Wolf01 has quit IRC (Quit: Once again the world is quick to bury me.)
 
continue to next day โต