Skip to content

Instantly share code, notes, and snippets.

@mogery
Last active April 20, 2023 09:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mogery/8668375651a7f49dcd9622e6ff621760 to your computer and use it in GitHub Desktop.
Save mogery/8668375651a7f49dcd9622e6ff621760 to your computer and use it in GitHub Desktop.
mudcon 2k23 video transcripts
== 230408.131156 https://www.youtube.com/watch?v=GvROyX1gAv4&list=PLuuj7d5OqkM58IDCTwxqDo9DObxBC4_hx&index=6
(following block transcribed by fayti)
fayti: --that's a floor [ed: the mathematical operation]. *laughs*
marto: okay [?] i've set up recording [?]
marto: 0 kb/s
sean: uhoh
fayti: nice
fayti: yeah, this is actual combat resolution, which is--
sean: yep, yep, just normal, normal stuff. normal fun stuff.
fayti: there's- there's uh, inline blocks *laughs* this was actually really fun to do, because these are like out-of-line, they have margins and stuff, these ones don't
sean: no
fayti: because they're supposed to be, like, inline because they're small. doesn't look good on mobile, it looks better on pc because you have more space.
fayti: i also do the discards in this order because that's the way the binlog records it
sean: oh right, right, right
fayti: yeah. because uhm, basically this doesn't specify how the binlog works, it just-
sean: because it doesn't exist in- yeah.
fayti: because it doesn't exist on [?]. so basically what i just dö; i have a normative, uh, informative comment about this. uh, right, here. uhm, basically i talk about what the binlog is, which is just like, this log of stuff. it's just implemented by recording what happens.
sean: oh, yep. yep. didn't make it easy. didn't make it easy
fayti: oh and uh, this is my grid. for like, what this looks like. the board.
sean: i love you got the font in there, too
fayti: yeah!
fayti: by the way, i also have that up... do i have it up here?
sean: op! you got a typo! *points at 'explaination' in the page header*
fayti: do i? oh, i do that constantly.
sean: *laughs*
fayti: thanks for that, actually.
sean: i mean, like, linguistically it makes more sense than how they did it.
fayti: yeah. *laughs* that's why i keep doing it.
sean&fayti: yeah.
fayti: oh i also have links in like, "the rules for binmat" actually links...
sean: to the github.
fayti: yep.
sean: nice.
fayti: and then "in the style of ecma-262" links to the actual ecma-262.
fayti: *scrolling* have a small introduction here. i think that "hackmud" there actually has a class... i haven't given it a style or anything but it has of a class of like "fancy-hackmud-text". and this is like, the other fun bit is this isn't like; this is html, right?
sean: *nods*
fayti: let me pull up the source doc... if i quickly... [?]... i think that's a different [?]ion...
sean: what are you... what are you terminalled into here?
fayti: what?
sean: what machine is this that you're on?
fayti: uh, this is my private vps. that's the same thing that the page[?] is running from.
sean: okay. you're ssh'd into your machine?
fayti: (with a finger guesture like a pedant) moshed.
sean: oh. okay.
fayti: which is basically ssh except, like, i can just switch to the wifi here and it'll keep connected. it's awesome. especially like, if i turn off, if i turn off the data connection...
sean: that's cool
fayti: and [?] network unreachable... it keeps it active and like, i have like...
sean: what's the app?
fayti: that's termux. the app's termux and uh, basically, i just have a thing here that i can, uhm, that i can... do mosh followed by a-- by the host and it just... you need mosh on the remote system too because it's sorta its own client/server stuff. uh, it just authenticates over ssh and like, runs the mosh server, which opens up a udp port and has a session key, grabs that out of the output and runs mosh-client locally and then just...
sean: sweet.
fayti: udp connects.
sean: tunnels, yeah.
fayti: yeah.
sean: cool
fayti: and, uh, here you can see what the actual thing looks like. this is like the source code.
sean: yeah.
fayti: this is Quickml, which is a language that i made myself. *laughs*
sean: hrm. no.
sean: great, great.
fayti: you can see stuff like this is a macro, like `~!BINMAT` here is a macro, which automatically like, puts the class and stuff. uhm...
marto: [?]
sean: yeah they're just listening to rock music. [?] what are they talking about over there?
samual: [?] was actually... the game in trustnet?
chris: or the other way around?
samual: or the other way around.
sean: ooh, we're playing twenty questions.
chris: hello. what's going on?
sean: i'm just uh... yeah. seein' seein' uh, spoiler, spoiler face over here.
chris: i was talking about [?] if i tell[?] is the game in trustnet or the other way around? like we're in no [?]
sean: hah! which matrixes are... which matrix is this?
sean: right, yep, understood.
fayti: and like here's actually the board, and it wraps horribly because this is a phone
sean: yeah yeah yeah
fayti: but uhm, basically this like, just generates a table. *laughs*
sean: [?]
fayti: yeah it's kinda fun too, because, like, the algorithms don't actually-- just have like `~step` in them... uhh... let's do game [?]...
fayti: so this is like the setup process
sean: what was that?
fayti: this like the game setup process. uhm... and you can kind of see like here the description of the algorithm and here's the actual body of it and here's like `~step`, uh, the steps here. and then if it's actually rendered it kinda looks like...
fayti: i could actually go by the section name, but i don't wanna
fayti: (scrolling) uh... shuffle, place a card, draw, reveal, game turn... i think it's at the bottom. right, here's the entrypoint, and this section is what you just saw the source code of.
sean: uh-hrm uh-hrm
fayti: i think, hold on.
sean: *laughs*
fayti: wait, no it's not. here, pre-game preparation steps, that was, that's... that's the stuff. it just says like-
sean: yea-yea-yeah, i see it
fayti: so this is just the [?] of how to set up the game
sean: yeah, i'm just trying to think about why.... it's just fun, it's fun.
fayti: yeah.
fayti: the funny thing is too, like, the pre-game preparation steps don't actually say to shuffle the deck because that happens here in the game loop. like, the first thing we do is we just say, like, board's empty, we have, uh-
sean: oh yeah, i see it.
fayti: we have the deck, we make sure they're all face-down, we shuffle them, then we run pre-game preparation steps. and then we say like, reveal the first three.
sean: you start dealing them, yeah.
fayti: and the reason this is separate is because... my idea was you can have things that don't do this. so if you're using the specification for like, a tutorial game, you can say: «okay, i'm using this but replacing pre-game preparation steps with "take these specific cards in these specific slots"»
sean: hmm
fayti: so you can always have a consistent game setup.
sean: yeah.
sean: is there...
sean: why did- why did you do this? *laughs* for fun?
fayti: because... half of it was for fun, half of it was because, uhm, i was trying to kind of... if you're trying to explain the game to someone, i think it's kind of helpful if you try and write it down like this.
sean: yea-yea-yeah.
fayti: because you can kind of say, like, these are the steps of, like, that happen. and uhm... yeah because otherwise, you have things like if you're talking about... like, the combat for example. combat's a completely fixed algorithm that always runs this way. and things like the modifier cards [?].
sean: yeah yea-yeah, sure.
fayti: but yeah, i think it's kind of helpful to just like, try and write something out like this in order to get an idea of what you might need to explain to someone who hasn't heard of this at all.
sean: yeah. yeah. i mean, it's very hard to explain. i've tried to explain it several times.
fayti: *laughs* yeah.
sean: but it's- yeah, it's fun.
fayti: i mean, i personally think for a rules document this format kind of sucksbecause rules documents typically... like, one you kinda want fast lookup. like, if something happens you want to be able to look it up. and two, you kind of wanna have... i think most rules... if you're actually writing out the rules for the whole game, you typically have like, some hook at the start, like what's the kind of primary thing.
sean: yea-yeah.
fayti: and i think that's kind of hard to do for binmat because it's a bit complicated. because, a bunch of the mechanics don't really make sense unless you know about combat, which is this whole complicated thing. so you just have to start somewhere in the middle.
sean: yep. yup. yep.
samual: oh look, a pinboard. we could put a hackmud sticker and pin it to the board.
fayti: *laughs*
sean: [?] stick it, too.
samual: i've got hackmud stickers.
samual: just got to leave them at various places around birmingham.
sean: love it.
samual: (sorts stickers)
sean: *laughs*
fayti: yeah the only sticker i have is on my binmat.
chris: [?]
fayti: though to be honest i should probably get a different box for this because *laughs*
sean: that's awesome.
fayti: i've been carrying this around for a couple of years now.
marto: (being handed a 3d-printed keychain) what?
sean: you can look at it, but it's gonna be a bit before i can produce them.
marto: [?]
sean: uh... yeah. but first to the table. here. (hands it to fayti)
fayti: so is this...?
sean: keychain.
fayti: alright.
sean: do you see the... on the reflection?
fayti: oh!
sean: (hands it to samual)
fayti: on the inside there's like a code.
chris: ...basically a narrative. so like, [?]
samual: what script is that?
sean: uh... that is from... (takes the keychain back) this is in...
sean: sys. this is the sys lib, i think, yeah. 'cuz it's got the classes in it, and there's wolf right there.
sean: (hands it to sudo)
samual: ah, so is this all the same scripts?
sean: yea-yea-yeah. i just use the same code.
samual: i think it's funny that you put source code in the stickers
sudo: (hands it back to sean)
samual: and in the backgrounds of various stuff.
sean: (hands it to marto) show it to the camera.
sean: [?] yeah, some day. some day.
sean: is it gonna focus?
(ends at 11:50, thanks fayti)
(starting from 33:13)
samual: but luckily, they got a guy in, who basically just built up their entire infrastructure, and they had a falling out,
he left, and then they got another guy in, and he didn't really understand what he was doing / what his job was--
sean: so he rewrote stuff[?]
samual: he has made the infrastructure a bit worse, he's left, i've now come in, and bear in mind, they never had more than
one software developer at one time
sean: yikes
samual: and so there was a period of time, in fact there's been two periods of time, when they just haven't had a
software developer, and so, like, they've got stuff that's broken on the website that [?], it just doesn't get fixed, but now i've come
in, and umm-
sean: ok wait wait wait. if i was to register my pet
samual: you shouldn't
sean: (pointing at chris) chris, you're getting a pet? you're gonna register it. any bug that we find, we can just e-mail
directly to the only developer of the website (pointing at samual)
fayti: why e-mail it? he has a hackmud account
sean: yeah that's right, that's true, that's true
[? samual, sean and fayti talking over each other]
samual: just send me a tell
marto: then you don't have to worry about storage
samual: why not?
marto: have sean'll store them
samual: ah right. yeah yeah yeah. see, i wonder how much of our pet database we could upload into hackmud
sean: oh god damnit *laughs* shit
marto: [? ur literally sitting in the only direction that mic doesn't capture audio from]
fayti: the access times are gonna be absolutely horrible though, cause you, like, you have to chat API it back out
samual: it'd probably-
sean: -be more robust
samual: it'd probably be about the size of dtr's database
sean: aah, uh-huh uh-huh uh-huh
samual: so, like it wouldn't be that abnormal
sean: yeah
samual: it'd just be dtr-sized.
sean: yeah we gotta fix that
samual: why what's wrong with dtr's database?
sean: no, hers is fine. it's actually... who was it [?], sybil.
fayti: oh right. from what i remember, basically, it was large enough that basically, she couldn't figure out what parts of it were were too large. i remember something like that, i think it was in sandbox.
sean: yeah, it compresses automatically, like a bit. but it's not meant for anything like that
samual: i think if we had an API for working out how much physical storage our database is using, so that i'd be able to
optimize right[?]
marto: yeah my DB is [?]-
samual: like currently i've got an optimization, that i'm not sure if it's actually making-
sean: -[?]
samual: i'm not sure if it's making my database store double the size or half the size
sean: uh-huh, uh-huh, uh-huh, love it
samual: it's doing one, i just don't know which one it's doing. hopefully it's half the size
marto: [?]
sean: part of the work that's gonna happen this year is to make it easier for people to contribute to the game correctly [!]
samual: open-source confirmed?
sean: yeah. i mean that's an eventual set-up, but it might be more structure and legal first. the contribution agreements
and things like that. figuring out how to untangle the hidden parts of the game from the sharable. that's the hardest work,
it's to make it so that you could still make puzzles in the game, but that people can contribute
fayti: i mean on the plus side, you're using ruby right? so you can just define a class in one file, and then extend it in another
sean: yeah yeah yeah. for some of it, but a lot of the game is written in javascript, so, that's terrible, that's awful
samual: woah woah woah woah woah woah woah woah
sean: it's not terrible for segregating the data
samual: we should be moving as much ruby into javascript though, right?
sean: yeah, well that's complicated. (pointing at fayti) get him to fix it
samual: i would love to contribute, cause i've just been giving myself toys in the scripting environment. like just giving the scripting environment
just new stuff.
marto: [?]
sean: yeah sure. why not. do whatever. a decent amount of that is in ruby. not right out of the gate, there's stuff to figure
out first, but... and we usually talk about details, stuff that's there, but in general, if something fundamental was gonna
change, what would you change? maybe we'll go around, start with you (pointing at samual). not like... of course everybody's
probably got their thing that's like, "if there was one thing i could change it's this thing". it's probably a local minima.
samual: can we get this? (ED NOTE: `this`)
sean: oh this! yeah, okay, see, a local minima. yeah, you can have `this`. it's coming.
marto: new player experience
sean: yes, new player experience, i like that. broad thinking, it's great. it's a really hard problem, so i would love-
marto: i've been trying to hack away [?]
fayti: i have one thing that i think would be kinda interesting to at least try as an experiment, but kinda wouldn't work
with the game as-is, and that would be just like, try switching the database to a mysql server.
(everyone talking over each other)
marto: ehhhhhh [?]
samual: i do not like using Mongo
fayti: i like SQL a lot
[?]
sean: there's pros and cons, but i understand. you're looking for a schema of some sort
fayti: there's kinda like three reasons for it. one is sort of the schema in fact. the other part is just, i've heard people
complain about how terrible mongo is, and how terrible, like, mongo performance is.
marto: [?] send GC to trust and it creates an index. and that makes sense cause trust is the index process!
sean: that is a more complicated problem and i think it involves more of a financial gate potentially, right? there's like
literal resource management that has to happen. if you add an index, every piece of data you're putting in there, you're
adding an overhead to that. so there's gotta be some sort of lease/governance on that, and how do you make that fair across the
playerbase? do you make people pay for it? that's complicated, right. you can do it. you use in-game stuff, which is wealth accured.
that could be balanced, but it could also make it so that you're giving existing advantage more existing advantage.
fayti: if the cost's too low, veterans can just create a bunch of indexes. if the cost's too high, new players won't be able to
use it.
sean: yeah. that's a balance quesiton, but i think what you're both is mostly asking for is performance, you just want a better
experience using the database.
fayti: that's one of the main complaints that i've heard about it. i mean i personally don't do that much in-game right now
sean: nothing about which database that was chosen has the most impact on the performance or the experience. the code is just
really old and hastely written. at some point you have to pay the tax of that tech debt, and that's one of the first things
that i'm gonna be going through is, switching- right now the database is an [un]managed server that i have to manually
upgrade that is hosted by itself. it's not a managed instance or anything like that, so...
fayti: but you have managed backups
sean: i do, they're there.
fayti: but you sometimes need a fancier account to press the button to restore *laughs*
sean: and then the time expires, and you can't do point-in-time anymore, and you lose however many hours.
(points to sudo) how about you? grand vision!
sudo: i haven't explored enough of the mud to...
sean: yeah but, maybe that's part of it. what would you come back for, what would you come back to explore deeply. what were
your favourite parts when you were playing.
sudo: probably the group events
sean: the group events, yeah. ARGs and just participating, watching, and... yeah
sudo: [?] yeah exactly [?] pvp [?]
sean: awesome. (looks to spano) how about you?
spano: if there was one thing i'd change, i guess it would be the steam page. just try and make it more appealing. [?]
sean: yeah, awesome
marto: [?] get rid of the mona lisa
sean: mona lisa?
marto: [?] yeah, the [?] 20k [?] mona lisa in chat [?]
sean: so the screenshots are old, yeah. there's a lot about it that doesn't match what the game is, to be honest. and i
would also say and hint that maybe the game itself doesn't match a lot of what the game is. and so, to the point of the
new player experience, there's the game that was made when it was first made, there's game parts that were added on, and maybe, we call
them unfinished/unpolished, and maybe remastering it. one of the thing that's on the backlog that- no idea on any of these
timelines, the most important thing for me right now is to be able to working on it again, which i can commit to
this summer [!]. in earnest i'll be working on it again this summer sometime. but in the idea backlog, one of the things
that kinda sucks is, you said, we have so much fun doing these events, working on these events together and playing them,
but you can't play them as a new player, you can't go experience that story. so having something that's crafted to be able
to take an adventure- it won't be the same as the events that happened originally, but something that gives you the story or
lore parts and some of the leads[?]
marto: a huge thing for hackmud right now is [?] why [?]
sean: "okay and then we did this! and then we did that! and then we were guessing script names! and..."
marto: guess a script from chat messages that haven't been posted for three years. [?]
sean: that's great.
fayti: i mean like, trust.interface is like, still up. the only thing that kinda sucks about that is that the conversation is in entirely in its
perfect state. so you just have the end right there.
sean: yeah, exactly. it's not a curated experience.
marto: [?]
sean: did we lose stuff? battery? time to stop it! stream end!
*waving*
sean: now we can talk about the cool stuff!
marto: yeah we can talk about the secret stuff!
(everyone talking over each other)
chris: what secrets did you already tell?
sean: i just kinda gave uh- that i'm gonna be starting in earnest again on the game this sunner.
chris: really?
sean: yes sir. yes sir.
chris: never of heard that.
sean: no, you've heard that. chris and i speak weekly. mostly, mostly weekly.
chris: what, is anyone else working on the game [?]
sean: maybe! you. maybe you.
fayti: reminds me, actually, i still have this project i occasionally just chip away at. RBV8. like the-
sean: yes, your thing. yeah yeah yeah yeah. from an infrastructural perspective, i would love, like samual was talking about,
to be abl-
*stream cuts off*
== 230408.135912 https://www.youtube.com/watch?v=iqz6lTpaCp0&list=PLuuj7d5OqkM58IDCTwxqDo9DObxBC4_hx&index=7
[?]: [?] in the horizon [?]
sean: -the community would be able to write the [?] for those. so if you were like, "i wanna write my own language", which i
know you fucking nerds will want to do-
nerds: *agreeing*
sean: -you would be able to make your own language that gets put into game.
[?]: that's a thing i'm also thinking about-
(transcript to be continued from 0:17)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment