Devs on Devs: Kooshaba and Small Brain
edited by vera, cover image by kooshaza
From July 31st to August 4th 2023, Lattice hosted a small summit for onchain application developers building on MUD. The week illuminated just how far MUD and the teams using it have come in a short amount of time. Our previous summit, in Fall 2022, was a residency where teams tested out MUD v1 and built hackathon-style games. This time around, almost everyone present was iterating on long-term projects (on MUD v2!) that are preparing to launch beyond a testnet.
Mastery of MUD unlocks more options in the tech tree: do you want your World to be session-based and small or a persistent MMO? Who can write to or modify the Systems in your World? How can we encourage user-built plugins? During this week, we recorded several conversations between developers in the autonomous world ecosystem who are exploring these questions in depth. Our first interview is between Kooshaba, a developer building Sky Strife and an early collaborator on Dark Forest, and Small Brain, the crafter of Words3 (which launches this week on Base) and Network States. This interview kicks off Devs on Devs, an ongoing series published by The New World, which will feature in-depth discussions between developers in the AW universe, exploring their origin stories, interests and biggest challenges.
The conversation between Kooshaba and Small Brain is far-reaching, spanning everything from the demands and upsides of session-based gameplay, to the motivations behind building onchain, to the developers’ sources of inspiration.
SESSION-BASED GAMEPLAY AND PLAYER EXPERIENCE
SMALL BRAIN: So, why was it called Sky Strife?
KOOSHABA: This is the worst answer ever. You know Hans? Yeah, Hans came in and before Sky Strife, it was just MUD War. It was just like generic MUD RTS.
SMALL BRAIN: That's like a little too gross.
KOOSHABA: Yeah, it was gross. And yeah, we just all had the basic RTS systems in place. We were like, we have no idea what this is going to become or what the theme is. But we just had the idea of islands because islands were like a nice way to fit a shit ton of people on a map.
SMALL BRAIN: Yeah.
KOOSHABA: Without actually shoving them all next to each other. Like you'd hop from island to island. So it was supposed to be like a large infinite game. It was initially supposed to be large, Dark Forest style. A little less than Dark Forest, like 8 to 10 hours was our goal.That was supposed to last with hundreds of people. Anyway, so that's where the island idea came from. You'd start on a small island and get to bigger and bigger islands to fight more people. And islands are backtracking kind of. Like they just let you split things up.
SMALL BRAIN: Exactly. And code somehow?
KOOSHABA: Well, not necessarily code, but just gameplay. You don't want to spawn next to 60 other people.
SMALL BRAIN: Oh, interesting.
KOOSHABA: That's just insane, right? You can't even socially interact with that many people and form alliances.
SMALL BRAIN: Oh, cool. I was thinking it was a ZK thing or something like that. You know, you can get away with this if it's part of the grid, but can't do it for an infinite grid.
KOOSHABA: Yeah, no, we were just thinking because Dark Forest was incredibly overwhelming because the player experience was you spawn in and there's just hundreds of addresses all having huge planets around you and there was just no chance you were going to get anything done.
SMALL BRAIN: Yeah. Actually, this is something I really want to ask you about. Which is, how do you think about session-based gameplay?
KOOSHABA: Yeah, yeah.
SMALL BRAIN: I spent the first three months of the year working on Ape's Gambit, which was session-based, and I kind of realized all the problems with that. Okay, there's obviously the onchain problems with that. You know, we took down the last testnet, like 13 people making transactions at once. There's go-to-market problems with that, but how do you get everybody in the room at the same time to play this? How do you grow this thing? So I kind of see that you figured out the first part, but can you talk more about both the engineering part of it and also how are you even thinking of launching this and getting people to play the session-based thing?
KOOSHABA: So, I mean, to start, I was not a fan of session-based for a really long time. Like I thought it was just a bad fit for blockchain, and we know the technical reasons for that. We're basically storing state onchain that's supposed to last forever. And it's in a match, right? Like the match can literally get thrown away afterwards. No one fucking cares. So that just fundamentally doesn't make any sense, especially since we don't have transient storage opcodes yet. But we're going to have that soon. That's going to be incredibly exciting. It's going to change everything.
SMALL BRAIN: I didn't even think about how like that was for something that people who weren't L2s could use. Like we can just put shit in transient storage.
KOOSHABA: So the way I think about it now, though, is session-based gameplay is there for a reason in traditional gaming because you don't want the effect of: you join a game, then another person shows up, then your friends show up, then their friends show up, and suddenly there's a thousand people fighting over something that was supposed to be like a casual four-player match. And we see this in literally every MMO has this problem. Like World of Warcraft open-world PvP is supposed to be this fun, casual thing. But the second there are any stakes, it turns into a 200-on-200 battle where you can't make any decisions that affect the outcome of that. And it becomes like it's only giant guild versus giant guild. And that's what Dark Forest was. It was just DAOs fighting it out. Individuals were just swept aside completely. So session-based gameplay is a way to keep it somewhat fair for an individual player to come in and have fun and have a good initial player experience. And we're basically sacrificing a ton of technical problems. Like this is just not a good fit for blockchain, but I think the player experience is worth it.
SMALL BRAIN: Okay, interesting because I feel like I think similarly to you, but I also immediately react badly to session-based stuff. Especially like, you know, that was really rubbed in my face while I was building session-based stuff. I was like, this just feels wrong.
KOOSHABA: No, we're fighting uphill the entire time, honestly.
SMALL BRAIN: But on your point about player experience, like I totally feel that because like I think like some things that I keep in mind for asking myself: is this worth going forward with or not? Okay, so I guess this is different than session-based. One is, does it let players come in at any time and play? Two is like, does it let players play for like five seconds individually and have fun? But also let players play with a bunch of people for long periods of time and have fun? Can you fit both of those player behaviors and then both need to be positive? Like if it works for you, this is just you can come in and play like a clever letter and be a little profitable [in Words3].
KOOSHABA: Yeah, that's beautiful. For our next project, we're going towards that for sure. You should be able to play single player for hours and contribute to this grander world and come back and see the effects of what you've done. But you shouldn't have to wait for three other people to play with you.
SMALL BRAIN: Yeah, it should be totally timed. Yeah, I mean, I think that time...I was gonna say time agnostic, but that's…time doesn't matter. I can jump in whenever. Just nice also for growth, which I guess is the second part of this. How are you thinking of growing session-based stuff? Because I bet there's a lot of produced events you can do around that. But I just wondered if you had a plan around this.
KOOSHABA: Right. I mean, so the most basic thing we're doing is like we linked all the sessions together with the overworld that we're calling Amalgema. And there is a resource that is used to spawn the matches. And I think we already see it kind of working where matches are now scarce. Like you need to win to create more matches. And suddenly it's like an exclusive thing. And people are like going into Discord saying like, “hey, anyone got some orbs? Like I want to fucking play right now, but I can't.” And that to me was perfect. And that automatically creates that reason for you to all be online at once. Like I just spent the money. Everyone gets in here and they can self-coordinate.
SMALL BRAIN: Yeah, that's so good. Especially because the value is fun. Like the value in, value out. People want to play the game. I feel like I would struggle with that. Whenever I think value in, value out, I just assume that what I built is not fun and still needs to meet the criteria. It's not by itself.
WHO’S PLAYING ONCHAIN GAMES?
KOOSHABA: If it's fun, people will want to play. But I agree with you. Like if you really do the math on let's say you have a game where four people need to be online all the time. I think it's like over 12K monthly active users to have four people on at any given moment during the day. Which let's be real, that's bigger than the entirety of the AW [Autonomous World] ecosystem. I mean we're in the hundreds and the retention is very low. So we can't hit that physically.
SMALL BRAIN: I don't think it's an unreasonable number.
KOOSHABA: Right. Yeah. If we go like one circle out, we hit that immediately.
SMALL BRAIN: What do you think that circle is? I mean actually who do you think the people who play now are? What do you think the circle is?
KOOSHABA: I mean let's be real. It's like mostly engineers. People working on their own games themselves. Which is good and bad. Because engineers are actually very accepting of horribly broken games. Which is nice, but to get to that next level, it's just all about polish. And I think it's something we're struggling with. It's just baseline boring engineering work of UI, UX. You know this. You're doing this with Words3. Just getting people in the door and keeping them there. Because everything just feels smooth. So our next target audience is much bigger. Which is like people who know how to use Metamask.
SMALL BRAIN: Okay, Cool. Interesting.
KOOSHABA: You should not have to be an engineer. If you know how to send a transaction, you should be able to play the game. And then honestly kind of forget that transactions exist at some point.
SMALL BRAIN: Okay. Yeah. I like that as the next circle. Because I think a lot about the next circle of people. I guess for me it's a little more stratified. It's like, is the next circle of people…degen is not a good word. But people who are interested in financial-y stuff. People who are going to put whale amounts of money in, to focus on them. Or to focus on making it accessible. Keeping prices low. People who can just send a transaction and engage with this thing onchain and have fun. I lean hard toward the second one. But also what I lean hard toward doesn't really matter. There's probably some correct answer.
KOOSHABA: But yeah, this is why I said people who know how to use Metamask. Because that encompasses all crypto users. There's people who love NFT for the art. People who love NFTs because they're rich. People who are Bitcoin maximalists and have guns. You know, whatever. All those people should be able to enjoy a game together regardless of their theories. But this really does feel like the the early days of when universities were getting their first networked mainframes and the first thing people did was make multiplayer traditional MUDs. And the professors were like, “What the fuck? Who's using all my resources? Who's wasting all my resources? Why would you even put a game on a computer? This is a work machine. You're being ridiculous.” And here we are.
WHY DO ANYTHING ONCHAIN?
SMALL BRAIN: Oh my God. Let's do that question. Let's do the question that everybody and their mom asks when you tell them what you do, which is like, why the hell are you putting it on a chain? How's your reaction to this?
KOOSHABA: I mean, it's a totally normal and acceptable question. I don't want to insult it or anything. But really, the true answer is that it's really fun. And I think that's okay. That to me is justifiable.
SMALL BRAIN: It's fun for…?
KOOSHABA: For me.
SMALL BRAIN: Okay.
KOOSHABA: I don't have a choice. I'm doing everything that I'm doing. I find it incredibly interesting and mentally stimulating. And the second order effect of that is it goes towards a future that I can believe in. I started in crypto as a Bitcoin maximalist in like 2011. I just read the white paper. That's the world I want to live in And that has just fueled everything I do in crypto. It's not been about what I can gain from it. It's like, what future do I want my kids to live in? And I also love games. So the games I want to see in the future are these huge, open, accessible worlds that are not gated by weird financial incentives.
SMALL BRAIN: Yeah. That's a great answer. I'm kind of aligning with you. I, yeah, it's probably the most fair question. I probably honestly have the same answer as you do, which is, I just find this fun and my brain is making shit up on top. That's also probably how everything works. Anyways, back to the stuff you can use, which is it? Like, I feel like there's two things. One, there's a bunch of people. I think there's a couple of people in this room, not like this room, like this larger room who feel like they need really consistent and defensible reasons why things are onchain. Like you need a clear argument why this game could only be built on a blockchain and could not exist without it. And yeah, I think that's kind of how it used to be. Like maybe a year ago, like when I was in London [for the first Autonomous Worlds residency] I was like, “Oh wait, why are we doing this? Let me think really clearly about it.” Now it's less “so like we need a defensible reason why this can only exist on a blockchain” and more so “this is just a computing platform that's going to be out there.” If you're making a thing that fits its standards more than it does, like than it does like a server, then you should just do it on it. Like if your thing is about persistence, like Network States is about your states lasting forever and you feeling ownership over them, but your feeling of ownership doesn't translate into money. It translates into you caring about a story. Like that's the take there that it should just be on chain. Like if you have a thing that is supposed to last forever and that you want people to build their own things then you should put it onchain, right? Like maybe you could build a server and build an API to it and document it very well and make it open, but it's just much harder. You're fighting against the grain when you could just do it on the platform that gives you that, right? Like there are plenty of things that thematically should be on a blockchain that you should just put there because they're just, just they fit the platform better and you don't need a reason why they need to be there.
KOOSHABA: I have like a long, long, far future vision that I'm working towards and it's like, it's always been my personal goal before I die. I need to make an MMO. If I die, and if I do not make an MMO that supports millions of concurrent players before I die, I'm going to be very, very upset.
SMALL BRAIN: I just like the recording to know that was a riveting delivery. That was Oscar-winning fucking delivery.
KOOSHABA: I'm very sorry about this. This has been my dream for a very long time. And to me, that is everything in my life has been building up to that. To launching this, this game, like the final game that I launched and then I die with it. And like, I want to have a Dwarf Fortress. I want to be a lunatic who has devoted his life to this, this one project. Anyway, we don't have the technology to create that right now. It just doesn't exist. All of the current day MMOs are like little sandboxes. Like, okay. World of Warcraft. How many concurrent players do you have on the server? They don't even announce that because it's really low. Like you're never playing with that many people concurrently at once. New World, the Amazon MMO that recently launched. It was okay-ish. I played it for a bit. Multi-billion dollar company, 2,000 concurrent players at a time on a server. That's nothing. That is not a massive world. That's not an autonomous world.
SMALL BRAIN: Yeah.
KOOSHABA: Right? We finally have the technology with these god computers to create truly massive autonomous worlds. And we're going to get there. And even if the baby steps we're making today don't make any sense, we are going towards this world where we have these massive digital worlds that people can't even comprehend right now. And literally, I feel like I've known this my whole life. When I was playing World of Warcraft and adults would be like, “oh, what are you doing? You're wasting your time. Get a life.” And I'm like, honestly, my life is more interesting than yours in World of Warcraft. I was saying that the entire time. “What do you do? You just go to work? You go home and cook dinner? Fuck you. I'm raiding 40 man raids three times a week and challenging myself.”
SMALL BRAIN: Yeah.
KOOSHABA: So it really is a technology to create an infinitely more interesting world.
SMALL BRAIN: God, that was beautiful. It's so nice to hear this. I just do not think this long term.
KOOSHABA: Really?
SMALL BRAIN: I think two years out long term. And mostly I'm thinking about “how can I get people playing tomorrow?”
KOOSHABA: To me, it's like you need that ultra long crazy vision. And then you need the: “what do I do tomorrow?” And then everything in between will sort itself out. That's my belief. But you can't not have either of those, because if you don't have the super long vision, you get spiritually upset.
SMALL BRAIN: Let me contextualize this question. I feel like in London I came and saw that there was MUD. And I was like, great, there's MUD. I can build a game on a grid very simply on my laptop without running a server. Which would have made it too depressing to put the game up. And so now the depressing threshold was low enough. Low expectations. Easy enough to have experience. And obviously that was MUD v1 when it was not documented. And it ended up taking time to figure out how to, but it was very possible. When it worked, you get a lot of things for free and that lets people in this room build the type of stuff they're building. The type of stuff we're building is still turn based. Not a lot of people can do things at once. Obviously there's transaction times. If you look at, yeah, you see the similarities between all the games we're building. And the friction with them. I wonder what you think will come up in the next five or six months. What will become easier? And how that will make all our games look different.
KOOSHABA: Well, okay. We're finally getting to the point where we're nailing indexing. And client state sync. And it doesn't sound sexy. It's just normal. But no 30 second load times. Which is huge. And Sky Strife right now, that world that we just played in has been running since Thursday.
SMALL BRAIN: Like last Thursday? No way.
KOOSHABA: Yeah. Yeah, it's just been running.
SMALL BRAIN: Dude, I'm jealous, man. Give me that index.
KOOSHABA: And sure, we had problems today with load times. It wasn't great. But it was loadable. And people played six matches no problem. That was unheard of six months ago. There was no possible way. And I didn't even optimize the Sky Strife client to consider the fact that you're loading way too much state. It just kind of handles it. So, it's a really native development experience.
SMALL BRAIN: Are you loading all the state from every game since Thursday?
KOOSHABA: Yeah. But it still works with that. And then the next step on top of that is like querying the indexers. Just say, give me a subset of states. And just using whatever SQLite stuff you've built. And then we just have horizontal scalability for your games. I mean, that'd be super nice if you want to have matches. You just query it. Your client only gets to say relevant to the match. Or even a giant open world game. Like, give me all the state between 0, 0, 100, 1000. And then as you walk, it's querying ahead of you. Yeah, you totally can do that. Like a traditional MMO. So I think with just the boring infrastructure unlocks, it really, really opens up what we can do. I also am really curious what we're going to see. I'm doing analytics.
ANALYTICS
SMALL BRAIN: You're doing analytics? It would be cool to see where people are dropping off, when users come in.
KOOSHABA: I think we'll literally finally have not what we feel pain with, but have some data on how people, where they don't convert, and what we can make better. Because I guess they don't care about load times. Seriously, maybe the people who play are willing to sit around for a minute, but they don't want to connect at all. Who knows?
SMALL BRAIN: Yeah.
KOOSHABA: No, but I think the reality is the feedback for our games is getting polluted by all these problems. I've run certain playtests where there were just fundamental issues. And I'm glad that people surfaced them. But that means they were not giving feedback on the gameplay changes I wanted to test that week, because their transactions just wouldn't go through or something. The closer we get to stability, the better games we'll be able to make, just because of throughput of feedback.
SMALL BRAIN: Yeah. I find it really hard to run play tests remotely. I tried dropping as many analytics into the client as I could, key maps, and even recordings. Words3 today is recording your screen. I'll turn it off before a live launch. It really helps during play tests. But it's very different when you're sitting in a room and you can just watch people play.
KOOSHABA: Yeah. What do you do post-play tests? So actually just, oh my gosh, I should not close my laptop, I just realized. Because I was running my analytics server in the background.
SMALL BRAIN: Tough.
KOOSHABA: I forgot that's why I had it open. So yeah, we built, this is something that Nagual is super serious about because he comes from traditional game dev. You just break down every single player action into an event. And I'm not relying on client analytics, because it's pretty unreliable. Let's be real, so many people block them. So I'm creating user analytics from pure chain state.
SMALL BRAIN: OK, cool.
KOOSHABA: Meta events are getting created just from the contract.
SMALL BRAIN: Oh, interesting.
KOOSHABA: Because I know when you build a unit, because certain tables were set. There's no unit built event.
SMALL BRAIN: So you didn't use the ephemeral tables, you do something on top that's just happening.
KOOSHABA: Exactly. I'm just smashing a bunch of tables together and figuring out what's happening. And then we turn that into CSVs, and that gets uploaded into a Google Drive somewhere and spit into some traditional dashboard with a bunch of tables everywhere. So at this point, from play tests, we just pour through the numbers and we know exactly what units were overpowered. We know how much gold people spent at what times. And it's very, very numbers based at this point. Because the first nine months of Sky Strife, I basically made and destroyed six different games. You know how this goes. And it was just all gut based.
SMALL BRAIN: You can't get anywhere with that, right?
KOOSHABA: Yeah, it's like you wake up two weeks later, and you're like, ah, this feels wrong.
I'm taking it home. And you just start spinning your wheels. You start re-implementing everything. And yeah, we've got to get out of that zone.
SMALL BRAIN: Yeah. Yeah, I feel this a lot. This one annoyed me, nothing shipped the first half of the year. It's like, I only learn things when people play them. And I feel like you don't actually get a good play tested until the thing is live.
KOOSHABA: Yeah. Yeah. No, that's true.
WORDS3 ON BASE
SMALL BRAIN: I'm so, so excited for Base launch.
KOOSHABA: Can you talk more about that? You are literally the first MUD project to go onchain [not on a testnet].
SMALL BRAIN: Base mainnet launch should be good. Like, I am worried about a couple of things. The largest worries are, one, people only play Words3 because of novelty initially, and it's not actually fun. But retention was OK for the first round. Like, it dropped off after the first day quite a bit. But then those people stuck around and played. But there's a core group of people who understand it, who liked it, and came back every day. We'll see if that sticks around. Yeah, so that's the biggest thing I'm worried about. Is this a novelty thing, or is this an actual game? I don't know. And then, yeah, they've been good partners. They've helped with having an archive node and have a ton of stuff planned that they're plugging me into. The only thing I'm worried about is liquidity. We'll see. I don't know if people will, like, everybody will have to bridge to play. There were people who, I think, had ETH on Optimism that were just like, cool, try it out and buy a word. I think if you want to play, you need to look at the game, understand it, want to play enough, and then bridge your ETH over.
KOOSHABA: But there's some subset of users that are just going to bridge immediately on Base because they're like, oh, a new playground.
SMALL BRAIN: Yeah, right? And then they'll play. And I think when people play their first Word, then they're more likely to come play again. But I think that initial hump of playing your first Word is pretty large. And also, because it's like $5, $6 per Word, I can't fund users, which would be the way to do it, which would be like, find your first Word, but I don't have the war chest for that. So yeah, that's the one thing I'm worried about. I think they make it pretty easy for Coinbase users. The nice thing will be, if you have a Coinbase account, you'll instantly be able to transfer ETH over.
KOOSHABA: Oh, Ok, yeah.
SMALL BRAIN: Yeah, so that's kind of sick. But you still need to know what this is. A big problem I had with the first version was people would message me, like, what is a seed phrase? Because they were making a metamask to play. And I was like, OK, I can explain to you what Metamask is, and then I need to explain to them what Optimism was. And it's an L2, and you need to bridge your ETH over. It takes 15 minutes. It takes two days to get it back. It's just way too much for somebody who does not have a Metamask, you know what I mean? Yeah, so that's what I'm worried about. In general, I'm very excited, because I think it's a risk, but it could get a lot of eyes on it. And they're value aligned and have been really good partners.
KOOSHABA: Nice. And you're the only onchain game launching with them, right?
SMALL BRAIN: Yeah.
KOOSHABA: Hell, yeah.
SMALL BRAIN: Yeah, yeah.
BOTS AND CLIENTS
KOOSHABA: Yeah, and you said you're going to have a bot kit, too?
SMALL BRAIN: Yeah. We'll be shipping with it. We'll make some Words3 Bots. That's what I'm most excited about.
KOOSHABA: Yeah, it should be fun.
SMALL BRAIN: Yeah, I just want to see, there are all the things that we talk about that I feel like I just want to take the extra step to make more accessible. The bot kit will help people make their own clients as well. It is deceptively hard to make a MUD client, I think, if you haven't done it before. It makes things so much easier, but it does take mental effort to wrap your head around. I think if you're building a client, I think the difference between building a client for Words3 and having to be able to generate Merkle proofs, and take in chain state, and decode it, and turn it into mod. Versus like here is a function that gets me a word and here is like a mapping with all of my letters.
KOOSHABA: Right, yeah that makes sense. And yeah I think if I were to make a client just for myself though it might be easy.
SMALL BRAIN: Yeah. Like it doesn't need to be juicy.
KOOSHABA: Yeah. Like I know what's going on in the background like I know it'll eventually happen I don't need optimistic updates.
SMALL BRAIN: Yeah. So that's the cool aspect where maybe onchain games are everyone has their own personal client. I mean that's why I love the idea of monetizing only off of your client as well. It's like you build the game but the value you're providing is just the UX. Yeah. And it's like that also kind of puts it in people's heads that they can build their own clients for this game and charge for them. Like it's like please make a better client than me and charge more for it.
KOOSHABA: Unreal Engine 5.
SMALL BRAIN: Literally. I'll make one that shows all the word stats and like historical letter prices like charge power users like a thousand months to play. The Bloomberg Terminal for Words3. That's extremely useful stuff but one I can't put in the client because like now there's a ratio there and it's confusing.
THE DIFFERENT KINDS OF GAMES
KOOSHABA: What games are you looking for for inspiration?
SMALL BRAIN: I don't play games. That's my secret. Yeah it's actually my secret. I never played games growing up. Actually I did. I never played video games growing up. Okay sorry I always associate games with video games. I only played…so I loved riddles growing up. If you ask me a riddle I'd probably know it. This makes trading interviews extremely fun except for the part where you actually have to trade in the final round. The rest of it is just math riddles which I've heard before. At first I would be like “no I know it I'm sorry.” Until they would give me one which I didn't know. It was a variation of something I knew. It was like, you just pretend you've never heard of it. That's what I did eventually. That's what they want. I was just stoked that we were going to talk about riddles for an hour. I was like this is sick. I majored in math. I went through a bunch of interview processes and had a fun time and had a couple of offers and then decided to build a fully onchain game. That's part of why I'm here. Actually during the pandemic I worked at a crypto trading firm. I used to turn my brain off whenever people said “decentralized”. I'd be like “I don't want to talk to you, here we go again” and then I met a couple of people who worked at a HFT and they were founding their own crypto trading firm and it kind of became clear that I should step on as the first engineer. So it was my job to just build all the infrastructure the trading firm needs. One place to monitor orders and get real-time price data and save it in a database you can query easily. It's a bunch of centralized exchanges, they all throw in APIs and you just want one API to place orders across all of them. I was building all of this stuff so just grinding all that out. And that was when I read the Uniswap white paper and I was like “oh sick an order book replaced with math, very cool.” It was just very cool to me that you could use math to mess with money and play all these behavioral games and then I was thinking like “you should just do what a psych professor does en-masse onchain like we should just like figure out how greedy people are by running experiments.” And so I built a financial auction-based game where it's pretty much an in-person prisoner's dilemma that did not launch which took like almost a year to build. After that I was kind of thinking “what did I just do?” First of all I realized that game theory isn't fun. It's a cool mechanic, it's an interesting narrative but you need to build the reason why people engage with it. I was very technically savvy but I think naive about who would be on the other end of this and the more and more I learned about what those dynamics were like the less and less I wanted to do it. So that's kind of where I was left thinking I was thinking two things at the end of that like one “I'm not spending a year building a thing in this space again, I'll launch things more quickly” and two like “is this world computer useful for anything else?” and that was like literally when I found the London residency and the 0xPARC stuff online.
KOOSHABA: I think that you just like cold applied.
SMALL BRAIN: Right because I was like “this is exactly where my brain is, yeah it seems like these people are thinking in a similar direction.” So that's part of why I'm here. Anyways how did we get to trading?
KOOSHABA: I mean I guess you answered the question which is like trading is a game
SMALL BRAIN: I just want to make things I would engage with. And the bar is very weird for what I would engage with.I think that's why it needs to be hyper-simple, because my brain turns off to games so easily.
KOOSHABA: I think that's your superpower, because…well, me and my brother play a shit ton of games, and at this point, the type of games we like are very, very niche. And if we made a game that only we like, that appealed to us, the target market is very tiny.
SMALL BRAIN: I don't know if that's true. That's huge for a different type of person.
KOOSHABA: Yeah, but I don't know about huge, though. But, like, it's a different type of gamer that is hard to reach, I think. And probably the type of gamer that's far more suited towards AW. The type of gamer that's willing to wait for a thing to load.
SMALL BRAIN: Yeah, that's fair. That's fair. I'll click out of a game. I'll click out of a thing if it doesn't instantly show me what it's doing and tell me why it's interesting in the first ten seconds. I'm out of there, you know?
KOOSHABA: Yeah, actually, I'm at the point where I'll play any game. Shitty game, broken game, whatever. Because even a shitty, broken game, you can learn something from and exploit it. Like, oh, do they have this classic bug? Yeah, they do. Okay, I can use that to win.
SMALL BRAIN: Yeah. Oh, I love clicker games. Those just fit that bar. You just, like, do one thing and it tries building, you know? It's, like, built into the format.
KOOSHABA: Like, paperclip maximizing?
SMALL BRAIN: Yeah, yeah. Cookie clicker.
KOOSHABA: I play a lot of games.
SMALL BRAIN: What are your titles?
KOOSHABA: Lately, I've been playing a bunch of Company of Heroes. Which, yeah, I'm going to say a bunch of names that you probably don't know. But yeah, it's an RTS game. Historically accurate World War II RTS game. Which is, like, very, very inspiring for the RTS genre. Where it's actually a first-person shooter engine, but you're playing an RTS game. So each individual model has health, they hide behind cover, they have a real gun, the bullets hit cover, and the environments are destructible. But you're just commanding these squads at a high level. But it turns into a very, very cinematic experience. So it's a really rewarding RTS experience where there's not a lot of agility requirements. It's just all high-level tactics. What inspires me for AW is just every MMO that I've played throughout my life. RuneScape is probably the closest thing to an AW that I've played. I have, I don't know, 8,000 hours in RuneScape, or whatever. World of Warcraft, yeah, every Blizzard title, Warcraft, Starcraft, Overwatch, whatever.
SMALL BRAIN: Do you make any mods?
KOOSHABA: I made custom maps in Starcraft 2, which was, yeah, I guess they're mods. It's more of a separate game engine, really. And I made a couple little arena games where you'd spawn, you'd pick a loadout of spells and then battle your friends. And that actually transitioned into a game that I built during the pandemic, which is what led to me getting a job at Dark Forest, which was a 2020 hit. I was just inside all day, and I was sitting around thinking, and I hadn't done game dev since making my custom maps, but it was always in the back of my mind, this is actually what I want to do. I had been programming for a really long time, but just web 2 shit. So I was like, fuck it, this whole year I'm just making the game. And from first principles, I figured out multiplayer, real-time networking. And I was like, “I'm not looking anything up, I'm not reading any books, I'm not watching any videos, I'm just going to do it and see how far I can get.” And it was like a ton of trial and error, but by the end I had working network code that kind of mimicked what people had landed on generally. Yeah, very cool. Sick, I figured it out. But I could have just read a paper and skipped all of that.
SMALL BRAIN: You're like the fine-minted multiplayer guy.
KOOSHABA: Well, because I hate… I know that the most productive thing is to go read a research paper and then you solve it and you move on to bigger problems, but it's like you're stealing all the discovery from me. That's the fun of it. I want to have that moment where I, on my own, figured it out. But yeah, at work I should probably build on the shoulders of giants sometimes.
SMALL BRAIN: I feel that. I'm like the John Carmack of DIVs. The DIVs disappear when you scroll, appear.
KOOSHABA: That's huge. But that's what it was. That game that I built during 2020 I just started showing people and I showed my friend Sina, who was just an old friend, but it turned out he worked at the Ethereum Foundation. And I showed him and he was like, oh sick, you should meet the Dark Forest people. And I just looked it up and was like, oh my god, this is the coolest thing I've ever seen. And I just met Ivan and he looked at my game and he was like, dude, do you realize you use the same tech stack as Dark Forest by accident? I was like, no. And we just randomly lined up that I'd made a full TypeScript game. And he just, yeah, within three days I was working for Dark Forest. I just quit my job and started working on it.
REPRESENTING TRANSACTION STATE
SMALL BRAIN: That's dope. That's amazing. This is related to modding, actually. Two things I find interesting. One is like UI for transactions, making people feel visually that they understand what's happening at the state of the transaction. The second thing is general UI and UX for modding.
KOOSHABA: Yeah.
SMALL BRAIN: What do you feel about that?
KOOSHABA: I'll answer the first one, the transaction states. In the beginning we had really generic transaction states on all entities [in Sky Strife]. And it turned out it was still confusing because pending states mean different things for different actions. When you're moving, you would expect your unit to move really slowly while it's pending or something. But it still indicated that I'm attempting to move. Whereas when you're attacking, you can't have that. You're not moving. You're preparing to attack. So maybe your sword is waving behind you.
SMALL BRAIN: You talk about the action queue, or whatever it was.
KOOSHABA: Yeah, that was what the action queue was attempting to do. What we ended up doing in Sky Strife is every single interaction is its own system. We are handling pending states in a completely different way everywhere. This is what traditional networking code is in traditional games. There's no one-size-fits-all solution. Every single action in one of your games is a totally different networking pipeline. It's not sexy. It's really hard. It takes forever. But that's what gamers expect at this point. They want to be diegetic. They don't want this general transaction queue. They should forget what a transaction is. Have you watched the Halo Reach network netcode video? Dude, I'll send it to you. This is insane. They got to the point where they knew the latency of every single player playing the game. This is kind of like trusted information. You can lie about your latency all day. You're supposed to be on your side. You can mod your client and do whatever. But they were also on consoles, so it's harder to do that. They knew the latency. Let's say you activated an ability that took time to charge up. After the charging time, you were invulnerable for a couple seconds. Based on the amount of latency the player had, they actually changed the charging time of the spell server side. Every single person had a completely consistent experience with the facility. The game felt amazing. You ask anyone, you feel the difference. Halo Reach feels perfect. It feels like you're sitting in the same room as people. That's the level of granularity you need with netcode. I think a lot of onchain game developers should implement regular netcode and realize how bonkers it is.
SMALL BRAIN: This is related, but tangential. Verifying that a client is running code that you think it is a problem that every mining pool has to deal with.
KOOSHABA: Really?
SMALL BRAIN: If you're running a mining pool and I'm mining for you and Vera’s running a mining pool, what I should do is pretend to mine for both of you.
KOOSHABA: I never thought of this.
SMALL BRAIN: You split the rewards among everybody, so I should lie, etc. Each mining pool operator needs to know that the people running their software is only running their code and not running a modded version of it. They do all this crazy shit like push updates randomly and make sure that...
KOOSHABA: Wow.
SMALL BRAIN: It's like a constant battle. The people are incentivized to make money.
ACCESSIBILITY FOR MODDERS
KOOSHABA: That's very interesting. Oh, but you also asked about modding. And, I don't know, I'm not crazy about the in-game modding. I feel like you need to build the entire game around that. If you're supplying a visual editor and a custom programming language within your game. The thing I run into with the visual editor is that you're managing the experience. Can you make a visual editor that's as open? Even 80% as open as code. It's not 2% as open as being able to write code. People have done it. Unreal Engine is leaning really far into visual programming right now. Actually, they are all in on it. They recommend you do most things in visual programming.
SMALL BRAIN: Like a node editor or something.
KOOSHABA: Yeah. And you eject into C++ in the worst case scenario. Okay. But they put so much effort into making this usable. But the API of code is so good. It's so malleable. There's a reason everyone keeps doing it. But I really love the way that Dark Forest did it.
SMALL BRAIN: Plugins? Yeah. Did you make any Dark Forest plugins?
KOOSHABA: No, I don't exist at this point in time. I mean, it was just a text box. You throw some JavaScript in it. You hit register. And then it pops up with a DIV that was supplied for you.
And you just put whatever you want in that DIV.
SMALL BRAIN: That's crazy.
KOOSHABA: And drag it around your screen. And just from that small primitive, people created massive, massive infrastructure. Because, yeah, you just make network requests. I now have a server with a Postgres database on it. It's aggregating information from all my clan members. Very, very easily if you just knew a little bit of JavaScript. So that's kind of where I land on composability. This is another side benefit of blockchain that I feel like people don't think about. But we agreed on a programming language and an API. Yeah. Forget about decentralization. That's incredible. That we all kind of know Solidity. We know the EVM and RPCs. No other game does this because no one can agree. Every traditional game has a bonkers wacky custom API that you need to interact with. No one's going to learn that. And that just made me realize that a huge win for Interop is that we agree on when your game's shit is ordered compared to mine's. That's huge. Can you imagine two games that are running on their own systems trying to agree on when things are ordered? We just have that. I know exactly that two of my events happened and one of yours did. And the only cost is no performance. You don't need performance to make fun things. I'm super, super excited. I want to ship SkyStrife with, like you were saying, a bot kit. The last couple features I make in SkyStrife are going to be mods. That come packaged with the game.
SMALL BRAIN: Nice
KOOSHABA: I think that's a good model where it's like, oh, you've already been using this feature by playing the game. Now go inspect how it was written, and that's just your tutorial on how to write mods.
SMALL BRAIN: Yeah. Nice. What do you feel about only-client monetization?
KOOSHABA: I like it. I mean, we're not going for it, but I think it makes total sense. And it also encourages other people to join the ecosystem and make their own premium clients. I think the only monetization strategy that I've heard that is antithetical to AW is taking fees. Like in the core game.
SMALL BRAIN: Yeah.
KOOSHABA: This just doesn't make any sense, especially because we're going to be open source and someone will fork you immediately and steal all your users. I mean, maybe there's network effects, but...
SMALL BRAIN: Yeah.
KOOSHABA: So… Yeah, that I'm not a fan of. But no, this makes total sense to me. Or just even… It's like a traditional business model, like Century, the error aggregator. Dude, they make a lot of money, and it's fully open source. You could run it tomorrow. But they should run the server. Yeah, I'd pay $10 a month for them to run it, because I don't want to bother with that.
SMALL BRAIN: Dude, but I'm just really excited for Words3 to be live. And then, dude, we should do a hackathon, where we get all the AW people together for three days, and we build shit on top of it. That'd be hella fun.
To learn more about Lattice and MUD, visit our website, read our documentation, or join our Discord server