
The Homegames Podcast
Joseph & Yazeed give monthly updates on Homegames - an open source game platform.
The Homegames Podcast
Episode 130: Smooth Sunday
Joseph provides Homegames updates in this special solo episode of the podcast.
Check us out at homegames.io
Hello and welcome to episode 130 of the Home Games Podcast. My name is Joseph and today is Sunday, april 28th 2024. I'm trying my best smooth, sunday slow speaking voice for this special solo episode of the Home Games Podcast. It's been six months since our last episode and quite a bit has changed in terms of the Home Games Podcast. It's been six months since our last episode and quite a bit has changed in terms of the project and I have some updates to share on that. We have not done an episode to give any updates and so it kind of just felt like it was time.
Speaker 1:I continue to be a father. You know a personal life update. What else? I continue to try to read books. You know personal life update. What else? I continue to try to read books. That is going very slowly.
Speaker 1:Yeah well, I guess before we get to the home game stuff, we have to address the elephant in the room, and so here it is. It's small and plastic, it's got multicolored feet, it's got different little patterns on the ears and it's one plastic, it's got multicolored feets, it's got a different little patterns on the ears and, um, it's one of my daughter's favorite toys, um, but seriously, yazeed, where is Yazeed. So Yazeed, basically his schedule didn't align with mine. Um, there's no, you know, massive beef or anything like that. I mean we did get into a fist fight because I was like, hey, you should really watch Bluey, it's one of the best shows on TV. He was like, oh, I'm a grown man, I'm going to watch Adventure Time or whatever you know. It was a whole thing. But we figured that out, we're moving on. He'll be on the next episode for sure. This is just because, basically, there's a bunch of stuff I need to give updates on and we haven't done a podcast in a long time.
Speaker 1:So, generally speaking, well, first I'll say we just push new builds, or I just push new builds. Let's be honest, yuzi's not doing much on this stuff. I just released new builds with a new version of of with Hangman, the classic pen and paper game, hangman, with a man you know being hung to death step by step as you guess a word incorrectly or the letters of a word incorrectly. So we have a version of that where you make your own Hangman and it's single player multiplayer. We have it deployed at our demo site, which I'll talk more about later, but that's kind of the main front and center thing is that we have new bug fixes, new games, new features and all that kind of stuff that we just deployed and, yeah, I guess, related to that, the big or one of the big things I wanted to talk about was our demo site. So we have revamped our whole thing and made it so games published to the catalog now have publicly available demos always running on our demo site. It's not technically correct what I just said, but basically the end result is you as a person can go to a game which has its own page now on homegamesio, say, for example, weed Smoke Willy, a game which has its own page now on homegamesio, say, for example, weed Smoke Willy, a game that I made this January and you can click the try it button which we added recently and that takes you to our demo site of home games, which is pico de gallo, p-i-c-o-d-e-gio. You don't need to actually type that in, just go to homegio and click Catalog and click the games and you'll see what I mean. There's a Try it button.
Speaker 1:So, yeah, I guess the demo stuff, generally speaking, I realize now is incredibly important to getting some sort of traction for this project. It's really hard to get people to download and run software from a stranger who just tells you that they're trying to make, like you know, it's like YouTube for games or whatever and download this thing and run it and ignore the ugly UI and hope that it isn't mining Bitcoin or whatever. Anyway, it's hard to get people's trust to install your stuff. So a demo is crucial and early on. I've had Pico de Gallo deployed for years, but it was always kind of a demo site for me, more of a proof of concept. Can I get this deployed over the public internet? What is latency like on this server from you know, in Northern California in AWS regions? To me in Tucson, like how is that latency? Just more of a test. But, like I said, I realize it's actually kind of the step one of what is home games, because it is kind of a hard thing for me to describe. Still, my summary these days is a YouTube for video games, which sounds lame. It sounds like, you know, like Uber for dogs or whatever people say, the kind of typical startup do no idea, idea type of thing. But, um, anyway, yeah, the demo site works. It's pretty cool. Uh, latency is great, at least for me, like I said in Tucson, to this thing in the Bay area, uh, physical server in the Bay Area, I mean, and yeah, anyway, that was one of my things.
Speaker 1:I just wanted to mention the demo site and the website in general. I think we've kind of or I've cleaned up quite a bit and made it more functional. I've made it less scary looking, I think some pages of the when you go to homegamesio and, for example, when you log into your developer account and you see all of the games and your assets that you can associate with games, and now you have this new profile section where you can fill out like a description for yourself and all that kind of stuff and upload an image. I've revamped a lot of that stuff to make it less weird and more intuitive in some ways. Like, at least you understand that I'm trying to build a UI for you to publish video games instead of like, oh, this is a table with 400 columns and there's a button in one of them, but anyway, it's a whole thing. But the website sucks and I'm still fixing it. But it's getting better is my main thing there.
Speaker 1:But the segue is to developer profiles. Developer profiles I said it so quickly because I'm so excited about it, but basically it is the idea. If I want to make this a YouTube for video games, we need to have a way to say here's the game on a public link. You can access it, view information about it, and then you can click my profile, which me, as a developer, I have like a whole list of everything I've published, access it, view information about it, and then you can click my profile, which me, as a developer, I have like a whole list of everything I've published, and maybe one day you can follow me and there's a whole system around that. So, yeah, step one of that is having, like I said, the ability for developer profiles to exist and for you, when you log into your home games account, to say, yeah, this is my headline, kind of like Twitter, you know, relatively short description, and then an image, like I mentioned.
Speaker 1:And the other two things are for a QR code. It's basically a QR code and then a QR code kind of annotation or whatever. You'd call the text beneath it like a description. You'd call the text beneath it like a description, yeah, so I guess I'm trying to think of what exactly to talk about as the specific whatever. So the QR code is for something like a, like a Bitcoin address, right, obviously it's it's information that is not convenient to put into a web browser or something like that, or write down. It's like. My understanding of QR codes is that they're meant to basically convey like websites, and Bitcoin addresses is all I see it used for.
Speaker 1:And so my thinking was the people that are making games for home games, which at the moment, is me. I understand that you need to have like a profit incentive, a profit motive to do stuff in general or whatever. So, uh, how can I enable payments or donations or something like that on home games for developers? And so I don't want to integrate with stripe. I don't want to be a real thing dealing with real money. Um, just to be like straight up, I don't want to deal with that stuff because I have a job and I don't want to set up all that stuff to to handle money through, um, donations or whatever.
Speaker 1:So my thinking is just put a Bitcoin address there If you, as a developer, want to accept donations. I want to make it easy for you to do that Kind of like. Uh, back in the day on a blog or a small website, you would see the you know like buy me a coffee or whatever button at the bottom of the page. It'd be like five you know, to send them $5 on PayPal or something like that. It's basically that same concept, but, yeah, with you know, it doesn't need to be a Bitcoin address. It can be literally whatever text you want, but that text is represented as a QR code on your profile.
Speaker 1:The idea is that when someone goes to your profile on whatever device, they can say oh, you know, I can give them money and then send you money on Bitcoin. I don't care about that, I don't need to know about that, I have no interest in that, at least at the moment. It'd be really cool to make money on this someday, but I have it on the website, but I'm not interested in that. I'm more interested in selling like a T-shirt or something like that to make money. But anyway, anyway, yeah, developer profiles, qr codes.
Speaker 1:That is the main idea. Is Bitcoin address. It could be anything you want. It can be a letter to the person you know. It could be a fun little message when they scan the QR thing and they're expecting to see a bunch of gibberish to link them to whatever, and it's actually just a message that says you know, like I love you or you know some something cute, or it could be a slur, you know. Whatever you want, I I really truly don't care. Um, but then, like I also mentioned before, we have image support, uh on your profile that are publicly facing profiles on the Home Games website, and that actually I do care about. If you have a bad, if you upload, like, for example, porn, as your profile image, I actually have a system in place to disable that from being approved. And it's kind of a cool thing. I built where it's using an actual Mac mini that I'm running here out of my house, but it's just of a cool thing. I built where it's using an actual mac mini that I'm running here out of my house, but it's just using a simple uh, well, I don't know how simple it is, I don't know anything about machine learning, but it's a not safe for work image detection model. That is basically the approving mechanism, uh, for every image that gets published or that gets uploaded to people's profiles when they try to, you know, set their profile images.
Speaker 1:My thinking there is home games is always, or in my head, home games will always support and allow whatever content, as long as it's legal in the US, the only country that matters, and as long as that's the case, then I will support it. But in something like this, in a publicly facing profile, I don't have any systems in place to say, for example, have like a NSFW settings, right. Like you, as a person, can say, I do opt into seeing porn or whatever on stuff. I don't have any of that, so I'd rather just disable it completely because I don't want it to be a. You can go to my website and see butts or whatever. I don't think that's great. So, anyway, I've implemented this so you can't upload porn as your profile image as a developer. If you have a problem with that, I genuinely would like to hear the argument. I'm cool with the argument. I just want to. This is the way I am at the moment, or whatever. So no porn on your developer profile, but you can have slurs in your QR code. That is my personal philosophy, my moral ground, or whatever they say. Uh, anyway, so that's kind of an interesting thing.
Speaker 1:I guess is making it more like YouTube, which is my goal, um, and the other thing is the new games. So I made videos, or at least a video in January about weed smoke Willie. But essentially it is a game that has a relatively fast paced score attack kind of gameplay and, um, it basically moves faster than any game that we've ever made in home games and that was enabled by some performance fixes that I will talk about later. But it effectively runs at 60 fps. At least it's rendered that often on the server and in my testing it actually works. It renders that quickly on most modern devices with web browsers I mean most modern devices. When testing with web browsers, I guess the thing runs in a web browser. So anyway, that stuff has been running pretty well. But Weed Smoke Wheelie is cool. Like I said, I have a video and it's fast is the main thing there.
Speaker 1:The other thing, the more recent thing, is Hangman. So Hangman, the classic pen and paper man being hung to death, step-by-step game, is now on home games. We have a single player version of it so you can just play against the computer. I have over or around 500 pre generated um phrases that you can guess, so you know, going through a letter by letter, trying to guess the randomly chosen word out of this dictionary or phrase out of this collection, I mean. So anyway, that is pretty cool.
Speaker 1:I forgot what I was saying. Oh yeah, single player and then multiplayer. So multiplayer is kind of the cooler version of this. It's actually kind of fun to play against the computer, but it's even better to have another person and the other person. Well, actually, either of you can create your own custom hangman or use like a default I have the default, you know, classic dude dying. Then you can also use this very pixelated grid-based system to draw your own hangman if you want, and so, frame by frame, you'll say like oh, you know, this is what I want, frame one, frame two, frame three, to be up to frame five, and a custom hangman. Whatever you want could also be a slur again, have fun, live your life. Um, so anyway, that is working and the multiplayer stuff is working pretty well.
Speaker 1:I guess that game is the most polished game I think I've ever made. Vegas trail, I think was, was fairly polished, for what it was is what it was being like a pretty widely scoped, complex game that I, you know, I wouldn't even say is really finished yet, but Vegas. Vegas trail was more of like what can this do in in terms of features Like what is every possible thing to thing that this system can do, whereas Hangman kind of does the same thing. I mean, we have custom images, custom fonts, custom I don't know whatever like hover effects on stuff, like we have every feature that we could basically use, but it is a simple, good version of them and I think it's a really good showcase of what home games is at this very moment. So, uh, yeah, like I mentioned before, it's all. It's all deployed on our demo website. So please check it out If you are interested at all. If you're this deep into the podcast, I promise you care a little bit. So go to home gamesio and click around and check it out. And, yeah, play Hangman because I think it's really cool and yeah.
Speaker 1:So I have some other notes here, just kind of tangentially related to what I just talked about Documentation. I hope Yazeed isn't mad at me. It'd be funny if I opened this about you know, like us getting fake mad at each other, but he might actually get mad at me. It'd be funny if I opened this about us getting fake mad at each other, but he might actually get mad at me, because I deleted all of his documentation for Squish and I replaced it with about two paragraphs and some code examples and I guess my thinking there is.
Speaker 1:Basically the documentation had already gotten stale and personally I don't have enough interest or really time to devote to documentation because the system and the project changes so frequently and, realistically, there is no community yet, so there's no kind of, there's really no reason to keep it updated, and so documentation just gets old and crusty and bad, and so I'd rather keep it short and simple, so that way at least it's conceptually. Oh, did I just? I forgot I didn't turn on the noise gate for this whole podcast. Well, whatever, if you get background noise, I'm sorry, but also not really, because I mean, whatever, it's real, man, this is all real. So anyway, documentation I don't care about it, but I'm going to provide what we need to provide, to at least provide high-level, important descriptions of what things are, and one day, when there's enough of an incentive to, I will create documentation.
Speaker 1:On the other side of that, I realized that we need documentation for creating games. Maybe someone can look at Pico de Gallo and home games and they can run the builds and they can play games, but there's this barrier to creating them because I have zero documentation about the way that you should create a game and what it. You know like what you need to do in any way. In my head it would always be people just copying examples from the stuff I've made and then you know kind of freaking it and making it work. But I recognize that's not how basically anybody does stuff. The vast majority of people do stuff. So you need, there needs to be, some sort of a simple, straightforward guide, and so I view this as separate from documentation.
Speaker 1:Documentation is about the system itself. Home games like how do you, how does the squisher work? How does a game session work? I think that stuff is less interesting and less valuable. But how do you make a game? Is the is actually required for for most people, because you don't need to care about the system. What I'm actually delivering to you is a thing that lets you make games, but I'm not giving to you the thing that tells you how to do it. Um, if that makes sense. So I'm trying to think of a dumb metaphor for, like, if this is the YouTube of games, the code is your camera or whatever. Anyway, I don't have anything for that, so I'm just going to move on Profiles we talked about.
Speaker 1:So I have a note here, because Yazeed and I talked about this idea probably years ago on this podcast about motion or location detection in a home game, and so the thinking there was how would we do, for example, a hide and seek a phone or a game, a phone based home game for hide and go seek, where the system would actually be able to say, like no, I know that you got within a foot of this person, the seeker got within a foot of the hider or whatever kind of like a, you know, for all you younger people, maybe a halo infection type of thing. It's like that kind of a game, but in person, with a home games thing. Anyway, the long and short of it is we can't do that with the way that things are today. We don't have access to precise location data via the browser. I think we would need to build something like an iOS app or an Android app to have anything close to. You know, I don't need to know location like your actual physical location on Earth. I just need to know precise locations like relative locations between devices, and the web browser doesn't give us anything close to that. I think in my testing across a laptop, a tablet, a phone and whatever, all I was able to get was there's a dot like half a block down the street which is nowhere close. So, basically, yeah, we would like to make games that are able to do cool stuff like that, but the idea of building an app, at least to me at this point, it seems like a huge hurdle and not high enough priority to try to spend, maybe you know, a year learning Swift. I I don't know what the language is these days about or how you would build an iOS app, but, um, anyway, yeah, that was just an idea and I tried building a proof of concept and it didn't work, and that's cool and that's fine.
Speaker 1:Uh, what's another thing? Save games and hover States. These are, these are pretty basic features that almost any game system I don't really know what this is, I wouldn't call it a game engine, but game system would enable, is save games and hover states. What I mean is like, for example, when you're playing an RTS and you have a mouse right and you're moving the mouse across the screen and you'll see some sort of a indicator, some sort of like a hovering thing next to your mouse. You're not clicking a thing, you're just moving the mouse, and so we had no way of tracking that on the game side if you weren't clicking anything before. So something as basic as a hover state is something that I recently added in the hangman implementation, and that's because when you're hovering over a letter, uh, to guess it'll make it bold, which is pretty cool actually, uh, if I, if I do, say so myself, but anyway, yeah, yeah, uh, hover states is something that we added.
Speaker 1:And then save games pretty self-explanatory, but we have a demo of this and it is a. It's just a button. You click the button, a number on the screen goes up. Uh, there's also a separate button where you click it and it saves state locally. You can shut down the entire server, you can bring it back up and the number will be back to where it was before you left, before you killed the session, and so, yeah, the game is basically just serializing state and then bringing it back up when it comes back. So not really fleshed out. I've never used a system like that before, but to me it seems like it works and it's working for that one demo. So, anyway, save games is pretty cool, hold on, excuse me. So, anyway, save games, hover. And then I had another relatively small bug fix for the click button thing it. It's not that interesting. I can now track it when you move your mouse up right, when you click on a thing, mouse down and then now there's mouse up event as well. That lets us do some uh actually kind of like smoother button click handling on the backend, but it's not really that interesting, um, cool.
Speaker 1:So the next few things and are uh are so animations. I don't really know what or how uh game animations work like in gears of war. I don't know how the actual files are made to make the guy look like he's running or whatever, but in my head, a simple way to implement it in in home games is, uh, basically a slide show of images. So I made a test. It's a. It's a 30 FPS animation with 30 PNGs that play in a sequence and it actually works really well. That was enabled by a performance change, which I will also mention, because I found basically a horrible bug in the way that we were handling state updates.
Speaker 1:So, at its core, the way home games works is when something updates in the game. We have some things that listen to the state of the game and say, oh, something updated. Let me tell every player in the session what happened. They will see it on their screens and we'll just keep going forever. Um, so the problem was when I said, did something update in this game, I was doing it. I don't know the actual numbers, but let's say every time that something actually updated, I was seeing 20 updates or 30 updates, and so what that meant is when several updates were happening at once. When I say update, I mean like regular updates. Say, for example, you moved a thing from here to here, you made two changes, it set 40. And so say you cascade that out to even more and performance just became horrific.
Speaker 1:And I found that I think in Weed Smoke Willy, Weed Smoke Willy basically has, let's say, 30 to 40 nodes on screen at any time, between bounding boxes and the asset representations, like the images and stuff, and then there's a sound node as well, always playing the music. So there's quite a bit of data being sent in every single frame, and 60 FPS is, you know, it gets expensive or whatever. When you have all this stuff. And then, using this tool that I built to look into performance data for a game server, I realized that we had this bug Too many updates were happening, or I was reading updates incorrectly, I guess, is the way to say that. And so now, for every one update, I send one update instead of 20. Drastic improvement in performance. Weed Smoke Willy, like I said earlier, runs at 60 FPS and the animation stuff that I was talking about, the 30 FPS animation works really well. I imagine it would work to 60 as well, but I did not want to draw 60 frames of PNGs, so I didn't test that.
Speaker 1:Okay, next, I just have a note here about WebGL. When I was looking into this performance stuff, I considered just kind of swapping out our canvas rendering logic to use WebGL instead, and I was too confident. I just thought I could figure it out. I thought I was the goat and I'm not, because I don't understand math that well and I just tried looking into the basics of WebGL. I saw the word shaders, I saw numbers that were less than zero, I saw horrors beyond my comprehension, so I just I decided that would back out, and so, anyway, the performance stuff ended up mostly being the backend stuff, not client side rendering. So anyway, WebGL wouldn't really be worth it, I think, at least for me personally. If Yazeed or whoever else was a WebGL expert and can do it in like a night then maybe, but then there's the cost of me having to learn it and stuff. So, anyway, no, webgl is the summary there and, like I mentioned, I made a tool to help me diagnose performance issues and that was actually super helpful. All it does is it can you just say, hey, run a bunch of tests, it'll pull the main branch of home games, it'll run performance tests against that branch and, you know, give you results. Or you can point it to an existing home game server and say, hey, connect to that and then give me a bunch of stats on how it's running, how many frames per second you're getting, uh, like the. Maybe it's telling you the size as well. I forget, I haven't used this in over a month, but there are important tools for developers to diagnose issues is the way I'd summarize.
Speaker 1:Yeah, and my last thing here? Actually, sorry, I have two things. My last thing is I'm trying to reduce infrastructure costs. You know, these elephants, these toy elephants, aren't cheap. I have to reduce the AWS costs that we have, and I think one of my dreams and I might've mentioned this before is to basically just have a script to set this all up on a single instance, a single box, your version of home games, the entire, everything, like, maybe, auth and data stores, and the publishing catalog, like every single part of the service that I personally offer as homegamesio, and all this stuff.
Speaker 1:Just thinking how, if I want this thing to last the I want the idea to last I have to make it, uh, something that people can run without me or my infrastructure or any secret things. I know in my head that I don't mean to be secrets. I just forget what I don't know or what I've done so long ago. You know, the way that home games is set up is what I'm saying. I don't, I couldn't redo it because I don't know how it's how.
Speaker 1:I did it over the course of six years and so, anyway, just trying to reduce the cost and so making it more sustainable and then making it in the same way, making it a thing that anybody else can say like I want. You know, rickyhomegamescom or rickycom, whatever. If you own rickycom, you can make it a homegames or whatever your own version of home games, using this thing that I would like to make someday, which lets you take everything that I've made publicly available, the code and everything, and just make it all run for yourself and it's all kind of magic, because our infrastructure is the thing that really kind of stresses me out the updates, the builds that I release and every kind of thing like that. I just it's all very finicky and I'd like to make it more sustainable and reproducible and all the other big words that make people trust software. So the last thing I would mention, or I would like to mention, is I've added the concept of home games services to games that developers can make, and so, before I mentioned, I added an AI pipeline basically into the home games API that lets us have this image classification model, approving and denying developer profile images.
Speaker 1:Well, in that same thing, I was messing around with a Mistral seven, the Mistral seven B V, 0.2, uh model, uh, llm type of thing, similar to chat GPT, if you're not familiar, or whatever, but essentially it's a. It's a free, open source model that I'm able to run on a Mac mini just here out of my house, um, and it's running, like I said, these these uh, or it's running these asynchronous machine learning jobs for home games, uh, and so I thought it'd be cool if I made a proof of concept, demo, conversation, starter game, and so what this is is players can go into the game and you type in a conversation topic you know sloths or pizza or whatever and using the different conversation topic ideas from all the players, it would aggregate them or whatever, put them all into a prompt or a question or whatever to an LLM and then give you back questions or conversation starters about them. So you know we're all a bunch of friends hanging out and we want to. Wouldn't it be kooky to have a conversation about sloths and pizzas? And then you know all the lamest people you've ever met in your life are having the time of their lives, and so, anyway, I made that. And so there's a little thing it's called Infinite Questions on Pico de Gallo.
Speaker 1:It's also on our most recent build where you do exactly that. You hit the button, it sends a request to the Home Games API, the Home Games. It sends a request to the home games api. The home games api sends a or. It makes a job in a queue. This worker machine that I have behind me is processing those jobs and is giving games their responses.
Speaker 1:It's really not scalable, it's not sustainable in this way. It's really only going to work when we have close to zero people using it, but conceptually I think it's really cool and I think if I don't know, I'm trying not to be a boomer where I'm like, instead of AI, we'll replace my job. It's more about how can I integrate AI into my personal thing and so, anyway, that is the proof of concept. We have the services API. It works. I think Yazeed and I have talked before about you know, integrating with someone's Twitter profile or whatever. The thing I built for the AI integration would be the same thing that we would use for that Twitter integration. It's really the basis of you know API to uh from from games in home games. So, uh, yeah, I guess that that's where that is going to end. Yeah, that's where that's going to end. Uh, so I guess I will leave it.
Speaker 1:On, the AI stuff is is weird to me and kind of freaks me out and, uh, maybe it'll replace all of our jobs or whatever. But I think home games for me has been like a confidence booster. It's been a really cool thing that I've had in the background of life. Life, as you may know, it gets very hard sometimes and I have a real job. Sometimes that real job gets very hard or frustrating or whatever, but the freedom that home games gives me to say what the hell is an LLM, what the hell is llamacpp? I'm gonna spend the weekend just integrating that into my game system and then I'm going to make a game with it and I can just do that and I look at this thing and every part of it and I've made most of it Like that's really really cool to me and I want that for people also. So check out home games. It's very cool and I'm happy with it. That's been a smooth Sunday with me. Joseph, thank you, I'll see you. We'll see you next time. Yazeed will be here.