IRC logs for #openttd on OFTC at 2020-06-16
            
00:01:40 <supermop_Home> ooh i found an old roundhouse on the german - Danish border
00:02:14 <supermop_Home> i am so bored i am taking a rail trip from north England to Norway in google maps
00:02:25 <andythenorth_> ha
00:02:26 <andythenorth_> nice
00:09:48 *** andythenorth_ has quit IRC
00:10:11 *** Samu has quit IRC
00:17:36 <supermop_Home> "Most of the intermediate stations on the line were closed to passengers in September 1930 as the number of excursion and holiday trains going straight through to Scarborough during that period meant that the line was too busy to accommodate local services.
00:18:38 <supermop_Home> what could go wrong? surely people vacationing in Scarborough is a revenue stream that we can rely on forever at the expense of regular passenger service...
00:21:17 *** arikover` has quit IRC
00:23:30 <FLHerne> Well, it was
00:23:47 <FLHerne> Until cheap air travel, which was another 50 years or so
00:23:53 <supermop_Home> surely not all year long?
00:24:40 <supermop_Home> also by the 50s at least some of those people must have been able to just drive from York?
00:25:33 <supermop_Home> its just weird to see a passenger line converted to a holiday line, instead of the other way around
00:25:33 *** keoz has quit IRC
00:27:00 <supermop_Home> the subway network in Brooklyn is laid out the way it is as nearly all of the lines started out as competing vacation railways to the beach in the mid 19th century
00:27:47 <supermop_Home> that were later converted to elevated as commuter volumes from the outer parts of the borough grew
00:28:03 <supermop_Home> and then finally tied into the subway system
00:48:31 <supermop_Home> hmm according to ebay my old class 08 is worth like $100
00:48:48 <supermop_Home> arguable more as i never ran mine
01:11:40 <b_jonas> I spent some time debugging my railway network because some trains were getting lost. There were a few misidrected signals as I suspected, plus sometimes trains took the wrong route because they wanted to go to a nearby depot for servicing and the nearest one wasn't on the path they should have taken
01:15:38 <supermop_Home> i recommend turning off breakdowns / depot service
01:16:03 <supermop_Home> if you play with any sort or complex network it seriously reduces fun
01:21:04 <FLHerne> ditto
01:22:31 <b_jonas> I'll consider it for the next game
01:23:13 <supermop_Home> you may still want some strategically placed depots for replacing / upgrading trains at the end of their life
01:23:32 <supermop_Home> i usually put them near a terminal station
01:23:52 <b_jonas> sure
01:25:26 <b_jonas> my main problem is that the main line (and some of the sidelines) has two parallel lines in each direction, and if one of them has a misbuild, it's hard to find out, the trains will just go to the other lin
01:27:36 <supermop_Home> hmm
01:29:22 <supermop_Home> the chou line took from 1889 to 1908 to get from Shinjuku to Tokyo, but only from 1889 to 1911 to get from Shinjuku to Nagoya
01:31:50 <supermop_Home> actually it didn't even get to the main Tokyo station til 1919
01:48:26 *** cHawk- has joined #openttd
01:54:28 *** cHawk has quit IRC
02:00:23 <supermop_Home> i feel like you could make a big tabletop roleplaying game based on the Japanese private railway / department store companies
02:06:09 *** lastmikoi has joined #openttd
02:16:24 *** Progman has quit IRC
02:17:50 *** HerzogDeXtEr1 has quit IRC
02:23:11 *** gelignite has quit IRC
03:16:26 *** snail_UES_ has quit IRC
03:37:29 *** Boingo has joined #openttd
03:40:30 <Boingo> Hello all. My son and I have been enjoyning openttd for a few days now. With a few games under our belt, we are starting to get the hang of it and think we are ready to "invest" our time into a big world for the long haul. We undertand that the GRFs have to be installed before we start, so my question is, what are some of the best/most popular? I can't seem to find a list that
03:40:32 <Boingo> sorts them in any sort of rating/popularity/downloads.
04:10:21 *** snail_UES_ has joined #openttd
04:28:11 *** debdog has joined #openttd
04:31:38 *** D-HUND has quit IRC
04:35:31 *** Flygon has joined #openttd
04:39:46 *** glx has quit IRC
05:28:48 *** Wormnest has quit IRC
05:32:55 *** Smedles has quit IRC
05:42:09 *** Smedles has joined #openttd
05:52:20 *** Wormnest has joined #openttd
06:35:02 *** Wormnest has quit IRC
07:29:23 *** andythenorth has joined #openttd
08:03:15 *** sla_ro|master has joined #openttd
08:04:50 *** heffer has quit IRC
08:05:52 *** heffer has joined #openttd
08:11:30 *** snail_UES_ has quit IRC
08:17:28 *** iSoSyS has joined #openttd
08:24:20 *** iSoSyS has quit IRC
08:31:28 *** keoz has joined #openttd
08:40:01 *** heffer has quit IRC
08:41:01 *** heffer has joined #openttd
09:02:25 *** cHawk_ has joined #openttd
09:06:03 <andythenorth> o/
09:08:30 *** cHawk- has quit IRC
09:57:02 *** Samu has joined #openttd
10:11:00 *** Progman has joined #openttd
10:22:40 *** arikover has joined #openttd
10:27:23 <arikover> Hello everybody!
10:28:58 <Samu> hi
10:30:47 <arikover> andythenorth: I just noticed the vehicles being displayed on top of Iron Horse pages (https://firs-test-1.s3.eu-west-2.amazonaws.com/iron-horse/docs/html/tech_tree_table_red.html) are randomized. And clickable.
10:31:01 <andythenorth> yes
10:31:18 <arikover> andythenorth: I've F5-ing for 10 minutes...
10:31:28 <andythenorth> :)
10:31:36 <arikover> So nice!
10:31:43 <andythenorth> you get very random combinations
10:32:04 <arikover> Yeah, I got a Spinner towing an HST.
10:32:42 <arikover> Totally worth it!
12:06:03 *** gelignite has joined #openttd
12:09:48 <FLHerne> Boingo: That's largely a matter of what you want to play :-)
12:10:20 <FLHerne> For "base game with a few more features", look at OpenGFX+
12:10:55 <FLHerne> Then there are things like the vacuum-tube set that extend the base game time-wise while having a similar style
12:13:22 <FLHerne> Iron Horse (trains) and Road Hog or eGRVTS (road vehicles) are a bit bigger but still sort of generic
12:13:53 <FLHerne> Then there's a whole bunch of "realistic" trainsets for different countries
12:14:10 <FLHerne> For industries, FIRS is probably best
12:14:43 <FLHerne> It has parameters to choose how many kinds of industry/cargo you want
12:15:59 <FLHerne> There's a better-categorized list on the wiki https://wiki.openttd.org/NewGRF_List
12:17:41 *** gelignite has quit IRC
12:34:20 *** sla_ro|master2 has joined #openttd
12:34:34 *** dvim has quit IRC
12:34:47 *** dvim has joined #openttd
12:39:45 *** sla_ro|master has quit IRC
12:39:58 *** mindlesstux6662 has quit IRC
12:40:16 *** mindlesstux6662 has joined #openttd
13:06:03 *** mindlesstux6662 has quit IRC
13:06:17 *** mindlesstux6662 has joined #openttd
13:10:01 <LordAro> is lunch?
13:11:09 <andythenorth> might be
13:12:58 *** arikover has quit IRC
13:16:18 *** ZirconiumX has quit IRC
13:53:48 *** arikover has joined #openttd
14:09:59 <argoneus> can you change the configuration of a gamescript in a running game?
14:14:32 <planetmaker> that's not forseen afaik
14:14:37 <planetmaker> similar to newgrfs
14:17:05 *** WormnestAndroid has quit IRC
14:17:18 *** WormnestAndroid has joined #openttd
14:26:10 <b_jonas> it's past 2020 in game and I only just realized that I forgot to build status to the company owner in all towns I use
14:26:24 <b_jonas> despite that I've had more than enough money for a while
14:26:35 <b_jonas> and it increases station ratings
14:30:51 *** WormnestAndroid has quit IRC
14:31:08 *** WormnestAndroid has joined #openttd
14:35:46 <Timberwolf> argoneus: You can change parameters of an existing GS if the developer allows you, but can't change which GS you're running.
14:35:58 <argoneus> oh, I see
14:36:00 <argoneus> thanks!
14:38:21 *** glx has joined #openttd
14:38:22 *** ChanServ sets mode: +v glx
14:53:35 <supermop_Home> hi
15:32:17 *** snail_UES_ has joined #openttd
15:43:13 <andythenorth> woah, GS dev can allow parameter changes? :o
15:43:28 <supermop_Home> Poppleton has a 2' gauge plant nursery railway..
15:44:19 <supermop_Home> unfortunately there is no 4mm gauge track out there
15:46:37 <supermop_Home> hmm T gauge is close to being 2' for Z scale
15:49:45 <supermop_Home> also, i wonder if anyone ever regauged N scale trains to run on Z track to better model 1067mm
15:52:42 <supermop_Home> why can't i pick like mountain amount in scenario editor?
15:53:47 <arikover> Variety Distribution does that... -ish.
15:56:26 <supermop_Home> you can't set that in scenario editor
15:57:16 *** nielsm has joined #openttd
16:00:15 <arikover> I think you can: just click on "random" and you should see the standard window, just like when you do prepare a new game.
16:00:27 <supermop_Home> https://imgur.com/a/jyS4EXO
16:02:32 <supermop_Home> ugh it just makes a boring minnesota
16:03:12 <supermop_Home> tons of unconnected lakes in flat land, with isolated hills
16:05:45 <supermop_Home> and with max height 128, 512x256 map, alpinist, v high variety distribution
16:05:54 <supermop_Home> the tallest peak is only 19
16:06:51 <arikover> Your map is too small. Alpine works well for big maps, I think.
16:07:34 <supermop_Home> not only does the terrain generator suck, after 12 years of playing this game i still have no idea what result to expect from most of these settings
16:08:16 <supermop_Home> arikover the hills are certainly not limited my map size, there is plenty of flat land around them
16:08:34 <supermop_Home> i would expect a map of this size to have peaks at 30-40 height
16:15:22 <LordAro> it is well known that TGP has issues
16:24:01 <arikover> supermop_Home: Have you set Variety Distribution to None?
16:29:48 <arikover> supermop_Home: I just tried max height 128, 512x256, alpinist, variety distribution None, and I get a peak at 24 TTD-feet.
16:30:11 <arikover> supermop_Home: with 512x512, it gets as high as 30.
16:34:16 *** ZirconiumX has joined #openttd
17:02:36 *** Progman has quit IRC
17:15:08 <supermop_Home> i would say there needs to be better explanation of variety distribution and what to expect it does
17:15:43 <supermop_Home> the term itself is not really parseable
17:16:04 <arikover> That would be great, yes.
17:16:36 <supermop_Home> like i have no reason to think that none = bigger hills
17:24:10 <supermop_Home> also why do i get mountain tops flattened off at 24 when max height is 128?
17:26:15 <supermop_Home> https://imgur.com/a/jyS4EXO
17:26:35 <supermop_Home> as you can see - i can raise the mountain above the flat level manually
17:26:47 <supermop_Home> but why is it flat to begin with?
17:31:42 *** HerzogDeXtEr has joined #openttd
17:38:54 <supermop_Home> well this has completely killed my desire to play a game. going outside
17:45:15 *** frosch123 has joined #openttd
17:45:48 *** HerzogDeXtEr1 has joined #openttd
17:48:13 <Timberwolf> Map edge length, usually.
17:48:43 *** HerzogDeXtEr has quit IRC
17:49:04 <Timberwolf> I think there's an internal restriction on how high hills are dependent on length of smallest map edge. I haven't seen it clip the peaks like that before though, normally it just gives smaller hills.
17:51:25 <Timberwolf> andythenorth: `flags = CONFIG_INGAME` on `AddSetting()`
17:56:29 <b_jonas> I wish one of the transparency options hid the trees of the tree-lined roads in towns
17:58:27 <FLHerne> Yeah, that annoys me sometimes too
17:59:22 *** Wormnest has joined #openttd
18:23:16 <frosch123> b_jonas: settings dropdown -> full details
18:23:39 <frosch123> the option exists, just the gui is messy
18:24:16 <b_jonas> frosch123: thank you, that works!
18:24:21 <b_jonas> I'll be using that
18:24:44 <b_jonas> that's the one that hides railway fences too, those can get in the way too sometimes, so that's useful
18:25:25 <b_jonas> meanwhile, I'm now spending a lot of time building a complicated junction, and trying to make sure that it won't jam or deadlock
18:25:51 <b_jonas> the space is a bit tight
18:26:05 <Boingo> FLHerne: Thanks! I looked at FIRS, but I think I might try ECS.
18:26:12 *** gelignite has joined #openttd
18:26:20 <b_jonas> it's for one of the two oil refineries that I want to transmit oil to
18:27:05 <b_jonas> so all the oil from the sea on the northeast and east to this refinery in the west, and all the oil on the south side to the other refinery in east
18:27:58 <b_jonas> but I'm going to share the four-track spine with a high capacity passenger train line
18:28:47 <b_jonas> eventually that spine will be four tracks all in one direction, and all trains will go counterclockwise, but for now I only have a large section of it (two of the three connections between the three big cities) so it's two-way
18:29:57 <b_jonas> the city stations are all directly part of the spine, and they take passengers and mail (and goods in the future), but all the oil refiners will be on sidelines
18:30:59 <b_jonas> so I'm designing the complicated but cramped sideline for the west oil refinery, which has a lot of parallel tracks so that it can't get congested by either oil tankers or goods trains, and the passenger line can just pass straight through in priority
18:31:26 <b_jonas> the passenger line won't even have bridges, because I eventually want it to be a really fast vac train line
18:37:01 <TrueBrain> Wall of text hits you for 2 points ;)
18:47:40 <b_jonas> yeah, it'd look better on a screenshot I guess
18:59:54 *** Flygon has quit IRC
19:18:03 * andythenorth needs a name for the FIRS GS
19:18:13 <andythenorth> SRIF GS
19:18:18 <andythenorth> GS GS
19:19:26 <_dp_> YAGS
19:19:40 <andythenorth> ha ha
19:19:47 <andythenorth> Ultimate GS
19:19:56 <andythenorth> Yet Another Ultimate GS
19:20:02 <andythenorth> it's going to be quite confusing
19:20:14 <frosch123> i second "YAK Shaving"
19:20:29 <frosch123> YAKS
19:20:33 <andythenorth> YAKS
19:20:42 <_dp_> GS of Life, the Universe, and Everything
19:20:52 <andythenorth> I could just call it GS
19:21:14 <_dp_> GS42 for short
19:21:17 <andythenorth> it will combine daylength, town growth and goals
19:21:21 <andythenorth> so it's a bit confusing
19:21:29 <frosch123> call it "Buy a FIRS server at myfirs.com"
19:21:54 <andythenorth> that is nice
19:22:06 <andythenorth> domain is for sale also
19:22:11 <andythenorth> $1995
19:22:59 <frosch123> it will probably get more expensive now
19:23:04 <frosch123> so many hits
19:23:37 <andythenorth> cheap at any price
19:23:39 <frosch123> is there some obvious secondary meaning for "Firs" in some language?
19:23:54 <frosch123> or do they register all 4 letter combinations
19:23:56 *** Wolf01 has joined #openttd
19:24:16 <andythenorth> I only get the trees when I google
19:25:25 <Wolf01> I get only lego when I google instead :P
19:25:30 <frosch123> it's the federal inland revenue service of nigeria
19:25:58 <frosch123> not sure what a revenue service is though
19:28:07 <frosch123> i like sentences that contain both "taxes" and "voluntary complicance"
19:30:41 <frosch123> there is a font named "TT Firs" :p
19:32:07 <frosch123> https://www.myfonts.com/fonts/type-type/tt-firs/ <- i guess not worth the price for using it on the docs page
19:33:07 <andythenorth> lol :)
19:36:27 <LordAro> it's quite a nice font
19:38:00 <andythenorth> nice font
19:38:09 <andythenorth> I should buy it :P
19:38:24 <andythenorth> hmm I could do with a better domain for my AWS buckets
19:38:35 <andythenorth> https://firs-test-1.s3.eu-west-2.amazonaws.com/ is not snappy
19:42:20 <frosch123> playfirs.* is available
19:42:44 <frosch123> oi, newgrf.* is available
19:43:01 <frosch123> www.newgrf.*/firs
19:43:47 <frosch123> .game is expensive
19:45:43 <frosch123> oh. .fail exists, www.newgrf.fail/firs :)
19:45:45 <andythenorth> oh
19:45:52 <andythenorth> can we get .newgrf as TLD?
19:45:58 <andythenorth> or .openttd?
19:46:08 <_dp_> you know it's a really terrible name when 6-letter com is available :p
19:46:30 <andythenorth> firs.fail
19:46:50 <andythenorth> or we could offer openttd.org paths to AWS buckets? :P
19:46:54 <andythenorth> controversial
19:47:10 <frosch123> there is also .lol
19:47:40 <frosch123> maybe ask V to buy newgrf.wtf
19:48:05 <Eddi|zuHause> newgrf.nsfw?
19:48:36 <frosch123> cets.rip
19:49:06 <frosch123> oh, also .horse
19:49:14 <Eddi|zuHause> hey, i made a commit like a week ago
19:49:37 <Eddi|zuHause> or maybe 3 :p
19:50:29 *** virtualrandomnumber has joined #openttd
19:50:56 <andythenorth> iron.horse
19:51:15 * andythenorth is curious about whether to do one horse grf, or one per roster
19:51:20 <andythenorth> confusing
19:51:21 <frosch123> andythenorth: we worked hard to prevent <iframe> on bananas
19:51:47 <andythenorth> but http://bundles.openttdcoop.org/ will serve anything :)
19:51:55 <andythenorth> and we have allowed anyone in to publish to it
19:52:02 * andythenorth has no idea about wisdom of that
19:52:18 <supermop_Home> nice font
19:52:18 <frosch123> andythenorth: you will run out of grfids if you use a new one whenver you delete/add a roster
19:55:51 <supermop_Home> Timberwolf why clamp to a flat top at all?
19:55:52 <andythenorth> so far I have only added 3 and deleted none
19:56:51 <supermop_Home> it doesn't help ensure enough usable valley space the way a shorter hill / clamped floor would
19:58:25 <supermop_Home> gameplay wise, this map would be just the same if the mountain continued 8 level higher as implied by the slope before level 24
19:59:00 <supermop_Home> these flat tops just encourage the scourge of Car Factories on top of mountains
20:01:39 <andythenorth> wasn't it just Another Bug in MHL?
20:01:42 <andythenorth> or TGP?
20:01:48 <supermop_Home> maybe
20:01:49 * andythenorth is sure it was all explained before
20:02:00 <LordAro> MHL added alpinist
20:02:09 <LordAro> but i'm pretty sure it was an issue before
20:02:19 <supermop_Home> I've yet to see an Alp with a flat top
20:03:34 <supermop_Home> there are other things in alpinist that bug me too, but i don't see them being fizxable
20:04:08 <supermop_Home> things like steep pyramidal craters and dead-end valleys
20:08:36 <supermop_Home> https://imgur.com/a/jyS4EXO
20:08:48 <supermop_Home> like how doe these work geologinally
20:08:55 <supermop_Home> geollogically
20:10:06 <FLHerne> andythenorth: One per roster
20:10:48 <FLHerne> Smaller file downloads
20:10:51 <FLHerne> More discoverable
20:12:03 <andythenorth> is it confusing though?
20:12:13 <supermop_Home> i'd rather just the one grf, but invariably people will beg to play with all rosters on, and multiple grfs lets them do that
20:12:29 <andythenorth> I'm mostly concerned about compile time :P
20:12:47 <supermop_Home> all in one grf lets you BAD FEATURE some command and Conquer style into it with a GS
20:13:30 <supermop_Home> like CC Light blue gets british roster, Red gets continental,
20:13:38 <supermop_Home> etc
20:15:16 <supermop_Home> capture the other players HQ with an engineer to be able to build their trains
20:16:26 *** Compu has joined #openttd
20:17:06 <andythenorth> it's notable that NARS and UKRS are split and that's finr
20:17:07 <andythenorth> fine *
20:17:14 *** Compu has joined #openttd
20:17:21 <supermop_Home> indeed
20:17:23 *** Compu has quit IRC
20:17:51 <supermop_Home> they are different enough in style I've never tried to play with both of them together though
20:31:24 <DorpsGek_III> [OpenTTD/OpenTTD] ConnCraft commented on issue #7838: Crash in VehicleGroupWindow::GroupNameSorter https://git.io/JeKL5
20:43:19 <b_jonas> and of course my network still had and has a lot of bug that I won't find out till later
20:43:46 <b_jonas> in this case I had to add waypoint to force trains to specific platforms designated for dropping oil and goods
20:45:54 <b_jonas> I tried two separate stations first, but that failed because the oil drop point didn't accept oil (and also would supply oil from a nearby unused oil rig)
20:59:05 <Gustavo6046> Squirrel works fine, but I think it's a bit outdated. Perhaps it would not be a vain investment to switch to (or at least supplement support for) embedded JavaScript. Using something like QuickJS or Duktape should be a good start, a step in the right direction; the difficult part, as it usually (read: almost always) turns out to be for an embedded language, would most likely be
20:59:07 <Gustavo6046> integrating with the existing codebase.
20:59:14 <Gustavo6046> I want your input, though.
21:00:03 <LordAro> how is it outdated?
21:07:18 <FLHerne> Gustavo6046: Remember that OpenTTD code has to be deterministic
21:07:31 <Gustavo6046> FLHerne: yes, it does
21:07:37 <FLHerne> Given that JS's only numeric type is floating-point, that's not going to work well
21:08:06 <Gustavo6046> Can't we configure the interpreter we choose to use to allow integers?
21:08:13 <Gustavo6046> FLHerne: Duktape supports BigInt, I think
21:08:27 <LordAro> *if* (and it's a big if) we went with another scripting language, it'd more likely be lua
21:08:35 <LordAro> which is actually designed for embedding
21:08:37 <Gustavo6046> Which is what you want if you accurately want large integers
21:08:40 <LordAro> and y'know, actually designed
21:08:42 <Gustavo6046> Ew, Lua
21:09:12 <Gustavo6046> It is not a general-purpose language
21:09:41 <LordAro> yes?
21:09:49 <milek7> there was some discussion about wasm
21:10:03 <FLHerne> In that case, you're no longer using JavaScript, but some poorly-specified subset of JS
21:10:17 <Gustavo6046> milek7: WASM? Why WASM?! That is only for targeting VMs that support it, and only for performance-sensitive scenarios. This is OpenTTD.
21:10:21 <FLHerne> I don't see what that buys you
21:10:39 <Gustavo6046> FLHerne: WASM is actually not JS.
21:10:42 <Gustavo6046> It's bytecode.
21:10:52 <Gustavo6046> asm.js is the subset. And iirc it's already deprecated lol.
21:10:53 <FLHerne> I mean the no-floating-point thing
21:11:00 <milek7> uh, openttd is not performance sensitive?
21:11:17 <FLHerne> no-floating-point WASM would be a poorly-specified subset of WASM instead
21:11:19 <milek7> and you're adding VM anyway, be it js or wasm
21:11:26 <Gustavo6046> Subset?! You mean superset, right? BigInt is standard since ES2015 (and everyone who is not using Windows 98 anymore is using ES2015)
21:11:34 <FLHerne> Gustavo6046: No, I mean subset
21:11:38 <Gustavo6046> mikegrb: joke's on you, Squirrel too is a VM!
21:11:55 <Gustavo6046> I mean, sure, it's another VM, but it is a very small price to pay to support existing Squirrel stuff.
21:12:02 <Gustavo6046> I'm fine with it.
21:12:08 <Gustavo6046> FLHerne: floats are not non-deterministic.
21:12:24 <FLHerne> Gustavo6046: The vast majority of extant JS code, including the standard library, uses and assumes floating-point values
21:12:30 <Gustavo6046> Maybe across platforms. But then again, only for ridiculously high precisions, and/or for ridiculously high ranges.
21:12:36 <FLHerne> They are when using the native instructions
21:12:46 <Gustavo6046> Are processors that dumb?
21:12:54 <FLHerne> And soft-floats are *sloooow*, which negates the entire point
21:13:04 <FLHerne> Weirdly, it's because they're not dumb
21:13:07 <Gustavo6046> I mean, if you have a float32 (16), and a float32 (40), and add them, you will ALWAYS get 56.
21:13:10 <FLHerne> Or not enough
21:13:30 <FLHerne> The x86 FPU uses 80 bits to store intermediate results
21:13:39 <FLHerne> Which increases the precision
21:13:52 <LordAro> this discussion sounds a lot like "Gustavo6046 wants to write JS" to me
21:14:00 <FLHerne> But means you get different results depending on which regs the compiler happens to spill
21:14:16 <FLHerne> Or from other non-x86 platforms
21:14:19 <milek7> ieee754 basic operations are defined (most except sin/etc.), but making sure that every compiler generates compatible code (correct rounding modes, intermediaries, not reordering operations) isn't easy
21:14:24 <Gustavo6046> Or you can use coerciom, to ensure that tiny 0.00000001 errors are vanquished (the existence of these tiny errors should be neglected, as iirc they are automatically corrected by modern libc's or whatever component I forgot about, way before they are even considered in the deterministicity-sensitive scenario of OpenTTD's VM).
21:14:34 <FLHerne> Gustavo6046: No, that doesn't work
21:14:45 <FLHerne> Lots of people have tried to invent robust ways to do that
21:15:11 <FLHerne> But it's basically impossible without essentially falling back to soft-floats as integer ops
21:15:21 <Gustavo6046> Unless you use numbers smaller than 0.00025 or larger than 2 to the power of some number larger than 15, yes they do.
21:15:30 <Gustavo6046> And at this point they are pretty much just slow ints.
21:15:50 <Gustavo6046> I think in JS integer support is explicit. You need to use BigInt, which is an arbitrary precision number thing, much like Python's.
21:16:02 <FLHerne> Yes
21:16:15 <milek7> even ULP difference is not acceptable, it can accumulate to desync some long time after that
21:16:16 <Gustavo6046> I think it is faster than floating points for integer arithmetic, granted the result isn't too big (which would make some mallocs inevitable).
21:16:33 <Gustavo6046> I don't nkow i
21:16:46 <Gustavo6046> I don't know if you can explicitly set hard limits, like cap it at 32 bits or 64 bits.
21:17:05 <Gustavo6046> I think you can preallocate a few bytes, though. I'll check.
21:17:11 <milek7> (and we probably wandered into newgrf territory, because strictly GS doesn't have to be deteministic)
21:17:33 <FLHerne> milek7: AIs do at least, IIRC
21:17:37 <LordAro> milek7: they do if you ever want to go near multiplayer
21:17:50 <FLHerne> (I have questioned *why* they have to be before)
21:18:12 <FLHerne> In principle, they should be able to run only on the server
21:18:25 <LordAro> in principle perhaps
21:18:32 <LordAro> but that's not how the game is architected
21:18:38 <LordAro> you're welcome to redo everything
21:18:43 <FLHerne> But then you have to be really careful that the AI/GS code doesn't change the game state at all directly
21:18:54 <FLHerne> Or affect the RNG
21:19:03 <Gustavo6046> FLHerne: I think this code is designed badly, Q.E.D..
21:19:05 <FLHerne> And as LordAro says ^
21:19:26 <Gustavo6046> AI code does not change the game state directly.
21:19:34 <milek7> anyway, I don't get why you are so bent on using js
21:19:39 <FLHerne> Gustavo6046: I think you have a very poor understanding of the issues
21:20:32 <Gustavo6046> FLHerne: network code is not an easy task, but the results depend a lot on whether the networking is *designed* properly.
21:20:47 <FLHerne> Yes
21:20:57 <Gustavo6046> You could take the Unreal approach, and have the clientside predict predictible things, but in a way that does not change the game state, while the server computes everything unpredictable.
21:21:12 <Gustavo6046> This is called replication, and not only does it REALLY save on bandwidth, it would help us with this deterministicity problem.
21:21:22 <FLHerne> But it's designed the way it is for sensible reasons
21:21:28 <Gustavo6046> (Is there a better noun for deterministic things? Determinism? Like, "related to determinism", but not "determinism".)
21:21:40 <LordAro> "completely rearchitect the game engine so that Gustavo6046 can use JS to write AI/GS" is a bit much
21:21:41 <FLHerne> ok, now I'm not even sure you understand how it works *now*
21:21:50 <Gustavo6046> LordAro: I know.
21:21:50 <FLHerne> "This is called replication, and not only does it REALLY save on bandwidth"
21:22:05 <Gustavo6046> FLHerne: it did back in the day, when there was still dial-up
21:22:06 <Gustavo6046> But that is beside the point
21:22:15 <FLHerne> It would be pretty much impossible to save bandwidth compared to the way OTTD multiplayer works now
21:22:17 <Gustavo6046> (hence "not only")
21:22:25 <FLHerne> The entire game state is replicated, continuously
21:22:37 <Gustavo6046> "Replication" is a misleading name
21:22:41 <FLHerne> The *only* thing sent over the network are user actions
21:22:46 <FLHerne> Which are tiny
21:22:51 <Gustavo6046> The way I used it, I referred to a very specific thing
21:22:52 <milek7> LordAro: hmm, so GS doesn't just send commands as every other client?
21:23:06 <LordAro> milek7: it's just a special AI
21:23:09 <LordAro> afaik
21:23:10 *** Kapytan has joined #openttd
21:23:26 <Gustavo6046> The entire point of replication is that you do not need to worry about deterministic algorithms while still having the server issue less data through the network.
21:24:15 <Gustavo6046> And also, that the clientside *VIEW* of the game state at T should not be affected by packet loss at T-N (Unreal's replication mechanism uses UDP).
21:24:45 <FLHerne> Gustavo6046: Do you have a source for your very narrow definition of "replication"?
21:24:52 <Gustavo6046> I think I am failing to explain. I apologize.
21:24:53 <Gustavo6046> FLHerne: yes!
21:25:13 <FLHerne> According to what I remember, OTTD is a textbook example of lockstep-style active replication
21:25:21 <Gustavo6046> I am unaware of more technical documents, but these do probably exist too. I'll pray the wiki at BeyondUnreal is up.
21:25:25 <Gustavo6046> wiki.beyondunreal.com/Legacy:Replication
21:25:29 <Gustavo6046> Ah, it is up.
21:25:31 <Gustavo6046> Whew
21:26:07 <Gustavo6046> This implementation of replication is not lockstep. It was meant to eliminate it, as predeceding games suffered from it (remember Quake?)
21:26:41 <FLHerne> Gustavo6046: Your wiki is wrong :p
21:26:53 <FLHerne> Seriously, "Replication" is a well-defined term in CS for decades
21:27:33 <LordAro> FLHerne: tbf, so is CS's inability to name anything properly
21:27:46 <FLHerne> Well, maybe Unreal Engine specifically uses it as a term of art for something special, I don't know
21:29:45 <Gustavo6046> FLHerne: this definition also exists for decades.
21:29:55 <glx> anyway openttd server really issue almost no data
21:30:11 <Gustavo6046> I think it is a bit more domain-specific, as Unreal is a time-sensitive scenario, so it probably does concern with this.
21:30:44 <Gustavo6046> glx: only player commands, which I think is part of the (non-)issue that makes the determinicity of code so much more important.
21:30:44 <glx> it just dispatch commands received from clients, with some checks
21:30:56 <Gustavo6046> And maybe makes it very difficult to have serverside-only code run.
21:31:04 <Gustavo6046> (Or, by extension, clientside-only code, like effects.)
21:31:09 <Gustavo6046> It mure uses very
21:31:20 <glx> server side only code works well if done correctly
21:32:13 <glx> GS and AI are server side
21:32:50 <FLHerne> glx: Is that true currently? I didn't think so
21:33:33 <glx> it's guarded by !networking || server IIRC
21:34:52 <TrueBrain> hihi, fun fact, games from 1991 use "threads" by switching the stack pointer on regular intervals .. interesting :D (sorry, lovely random fun fact, just had to :D)
21:35:40 <Kapytan> Hi, I'm looking for a chat in CZ / CS. I can't know ENG. I use Goo..translat. The link "tycoonez.com" does not work.
21:36:26 <milek7> TrueBrain: green threads?
21:36:47 <TrueBrain> pretty sure their colour is not relevant (owh, the jokes)
21:37:18 <TrueBrain> but no .. they basically implemented their own context switch in an interrupt
21:37:25 <TrueBrain> which on its own is pretty impressive tbh
21:38:40 <Gustavo6046> It sure uses very little bandwidth, but at the expense of CPU time, PLUS it makes it impractical to compatibly run code in one place only, PLUS it makes it VERY difficult to manage dependencies (as all peers must have the same dependencies at all times!), unless the server somehow either uploads them, or redirects the client to download from an external source (like OpenTTD's addon
21:38:42 <Gustavo6046> repository, whose name I fail to recall), even if just temporarily, for the sake to join the server.
21:39:17 <Gustavo6046> You are placing many limitations in place, and I see little to no advantages to continue this way, at least none that hold up to this day.
21:39:50 <Gustavo6046> May you please state what is the sensible reason behind this radical design decision? I would LOVE to be corrected.
21:40:12 <Gustavo6046> s/sake to join/sake of joining/
21:41:34 <milek7> i don't think it is radical, it's just obvious thing to do
21:41:36 <milek7> when you have clearly discernible actions that acts based on global state
21:41:44 <FLHerne> Kapytan: The last archived version is here https://web.archive.org/web/20170425184500/http://www.tycoonez.com/
21:42:02 <TrueBrain> FLHerne: you looked that up? You are awesome :D 2017 .. nice :)
21:42:05 <Gustavo6046> milek7: why obvious?
21:42:08 <Gustavo6046> Also, why global state?
21:42:30 <glx> just remember when network code was implemented
21:42:31 <FLHerne> Kapytan: What page links to "tycoonez.com"? I don't believe it's ever been official in any way
21:43:04 <FLHerne> Gustavo6046: A very large amount of the game state is directly visible to the user at any time
21:43:46 <glx> every thing displayed on the screen depends on game state
21:43:50 <Gustavo6046> I think that it is inconceivable to rely on a global state when you operate with multiple machines, in the non-deterministic (or non-guaranteed) transport that is the network (TCP/IP stack and all that stuff), with ANY non-zero (and usually non-negligible) amount of latency.
21:43:51 <FLHerne> (e.g. if you zoom out, you can see the location, sprite, animation frame etc. of everything on a large part of the map)
21:44:16 <FLHerne> In an FPS game like most Unreal games, you can synchronize only what the player happens to be looking aat
21:44:24 <glx> latency is not an issue
21:44:25 <FLHerne> Which is a relatively small amount of state
21:45:06 <glx> and server is giving the heartbeat anyway
21:45:14 <b_jonas> oh yeah, another question. when I click on a secondary industry, it prints how much it produced last month. but one month is very short, since I have long trains. is there some way to see how much of each cargo that industry received and produced in the last few years, and how much of the products got delivered successfully so far?
21:45:26 <FLHerne> Gustavo6046: I don't understand how you can find it inconceivable, given that it demonstrably works
21:45:46 <FLHerne> (even over my very bad multi-hop wifi connection, which is very much not low-latency)
21:45:49 <TrueBrain> I love when people use words like "inconceivable", while it has been reality for 15+ years :D
21:45:53 <Gustavo6046> And for this reason I think it is a fallacy, if not a vice, to write network code with the notion of a perfectly synchronized and deterministic global state, if the very physical and low-level assumptions network code depends on is, and will always be, non-deterministic.
21:45:58 <TrueBrain> finds his reality-check-machine
21:46:14 <FLHerne> Gustavo6046: Your imagined reality doesn't correspond to the actual one
21:46:28 <Kapytan> <FLHerne>Link from: "https://wiki.openttd.org/OpenTTD:Community_portal"
21:46:40 <FLHerne> TCP maintains packet ordering
21:46:49 <TrueBrain> you guys do understand you are on a rollercoaster right? Going from "replace squirrel" to debating if the TCP protocol is deterministic :D
21:46:50 <Gustavo6046> The most portable true random number generator is that of packet loss. You don't need to visualize "atmospheric phenomena" of any sorts, nor do you need to send HTTP requests (or requests of any sort) to someone who does.
21:46:52 <frosch123> LordAro: lua is shit. rather go for python
21:47:10 <milek7> python embedding is pita
21:47:14 <TrueBrain> frosch123: embedding Python? Are you mental?
21:47:16 <Gustavo6046> In fact, you don't even need to request information from any other server. Just loop packets around in a physical loopback, and count the packet loss.
21:47:27 <Gustavo6046> frosch123: Python is not a very sane choice for embedding.
21:47:40 <frosch123> TrueBrain: yeah, your f-strings ruined it
21:47:42 <FLHerne> Gustavo6046: If only someone had invented TCP
21:47:48 <TrueBrain> frosch123: I do not appoligize for that!
21:47:56 <TrueBrain> :D
21:48:10 <FLHerne> The main purpose of which is to hide packet loss from application authors
21:48:12 <Gustavo6046> FLHerne: still non-deterministic. Sure, it avoids packet loss, but I still count retransmission as part of what makes network data non-deterministic.
21:48:13 <glx> but most of things happening in openttd don't rely on network, just the really small commands
21:48:39 <FLHerne> Gustavo6046: Actions know which game tick they apply to, so timing determinism is irrelevant
21:48:54 <TrueBrain> can we switch to entropy pleas?
21:48:59 <TrueBrain> that would make this conversation better
21:49:01 <Gustavo6046> The impossibility of having a packet reach from point A to point B with the exact same delay reliably is enough to guarantee non-determinism.
21:49:14 <Gustavo6046> FLHerne: good point.
21:49:46 <frosch123> anyway, i am out of popcorn
21:49:52 <TrueBrain> frosch123: aaaawwwwhhhh
21:49:59 * TrueBrain gives frosch123 some more wood to put on the fire
21:50:04 <Gustavo6046> But what I mean is, you work very hard to make deterministic code work on a deterministic state, on a non-deterministic transport. You really put your effort into make it ROBUST, and it pays. I very much admire it, and I am in absolute awe.
21:50:42 <TrueBrain> TCP is a deterministic transport mechanism .. please don't try to convince people otherwise ;)
21:50:56 <glx> yeah it's not UDP
21:50:58 <_dp_> "work very hard" rofl, it's like the dumbest network code you can make :p
21:51:21 <Gustavo6046> TrueBrain: it only guarantees that all packets arrive, and that they can be reordered by the TCP stack code at the recipient end.
21:51:27 <TrueBrain> _dp_: wtf? you looking for a kick or something? *giggles*
21:51:33 <Gustavo6046> I do not think that means determinism.
21:51:38 <frosch123> _dp_: just because it is a standard design, it's not dumb. factorio does the same
21:51:49 <Gustavo6046> _dp_: dumb and difficult.
21:52:01 <milek7> and simplest, doesn't require different code for client/server behaviour, and is cheat-proof
21:52:02 <Gustavo6046> It is sometimes easier to make dumb things. I think here it might be the opposite.
21:52:04 <frosch123> actually, it's funny. factorio tried a lot of magic in the beginning and then converged towards normal
21:52:11 <Gustavo6046> milek7: does not require, but also does not allow.
21:52:16 <FLHerne> Gustavo6046: The only non-determism is timing, which as I said before is irrelevant
21:52:18 <glx> difficult ? client sends a command, server analyse and dispatch
21:52:20 <TrueBrain> DorpsGek: whoami
21:52:20 <DorpsGek> TrueBrain: TrueBrain
21:52:23 <Gustavo6046> It is sometimes good to have different clientside and serverside code.
21:52:25 <glx> how is that difficult ?
21:52:28 <TrueBrain> good to know that DorpsGek knows me :)
21:52:38 <andythenorth> so I'll call my GS 'GS'
21:52:49 <Gustavo6046> And if you really insist in this uniformity of code, just go peer-to-peer! That is good too. I've been investigating ditching client-server architectures for games.
21:52:49 <andythenorth> seems vanilla choice
21:52:50 <FLHerne> Gustavo6046: The only situation in which the data received is non-deterministic is if your network connection has dropped altogether
21:52:54 <TrueBrain> Gustavo6046: please look up the definition of deterministic :) Timing has nothing to do with it :) It has to do with state, and transitions :) You are mixing up stuff here ;)
21:52:57 <andythenorth> unless I"m calling it JS
21:53:00 <frosch123> andythenorth: what? still at that topic? i thought that was settled hours ago
21:53:06 <FLHerne> At which point no-one cares
21:53:08 <andythenorth> well now it might be JS
21:53:09 <Gustavo6046> TrueBrain: I'm not talking about the determinism of the game state.
21:53:43 <frosch123> andythenorth: anyway, JS does not have 4 letters
21:53:43 <andythenorth> supermop_Home do I actually want it? https://www.ebay.co.uk/itm/392835761287?_trksid=p2380057.m570.l5999&_trkparms=gh1g%3DI392835761287.N36.S1.typeWATCH_ITEM_ENDING_SOON.R1.TR6
21:53:44 <TrueBrain> TCP, the protocol, not the TCP/IP stack (I know, confusing names) guarantees deterministic behaviour on layer 7, barr some exceptins like connectionloss :)
21:53:58 <TrueBrain> frosch123: JSJS?
21:54:00 <TrueBrain> JSSS?
21:54:02 <TrueBrain> NOJS?
21:54:05 <TrueBrain> NoJS?
21:54:09 <Gustavo6046> I am trying to argue that it might not be necessary to have the game state be deterministic, and it could actually be easier to work with that assumption in mind, and to synchronize just enough that it would be almost invisible to your player client, and neglectable for external bot clients.
21:54:31 <Gustavo6046> Besides, it would open up many possibilities.
21:54:40 <frosch123> JSSS looks like you tried to type IEEE and shifted the keyboard under your fingers
21:54:43 <FLHerne> Gustavo6046: Sure, but you're trying to argue this in the face of several people familiar with the problem telling you it's a bad idea
21:54:46 <TrueBrain> Gustavo6046: but, mostly because I am growing a bit tired of debating fundamentals, you might realise by now you got a bit lost in your own conversation, and skipped why replacing Squirrel is a good thing :)
21:54:53 <andythenorth> TB was going to reimplement all of GS and NewGRF once
21:54:58 <andythenorth> I have the chat log somewhere
21:54:59 <Gustavo6046> Oh.
21:55:06 <TrueBrain> andythenorth: still think that is the best idea in the world, but meh :)
21:55:09 <Gustavo6046> I think Squirrel is not a very actively supported language, unlike JavaScript.
21:55:21 <TrueBrain> but is it broken?
21:55:26 <TrueBrain> does it need replacement?
21:55:26 <glx> doesn't mean JS is a good idea
21:55:33 <andythenorth> Gustavo6046 there are bigger problems with GS than the language choice :)
21:55:34 <Gustavo6046> Lua is also dying out slowly, and it is becoming a mess to maintain - 5.3 is not backwards-compatible, and LuaJIT can only dream of supporting it now that its lead dev has quit.
21:56:00 <Gustavo6046> The ecosystem in Lua is broken, and so is the development cycle.
21:56:09 <andythenorth> fortunately we don't have Lua :)
21:56:14 <Gustavo6046> I am not fond of the syntax, either. And I am also not fond of the absolute lack of typing in variables.
21:56:24 <TrueBrain> https://github.com/albertodemichelis/squirrel <- ps, 4 days ago. So much for being "not a very actively supported language" ;)
21:56:25 <andythenorth> this is such a classic open source conversation :)
21:56:26 <Gustavo6046> andythenorth: good point. Squirrel is heaps better. Unfortunately, it's also inactive.
21:56:41 <Gustavo6046> TrueBrain: really? Let me check.
21:56:45 <TrueBrain> so now we get to the real argument: you don't like Squirrel
21:56:49 <Gustavo6046> I can not believe in my eyes now.
21:56:52 <TrueBrain> now it becomes a completely different conversation :)
21:56:57 <Gustavo6046> I like it. I like it better than Lua.
21:57:08 <milek7> TrueBrain: playing devil advocate, squirrel 2 probably is dead :P
21:57:10 <Gustavo6046> But I think it would still be easier to allow using JavaScript.
21:57:11 <glx> anyway we still use a very old squirrel version
21:57:12 <Gustavo6046> It's simpler.
21:57:15 <TrueBrain> milek7: SSSSTTTTT
21:57:18 <TrueBrain> why spoil this :(
21:57:19 <TrueBrain> ffs
21:57:28 <FLHerne> Gustavo6046: Javascript is very clearly not simpler than Squirrel
21:57:35 <TrueBrain> 1 thing I think everyone can agree on: JavaScript is not simpler than Squirrel :)
21:57:43 <TrueBrain> that is not even worth a debate tbfh :P
21:57:55 <andythenorth> eh wat?
21:57:55 <TrueBrain> a sportscar really is more complex than my freaking bike :)
21:57:56 <FLHerne> The ECMA spec is enormous, while Squirrel is a tiny language
21:58:07 <andythenorth> but even I can write JS :P
21:58:16 <TrueBrain> andythenorth: which is why we are not using it :P
21:58:21 <TrueBrain> :D :D
21:58:22 <andythenorth> I still have the scars
21:58:22 * TrueBrain hugs andythenorth
21:58:23 <glx> now I'm scared by andythenorth :)
21:58:27 <frosch123> can't we just interpret LLVM and let people use whatever compiled language they want?
21:58:37 <TrueBrain> frosch123: introduce GPMI again? :D
21:58:38 <andythenorth> I started writing JS in 2000
21:58:42 <andythenorth> when NOTHING FUCKING WORKED
21:58:45 <Gustavo6046> FLHerne: yet I feel like writing it is.
21:58:49 <Gustavo6046> At least ES5.
21:58:55 <andythenorth> can we embed Flash?
21:58:55 <TrueBrain> bias :)
21:59:01 <Gustavo6046> TrueBrain: good point.
21:59:07 <milek7> bring back PNaCl
21:59:08 <Gustavo6046> andythenorth: haha
21:59:09 <TrueBrain> andythenorth: till .. 2021? What was the date they picked
21:59:11 <Gustavo6046> andythenorth: so Haxe?
21:59:19 <FLHerne> Meh
21:59:24 <andythenorth> I wrote a lot of Flash
21:59:26 <FLHerne> We should go back to TTDPatch
21:59:34 <andythenorth> only if it gets mac support
21:59:36 <Gustavo6046> Let's just include the entirety of Internet Explorer 7
21:59:40 <frosch123> TrueBrain: hmm, that was before i was active. what was it?
21:59:45 <FLHerne> Demand that all extensions be written in x86 assembly
21:59:49 <andythenorth> weren't we going to include a browser?
21:59:52 <_dp_> ffs, that's what wasm is all about, native sandbox
21:59:52 <andythenorth> for docs?
22:00:01 <TrueBrain> frosch123: I think so ... you remember Tron?
22:00:12 <supermop_Home> andythenorth what about a pacer?
22:00:12 <TrueBrain> andythenorth: "On December 31, 2020, Adobe Systems will officially stop updating and distributing Adobe Flash. "
22:00:14 <TrueBrain> hurry up :P
22:00:15 <frosch123> TrueBrain: no, only people talking about tron
22:00:23 <andythenorth> supermop_Home not convinced :P
22:00:29 <TrueBrain> frosch123: so yeah, it was before your time :P Those whole 3 years in between .. :P
22:00:40 <Gustavo6046> Rust seems like a decent choice, too. It does not compile to Flash, but it does compile to WebAssembly, as well as other targets LLVM supports.
22:00:44 <supermop_Home> i want a railfreight sector pacer
22:00:52 <Gustavo6046> WASM is like portable assembly.
22:01:09 <TrueBrain> frosch123: basically GPMI allowed any language to work with an API, so you could write an AI in what-ever language you wanted
22:01:11 <frosch123> TrueBrain: yeah, but still, i read that term somewhere somewhen in the past
22:01:17 <TrueBrain> Tron raged and removed GPMI from the OpenTTD code-base :)
22:01:17 <Gustavo6046> FLHerne: we should implement VGA in WASM.
22:01:24 <Gustavo6046> Have it support mode 0x13.
22:01:34 <Gustavo6046> And also setting the palette indexes.
22:01:38 <TrueBrain> still not over it :P
22:01:47 <Gustavo6046> :P
22:01:58 <glx> I still have gpmi stuff somewhere here
22:02:06 <FLHerne> Gustavo6046: You can compile OTTD to wasm fairly easily, it's been done :-)
22:02:20 <Gustavo6046> Ah yey
22:02:25 <TrueBrain> looking back, GPMI was not the best idea in the world, especially as it embedded shit like Python and TCL
22:02:26 <TrueBrain> but still :)
22:02:28 <Gustavo6046> FLHerne: was it in 256 colors?
22:02:51 <TrueBrain> (I and "igor" wrote GPMI btw, for context :P)
22:02:59 <frosch123> TrueBrain: that "and" is weird. why would you use tcl, if you already have python?
22:03:02 <Gustavo6046> And restricted to a 64K framebuffer?
22:03:05 <TrueBrain> even wrote "edll", which makes DLLs work with lazy binding, to avoid it needed to be loaded on startup :D
22:03:10 <FLHerne> I suppose if you compile OTTD to asm.js, the AI/GS code is *technically* written in JavaScript already...? :D
22:03:21 <TrueBrain> frosch123: it allowed any language we could get our hands on, basically :D
22:03:23 <TrueBrain> it was a bit of a shit-show :P
22:03:34 <andythenorth> supermop_Home ? https://www.ebay.co.uk/itm/Realtrack-Class-143-Arriva-Wales-Dcc-Sound-Legomanbiffo/174319102821?hash=item28963a6b65:g:ZGAAAOSwOeFe6SLE
22:03:49 <TrueBrain> but, it worked :D And solved this issue kinda
22:04:12 <TrueBrain> and also were I learned that embedding Python is a big no-no :P
22:04:36 <supermop_Home> andy i need it in N, and regional railways or WYPTE
22:04:37 <andythenorth> so more than 1 GS per game then?
22:04:47 <TrueBrain> andythenorth: why .... WHHYYYY???!!!!
22:05:23 <Gustavo6046> FLHerne: what I mean is, we could support native extensions, without having to build for lots of platforms, or including Little C Compiler or whatever
22:05:35 <Gustavo6046> Just use LLVM and embedded wasm!
22:05:39 <andythenorth> TrueBrain because 'do it in GS' has become the de-facto solution for many things
22:05:48 <TrueBrain> andythenorth: so why haven't you?
22:06:05 <andythenorth> I don't fancy trying to maintain the equivalent of a GS patchpack
22:06:14 <andythenorth> merging all the other people's GS together
22:06:18 *** Kapytan has left #openttd
22:06:21 <TrueBrain> somehow, I am a bit disappointed :D
22:06:27 <andythenorth> I considered it :P
22:06:29 <TrueBrain> make a bootloader!
22:06:30 <Gustavo6046> I suggest https://github.com/wasm3/wasm3
22:06:39 <Gustavo6046> TrueBrain: TTD-OS
22:06:40 <TrueBrain> ask for implementing a "fetch-http" API
22:06:44 <Gustavo6046> Let's make a OpenTTD file system
22:06:52 <TrueBrain> so you can download other GSes in a GS
22:06:55 <Gustavo6046> and have the trains be folders
22:06:57 <Gustavo6046> and the cargo be files
22:06:59 <Gustavo6046> :P
22:07:00 <TrueBrain> so dynamically load it
22:07:18 <TrueBrain> andythenorth: this really is the next big thing! That would be awesome :D
22:07:26 <TrueBrain> also allowing to binary patch OpenTTD
22:07:33 <TrueBrain> so you can alter behaviour you otherwise cannot
22:07:41 <TrueBrain> which means needing OS detection, because, well, binary
22:07:42 <andythenorth> yes, that will go very excellently
22:07:50 <andythenorth> I can forsee zero problems
22:07:51 <TrueBrain> I do not see any (security-related) issue with this idea at all !
22:07:52 <andythenorth> of any kind
22:07:59 <andythenorth> we should do it next weekend
22:08:05 <TrueBrain> make it a jam!
22:08:20 <TrueBrain> I can lock everyone out of the GitHub repository, so we can merge it in some peace and quiet?
22:08:26 <andythenorth> ok
22:08:28 <andythenorth> I am considering uber frankenstein GS
22:08:33 <_dp_> btw, wasm (non)determinism seems to be quite well-defined https://github.com/WebAssembly/design/blob/master/Nondeterminism.md
22:08:36 <TrueBrain> shit, this was not a PM? OWH DARN
22:09:02 <glx> oups :)
22:09:07 <TrueBrain> :D :D
22:09:13 <TrueBrain> it would really be such a bad idea :P
22:09:25 <Gustavo6046> hah
22:09:41 <frosch123> TrueBrain: aw, you would lock-out dorpsgek? how dare you?
22:09:57 <andythenorth> whenever I am sad about newgrf or GS spec I just....DRAW MORE TRAINS
22:09:57 <TrueBrain> :D I wouldn't even dream of it
22:10:16 <andythenorth> BAD DAY AT WORK....DRAW MORE TRAINS
22:10:21 <glx> andythenorth: and find bugs in my python code ;)
22:10:29 <andythenorth> oh that too
22:10:32 <TrueBrain> DorpsGek is my everything! My existence is tied to it!
22:11:15 <DorpsGek> oh thanks
22:11:31 <TrueBrain> :D Now for me the betting game ... I think it was glx :)
22:11:48 <glx> easy guess
22:12:10 <frosch123> TrueBrain: be careful though, you already spent 3 horkrux on the dorpsgeks
22:12:45 <TrueBrain> wtf is horkrux?
22:13:11 <glx> potterhead thing
22:13:25 <TrueBrain> ah, that explains
22:13:45 <TrueBrain> but, DorpsGek_III is not like DorpsGek
22:13:51 <TrueBrain> DorpsGek is more important
22:14:00 <TrueBrain> DorpsGek_III is replaceable
22:14:48 <TrueBrain> I like how this conversation died out; did I do good?
22:14:48 <milek7> if we adopt wasm.. and then compile ottd to web version using emscripten.. then there would be wasm running in wasm? ;P
22:15:04 <TrueBrain> milek7: INCEPTION! *boom*
22:16:17 <Gustavo6046> milek7: ...probably?
22:17:32 <andythenorth> hmm
22:17:38 <andythenorth> I should really finish a newgrf
22:17:52 <andythenorth> whenever I have a day off....I play tanks in Blitz
22:17:58 <andythenorth> oops
22:21:50 <_dp_> milek7, imagine someone then plays it in a browser running in wasm :p
22:23:24 <Gustavo6046> I like llvm yey
22:23:44 <frosch123> someone (probably andy) linked a talk some years ago. it was about processors abandoning buggy hardware isolation / protected mode, and instead running all processes is js vms
22:24:15 <milek7> probably from destroyallsoftware
22:24:25 <andythenorth> that wasn't me
22:24:35 <andythenorth> I watched it though
22:24:39 <andythenorth> wasn't it godbolt?
22:24:51 <milek7> this? https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript
22:25:00 <TrueBrain> frosch123: lol
22:25:08 <frosch123> milek7: yes \o/
22:25:14 <frosch123> TrueBrain: it's a nice talk
22:25:40 <andythenorth> I think I watched this too https://www.youtube.com/watch?v=QPJPS-Jjb-g
22:26:03 <andythenorth> ^ I think that one is much less lolz
22:31:31 <andythenorth> hmm nml in WASM?
22:31:37 * andythenorth wonders if we could make nml faster
22:34:51 <_dp_> andythenorth, that was actually the plan ;)
22:36:00 <_dp_> well, not nml I guess
22:36:38 <_dp_> but if wasm replaces newgrfs for extensions it makes perfect sense to implement newgrf parser in wasm for compatibility
22:36:58 <_dp_> and remove it from the game itself to simplify maintenance
22:37:20 <milek7> might be hard sell, as interpreter-in-interpreter would be slower than old newgrf
22:37:33 <frosch123> milek7: oh, we are now in that year, where that talk predicted 5 years of war
22:37:55 <_dp_> milek7, who knows mb slower, mb not, mb slower but acceptable...
22:39:02 <andythenorth> if _dp_ removes old newgrf, then that's probably cause of war
22:39:14 <andythenorth> transpiler :P
22:39:22 <andythenorth> that, and Apple going ARM
22:39:26 <_dp_> andythenorth, I never said anything about removing newgrfs completely
22:39:33 <andythenorth> shame
22:39:50 <milek7> transpiler seems possible
22:41:54 <_dp_> yeah, mb
22:42:25 <_dp_> but that's details, for now question is how feasible it is to make extension system based on wasm
22:43:03 <nielsm> the big issue with wasm-based mods is the reproducability across clients
22:43:05 <andythenorth> from scratch?
22:43:09 <andythenorth> or using existing spec?
22:43:41 <nielsm> from scratch would make sense, it would mean the base vehicle and industry sets could also be defined as "mods"
22:43:50 <nielsm> instead of the newgrf baggage
22:43:50 <_dp_> nielsm, I linked non-determinism doc for wasm somewhere above, seems very possible to avoid any non-determinism
22:44:26 <andythenorth> nielsm the purist burn-it-with-fire part of me agrees
22:44:38 <andythenorth> practically, I think we lack the ability to ever define a whole new spec
22:44:46 <andythenorth> it would be too big a task
22:44:58 <andythenorth> but I do like burn-it-with-fire :P
22:45:16 <nielsm> dp there's reproducability and then there's non-determinism
22:45:24 <nielsm> non-determinism in the execution environment is fine
22:46:18 <nielsm> reproducability would rely on the mod developer not doing unsafe things like modifying memory while being queried for a property which might only be queried depending on whether the item is being drawn on screen or the player's zoom level or such
22:47:28 <nielsm> unless you want to change the entire multiplayer game model too, so instead of transmitting commands and executing the game on every client, the server just tells all clients a full delta of the savegame every tick
22:47:50 <_dp_> nielsm, that's nearly impossible to guarantee
22:47:59 <_dp_> nielsm, also it's a language job, not wasm
22:48:29 <_dp_> nielsm, I'm not sure nml does it but if so nml to wasm compiler may make sense I guess
22:48:51 <milek7> could you design it so each function is isolated? so you don't provide player-specific info on gameplay related query
22:49:09 <_dp_> nielsm, but I'm pretty sure you can fuck it up even with newgrfs as they are now
23:07:39 <b_jonas> ok, now I have two networks that work well. first one is the long 2+2 track spine between three big cities, where I transfer passengers, and also run oil and goods sidelines for the west oil refinery.
23:08:49 <b_jonas> second one is a 2+2 track spine that doesn't run passengers yet, only oil and goods from sidelines to the east refinery. next step is to join these and close the spine to a circle,
23:10:17 <b_jonas> then modify the oil tankers and good trains to do a full clockwise loop with two transfers (one at each refinery) each, so they run empty much less,
23:10:46 <b_jonas> s/clockwise/counterclockwise/
23:11:48 <b_jonas> then direct the passenger trains to also do a full counterclockwise loop, and finally turn the spine to a one-way 4 track counterclockwise loop (this again will need a lot of fiddling with big junctions)
23:12:04 <supermop_Home> here andy i made this: https://imgur.com/a/RLLViNK
23:12:13 <b_jonas> I'm satisfied with how this map is goin
23:19:53 <TrueBrain> "Exception: PBR does not match code block: 0xc"
23:20:03 *** cHawk_ has quit IRC
23:20:07 <TrueBrain> this is just evil ... code being executed in another page than it should ... WHY DO YOU HATE ME CODE :(
23:20:25 *** cHawk_ has joined #openttd
23:21:44 *** SpComb has quit IRC
23:22:04 *** frosch123 has quit IRC
23:27:54 *** SpComb has joined #openttd
23:37:55 *** nielsm has quit IRC
23:39:23 <TrueBrain> "Exception: PC on stack different from what expected: 8031 vs 8059" <- booooo .. tracing these kind of issues is annnnoooyyyyiiiinnnngggg :D
23:41:12 <LordAro> TrueBrain: usually involves adding *lots* of prints, in my experience :)
23:41:23 *** andythenorth has quit IRC
23:41:26 <TrueBrain> yeah .... but if you have any idea how this code looks, that is another challenge :P
23:41:35 <LordAro> oh no
23:41:37 <TrueBrain> 428 files :P
23:42:28 <glx> seems you're having the same fun as with dune2
23:43:00 <TrueBrain> https://pasteboard.co/Jdps0fv.png
23:43:02 <TrueBrain> pretty sure it is broken :D
23:43:46 <glx> somehow wrong data is read at some point :)
23:45:02 <TrueBrain> yup .... but nowhere in the code I can find 8031 .. this is a true mystery :)
23:47:28 <TrueBrain> glx: https://gist.github.com/TrueBrain/e46bb639b56d2846b62369956e8a75a6 <- different language this time :P
23:47:52 <glx> haha libEMU in python
23:48:29 <TrueBrain> my CPU is 2000 times faster .. I would imagine Python should be sufficient ... no clue if it holds true .. so far .. it seems to be
23:48:30 <LordAro> eesh
23:48:54 <TrueBrain> but internally it is in an AST, so it can be what-ever language tbfh :P
23:54:47 <TrueBrain> I love looking how code was written in 1991 ... what they did here: on VBLANK (so when the video is not doing anything), they change thread. Now half-way in drawing the screen (think CRT-screens), it switches back to the main thread. Basically: 2 threads run 50/50 in CPU time
23:54:48 <TrueBrain> how elegant :)
23:55:52 <glx> and interthread communication via globals ?
23:56:18 <TrueBrain> Everything is a global ;)
23:56:30 <glx> yeah of course
23:57:32 *** sla_ro|master2 has quit IRC
23:58:08 <glx> what kind of cpu is it ?
23:58:47 <glx> looks like an evolution of 6502
23:59:30 <TrueBrain> impressive :P As it is the next gen of the 6502
23:59:40 <TrueBrain> the 65C816 to be exact
23:59:51 <TrueBrain> which is nearly fully compatible with 6502 in emulation mode