IRC logs for #openttd on OFTC at 2023-02-18
β΄ go to previous day
00:21:26 *** HerzogDeXtEr has quit IRC (Read error: Connection reset by peer)
02:08:40 *** Eddi|zuHause2 has quit IRC (Read error: Connection reset by peer)
02:15:55 *** Eddi|zuHause2 has joined #openttd
02:33:52 <glx[d]> pushed 2 other commits, and validation seems to work
02:38:47 *** Tirili has quit IRC (Remote host closed the connection)
02:48:13 *** Wormnest has quit IRC (Quit: Leaving)
03:06:32 *** ChanServ sets mode: +v tokai
03:13:12 *** tokai|noir has quit IRC (Ping timeout: 480 seconds)
03:47:34 *** debdog has quit IRC (Ping timeout: 480 seconds)
04:17:56 *** TROILUS6 has joined #openttd
04:21:28 *** TROILUS has quit IRC (Read error: No route to host)
04:21:29 *** TROILUS6 is now known as TROILUS
05:43:39 *** HerzogDeXtEr has joined #openttd
06:13:54 <kamnet> So, thinking a little bit about the ever-debated issue on modifying NewGRFs in scenarios and in mid-game. I think it's clear at this point that users are going to continue to ask about it and seek it out no matter how many times they're warned about it. What if there was a checkbox on the new game screen that allowed a player to enable this setting at the start of every game, then presented with the red warning box that they would need
06:13:54 <kamnet> game starts. This would have to be checked every time a new game starts.
06:31:47 <reldred> That would just be obnoxious. The console command to turn it on isn't *that* hard, it just might need to be better documented.
06:36:13 <EmperorJake> The !addgrf thing should be updated to a nice succinct instruction for the command line, rather than a decade-old forum thread that suggests changing the cfg file
06:44:02 <Rubidium> just remove all restrictions and remove objects (indirectly) affected by a NewGRF change ;)
06:44:56 <Rubidium> change a town name NewGRF: fine, just remove the towns (and industries, stations, depots, ...)
06:45:30 *** MasterOktagon has joined #openttd
06:45:30 <MasterOktagon> and trains in it
07:07:35 <kamnet> EmperorJake: I'm actually doing that right now. π
07:07:36 <andythenorth> Red box warnings wonβt be read
07:10:14 <kamnet> reldred: Well, yes. And I don't think being obnoxious about it is a bad thing in this case. It's a reminder that what they're doing is risky and not recommended and that there's consequences for actions. Maybe enough that eventually they just stop doing it. But it would, IMO, be better than users continually asking how to get around it. The answer will now be right in front of them and at their fingertips, ready to FAFO.
07:11:19 <kamnet> Instead of security through obscurity or gatekeeping, they get a reminder to fasten their seatbelts and off they go
07:12:56 <andythenorth> what we have is stable least-worst situation
07:14:02 <andythenorth> I cannot see any change that doesnβt make it worse
07:15:31 <andythenorth> Replacing grf would offer a chance to improve this
07:16:40 <andythenorth> But nobody so far is prepared to replace grf. The community pushback on change is too substantial for anybody to tackle.
07:18:03 <andythenorth> The game reflects the wider societal issue that we are running swathes of the world to accomodate the poor behaviour of 12 year old boys.
07:19:27 <andythenorth> Which is not new, I am reading a book of 17th century English history, and politics was influenced by similar forces then.
07:19:50 <kamnet> We are, if anything else, creatures of habit. π
07:22:31 <andythenorth> Sadly, throwing out grf is a big enough idea that it would probably sink OpenTTD as a project
07:23:47 <dP> new api doesn't have to throw out newgrfs completely, it can implement a compatibility layer
07:24:07 <dP> though there is a danger of polluting new api it with old issues to do that
07:26:53 <Rubidium> kamnet: I rather have it so people have to look into how and where to buy guns, than going to the local grocery store to get some to shoot themselves in the foot. That will at least remove a large amount of people changing NewGRFs just impulsively (because it was easily accessible) and shooting themselves in the foot
07:29:25 <kamnet> Would it not be better that they were reminded everytime they picked up the gun to not shoot themselves in the foot?
07:29:32 <Rubidium> on the other hand, with that analogy... putting it in the new game/load game window would be warranted as there's barely anything healthy by lots of unhealthy stuff at the cash register of a grocery story ;)
07:32:23 <Rubidium> kamnet: you think a grocery store is going to "lecture" you about gun safety? In any case, there's only one place where the warning would be useful: when actually changing NewGRFs in game, so then the warning should be shown. Not when loading the game, because then people generally do not put that message when starting the game, and the mayhem that happened right after changing the NewGRFs together
07:33:37 <kamnet> How much of a PITA would it be to write a routine that detects that and triggers a warning?
07:34:48 <andythenorth> We used to have the warning message no?
07:35:11 <andythenorth> Before it was a grf developer setting?
07:35:42 <Rubidium> I do not think it's super complicated, the main PITA is getting users to read and understand what the message means
07:36:06 <andythenorth> They wonβt and wonβt
07:36:36 <Rubidium> and the *real* PITA is the flood of bug reports caused by changing NewGRF settings (because it was easy to do)
07:36:49 <andythenorth> Even with developer tools, there are users who communicate publicly that nothing ever goes wrong
07:37:33 <andythenorth> But, at least on Discord, there are other users who correct them
07:37:52 <andythenorth> Forums at this point is irrelevant
07:38:05 <andythenorth> And reddit is always gonna reddit
07:39:03 <andythenorth> Steam community is possibly the biggest now?
07:39:33 <Olionkey> Much easier to download the game via steam
07:39:42 <kamnet> Rubidium: Speaking of, is TrueBrain still thinking about implementing automated crash reports? If so, it seems like those could be easily sorted and discarded if the NewGRF state was modified.
07:43:48 <dP> broken newgrfs don't always lead to crash
07:43:57 <dP> just weird shit starts happening
07:44:44 *** sla_ro|master has joined #openttd
07:45:33 <andythenorth> all the bug reports I donβt file π
07:45:41 <andythenorth> Because I changed grfs
07:46:00 <andythenorth> I break OpenTTD a lot
07:46:48 <dP> you can do even more by changing newgrf itself xD
07:56:37 <andythenorth> I break PBS, ship pathfinding, cargodist and vehicle servicing quite often
07:56:55 <andythenorth> But they donβt crash the game
07:58:03 <andythenorth> Changing grfs under the game (filesystem replace file) can crash OpenTTD
07:58:33 <andythenorth> Hardly surprising
08:02:06 <reldred> andythenorth: gotta do it while paused and issue a reloadnewgrfs console command to prevent that I've noticed π
08:02:18 <reldred> Things I've found out the hard way
08:02:30 <EmperorJake> Yeah I do that all the time
08:14:44 <andythenorth> Itβs specifically using reload_newgrfs at the exact time the file is being replaced that can hang OpenTTD π
08:25:38 <dP> hm, I can probably add grf-py output to nmlc xD
08:32:41 *** sla_ro|master has quit IRC ()
09:02:40 <kamnet> So here's my first draft of the new !addgrf file. Feedback encouraged, thank you. π
09:07:48 <andythenorth> Itβs quite narrated re: why the setting exists π
09:08:38 <andythenorth> Itβs not for players, itβs because grf devs *have* to be able to reload / change settings π
09:09:21 <andythenorth> And that pretty much has to be a run time setting, not something grf authors have to recompile OpenTTD to get
09:09:34 <reldred> Yeah honestly, straight up, if you're not deving .grf's you should not be changing grf's in runtime.
09:09:40 <andythenorth> And we canβt hide the knowledge
09:09:42 <reldred> Flat out. Straight up.
09:10:13 <reldred> If you're a veteran, or an enthusiastic idiot who's OK with the consequences, sure go hard.
09:10:14 <andythenorth> And we canβt force e.g grf devs to have a licensed SDK with keys
09:10:55 <reldred> But easily 99.9% of the total playerbase has no business doing it. Ever.
09:11:41 <Rubidium> kamnet: changing vehicle GRFs can also be very dangerous, especially when it changes capacities, then all kinds of asserts and what not will trigger
09:12:45 <kamnet> This is why I use the phrases "least harmful". I am trying to not give an impression that anything is truly safe.
09:12:47 <reldred> Changing road sets and rail sets during game play can cause some interesting glitches
09:13:20 <reldred> But the real spectre is the save game corruption. Us devs usually don't run a save long enough for it to matter when we're abusing grf reloads,
09:14:02 <reldred> But holy crap if you actually play the game in anger the save corruption issue just comes out of nowhere
09:14:02 <andythenorth> Trying to resolve more errors might be a thing, but seems like minimal result for high effort π
09:14:56 <andythenorth> I donβt think Iβve ever lost a save to grf changes in a way thatβs not recoverable or self-inflicted
09:15:22 <reldred> I've lost plenty, wasted JGR's time a couple times with crashes I caused, etc.
09:17:35 <kamnet> I lost one, once. It's my favorite cautionary tale to tell, because I legit spent three years of my life on that save. Hundreds of hours slavishly devoted, lost sleep, even occasional arguments with my spouse. Not being able to recover it caused me to stop playing the game for nearly a year.
09:18:30 <EmperorJake> kamnet: That's a lot of text. While it's well written and informative, I feel a lot of people will just skim to the bottom
09:18:32 <kamnet> Rubidium: I've added this sentence to the "moderately harmful" section: Any NewGRF which modifies any properties of the default game settings, other NewGRFs or is an update which changes cargo capacities or other features may potentially be harmful to your game.
09:18:57 <EmperorJake> Might be nice to include some screenshots of broken games and errors
09:19:20 <kamnet> I might have to scour TT-F for that.
09:20:04 <andythenorth> But if you break industries you can just delete them all with magic bulldozer and build again
09:20:09 <kamnet> I wrote it for the player who isn't plugged into any of the communities who is doing an online search. Hopefully using enough keywords that it will get high ranking on search engines
09:21:34 <andythenorth> If you break vehicle IDs you just unbreak them temporarily, recompile the grf, autoreplace all affected vehicles to a different ID, then revert the ID in the grf, recompile, then replace all vehicles again
09:22:18 <EmperorJake> I just don't break vehicle IDs in the first place, that's why my IDs are chaotic and all over the place
09:22:35 <andythenorth> If you are changing capacities or length, send all vehicles to depot before reloading the grf
09:22:52 <reldred> I break ID's in houses often, coz I keep using id -1
09:22:56 <kamnet> andythenorth: I don't want to advise them on how to fix it (especially if this results in me getting bombarded with messages asking forhelp fixing stuff I have no clue about). I just want them to have enough info that either they're going to stay away from it or they're going into it knowing the potential to fuck it up is real.
09:23:41 <andythenorth> Changing cargos under a running game is particularly hard to resolve and can cause the game to be lost
09:24:57 <andythenorth> Also road/railtypes, if those change, a migration strategy is needed, otherwise a lot of unpowered stuck vehicles is the result
09:26:33 <dP> acttually a good technical article for developers on possible effects of newgrf change and how to fix them can probably be a good deterent for any clueless player to ever screw around with it xDD
09:26:55 <andythenorth> basically thereβs only a few savegame cases that players couldnβt handle by knowing how grf works, and recompiling the grfs theyβre using to provide migration strategies
09:27:31 <andythenorth> I lose more games to testing openttd PRs than grf changes
09:27:35 <reldred> I'd probably just steer clear kamnet , anyone who needs a lengthy treatise on activating the feature will not be sufficiently skilled to deal with the repercussions.
09:31:41 <kamnet> reldred: They would probably argue that they need not treatise at all, quit gatekeeping and just give them the info. I'm trying to persuade them from that path.
09:33:53 <andythenorth> βYour cartoon trains might be injuredβ
09:34:08 <reldred> gaslight, gatekeep, girlboss.
09:34:20 <reldred> if you want someone to blame for gatekeeping I have broad shoulders
09:34:44 <andythenorth> βAll things die, your savegame might be one of themβ
09:35:19 <andythenorth> βTake this as a lesson about impermanenceβ
09:35:37 <andythenorth> βYolo swag, RIPβ
09:39:02 <andythenorth> What if we actually *guaranteed* corruption if grfs are changed
09:39:11 <andythenorth> We could introduce some
09:41:18 <andythenorth> Could we just randomise some pointer values?
09:54:56 <kamnet> Keep talking, I'm interested...
10:49:22 *** HerzogDeXtEr1 has joined #openttd
10:51:44 *** HerzogDeXtEr has quit IRC (Ping timeout: 480 seconds)
11:40:23 <TrueBrain> silly CodeQL. You are not right, but also not wrong π
11:48:21 <Samu> yay, let's see how many scripts that GetPrimaryVehicle gonna break
12:04:01 <TrueBrain> right, that is all working; now to find a nice looking way to show things per classification in the frontend .. pam pam pammm
12:05:43 <andythenorth> We need a html author?
12:05:56 <andythenorth> Or you mean in game?
12:24:05 *** D-HUND is now known as debdog
13:39:41 <Samu> wow, some ais really know how to abuse distant join, station spread
13:43:08 <TrueBrain> hmm, we used to have a double navigation bar, but I can't remember where ..
13:49:55 <TrueBrain> okay, we have too many different classifications for NewGRF π
13:50:07 <TrueBrain> 23 .. that doesn't fit on any navigation
13:52:58 <andythenorth> We need a vertical sidebar with filter options
13:53:14 <andythenorth> Like on shops, hotel finder sites etc
14:18:09 <TrueBrain> hmm, CSP is being annoying .. how does tha twork these days ..
14:47:54 <TrueBrain> okay, that is all ready for review π
14:48:18 <TrueBrain> primitive, but does the job
14:48:36 <TrueBrain> it even changes in the URL, and reload works, etc
14:49:08 <frosch> what? javascript and dynamic html? what century is this?
14:49:18 <TrueBrain> even worse: it is optional!
14:49:50 <TrueBrain> if you don't have javascript, it just shows all
14:51:02 <TrueBrain> now also looks fine on Chrome
14:52:46 <frosch> any plans for in-game?
14:53:01 <TrueBrain> let's first see how this goes .. and classify some of the other categories
14:53:11 <TrueBrain> but yeah, eventually it really should also be like this in-game in my opinion
14:54:08 <TrueBrain> I want to look in the other categories once this is all merged; in most places I already added code that allows for easy extension of other categories, so that is nice π
15:00:07 <TrueBrain> Why is GitHub rendering a weird bar here? π
15:00:40 <TrueBrain> ah, a fixed conversation item
15:02:38 <glx[d]> ah it's a CodeQL side effect
15:04:52 <frosch> maybe too much bla, I just want to say add separate "newgrf-unknown" and "unclassified" for content-types without classification
15:05:17 <TrueBrain> I wanted to have a shared "unknown" and nothing should be unclassified by the time we bring this to production π
15:05:40 <frosch> really? what category do you have in mind for the nmlcat bs?
15:05:58 <TrueBrain> so they already have a category
15:06:24 <Samu> did you change collision detection system for road vehicles?
15:06:44 <Samu> i think there's much more road veh into train crashes now
15:07:25 <frosch> well, that's the same? you have "newgrf-misc" and "unclassified"
15:07:26 <dP> road crossings have been made safer in 13.0 π
15:07:47 <TrueBrain> frosch: There is no `newgrf-misc`?
15:08:42 <TrueBrain> and `Unclassified` only exists in the frontend currently, as not all content is tagged yet
15:08:59 <Samu> seems the road vehicles now collide against a train, instead of being the train colliding on them
15:09:32 <frosch> that's the point, there is no "newgrf-misc" currently, you use an type-unspecific "unknown". i would expect separate "newgrf-misc" and "gs-misc", instead of a general "unknown"
15:09:48 <TrueBrain> what are you solving? π
15:10:11 <TrueBrain> it is a lot easier to have a generic category "We failed to classify"
15:10:15 <TrueBrain> which doesn't depend on any category
15:10:23 <TallTyler> Samu: Thatβs correct, if they are on the crossing they will keep going trying to leave the crossing even if that means hitting a train. Safer as a whole, but the collision goes the other way. Itβs been debated quite a lot on GitHub and forums
15:10:42 <TrueBrain> `unknown` means literally that: we had nothing to base any classification on, so .. *shrug*
15:10:42 <frosch> what about "economy" then? do you want to distinguish "newgrf-economy" and "gs-economy"?
15:11:03 <TrueBrain> `unknown` is the only exception, as I need a fallback in the code
15:11:34 <TallTyler> The pathfinding to help them make better decisions is non-trivial, both in terms of code and performance
15:12:02 <andythenorth> Bridges are trivial though
15:12:06 <TrueBrain> Places like that; they are not content-aware yet, and want to mark the content as: I don't know!
15:13:01 <frosch> fine, i'll look for better arguments while shopping :p
15:14:36 <Samu> long lines of road vehicles
15:15:29 <glx[d]> crossing safety mostly depends on how much time they have between trains reserve the crossing and its actual passage
15:15:48 <frosch> maybe i just want different things for "this is content we are never going to classify, like basesets and libraries" vs "we want to assign a category to this newgrf, we just don't know wtf it is"
15:16:13 <Samu> long lines of road vehicles is a thing AI's do
15:16:20 <glx[d]> if signal is right before the crossing they have no way to not enter or escape
15:16:43 <andythenorth> BridgeBuilderPro AI?
15:16:53 <TrueBrain> frosch: `unclassified` vs `unknown`, yes π
15:16:57 <Samu> now a single passageway can crash 4 road vehicles, instead of 2
15:17:11 <andythenorth> Hmm maybe we need an AI AI
15:17:27 <andythenorth> Teach co-pilot to write noAI
15:17:52 <glx[d]> maybe RV PF should detect a blocking on the other side of crossing and prevent entering it
15:18:29 <glx[d]> or even outside PF, it could be RV movement handling
15:18:55 <glx[d]> RV already stop if vehicle in front is stopped
15:18:56 <TrueBrain> wrote some words in the PR to hopefully helps to explain it a bit more π
15:19:19 <Samu> i need an old version of openttd, to test crashes there
15:20:16 <andythenorth> Old versions are available π
15:21:01 <glx[d]> it's probably possible to introduce a special handling for crossing, if RV is about to enter crossing and there's no room after the crossing then stop
15:21:50 <glx[d]> kind of don't try to cross if you can't make it
15:24:44 <glx[d]> in real life many drivers don't follow this simple rule though
15:26:05 <glx[d]> even in normal road intersection
15:27:49 <andythenorth> IRL crossing wrecks happen all the time π
15:28:17 <andythenorth> Which is why we invented IRL βbridgeβ feature
15:29:03 <glx[d]> yeah expecting people to use their brain is too much π
15:30:31 <glx[d]> even pedestrians don't think twice before going around a bared crossing
15:30:43 <TrueBrain> I am happy with CoPilot .. it wrote most of the Javascript .. it tried doing it in JQuery, but then you say: don't use JQuery, and it actually fixes it π
15:34:16 *** Wormnest has joined #openttd
15:34:52 <Samu> i think im gonna create a gs just for vehicle crashes
15:34:54 <andythenorth> Can it write GS?
15:35:13 <Samu> need some statistics counted
15:35:24 <Samu> like the number of road veh crashes
15:35:41 <andythenorth> I am not trolling, letting content authors type what they want in a mod would be awesome
15:38:15 <TallTyler> You should try asking ChatGPT to write FIRSGS for you
15:38:29 <TallTyler> Or is the problem βwhat should it do?β
15:39:22 <andythenorth> I think it would read the implementation model
15:39:34 <andythenorth> Then it would just reply with βlolβ
15:40:17 <Samu> new league table! vehicle crashes! how interesting would that be?
15:40:27 <andythenorth> Could try Bing, which seems to be super-irritable about things it doesnβt like
15:42:47 <dP> for gs chatgpt should output both squirrel code and openttd patch to make it work xD
15:43:01 <TallTyler> New league table, "people killed in company history" with optional sort by high or low score π
15:43:02 <Samu> choochoo is a good disaster provoker
15:43:14 <Samu> crosses roads with rails all the time
15:43:32 <Samu> and my ai is actually "dumb"
15:43:57 <TallTyler> "Other players' passengers killed" - incentivize griefing π¬
15:43:59 <Samu> just keeps adding more road vehs to the route like nothing happened
15:44:05 <dP> TallTyler: with rv crash do kill go to rv or train owner? ;)
15:44:07 <Samu> and doesn't build a bridge over
15:44:09 <glx[d]> I might look into my "don't enter crossing if you can't exit" idea
15:45:21 <TallTyler> That would be nice, could probably close #10311 as no longer needed
15:46:33 <TallTyler> Ah, I was thinking of #10310
15:49:28 <andythenorth> glx[d]: a GS can test it for you statistically π
15:49:42 <andythenorth> Compared to old and current crossings
15:50:00 <andythenorth> Body count league table
16:18:14 <Samu> crash gs created! let's see if it works
16:19:10 <TrueBrain> Meh. Would be rather complicated.
16:19:40 *** TROILUS2 has joined #openttd
16:19:51 <TrueBrain> Schema currently is fixed, not per content type
16:20:00 <frosch> i think the current categories are pretty unique for newgrf. for other content you have different things to filter on
16:20:02 <TrueBrain> Will have to think about it
16:20:19 <TrueBrain> Not sure I agree, so I will make a counter proposal:l :d
16:21:53 *** TROILUS has quit IRC (Ping timeout: 480 seconds)
16:21:53 *** TROILUS2 is now known as TROILUS
16:22:15 *** sla_ro|master has joined #openttd
17:00:22 <JGR> TallTyler: I don't implement this feature in my branch
17:01:00 <JGR> I'm not convinced that the NewGRF which provides the road/tram type is that useful
17:02:24 <TallTyler> Huh, I could've sworn I've seen it. Nice to know I'm just losing my mind and not my search abilities π
17:07:27 <Samu> while testing 13.0-beta1
17:07:31 <Samu> got a crash Message: Assertion failed at line 98 of D:\a\OpenTTD\OpenTTD\src\tile_map.h: tile < MapSize()
17:12:10 <Samu> i downloaded debug symbols, now, how do i setup 13.0-beta1 on visual studio?
17:17:35 <glx[d]> git checkout <version>
17:18:29 <glx[d]> you extract pdb next to the exe, and you load the dmp in VS
17:20:41 <Samu> aha, i did it, i had to rename the .pdb
17:21:30 <glx[d]> ah yes it must have the same name as exe
17:22:09 <Samu> okay, some ai was building a vehicle
17:22:20 <Samu> and the depot tile was invalid somehow
17:22:59 <glx[d]> so knowing what happened you can try to reproduce in master
17:23:50 <Samu> 4294967295 is this a valid tile ? :p
17:24:03 <glx[d]> that's INVALID_TILE IIRC
17:25:50 <Samu> thats 14 in human reading
17:27:43 <Samu> vehicle_cmd.cpp line 90, should check for valid tile first, i guess
17:31:07 <glx[d]> command handling checks the tile
17:32:24 <glx[d]> command_func.h:152*156
17:33:11 <Samu> engine_id 3329, which engine is this?
17:34:01 <glx[d]> and for scripts it's checked on script_object.hpp:351
17:34:28 <Samu> oh, well, how did it get to CmdBuildVehicle as invalid?
17:34:39 <glx[d]> hmm the check for scripts might be post 13.0-beta1 though
17:36:27 <Samu> doesn't check for valid tile
17:37:09 <Samu> ah, too bad, 13.0-beta1 is the one without the levelcrossing changes
17:37:14 <glx[d]> there's even a regression test for that now
17:37:33 <glx[d]> print(" BuildVehicle(): " + AIVehicle.BuildVehicle(-1, 153));
17:40:27 <glx[d]> for your tests you can apply the fix in beta1 source
17:55:58 <Samu> alright! awaiting for a good amount of vehicles in the game
17:57:02 *** gelignite has joined #openttd
17:59:55 <andythenorth> If only you could build 1000 vehicles in 1 tickβ¦
18:00:11 <andythenorth> And if only GS could set the ordersβ¦
18:10:10 <Samu> well, white was actually AAAHog
18:10:24 <Samu> can't recall who dark blue was
18:33:55 <andythenorth> I think that in 10490 we have the ultimate incarnation of the most used XKCD
18:34:13 <andythenorth> If someone could oblige with the linkβ¦
18:44:29 <DorpsGek> - Update: Translations from eints (by translators)
18:45:48 <TrueBrain> frosch: lol, you wanted to use sentry for what now? Lol π
18:46:23 <frosch> haha, you found the easteregg π
18:46:46 <frosch> but yes, the most annoying part about ais is how crappy they are, and crash all the time
18:47:36 <TrueBrain> although I get where you are aiming for with your suggestion, I think it is too much at once to make happen
18:48:16 <frosch> don't take the sentry part too serious π
18:48:24 <frosch> but i would like some more filter criteria
18:48:37 <TrueBrain> that really is a lot of work
18:48:50 <TrueBrain> currently BaNaNaS has no real knowledge of content-type
18:49:07 <TrueBrain> but the database has zero opinion about it
18:49:31 <frosch> originally in thought you would reuse the tags
18:49:34 <TrueBrain> (not saying no btw .. but the reason why I like this simple single classification)
18:50:31 <frosch> i.e. trash the user input and just have a list of keywords "trainset, 32bpp, sound" for a newgrf, "town-growth, league-table" for a gs, ....
18:51:11 <frosch> the simple single category only works for newgrf, i have no idea how you would put scenarios, heightmaps, gs or ai into categories
18:51:13 <TrueBrain> would suck for filtering, honestly
18:51:36 <TrueBrain> yeah, I was thinking a lot more simplistic to get things going: heightmaps are small/medium/large, same for scenarios
18:51:48 <TrueBrain> AIs we have train / road / air / ship / mixed
18:52:00 <TrueBrain> just a lot more simplified
18:52:40 <Xarick> crash counter at the top
18:53:19 <Samu> i guess my sample is bad
18:53:53 <TrueBrain> but I get what you mean that for example scenarios is just multidimensional .. some want to look for large, others for a certain climate
18:54:24 <Samu> need to force dummyai on all then compare
18:57:09 <TrueBrain> nothing wrong with that many GRFs in the "unknown" category honestly π
18:57:46 <frosch> esp for these useless "category" ones
18:58:04 <frosch> i would rather ban them from bananas, than invest into detecting them :p
18:58:18 <TrueBrain> honestly, we should just hide them
18:58:22 <TrueBrain> make them non-downloadable
18:58:32 <TrueBrain> if you know the grfid, good on you
18:58:36 <frosch> i think some weirdos love them
18:58:52 <TrueBrain> clearly means we need presets π
18:58:57 <TrueBrain> or some other kind of folder structure π
19:00:12 <frosch> the problem is, whatever we do for bananas, ottd forgets it after download
19:00:29 <frosch> categories on the website, sure - categories in content window, sure, categories in newgrf window, nope
19:00:46 <TrueBrain> that is why you need a folder structure
19:00:54 <frosch> maybe the classification should be put as json into the downloaded tar
19:00:57 <TrueBrain> so loaded content can be grouped per category
19:01:02 <TrueBrain> either in the `.ini` or on disk π
19:01:23 <TrueBrain> owh, you were talking about something completely different than I was π
19:01:26 <kamnet> frosch: It would be better if these categorizations could just be available directly in the NewGRF settings without having to use a slot in the NewGRF list. Or make them static NewGRFs
19:02:32 <frosch> static grfs are always appended at the end, kind of breaks their purpose π
19:03:06 <frosch> possible also prepended at the front, can't remember
19:03:17 <kamnet> Ah, yes, forgot this point... so... better to have category lables to drop in
19:04:28 <TrueBrain> say, we do the classification as you describe .. we need to adjust the JSON schemas in BaNaNaS to work with that .. just a lot of work. Not difficult, just work. Then we need to find a way to present that on the BaNaNaS website .. biggest issue I see there that we all suck at HTML / CSS, so someone will be suffering for a few hours / days to get that done. Next, loading it in-game .. that is surprisingly doable
19:04:45 <TrueBrain> as in-game needs a revamp anyway, so that will just result in QQ posts on reddit, but that is the worst of it
19:05:53 <TrueBrain> the lovely thing about a single classifier, is that it is easy to implement in BaNaNaS (see PRs :P), the change to the HTML / CSS is minimal (as it is the same for every content-type), and in-game is about the same π
19:06:14 <frosch> website is just copy&pasting what you already have. every item in the json would be another dropdown
19:06:32 <TrueBrain> it is not that simple I am afraid .. as you also want that the user can see the information
19:06:44 <TrueBrain> and it is very close to "being able to sort the table"
19:07:19 <TrueBrain> so many simple improvements are possible on the HTML / CSS .. meh
19:07:32 <TrueBrain> I already made the project site a "Visit" link, but I think it should be an icon
19:07:57 <TrueBrain> but mainly, for every content-type you need another filtering
19:08:09 <TrueBrain> thus far we limited how complex the website is, and extensions are cheap / easy
19:08:19 <TrueBrain> so I wonder ... can we be cheeky here somehow
19:09:13 <frosch> well, from a user pov. the website is least important. in-game contest list is somewhat important. in-game newgrf/gs config window are most important
19:09:35 <frosch> i just don't have a good idea how to get the classification from baanans into ottd after download
19:09:46 <frosch> or whether to reimplement the classification inside ottd :p
19:09:48 <TrueBrain> why do you want it there?
19:10:02 <frosch> you download content only once
19:10:11 <frosch> but to setup a game you use the settings windows
19:10:30 <frosch> we already have the problem with the description
19:10:42 <frosch> you can write in bananas whatever you want, in the settings windows it is something different
19:11:08 <TrueBrain> we can fix that in reverse: force the NewGRF description to be the one on BaNaNaS π
19:11:58 <frosch> i think for scenarios we put some .id file into the downloaded tar
19:12:17 <frosch> so there is precedent to put more stuff into the tar
19:12:26 <TrueBrain> yeah, that is nothing to be afraid of
19:12:47 <TrueBrain> but as you notice, the amount of work to make this a reality is growing and growing with the minute π
19:13:07 <TrueBrain> it grows from "just a weekends work" to ... "HOLY COW" π
19:13:07 <kamnet> TrueBrain: Curator role would def. help this
19:13:14 <andythenorth> βContent bundlesβ π
19:14:14 <TrueBrain> I am wondering where we can start peeling this onion, without spending weeks in making something visible .. hmm
19:14:26 * andythenorth awaiting an IRL plane
19:15:55 <frosch> TrueBrain: how about (1) repurpose the tags, bananas server sends the category stuff as tags, so no need to update network protocol (2) make ottd save the tags on download next to the content (3) display the tags in the various settings windows, so that searching behaves the same in content-list and in settings
19:16:34 <TrueBrain> repurposing the tags .. the only way I see that working, is if we change them to a key=value tag
19:16:52 <TrueBrain> so `category=train,palette=8bpp,...`
19:16:55 <TrueBrain> otherwise you cannot filter
19:17:06 <frosch> ottd just treats them as a list of words, and uses free-text search
19:17:17 <TrueBrain> yeah, just for older clients it looks really odd
19:17:17 <frosch> so "train", "8bpp" is enough
19:17:23 <TrueBrain> you want to filter π
19:17:32 <frosch> we already have a filter?
19:17:40 <TrueBrain> okay, let me rephrase π
19:17:46 <TrueBrain> you want a dropdown with selections you can make
19:18:01 <TrueBrain> if we hardcode that list, we cannot extend lists for older clients, which is annoying as ...
19:18:09 <TrueBrain> so I would rather have them as key/value pairs
19:18:17 <TrueBrain> that way it is easy to make a dropdown for selection
19:18:58 <TrueBrain> because it is a shitty experience? π
19:19:18 <TrueBrain> the other thing I would like to achieve, is lower the bandwidth required to fetch stuff
19:19:21 <TrueBrain> both the website as in-game
19:19:46 <TrueBrain> one of the ways to do that, is to only show a category when someone is interested in it
19:20:02 <andythenorth> Our airports should have animated ground handling vehicles
19:20:18 <andythenorth> Baggage carts, steps, refuellers etc
19:20:29 <TrueBrain> okay, the bananas-server receives the OpenTTD version off the client .. so strictly seen we can do both
19:20:36 <frosch> i don't think you can reduce bandwidth that way. you just force users to click through mutliple pages, until they found what they are searching for
19:20:40 <TrueBrain> have tags as `category=train`, and send to pre-14 clients the `train` part
19:20:52 <frosch> people read "they need firs" on reddit, and type "firs" into the search box
19:20:58 <TrueBrain> frosch: bit more in the future, I am hoping we can just use the HTTPS API to do searches etc
19:20:59 <frosch> selecting a category is too hard
19:21:26 <andythenorth> Then they get all the firs weird derivatives π
19:21:39 <andythenorth> Firs cargos for trains etc
19:21:58 <kamnet> "Do I need to download all the FIRS?"
19:22:39 <andythenorth> I donβt mind doing bananas html and css
19:22:46 <andythenorth> I will just complain a lot
19:22:55 <TrueBrain> you always say that; but .. yeah ... π
19:23:05 <andythenorth> And itβs weird that we refuse css frameworks
19:23:07 <TrueBrain> I think I wrote 90% of the HTML and CSS π
19:23:23 <andythenorth> Ok plane time βοΈ
19:23:31 <TrueBrain> since when do we refuse that? Just nobody was ever "good enough" to make it in our style
19:23:49 *** Flygon has quit IRC (Quit: A toaster's basically a soldering iron designed to toast bread)
19:26:23 <TrueBrain> frosch: currently the in-game search also runs over the description, right?
19:26:51 <frosch> yes, it uses as many sources as possible
19:27:00 <frosch> i think it does AND the terms?
19:27:08 <TrueBrain> is that required? As in, if that wouldn't be possible anymore, would that be a real issue, you think?
19:27:09 <frosch> same in newgrf settings
19:28:12 <frosch> i guess name is also good enough, description may be too much
19:28:47 <frosch> the idea was that you can search for "dutch", which should not be a tag, but searching is still reasonable
19:29:21 <frosch> maybe descriptions just add noise π
19:30:19 <TrueBrain> one of the easiest way to make the BaNaNaS list load faster, is to not send the description, and only load it if someone clicks on an entry π
19:30:44 <TrueBrain> I was also thinking about adding a screenshot, what we talked about months ago; what would be required to do that
19:30:52 <frosch> how many GB are the descriptions? :p
19:30:53 <TrueBrain> similar solution: put it in the tarball
19:31:27 <Xarick> more crashes with the new crossing
19:31:32 <frosch> in the tarball? then you cannot see it at all before download?
19:31:42 <frosch> we already had complains that people cannot see the license before download
19:31:44 <TrueBrain> no, also send it over when you click on it
19:31:47 <TrueBrain> same with description
19:31:53 <TrueBrain> also store it in the tarball, so you can see it after download
19:32:43 <frosch> hmm, the auto-tags could also just get prepended to the description :p
19:32:49 <TrueBrain> okay .. I start to see a way through this .. in small steps ..
19:33:41 <Xarick> was the levelcrossing tested?
19:33:51 <frosch> hmm, already so late. i wanted to continue my wasm blog :/
19:33:57 <Xarick> so far the results are disfavouring it
19:34:01 <TrueBrain> you writing a blog?! Owh boy ..
19:34:11 <frosch> i never finished one :p
19:34:11 <TrueBrain> will it have the same faith as the other blog, about ... I forgot
19:34:14 <TrueBrain> you were writing another one π
19:34:28 <TrueBrain> come on, you can do it, finish it!!! π
19:34:59 <frosch> yeah, i remember i was writing some other blog, don't remember the subject, don't want to look it up π
19:42:06 <TrueBrain> I really wonder what is wise .. just make the amount of data we send via the content-service smaller, for example by removing description, or switch to API-based requests
19:42:19 <TrueBrain> client-side search means we don't have to handle the load
19:44:03 <TrueBrain> hmm ... putting a JSON inside the tarball can't really be done easily .. a tarball is considered "write-once" in the infrastructure. But people can change descriptions etc.
19:44:08 <TrueBrain> might be better to put it next to the tarball instead
19:44:17 <TrueBrain> but that makes it a bit more tricky for portable installations
19:46:51 <Xarick> is that enough proof that the new levelcrossing system is worse?
19:47:48 <Xarick> same savegame, created on 13.0-beta1
19:48:01 <frosch> TrueBrain: ottd extracts music sets, maybe it can also just append more files to the tar
19:48:01 <Xarick> loaded then on 13.0 and 13.0-beta1 with ais disabled
19:48:29 <Xarick> 13.0-beta1 had less vehicle colisions with trains than 13.0
19:48:40 <TrueBrain> let the client deal with it? Hmm, might also be tricky .. our tar-loader is .. custom π
19:48:46 <TrueBrain> we could switch to a 3rdparty library, ofc
19:49:23 <frosch> i don't think there are many polished tar libraries out there :p
19:50:23 <frosch> hmm, i recently saw people spamming projects with PRs to fix all usages of python tar reader and directory traversal
19:50:32 <frosch> was that in an ottd repo? i don't remember
19:50:48 <TrueBrain> not that I know at least
19:50:51 <TrueBrain> doesn't mean much π
19:51:09 <TrueBrain> how about something like that?
19:52:40 <frosch> hmm, i read some rage blog about never using complicated words like yes/no for true/false π
19:53:05 <TrueBrain> there are a lot of raging blogs out there; not all are useful nor sane π
19:53:37 <TrueBrain> "Are you building a house?" - "true"
19:53:40 <TrueBrain> some people are just weird π
19:54:22 <frosch> ah, i remember, it was "the yaml document from hell" mentioning the "norway problem"
19:55:00 <frosch> norway is pretty false π
19:56:08 <TrueBrain> lol, in PHP `empty("0")` returns false .. yeah, these things shouldn't work like that π
19:58:01 <TrueBrain> anyway, with my gist, we don't fake classifications as tags in our backend, but do for the clients
19:58:09 <TrueBrain> keeps things clean in the backend
20:00:03 <frosch> the next steps turn pretty sentry at the end π
20:00:15 <TrueBrain> I couldn't resist π
20:01:06 <frosch> if you skip the spaces in the tags like "set-type:train", the old search works for them
20:01:17 <frosch> though iirc our search boxes even support quotes
20:01:32 <TrueBrain> hmm .. you want to send them as `set-type:train`? I was just thinking `train`?
20:02:02 <frosch> oh, i misread your gist
20:02:11 <TrueBrain> yeah, both work, honestly
20:02:37 <frosch> i read it as "set-type: train" + "build-trains" for old ottd
20:02:48 <frosch> i skipped the "train" inbetween
20:03:13 <TrueBrain> which do you prefer?
20:03:30 <Samu> shall I create an Issue about the level crossing being not safer than previously?
20:03:52 <TrueBrain> seems I should be able to do that tomorrow or so .. let's see how far I get π
20:04:16 <frosch> i wonder how many people whine, if you just trash their tags :p
20:19:18 <TrueBrain> frosch: Add them to the description as a list? As a compromise? π
20:20:15 <petern> Keep their tags... just hide them π
20:20:25 <frosch> i was more thinking of: hide them, but do not purge them from the bananas metadata repo
20:20:43 <TrueBrain> hide them, including: don't make it searchable in-game?
20:20:45 <TrueBrain> as that we can do π
20:21:43 <frosch> hmm, actualy... i forgot we use a VCS
20:22:16 <frosch> i was just considering the crying users, who want their tags back, but we can link them to the git history
20:22:46 <frosch> imagine andy storing his password in the tags, and he forgets it, and has no way to look it up again
20:22:52 <petern> Custom tags are probably useful though, if they aren't filled with junk.
20:23:23 <frosch> i think we gave up on "useful tags" :p
20:23:50 <petern> Yeah, I realise that "if" is doing some heavy lifting π
20:25:27 <petern> End-of-line crashing right?
20:27:05 <kamnet> Two track types butted up against each other.
20:27:11 <petern> Problem is caused by trains overrunning the end of the line, because it's the centre of the engine that counts, not the front.
20:31:00 <Samu> if the vehicle enters the double crossing, it won't stop on the next one if suddenly a train crosses the next
20:31:19 <Samu> pretty sure this is the reason why I'm seeing more crashes
20:31:28 <TallTyler> Samu: if your level crossings are designed in an unsafe way, they can be less safe than the old way. It does not mean we should revert the feature. You need a long enough gap between the path signal that reserves the crossing and the crossing itself to avoid a train βsuddenlyβ appearing.
20:32:16 <Samu> i'm running a 2nd test, will check if i get more crashes
20:35:29 <Samu> the problem is that, I'm using AIs
20:36:00 <Samu> they don't change from a version to another, and I get more crashes on the new system :(
20:36:08 <Samu> they build the same manner
20:40:37 <Samu> wow... that is... cheating
20:55:04 <Samu> i wonder how lc-zorg counted his crashes
21:05:18 <Samu> alright, the build up is ready, now starting the counting
21:14:19 <Xarick> first test sample at the top, second test sample at the bottom
21:14:36 <frosch> hmm, this wasm interpreter's source uses macros like "#define and &&" and "#define not !"
21:14:44 <Xarick> the new level system results more crashes again π¦
21:14:49 <frosch> super weird to read the source
21:15:20 <Samu> time for me to investigate the code itself :) let's improve this
21:17:29 <dP> frosch: #define python c++ π
21:18:18 <frosch> no, it's plain C, it uses fancy _try macros to emulate exceptions with returncodes, gotos, and _catch labels
21:19:31 <dP> somehow that makes more sense
21:19:45 <dP> in my mind pure c is more pythonic than c++
21:20:56 <frosch> i never saw a definition of what "pythonic" means
21:21:38 <frosch> i just know that people who say "C is better than C++" must have gotten under some bus at some point
21:22:31 <TallTyler> Goes it approve #10144?
21:22:51 <TallTyler> That looks so tasty
21:23:23 <glx[d]> managing memory by hand is a pain
21:23:46 <Samu> CheckLevelCrossing has a NULL, should be nullptr
21:23:58 <dP> frosch: as someone who tried to understand the code flow of network commands just recently I can definitely say there is some reason to it :p
21:24:13 <glx[d]> NULL and nullptr are the same thing
21:24:21 <frosch> TrueBrain: that "disclaimer" scares me
21:25:05 <TrueBrain> if only it would stop there ...
21:29:43 <frosch> oh dear, there are more disclaimers further down the text
21:36:30 <frosch> tl;dr; that guy actually does not use C, they have their personal framework which extends C with vectors, destructors, and apparently even custom stack handling
21:37:37 <dP> didn't they do their own language?
21:38:49 <dP> I guess it's still in planning
21:39:34 <frosch> what makes you think they are the same personn?
21:39:36 <Kuhnovic> frosch: There is quite a nice framework available for a while now. I believe it's called C++ or something. I should check that out...
21:40:08 <frosch> "nice" is subjective π
21:40:34 <dP> frosch: on the same page TB linked: "No, it wonβt be Rust. Itβs my own language. Itβs called Yao."
21:40:42 <frosch> i never claim that C++ is a good language, I just claim it is better than plain C π
21:41:38 <dP> in some points it definitely turned the wrong way...
21:41:40 <frosch> dP: ah, i skipped the last section π
21:42:21 <dP> between templates and overloads it's sometimes nearly impossible to tell what is going to be called, for example
21:42:28 <frosch> these days i even claim C++ is better than java, though i would not have 15 years ago
21:42:38 <dP> I had better more success reading perl and basic xD
21:43:41 <frosch> dP: C++ is a multi-paradigm language. that means, if you use everything, you are doing it wrong :p
21:44:21 <Kuhnovic> C++. It can do pretty much anything that other languages can. It's just a lot harder to do.
21:44:50 <Kuhnovic> Still my bread and butter though :p
21:50:21 <frosch> hmm, i need to find a better resource, what wasm intends for immutable globals
21:50:43 <frosch> because the interpreters i have do not really make it useful
21:51:31 <dP> I somewhat enjoyed writing a bit of gobject stuff at some point in my life
21:51:43 <dP> it was kinda like writing python except 3 times more verbose xD
21:52:38 <frosch> if you program C, you can type stuff all day long, and have the feeling of getting things done
21:52:59 <frosch> but actually you are just using such an inefficient language, that you have to type so much to get anything done
21:53:08 <frosch> if you like typing, you like C :p
21:53:36 <dP> c++ isn't any better in that regard :p
21:54:29 <frosch> oh yes, it is, having a standard library with vector, map and stuff saves so much
21:54:34 <frosch> oh, and error handling
21:54:53 <frosch> every C project I worked on had their own macro collection for emulating exceptions
21:56:19 <frosch> yes, and i know no project which uses them
21:57:00 <dP> pretty sure gobject is quite popular
21:59:00 <dP> and exceptions aren't exactly a good thing either
21:59:01 <JGR> gobject is theoretically nice, but actually using it is just awkward and unpleasant
21:59:18 <dP> having to account for a possibility of a long jump at any point in your program
22:00:42 <dP> iirc google even banned all exceptions in their c++ code
22:04:28 <Samu> now it's the better one, albeit by 1
22:06:00 <dP> frosch: there are enough cons there as it is
22:06:07 <dP> rust also doesn't have exceptions btw
22:11:19 <frosch> dP: i think they have, they just do not call them like that
22:11:41 <frosch> they have all the important stuff of exceptions: memory cleanup for early returns
22:11:55 <frosch> just you have to tag every place that propagates an error with "?"
22:12:13 <dP> there is panic thing but it's not generally used for error handling
22:12:35 <dP> error handling is done with Result<> and such
22:13:20 <frosch> yes, but that is just a more explicit way to write: this function returns a value or an exception
22:13:38 <frosch> the caller then has to decide whether they handle the exception directly, or propagate it
22:13:55 <frosch> they cannot "ignore" it, like most C programmers do
22:14:35 <dP> yes, but important part is that it can no longer jump to a random point in the code
22:15:12 <frosch> i don't understand that, there is no "random" jump
22:15:19 <dP> looking at a throw you can't easily tell where it's gonna be caught
22:15:32 <frosch> if you develop a habbit of putting a "?" after every rust function call, you have the same behavior of c++
22:16:43 <dP> you also can't tell which function is going to throw and what in c++
22:16:49 <frosch> anyway, i got distracted. i did not want to compare c++ with rust π i only wanted to make fun about plain C
22:17:24 <frosch> did you use setjmp/longjmp at some point? :p
22:17:51 <frosch> oh, and pthread_cancel is also awesome
22:18:13 <frosch> did you know C++ compilers implement pthread_cancel as exception, so that they can unwind the stack and call destructors?
22:18:59 <Xarick> testing LC-Zorg savegame
22:19:16 <Samu> my approach is much worse :(
22:19:24 <Samu> the new approach is much better
22:19:29 <Samu> the old approach is in-between
22:21:06 <Samu> maybe it's because the vehicles are larger
22:25:26 <Samu> oh, trams that look like they're trains, i see
22:25:44 <Samu> that won't fit between the gaps
22:36:41 <frosch> did mutable/immutable globals thingie in wasm makes no sense to me
22:37:03 <frosch> the immutability is defined in the script which imports the global
22:37:32 <frosch> so i could as well be a compile-time thingie
22:40:42 <frosch> yeah, the wasm interpreter i have does exactly that: check immutability at compile time
22:42:00 <frosch> "compile time" is weird for an "interpreter", but that's what this implementation calls it
22:56:32 <JGR> Probably it won't happen, unless you're unlucky with a race in multiplayer
22:56:51 <JGR> Still, it's worthwhile to give a useful error message
22:57:13 *** Wormnest has quit IRC (Ping timeout: 480 seconds)
23:00:47 *** keikoz has quit IRC (Ping timeout: 480 seconds)
23:01:25 *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
23:01:54 *** WormnestAndroid has joined #openttd
23:11:36 <Samu> this is much more elaborate than I first anticipated
23:23:15 *** Samu has quit IRC (Quit: Leaving)
23:34:28 *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
23:35:02 *** Wormnest has joined #openttd
23:35:26 *** WormnestAndroid has joined #openttd
23:36:11 *** Wolf01 has quit IRC (Quit: Once again the world is quick to bury me.)
23:50:53 *** sla_ro|master has quit IRC ()
23:56:55 <andythenorth> Plane landed βοΈ
continue to next day β΅