IRC logs for #openttd on OFTC at 2025-12-16
โด go to previous day
00:01:57 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
00:03:49 *** WormnestAndroid has joined #openttd
00:04:42 *** MinchinWeb[m] has quit IRC (Read error: Connection reset by peer)
00:04:56 *** MinchinWeb[m] has joined #openttd
00:13:13 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
00:13:54 *** WormnestAndroid has joined #openttd
00:30:07 *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
00:30:46 *** WormnestAndroid has joined #openttd
00:59:47 *** MinchinWeb[m] has quit IRC (Ping timeout: 480 seconds)
01:01:38 *** MinchinWeb[m] has joined #openttd
01:01:43 *** ChanServ sets mode: +v tokai
01:08:40 *** tokai|noir has quit IRC (Ping timeout: 480 seconds)
01:19:44 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
01:20:26 *** WormnestAndroid has joined #openttd
02:02:34 *** Flygon has quit IRC (Remote host closed the connection)
04:44:49 <DorpsGek> - Update: Translations from eints (by translators)
04:57:24 *** Zathras_11 has joined #openttd
05:00:56 *** Zathras_7 has quit IRC (Ping timeout: 480 seconds)
05:16:49 <andythenorth> why don't we give each tile a virtual CPU and storage?
05:17:19 <andythenorth> about 1024KB should be enough
05:17:49 <andythenorth> then we could parallelise the whole thing, 1 thread per tile
05:18:00 <andythenorth> they'd all have to call the same global random though
05:46:41 <ahyangyi> andythenorth: Rewrite OpenTTD in Verilog?
05:46:50 <ahyangyi> Can give each tile a physical CPU and storage even
07:07:53 <ahyangyi> andythenorth: Anyways, at 1024 KB (or even 1024 bytes for that matter), each virtual CPU can have a local rng state
07:18:50 *** ufo-piloot has quit IRC (Ping timeout: 480 seconds)
07:19:13 *** firepup650 has joined #openttd
07:27:17 *** ufo-piloot has joined #openttd
07:48:13 <ahyangyi> New feature: your single-player game can desync too!
07:58:24 *** toktik has quit IRC (Remote host closed the connection)
09:02:49 *** flanzine has joined #openttd
09:05:35 <flanzine> Hey guys. I want to access the articles in the wiki of ottdcoop but it seem to have disappeared... Any clue on how to access it ? thx
09:08:53 <flanzine> the main site openttdcoop is still accessible but the wiki gives me a "502 bad gateway" answer
09:16:45 <peter1138> You might be able to find it on archive.org
10:04:53 *** flanzine has quit IRC (Remote host closed the connection)
10:11:18 <xarick> time for me to finally rebase
10:11:40 <xarick> introduces subrange stuff
10:22:56 <xarick> oh glx, i have an alternative idea! instead of saving the item, why not save the iterator instead, that avoids calling lower_bound on resume
11:05:33 *** fairyflossy has quit IRC (Quit: User went offline on Discord a while ago)
11:28:04 <xarick> not sure i pass &iter or iter
11:43:31 <peter1138> iter is a temporary so you can't pass it by reference.
11:53:00 <xarick> nice, everything rebased successfully to latest master
11:53:33 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
11:53:34 *** WormnestAndroid has joined #openttd
11:53:49 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
11:53:50 *** WormnestAndroid has joined #openttd
11:53:53 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
11:54:05 *** WormnestAndroid has joined #openttd
11:54:13 <_glx_> Storing the item is simpler, and can be used when making other functions suspendable too
12:12:51 <xarick> not sure if it's fair for me to disable garbage collection during benchmarks
12:13:37 <xarick> but i've been benchmarking without that getting in the way
12:14:09 <xarick> the stalls are horrendous, unpredictable
13:14:43 <locosage> whichever moron made continue rebase button do "git rebase --skip" in sublime merge deserves a special place in hell
13:16:46 <xarick> benchmarks finished! new graphs!
13:18:39 <xarick> hmm my tests don't test Valuate
13:19:33 <xarick> if I did, openttd master would go over 1500 or so
13:30:28 <andythenorth> Itโs good that you are having fun
13:36:38 <xarick> a few days ago I had an idea, to switch initialization postponing between this->value and this->items
13:37:03 <xarick> gonna try make it happen today
13:38:23 <rito12_51026> xarick: Where did jgrpp go?
13:40:49 <xarick> differences are... no memory tracking overheads
13:41:04 <xarick> that alone eats ~30 seconds
13:42:44 <xarick> or maybe his windows builds have asserts
13:42:53 <xarick> didn't build from his branch
13:42:59 <xarick> used one of his windows builds
14:19:37 <_jgr_> You say that you've disabled the GC in your test builds, but presumably that won't be the case for release builds of my branch
14:55:17 <_glx_> everything is wrong in this report ๐
15:00:15 <xarick> coming from the starcraft editor wher you could edit unit properties
15:00:29 <xarick> maybe he thinks he could edit train properties
15:04:25 <rito12_51026> He specially created an account to submit that issue
15:07:41 <peter1138> A seller on Amazon has named themselves "โ
โญPrim e Superfast Next Day Delivery ยฎโญโญโญโญโญ". Definitely legit...
15:09:53 *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
15:10:39 <ahyangyi> How prim is the delivery?
15:11:10 <Rubidium> _glx_: well... at it uses English words
15:12:01 *** WormnestAndroid has joined #openttd
15:16:41 <ahyangyi> Would a hypothetical functionality to move trains in editors makes it easier to prepare title games?
15:22:54 <Rubidium> probably... but how much time does it save? Maybe 30 minutes, so if you can the complete functionality in two hours it might be worth it (https://xkcd.com/1205/). But I doubt that's a realistic timeline.
15:35:40 <xarick> `auto iter = this->values.lower_bound({value, std::numeric_limits<ScriptListValueSet::value_type::second_type> ::min()});`
15:40:25 <xarick> oh, regression doesn't use KeepBelowValue
15:51:19 *** MinchinWeb[m] has quit IRC (Read error: Connection reset by peer)
15:51:36 *** MinchinWeb[m] has joined #openttd
16:02:28 <mmtunligit> does anyone know of any GRFs with objects that have OnlyInScenedit or OnlyInGame flags set for some objects?
16:08:40 <xarick> wow!! really? didn't think someone would do the switch
16:09:43 <talltyler> mmtunligit: Rainforest Ruins has both. The ruins themselves are only in scenario editor (and map generation) while the college buildings are only in-game.
16:10:16 <mmtunligit> talltyler: perfect thank you
16:10:21 <xarick> you don't need a SetCompare, std::pair is lexicographyically sorted already
16:20:24 <xarick> oh, you decided with the name item_iter for both ScriptList::ScriptListSet::iterator item_iter and ScriptList::ScriptListMap::iterator item_iter
16:21:11 <xarick> we went with value_iter for the set
16:21:53 <xarick> I'm not sure but a PostErase may be required, I'll test
16:22:42 <_glx_> I copy pasted from by item sorters
16:26:11 <xarick> line 53 should still test for empty
16:26:24 <xarick> this->list->values.empty()
16:30:15 <_jgr_> xarick: It isn't necessary for this
16:37:35 *** gelignite has joined #openttd
16:46:08 *** WormnestAndroid has quit IRC (Read error: Connection reset by peer)
16:46:34 *** WormnestAndroid has joined #openttd
16:48:58 <xarick> i remember my troubles with the darned iterator
17:01:36 <xarick> my regression tests that is
17:03:25 <xarick> possibly the omission of this->lists->values.empty()
17:03:36 <_zephyris> talltyler: If you happen to be around... Looking at TrueBrain's notes, looks like there's a strict zip directory structure - could that be the error?
17:07:30 <xarick> _glx_: confirmed, line 53 needs either `this->list->items.empty()` or `this->list->values.empty()`
17:10:46 <xarick> `return this->list->values.empty() || this->has_no_more_items;`
17:11:30 <xarick> as for the iterators needing post erase... looks like it's not required, but I'd still test against macos
17:21:01 *** Wormnest has joined #openttd
17:54:14 <nucrow> The non-funded growth speed for towns first first drops, then grows. Is this non-monotonous behavior intentional?
17:57:45 <_zephyris> Read the comment... Looks like it is intentional, and is monotonous
17:59:09 <nucrow> Oh god, how did I miss that
18:00:21 <_zephyris> No problem ๐ Would've confused me too!
18:00:31 <xarick> and i dont even use valuate on this test
18:02:03 <xarick> maybe i should setup a dedicated valuate test
18:15:35 <xarick> visual studio 18.1.1 - gonna check if clang builds
18:36:05 <Rubidium> wait what? safe_sleep didn't make enough money already?
18:45:32 *** MinchinWeb[m] has quit IRC (Read error: Connection reset by peer)
18:46:45 *** MinchinWeb[m] has joined #openttd
18:56:18 <mmtunligit> blegh, sorry for CI spam
19:02:58 <mmtunligit> also could i get the backport requested tag put on my bugfix? the thing its fixing was in RC1. I either dont know how to do that myself or are not allowed to, im guessing the second
19:59:14 <_glx_> xarick: That's your test valuating with a different value for each item then valuating to 0?
20:00:19 <_glx_> So set of pairs seems good enough
20:01:57 <xarick> I wonder wether i implement value_iter tracking on my bplustree branch
20:02:46 <xarick> should expect 135-140 seconds total time
20:04:37 <xarick> but swaping lists would require revalidating all iterators
20:04:43 <xarick> so that's a big loss there
20:08:58 <xarick> and my iterators cost 24 bytes each...
20:09:07 <xarick> that's definitely not looking good
20:09:21 <_zephyris> Filling small seas tends to give longer rivers, and longer rivers tend to be thicker rivers
20:10:33 <xarick> std::set iterator is only 8 bytes
20:11:21 <xarick> no idea how big is a safe btree iterator
20:17:28 <xarick> _glx_: actually it's valuating to 1, but same idea
20:18:23 <xarick> returns a true, which becomes 1
20:18:32 *** MinchinWeb[m] has quit IRC (Remote host closed the connection)
20:18:54 *** MinchinWeb[m] has joined #openttd
20:37:51 <xarick> regression doesn't use keepbetween value :/
21:17:32 *** MinchinWeb[m] has quit IRC (Ping timeout: 480 seconds)
21:18:17 *** MinchinWeb[m] has joined #openttd
21:20:14 *** MinchinWeb[m] has quit IRC (Read error: Connection reset by peer)
21:20:53 <xarick> wait, let me test first
21:22:05 *** MinchinWeb[m] has joined #openttd
21:22:10 <_glx_> change should not be noticeable, except maybe for RemoveList and KeepList
21:22:37 <xarick> I have a few stuff you could take a look about those, let me find
21:27:31 <_glx_> ah yes you like when code is complex for no reason ๐
21:29:02 <xarick> well yeah, I was looking from the performance angle
21:30:33 <andythenorth> developer performance is what matters most
21:30:46 <andythenorth> the other performance is important, but less important
21:34:31 <_jgr_> Perhaps, but there are also several orders of magnitude more players than developers
21:35:21 <andythenorth> things that are too complex to review don't make it to the playerbase? ๐
21:35:26 <_jgr_> I for one am fine with spending a bit of time for an overall net saving
21:35:37 <andythenorth> pff I can't get Horse to compile any faster using shopping ๐
21:36:23 <andythenorth> maybe Xarick could optimise it
21:37:56 <andythenorth> is a Ryzen 9 9950X a good CPU?
21:38:37 <reldred> Itโs nearly their top of the line desktop CPU
21:38:54 <andythenorth> can't find a laptop with it
21:39:02 <xarick> if you like noisy fans, yeah
21:39:07 <reldred> andythenorth: Itโs not a laptop part
21:39:14 <_glx_> you won't find a laptop with it (too much heat)
21:39:26 <andythenorth> it's a bit lol when technology stalls
21:39:35 <reldred> They make some lovely APUโs though
21:39:37 <andythenorth> usually my laptop is kind of mid range
21:39:52 <andythenorth> seems computing has got stuck making LLM prompts
21:40:04 <andythenorth> instead of making my grf compile faster
21:40:04 <reldred> Well nobody can afford RAM now
21:40:10 <rito12_51026> andythenorth: Could strong typing speed up python? Does it even matter to the interpreter?
21:40:30 <andythenorth> rewriting nml to rust would probably eliminate most of the slow
21:40:38 <andythenorth> truegrf compiles ~instantly
21:40:54 <andythenorth> but then most of nml is parsing the input file
21:41:43 <_glx_> you could probably save a lot by skipping nml file and generate the AST directly
21:41:58 <andythenorth> I am not smart enough ๐
21:42:51 <_jgr_> The Iron Horse NML is very long
21:43:02 <_jgr_> Just making it shorter is probably an easier problem
21:43:04 <andythenorth> partial compiles would have been a massive benefit ๐
21:43:15 <rito12_51026> andythenorth: Use grfpy???
21:43:22 <andythenorth> I deleted 20% of the trains, which cut about 10s out
21:43:45 <andythenorth> shame we can't bundle grfs into a single package
21:44:10 <andythenorth> probably way too complicated
21:55:33 <xarick> with garbage collector disabled
21:55:42 <xarick> i really shouldn't test like this
21:59:34 <xarick> i test with KeepBetweenValue and KeepBottom only
22:00:30 <xarick> i got a separate test for KeepList
22:01:21 <xarick> and another for RemoveList
22:01:24 <xarick> and another for AddList
22:17:02 *** Wormnest has quit IRC (Ping timeout: 480 seconds)
22:24:17 *** Wolf01 has quit IRC (Quit: Once again the world is quick to bury me.)
22:27:42 *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
22:28:00 <xarick> i need to give details
22:28:49 *** WormnestAndroid has joined #openttd
22:29:03 <xarick> it creates 2 lists each with 30 million items
22:29:35 <_glx_> yeah RemoveList is a little worse (expected)
22:29:36 *** WormnestAndroid has quit IRC (Remote host closed the connection)
22:29:38 <xarick> items are randomized, so actually it's not really 30 million, but up to 30 million, tipically ends with 18 million each
22:29:56 *** WormnestAndroid has joined #openttd
22:29:56 <xarick> then one list casts RemoveList on the other
22:30:19 <xarick> the test is for the whole duration of creating the two lists and then removing
22:32:01 <xarick> gonna try pinpoint only the removelist duration
22:32:51 <_glx_> it now iterates all items from this, while master only iterates from the to be removed list
22:33:49 <locosage> andythenorth: truegrf is slower than nml in sprite encoding :p
22:34:18 <locosage> and that's kind of the only truly computation-intensive part of grf compilation
22:34:38 <locosage> unless there is some image processing
22:35:47 <locosage> custom processing I mean and that takes the same time regardless of the compiler
22:42:58 *** WormnestAndroid has quit IRC (Ping timeout: 480 seconds)
22:46:22 *** WormnestAndroid has joined #openttd
22:59:15 <xarick> this time ran two timers in parallel. One timer stops once the 2 lists are generated. the other timer stops when the test completes. I then calculated the time just for the RemoveList action
23:00:13 <xarick> > Running openttd glx scriptlist_remove.exe with config openttd.cfg - Iteration 1
23:00:13 <xarick> > [2025-12-16 22:46:14] dbg: [script:0] [18] [S] Your script made an error: Tests completed in: 191 secs, or in: 158 secs
23:00:24 <xarick> the log says something like that
23:02:14 <_glx_> yes and RemoveList is expected to be a little slower
23:04:36 *** Flygon_ has joined #openttd
23:05:03 <xarick> let me test keep list since u cahnged it too
23:11:27 *** Flygon has quit IRC (Ping timeout: 480 seconds)
23:26:40 <xarick> excel is dumb with colours
23:27:00 <xarick> i want to set the colour of one bar only, and it sets it for all
23:33:10 <_glx_> slower RemoveList, faster KeepList
23:34:32 <_glx_> but if you combine both PR everything will be faster than master
23:35:21 <xarick> the dual iterator walk reduces it to 10 secs, i think
23:36:09 <xarick> but that branch has a bunch of other optimizations baked in
23:36:56 <xarick> best case 10, worst case 20
23:38:48 <xarick> ok let's combine both PRs, if they don't conflict
23:40:19 <xarick> nice, no conflicts, gonna test
23:55:18 <xarick> can't get around with the colours
continue to next day โต