IRC logs for #openttd on OFTC at 2021-12-04
⏴ go to previous day
00:01:54 *** _aD has quit IRC (Remote host closed the connection)
00:11:35 *** tokai has quit IRC (Ping timeout: 480 seconds)
00:18:53 *** ChanServ sets mode: +v tokai
00:38:34 *** esselfe has quit IRC (Read error: No route to host)
00:41:07 *** esselfe has joined #openttd
02:44:10 *** WormnestAndroid has quit IRC (Remote host closed the connection)
02:45:07 *** WormnestAndroid has joined #openttd
03:15:11 *** Wormnest has quit IRC (Quit: Leaving)
03:35:20 *** debdog has quit IRC (Ping timeout: 480 seconds)
03:49:23 <DorpsGek> [OpenTTD/OpenTTD] a2aaron commented on pull request #9727: Feature #9059: Add buttons to toggle music in the Game Options menu. https://git.io/JM9LY
05:26:28 *** andythenorth has joined #openttd
05:32:16 * andythenorth wonders if it was 'sufficient' not 'adequate' :)
05:32:20 <Eddi|zuHause> guys, there's snow
05:34:34 *** andythenorth has quit IRC (Quit: andythenorth)
05:37:42 <Eddi|zuHause> i think i broke him
05:45:17 *** _aD has quit IRC (Ping timeout: 480 seconds)
05:54:17 *** andythenorth has joined #openttd
06:00:43 *** andythenorth has quit IRC (Quit: andythenorth)
08:07:12 *** sla_ro|master has joined #openttd
09:24:30 *** Wolf01 is now known as Guest7529
09:28:28 *** Speedy` has joined #openttd
09:30:30 *** Guest7529 has quit IRC (Ping timeout: 480 seconds)
09:40:42 *** roadt__ has quit IRC (Read error: No route to host)
09:53:28 *** andythenorth has joined #openttd
10:04:56 *** andythenorth has quit IRC (Ping timeout: 480 seconds)
10:33:14 *** J0anJosep has joined #openttd
10:44:51 <TrueBrain> michi_cc: when we are at this, is ::Post really a good name?
10:45:04 <TrueBrain> DoCommand vs DoCommandP always confused people already
10:55:14 <TrueBrain> ugh, I tried to review that PR, but I don't understand 90% of the magic :D Lol :)
10:58:19 <TrueBrain> in other words: it could have been worse :P
10:58:45 <TrueBrain> its all magic to me :)
10:59:14 <michi_cc> There is a lot of magic you can do with if constexpr and parameter pack expansion (...).
10:59:36 <TrueBrain> its insane; and this PR is huge. Which both are a compliment to you :)
11:00:28 <michi_cc> E.g. "(ClientIdIsSet(std::get<Tindices>(values)) && ...)" expands to "ClientIdIsSet(std::get<1>(values)) && ClientIdIsSet(std::get<2>(values)) && ......." for exactly as many elements as values has. And it even is completely defined for a values with zero elements (false).
11:01:21 <TrueBrain> how does it know whether you want && or || ? :)
11:02:30 <michi_cc> Because you write the operator you want :)
11:02:53 <TrueBrain> owh, so the "&& ..." is the syntax
11:02:57 <TrueBrain> not you cutting off the line?
11:03:11 <TrueBrain> lol ... that is one odd syntax
11:03:13 <TrueBrain> but if it works, it works :)
11:03:21 <TrueBrain> how do you figure out what you can do and what not ......
11:03:33 <michi_cc> You can even do stuff like "0 + ... + template", "... + template" or "template + ...", which will handle initial values, left-associative and right-associative operators.
11:05:55 <michi_cc> Most nifty is that it also works with the comma operator, so if you want to just call functions based on the parameter pack without doing anything with the result, just stick , in between :)
11:11:00 <michi_cc> Also, compilers have become really good a optimizing things, i.e. in https://godbolt.org/z/ja9Y7ane6 none of the templated tuple stuff, fold espressions or if constexpr survives, it literally is completely optimized out to two single static calls to CcCallback with fixed arguments.
11:12:08 <michi_cc> (If you ignore the million extra lines the MSVC assembly output contains and just skip directly to the end where main lives.)
11:14:41 <TrueBrain> I like that compiler got really clever, means we don't have to think so much about those things :)
11:16:08 <michi_cc> Some of that is not completely chance, e.g. std::tuple was explicitly designed for maximum compile time optimizations.
11:22:10 <peter1138> But, oh no! It takes so long to compile now!
11:22:26 <peter1138> How is it late morning already :/
11:22:58 <TrueBrain> I was wondering the same :P
11:23:19 *** J0anJosep has quit IRC (Quit: Konversation terminated!)
11:24:51 <TrueBrain> brr, I am compiling OpenTTD again .. that has been a while :P
11:31:57 <DorpsGek> [OpenTTD/OpenTTD] TrueBrain opened pull request #9729: Codechange: ensure OnConnect() always gets called with a valid socket https://git.io/JMH0F
11:35:11 <TrueBrain> so are we going to self-promote on Steam?
11:35:51 <TrueBrain> or is the period already over? :P
11:37:53 <DorpsGek> [OpenTTD/appstore-data] TrueBrain commented on pull request #9: Add: Announcement for 2021 Steam Award nominations https://git.io/JMHE7
11:37:56 <DorpsGek> [OpenTTD/appstore-data] TrueBrain closed pull request #9: Add: Announcement for 2021 Steam Award nominations https://git.io/JMaQa
11:40:12 <TrueBrain> hmm, #9728 was using a release, so asserts were disabled .. so even the ones that did exist might not have triggered. Well, let's hope he tries my PR :)
11:42:43 *** HerzogDeXtEr has joined #openttd
11:47:03 *** frosch123 has joined #openttd
11:49:14 <TrueBrain> and indeed, the problem is in a totally different place :D
12:08:27 <TrueBrain> you can't convert a PR to an issue, lol
12:17:33 <DorpsGek> [OpenTTD/OpenTTD] TrueBrain commented on issue #9730: [Bug]: [FreeBSD] crash on opening Multiplayer https://git.io/JMHrz
12:19:24 <TrueBrain> lol, seems the happy eyeball thing is kicking us in the nuts when timing is just a bit bad :P
12:21:11 *** jottyfan has joined #openttd
12:26:49 *** andythenorth has joined #openttd
12:42:25 *** Alkel_U3 has quit IRC (Quit: maintenance)
12:46:22 *** Alkel_U3 has joined #openttd
12:47:09 <TrueBrain> lol .... now that is just rude :P ("I am not going to test if anything you did actually fixed my issue")
12:47:35 <DorpsGek> [OpenTTD/OpenTTD] nielsmh commented on pull request #9727: Feature #9059: Add buttons to toggle music in the Game Options menu. https://git.io/JMHM9
12:48:32 <LordAro> TrueBrain: always run that risk by providing a workaround :p
12:48:44 <LordAro> a bit blunt though, for sure
12:48:58 <TrueBrain> it is not my workaround, it is his own "now we are leaking memory" one :D
12:49:56 <TrueBrain> reproducing this issue locally is insanely difficult :P
12:52:47 <TrueBrain> I want "for {} else {}" in C++!
12:52:50 *** jottyfan has joined #openttd
12:56:57 <nielsm> the thing with "for ... else" is that the "else" part could do two different things logically: it could be a block that runs if the loop executes zero iterations, or it could be a block that executes if the loop runs to end without a "break" or "return" statement terminating it
12:57:47 <nielsm> although I guess the latter option is the more useful of the two
12:59:13 <TrueBrain> that is what Python does
13:00:01 <TrueBrain> hmm, response in #9730 is a bit funny, as they says they doesn't want to remove the entry from the config, but I doubt they can connect to it currently .. our code really fucks you over in those cases :D
13:02:19 <TrueBrain> the issue is annoying .... it is really difficult to see if a socket is connected, it seems :P
13:07:33 <TrueBrain> connections that are not open return "true" for a select() on write
13:07:39 <TrueBrain> which is .. not what it should be doing? Lol
13:14:38 <TrueBrain> ah, select() on a socket that is in a bad state causes all sockets to be reported in a weird state ... so my way of debugging this was influencing the results
13:21:19 <nielsm> michi_cc: another verb for executing/posting a command could be Invoke
13:23:08 <TrueBrain> Invoke, not a bad suggestion either :)
13:23:21 <TrueBrain> hmm .. commit message .. this is a hard one to put in one line :D
13:30:03 <frosch123> i like "post" because it matches the C++2x executor terminology: dispatch, defer, post,
13:31:25 <TrueBrain> but what does it mean, "post" .. even in the C++2x context?
13:32:08 <nielsm> it means "send the request and continue executing"
13:32:34 <nielsm> posting a message: putting it in the mailbox and go on with your own things, while waiting for a response
13:33:09 <DorpsGek> [OpenTTD/OpenTTD] TrueBrain opened pull request #9731: Fix: [Network] bad timing can cause invalid socket to be used for server connections https://git.io/JMHbZ
13:33:44 <TrueBrain> ah, mailbox concept. Feels odd to consider the DoCommand similar :)
13:34:06 <TrueBrain> anyway, especially the InternalPostPre function triggered me :P It makes you scratch your head too much :)
13:34:08 <nielsm> if you consider it in the client-server context it makes sense
13:34:28 <nielsm> since you need to send the command to the server to get a definitive result from it
13:35:18 <TrueBrain> right, spend most time of #9731 actually reproducing the issue .. but after that, it was easy to solve :P
13:35:39 <michi_cc> Yeah, in a networking context, Post will indeed not to anything right away, but only when the command comes back from the server next tick.
13:36:03 <nielsm> (in Win32 programming you have SendMessage() and PostMessage() to deliver window messages to another window: SendMessage() blocks execution and returns the WndProc result to the caller, while PostMessage() shunts the message out and has the result discarded)
13:37:58 <TrueBrain> aren't we in between Send and Post in this example? Not that it matters :D
13:40:04 <TrueBrain> yeah, we run some checks on it, return false if it failed. If everything is fine, we queue it for networking
13:40:16 <frosch123> "post" is non-blocking, "dispatch" is blocking. so "DoCommandP" is a "post", while "DoCommand without P" is a "dispatch"
13:40:34 <TrueBrain> Post isn't pure non-blocking, but I get what you mean :)
13:40:39 <TrueBrain> we have a weird hybrid :P
13:41:24 <frosch123> oh, right, in that case "defer"... i never used that, but it means "executor decides whether blocking/non-blocking"..
13:41:35 <frosch123> i hate it though :p
13:41:44 <TrueBrain> smells like Javascript :P
13:43:29 <TrueBrain> there are some more "p2" comments in that file michi_cc :P
13:43:35 <TrueBrain> but now we are so nitpicking
13:45:38 <frosch123> nitpicking is great for postponing reading the template magic :)
13:45:49 <TrueBrain> I really tried, and I really cannot
13:45:57 <TrueBrain> was tempted to just approve it, honestly :P
13:46:14 <TrueBrain> InternalExecuteValidateTestPrepExec
13:46:17 <TrueBrain> that function-name :P
13:46:23 <TrueBrain> TestPropExec ... wuth? :D
13:47:02 <frosch123> i did not yet get that far, i barely started :p
13:47:56 <TrueBrain> right, back to the Post talk; I do not mind ::Post, but I think we should look at functionnames like InternalDoPost and InternalPostPre
13:48:04 <TrueBrain> as InternalDoPost, is the Post of the ::Do
13:48:21 <TrueBrain> and it becomes rather annoying to keep those different meaning of "Post" separated :P
13:48:47 <TrueBrain> InternalDoAfter and InternalPostBefore
13:48:59 <TrueBrain> would solve that problem for me completely :)
13:54:14 <TrueBrain> where is glx .. #9722 needs some more readable backtrace :P
13:56:35 <michi_cc> TrueBrain: Are you looking by commit or at the total result, because in the final version there is only that p2 comment.
13:56:53 <TrueBrain> I am only looks at the final result, and a bit lower was another one
13:57:17 <michi_cc> Hmm, Ctrl-F disagrees.
13:58:10 <TrueBrain> pretty sure your CTRL+F is broken ;)
14:02:09 <TrueBrain> its in the same file! :P
14:02:42 <TrueBrain> and in case it wasn't clear yet michi_cc , I really like what you did in that PR :)
14:03:00 <michi_cc> So, DoCommand<>::XX or Command<>::XX ?
14:03:55 <TrueBrain> latter .. "Do" has no more meaning, in my opinion
14:10:30 <michi_cc> TrueBrain: InternalExecuteValidateTestPrepExec (which describes more exact what it does), or just InternalExecuteAfterTest?
14:11:21 <TrueBrain> mainly my head went: Prep .. Preparation? Exec .. Execute? So InternalExecuteValidateTestPreparationExecute? :D
14:11:38 <michi_cc> Yes, that would be the fully expanded function name :)
14:11:45 <TrueBrain> and that made me giggle :P
14:11:56 <TrueBrain> maybe adding a doxygen comment what it does is more than enough
14:12:06 <glx> oh right 9722, I forgot to open it on PC after seeing it on mobile
14:12:10 <michi_cc> But it exactly describes what it does, validate the test run and prepare for real execution.
14:12:21 <TrueBrain> okay, that part I did not guess :)
14:12:39 <TrueBrain> ValidateTextAndPrepExecute might work better?
14:12:48 <TrueBrain> dunno :) There was no doxygen, so I was just left giggling honestly :)
14:13:03 <TrueBrain> sometimes I am just a child
14:13:21 <TrueBrain> (I thought it was validating and testing the prepare to execute :P)
14:14:41 <TrueBrain> I btw like how you solved networking .. pretty slick
14:14:46 <michi_cc> Technically, I could have inlined the contents of all the Internal... functions into the calling functions, but I didn't want to lift (and include all corresponding headers) too many internals into the templated functions in the header.
14:15:43 <michi_cc> Yeah, endian_buffer.hpp is another one of those nifty templated thingies :)
14:17:04 <glx> and of course asserts are disabled
14:17:07 <TrueBrain> still annoyed our network protocol is LE .. but not something we will be fixing any time soon :P
14:17:40 <glx> but how it's possible to not have main toolbar ???
14:17:41 <TrueBrain> glx: guess he pressed a hotkey during terrain generation?
14:19:03 <glx> indeed 'A' has been pressed :)
14:19:40 <glx> so autorail tool, and all the related windows update
14:20:59 <TrueBrain> funny if that actually crashes the game ... as nobody noticed that before? :P
14:22:46 <glx> and indeed another thread is generating the world
14:23:19 * glx wants to try to reproduce now :)
14:28:41 <glx> even with the key "stuck" while generating
14:29:29 <TrueBrain> can't reproduce it either :(
14:31:19 <michi_cc> Okay, finally poll: Command<>::Post, Command<>::Execute, Command<>::InvokeWitchcraft or something else?
14:35:41 <michi_cc> Okay, a fully unambiguous result I see.
14:36:27 *** supermop_Home has joined #openttd
14:36:59 <michi_cc> TrueBrain: BTW, is the command network packet change anything that has to be reflected in the TURN relay, or is it transparent on that level?
14:37:18 <TrueBrain> TURN only validates it is a valid OpenTTD packet
14:38:12 <glx> ok attached game thread callstack too
14:53:10 *** jottyfan has joined #openttd
15:04:18 <DorpsGek> [OpenTTD/OpenTTD] 2TallTyler commented on pull request #9727: Feature #9059: Add buttons to toggle music in the Game Options menu. https://git.io/JMQ3q
15:13:49 <michi_cc> Okay, I'm AFK until later, please discuss Command<>::Post until then :p
15:23:12 <TrueBrain> guess if we follow frosch123 's C++2x addiction, it should be Command::Dispatch for DoCommand and Command::Post for DoCommandP, not? :)
15:28:08 <michi_cc> I like ::Do though, as it always was DoCommand.
15:33:01 <Rubidium> oh darn... what did I cause? ;)
15:48:51 <TrueBrain> Nah, this one is on me .. couldn't handle the InternalPostPre :p
15:49:47 <Rubidium> following the style of the C++ specification would probably be favorable... though it's not yet part of the official specs as far as I can see... So, they could change the spec to suit the style that is chosen by us, right? ;)
15:52:11 <frosch123> they blatantly copied from boost::asio :p
16:29:10 *** sla_ro|master has quit IRC ()
16:37:26 *** Wormnest has joined #openttd
16:43:02 <dP> michi_cc, did you completely obliterate CommandContainer in #9725 ?
16:43:16 <dP> for all the stuff I do with commands I found container-baised api the most useful
16:44:54 <dP> as it allows to separate game state logic and technicalities of command invocation
16:48:58 <frosch123> there is still the network package. there is no struct with fixed members p1, p2,... that's the whole point of the PR, right?
16:50:46 <dP> it doesn't have to be a single struct :p
17:00:09 <frosch123> there are plenty of template instantiations, i guess those are the "structs" you are looking for
17:28:12 <DorpsGek> [OpenTTD/OpenTTD] frosch123 approved pull request #9729: Codechange: ensure OnConnect() always gets called with a valid socket https://git.io/JMQM2
17:32:11 <DorpsGek> [OpenTTD/OpenTTD] TrueBrain merged pull request #9729: Codechange: ensure OnConnect() always gets called with a valid socket https://git.io/JMH0F
17:34:24 <DorpsGek> [OpenTTD/OpenTTD] frosch123 commented on pull request #9731: Fix: [Network] bad timing can cause invalid socket to be used for server connections https://git.io/JMQD5
17:35:17 <DorpsGek> [OpenTTD/OpenTTD] TrueBrain commented on pull request #9731: Fix: [Network] bad timing can cause invalid socket to be used for server connections https://git.io/JMQyf
17:38:27 <DorpsGek> [OpenTTD/OpenTTD] frosch123 commented on pull request #9731: Fix: [Network] bad timing can cause invalid socket to be used for server connections https://git.io/JMQyr
17:38:37 <DorpsGek> [OpenTTD/OpenTTD] frosch123 approved pull request #9731: Fix: [Network] bad timing can cause invalid socket to be used for server connections https://git.io/JMQyX
17:40:10 <TrueBrain> it is just annoyed there is no sane way to check if a socket is connected ...
17:40:26 <TrueBrain> depending on this "if it was EINPROGRESS and now writable and no error, it is connected"
17:41:32 <TrueBrain> but you do have a good point frosch123 , it also checks for errors on sockets that do not have their writefd set .. which strictly seen can mean because of some race this is still not doing what it should be doing
17:45:30 <frosch123> do you want to add a test whether the bit is set?
17:45:59 <TrueBrain> no, but I also don't want to depend on n .. let me try something
17:46:59 <frosch123> the loop after the "if (n==0)" checks write_fd, so maybe some "for(..) else {}" there :p
17:47:31 <TrueBrain> I now merged the "connected_socket" part with the error loop
17:47:36 <TrueBrain> that seems to look more solid
17:50:23 <DorpsGek> [OpenTTD/OpenTTD] TrueBrain dismissed a review for pull request #9731: Fix: [Network] bad timing can cause invalid socket to be used for server connections https://git.io/JMQyX
17:50:26 <DorpsGek> [OpenTTD/OpenTTD] TrueBrain updated pull request #9731: Fix: [Network] bad timing can cause invalid socket to be used for server connections https://git.io/JMHbZ
17:50:31 <TrueBrain> I think this is more readable
17:51:38 <TrueBrain> well, the diff isn't :D
17:54:14 <DorpsGek> [OpenTTD/OpenTTD] TrueBrain updated pull request #9731: Fix: [Network] bad timing can cause invalid socket to be used for server connections https://git.io/JMHbZ
17:54:31 <TrueBrain> the longer I look at code, the more I start to change coding style .. I shouldn't be doing that :D
17:58:51 <TrueBrain> hard to emulate all kind of weird network setups :D
18:06:41 <nielsm> TrueBrain: I'd suggest changing the title of #9731 to "race condition" instead :)
18:07:23 <TrueBrain> well, honestly, it is just poor coding
18:07:27 <TrueBrain> but that is hard to write in a commit message :P
18:08:23 <TrueBrain> "race condition causes connection to use an invalid socket"
18:08:29 <TrueBrain> still a shitty commit message, but what can you do :P
18:08:58 <frosch123> Fix: TrueLight should have used a better DHCP server."
18:10:30 *** Flygon has quit IRC (Quit: A toaster's basically a soldering iron designed to toast bread)
18:10:58 <nielsm> Fix: connect failure due to race condition \n\n When an IPv6 connection takes longer to report an error than timeout on IPv4 connection, a socket variable may be set to an invalid value.
18:11:24 <TrueBrain> your subtext is not what is going on, but yeah, that works
18:11:31 <TrueBrain> well, it is not a connect failure
18:11:34 <TrueBrain> just random shit starts to happen :P
18:11:53 <TrueBrain> as surprisingly a lot accepts -1 as socket-id
18:13:22 <TrueBrain> the response time of connection to IP1 is > 250ms < (250ms+response time of connection to IP2)
18:18:14 <TrueBrain> I now realise it is only really an issue in this case because the IPv4 connection also fails .. lol. Such an exceptional case in so many ways :D
18:18:51 <TrueBrain> all this "fix shit because IPv6 sucks" :P
18:19:21 <frosch123> Add: support for TrueIP
18:19:34 <frosch123> it's just too easy :p
18:19:36 <TrueBrain> ha, that would suck even harder :D
18:19:59 <TrueBrain> mostly I am nitpicking this PR to death as I want to work on TrueGRF, but am kinda stuck on how to do tile editing :D
18:27:19 *** sla_ro|master has joined #openttd
18:38:08 <TrueBrain> guess I should give it a rest and look at cargo ..
18:38:53 <TrueBrain> "The industry can be exploded by a military airplane (oil refinery) " <- wait, this is a thing?!
18:41:08 <TrueBrain> never ever witnessed it
18:41:11 <frosch123> one of the pointless ones, which are only visuals and don't change anything
18:41:14 <TrueBrain> but .. doubt I ever really played with disasters on :P
18:41:21 <TrueBrain> ah, well, that would also explain :D
18:41:38 <nielsm> is it really only visual? I thought it prevented production for 1 month
18:41:46 <frosch123> the industry's construction state is reset, so the build animation restarts. but it does not even stop production
18:41:58 <TrueBrain> sounds like a bug :P
18:42:21 <frosch123> nielsm: ok, i don't think i ever fact-checked it :)
18:43:28 <TrueBrain> the amount of time spend on those gimmicks ....... :D
18:44:25 <frosch123> the most weird one is the coal-mine-collapse
18:44:42 <frosch123> it terraforms and destroy trees, but does not destroy infrastructure
18:45:12 <TrueBrain> mine collapse I do know ..
18:45:18 <frosch123> i mean, sure, ufos destroying vehicles and rail tracks are annoying, but a disaster not destroying anything is even more stupid
18:45:22 <TrueBrain> but military stuff .. nope :P
18:48:31 <TrueBrain> lol, NewGRF Cargo with its "one unit" vs "multiple units"
18:48:36 <TrueBrain> so cute, thinking that covers all languages :D
18:48:55 <frosch123> i think you can skip those strings
18:50:13 <TrueBrain> "since 1 ton of gold ore should weigh exactly 1 ton" .. "should"... yes, 1kg of feathers is equal in weight to 1kg of lead
18:50:14 <frosch123> though didn't our lord change the subsidy new message just last month?
18:50:58 <frosch123> TrueBrain: sounds like mars newgrf :p
18:51:24 <TrueBrain> you expect on mars for kg to work differently? :P
18:51:51 *** sla_ro|master has quit IRC ()
18:52:31 <frosch123> depends whether your scale has a earth/mars switch
18:52:48 <TrueBrain> compare earth kg with mars kg? This is getting stranger and stranger :D
18:53:31 <frosch123> if you train a bit, you could probably lift 1 ton of gold on mars, while you probably can't on earth
18:53:54 <TrueBrain> that doesn't change that a kg of feathers is exactly the same weight as 1kg of lead :)
18:54:15 <frosch123> noone questioned that :)
18:54:37 <TrueBrain> the NewGRF specs allow this holding not-true! :P
18:54:49 <frosch123> but be careful if someone wants to sell you 1 ton of gold on mars using the earth price and an earth scale
18:55:07 <TrueBrain> how I would love to be fooled by that .. just for the fact I am on Mars :)
18:55:37 <TrueBrain> okay, I can safely say I do not understand most of the cargo properties
18:55:56 <frosch123> try with checking which one ottd acutally uses :p
18:56:59 * Rubidium hads tons of homework... but alas... all combined it never weighed more than 100 kg
18:57:20 <frosch123> 1B and 1C deprecates some of the older strings
18:57:47 <frosch123> Rubidium: did you check? paper weights a lot
18:58:33 <TrueBrain> so you can define your own profit callback .. but cargo has no properties .. hmm ..
18:59:26 <frosch123> oh dear, please do not restart the profit cb discussion again :)
18:59:26 <TrueBrain> owh, all encoded in the callback itself
18:59:50 <TrueBrain> hard to restart anything I am oblivious to :P
19:01:46 <frosch123> cargospec is funny, it feels like half of it is deprecated, only needed to support 10+ year old grfs
19:01:55 <frosch123> which probably do not work anyway
19:01:56 <Rubidium> frosch123: don't really need to weigh it; it was only one subject I had a lot of homework for, the rest was already done during class... well until I went to university, but then almost everything was digital and electrons do not weigh that much
19:02:01 <TrueBrain> also makes it really hard to figure out what to implement :P
19:02:59 <frosch123> TrueBrain: andy auto-generates cargo-colors using some color-distance metric :p
19:03:17 <TrueBrain> based on a script you made, not? :P
19:03:21 <TrueBrain> he tends to bring it up .. a lot
19:03:40 <frosch123> i hoped you were oblivious to that :p
19:04:51 <TrueBrain> so okay ... lets see .. what action0 thingies do I understand from Cargo ... 09 .. 0e .. 0f ... 13, 14 .. 17-ish .. 1a .. rest is ... wtf :P
19:05:53 <frosch123> 08 is deprecated, but must be set, usually it is set to the same value as the action3id / item-id / whatever you call that
19:06:10 <frosch123> 09-0D no idea which are used, and which are depreacted by 1B and 1C
19:06:23 <frosch123> 0E deprecated, use action123 instead
19:06:37 <TrueBrain> yeah, set 0e to 0xffff basically
19:07:08 <frosch123> 16-17: most important of them all
19:07:25 <TrueBrain> "and slots 12-31 contain uninitialized garbage by default (so you can't trust them having meaningful information, you must set all of their properties). " <- this is just bullshit btw :P
19:07:28 <frosch123> rest is boring prices and stuff
19:07:36 <TrueBrain> at least for industries etc you can copy an existing to get some known good values :)
19:07:45 <TrueBrain> I did not understand 16 at all
19:07:52 <TrueBrain> just a big blob of what-ever :)
19:08:15 <frosch123> 16 describes the cargotype, so that vehicles can decide whether they can carry it
19:08:46 <TrueBrain> mostly, I do not understand "usage" and the "tips" parts
19:08:55 <frosch123> tankers transport liquid cargo, open wagons transport bulk cargo, ....
19:10:19 <TrueBrain> feels like that text doesn't belong there :D
19:10:36 <frosch123> TrueBrain: cargo classes are used in the cargotype to define the cargo, and they are used in the vehicle to define refittablity. the "vehicle tips" is "how to use this for vehicles", the "industry tips" is "how to use this in the cargo definition"
19:12:13 <frosch123> for cargo-defintions it boils down to: you have a combobox/radiogroup which picks exactly one of pax, mail, bulk, piece, liquid. and then some checkboxes for the other optional parts, which may each be disabled for some of the combobox-selections
19:12:40 <frosch123> "usage" column is also for vehicles only
19:13:02 <TrueBrain> hmm .. so should I read this as part of the vehicle specs that just happen to be on the cargo spec page?
19:13:10 <TrueBrain> I really don't understand what it is trying to tell me :D
19:13:32 <frosch123> cargos say which type they are, vehicles say which type they like or dislike
19:13:42 <TrueBrain> like .. I make a new cargo .. and I set "Not Pourable ".. what do the tips help me?
19:13:49 <TrueBrain> what are they trying to tell me?
19:14:21 <frosch123> the "industry tips" columns tells you, "'not pourable' may only be set for 'bulk'"
19:15:02 <frosch123> 'bulk' is a selection in the combobox/radiogroup, 'non pourable' is a checkbox which is disabled for non-bulk
19:15:17 <TrueBrain> okay, so if I just ignore "usage" and "vehicle tips" I will be fine :)
19:15:47 <TrueBrain> these specs .... :P
19:16:29 <TrueBrain> Liquid can also be combined with Bulk, hmm
19:16:37 <frosch123> oh, "armored" is also one of the primary types like "mail"
19:17:12 <TrueBrain> I guess the Refrigerated "also set" is also "combine with", but just worded differently?
19:17:56 <frosch123> "dyes" are listed as "piece goods + liquid"
19:18:27 <frosch123> but imho that is BS :) i would put "liquid" and "piece goods" into the radiogroup, so never set both
19:18:49 <TrueBrain> tnx, I think I understand 16
19:19:18 <TrueBrain> 10/11/12 or callback 39 are just ... gibberish
19:19:58 <frosch123> you could reimplement the in-game cargo-payment chart for previewing their effect
19:20:18 <TrueBrain> I wonder to either implement 10/11/12 or 39, but not both
19:20:48 <TrueBrain> how do charts plot for cb39? Does it check every value for a range or something?
19:21:43 <frosch123> iirc there are 3 inputs to that callback, the chart fixes 2 and sweeps the 3rd on the X axis
19:22:07 <TrueBrain> okay, 10/11/12 seems easiest to implement for now
19:22:11 <TrueBrain> cb39 can be done when-ever
19:22:46 <TrueBrain> always a bit of the question what is easier .. make it freeform from the start, or use the constrained version first :)
19:22:55 <andythenorth> I looked away for a few minutes
19:22:56 <frosch123> so, it's rarely used
19:23:04 <andythenorth> and TrueBrain decided to explore cargo classes :(
19:23:11 <TrueBrain> frosch123: tnx, that settles it for now :)
19:23:18 <andythenorth> if I had been here earlier I would have tried to derail this with lolz
19:23:22 <andythenorth> or discussions about programming
19:23:30 <TrueBrain> cargo ids are global I assume, in contrast to the rest I have been fiddling with?
19:23:47 <frosch123> what is a "cargo id"?
19:24:00 <frosch123> "cargo label" is the important thing
19:24:04 <TrueBrain> I was using the wrong lingo :P
19:24:07 <frosch123> cargo slots do not matter
19:24:23 <TrueBrain> so they are per GRF too?
19:24:38 <andythenorth> cargo ids only matter when you accidentally shoot yourself with them
19:24:44 <frosch123> unfortunately "not yet"
19:24:54 <TrueBrain> so they do matter then, not? :D
19:25:02 <frosch123> as in: they are not per grf, they should be, but noone bothered in 10 years
19:25:18 <TrueBrain> so if 2 GRFs define cargo slot 15, they overwrite their cargo?
19:25:27 <TrueBrain> latest that loads wins or something?
19:25:32 <frosch123> TrueBrain: let's say, slot 0+2 are pax+mail, never ever touch them
19:26:01 <frosch123> there are headaches with goods+food because default houses accept them
19:26:11 <frosch123> the other slots use sequentially
19:26:18 <TrueBrain> I only try to figure out if I can just start at 0x12
19:26:31 <TrueBrain> or that I will clash with other NewGRFs and have to do something weird or what-ever
19:26:34 <TrueBrain> or make it configurable
19:26:40 <TrueBrain> so you can co-exist with another NewGRF you like
19:26:51 <frosch123> avoid using slot 31, weird vehicle grf use them for magic regearing cargos, but never start a discussion about that :)
19:27:32 <andythenorth> and avoid anything that vehicle grfs have used for livery refits
19:27:38 <frosch123> start at slot 32+ for now :p
19:27:50 <TrueBrain> as if I understand this correctly, IndustryIDs are mine, and I don't need to care about anything else
19:28:00 <TrueBrain> but for cargo this seems to be different, at least, the text suggests that (but doesn't say it)
19:28:45 <andythenorth> it's a tragedy of the commons
19:28:48 <andythenorth> but it mostly works
19:28:58 <frosch123> yes, cargos are technically global, but noone wants them to be global, so there are a lot of places where the global-id does not matter, but there are still a few where it matter, mostly default houses
19:29:01 <andythenorth> the problems are social not technical, except for houses
19:29:24 <TrueBrain> frosch123: ah; and if 2 NewGRF use the same ID, does that give any issuie?
19:29:33 <TrueBrain> and what if 2 GRFs define the same cargo label?
19:29:43 <frosch123> yes, the rule is "only use one cargo newgrf at once" :)
19:29:56 <TrueBrain> and I guess mostly cargos are defined by industry grfs?
19:29:57 <frosch123> that's why FIRS checks for 60+ conflicting newgrf
19:30:25 <andythenorth> is it that many :o
19:30:43 <frosch123> yes, cargos are supposed to be defined by industry newgrf only, with the exception of the highly-political "regearing" cargo :)
19:31:04 <andythenorth> regearing isn't political, pikka said it's stupid and removed it :)
19:31:24 <frosch123> andythenorth: my bad, only 56 :)
19:31:26 <TrueBrain> the more I think about it, the more I think I will make TrueGRF generate a GRF for each domain .. so when you add industries and vehicles in it, it creates 2 GRFs which depend on each othe ror something
19:31:57 <TrueBrain> but okay, long-term issues
19:31:58 *** supermop_Home has quit IRC (Ping timeout: 480 seconds)
19:32:09 <TrueBrain> right, that only leaves me puzzled wtf 08 is about ...
19:32:29 <TrueBrain> "Values 1C-1F should be safe to use (if they aren't already taken, of course) "
19:32:33 <TrueBrain> like, what do I do with this information?
19:33:22 <frosch123> 08 is deprecated, make it unique, but the value does not matter
19:33:51 <TrueBrain> I wonder how many people would get butt-hurt if we just make a NewGRF spec for OpenTTD 12+
19:33:53 <TrueBrain> and remove EVERYTHING ELSE
19:34:17 <TrueBrain> 08 - deprecated - set to cargo slot ID
19:34:42 <TrueBrain> but okay, I only need to understand it once .. so .. there is no real added value to me :P
19:34:56 <andythenorth> but would you bump the version?
19:35:01 <LordAro> andythenorth: what happened to TrueBrains 2 through 6?
19:35:02 <andythenorth> otherwise...savegames :(
19:35:13 <andythenorth> I hate the savegame guarantee
19:35:19 <andythenorth> it means we can never clean out the grf spec
19:35:36 <andythenorth> 'hate' is a strong word
19:35:44 <TrueBrain> okay, tnx frosch123 , I think I know enough to implement new cargos .. now to actually do it :D
19:36:04 <andythenorth> implement TRUE and BRNZ
19:36:31 <andythenorth> I can't remember, but my test cargos might have been CATS and LOL_
19:37:52 <TrueBrain> well, 1D is still a mystery to me, but I already decided to completely ignore it :P
19:39:36 <TrueBrain> "Used by andythenorth to identify default cargo graphics in newgrfs that use code/graphics generation. " <- if you made it in the specs ......
19:40:36 <frosch123> i bet he got a bug report about using an undocumented label :p
19:40:54 <TrueBrain> hmm .. can you make a cargo climate depending?
19:41:26 <frosch123> you can make everything climate depending
19:42:04 <frosch123> but i don't understand the climate fuzz
19:42:19 <TrueBrain> the reason I ask, is because I was planning on showing the default cargos
19:42:20 <frosch123> industries and climates should be orthogonal
19:42:21 <TrueBrain> so you can disable them
19:42:27 <TrueBrain> but .. the default ones are climate depending :P
19:43:15 <frosch123> don't show the default cargos :) just disable all
19:43:32 <TrueBrain> that doesn't work, as that would mean all the default industries also don't work :)
19:43:52 <frosch123> and every firs version adds 20 more
19:44:26 <TrueBrain> my current idea is that when you start TrueGRF, you start with the default stuff, where you can start altering from
19:44:35 <frosch123> TrueBrain: i guess that is something you have to decide early: either only allow defining new stuff, or only allow modifying original stuff
19:44:50 <andythenorth> oh dear did I do a thing?:|
19:44:53 <TrueBrain> well, the latter minus the "only" part :P
19:45:38 <frosch123> then you get the full glory of TTD mess :p it's way worse than any cargospec-deprecations
19:45:49 <TrueBrain> like offsets with sprites :D
19:46:41 <frosch123> right, wasn't the idea to just supply firs sprites to pick from?
19:46:50 <frosch123> so also supply firs cargos to pick from :p
19:47:04 <TrueBrain> haha, no, but it is easy to test things with for sure
19:47:23 <DorpsGek> [OpenTTD/OpenTTD] RealDeuce commented on pull request #9731: Fix: [Network] connections can use an invalid socket due to a race condition https://git.io/JM7mL
19:47:56 <TrueBrain> how nice of him he did test it after all :D Now I just need an approval! :P
19:48:11 <TrueBrain> I was doing so well :P
19:48:52 <TrueBrain> anyway, I see two scenarios: someone wants to make minor modification to the original game to scratch some itch .. like having all tiles of industries accept cargo
19:48:58 <TrueBrain> well, three scenarios
19:49:06 <TrueBrain> someone who wants to alter FIRS (or any other big industry set)
19:49:12 <TrueBrain> and someone who wants to start from scratch
19:49:18 <TrueBrain> the last two are easy
19:49:26 <TrueBrain> the first is a bit difficult, as their graphics come from basesets
19:49:54 <TrueBrain> initially I wanted to make a "default" template, which was just like FIRS, but for all default industries (so hide all default stuff, but add industries that are identical)
19:50:04 <frosch123> lol, how did you arrive at "alter FIRS is easy"
19:50:06 <TrueBrain> just .. that means the graphics will be OpenGFX's :P
19:50:27 <TrueBrain> from a TrueGRF perspective, altering an existing set vs creating from scratch are easy
19:50:41 <TrueBrain> they are nearly indentical
19:51:43 <TrueBrain> well, guess I can still do the default template stuff .. just sprites will be somewhat difficult
19:51:51 <TrueBrain> rest is just a matter of adding the correct numbers, give or take
19:53:55 <frosch123> TrueBrain: your PR drops TryNextAddress and OnFailure calls, are they not important?
19:54:16 *** WormnestAndroid has quit IRC (Remote host closed the connection)
19:54:27 *** WormnestAndroid has joined #openttd
19:54:33 <TrueBrain> I wrote that in the description. It is already done a bit earlier in that function. So now all that happens is that it returns, and on next CheckActivity it does that exact same code again
19:54:35 *** WormnestAndroid has quit IRC (Remote host closed the connection)
19:54:57 <TrueBrain> I am sure it was important when I wrote it, but I cannot find a logic reason for the code duplication anymore :P
19:54:57 *** WormnestAndroid has joined #openttd
19:55:01 <frosch123> yeah, just found that :)
19:55:28 <DorpsGek> [OpenTTD/OpenTTD] frosch123 approved pull request #9731: Fix: [Network] connections can use an invalid socket due to a race condition https://git.io/JM7YB
19:56:09 <DorpsGek> [OpenTTD/OpenTTD] TrueBrain merged pull request #9731: Fix: [Network] connections can use an invalid socket due to a race condition https://git.io/JMHbZ
19:56:49 <TrueBrain> no, I do want to keep default stuff around as long as I possibly can .. most likely I will fail that somewhere along the line, but it is what it is :P
19:57:32 <TrueBrain> always so difficult .. how opinionated is your tool going to be :D
20:20:11 <TrueBrain> okay .. I can at least disable cargoes ... now to figure out all this naming stuff :D
20:20:42 <TrueBrain> can you see somewhere in-game what label a cargo has?
20:22:34 <frosch123> oh, "dump_info cargotypes"
20:22:44 <TrueBrain> had to check source :D
20:23:24 <TrueBrain> right, label works too
20:24:11 <TrueBrain> andythenorth: what cargo does your chemical plant produce? Too lazy to look it up :P
20:25:12 <TrueBrain> looked it up already
20:25:34 <TrueBrain> weight="1.2", # extra realism, per forum suggestion Nov 2017
20:25:44 <glx> depends on FIRS version I guess
20:27:27 <frosch123> TrueBrain: nice, i like how "realism" defeated your earlier argument about tons=tons :)
20:27:51 <TrueBrain> I hope this converts "amount" to "weight"
20:27:56 <TrueBrain> but that might just be me hoping
20:28:25 <frosch123> if it's chemicals, it's probably m³->t
20:28:38 <TrueBrain> exactly, so argument still holds ;)
20:28:41 <frosch123> though, it should be < 1 then?
20:29:02 <TrueBrain> right-y-o, I can also make new cargoes ...
20:29:35 <TrueBrain> far from complete, but the rest is doable by just putting my head on the keyboard
20:32:21 <TrueBrain> hmm .. I guess "support the default stuff" is only a problem for industries and cargos .. stations and vehicles don't have that issue, I guess
20:33:24 <TrueBrain> need to think about it some more, but I might just go the more opinionated route .. and indeed make that an industry GRF via TrueGRF disables all defaults
20:35:14 <frosch123> there is also a third option
20:35:48 <frosch123> you can add a checkbox to choose between "disable all original stuff" and "keep all original stuff", but avoid the "keep only some original" and "modify original"
20:36:14 <TrueBrain> yeah, the thing with modifying original is, that I do not plan to support "everything"
20:36:18 <TrueBrain> but just a "sane" subset
20:36:24 <TrueBrain> so modifying the original will just be weird
20:37:04 <frosch123> let's say, "original stuff" does not become better with vehicles and houses :)
20:37:20 <frosch123> actually, original stations are also awful :p
20:37:53 <frosch123> but there are not as many stations... while houses are endless exceptions :)
20:38:12 <andythenorth> something something molecular weight
20:38:24 <TrueBrain> yeah ... what might be a simple way out, at least for now, is to make each category in TrueGRF to either say: "use original", or "define your own". A bit what you mention .. but not any hybrid. So that you cannot add cargoes and have the original too
20:38:32 <glx> at least for stations it's easy to keep original ones
20:39:28 <TrueBrain> hmm, no, my idea will suck balls
20:39:57 <TrueBrain> show original entries read-only, with an enable/disable button for each .. and allow adding new ones
20:41:36 <TrueBrain> next is to link industries to cargoes, I guess :)
20:41:58 <TrueBrain> main shit about original cargoes is just that they are climate depending ...
20:42:32 <TrueBrain> that is why just not doing original cargoes so much easier :D
20:42:36 <frosch123> ogfx+industries redefine all original cargos
20:42:51 <frosch123> so they are all present
20:43:08 <glx> but source is still not available
20:43:09 <frosch123> it works well for temperate+arctic+tropic, but toyland is always weird in combination :)
20:43:24 <frosch123> glx: meh, i wanted to do that last year :)
20:43:39 <TrueBrain> 27 cargoes in OpenTTD
20:44:07 <TrueBrain> so yeah .. okay ... maybe I should do my shitty idea: per category you either define it or leave it alone
20:44:11 <TrueBrain> if you define it, you start from scratch
20:44:23 <TrueBrain> but I offer some templates that is either "default" bla, or FIRS bla, or ... bla
20:44:39 <TrueBrain> where the default bla just adds the 27 cargoes from OpenTTD
20:45:31 <frosch123> i think if you define cargos but do not use them in industries, they still show up for vehicles and other gui lists
20:46:05 <frosch123> so, maybe cargos are more like a "library of cargos", and you add them to your newgrf by using them in an industry
20:46:23 <TrueBrain> Chemicals is unused, but shows up in Industry Chains :)
20:47:12 <TrueBrain> the other thing I am really tempted to do, is to make a superset of cargoes of what we currently have, and basically say: select at most 64
20:47:24 <TrueBrain> so RFPR is always Chemicals :P
20:48:26 <frosch123> hmm, chemicals is not transportable by any vehicle
20:48:34 <frosch123> did you not set any cargoclasses?
20:49:04 <TrueBrain> need to think about the UX for that :D
20:49:34 <TrueBrain> such a choice .. do I go balls deep into the opinionated territory .. or do I stay as neutral as possible :D
20:49:58 <frosch123> i think opinionated is your only option
20:50:20 <frosch123> nml is already opinionated :p
20:50:33 <TrueBrain> well, I really mean: predefine a list of cargoes
20:50:39 <glx> nml just drop all useless specs ;)
20:50:39 <TrueBrain> with PRs you can request new ones :P
20:50:47 <TrueBrain> that form of opinionated :P
20:51:22 <frosch123> no, i would expect people to define cargos of their local economy
20:51:44 <frosch123> but truegrf should be opinionated about only defining meaningful cargoclass combinations
20:52:01 <TrueBrain> so opinionated about the specs, not the content
20:52:01 <frosch123> instead of "any bit combination"
20:52:04 <TrueBrain> yeah, that I was already doing ;)
20:52:47 <TrueBrain> just shit cargoes depend on climate, that makes this difficult :D
20:52:52 <frosch123> by adding guis and previews for everything, truegrf has to be opinionated about "how" to implement things
20:53:00 <frosch123> but not about "what"
20:54:51 <TrueBrain> guess I need to add support for action7/9 to keep this sensible ..
20:57:01 <TrueBrain> bit sad that the default stuff is driving that
20:59:25 <TrueBrain> frosch123: remind me, how should I define cargo acceptance for an industry?
21:00:29 <frosch123> industry property 25+26, tile property 12 bit 1
21:00:47 <frosch123> do not use the old industry properties or old tile acceptance properties :)
21:00:58 <frosch123> CTT = cargo translation table
21:01:21 <frosch123> every newgrf should have a CTT, that lists all cargos the newgrf knows about
21:01:32 <TrueBrain> happy it is a link :P
21:02:07 <TrueBrain> okay, so this links labels to numbers to use in all other places
21:02:59 <TrueBrain> refitting based on those ids instead of cargo classes .. yah or nah?
21:03:03 <frosch123> yes, the action0+3 ids of the cargos only matter for linking those action0+3. they are not used anywhere else
21:03:11 <TrueBrain> (in other words, can I get away with refitting soly based on classes?)
21:03:14 <frosch123> everything else uses "index into CTT"
21:04:19 <frosch123> now you are at vehicles suddenly :p
21:04:52 <TrueBrain> CTT only has 32 slots it says for refitting
21:04:59 <frosch123> for vehicles you always set the classes, and then add a short list of exceptions
21:04:59 <TrueBrain> so it advises to keep that in mind when defining it
21:05:13 <frosch123> haha, you are looking at deprecated stuff again :)
21:05:23 <TrueBrain> "Because the refit mask contains only 32 bits, only the first 32 entries in the translation table can make use of the refit mask."
21:05:28 <TrueBrain> NOTHING mentions any form of deprecation
21:05:53 <TrueBrain> these specs are just so annoying ... you simply don't know any truth it defines ..
21:05:56 <frosch123> the 32bit refit mask is deprecated :) don't use train property 1D, use properties 2C and 2D instead
21:06:28 <frosch123> TrueBrain: people stopped improving the specs, when nml solved stuff :)
21:06:46 <frosch123> though nml specs are also difficult in some places :) but not with deprecations
21:07:46 <TrueBrain> it is too bad I am not knowledgeable enough to make such edits .. I would only make it worse :D
21:08:23 <frosch123> problem with adding "deprecation" labels is, that "deprecation" is opinionated in some places :p
21:08:40 <frosch123> imagine andy tagging "regearing cargo" as "deprecated" :)
21:08:42 <TrueBrain> in this case I would say: if you plan to use prop 1D, be careful blablabla
21:09:08 <glx> nml just hide all this stuff
21:09:30 <TrueBrain> sadly I had 0 ways of using NML :)
21:09:51 <TrueBrain> well, honestly, it wouldn't have served the main goal: me understanding NewGRFs a bit more :)
21:11:14 <glx> haha understanding NewGRF
21:11:49 <TrueBrain> I did add: a bit more!!
21:13:21 <frosch123> hmm, I probably could tag things as "definitely deprecated" and "opinionated deprecated"...
21:14:25 <glx> and you are in an almost sane area of the specs
21:15:27 <andythenorth> I enjoy the spec
21:15:29 <andythenorth> it's like a game
21:16:54 <nielsm> yeah there's "this risks bugs" old features and then there's "you'll miss out on possibilities" old features
21:22:03 <andythenorth> I also enjoy that only a few parts are designed
21:22:07 <andythenorth> the rest just grew
21:22:13 <andythenorth> like crystals in a dish
21:22:53 <andythenorth> most APIs I've used there is a sense of somebody attempting to create a coherent artefact
21:23:09 <andythenorth> lots of grf was clearly 'yolo latest patch'
21:23:14 <frosch123> "designed" like mpeg and jpeg?
21:24:05 <frosch123> there was some rant about commitee design on HN recently
21:25:34 <TrueBrain> hmm, this climate based cargoes are just the worst, as it leaks through to industries ..
21:25:56 <TrueBrain> so for now, fuck default cargoes .. I am just going to force people (for now) to define their own cargoes :P
21:26:00 <frosch123> you can "test if cargo exists, define yourself otherwise"
21:27:34 <TrueBrain> all that is gold plating .. I first want to have something that does everything a bit, so I can see it is actually possible :)
21:27:48 <TrueBrain> so I have been trying so far really hard to not dive in too deep on one subject
21:27:52 <TrueBrain> and cargoes are ruining that! :P
21:29:29 <andythenorth> and leave all properties as 1
21:35:28 <TrueBrain> right, so back to that focus .. I am missing cargo classes and profits .. guess those two are important for any new cargo :D
21:36:21 <TrueBrain> rest can be added later
21:40:18 <TrueBrain> /* Bzzt: check if cl is just an index into the cargo table */
21:40:20 <frosch123> if you take a look at the table above, you will find that stuff like OIL_ and WOOD exist multiple times
21:40:38 <frosch123> there is some hack to resolve that, yes with that bzzt :)
21:41:11 <frosch123> i.e. while WOOD exists in both temperate and arctic, it has different prices nevertheless :)
21:41:24 <TrueBrain> okay, so the 4 is also OIL_
21:41:24 <frosch123> so yes, you are on the right route with "do not support original stuff" :p
21:41:27 <TrueBrain> just another OIL_ :P
21:44:24 <andythenorth> FIRS fucked around for ages with cunning schemes
21:44:32 <andythenorth> to reuse default cargos, or even industry tiles
21:44:46 <TrueBrain> there just isn't a sane way to put that in a useful GUI
21:46:45 <andythenorth> why am I playing tanks for 2 hours?
21:46:50 <andythenorth> instead of drawing some pixesl
21:48:11 *** gelignite has joined #openttd
21:48:32 <TrueBrain> right, tomorrow I will add classes, and I like the idea of showing a chart how profit is doing
21:49:05 <TrueBrain> guess adding what industries accept and produce is also simple from there ..
21:49:22 * andythenorth stops playing tanks
21:49:26 <TrueBrain> next indeed is to clean all default cargos/industries, and I can see if I can actually move a new cargo from 1 industry to another ..
21:49:31 <andythenorth> I want to join the productivity club
21:49:49 <TrueBrain> with that, I guess I show enough of TrueGRF to know it is a viable way of creating NewGRF
21:50:06 <TrueBrain> then the boring part starts .. reworking the GRF generator, cleaning up the code, and making it actually useful :D
21:50:21 <TrueBrain> well, no, I still need to figure out tile editing and sprite editing
21:52:05 <andythenorth> then you can take user feedback!
21:52:14 <andythenorth> forums are good for that :)
21:52:25 <andythenorth> ok I need to draw these trains
21:52:26 <TrueBrain> I rather take it from you guys and Discord, if you don't mind :)
21:52:30 <andythenorth> you talked me into drawing
21:53:39 <frosch123> i have a suggestion for opinionated tile editing: let the user group tiles into "sprite covers all tiles, i.e. big house", let the user draw the house as single sprite, and then truegrf cuts the sprite into parts for each tile
21:54:13 <frosch123> the preview should have a "transparency toggle", which only shows the ground sprites then
21:54:29 <TrueBrain> okay, I will take house suggestions when I get to that :)
21:54:35 <TrueBrain> maybe good to add, my v1 is industries only
21:54:47 <frosch123> i was talking industries :p
21:54:56 <TrueBrain> owh, you said "big house"
21:55:14 <frosch123> with "house" i meant industry building
21:55:26 <TrueBrain> yeah, that confused me, clearly ;)
21:55:36 *** jottyfan has quit IRC (Quit: jottyfan)
21:55:43 <TrueBrain> the main thing for me with tile editing, is that I am not sure over what dimension to cut it
21:55:48 <TrueBrain> with that I mean: you have many industry options
21:55:53 <TrueBrain> cargo is being delivered
21:55:56 <TrueBrain> cargo is being produced
21:56:08 <TrueBrain> I want a slick way to make that possible
21:56:47 <frosch123> ottd requires that sprites do not extend over tile west/east/south tile borders, so sprites must be cut into multiple pieces
21:56:51 <TrueBrain> I see what you mean .. yet another dimension :D
21:56:53 <frosch123> it would be nice if truegrf would do that
21:57:16 <TrueBrain> so a tile (and in extend a sprite) can be more than 1x1
21:57:23 <frosch123> "construction stages" are overrated, you rarely see them
21:57:26 <frosch123> does firs even have any?
21:57:28 <TrueBrain> yeah, I don't mind .. would be interesting, but I can keep that in mind
21:57:40 *** gelignite has quit IRC (Quit: Stay safe!)
21:58:49 <frosch123> there are some sprites that are often reused: ground sprites like grass/concrete, cargo piles, fences, ...
22:01:11 <TrueBrain> the main thing I have been wondering about .. do I want to make a view for: normal, cargo delivered, etc, for the full industry
22:01:18 <TrueBrain> or do I want it per tile
22:02:08 <frosch123> maybe truegrf could have some black&white template sprites: building 1x1, building 1x2, 2x1, 2x2, ... so users would start by composing tile layouts using them, and then gradually replace them with real sprites
22:02:11 <andythenorth> frosch123 FIRS randomises construction states from about 4 sprites, global to the grf
22:11:04 <TrueBrain> frosch123: sounds like future-work, yes :)
22:11:17 <TrueBrain> for now I struggle with having something simple .. it is hard to design something for this :D
22:12:36 <frosch123> if you are thinking about "normal" vs "cargo delivered", you my have to look into what "production mechanic" you want to support
22:12:41 <michi_cc> So, did you already vote on Command<>::Exepostvoke?
22:12:56 <frosch123> from that you can derive what graphic/animation triggers would make sense
22:13:34 <TrueBrain> another annoying thing to solve, UX-wise, is how to select sprites .. showing it in a dropdown like now doesn't really work
22:13:48 <TrueBrain> sprites will either be global (ground-sprites etc) or local (for that specific industry)
22:13:52 <TrueBrain> but still the list is huge
22:13:54 <frosch123> organise them in a tree, let user drag/drop
22:15:22 <frosch123> two panels left/right, one shows a tree with sprites (and internal names/comments?), other shows the industry layout, you can drag sprites from the tree to the industry layout
22:15:38 <frosch123> tree starts with nodes like "ground sprites" and "building"
22:16:32 <frosch123> a bit like stations and objects in-game are grouped into classes, to make them browsable easier
22:16:48 <frosch123> similar grf authors probably group sprites into "these look good togehter"
22:16:59 <frosch123> "heavy industry", "clean industry", ...
22:17:07 <TrueBrain> drag&drop is btw pretty hard, as HTML has issues with an orthogonal view, I have noticed :D
22:18:15 <frosch123> i have no idea about html :)
22:18:24 <TrueBrain> very good in squares
22:18:28 <TrueBrain> less good in non-squares :P
22:18:44 <TrueBrain> I have to fiddle a bit with it .. maybe I can do clever transformations
22:18:48 <glx> and improved a lot since IE6 ;)
22:19:00 <frosch123> i stopped at ie4 :p
22:19:39 <frosch123> iframes vs frameset :)
22:19:55 <michi_cc> dP: Yes, #9725 removes CommandContainer. Keeping it around when commands have a variable amount of typed parameters would mean to either make it into lists of lots of inherited sub-structs or binary serializing command arguments all the time. By using function templates and compile-time metaprogramming, the serialization hits needs to be only payed for network transfers.
22:20:52 <andythenorth> too sleepy for pixels
22:22:37 *** andythenorth has quit IRC (Quit: andythenorth)
22:25:20 <frosch123> discussions are better
22:25:26 <frosch123> they allow replies to comments
22:25:35 *** Tirili has quit IRC (Ping timeout: 480 seconds)
22:25:54 <TrueBrain> not sure how you want to fit what I just linked in discussions :P That are either a lot of discussions .. or one that doesn't give overview :D :D
22:26:11 <TrueBrain> but these should all be issues, at least, that is what GitHub wants
22:26:41 <frosch123> oof, project management, i think i have an allergy
22:26:57 <TrueBrain> but at least now when something comes to mind I want to add, I can write it down somewhere
22:27:01 <TrueBrain> and hopefully not forget :D
22:33:33 <TrueBrain> yeah, they announced that a while back
22:33:41 <TrueBrain> I wanted to implement it, but ... job has been keeping me busy :P
22:33:52 <TrueBrain> makes a lot of our workflows more manageable :)
22:34:01 <frosch123> TrueBrain: insert "reimplement jira"
22:34:19 <TrueBrain> just integrated in a single place :D
22:34:25 <glx> yeah like all the OpenMSX/GFX/SFX ones
22:34:44 <frosch123> though atlassian apparently want to go cloud-only, and drop on-premise installations, which is a bit wtf
22:34:58 <TrueBrain> "want to"? They are going :P
22:35:20 <frosch123> the only reason gitlab still exists is that they have on-premise, so no idea why atlassian wants to be eaten by gh
22:38:53 <frosch123> oh dear... we received an essay from the bible belt
22:39:35 <TrueBrain> "We can see throughout time how we have been slowly conditioned to come to this point where we are on the verge of a cashless society. Would it surprise you to know that the Bible foretold of this event? Don't believe me? This may be the most imporant message you will read in these times...please do not ignore this!"
22:39:38 <frosch123> the google-is-poisoning-me mail was at least unusual, but this is just awful
22:39:39 <TrueBrain> let me know if you want to read more :P :P :P :P
22:39:53 <frosch123> it continues with racism :)
22:40:29 <TrueBrain> wow, that email is long
22:40:42 <TrueBrain> "The only logical option is 6+6+6=18."
22:40:47 <TrueBrain> ah, yes, doing stuff with math to make your point
22:41:24 <TrueBrain> Now if you take: • 8+8+8=24 • 8+88=96 • 88+8=96 you get 24+96+96=216.
22:41:36 <TrueBrain> Take 144,000 divided by 216 and you get 666.
22:41:39 <frosch123> btw. there is a numberphile video about the origin of 666
22:42:25 <TrueBrain> @calc 666 * 6 * 6 * 6
22:42:31 <TrueBrain> they are factually wrong
22:42:38 <TrueBrain> Here is another mathematical confirmation: 144,000 divided by 6, divided by 6, divided by 6 (6,6,6) equals 666.
22:42:49 <TrueBrain> I should have quoted that
22:42:51 <frosch123> it's similar to how the old testament mentions a precise number of people that traveled to/from egypt or something
22:43:38 <TrueBrain> as soon as people start with these math shit, I just can't help but to start laughing
22:43:49 <TrueBrain> I can proof anything with any set of numbers .. it is so meaningless
22:44:27 <TrueBrain> "Why did the Biden campaign choose 30330? 2020 divided by 666 = 3.0330 Who believes this to be a coincidence?"
22:44:36 <TrueBrain> and now they care about decimals ...
22:44:46 <DorpsGek> TrueBrain: 3.033033033033033
22:44:52 <TrueBrain> till an extend, ofc
22:45:09 <frosch123> be careful with quoting, you may trigger some oftc bot :)
22:45:32 <TrueBrain> I hate how the email doesn't end
22:45:36 <TrueBrain> I am now left with wanting more!
22:45:49 <TrueBrain> just not for the right reasons, I am afraid
22:46:46 <frosch123> oh lol, did you see the senders'e mail address?
22:47:00 <frosch123> i only read the name, but the address is lolz
22:47:29 <TrueBrain> I am not even surprised
22:47:49 <TrueBrain> there is a "report abuse" link
22:47:58 <TrueBrain> (if I follow that link)
22:48:32 <TrueBrain> " 1.9 URIBL_ABUSE_SURBL Contains an URL listed in the ABUSE SURBL blocklist"
22:48:37 <TrueBrain> just not enough score to make it actual spam
22:48:44 <frosch123> i did not see any links, my mail program may block all of them
22:48:47 <TrueBrain> okay, so the abuse link won't help ..
22:49:23 <TrueBrain> "Content analysis details: (4.9 points, 5.0 required)"
22:50:06 <nielsm> what that says is that the "report abuse" link is actually "confirm subscription"
22:50:41 <TrueBrain> not sure; all headers indicate it is a decent mailing application running behind it
22:50:56 <TrueBrain> but yeah, better not risk it :P
23:00:52 <frosch123> do you know what happened 2021-11-18?
23:00:57 *** nielsm has quit IRC (Ping timeout: 480 seconds)
23:01:06 <TrueBrain> in the end went down again
23:01:08 <frosch123> there is a huge peak in ottd popularity in steam
23:02:04 <frosch123> ottd got 3k reviews from april to november, most in the beginning
23:02:21 <frosch123> it got 2k in past month, since 2021-11-18, which is well past 12.1
23:03:33 <frosch123> there is the option to plot the reviews over time
23:03:37 <TrueBrain> someone did some publication about OpenTTD somewhere?
23:04:08 <TrueBrain> also a very unusual Twitch spike on the 2nd
23:04:58 <frosch123> that site says 39k twitch viewers on 2021-11-25
23:05:22 <TrueBrain> the resolution is not that great of that graph
23:05:28 <TrueBrain> the one above shows it was on the 2nd of december
23:06:50 <frosch123> ok, that was yogscast then
23:07:00 <TrueBrain> I am not surprised :P
23:07:11 <frosch123> did it every year for how long?
23:07:30 <frosch123> but that is not the steam peak
23:07:56 <TrueBrain> where did you find reviews over time graph?
23:09:17 <TrueBrain> wow, that is a huge difference, lol
23:09:44 <frosch123> oh, that graph is imprecise as well, so reviews started 2021-11-24
23:09:52 <TrueBrain> we received more reviews in this month then ever before? :P
23:10:05 <frosch123> 2k reviews in past 2 week
23:10:31 <frosch123> steam awards something?
23:10:52 <TrueBrain> looking at the reviews, yeah .. they mention it a few times
23:11:21 <TrueBrain> amount of Steam downloads didn't change really
23:11:54 <frosch123> so someone botted? :p
23:12:27 <TrueBrain> in fact, downloads went down around that week
23:12:36 <TrueBrain> but I have no clue how accurate that info from Steam is
23:14:08 <TrueBrain> 840,000 people have installed OpenTTD in their Steam library
23:14:14 <TrueBrain> let that number sink in for a while
23:14:53 <glx> I'm one of them (but I don't play)
23:15:21 <glx> still 13.3h in the counter
23:15:36 <michi_cc> You mean 840000 people are crazy enough the believe we do a good job? :P
23:16:11 <TrueBrain> 130,000 people played more than 200 minutes
23:16:34 <TrueBrain> (sadly, that is the biggest bucket they show :P)
23:17:03 <TrueBrain> 620,000 people actually started the game
23:17:11 <TrueBrain> so 220,000 just added to their library never started it :P
23:17:25 <frosch123> ok, start of the reviews correlates with the reddit post on steam awards
23:19:16 <frosch123> they were clever enough to also bot negative reviews :)
23:20:28 <TrueBrain> ha, no, not botting, I remember: when you did a review to a game you nominated, you got some extra Steam points
23:20:34 <TrueBrain> that often is sufficient for people to write reviews :P
23:20:49 <glx> yeah I just repost my ETS2 review for that
23:21:04 <TrueBrain> also explains why there aren't really more downloads etc
23:21:33 <glx> you don't even need to make a new review, just updating it is enough
23:21:41 <TrueBrain> 12 million people on Steam read one of our news articles .. lol
23:21:51 <frosch123> haha, you are right :) factorio shows the same peak at the same date :)
23:22:09 <frosch123> and the same peak in november last year :p
23:22:23 <frosch123> every year in fact, lol
23:22:34 <frosch123> november is review month
23:22:36 <TrueBrain> shows how eager people are to get some digital points
23:23:23 <glx> hey mor xp, means your friend list can have more entries ;)
23:23:44 <TrueBrain> wait, you have friends?
23:23:49 <TrueBrain> owh, I am one of them
23:23:52 <frosch123> ok, so of the 3k people who reviewed in april, 2k reposted their review in november
23:23:56 <TrueBrain> I have 7 people on my list .. haha
23:23:57 <frosch123> at least we keep our customers
23:24:56 <TrueBrain> and no negative review complaints about networking :P
23:25:01 <TrueBrain> so at least that problem is solved :D
23:25:46 <TrueBrain> frosch123: in general I am very happy with the retention rate
23:25:52 <TrueBrain> we are pretty stable at 500 - 1000 players every day
23:25:59 <TrueBrain> which again is, if you just think about it, insane
23:26:02 <frosch123> "I don't like it. This review is for autumn sale."
23:26:11 <TrueBrain> euh, every day -> constantly playing
23:26:14 <frosch123> i guess i do not know how steam works :)
23:26:40 <TrueBrain> just the realization that at any moment in time, 500 people are playing OpenTTD .. just weird :P
23:27:11 <glx> but 2 of those may be TrueBrain and me testing things
23:27:17 <frosch123> and how many of them hate you for removing block signals? :p
23:27:27 <glx> like trying to reproduce a crash
23:27:36 <TrueBrain> glx: drops in a bucket :)
23:28:08 <glx> but yeah it's impressive how many people are really playing
23:28:57 <glx> (oh some have probably pasted JGR on top of the steam install, but it still counts)
23:29:08 <frosch123> ahaha, factorio triggered a "off-topic review activity" with their last blog
23:29:52 <TrueBrain> lol, so Yogcast called it Christmas Trains this year
23:30:10 <TrueBrain> I was wondering if they really didn't do OpenTTD, but they did .. just named different in the calendar :P
23:30:27 <frosch123> kovarex wrote about some often-cited code-style guy, which apparently is politically controversial (never knew that, only ever talked with nerds about that guy)
23:32:44 <TrueBrain> politics is ... amazing
23:34:19 <frosch123> i encountered that guy like 3 times at my 2 work places, quite some people were fans about his programming talks. though imho there was too much talking for too little content, and the production was usually awful
23:34:38 <frosch123> but when factorio guy wrote their nerd-blog about it, it became a shitstorm
23:35:18 <frosch123> different bubbles, different subjects :)
23:36:07 <TrueBrain> yogcast also uses the reduced signals GUI :P
23:36:38 <frosch123> really? they played the game? usually they just talk
23:36:51 <TrueBrain> they even had a GS installed
23:37:32 <glx> haha in their blog they talk about GUI
23:38:02 <frosch123> i think i watched a VOD of one of the participants from last year, who intentionally played a BS strategy (only ships), and actually *won*
23:38:23 <frosch123> yogscast has a blog?
23:38:54 <glx> I think we have the same issue with our GUI
23:40:43 <glx> but theirs seems way worse
23:47:02 *** Wolf01 has quit IRC (Quit: Once again the world is quick to bury me.)
23:48:05 *** frosch123 has quit IRC (Quit: be yourself, except: if you have the opportunity to be a unicorn, then be a unicorn)
23:51:30 *** HerzogDeXtEr has quit IRC (Read error: Connection reset by peer)
continue to next day ⏵