IRC logs for #openttd on OFTC at 2023-12-26
โด go to previous day
00:18:39 <truebrain> _glx_: with a simple Manifest you can also tell a DLL is in your local path ๐ Even easier ๐
00:19:18 <_glx_> oh and we have a manifest
00:19:25 <truebrain> well, I need it for another project
00:19:30 <truebrain> but CMake now supports manifests
00:19:36 <truebrain> well .. "now" .. since 3.4 ๐
00:20:09 <_glx_> I mean we have os/windows/openttd.manifest
00:20:28 <truebrain> let me see how I can word this differently ... that is irrelevant to me, as I am not building this manifest in OpenTTD
00:20:42 <truebrain> the DLLs are not made in the OpenTTD repo
00:30:45 <truebrain> these small errors in those SDKs ...
00:30:56 <truebrain> on Steam it is called `steam_api.so`, instead of `libsteam_api.so`
00:31:09 <truebrain> on Discord it is called `discord_game_sdk.dll.lib` instead of `discord_game_sdk.lib`
00:32:16 <truebrain> but, Steam and Discord work; at least for the simple announcing you are in the main menu
00:32:21 <truebrain> tomorrow we add some more functionality ๐
00:32:51 <truebrain> owh, and what is cool, I would be able to distribute these plugins via BaNaNaS, if we so wish ๐
00:52:04 *** fairyflossy has quit IRC (Quit: User went offline on Discord a while ago)
01:02:20 <truebrain> yet-another-social-presence-PR ๐
01:02:32 <rau117> Will there be an option to hide theese โsocial featuresโ?
01:02:32 <rau117> Let's say I don't mind others knowing that I'm currently playing openttd, but I absolutely don't want them to know on which server or for which company.
01:06:22 <emperorjake> If you actually read the PR, it seems like there are plugins that you will have to install to get the social functionality. So it's an opt-in feature, not opt-out
01:07:14 <truebrain> like all our features! ๐
01:09:13 <emperorjake> This will be a fun feature, I already enjoy spying on my friends in Cities Skylines 2
01:09:55 <truebrain> yeah, I really use it a lot to join friends in multiplayer games .. so much easier than figuring out which servers, "owh, you meant that one", and blabla
01:14:41 <truebrain> owh, funny, `dlclose` cannot be found .. wuth? Haha ๐ Why does it work locally ..
01:16:34 <truebrain> something for tomorrow; way too late already ๐
03:45:51 *** D-HUND has quit IRC (Ping timeout: 480 seconds)
07:30:39 *** ChanServ sets mode: +v tokai
07:37:35 *** tokai|noir has quit IRC (Ping timeout: 480 seconds)
08:40:56 <georgevb> How to use the rest 8 random bits in vehicles code?
08:53:59 <andythenorth> peter1138[d]: RGB Flat Railtypes with New Map Array?
08:57:51 <truebrain> wow, you made a PR for that? Cool!
09:10:17 <truebrain> owh, I thought andythenorth did
09:16:10 <reldred> <a:eyesshaking:833706919465058355>
09:26:26 <truebrain> let's see if the CI likes this more ...
09:31:54 <peter1138[d]> A bit of the RGB CC patch is already a PR ๐
09:34:40 <andythenorth> Wonder what the silliest thing we could add in 2024 is?
09:35:47 <peter1138[d]> 32bpp-to-8bpp. (Why bother / Remove 8bpp / Pointless)
09:36:26 <reldred> Do it. Get rid of 8bpp. If anything just because I want to see everyone who doesn't even know what it means lose their marbles.
09:37:03 <peter1138[d]> Most basesets and most NewGRFs stop working \o/
09:38:10 <reldred> nah I more meant the 8bpp exclusive mode
09:38:44 <LordAro> once 14 is out the survey will tell us how many people actually use the 8bpp blitters :p
09:39:07 <peter1138[d]> Oh dear, my music library has an artist as both "Laetitia" and "Lรฆtitia" :/
09:41:19 <reldred> LordAro: Curious, will that also give you stats on how many people are using JGRPP?
09:42:26 <LordAro> if jgr adds it in, yes
09:42:47 <LordAro> well, i don't know about "number", because opt-in/out etc
09:43:55 <reldred> Yeah but still, would be good to get a read of the room at least. Maybe there's specific metrics that JGR could collect in addition to, so you can see what percentage of the userbase is using a specific JGR feature, etc.
09:45:55 <andythenorth> I could just port all my grfs to 32bpp and continue drawing in a limited palette ๐
09:46:09 <reldred> andythenorth: thats what a bunch of people do anyway
09:46:15 <andythenorth> Wonder actually if itโs time to do that
09:46:32 <reldred> All of my stuff for the last few years has been 32bpp except when palette cycles need to be in use.
09:46:52 <andythenorth> Yeah itโs the palette cycles that inhibit me trying ๐
09:48:07 <peter1138[d]> Multi-frame sprites.
09:48:23 <peter1138[d]> Just make the game redraw the screen every frame.
09:48:38 <peter1138[d]> Would require "optimizations" to the rendering system.
09:49:13 <andythenorth> I suspect FIRS is already doing that ๐ซค
09:49:46 <locosage> reldred: does it even support collecting custom metrics from patchpacks?
09:50:36 <locosage> as I understood it I'll have to set up my own collection server and send o copy of telemetry there if I want to do any custom metrics
09:52:17 <reldred> locosage: hell if I know, I'm suggesting it might be useful
09:53:17 <reldred> might be, might not be
09:53:35 <reldred> I know my immediate inclination would be to make a grafana wallboard of it lmao
09:57:52 <truebrain> reldred: first one needs a step to make things like traceable, which requires enough samples a day to do so. But other than that, yes, grafana dashboard ๐
09:58:29 <truebrain> the data is rather complex, so it is not a normal simple dashboard, sadly
09:59:11 <reldred> Yeah that's a chunk of my day job; trying to track and visualise complex data for a business with a few very different verticals
09:59:33 <reldred> Can't say I really know what I'm doing but I keep finding more money under the sofa cushions
09:59:53 <reldred> Though I have grown up some and started using other systems like metabase
10:00:35 <truebrain> reldred: main issue what JGRPP will have is getting enough samples to make it less traceable. But that is up to the players, ofc ๐ And whether JGRPP will join the survey system or not, that is up to JGR ๐
10:01:00 <reldred> But I helped find a $14k/yr shortfall in billing which has bought me a lot of favors at work now which is nice
10:01:45 <reldred> truebrain: Yeah I can't speak for all of the jgrpp players but I'd only see it as an enabler not a disabler. Hell I wouldn't even care if my data was anonymised or not.
10:05:16 <truebrain> now for the wording ...
10:05:19 <truebrain> that will be tricky ๐
10:09:36 <xarick> I left 4 OpenTTDs running over the night. By looking at the dates, the one that advanced further is the fastest:
10:09:36 <xarick> 1st place for std::vector<const Vehicle *>, ending at 13-09-1987.
10:09:36 <xarick> 2nd place for std::unordered_set<const Vehicle *>, ending at 15-02-1984.
10:09:36 <xarick> 3rd place for std::unordered_set<VehicleID>, ending at 06-01-1984.
10:09:36 <xarick> 4th place for std::set<VehicleID>, ending at 20-08-1983.
10:11:00 <dwfreed> that is not exactly a good test
10:11:13 <dwfreed> for one, the latter three are within a margin of error
10:11:52 <peter1138> Are they all competing for the same processor time?
10:12:09 <dwfreed> and two, you have no guarantee they received equal CPU time, or that their rendering calls took the same time
10:13:12 <truebrain> and the O() values of std::vector, unordered_set and set are well documented
10:13:33 *** gelignite has joined #openttd
10:17:34 <truebrain> right, let's see how the Steam integration is doing .. should work .. in theory ๐
10:18:00 <_jgr_> truebrain: The survey code is in my branch ready to go, it just needs the build-time keys
10:18:27 <truebrain> nice! I need to refresh my memory who needs to do what, but I will get back to you on that this week ๐
10:18:58 <truebrain> something about private/public keys, but memory fuzzy ๐
10:24:14 <truebrain> Also works on Steam \o/
10:25:19 <truebrain> that was for the easy parts .. now the in-game UI etc ๐
10:27:09 <truebrain> _jgr_: You are using the workflow as we defined it? So with the part where it uses OpenSSL to sign the survey-key?
10:27:46 <truebrain> I can just, you know, look it up .. ugh, I am too lazy ๐ฆ
10:29:36 <LordAro> truebrain: very very nice
10:29:54 <truebrain> that I documented stuff, or Steam integration? ๐
10:30:08 <_jgr_> truebrain: Thanks, I'll take a look through things a bit later ๐
10:30:27 <truebrain> _jgr_: just important: keep the private key to yourself ๐ I do not want to see that ๐
10:31:19 <truebrain> it was designed to "just work", so I am very curious if it actually works ๐
10:31:50 <truebrain> reminds I should write the collector to combine days of surveys into less-traceable information .. curious if we have enough data a day by now to do so
10:34:38 <truebrain> meh; not that many nightly players ๐
10:38:55 <xarick> how will this stuff work with multiple openttd instances running
10:39:41 <xarick> the social plugin stuff
10:40:03 <reldred> that you've been a very naughty boy or girl
10:42:11 <xarick> I use discord and I'm scared
10:43:54 <truebrain> jfs: ah, I mostly wrote it down as your PR seems to already have code for that. But that is unfinished, I gather?
10:44:44 <jfs> I think it was mostly skeleton code
10:44:51 <truebrain> yeah, okay, that is fair
10:44:59 <truebrain> right, for another PR it is! ๐
10:45:20 <jfs> well there's two situations, one where the game is already running and one where it isn't
10:45:21 <truebrain> that means my Callbacks remain empty, and compilers complain about that! ๐
10:45:31 <jfs> and also consider if the game is running, but it's the wrong version of the game
10:45:53 <truebrain> yeah, without being able to launch OpenTTD via an `openttd://` it will be kinda pointless very quickly
10:46:27 <truebrain> will need to read up in the SDKs what they provide for this, if any
10:46:45 <truebrain> I guess if we can make that it only works if you are both running the same game, it might be worth trying, but ... not the focus ๐
10:46:48 <truebrain> status reporting first!
10:47:23 <jfs> and another thing is the entire "convert a singleplayer game to multiplayer" idea
10:47:35 <truebrain> yeah ... for 15.0 ๐
10:47:38 <truebrain> I still like the idea
10:47:44 <truebrain> but ... that requires effort ๐
10:48:09 <truebrain> so many choices to be made here for Rich Presence .. do you put in the status the version of OpenTTD the user is running or not?
10:48:18 <truebrain> there isn't much room .. and it is not all that interesting from a player-perspective ..
10:48:24 <jfs> another thing in the same vein could be being able to start a new game from the scenario editor, "play this scenario now"
10:48:46 <truebrain> the game is almost 20 years old, and we still have fresh ideas ๐
10:48:58 <jfs> hmm, there is a "tooltip" string for the game icon, that might be suitable for the version number/name
10:49:17 <truebrain> on Discord, yes. On Steam, no.
10:49:33 <truebrain> but I guess it is the perfect piece of information to put in the callback struct
10:49:54 <truebrain> so every plugin can decide for their own ๐
10:50:48 <truebrain> I might skip some other things from my TODO list too, like on what server you are, and what company. Just because that can easily be done in follow-up PRs
10:50:59 <truebrain> adding this all to BaNaNaS also takes a bit of effort ๐
10:51:19 <truebrain> especially as there is a new restriction (OpenTTD Developers only)
10:52:19 <truebrain> maybe setting up a second instance of BaNaNaS is easiest ... hmm
10:52:29 <jfs> using the "simulator" to build an idea
10:52:45 <truebrain> owh, time, I forgot about the start-time Discord has .. which is pretty nice btw
10:53:45 <truebrain> so easy to add ๐
10:55:36 <truebrain> I also like how Steam can show with who you are playing, and with how many you are playing
10:55:41 <peter1138[d]> Sometimes the easiest way to fix past mistakes is to squash it all and then extract it again ๐ฎ
10:56:19 <peter1138[d]> And maintaining the 10 year old commit history is not 1) useful 2) important 3) wanted, anyway...
10:56:23 <jfs> jfs: _jgr_ I don't think you have a distinct icon for your patchpack, but it might be convenient for this use case. do you have any ideas yourself for what an icon/logo variation could look like?
10:56:53 <truebrain> oof, patch-pack support .. did not think of that ..
10:57:05 <truebrain> the plugin needs to support that ๐
10:57:08 <jfs> exactly why the "version to launch" is so important
10:57:41 <truebrain> for Steam, Steam assumes you are launching OpenTTD via Steam
10:57:48 <truebrain> so there is not much room there for something like that
10:58:09 <jfs> yeah but then also only the version running via steam can actually integrate, right?
10:58:19 <truebrain> so either they match, or they do not
10:58:46 <_jgr_> jfs: I'm not really an artist, I wouldn't try to come up with a different/modified icon
10:58:51 <peter1138[d]> But Steam can run different versions. If I set Steam to run a nightly, and someone else is on 14.0...?
10:59:03 <truebrain> you will not be able to join each others game ๐
10:59:08 <truebrain> so we need to find a nice way to tell the user that
10:59:11 <truebrain> but that is for another PR ๐
11:00:12 <peter1138[d]> I got my mountain bike out at 9am to fix it and then go out on a ride at some point today.
11:00:38 <peter1138[d]> So far I got as far as taking the wheel out and getting the cassette off...
11:00:49 <xarick> what is the .clear() equivalent for std::array
11:01:11 <peter1138[d]> Closest is .fill()
11:01:27 <peter1138[d]> But you need to fill it with a value, so .fill(nullptr) if you have pointers.
11:02:02 <peter1138[d]> If you hadn't noticed, std::array are fixed size, so you might run into memory issues.
11:02:14 <jfs> yeah the thing is that std::array has its size and capacity defined at compile-time
11:03:06 <truebrain> jfs: check out truebrain_test_06206 ; tooltip for version works, and it is funny with custom builds ๐
11:03:39 <peter1138[d]> That is why Rubidium said it won't help you much.
11:04:47 <jfs> truebrain: maybe you can use "custom build" as a version string for display in those cases (but still have the actual specific version string internally available for launch links etc)
11:05:03 <truebrain> it is not like a common situation
11:05:09 <truebrain> so I don't think it is worth the effort, honestly
11:06:20 <truebrain> right ... guess after lunch I look into MacOS support .. should be very similar to Linux, but I need to setup a VMWare for it again ๐
11:07:43 <xarick> I think the limit is 5000 vehicles in a group, I think groups are per vehicle type
11:08:01 <xarick> array sized 5000 for each group.... that's very bad for memory
11:09:18 <xarick> okay, I better give up before I start
11:09:34 <peter1138[d]> Are you storing VehicleID or Vehicle *?
11:09:38 <jfs> std::array has the same performance characteristics for iteration as std::vector anyway
11:09:56 <xarick> was about to be storing const Vehicle *
11:10:17 <jfs> the difference in performance characteristics is how many memory allocations are involved and whether it can reallocate to different sizes
11:10:31 <peter1138[d]> 8 bytes per entry, so each list is 40000 bytes... and you either need to store the number of items, or iterate every single entry.
11:10:55 <peter1138[d]> Basically, the comment about std::array was a throw-away joke. But you didn't understand that. ๐
11:14:31 <peter1138[d]> Compile-time checking for saveload variables was a nice change.
11:14:55 <peter1138[d]> It tripped up some of the old RGB-CC changes ๐
11:24:19 <truebrain> We store a lot more state now about network games, as the UI also shows it. That makes this PR a lot easier now ๐
11:52:29 <jfs> hmm, for the joining a game via social, two more ideas:
11:52:29 <jfs> - in perhaps the multiplayer status window/player list, have a toggle or similar for "allow friends to join this game"
11:52:29 <jfs> - similar, if one or more plugins indicate that they support inviting friends to join, offer a button to "invite a friend" where the player can then choose a platform and get a list of eligible friends from the social platform
11:59:20 <Rubidium> shouldn't the social plugin also pass/know which song the jukebox is playing, so they can send "now playing X" on IRC, like people did in the past? ;)
11:59:50 <merni> That works with Spotify and things
12:00:02 <merni> But I doubt anyone would want that for openttd midi music
12:01:06 <Rubidium> why not? Then you co-players can play the same songs so they're in the same mood
12:03:12 <xarick> one last test, std::vector<VehicleID>
12:03:30 <xarick> I need to more scientifically do this
12:03:50 <peter1138[d]> merni: I have actually opened up the game just to play the music before now...
12:03:55 <peter1138[d]> (Same for Doom :))
12:04:44 <peter1138[d]> Hmm, this UI is messy. (Of course it is, it's mine.)
12:05:28 <peter1138[d]> Also it's slow because it draws an HSV gradient pixel by pixel.
12:06:18 <peter1138[d]> The original UI just had 3 sliders for R, G and B, but that sucked.
12:11:15 <xarick> Need do create a more continuous test that involves adding and removing vehicles to groups
12:11:47 <xarick> that will then force vector searching
12:12:54 <xarick> the current test still does that, at the start
12:13:18 <xarick> but once the vehicles are moved to their own group, the rest of the test is just creating lists
12:14:38 <xarick> this is where I expect std::set to beat std::vector, though I might be wrong
12:27:15 <talltyler> Actually _jgr_ regarding your offer to upstream stuff, that would be a good one. I tried but drawing code has diverged and I wasnโt confident Iโd get it right.
12:27:59 <jfs> xarick: the primary use case for std::set and std::unordered_set is when you need to query for membership a lot, "is this vehicle inside this group or not?", over and over again. it's not offering any advantages for simply iterating over members
12:28:44 <_jgr_> talltyler: FIRS performance issues aren't directly related to that issue
12:30:56 <jfs> in the contrary, std::set has worse memory characteristics (number and frequency of allocations) than std::vector will have, and std::unordered_set will probably also have worse iteration characteristics because it's effectively either sparse or bucketed
12:32:12 *** ahyangyi has joined #openttd
12:32:12 <ahyangyi> continuous arrays offer the fastest possible iteration speed, because our hardware is more or less optimized around this particularly common data structure
12:32:23 <talltyler> Do you know what you changed that improved it? Because your patchpack doesnโt lag nearly as much as when I zoom in or out, unlike vanilla
12:32:46 <talltyler> And for me that only happens with FIRS-based industries
12:32:53 <_jgr_> There isn't a singular change which I can upstream, it's many small things
12:35:43 <peter1138[d]> And difficult to track all the changes to those changes since first introduction.
12:36:04 <peter1138[d]> "Just merge from JGRPP" is almost never that simple ๐
12:36:58 <reldred> Yup. Theres a lot of little things all over Iโve noticed.
12:38:12 <peter1138[d]> The varact2 optimizer looks interesting, and mostly self-contained, but also... potentially error prone, and it would be nice if the GRF compilers would do that themselves.
12:38:22 <peter1138[d]> (Maybe it can be ported to nmlc, somehow)
12:41:48 <jfs> well yes but adding it to nmlc only benefits new releases
12:41:53 *** gelignite has quit IRC (Quit: Stay safe!)
12:43:26 <_jgr_> Varact2 optimisation works on the internal representation, so much of it is doing stuff that can't be represented in the serialised format
12:45:21 <andythenorth> FIRS is usually to blame for most things ๐
12:45:38 <andythenorth> And itโs been forked a lot now
12:46:15 <peter1138[d]> Yes, but those forks are the fault of FIRS ๐
12:48:10 <peter1138[d]> I always wondered if TTDPatch used the byte-stream as is.
12:48:29 <peter1138[d]> Hmm, given the need to link to earlier actions, probably not.
13:03:29 <locosage> _jgr_: can't it be added to the format?
13:04:12 <locosage> I'm thinking of adding some code optimizations to grf-py but there isn't really much code using it atm xD
13:04:46 <locosage> and one that does is mostly hand-optimized anyway
13:06:59 <jfs> truebrain: might also be worth adding to the plugin API that strings are nul-terminated UTF-8 unless otherwise specified
13:08:36 <truebrain> hmm, I am also going to versionize the entry point
13:08:41 <truebrain> it just makes things easier
13:09:02 <locosage> though sometimes I feel like things should be removed from the format rather than added
13:09:07 <jfs> yeah I think versioned entry point just makes things simpler
13:09:17 <locosage> all that shift/and/divmod nonsense
13:11:20 <_jgr_> The shift/and part is very useful
13:11:35 <locosage> it's useful like 5% of the time
13:11:37 <jfs> truebrain: the advantage of having versioned entry points is that it can potentially better support both uplevel and downlevel on both the plugin and game side
13:11:45 <locosage> and 95 it's just fffffff
13:12:06 <jfs> the game inits the versions it supports, and the plugin implements the level it can/wants to/knows about
13:12:06 <truebrain> jfs: honestly, for OpenTTD it is all the same. But it makes plugins easier to read
13:12:15 <truebrain> the way I currently did it works fine too
13:12:18 <truebrain> but creates a lot of boilerplate
13:13:10 <_jgr_> locosage: There are a lot of variables where multiple things are packed in, not having this would mean needing even more spills to temporary storage
13:13:40 <jfs> do consider if people have v2 plugins shipped with OTTD 14, and keep those same plugins around (author gone missing?) when OTTD 15 comes out and supports v4, but if v4 is built on top of v2 then OTTD has an easier time supporting the downlevel plugins
13:14:08 <truebrain> I strongly suggest we do not do any compatability in OpenTTD itself
13:14:33 <truebrain> if OpenTTD 15 ships with v4, the plugins need to support v4, otherwise they will not work
13:14:33 <jfs> and a v4 plugin can also be loaded in OTTD 14 but only inited to up to v2 level
13:14:48 <truebrain> and a plugin van support both v2 and v4
13:14:52 <truebrain> but OpenTTD does not deal with any of it
13:15:09 <locosage> _jgr_: yeah, I guess. but temporary spills kinda need to be solved too
13:19:14 <jfs> anyway I'll be off for the most of the rest of the day
13:19:32 <locosage> actually, packing bunch of stuff into a single variable is quite a waste of cpu usually
13:20:04 <locosage> I don't think nml can optimize var access even if it needs several fields from one
13:20:16 <_jgr_> Having the and mask available on the read instruction makes it easy to not bother populating bits which aren't used
13:20:42 <locosage> that's an interesting idea
13:20:49 <locosage> iirc vanilla doesn't to that though?
13:21:18 <_jgr_> I do it in my branch for expensive variables
13:21:24 <locosage> still, it's kind of backwards way to go about it
13:21:53 <locosage> instead of just requesting var with data you need var has everything and game figures out what actually needed from the mask
13:22:49 <_jgr_> The current format only allows parameters for variables numbered 60 - 7F, so you'd soon run out if you did them separately
13:23:21 <locosage> yeah, that would need to be increased in that case
13:23:39 <locosage> but, like, add 1 byte for var number and remove 5 for shift and mask :p
13:24:52 <locosage> iirc some features already ran out of variables anyway :p
13:25:11 *** nielsm has quit IRC (Ping timeout: 480 seconds)
13:27:49 <xarick> afterload wastes most time on GetStringBoundingBox
13:29:38 <ahyangyi> Calculating the bฬดอฬฐoฬถฬฬผuฬตฬฬฌnฬถฬอdฬธออiฬดฬฬณnฬดอg-bฬฆoฬถฬฬณxฬตฬฬผ is highly non-trivial
13:30:27 <xarick> Layouter layout(str, INT32_MAX, TC_FROMSTRING, start_fontsize);
13:32:09 <xarick> ah, I see, it's updating viewport virtual sign positions, probably station signs
13:32:28 <xarick> yeah, this savegame has 64k stations, ok makes sense
13:36:31 <Rubidium> and like a million signs?
13:39:46 <xarick> multiplication is hard
13:40:33 <_glx_> these stats are cached anywy
13:48:13 <xarick> it completely overshadows the multiplication
13:48:46 <_glx_> but you are trying to optimise something called only once when loading ?
13:49:16 <xarick> wait, I'm not done yet, next is std::unordered_set
13:57:00 <xarick> cheaper than std::vector
13:58:36 <xarick> wondering if it makes much of a difference with const Vehicle *
13:58:45 <xarick> requires manual editing, grr
14:09:47 <xarick> no difference, it seems
14:16:53 <xarick> how often are AIs adding/removing vehicles to groups
14:17:21 <xarick> well, by just buying vehicles and so on, they inadvertedly are doing that
14:17:42 <_glx_> but players do the same
14:18:45 <xarick> there's the default group, even for players who don't use groups
14:18:58 <xarick> that group always updates groupstatistics
14:18:58 <_glx_> yes, but it's a 1 time cost
14:19:53 <_glx_> at most it's once per tick as you can't buy more than one vehicle per tick
14:21:15 <_glx_> and GS are not supposed to buy stuff
14:21:41 <xarick> they can enter companymode and asyncmode
14:22:01 <_glx_> then we should disable async if in company mode
14:23:21 <xarick> I'm about to do a GS that enters company mode
14:23:36 <xarick> mass builds vehicles and then mass sells them
14:23:47 <_glx_> GS in company mode should have same limitation as Companies
14:23:48 <xarick> to trigger std::vector or std::unordered_map
14:23:56 <_glx_> so one command per tick
14:24:17 <xarick> yes, but this is going to be useful for determining what's faster
14:24:43 <xarick> a bit extreme, but... at least it will be clear
14:29:19 <xarick> I'm gonna need 15 companies, can't GSs start a company ? ๐ฆ
14:30:47 <xarick> I know! there's that dummyai dude. he will be useful for this
14:34:31 <locosage> _glx_: would be nice to add more actions to deity mode before doing this ;p
15:00:17 <xarick> hmm got an interesting question
15:00:33 <xarick> when picking up a road type
15:00:56 <xarick> as a GS on a company, is that road type for that company? or is that not how it works?
15:01:16 <xarick> will it keep track which company used which road type?
15:02:37 <xarick> as I'm going to switch from company to company, I wonder
15:08:38 <_glx_> it's local to the script
15:09:13 <_glx_> like the current type is for the client in GUI
15:10:42 <xarick> hmm, seems that a road type that is available to a company, may not be available to another (introduction date of vehicles and so)
15:12:18 *** Flygon has quit IRC (Quit: A toaster's basically a soldering iron designed to toast bread)
15:29:44 <xarick> what's the name used for invalid engine for squirrel
15:34:46 <xarick> static const EngineID INVALID_ENGINE = 0xFFFF; this exists for OpenTTD, but not for Squirrel
15:36:01 <_glx_> because it uses ScriptEngine::IsValidEngine()
15:36:21 <_glx_> which checks for availability for the company
15:36:44 <_glx_> and engine can be valid for company 1 and not for company 2
15:39:14 <xarick> the constant is missing
15:39:31 <xarick> I wanted to intialize a variable to an invalid engine
15:46:50 *** Wormnest has joined #openttd
15:48:51 <peter1138[d]> So extend var act2 variable to 16 bits and split out the complex cars that calculate multiple things.
15:49:18 <peter1138[d]> I think jgrpp uses 16 bits internally already
16:11:09 <xarick> starting a game paused ruins my GS
16:11:14 <xarick> it can't find companies
16:11:58 <xarick> it can't unpause it either?
16:12:57 <peter1138[d]> It shouldn't assume there are companies when it starts.
16:14:59 <xarick> it's a single player game. I guess "server" is required
16:15:05 <andythenorth> GS is many lessons in defensive coding ๐
16:17:58 <xarick> uh.... nope, you did not!
16:18:43 <xarick> the assertion happens because I expect companies to exist
16:18:57 <xarick> and the game wasn't unpaused
16:19:21 <_glx_> it was unpaused for GS, but if you manually paused it GS can't unpause
16:19:46 <_glx_> like you can't unpause by clicking the button if GS paused the game
16:20:16 <_glx_> there's also server join pause, and save pause
16:21:43 <xarick> it should tell me it failed to unpause
16:22:25 <xarick> Unpause() returns a bool,
16:22:40 <peter1138[d]> Can GS ask if game is paused by it or something else?
16:23:22 <xarick> it's a setting, start games paused or something
16:23:47 <peter1138[d]> That's not what I'm asking
16:23:53 <xarick> ah, Automatically pause when starting a new game: on
16:24:16 <_glx_> Unpause automatically succeeds, unless some args were wrong
16:25:15 <peter1138[d]> Kinda skipped today :/
16:25:31 <jfs> Both GS and the player, and the network, and saving the game, need to agree on the game being unpaused for the game to actually be unpaused
16:25:31 <_glx_> and the command just (un)sets bits
16:25:52 <peter1138[d]> Is it lunch time
16:26:26 <jfs> Each of those four components, as far as I remember, all can cause the game to be paused, and the game only runs if none of them ask for pause
16:26:56 <_glx_> there's also GRF errors, which ask for confirmation
16:28:15 <jfs> Either way, the point is that the game can be paused for reasons outside the control of the GS and there is nothing the GS can do about it.
16:28:59 <_glx_> yeah and the return value of the command just says "I (un)set the asked bit"
16:29:02 <jfs> So you need to handle that situation in some way, such as sleeping until next tick if the game is paused and you have nothing better to do.
16:30:03 <_glx_> haha IsPaused() is just `return !!_pause_mode;`
16:38:19 <peter1138[d]> It's not entirely wrong ๐
16:45:04 <_glx_> it's totally fine, GameLoop itself does the same check IIRC
16:45:38 <_glx_> paused for any reason or not paused
16:48:18 <_glx_> the only thing running while paused is GS
16:48:24 <peter1138[d]> Okay, got the 8bpp and 32bpp colours "fairly" matched now. I had the origin colour use the wrong offset originally.
16:48:33 <peter1138[d]> It's not exact but close enough.
16:48:42 <peter1138[d]> (And the 8bpp originals still work anyway)
16:53:33 <peter1138[d]> Maybe I can use the 32bpp-to-8bpp code to attempt to make a 8bpp remap too.
16:53:59 <xarick> while (GSGame.IsPaused());
16:55:04 <peter1138[d]> Also, how about list of colour names ๐
17:30:25 <_glx_> yes you are not using it properly
17:31:06 <peter1138[d]> You're treating it as a command, not a scope.
17:31:27 <peter1138[d]> I'm not sure if the system should cope with this though.
17:31:49 <_glx_> remove the 2 `async =` and enclose that in {} with a new local async false
17:32:14 <_glx_> once created you can't modify the scoped objects
17:33:10 <_glx_> company mode is less strict in this area, but command modes are exclusively scoped
18:08:29 <xarick> completed | (1 << c); is this the symbol i want to use to keep a bit set. I am calling it constantly, I hope it doesn't keep toggling the bit 1 to 0 constantly.
18:10:54 <peter1138[d]> | is or, and won't toggle it.. ^ is xor, which would toggle it.
18:11:44 <xarick> I'm gonna do a benchmark
18:11:56 <xarick> GetSystemTime to the rescue
18:19:41 <alfagamma7> peter1138[d]: My favourite colour: Benadryl!
18:36:16 <peter1138[d]> Oh, the default "Cream" matches "Cafรฉ au lait"
18:41:25 *** virtualrandomnumber has joined #openttd
18:43:13 *** virtualrandomnumber has quit IRC ()
18:54:01 <peter1138[d]> Hmm, HTML colour names are a bit meh. Not enough range.
18:55:17 <Timberwolf> Ah, this would be the Windows terminal :)
18:56:56 <peter1138> Hmm, might change the colour selection window.
18:57:59 <peter1138> It's a mess. Company info window -> Colour scheme button -> Colour scheme window -> Drop down list -> Choose "custom" -> RGB Colour Scheme window -> pick a colour.
18:59:39 <peter1138> I wonder if it should be a window that lets you define custom colours, and those then get added to the list you can select from.
19:00:59 <xarick> brb, dinner. I have 5 others still running
19:01:27 <peter1138[d]> Running them all at once so they compete for CPU time again?
19:02:38 <locosage> peter1138: that would be quite useful
19:03:15 <locosage> though if there is option to remember favorite colour it covers most of the uses
19:04:05 <locosage> what happens if two companies have the same rgb?
19:15:03 <peter1138[d]> Currently only the original 16 colours are tested.
19:15:11 <peter1138[d]> So two companies can have the same RGB colour.
19:15:45 <peter1138[d]> But I could use the colour distance function to check for near colours.
19:17:21 <peter1138[d]> But given liveries let you overlap anyway, not sure I can be bothered ๐
19:21:01 <_zephyris> But infrastructure and signs are always the primary colour, right?
19:30:07 <peter1138[d]> Hmm, maybe figure out how to dither 32bpp colours to the 8bpp palette ๐
19:34:15 <xarick> wow, I really failed with that function
19:34:31 <xarick> my creation is a failure
19:40:05 <peter1138[d]> Always blame the reviewers.
19:42:18 <peter1138[d]> Glad I put the asserts in though, otherwise we'd be none-the-wiser.
19:45:02 <xarick> I remember testing airport rotation
19:45:10 <xarick> but the airport was 6x6... ๐
19:46:00 <peter1138[d]> Hmm, I need a widget to be FR_DARKENED.
19:53:00 <peter1138[d]> Hmm, this colour list has "difficulty" with mauve.
19:55:06 <peter1138[d]> And I guess I need a flag that says if RGB is present or not, currently it just assumes 0,0,0 is not present, but then you can't have pitch black :p
19:55:41 <truebrain> what was I going to do? Ah, yes, get MacOS to work again .. always "fun"
19:58:34 <peter1138[d]> Who even uses MacOS?
20:06:41 <peter1138[d]> Might as well remove it ๐
20:06:57 <truebrain> pretty sure that won't fly well
20:07:02 <peter1138[d]> How many custom presets is enough... 16?
20:07:15 <peter1138[d]> Oh... remove aircraft as well then!
20:13:46 <peter1138[d]> 16 default colours + 16 presets
20:13:51 <peter1138[d]> And yes, it's ctrl-click to set ๐
20:13:58 <truebrain> what am I looking at? ๐
20:14:03 <peter1138[d]> (Which is actually a lot more usable than other presets)
20:14:15 <peter1138[d]> A stupid colour picker that nobody wants ๐
20:14:26 *** debdog has quit IRC (Ping timeout: 480 seconds)
20:15:32 <peter1138[d]> That particular colour shows a hue shift that'll mess with authors who assume CCs are just different shades ๐
20:15:45 *** D-HUND is now known as debdog
20:15:54 <truebrain> hmm ... I now have an AMD CPU ... MacOS might be a bit more interesting
20:16:05 <truebrain> I wonder if I shouldn't just rent a Mac In The Cloud
20:19:36 <peter1138[d]> Hmm. Save presets in ini file.
20:19:50 <peter1138[d]> I know an older version of this changeset did that.
20:25:33 <truebrain> right, let's first try to restore my old image from backup ... "just" 60GB .. and let's see if that works with a simple AMD patch
20:25:37 <truebrain> if not ... well, we will see ๐
20:27:41 <xarick> these results are very strange, in part they contradict my other tests
20:28:15 <truebrain> `Due to license constraints, the minimum lease for Apple silicon-as-a-Service is 24 hours. As a result, a Mac mini M1 can only be deleted after a minimum allocation period of 24 hours.` .. sure "license" .. lol. Also a way to make money ๐
20:30:30 <peter1138[d]> Where's andy's MBP when you need it...
20:30:42 <xarick> ScriptVehicleList_DefaultGroup::ScriptVehicleList_DefaultGroup(ScriptVehicle::VehicleType vehicle_type)
20:31:31 <truebrain> AWS also has Mac instances .. that might be easier to use ..
20:32:25 <xarick> one thing is certain at least: `for (const Vehicle *v : Vehicle::Iterate()) {` in master was decisively slower than all the others
20:33:40 <truebrain> Mac2-M2 on AWS costs 0.9 dollar per hour; not terrible
20:33:42 <locosage> peter1138[d]: what is controlling that hue shift?
20:33:59 <truebrain> but well, let's hope I can run it locally ๐
20:34:48 <peter1138[d]> The brightness adjustment is done in RGB-space, and is simply adding an offset from the base colour then clamping to 0-255.
20:35:26 <truebrain> lol, apple.com is giving me 502 errors. nice.
20:35:38 <peter1138[d]> Although even the HSV chart seems to have a shift, but that's in HSV space.
20:37:05 <truebrain> an Apple Mac Mini M2 costs just over 700 euro .. that is far less than I expected
20:37:19 <peter1138[d]> Yes but the problem is you'd have a โฌ700 paperweight.
20:37:30 <truebrain> yeah, which you need once in a blue moon
20:37:49 <peter1138[d]> And you have the burden of becoming the MacOS maintainer...
20:38:07 <locosage> peter1138[d]: ah, yeah, that would do it...
20:38:10 <_glx_> xarick: you can't really compare results if you run all the tests in parallel, they will affect each other
20:38:15 <truebrain> 30GB of the 60GB downloaded from backup .. almost there ๐
20:38:31 <locosage> peter1138[d]: yeah it really does look like different hue for some reason
20:39:08 <peter1138[d]> I suspect that's a problem with HSV to RGB conversion not using the "correct" colourspace.
20:39:21 <peter1138[d]> But the other thing is ... I like the hue shift.
20:39:34 <_glx_> trying to fix the "something is silently including cassert" ?
20:41:58 <xarick> if only I could automate these tests
20:43:16 <xarick> start openttd, launch a newgame, unpause the game (with an unpause that actually works), wait for the GS to die (complete), take a screenshot, close openttd.
20:43:42 <peter1138[d]> If only we already had AI regression tests that run automatically.
20:44:46 <peter1138[d]> Hmm, so, move HSV conversions to palette.cpp I guess, it's a better place than in the rgb window in company_gui.cpp ๐
20:45:43 <_glx_> if only a savegame could work for test reproducability ๐
20:46:39 <locosage> peter1138[d]: I'd guess it's just due to HSV space not being perceptually uniform
20:47:55 <_zephyris> peter1138[d]: I like a hue shift, but it's not quite right artistically... Ideally you'd have warmer for light shades and colder for dark shades, which loosely matches the ttd palette.
20:48:00 <truebrain> if only you could TICC/TOCC code removing the need to run hours and hours of testing to get performance information
20:49:29 <peter1138[d]> I might try doing the brightness in HSV space, but that tends to mean moving towards white.
20:50:24 <_glx_> hmm a catch test could do the TICC/TOCC thing
20:50:43 <truebrain> _glx_: please don't ๐ Feels wrong ๐
20:50:47 <truebrain> tests and performance are 2 different things ๐
20:50:56 <_zephyris> peter1138[d]: IMO a better solution, unless you deliberately set some warm/cool shifts
20:51:12 <_glx_> I mean for a local test, it's not worse than writing a GS
20:51:20 <locosage> cc colors mostly differ by value so it implies shifting to white
20:51:25 <truebrain> many many other things to do before using catch, tbfh ๐
20:51:48 <locosage> well, not value but HSL lightness to be more precise
20:52:06 <_zephyris> Hmm, deliberate hue shifts could be quite easy in HSL
20:52:13 <xarick> I'm going to use TICC TOCC
20:52:24 <peter1138[d]> Yeah but I'm not trying to recreate the original colours exactly.
20:52:44 <peter1138[d]> _zephyris: Yeah, a control for deliberate hue shifting did corss my mind.
20:52:56 <locosage> you still need to somewhat match them by value otherwise shading breaks
20:53:13 <_glx_> anyway I d'ont think GroupStatistics::CountVehicle really needs specific optimisation
20:53:26 <peter1138[d]> Well stop making assumptions about CCs.
20:53:37 <_glx_> is not called that often in normal conditions
20:54:20 <_zephyris> I'd hard code a hue shift - it's equivalent to trying to make lighting equivalent
20:54:27 <xarick> I'm about to encapsulate TICC/TOCC everywhere!
20:54:41 <xarick> just need a way to log it into a file somehow
20:54:43 <locosage> you can't not make assumptions about CCs, there is no use in having 8 totally random colors
20:58:03 <peter1138[d]> Okay, it's probably safe to assume that 0 is darker than 7.
20:59:33 <locosage> CCs should represent different shading of the same color, so 3d objects can be drawn
20:59:46 <locosage> maybe with some hue shifts for colored lights but nothing too crazy
21:06:19 <locosage> basically one cc = one color of paint irl
21:06:31 <locosage> in different levels of light
21:08:05 <locosage> well, yeah, hue shifts can happen with fancy paints
21:08:15 <locosage> but lightness should stay
21:09:55 <xarick> how do I log this stuff into a text file?
21:10:22 <truebrain> right, so basically you need MacOS 12 or older for it to run on an AMD CPU
21:10:26 <truebrain> so yeah ... this won't happen ๐
21:13:09 <truebrain> so I guess tomorrow or so I will create an AWS instance and install the stuff there .. let's see how that works out ๐
21:17:30 <peter1138[d]> Hah, even with HSV it has a hue shift ๐ฎ
21:18:22 <truebrain> `Billing for EC2 Mac instances is per second with a 24-hour minimum allocation period to comply with the Apple macOS Software License Agreement. `
21:18:25 <truebrain> omg, that is actually a thing
21:20:37 <truebrain> so I guess I will not be doing the MacOS port ๐
21:22:04 <locosage> peter1138[d]: try lch xD
21:27:03 <_zephyris> Free choice of CC is nice, but hitting "correct" shading behaviour would be even nicer ๐
21:31:22 <peter1138[d]> "Feature: Choose any company colour you like as long as dP and Zephyris approved it"
21:31:52 <andythenorth> Lol so child #1 ordered a gaming PC for christmas. We set it up today.
21:32:04 <andythenorth> It has no bluetooth
21:32:18 <peter1138[d]> Desktop PCs generally don't have bluetooth.
21:33:22 <andythenorth> The case has 7 PCI slot apertures, but motherboard only has 1 PCI-E slot, which has the GPU in it
21:33:23 <truebrain> What did you buy that it has no USB?!
21:33:42 <truebrain> andythenorth: That is rather common
21:33:44 <andythenorth> It does have ps/2 though
21:33:59 <andythenorth> Itโs quite lol
21:34:23 <peter1138[d]> Okay, doing the brightness adjustment in HSV land causes its own issues.
21:34:38 <andythenorth> What is the point of a non-expandable gaming PC ๐คฃ
21:34:50 <xarick> what is the command line you use for regression testing that closes openttd after a while?
21:34:55 <andythenorth> I trusted he had researched it ๐
21:34:55 <_zephyris> peter1138[d]: No... Full flexibility is great, you could have each of the 8 shades individually tweakable. just make sure default behaviour looks nice.
21:35:35 <truebrain> andythenorth: We need a Mac for Xmas.. can that be fixed?
21:35:43 <andythenorth> I should just give him my old i9 macbook
21:36:54 <andythenorth> Can he get a gaming PC in the cloud?
21:37:12 <truebrain> XBox and Nvidia offer that
21:37:18 <truebrain> Both excellent services
21:37:23 <xarick> ah! -vnull:ticks=30000
21:37:43 <xarick> I don't think I need that many ticks
21:38:01 <peter1138[d]> Argh, mouse is doing a thing where it only moves in straight lines... probably a hair on it :/
21:38:51 <xarick> @glx remember that convert.exe file you sent me?
21:42:25 <truebrain> Okay, I am out of ideas how I can develop for Mac .. we really need to find a developer which enjoys developing on MacOS ๐
21:43:34 <peter1138[d]> Hmm, maybe if I do the HSV adjustment properly...
21:43:49 <peter1138[d]> (I was doing it in HSV-space and then.. also doing in RGB-space. Oops.
21:44:53 <reldred> andythenorth: Your lad is a spud
21:45:23 <reldred> Fortunately, it's probably just a straight motherboard swap. Couple hundred pounds at worst.
21:45:41 <reldred> Probably put a micro atx board in a mid tower
21:45:56 <reldred> Pre-built PC's are cancerous.
21:46:06 <peter1138[d]> Unlikely, if it's got PS/2 ports, it's going to be something pretty old.
21:46:34 <reldred> There's still plenty of boards especially targetted towards industrial/embedded applications that have PS/2
21:46:56 <truebrain> peter1138[d]: Haha, no. Real gamers want PS/2. It is really popular
21:47:27 <truebrain> (PS/2 isn't a shared bus, where USB is)
21:47:31 <locosage> I tried making CC out of two colors, something went horribly wrong xD
21:48:21 <xarick> question, the -v null driver doesn't start a company?
21:51:10 <peter1138[d]> Okay, so HSV brightness adjustment is working okay now, but the constant I used for contrast is no longer correct for some shades.
21:51:31 <peter1138[d]> So probably need to calculate the brightness range of the default colours as well.
21:51:49 <andythenorth> reldred: PC was only ยฃ690, feeling a return might be in the future
21:52:20 <andythenorth> looking around, they all seem to have PS/2 onboard, and no USB-C
21:52:25 <andythenorth> this is quite lol
21:52:27 <truebrain> Make no mistake, what you described so far is actually a gaming pc
21:52:35 <peter1138[d]> Though I can no longer get the day-glo hue shift colours ๐ฆ
21:52:37 <locosage> I have mean LCH lightness for all CC colors [27.07510258707097, 34.38502265503816, 42.02402843768756, 49.50112987272844, 57.173277387157796, 65.74123652910247, 74.82268281895817, 83.32566595929231]
21:52:47 <andythenorth> truebrain: I live in a very different world ๐
21:53:03 <truebrain> andythenorth: Yeah, I build my own for that very reason
21:53:10 <peter1138[d]> I don't want mean, I want for each CC.
21:53:14 <reldred> andythenorth: probably all the same shite mobo
21:53:29 <locosage> and HSV value: [63.125, 77.875, 95.5, 112.375, 131.5, 153.5, 179.0, 202.5]
21:53:51 <peter1138[d]> I definitely don't need to store that, it's in the palette ๐
21:54:13 <locosage> oh, yeah, I guess palette can be changed...
21:54:17 <peter1138[d]> (And also my HsvColour uses a 16 bit integer from 0..359 for that)
21:54:20 <andythenorth> reldred: it's an "INTEL H510 1200 WITH M.2", although it's built by foxconn, so do Intel still do reference designs and 3rd parties kind of sorta implement them?
21:54:42 <truebrain> At least it has an M2
21:54:54 <truebrain> Some PCI lanes will go there ๐
21:54:58 <locosage> 360 range for value? it's not hue :P
21:55:10 <locosage> i kinda undestand if it was 510
21:55:12 <peter1138[d]> Oh sorry, misread.
21:55:34 <andythenorth> it allegedly has a second PCI slot (the short one) but if it's there, it's covered by the double height GPU. Apologies for off-topic, but I'm in no other communities where I could ask these questions ๐
21:56:13 <truebrain> My mobo also doesn't have another full PCI slot, but still rather expensive ๐
21:56:34 <reldred> andythenorth: send a link to where you bought it
21:56:37 <truebrain> It is pretty normal there is only a single slot .. what else you need it for ๐
21:56:46 <andythenorth> I might be looking for the wrong solution...what's the USB Gen 3.2 header on the board do?
21:56:49 <reldred> sounds typical so-far for a cheap 'gaming' pre built
21:56:52 <peter1138[d]> Hmm, I guess as it's 16bit I could expand to 0..65535.
21:57:03 <reldred> andythenorth: plug front mount sockets into it
21:57:14 <truebrain> andythenorth: Normally supply 2 USB plugs
21:57:26 <andythenorth> seems to have 2 USB-A gen 3, 2 USB-A gen 1, and some audio ports
21:57:55 <andythenorth> can I replace that header with some real ports?
21:58:05 <peter1138[d]> Might make converting rgb->hsv->rgb more stable.
21:58:29 <truebrain> USB-A in the front is still very common
21:58:30 <reldred> dont need to replace anything, you just buy a port panel that'll fit your case and plug it into that header.
21:58:34 <andythenorth> he has a USB-C hub for his macbook pro, with HDMI, power, keyboard, mouse and USB-C backup drive, which he has found a USB-C -> USB-A adaptor for
21:58:45 <andythenorth> presumably that drops the speed to USB 2 or 1.1
21:59:00 <reldred> send us a link andy to the build, we'll figure out if its worth a return or not
21:59:05 <peter1138[d]> No, USB-A can do USB 3.
21:59:07 <truebrain> The blue ports are gen3, so fast
21:59:36 <truebrain> So an adapter to USB-C works fine
21:59:41 <peter1138[d]> Of course, some 'blue' ports are not USB 3 ๐
21:59:48 <andythenorth> no shareable link, but
21:59:59 <truebrain> My rather expensive mobo only has 2 USB-Cs .. in the back
22:00:06 <reldred> andythenorth: website?
22:00:27 <truebrain> It is really uncommon for desktop PCs to have USB-C still ๐
22:00:31 <reldred> I'd return that ASAP, 10th gen intel, absolute trash.
22:00:32 <peter1138[d]> I have a USB 2.0 capture card that is blue. It does not have the pins for USB 3.0.
22:00:40 <andythenorth> this is all so weird
22:01:08 <truebrain> andythenorth: You are too used to laptops
22:01:37 <andythenorth> child #2 has steam deck, XBox and iPad; all USB-C. All their headphones and peripherals are USB-C
22:02:00 <andythenorth> All their phone chargers and torches and lamps and stuff are all USB-C
22:02:05 <truebrain> Most people on gaming PCs don't have need for USB-C ๐
22:02:16 <andythenorth> yes, I am just being shocked for 20 mins ๐
22:02:27 <reldred> andythenorth: Yeah, you bought a pile of shit though
22:02:40 <truebrain> Just buy a bunch of USB-A to USB-C cables and done
22:02:42 <reldred> Send it back, giz your price limit, and we'll do a parts list
22:02:56 <andythenorth> child #2 researched his and appears to have something sensible
22:03:34 <reldred> Get Child #2 to work something out then. There's a tonne of great bargains to be had if you're clever
22:03:46 <reldred> Best savings come from assembling it yourself.
22:03:56 <andythenorth> meh, fuck that ๐
22:04:03 <reldred> eh, it's not that hard
22:04:09 <andythenorth> I never built a PC in my life and intend to never do so
22:04:10 <reldred> Hour or two tops to throw a PC together
22:04:15 <truebrain> Dunno, sounds child #1 got what he wanted?
22:04:18 <andythenorth> he chose it ๐
22:04:30 <truebrain> So far all you say makes it a gaming PC
22:04:36 <andythenorth> he's quite happy, we're just being mean to him
22:04:47 <reldred> truebrain: On tenth gen intel? lmao
22:04:53 <andythenorth> why have a 7 slot case for a PC that CANNOT BE EXPANDED ๐
22:05:03 <andythenorth> he could have bought a last gen intel mac mini
22:05:17 <truebrain> reldred: My PC was 4 times more expensive .. so yeah ...
22:05:18 <jfs> peter1138[d]: I'm pretty sure all the original livery colors also are not perfect gradients of a single hue
22:05:40 <reldred> yeah judging by their website they use the same piece of crap micro ATX motherboard on all their builds. Probably bulk buy an industriual board.
22:05:47 <truebrain> andythenorth: That looks silly, I agree. But also, very common
22:06:18 <peter1138[d]> Okay, I can't set HUE_MAX to 65536 because... scrollbar capacity, lols.
22:06:27 <reldred> andythenorth: Child #2 has some sort of idea what they're doing. Get them to deal with it.
22:06:49 <truebrain> Right, enough offtopic. peter1138[d] has important CC business to talk about ๐
22:06:49 <andythenorth> lol, he's meaner than me about it
22:07:57 <peter1138[d]> It's probably "fine" as a first gaming PC. But it's not a high-end gaming PC.
22:08:17 <truebrain> That costs a tiny bit more ๐
22:09:14 <peter1138[d]> Ah yes, for the price that's a bit pants too.
22:09:15 <truebrain> Tried looking for second hand Mac Mini M1 .. Still expensive ๐ฆ
22:09:22 <peter1138[d]> Mind you, everything is expensive now.
22:09:47 <truebrain> A good GPU is already 1000 euro .. crazy shit
22:10:05 <reldred> There's ways to put together a system on the cheap. The kicker comes down to video card. Big leap off as soon as you move from 1080p to a 2k/4k capable card.
22:10:06 <peter1138[d]> And then it's obsolete in a couple of years.
22:10:56 <reldred> peter1138[d]: that PC was 10th gen intel, it was already totally obsolete.
22:11:09 <reldred> We're up to 14th gen now, and I think we've jumped two sockets.
22:11:53 <reldred> I've stayed with AM4, I've capped out at the 5800x3d, but that CPU shreds absolutely anything I throw at it so it's moot for the moment. Got a 3070, but I'm still GPU constricted.
22:12:13 <reldred> Overkill for OpenTTD though ๐
22:13:34 <andythenorth> it's only for fortnie
22:13:48 <reldred> andythenorth: Ground him for 12months and take the PC away
22:13:56 <jfs> And yes that pc build is rather much "it will be able to play some games" level
22:14:06 <truebrain> Explains the PS/2 .. fast movements are important! ๐
22:14:10 <jfs> With the stress on "some"
22:14:30 <reldred> It should play OpenTTD fine though
22:14:36 <andythenorth> we're beyond the refund window because it was 'ordered in time for christmas' but eh
22:14:44 <andythenorth> wonder how it will perform against his M1 MBP
22:14:52 <andythenorth> although that's also running our infra, so eh
22:14:57 <reldred> andythenorth: Probably abysmally.
22:15:28 <truebrain> So much Xmas spirit in this conversation /s
22:16:08 <reldred> truebrain: It's xmas and I'm at work with no spirits ๐
22:16:18 <reldred> need some baileys and eggnog
22:17:11 <reldred> On the other hand I have my ttd game I started on christmas day to keep playing.
22:17:22 <reldred> It's 1944 and I haven't quit and started a new game yet!
22:21:51 <andythenorth> oof now trying to work out the USB ๐
22:21:52 <locosage> anything but very close colors kinda look like crap
22:22:06 <andythenorth> the built in ports on the board are blue, and labelled as USB SS
22:22:12 <andythenorth> which might be 3, or 3.1?
22:23:20 <reldred> Though it really depends on the board
22:24:40 <truebrain> andythenorth: SS is SuperSpeed, 3.0
22:24:59 <truebrain> If the USB logo on there, it actually is USB 3.0
22:26:07 <truebrain> (So at least 5GB/s)
22:26:33 <peter1138[d]> locosage: That... looks perfectly fine to me, given your CC range is pretty extreme.
22:26:43 <peter1138[d]> Step 1: Allow users to choose colours
22:27:12 <peter1138[d]> Step 2: If they choose colours that look like crap to you, who cares. Let them.
22:27:55 <LordAro> have i missed shit-on-andy evening?
22:28:26 <reldred> LordAro: more specifically shit on andy child #1 who is bad at picking computers
22:28:31 <truebrain> andythenorth: Btw, USB is hilarious, as 3.0 is identical to 3.1 gen1 and 3.2 gen1 .. 3.1 gen2 is twice as fast. And called SS+
22:29:26 <peter1138[d]> Now, maybe brightness adjustment needs to be done in HSL space rather than HSV.
22:29:39 <peter1138[d]> If I can cheat that with HSV then that's better.
22:30:29 <reldred> I should have done more grade seperation on this map, it looks so good.
22:30:39 <reldred> Maybe when it's time for highspeed rail or maglev
22:31:29 <xarick> how do I force fetch a branch? I made local changes to it and wanna discard them, and get the one I have online
22:32:01 <peter1138[d]> git fetch <remote> <branch>:<branch> -f
22:32:28 <locosage> peter1138[d]: well, in mp other people can be looking at that abomination :p
22:34:47 <xarick> what's the remote? I'm so noob
22:35:04 <peter1138[d]> often it's "origin"
22:35:27 <peter1138[d]> But you probably have multiple remotes so it mayn't be.
22:36:31 <rau117> locosage: But really, if some people have ยซthe rightยป to create something like this, what about those who donโt want to see such ugliness?
22:36:48 <rau117> peter1138[d]: โโ wrong reply
22:37:36 <peter1138[d]> xarick: yes, switch to master first.
22:37:41 <peter1138[d]> (or some other branch)
22:38:06 <reldred> rau117: you've got the "right" to get over it
22:38:14 <peter1138[d]> There's probably some incantation of git reset that'll do it in place but I can't be bothered to look.
22:39:45 <xarick> nice, thanks a lot, that worked!
22:39:55 <peter1138[d]> Hsv -> Rgb -> Hsv -> Rgb causes some issues ๐ฎ
22:40:44 <locosage> with lightness adjustment
22:40:50 <andythenorth> still can't get over the lolz of a PC case that is 1/3 pointless, but now learning about USB wifi ๐
22:41:38 <reldred> andythenorth: Yeah, folks putting micro ATX boards in full size ATX towers is a thing for some reason. I know the big PC builders like it because it's much quicker and easier to assemble.
22:42:04 <truebrain> andythenorth: More importantly... does it have RGB?
22:42:10 <peter1138[d]> JGRennisonviaGitHub: Nice
22:42:24 <peter1138[d]> Of course it does, it's a gaming PC.
22:45:10 <xarick> aren't scripts able to place rotated airports?
22:46:16 <reldred> God what a poxy little board. Looks like a gigabyte?
22:46:41 <andythenorth> anyway I am so OT
22:46:50 <reldred> At least the power cords aren't hot glued in like some prebuilt makers do.
22:47:19 <truebrain> andythenorth: I see plenty of USB ๐
22:47:21 <xarick> If I'm not mistaken, AIs can place rotated airports.
22:47:40 <xarick> they get a list of airport types with each type repeated 4 times, one for reach rotation
22:47:56 <reldred> Yeah that's a poxy little industrial board.
22:48:01 <truebrain> 3.2 gen1 USB .. read: 3.0 ๐
22:48:05 <reldred> They probably get them bulk
22:48:23 <reldred> Honestly surprised it doesn't have RS232
22:49:00 <andythenorth> just a lot of real ports
22:55:18 <locosage> mixing colors in lab works much better than in lch, hue doesn't go full rainbow
23:02:20 <locosage> even complimentary colors kind of work somehow
23:02:44 <reldred> locosage: huh that's not awful
23:03:00 <reldred> Produces some nice shadows
23:06:12 <reldred> Maybe some toggle buttons down the bottom to choose the colour picking method? I know some games do that with complementary, etc.
23:07:48 <locosage> I'm not sure complimentary is supposed to be used like this, whole idea of complimentary is contrast between two colors, not mixing them together
23:08:16 *** keikoz has quit IRC (Ping timeout: 480 seconds)
23:11:29 <locosage> hue angle slider will probably work, set to 0 get one color, set to 180 get complimentary, something around 15 for nice subtle shift
23:16:35 <peter1138[d]> So far... s/RGB-cc/HSV-cc/
23:35:03 <reldred> Ugh. Metabase update broke my firebird sql plugin (unmaintained since july and uses known deprecated methods :xd: ), tried a roll back, that failed, tried to roll back forward again, that also failed.
23:35:13 <reldred> Goodbye report that found the $14k/yr shortfall.
23:35:33 <reldred> Time to build some proper data pipelines so I don't have to talk to gorram firebird SQL directly.
23:36:11 <xarick> Now that I got a log of every ticc tocc, I wanted to make an average, how do I extract information from here? Powershell?
23:36:49 <reldred> god damnit I didn't want to do actual work, I wanted to play openttd at my desk
23:37:32 <peter1138[d]> xarick: in the TOCC() the number lets you average them out.
23:38:38 <xarick> I type in there 70000 instead of 1?
23:38:55 <peter1138[d]> Yes, if you know you have exactly 70000 calls through there.
23:39:15 <peter1138[d]> (If you have less than that, it won't print anything because it won't reach 70000)
23:39:17 <xarick> I'm not sure, line is 140175, seems it's double
23:40:49 <peter1138[d]> Well, you'll get two lines then ๐
23:40:55 <peter1138[d]> Anyway, play with that number ๐
23:41:20 <peter1138[d]> It'll give you a total and the average.
23:41:26 <xarick> ah, it starts at line 70161, ends at line 140175
23:42:20 <reldred> Ugh time to look at Pansynchro, start a nightly export of all the key DBโs to a central DB I can use for reporting and cut out having to integrate directly with firefuck SQL
23:43:44 <peter1138[d]> Nice, I can now swipe across dark colours and not have it mess up the hue.
23:51:49 *** Wormnest has quit IRC (Ping timeout: 480 seconds)
23:55:14 <xarick> ok, 700 is a good number
23:55:21 *** Wormnest has joined #openttd
23:55:32 <xarick> results in 100 lines, that's more digestable
continue to next day โต