스크립트
00:00:00Thank you.
00:00:30Hello, hello everybody.
00:00:46Welcome to the stream.
00:00:49Just wait for folks to join.
00:00:53This week, we'll build a game.
00:00:59Or we'll vibe code a game.
00:01:02Because there's one thing, which seemingly everybody did thus far, but I haven't.
00:01:07And that is try vibe code a game.
00:01:10I'm actually super interested in building a game.
00:01:13And I want to do that.
00:01:14But I want to do it for real and like not vibe coded away.
00:01:19But I will probably do that with Godot, with the Godot engine.
00:01:25And it would be a game which I distribute via Steam and so on.
00:01:31But for today, I want to keep it much simpler and not learn Godot and all that stuff.
00:01:37So I'll just vibe code a game and see how far I can get there.
00:01:41Because again, I have zero experience with that.
00:01:45So hopefully, it'll be fun.
00:01:47It'll be interesting.
00:01:48And we'll see how good AI is at that.
00:01:51I will, I think it will be quite good.
00:01:54I think from what I've seen on X and so on, getting out some nice prototypes should be doable.
00:02:01Now, always important to keep in mind, vibing a basic prototype is one thing.
00:02:07Having something distribution ready, which also has taste and so on, is a quite a different thing.
00:02:12But that's not the focus today.
00:02:15I just want to have a bit of fun.
00:02:16Yeah.
00:02:16So hi, everybody.
00:02:17Thank you for joining.
00:02:19Thanks for being part of the stream and for, yeah, taking a look at that experiment here.
00:02:27So with that, without further ado, I'll jump right in.
00:02:36And I'll create a new folder.
00:02:44And actually, I'll start Herder in a new session here.
00:02:50And get into that folder here.
00:02:56Start Py, which is my favorite coding agent, of course.
00:03:00And go with that.
00:03:01And by the way, just to make it very clear, I'll, of course, always take a look at the chat and also
00:03:06try to answer some questions there.
00:03:08Like this one.
00:03:09I know it's off topic, but I just want to say your React.js, Node.js tutorial really helped me a lot in learning web dev deeply.
00:03:15Okay.
00:03:16Not a question, but a very nice comment.
00:03:17Thank you so much.
00:03:18And Logan, I'm super happy to hear that, that the courses were helpful.
00:03:22Always means a lot to me.
00:03:23I said it in the last stream, but I'm not getting tired of saying it.
00:03:27This is very, very nice and means a lot to me because I started creating those courses to share knowledge.
00:03:32So hearing that they were helpful, yeah, truly means a lot to me.
00:03:37So thank you so much.
00:03:39And with that, as I mentioned, and I mean it, I have absolutely no experience with how you build a game in the browser.
00:03:47I assume you use the Canvas API because that is how you can draw stuff to the screen on a website.
00:04:00So I assume we're going to use that.
00:04:02Now, I know there also are JavaScript game engines, but I don't know which ones.
00:04:07I've heard about this one here, Pixie.js.
00:04:09So I'm not sure.
00:04:10Maybe we'll be using that, but I don't know.
00:04:13And I will actually research with API.
00:04:16And I could do that on ChatGPT, in the ChatGPT app or the ChatGPT website.
00:04:20But I'll just do it here in Herder, in my Pi session, because I do have a couple of skills set up here, a couple of tools, like my web research skill, which uses some tools, which should make that research process quite efficient.
00:04:35So I'll just say, I want to build a browser-based client-side game powered by JavaScript.
00:04:43So I don't want to use WebAssembly or anything like that.
00:04:47And I just realized I'm in the way here.
00:04:49I don't want to move myself around.
00:04:51So what I'll just do here is, can I not clear this and get rid of that stuff up there?
00:05:00Well, I'll just end line breaks manually.
00:05:03Powered by JavaScript.
00:05:05I have no experience with that.
00:05:13How would I do that?
00:05:17Use the Canvas API.
00:05:20Use some game engine.
00:05:23I want to build, that's maybe important, a Brotato-like game.
00:05:28A basic Brotato-clone.
00:05:31And I hope it knows what that is, in case you don't know.
00:05:36Store Brotato.
00:05:38That's, it's really not the most elaborate game ever, but it's fun.
00:05:43I've played it quite a bit.
00:05:46You just run around, you can get weapons during runs, and then you automatically shoot enemies.
00:05:51So I want to build something like this.
00:05:57Do some in-depth research and share your findings and thoughts.
00:06:05I do not write any code yet.
00:06:08I'm adding this here because I'm using GPT 5.6 sol here, which is very trigger-happy in my experience.
00:06:17So, yeah.
00:06:20Better save than sorry.
00:06:22And add this instruction.
00:06:24And it activates the web research skill, as it should.
00:06:27And now it goes ahead and does some web research.
00:06:29And then we'll see.
00:06:30Yeah.
00:06:31I'm using GPT 5.6 sol.
00:06:33I know I'm in the way.
00:06:36Now you can see it here.
00:06:39GPT 5.6 sol.
00:06:40I'm using that.
00:06:42And we'll see how well things go.
00:06:44And, by the way, I'll Vibe code this.
00:06:48Still, I'll take a look at the code because I'm interested in what it does.
00:06:53And I will steer it.
00:06:55So it's not pure Vibe coding.
00:06:56I'm not saying, hey, build me a Brotato clone.
00:06:59I want to do research first.
00:07:02I'll analyze it.
00:07:03I'll think.
00:07:04So, yeah.
00:07:06It'll be Vibe coding extended, I guess.
00:07:14Yeah.
00:07:15So welcome, everybody, who's here for the first time.
00:07:17Nice to have you here.
00:07:19I hope it'll be fun.
00:07:21And we'll see what we get.
00:07:23Now I can see it is researching Pixie, which is that one engine I knew.
00:07:28It's also researching Godot, but I don't want to use that.
00:07:30I know you can use Godot to build web games too, but I really want to keep it simple.
00:07:37I don't want to work in a separate editor or bring in a separate engine.
00:07:42I'm fine with bringing in some JavaScript libraries, but I don't want to, like, switch to the Godot engine editor and all that stuff.
00:07:49So I want to keep it simple, and we'll see what it suggests there.
00:07:56Is there a reason why I'm using GPT-solve versus Claude?
00:07:59But the biggest reason, which is a stupid reason, is that I want to use Pi, and I can't use my Claude subscription with Pi.
00:08:09As far as I know, I would have to use their API, which I don't want to.
00:08:14Now, I could use Claude code.
00:08:15Nothing wrong with Claude code.
00:08:16I have it installed, but I want to stay here in Pi, so that's why I'm using that.
00:08:21That's the main reason.
00:08:24Currently, I have Claude code, or I have the Claude subscription.
00:08:30I have the OpenAI subscription, and I even got the Supergrok subscription because the base tier is included in the X subscription, which I have.
00:08:39So I can freely switch between Grok and GPT 5.6 because those are both available through their subscription in Pi.
00:08:48And if we feel like we need the power of Fable, I can switch to Claude code, too.
00:08:55By the way, since this is working, here I'm in Herder.
00:09:00I did create a video about that on my Academy channel, which may be interesting.
00:09:06Last week, Herder is a pretty great tool in my experience, in my opinion.
00:09:12It runs in a terminal, so if you hate terminal stuff, that's not yours.
00:09:16But the nice thing is it has browser support, so you can do stuff with your mouse here.
00:09:23It's not just shortcuts, though it has shortcuts, too, of course.
00:09:27And it makes it easy to organize multiple agents.
00:09:30Here I just have one, but I could now, for example, I have to disable my annotation tool, though.
00:09:38But now I could open a new tab here.
00:09:40Now I have two tabs.
00:09:42This keeps running.
00:09:43I could start a second Pi session here, and now I would have both agents here.
00:09:47I can switch between them here with my mouse and, of course, also with the shortcuts.
00:09:51And that's really nice, so I like that.
00:09:54So if we need multiple agents, we can do that.
00:09:56And I could, for example, therefore, whoops, also start Claude code here in that second one.
00:10:04So now I have Claude here, and we could have worked with both if we wanted to.
00:10:08But for now, I just have that one research agent, and it's fine, and we'll see what that gives us.
00:10:15Yeah.
00:10:16How do you manage your subscriptions?
00:10:18You seem to have a lot since you play with a lot of things.
00:10:20Yeah.
00:10:21I mean, I have all these.
00:10:22So for one, I don't have all these subscriptions all the time.
00:10:25Right now I have them because there has been so much going on in the model space.
00:10:29And I do create courses and videos on all these models and work with them.
00:10:33So I kind of need to stay informed, but it's not like I have all these subscriptions forever.
00:10:39It's just when there is interesting stuff happening, I have them.
00:10:42So that's why currently I have both Enthropic, the big Claude subscription and the OpenAI one.
00:10:53And yeah, how do I get on with Sol?
00:10:59I like it a lot.
00:11:01I will say it's a very capable model.
00:11:03I am using it on high.
00:11:07Here in the bottom, you can see it.
00:11:08I'm using it on high.
00:11:10That works pretty well for me.
00:11:11I will say 5.6 Sol, as I said before, is very trigger happy.
00:11:16So you sometimes need to stop it.
00:11:18And it also loves to add extra complexity.
00:11:21That's one issue I've been struggling with.
00:11:23It really likes adding lots of complexity.
00:11:29And you have to kind of control that, which is why I added an extra de-complex skill.
00:11:36And yeah, you really have to rein in also during your reviews and make sure that it doesn't add layers of complexity.
00:11:43It also loves to add fallback code.
00:11:45It hates to delete code.
00:11:46Many models struggle with that.
00:11:48But these are things to watch out for.
00:11:51And I have adjusted my skills and my prompts to make sure that it's more incentivized to act the way I want it to act.
00:11:59But it is a very powerful and capable model.
00:12:01That's why I'm still using it despite that.
00:12:03I mean, these are things you adjust in your agents MD or in your skills.
00:12:07And then it works quite well in my experience.
00:12:10By the way, if you're interested, I have some skills published on GitHub that is under maxed apps agent skills.
00:12:22Those change all the time and they are heavily fine-tuned for me and for Pi.
00:12:27So that's worth knowing.
00:12:28But in case you're interested, I have some skills there.
00:12:31So that's essentially the setup I'm currently using here for building this game here too or for researching right now.
00:12:41Yeah, that's the setup.
00:12:44Did I try Kimi K3?
00:12:45Yeah, I did.
00:12:46I only got a very cheap plan there though.
00:12:49I tried using it via Open Router and the API, but that kept on crashing.
00:12:53So I got their, I think, second cheapest subscription to try it out.
00:12:58And Kimi was really good.
00:13:00I just did not get the big subscription.
00:13:03And therefore, I constantly ran into rate limits because the one thing I noticed about Kimi K3 was it's not super token efficient.
00:13:11That was one problem I had.
00:13:12It's not super token efficient.
00:13:16Yeah, but I'm sure that will also improve with this model or with future versions.
00:13:25And it's a really good, very capable model.
00:13:27I will say that.
00:13:28Where do I write the code?
00:13:30So two things.
00:13:31I won't write too much code, but when it comes to inspecting code, I have a Herder plugin, File Viewer, which currently doesn't work, I guess because it's an empty folder, which would allow me to view files.
00:13:46And I also do actually, old school, just open a folder in VS Code because I'm just so used to VS Code.
00:13:56I tried new Vim again, but I just, yeah, I don't know I'll ever learn new Vim and all the shortcuts again.
00:14:11But yeah, I do really just use VS Code too if I need to analyze something.
00:14:19Yeah, and I also use, yeah, you'll see what I do as soon as we got something to edit.
00:14:29I'm not sure why File Viewer is not opening up.
00:14:32I do have a plug-in, which normally should open the files of this project here in a side panel, but that's not working for some reason.
00:14:40Not sure why.
00:14:43Anyways, now let's take a look.
00:14:45I added a little extension, which opens up the last agent message as HTML, so it renders the markdown as HTML, so that it's a bit more convenient for me to analyze.
00:14:56And that is now the answer I got from GPT from all the research, so we'll go through that.
00:15:05And I'm still also tweaking that.
00:15:06I'm working on my own extension, my own little tool that allows me to easily add annotations here so that I can easily annotate right here on this website and then click a button and then copy it back into the session so that I can collaborate on our plan and on reviews.
00:15:21But I'm not there yet, but that's good enough.
00:15:25Actually, I already added an annotate plug-in here in Pi, which opens the last message in an overlay.
00:15:34And now I can select stuff here, press A and add an annotation like don't do that.
00:15:39And now that would be stored and I can manage those annotations.
00:15:44And if I go back and press submit, it would submit this annotation.
00:15:51So that's a little extra extension I added.
00:15:55Now, I don't care about that here.
00:15:56I'll actually go back to the previous assistant message.
00:16:00But that's basically how I work.
00:16:03But again, that's all still evolving.
00:16:06But I try to make it easy for myself to pass messages back to the agent for it to pick up.
00:16:14What game am I wipe coding?
00:16:16I will build a Protato clone.
00:16:19That's the plan.
00:16:21A very basic one in the browser.
00:16:25I want to tell you, you're my first teacher.
00:16:27The teacher react on Udemy.
00:16:29I got a job because of you.
00:16:30Thank you so, so much.
00:16:31I said it before, but I'll not get tired of it.
00:16:33It means a lot to me.
00:16:35I started creating courses to share the knowledge and hearing that it got you a job or helped people in general.
00:16:40It means a lot to me.
00:16:41So thank you so much for sharing this.
00:16:46Yeah, Sol tends to over-engineer.
00:16:56Watching your stream on the phone feels like a crime.
00:16:58It makes me open my laptop and code something.
00:17:01Well, it's not too bad.
00:17:03Is Pi like the modern, cool kids, new school tool for AI looks like a terminal multiplexer with opinions and UX for collab with AI?
00:17:09Well, Pi is a very minimal coding agent.
00:17:12The multiplexing stuff here comes from Herder, which is a totally different tool.
00:17:16You can use Pi just in a terminal without it.
00:17:19But this multi-pane stuff here, that's Herder.
00:17:23Pi is just a minimal, very extensible coding agent.
00:17:30I guess it's the cool kid stuff.
00:17:32Yeah, it's for the people like me who like to really fine-tune everything and have control over their tools.
00:17:38There's absolutely nothing wrong, obviously, with using Codex, the Codex desktop app, Cloud Code, T3 Code, whatever it is.
00:17:45There are so many great coding agents and all of them can be used, let's be honest.
00:17:50This is just what I like working with and I can fine-tune it exactly to my needs and wishes.
00:17:55That's essentially the idea.
00:18:05What's the process you use when starting a game from scratch?
00:18:07Do you test-proof the concept?
00:18:09I have never built a game before.
00:18:12And I have never vibe-coded a game before, obviously, since I never built one.
00:18:15So it's the first time.
00:18:16But my approach is I start with research because since I have never done this,
00:18:20I actually need to find out how are we doing that.
00:18:22So I had the agent research.
00:18:24My prompt was essentially I have no experience with building a game.
00:18:27And when I build a potato-like game, do some research on the technologies and so on.
00:18:33And now this is the answer I got back, rendered out as HTML.
00:18:36It's a bit easier to read than in the terminal.
00:18:38And see what it tells me.
00:18:40So it tells me I should use Phaser 4 as an engine.
00:18:43So let's Google that.
00:18:45Because, again, I like to understand what we're dealing with.
00:18:47So Phaser, I guess, is the engine.
00:18:53Yes, I'm human.
00:18:55Hello.
00:18:56Okay.
00:18:57Phaser is the engine.
00:18:59And is there a Phaser 5?
00:19:00Is it working on outdated knowledge?
00:19:02No, it's Phaser 4 as it seems.
00:19:05Okay.
00:19:05Phaser.
00:19:07Yeah, but that's a pay.
00:19:08Well, no.
00:19:09I'm not going to pay for that.
00:19:16No, no, no.
00:19:17We're not going to use that.
00:19:18So that's why you should not blindly accept what it tells you.
00:19:22And why I'm not a fan of just telling it, hey, build me that game.
00:19:24Because it might just use a tech stack I don't want to use.
00:19:27And I don't want to use an engine which may have limitations or stuff like that.
00:19:32So I'll say right away, I don't want to use Phaser.
00:19:38Looks like I have to pay for that at some point.
00:19:44Let's go raw.
00:19:46So Canvas or maybe Pixie.js.
00:19:49Do some more research and get back to me.
00:19:54So we'll send it off.
00:19:56But I'll still continue reading what it tells me here.
00:19:58Because just because I'm not happy with that engine does not mean that the rest has to be wrong.
00:20:03It's free?
00:20:04Oh, it's free.
00:20:06Well, thanks so much for telling me.
00:20:09I was just confused because it says products and pricing.
00:20:11And then I see all these credit packages.
00:20:15But if you say it's free, we may give it a try.
00:20:18Still, I want to see which alternatives it digs up.
00:20:21But good to know.
00:20:22Thank you so much.
00:20:25But still, let's see what else it says.
00:20:27So it says a TypeScript.
00:20:28Yeah, Vite.
00:20:29I was planning on doing that anyways.
00:20:32Phaser Arcade Physics.
00:20:35Yeah, well, we'll probably not host it.
00:20:39Do not add React, Redux, and ECS frameworks.
00:20:44That's Entity Component System, I guess.
00:20:47Yeah, we'll not do that.
00:20:48Canvas API versus Game Engine.
00:20:50The Canvas API is not really an alternative.
00:20:53It gives me the drawing surface.
00:20:56Yeah, but sure, I get it.
00:20:57For performance, that's not ideal.
00:21:00Engine comparison.
00:21:01That's interesting.
00:21:02So Phaser 4 is the complete 2D web game framework.
00:21:06Pixie is a very capable WebGL, WebGPU renderer.
00:21:10Great renderer.
00:21:11But you must assemble more game infrastructure.
00:21:13Okay, so that's not a game engine.
00:21:15I see.
00:21:16That helps me with rendering with WebGL, WebGPU.
00:21:19But that is a game engine.
00:21:20I see.
00:21:22Excalibur.
00:21:23TypeScript first.
00:21:24Batteries include a 2D engine.
00:21:26Attractive alternative, but officially still pre-1.1.1.0.
00:21:30Whoops.
00:21:34Excalibur engine.
00:21:41Do they have, how actively maintained is this?
00:21:46It's very active.
00:21:48Okay, so we could use that too.
00:21:50But since it's in development, it might be running a lot of problems here.
00:21:55Yeah, Godot, I like Godot a lot.
00:22:01And yeah, it's awesome that you completed 80% of the Flutter course,
00:22:04but please don't spam the chat.
00:22:11Claude, recreate Phaser 4.
00:22:14Make no mistakes.
00:22:21Yeah, yeah, yeah.
00:22:22Please stop spamming.
00:22:24I don't want to ban you.
00:22:30I also started with you in Udemy.
00:22:32Just finished a bootcamp to get a certificate.
00:22:34Your course has taught me most of the foundations and coding.
00:22:36Still looking for a job in this market.
00:22:37Any recommendations?
00:22:38Yeah, the job market is brutal, I know.
00:22:40The biggest recommendation, which I share over and over again,
00:22:43I know it's not super satisfying.
00:22:44You need to stand out.
00:22:46And in order to stand out, what I think can help is have some sort of presence,
00:22:50be it on YouTube, on X, on Instagram, linked in whatever it is.
00:22:54You don't have to become an influencer, but do stuff, share stuff that makes you stand out a bit more.
00:23:00I've read it over and over again on X, for example, that people got job offers
00:23:04because they were very active there.
00:23:07And that is not satisfying.
00:23:09That's just one suggestion, at least one suggestion I can give you.
00:23:16What am I using to show the plan as HTML?
00:23:19That's basically a custom tool and extension I built.
00:23:23It's, did I open source it?
00:23:28It's, it's, it's this tool, MDR, maxed apps MDR, it's public.
00:23:35It's, it's written in rust.
00:23:37It's basically a tool.
00:23:39And there are other tools like that too, which opens markdown file, which renders markdown as HTML and opens it.
00:23:47And then, I built up high extension, which I'm not sure, did I open source that?
00:23:56I also did PY MDR.
00:23:57Not sure if it's on NPM actually.
00:23:59Um, yeah, I did publish it to NPM, um, which uses that tool and, and, um, a lot gives me a slash MDR command.
00:24:10Oops.
00:24:11Um, and that then runs that tool, takes the last agent message, renders it as HTML and opens that in the browser.
00:24:17That's what I'm doing.
00:24:19Um, use a game engine where you can do everything in code, no editor.
00:24:32Yep.
00:24:33I absolutely want to do everything in code.
00:24:35I don't want to have to click around.
00:24:38Um, I'm not sure how that works with phaser.
00:24:40I'll have to take a look.
00:24:42Um, I'll have to take a look again at phaser.
00:24:46How am I using it?
00:24:49Um, do they have their own editor?
00:24:50I don't want to use their editor.
00:24:53No, I want to use just code.
00:24:55Okay.
00:24:55I'll, I'll have to tell the AI important.
00:25:01Uh, I understand that I could use phaser for free, but I want no game engine editor.
00:25:12I want to do it all in code.
00:25:15What's the best?
00:25:17Whoops.
00:25:18What's the best choice then?
00:25:21So we'll send that as a follow-up.
00:25:24Um, actually, whoops.
00:25:29I did not mean, okay, I messed up.
00:25:31I did not mean to interrupt it there.
00:25:34Ah, it doesn't matter.
00:25:36Uh, important.
00:25:37Uh, I think phaser might be free, but I don't want to use a game engine editor.
00:25:48I want to do it all in code.
00:25:51I want to do it all in code.
00:25:53What should I use then?
00:25:55Uh, did not mean to interrupt it.
00:25:57Um, what did it suggest here?
00:25:59Uh, use pixie.js.
00:26:03Okay.
00:26:04Yeah.
00:26:04I mean, that is one suggestion had here too.
00:26:07Uh, why not pixie.js is excellent.
00:26:12If you are an experienced developer, I am.
00:26:14Who wants to design a custom engine?
00:26:16I don't want to design a custom engine, but I think AI can do a lot.
00:26:19I mean, we got over an hour left, so we'll see.
00:26:22Um, scene graph.
00:26:26Yeah.
00:26:26I don't know.
00:26:27I mean, people have been building flight simulators with free.js by just vibing away.
00:26:34We can certainly build like a 2D bro-tado-like game without an elaborate engine.
00:26:38So I'm sure pixie.js can do.
00:26:42Um, yeah.
00:26:43Project architecture, scenes, game state, main menu, arena.
00:26:49Yeah.
00:26:50We won't have a shop.
00:26:51Oh, okay.
00:26:51No, that's not.
00:26:52I get it.
00:26:53That's between the, between the different waves that you can buy new weapons and so on.
00:26:58Gameplay systems, player movement, enemy spawning, enemy movement, obviously weapon
00:27:03cooldowns and targeting, projectiles, melee, melee headboxes, damage and health, pickups,
00:27:08currency, experience and leveling, wave timing, stats modifiers.
00:27:12Yeah, that sounds good.
00:27:13That sounds good.
00:27:14We'll probably not do audio here, um, but the rest sounds good, I guess.
00:27:22We'll get there step-by-step.
00:27:26Run state, current wave, health, currency, experience, owned items.
00:27:31That makes sense.
00:27:33Profile state.
00:27:34Yeah.
00:27:34I mean, that is obviously, since I asked for it for the complete game, we'll take it step
00:27:38by step.
00:27:39Scope the first version aggressively.
00:27:42Yeah.
00:27:42So the first version I want to build is simply one wave.
00:27:46I run around and that may just be a rectangle shooting circles or something like that at randomly
00:27:52spawning rectangles.
00:27:53That's the first version I want to build.
00:27:55So yeah, one arena, one player, keyboard movement.
00:27:58We need that, obviously.
00:27:59One enemy type, one autofiring.
00:28:01Yeah, exactly what I described, essentially.
00:28:02That's what we'll build first.
00:28:04The first vertical slice.
00:28:05We'll keep it simple.
00:28:07And then later we'll add more waves and we'll add a shop between waves.
00:28:11So just a build order, movement in the arena, one enemy, one complete wave.
00:28:17Yeah, important technical decisions.
00:28:19Use TypeScript.
00:28:19Yeah, do not add React.
00:28:22Simple physics for sure.
00:28:24Yeah, okay.
00:28:28Doesn't sound too bad.
00:28:29Now let's see what the follow-up answer here was.
00:28:39Use Phaser as a code-only library.
00:28:42Phaser is not an editor.
00:28:43It's MIT licensed.
00:28:45Okay, you can write everything in code.
00:28:47Well, then we can use Phaser.
00:28:55Yeah, I think we'll use it.
00:28:56Sounds good.
00:28:58We'll use it.
00:29:00I don't want to implement my own scene manager.
00:29:02No, no, no.
00:29:04Okay, yeah, we'll go with Phaser then.
00:29:07So I'll say we'll go with Phaser, TypeScript, Vite, et cetera, as you suggested.
00:29:16But it'll be all code.
00:29:18And the first vertical slice will be exactly what you suggested.
00:29:26Since, as I mentioned, that is basically what I wanted, what you suggested.
00:29:31With that, go ahead and write a game.md file that summarizes the project and our decisions, including the tech stack details.
00:29:48That's something I like to do.
00:29:50I like to put that, so when I have that discussion with the AI, when I have a dude research and all that fun stuff, once I'm done, I want to save that information.
00:29:59Because eventually we'll run out of context.
00:30:01So I'll start new sessions.
00:30:03And I want to have a document, a Markdown document that encodes the gist of all that information we gathered.
00:30:10So all the decisions, the definition of the game I want to build, of the tech stack, I want to have that in one central document, which I can then refer to for future sessions.
00:30:19So that's something I like to do here, and yeah, therefore, I'll have it write that into that document, and then we can work from there.
00:30:29Yeah, Phaser has a GUI, but it's optional to sell it.
00:30:32Yeah, so we'll not use that.
00:30:33Thank you so much for all the clarifications in the chat.
00:30:37Much appreciated.
00:30:41Do you know any skill or tool or something to help Claude make better models in Blender?
00:30:46That's something I have played around with a lot.
00:30:48I tried it once, and that was like a year ago when all the models sucked way more.
00:30:53So unfortunately, I can't help there.
00:30:56Very sorry.
00:30:59What's the gray window with your prompts?
00:31:08You mean overall here?
00:31:09That is herder plus pi.
00:31:11Herder is herder written like this.
00:31:15Herder is a terminal multiplexer, so it allows you to have multiple terminals in one, and pi is the coding agent I'm using.
00:31:26No, please don't stop chiming in with phaser guidance, by the way.
00:31:29It's much, much appreciated, because I have zero experience with it.
00:31:31So a minor experience is much better than what I have.
00:31:39One thing I'm psyched to see for your game, if you will use composition versus inheritance, this is a buzzy thing I've been seeing, where you create smaller single-purpose things.
00:31:49So I actually don't know what the best practice or the common standard is for game development there, because, again, I have zero experience with game development.
00:31:59So, as I mentioned, I'll vibe code this a bit, I'll take a look, I'll share my opinions, I'll steer it a bit, but I'll go also to some degree with what the AI tells me.
00:32:12So, I learned Flutter and Node.js with the course that actually saved my life, because that's what is feeding my family now.
00:32:21You really know how to teach fast.
00:32:22May God bless you, Max.
00:32:23Well, I don't know what to say.
00:32:26That is just amazing.
00:32:27Thank you so, so much that that's blowing me away.
00:32:31I don't know if I saved your life, but I'm super happy that the course was helpful, got you a job, got you food on the table, so to say.
00:32:39And, yeah, many, many, many thanks for this very nice message.
00:32:42It means a lot to me.
00:32:43Thank you so much.
00:32:46Does GPT Sol have memory like Claude?
00:32:49You mean in the chat if you use the app?
00:32:52Yeah, here, I mean, when you're using it as a coding agent, it's up to you to manage the memory.
00:32:56Claude code may have some built-in features there.
00:32:59I'm actually not using them if that is the case.
00:33:02I'm mostly using Pi, and there is no built-in memory feature.
00:33:07Am I German?
00:33:08Yes.
00:33:09Are you planning to create sprites?
00:33:13I don't plan on using some AI sprite service here.
00:33:16I will probably try to get it to build me sprites in code, but we'll start with simple rectangle.
00:33:22Okay, so now I've got GameMD.
00:33:25Now, again, normally, and I don't know why it's not working, I would have a plug-in in Herder, which opens a file viewer side by side, but that's not a problem, whoops, sorry.
00:33:34That's not a problem because the chat would be in the way anyways.
00:33:37So, we can take a look at that in good old VS Code.
00:33:43Nothing wrong with that.
00:33:45And I got my rendered game MD file here, which summarizes the project, will be developed entirely in code, no visual game editor, yada, yada, yada, phaser 4, typescript, tweet.
00:34:06Yeah, that all sounds good.
00:34:08One thing, actually, I want to use PNPM, not NPM.
00:34:14Update GameMD.
00:34:16So, it's just a tiny thing.
00:34:18I just want to make sure that it's not consistently using NPM.
00:34:21Since the entire supply chain attack staff, I switched to PNPM just for a little bit of extra security.
00:34:28Okay, so that's that.
00:34:35The book Game Programming Patterns is a good reference.
00:34:38Yeah, I mean, once I get seriously into game development, which I want to do at some point, I will definitely soak up all these books.
00:34:48And I then don't want to wipe my way to it.
00:34:51But for now, that is what I'll do.
00:34:56Okay, so now I'll say get in it and commit this one file and then we'll get started.
00:35:04I'm also asking AI to write the step-by-step implementation flow where appropriate.
00:35:07And once the step is complete, add new details to the markdown that next session.
00:35:11Yeah, you got to kind of keep track or have some place for AI to keep track of what it already did.
00:35:19I mean, like the memory guidance in Claude, like remember this, then I got you.
00:35:24Pi has nothing like this built in.
00:35:26You could build your own extension and you can also ask Pi to build its own extension that adds that feature.
00:35:31That's what I like about Pi a lot.
00:35:36Do a backflip.
00:35:37No, I don't think I will do that.
00:35:40I purchased your React Node course on Udemy.
00:35:43I love the React course so far.
00:35:45I'm at the food order app now.
00:35:47Thank you so much.
00:35:48I hope you'll get a lot out of the course.
00:35:50Thanks for purchasing it.
00:35:51And yeah, I'm happy to help with these courses.
00:35:54So thank you so, so much.
00:35:56So now let's continue.
00:35:58I'll start a new session, fresh context window, still in Pi.
00:36:03The one thing that is annoying, I can't scroll up to put this input field higher up there.
00:36:07Normally no problem, but now I'm in the way, but we'll get around it.
00:36:11So what I'll then typically say is I'll say something like we're building, whoops, gameMD.
00:36:16So I'll point at that file so that the agent reads it.
00:36:21Let's now start with the base project setup, including dependency installation.
00:36:33And I could do this myself.
00:36:35I'm just, yeah, I want to keep on chatting with you and not go through a bunch of setup work here.
00:36:40Do not write the actual game code yet.
00:36:45Just set up the base project.
00:36:48Give me a minimal setup, not a bunch of empty files and folders.
00:36:57Now, typically I would ask it to create a plan first.
00:37:02And here it's a bit risky, but I trust it that it will be able to set up a basic VIT project.
00:37:09It should have enough of that in its training data.
00:37:11If it were a more complex setup, let's say a monorepo with multiple apps,
00:37:17where some technologies are maybe lesser known, something like maybe 10 stack or the fact library.
00:37:24Then I like to chat about that project setup too.
00:37:28And also maybe have it create a plan, which I can analyze.
00:37:31But here I'm hopeful that it will be able to just give me a properly set up VIT project here.
00:37:45The PNPM, it's faster and it's more secure than NPM, though the latest version of NPM also got more secure.
00:37:51But still, it has nice defaults that can prevent certain supply chain attacks or make them a bit less likely to impact you.
00:38:01I think it can also zoom out a bit here.
00:38:03It's really super large.
00:38:06Question for Maximilian and the rest of the audience.
00:38:07How do you prevent muscle loss or development when your day job requires leaps and bounds done with agentic development and token maxing?
00:38:13You mean like the brain muscle?
00:38:15I think we'll just build new skills and we'll have to adjust what our brain does.
00:38:22So I think we'll lose some of the knowledge we built over time regarding syntax and so on.
00:38:30What we should keep or try to keep is like the entire architecture, systems design stuff and get better at that.
00:38:35And we'll learn how to properly work with these AI tools because that's the stuff I'm definitely still figuring out.
00:38:42I have a certain flow and that looks different than from what it looked like two months ago and it will probably look different again in two months.
00:38:50So I think that is it's all moving so fast right now.
00:38:54It's it's really just something you have to adjust all the time.
00:39:00I'm thinking about Friday afternoons turning off tab complete and just build the Artisan Way line by line to keep it fresh.
00:39:06But yeah, one thing I also considered doing and it's just hard to consistently find the time for it all this do some good old school coding, not primarily to keep the skill active, though that would be a nice side effect, but also just for the fun of it because I like I liked the old school coding.
00:39:28So that is definitely something I also considered because, yeah, I agree.
00:39:31Writing code is fun.
00:39:33100% agree.
00:39:36Yeah, yeah, yeah, yeah, yeah.
00:39:42So, okay.
00:39:49So we got the project set up.
00:39:51Let me take a quick look.
00:39:53We typescript got an index HTML file.
00:39:59Got our typescript file here.
00:40:01Yeah.
00:40:02Unsurprisingly, nothing, nothing that looks totally broken.
00:40:08Now, one thing we can do here is, of course, start our development server.
00:40:19Bring that up, flashbang, and we see that, which means it's working.
00:40:25No errors there.
00:40:27Awesome.
00:40:29Good.
00:40:30So now with that, we could start a new session, but there's barely any context in here, so we can just continue here.
00:40:37Let's now continue with the first vertical slice.
00:40:44The base game one arena.
00:40:50The player randomly spawning.
00:40:52The player randomly spawning.
00:40:54Enemies.
00:40:55A standard pistol weapon.
00:40:58Not rendered, actually, projectiles fired automatically at enemies.
00:41:07Now, we could break this up into multiple steps here, and if we would be building this entirely from scratch without an engine, that might be good to do because we also have to build the underlying systems like a scene manager or the entire rendering logic.
00:41:23So depending how low level you are, the more you have to build, and in that case, we should probably split it up.
00:41:28But since we're using an engine here, about which I know nothing, but from what I read in that research document, it has all that stuff built in that we need, so we can probably build this in one go.
00:41:40So I'll just say.
00:41:44Create an implementation plan.
00:41:48Now, when I say that, I actually kick something off because I have a create plan skill set up, which is available on that in that skills repo I mentioned.
00:42:02And create plan is a skill that controls how the AI should create a plan.
00:42:07It includes stuff like delegate research tasks to sub agents so that it should use sub agents and that it should do research and that it should review the plan before it shows me the final plan and a bunch of other stuff.
00:42:20I have a complete plan template in there, which I like it to use so that the plan has a certain structure.
00:42:26So I just said, create a plan here because I knew that I have that skill and that that skill would be activated.
00:42:33And now here it's creating some sub agents also because of some other skill I set up the use PI sub agent skill, which tells it how to create sub agents.
00:42:44And I will probably build an extension on top of that to have a nicer user interface.
00:42:48But right now it's just spawning them as scripts, gives them a little prompt and it uses different sub agents like a scout sub agent for exploring the the workspace.
00:42:58There's not a lot there, though.
00:43:01Research sub agent for doing more research.
00:43:04And yeah, that's that.
00:43:05So that's what's going on here.
00:43:09And it should now do all the research, then draft the plan, then review the plan, do more research ends on.
00:43:16And at some point it should get back to me and show me a finished plan.
00:43:21And in that skill, I also mentioned that it should ask me if decisions are required.
00:43:25So that it should not blindly make a bunch of assumptions, but also that it shouldn't ask me for every little decision.
00:43:34That's that's what I have here.
00:43:41Do you think coding became pay to play?
00:43:46Interesting question.
00:43:48Right now, for us developers, yes.
00:43:51But of course, in a job, your employer would be paying for the tokens.
00:43:57So if you're not doing it personally at home for as a hobby or as a freelancer, but then it's your job, too.
00:44:03It's a business expense.
00:44:06The tokens will be paid for.
00:44:09And therefore, I think before AI, you also had to pay for developers.
00:44:13Right now, you pay for developers and tokens.
00:44:16And therefore, I think not a lot has changed there from a business perspective, from a developer perspective.
00:44:22If you work on your own outside of business, outside of a company.
00:44:25Yeah.
00:44:26Now you're suddenly paying money for something that was free before.
00:44:30You could argue that you get more done in less time and your time is worth something, too.
00:44:35But doesn't change the fact that you're paying money.
00:44:37Yeah.
00:44:39I'm not using Grok.
00:44:40I'm using GPT 5.6 Sol here.
00:44:46But if I don't forget it, I will actually switch to Grok for the actual implementation.
00:44:51Because Grok is really good at implementing plans, in my experience.
00:44:55It's super fast and it's really a great model.
00:44:57The 4.51.
00:44:59This will be a top-down game, by the way.
00:45:05Side-scrolling.
00:45:06And yes, sorry for the flashbang.
00:45:21Do you ever go back and revisit your skills?
00:45:23Yeah.
00:45:24All the time.
00:45:24All the time.
00:45:26I really change my skills almost every day.
00:45:31Because I have certain things I'm not happy with.
00:45:33I see certain behaviors I don't like.
00:45:36I'm tweaking those skills all the time.
00:45:38I have them in a repository.
00:45:41I have my repository here, which has a different name than the GitHub one.
00:45:50Or just a folder in the end.
00:45:52And in there, I have those skills.
00:45:54I work in there all the time.
00:45:56Sync them back to GitHub.
00:45:58Publish them.
00:45:59And then install them through the skills registry.
00:46:05So I do that all the time.
00:46:06Yeah.
00:46:15Immo AI is such a wonderful tool for learning.
00:46:17If you are sincere, go build something.
00:46:21But then ask the LLM to teach you.
00:46:23Yeah.
00:46:24I mean, AI is really also a good tool for learning.
00:46:27And especially having it explain the code it writes can be a great way to learn about coding as well.
00:46:34Absolutely true.
00:46:35What is my opinion on Matt Pocock's skills?
00:46:37I haven't used them.
00:46:38I'm sure I've heard a lot of good things about them.
00:46:40So I assume they're good.
00:46:41But I really prefer to build my own skills and really tweak them to my liking and to the problems I'm facing.
00:46:46Because I feel that's also how I learn more about how to properly do that.
00:46:52And how I can improve my workflow with AI.
00:46:55I don't want to have someone else give me his workflow.
00:46:58I want to find my own workflow.
00:46:59That's basically my approach here.
00:47:01But I'm sure the skills are great.
00:47:03I'm vibing my own in DirectX directly.
00:47:06It's lots of fun.
00:47:06I've been working on it for a month already.
00:47:08Oh, wow.
00:47:08That's pretty cool.
00:47:13Yeah.
00:47:13I'll see how far we get here today in the browser.
00:47:17Do you go Grok heavy or medium effort eventually?
00:47:25I think I typically use high.
00:47:32Though I guess for implementing a plan, I could use medium too, to be fair.
00:47:37I would need to test this a bit more.
00:47:40We can test it now if I think about it.
00:47:42If I don't forget it.
00:47:45Hi, hello, Max.
00:47:46About nine years ago, I took your first course.
00:47:49And in three weeks, I started a senior position at Microsoft.
00:47:51Just wanted to share that.
00:47:52Well, congratulations and nine years.
00:47:55That's such a long time.
00:47:56The good old days.
00:47:57So thank you so much for being part of it back then.
00:48:00And hopefully it was helpful back then.
00:48:02Maybe it could help a bit in getting that job at Microsoft.
00:48:05So yeah, congratulations on that job.
00:48:07And thanks for sharing.
00:48:08It means a lot to me.
00:48:11Is it cheating to ask Claude to write your skills?
00:48:13No, I don't write my skills myself.
00:48:17I have AI write them.
00:48:18I tweak them myself.
00:48:19I do that.
00:48:20It's not like I blindly accept them.
00:48:21I mean, I read them.
00:48:22I ask AI for changes and I also make changes myself instead of asking over and over again.
00:48:27But I don't write the skills generally.
00:48:30But I give, as always, research, planning, discussions, and then produce something.
00:48:36I do the same for the skills.
00:48:38And you should take those skills seriously.
00:48:40They're not a lot of text, but they matter a lot.
00:48:42They get loaded a lot.
00:48:44These recent or the latest AI models, they're really good at activating skills.
00:48:49So they really can get the job done.
00:48:52But you should take time to really tweak them and improve them.
00:48:55That's my opinion, at least.
00:48:56I find skills very important.
00:48:59Also outside of AI.
00:49:00But when we talk about agent skills, they are really important.
00:49:03So I write them with AI, but that does not mean that I wipe them.
00:49:06I analyze them, plan them, and so on.
00:49:22Do you think you should be fleshing out more of the game specs up front?
00:49:25Like I noticed you didn't define your arena.
00:49:27Is it round, square?
00:49:28That's a good point.
00:49:32I probably should have done that.
00:49:34To be honest, I didn't think about it.
00:49:36Because maybe all is because of the lack in game development.
00:49:39And because my vision clearly was like bro-tado, which is rectangle.
00:49:43And since I gave it that information that it's a bro-tado like.
00:49:47It may actually be able to infer a lot from that.
00:49:50But you're absolutely right.
00:49:51I probably should have flashed out the game spec in greater detail.
00:49:56That being said, I also want to at least vibe code that a bit.
00:50:00So that we get something onto the screen.
00:50:02And we don't spend the entire stream just planning and creating a spec.
00:50:08You were absolutely right for a more serious game.
00:50:10You want to spend more time on that though.
00:50:13Just as you do on other projects.
00:50:24Yeah.
00:50:25But we'll see which results we get here.
00:50:27Once the plan is done.
00:50:28And once we start implementing it.
00:50:31If we maybe should have flashed it out a bit more.
00:50:38So right now, as it seems.
00:50:42It's still editing that plan.
00:50:44And it's editing it.
00:50:50Based on reviewer feedback.
00:50:55Which is the idea.
00:50:56It creates a plan based on research and so on.
00:51:00And then it has a reviewer review it.
00:51:02And here for example.
00:51:03Let's see what was reviewed.
00:51:07So it has.
00:51:08It had an instruction in the plan.
00:51:10To actually test it with agent browser.
00:51:12Which is a tool I have installed.
00:51:14Or I have available.
00:51:16So that it takes a look at the game.
00:51:19And that was refined.
00:51:24Okay.
00:51:24It was basically split.
00:51:26To have a bit more detail here.
00:51:27On how to analyze this.
00:51:30Okay.
00:51:32Yeah.
00:51:32So the reviewer basically flagged.
00:51:34That this is a bit too vague.
00:51:35And that more details are needed.
00:51:37As it seems.
00:51:40And this can take a while.
00:51:41Obviously.
00:51:41Because.
00:51:42Because of how I built.
00:51:43That create plan skill.
00:51:44It has all these review cycles.
00:51:46And I also had it in the past.
00:51:48Oh it's done.
00:51:49No.
00:51:49But I had it in the past.
00:51:50That it would almost enter an infinite loop.
00:51:53So I tweaked those skills.
00:51:54And gave it some instructions.
00:51:58To not add more and more complexity.
00:52:00Because it did that too.
00:52:02It entered that infinite loop.
00:52:04And made the project more and more complex.
00:52:06Handling all kinds of esoteric niche cases.
00:52:09I don't want that.
00:52:10So now.
00:52:12Currently.
00:52:12I think I'm at a nice sweet spot.
00:52:15So now.
00:52:16Let's take a look.
00:52:17Look at that plan.
00:52:21That it created here.
00:52:26Thoughts for the character creator for this game.
00:52:28I'm not sure if we'll get to that today.
00:52:30But no.
00:52:30I have no thoughts yet.
00:52:32And I also don't know yet.
00:52:33How exactly I'll do the sprite part.
00:52:35I don't have any sprites.
00:52:37I don't plan on using any service for that.
00:52:39Maybe we'll just AI generate some images.
00:52:42And see if that gets us anywhere.
00:52:44But yeah.
00:52:44Well.
00:52:45We'll see.
00:52:45So that's the plan now.
00:52:46For the basic vertical slice.
00:52:49Problem in target.
00:52:50Replace the phaser version placeholder.
00:52:52Which I currently have in the code.
00:52:53With the first playable combat increment.
00:52:55A bounded arena.
00:52:56Keyboard controlled player.
00:52:58Randomly spawning pursuers.
00:53:00Invisible pistol.
00:53:01That automatically fires projectiles.
00:53:04960 by 540 logical arena.
00:53:07Scaled to fit the browser.
00:53:09Generated placeholder visuals.
00:53:10Normalized WSD.
00:53:12Arrow movement.
00:53:14Player world bound collision.
00:53:15That's good.
00:53:16I did not think about that.
00:53:18But we should have that.
00:53:19Perimeter enemy spawning.
00:53:2240 enemy safety cap.
00:53:24Sounds all good.
00:53:25Out of scope.
00:53:26Player health them.
00:53:27Okay.
00:53:27So we don't have any.
00:53:29Health or death yet.
00:53:30We don't have timed waves.
00:53:31We have no HUD.
00:53:32Yeah.
00:53:33We'll keep it basic.
00:53:33That's okay.
00:53:34We don't have audio.
00:53:34That's okay.
00:53:37One arena scene.
00:53:38Enemy.
00:53:39Projectile and pistol classes.
00:53:42So then.
00:53:43What.
00:53:44It split that into various tasks.
00:53:46T1.
00:53:47Start the phaser arena shell.
00:53:51And I would normally read that all in great detail.
00:53:53I don't want to bore you.
00:53:54So I'll just.
00:53:55And we have that vibe coding theme.
00:53:56So I'll just glimpse over it.
00:53:58But that sounds about right.
00:54:00Creating that arena.
00:54:02It has some checks.
00:54:05It wants to run.
00:54:06Including agent browser.
00:54:07To take a look.
00:54:08At the arena.
00:54:09Which is important.
00:54:11Add player movement.
00:54:12And enemy pressure.
00:54:14Add invisible pistol.
00:54:16And the projectiles.
00:54:19Yeah.
00:54:20I think that will be fine.
00:54:22So.
00:54:22What we can do now.
00:54:23Is we can grab that.
00:54:25Plan.
00:54:26And I could stay in that session.
00:54:28But.
00:54:28Yeah.
00:54:29I mean.
00:54:30Yeah.
00:54:30Context is still fine.
00:54:31But what I typically do is.
00:54:32I either start a new session.
00:54:34Or in Pi.
00:54:34I also like the tree feature.
00:54:37Because every session in Pi.
00:54:38Is a tree of messages.
00:54:40And you can.
00:54:41Move around them.
00:54:42And create new branches.
00:54:43So what you could do now.
00:54:44Is we could go back.
00:54:52To this state.
00:54:53And then you.
00:54:54So now you're jumping back.
00:54:56In a tree.
00:54:56And you're opening up.
00:54:58A new branch.
00:54:59And now you could.
00:55:00Tell it.
00:55:00To summarize.
00:55:01All the work.
00:55:02That was in the branch.
00:55:03You're leaving.
00:55:04Also with a custom prompt.
00:55:05Or you have no summary.
00:55:06Which is fine for me.
00:55:07And now I'm back.
00:55:08In a way earlier point.
00:55:09Where we just set up the project.
00:55:11So I jumped back.
00:55:12From the entire planning phase.
00:55:14It's still there though.
00:55:15It's still part of the tree.
00:55:16I could go back to it here.
00:55:18But I'm now in a new branch.
00:55:20In this branch here.
00:55:22Where we only occupy.
00:55:236% of the context.
00:55:25It's the same session.
00:55:26But a different branch.
00:55:28And now here.
00:55:29I can say.
00:55:31I can use my implement plan skill.
00:55:33Which I created.
00:55:35And point at that plan.
00:55:38Which I did not copy.
00:55:39As it seems.
00:55:39But it's this one here.
00:55:41And I now can also change the model.
00:55:43I wanted to do that.
00:55:44So I'll switch to grog 4.5.
00:55:46And also switch to.
00:55:51Yeah.
00:55:52Maybe let's go medium.
00:55:53Let's see how well it does there.
00:55:56Now let's go high.
00:55:58We're vibe coding.
00:55:59I need all the power I can get.
00:56:02Grok also has a bigger context window.
00:56:03Which is why we.
00:56:05Now use even less context.
00:56:07Because the upper limit is higher.
00:56:08And now with that.
00:56:09We can go ahead.
00:56:10That will activate the skill automatically.
00:56:13Since I used it like this.
00:56:14And now.
00:56:15Yeah.
00:56:16It's activating more skills.
00:56:17Which I point at.
00:56:18In my implement plan skill.
00:56:20And now it goes ahead.
00:56:21And again.
00:56:22Launches sub agents.
00:56:23And does all that stuff.
00:56:24And hopefully builds that game.
00:56:27I will also already.
00:56:31Stop that.
00:56:32Dev server.
00:56:33Since these agents.
00:56:34Of course.
00:56:34Have a tendency.
00:56:35Of launching it on its own.
00:56:36And I want.
00:56:37Don't want it to clash.
00:56:44You sometimes.
00:56:46Have the LLM.
00:56:47Do a retrospective.
00:56:48On your complete history.
00:56:49Of session chat.
00:56:50And give you.
00:56:51Swat analysis.
00:56:52Your way of working.
00:56:53Where it could be improved.
00:56:54If that is a great idea.
00:56:54No I don't do that.
00:56:56But that is a good idea.
00:56:57I should be doing that.
00:56:59And I will do that.
00:57:00Thank you so much.
00:57:01That is a good idea.
00:57:02And tree is awesome indeed.
00:57:04Yeah.
00:57:04Tree is such a cool feature in Pi.
00:57:06Really like it a lot.
00:57:09Got it.
00:57:09The best flag.
00:57:10Looking forward to the progress.
00:57:11Thanks for all you do.
00:57:12Thank you so much.
00:57:13Thanks for joining.
00:57:13And have a great day.
00:57:16And yeah.
00:57:16We'll see.
00:57:20What it does here.
00:57:21Now.
00:57:21Of course.
00:57:22Whilst this is working.
00:57:23We could spin up.
00:57:25A second agent.
00:57:26Cloud code.
00:57:26Or another Pi instance.
00:57:32I'll just.
00:57:34I'm just not sure.
00:57:35If there is anything else.
00:57:37I mean.
00:57:37We could generate.
00:57:38Some game sprites.
00:57:42I can start.
00:57:43A new Pi instance here.
00:57:44And say let's.
00:57:46We're building.
00:57:48At game.
00:57:49We'll.
00:57:50Need some sprites.
00:57:52Eventually.
00:57:53Please analyze.
00:57:55The file.
00:57:59And then.
00:58:00Share some suggestions.
00:58:01On which sprites.
00:58:03We.
00:58:04Should.
00:58:05Create.
00:58:05For a basic.
00:58:07V1.
00:58:08Or V dot.
00:58:10Or V dot.
00:58:12Zero dot five.
00:58:14Do not create anything yet.
00:58:20So.
00:58:23Obviously.
00:58:23We could also think about this ourselves.
00:58:25But we're live coding.
00:58:26A bit at least.
00:58:27And.
00:58:28I have not a lot of experience.
00:58:29With games.
00:58:30So obviously.
00:58:30I know that we need something.
00:58:31For the player.
00:58:32And that we need something.
00:58:33For the enemy.
00:58:34But I don't know.
00:58:34How many sprites we need.
00:58:36Because we want to have animations.
00:58:38So.
00:58:38I want to have some.
00:58:39Suggestions there.
00:58:41And that was quick.
00:58:43I'm still on crock.
00:58:44Grock is quicker.
00:58:46That makes sense.
00:58:49So just so that you.
00:58:51See.
00:58:52I'm still on grock.
00:58:53Here.
00:58:54And grock.
00:58:54Isn't it quite a bit.
00:58:55Faster.
00:58:57So.
00:58:59Whoops.
00:59:00Hello.
00:59:01Can I please.
00:59:03Get that.
00:59:04Thank you very much.
00:59:06Here we go.
00:59:07And it's opening this page.
00:59:08Automatically.
00:59:09By the way.
00:59:09But on a different screen.
00:59:10Which is why.
00:59:11I have to bring it over.
00:59:12So it is suggesting.
00:59:14Yeah.
00:59:14Obviously.
00:59:14We need player enemy.
00:59:16We need something.
00:59:16For a projectile.
00:59:17Though I think we could maybe just.
00:59:18Use a rendered.
00:59:20Circle there.
00:59:22Like a sphere.
00:59:23Arena floor bounds.
00:59:26Yeah.
00:59:27We can use a solid fill.
00:59:28I agree.
00:59:29Yeah.
00:59:30I mean.
00:59:30Initially.
00:59:31We'll just have rectangles.
00:59:32And so on.
00:59:33But then thereafter.
00:59:35It would probably be nice.
00:59:37To have some actual.
00:59:41Sprites.
00:59:42Yeah.
00:59:42So.
00:59:43At some.
00:59:44Point.
00:59:44We want.
00:59:46Some actual.
00:59:47Sprites.
00:59:48Images.
00:59:50How many.
00:59:52Frames.
00:59:52Would you suggest.
00:59:55For player.
00:59:57Enemy.
01:00:00And which art style.
01:00:01Would you suggest.
01:00:04And obviously.
01:00:05Typically.
01:00:06You may want to.
01:00:07Think about the art style.
01:00:08Yourself.
01:00:09But.
01:00:10I don't want to think too much.
01:00:11Here.
01:00:12I want to.
01:00:13I want to.
01:00:14Embrace the vibes.
01:00:16And also.
01:00:16Chat with you guys.
01:00:17So.
01:00:18But in general.
01:00:19It should be a bro.
01:00:20Tato clone.
01:00:21I want to have.
01:00:21Like a similar.
01:00:22Cartoony.
01:00:23Style.
01:00:23That's my.
01:00:24Take on it.
01:00:25But we'll see.
01:00:25What it suggests.
01:00:30So what do we have.
01:00:31Here.
01:00:34Um.
01:00:35Yeah.
01:00:35Initially.
01:00:35We have.
01:00:36That static stuff.
01:00:37That's clear.
01:00:37But then.
01:00:38It suggests.
01:00:38Two to four.
01:00:39Sprites.
01:00:41Which makes sense.
01:00:41We're not building.
01:00:42Like a.
01:00:423d.
01:00:43Triple a game.
01:00:44Here.
01:00:45We just need something.
01:00:46That indicates movement.
01:00:48Or.
01:00:48Or being hurt.
01:00:49Or something like that.
01:00:50So we don't need.
01:00:51A lot of sprites for that.
01:00:52And it makes sense.
01:00:53That for example.
01:00:54For being hurt.
01:00:54We just.
01:00:55Flash.
01:00:55Or we just.
01:00:56Tint the sprite.
01:00:57Instead of having.
01:00:58An extra.
01:00:58Stride.
01:01:00Extra.
01:01:01Sprite.
01:01:02Um.
01:01:05Um.
01:01:06Chunky pixel art.
01:01:10Yeah.
01:01:10I don't want.
01:01:10I don't want.
01:01:15Pixel art.
01:01:16I would prefer.
01:01:19Cartoon.
01:01:21Illustration.
01:01:23Styles.
01:01:25Does that make sense?
01:01:28I'm no.
01:01:30Expert.
01:01:31At naming.
01:01:32Art.
01:01:33Styles.
01:01:34So.
01:01:34Please.
01:01:35Give me some.
01:01:36Suggestions.
01:01:39Um.
01:01:40Oh yeah.
01:01:41And it should be.
01:01:43Yeah.
01:01:43Top down.
01:01:44I'll add that later.
01:01:47Yes.
01:01:47Cartoon illustration.
01:01:48Makes total sense here.
01:01:49By the way.
01:01:50The nice thing about her.
01:01:50Is.
01:01:51I still see.
01:01:51That this is going on here.
01:01:53On the left.
01:01:54So I don't need to check.
01:01:55If it's done.
01:01:56It isn't done.
01:01:57It's still going on.
01:01:57So that's nice.
01:01:58This one here.
01:01:59On the other end.
01:01:59Is done.
01:02:01Um.
01:02:01So.
01:02:01Clean vector cartoon.
01:02:04That sounds good.
01:02:07Very readable in swarms.
01:02:08Yeah.
01:02:09We'll.
01:02:09Okay.
01:02:09We'll go clean.
01:02:11We'll go clean.
01:02:14Vector cartoon.
01:02:17And.
01:02:21Follow your other suggestions.
01:02:24It'll be top.
01:02:26Oops.
01:02:27It'll be top down.
01:02:29Please update game.
01:02:32Dot md respectively.
01:02:35Thereafter.
01:02:36Get.
01:02:37Commit.
01:02:38That file.
01:02:40So we're updating that game.
01:02:41Default with those art choices.
01:02:44Um.
01:02:47How do you monitor.
01:02:48Multi agents work in pi.
01:02:49This is herder.
01:02:51That's an extra tool.
01:02:52A terminal multiplexer.
01:02:53So that is.
01:02:56Herder.
01:02:56Written like that.
01:02:57That allows me to have multiple agents.
01:02:59In one terminal.
01:03:00But then each terminal.
01:03:01Is just one pi instance.
01:03:02But herder.
01:03:03Is doing the multi-agent monitoring.
01:03:06Um.
01:03:06You were my first programming teacher.
01:03:08That is amazing.
01:03:09I hope.
01:03:10It was helpful.
01:03:10Thank you so much.
01:03:11For the shout out.
01:03:13Um.
01:03:14Good to see you again.
01:03:15Master Obi-Wan.
01:03:15Yeah.
01:03:16I try to stream every Thursday.
01:03:17So.
01:03:18Um.
01:03:19Unfortunately.
01:03:20Doesn't work out.
01:03:21On every Thursday.
01:03:21But today it does.
01:03:22So yeah.
01:03:23I'll try to do it.
01:03:24Every Thursday.
01:03:25Is grog multimodal?
01:03:27Um.
01:03:27No.
01:03:28None of these models.
01:03:29Which I use.
01:03:30Can build the sprites.
01:03:31But I have.
01:03:33Another skill for that.
01:03:35Which is also in that repository.
01:03:36I have.
01:03:37The generate image.
01:03:38Skill here.
01:03:39Which is like.
01:03:39A utility skill.
01:03:41It has a script.
01:03:42Which was wipe coded.
01:03:44To be honest.
01:03:44A script.
01:03:45Which uses the fall.
01:03:46API.
01:03:48Um.
01:03:49For which I have an API key.
01:03:51Which is not in the repository.
01:03:52Obviously.
01:03:53And now for some reason.
01:03:54That isn't loading.
01:03:55Normally it is loading.
01:03:57That is essentially a service.
01:03:58That hosts various models.
01:04:00Also for image generation.
01:04:02And I have a script here.
01:04:03Which talks to that service.
01:04:04To generate an image.
01:04:05And then I have a skill.
01:04:07That explains how to use that script.
01:04:08So that I can ask an agent.
01:04:10And it will craft the prompt.
01:04:12Invoke that script.
01:04:13Generate the image.
01:04:14Store that image.
01:04:15In the right place.
01:04:16And handle that script.
01:04:17For me essentially.
01:04:19So that is what we can use.
01:04:20For image generation later.
01:04:22The models I'm using here.
01:04:24Can't natively generate images.
01:04:26As far as I know.
01:04:29Hello Max.
01:04:29I use VS Code.
01:04:30Codex CLI is AI.
01:04:31Mostly generate boilerplate.
01:04:33Bug finding.
01:04:33But I prefer to refactor.
01:04:35The rest manually.
01:04:35Is this workflow inefficient?
01:04:37To be honest.
01:04:37We're still all figuring out.
01:04:39How to work with AI.
01:04:40And I think there are some people.
01:04:42Who overshoot.
01:04:42By using AI for everything.
01:04:44And not doing anything on their own.
01:04:45And just building a fancy loops.
01:04:47Which lead nowhere.
01:04:48In my opinion.
01:04:49But I may be wrong.
01:04:50And then there are people.
01:04:51That don't use AI at all.
01:04:52And I think that's also not a good idea.
01:04:54But the middle ground.
01:04:55We're all still figuring out.
01:04:57How to use AI.
01:04:58What to do manually.
01:05:00What to offload to AI.
01:05:02And things will look different.
01:05:03In six months again.
01:05:04I'm sure.
01:05:05So yeah.
01:05:06Use whatever works well for you.
01:05:09But be open.
01:05:10That's my suggestion.
01:05:11At least.
01:05:12Be open to the technology.
01:05:13Try things out.
01:05:14Experiment.
01:05:15And take it from there.
01:05:22Do you use different work trees for.
01:05:24I use them a ton.
01:05:25And merge conflicts are easily resolved.
01:05:27Yeah.
01:05:27I do use work trees too.
01:05:29For implementation.
01:05:31My sub agents are incentivized.
01:05:34To use work trees.
01:05:36And I'm actually not sure.
01:05:38If it did use one here.
01:05:41It may.
01:05:43Do that.
01:05:44I absolutely do.
01:05:46Tell it to use work trees.
01:05:48Or to consider using it.
01:05:49But the.
01:05:50The orchestrating agent.
01:05:51So here.
01:05:52This agent.
01:05:53Which is spinning up.
01:05:54All those sub agents.
01:05:55Is deciding.
01:05:56Whether to use a work tree.
01:05:57And is responsible.
01:05:58For merging them back together.
01:05:59So I don't even.
01:06:00Necessarily see that.
01:06:03But it should.
01:06:04At least consider.
01:06:05Using them.
01:06:05Yeah.
01:06:08Is it going to be.
01:06:08A free JS based game.
01:06:09No.
01:06:10It's going to be.
01:06:10A 2D game.
01:06:17I'm very new to this building game stuff.
01:06:19So what I did.
01:06:19Was to ask my agent.
01:06:20To build some boilerplate.
01:06:21I could use first.
01:06:22And now.
01:06:23Can wrap my head around.
01:06:24Yeah.
01:06:24I'm new to it too.
01:06:25So I have.
01:06:26Absolutely no experience.
01:06:27With that.
01:06:28That.
01:06:28And I have no idea.
01:06:29What the best approach is.
01:06:30It's just.
01:06:31What I'm trying out here.
01:06:37Please take a moment.
01:06:38To drink some water.
01:06:39Stretch a little.
01:06:40I'll do the stretching later.
01:06:43I'll cycle home later.
01:06:44So I'll get some.
01:06:45I'll move a bit.
01:06:47Later.
01:06:48But the water is a good tip.
01:06:49But I don't want to drink too much.
01:06:50Because I don't want to.
01:06:51Head to the toilet.
01:06:56A tutorial about.
01:06:57Get to work trees.
01:06:58Sure.
01:06:58I may do one.
01:06:59In my experience.
01:07:00One of the nicest things.
01:07:01About work trees is.
01:07:03If you let the AI.
01:07:04Handle it though.
01:07:05All the merge.
01:07:06Conflicts and stuff.
01:07:09AI.
01:07:10The latest models.
01:07:12With the right skills.
01:07:12And so on.
01:07:13Are really good at.
01:07:14Handling work trees.
01:07:15On their own.
01:07:16But still.
01:07:16That is something.
01:07:17That may be worth.
01:07:19Diving a bit deeper into.
01:07:20In a tutorial.
01:07:21I agree.
01:07:25The fall AI.
01:07:26Pricing is.
01:07:28Is pretty good.
01:07:29It's like the normal.
01:07:30Pricing you would get.
01:07:31Directly from the provider too.
01:07:33But the advantage.
01:07:34Is that.
01:07:34You don't have to sign up.
01:07:35With a bunch of different.
01:07:36Providers.
01:07:37But you have it.
01:07:37All in one place.
01:07:38Through one API.
01:07:39That's why I like them a lot.
01:07:41I used to use.
01:07:42Replicate.
01:07:42But Replicate.
01:07:43Was very very.
01:07:45Often down.
01:07:47And not very reliable.
01:07:48So that's why I switched.
01:07:54Yeah.
01:07:58I'm trying to experiment.
01:07:59With some ideas.
01:08:00From the loops people.
01:08:01And it's driving me insane.
01:08:02Yeah.
01:08:02I mean.
01:08:03Some things work.
01:08:04I also have a loop here.
01:08:05I have reviewers.
01:08:07Being kicked off.
01:08:08And then.
01:08:08I have the main agent.
01:08:10Evaluating.
01:08:12The reviewer feedback.
01:08:13And incorporating that.
01:08:14That is also a loop.
01:08:16I'm just not building.
01:08:17The entire game.
01:08:18In one single loop.
01:08:19With one single prompt.
01:08:21But having those.
01:08:23Sub loops.
01:08:24Makes sense.
01:08:24But it's.
01:08:25It's such a hyped up term.
01:08:27Because.
01:08:28Coding agents.
01:08:30Even a year ago.
01:08:31Already were about loops.
01:08:32I mean.
01:08:32The agentic loop.
01:08:34Is the heart.
01:08:34Of every coding agent.
01:08:35That you send a prompt.
01:08:37And that it keeps on going.
01:08:38Keeps on calling tools.
01:08:39So loops.
01:08:40Are a natural part of it.
01:08:41I'm.
01:08:42Just not a fan.
01:08:42Of making it seem like.
01:08:44You now.
01:08:44Just have to draft.
01:08:46The perfect markdown file.
01:08:47And then send it off.
01:08:49And then.
01:08:49Two days later.
01:08:50You get back.
01:08:51The finished.
01:08:52Bug free.
01:08:53Perfect project.
01:08:54That's the part.
01:08:56Which I'm not a fan of.
01:08:57Framing it like this.
01:08:58But.
01:08:58Obviously.
01:08:59You're using.
01:09:00Small loops.
01:09:01Everywhere.
01:09:02And that is totally fine.
01:09:04And that is what I try to use.
01:09:05And see.
01:09:06What can I put in a loop.
01:09:07So which.
01:09:09Having like a reviewer.
01:09:10Makes sense.
01:09:11But at some point.
01:09:12You want to step in.
01:09:13And also take a look.
01:09:14Yourself.
01:09:15At least in my experience.
01:09:20Can you please let us know.
01:09:21Your work experience.
01:09:22Till now.
01:09:23The difference.
01:09:23Do you see in initial phase.
01:09:25And now in short.
01:09:25If you can.
01:09:26You mean.
01:09:27What I worked at.
01:09:28Or.
01:09:29It's not entirely clear.
01:09:30Or how we work.
01:09:31With AI.
01:09:32Or before AI.
01:09:33It's not entirely clear.
01:09:33To me what you mean.
01:09:38Yeah.
01:09:38And I absolutely agree.
01:09:39Experiment with.
01:09:41As much as you can.
01:09:42This technology.
01:09:43Is so new.
01:09:44And changing.
01:09:44So rapidly.
01:09:45You got to experiment.
01:09:46And then.
01:09:46Got to be open.
01:09:53Why am I not using VS Code.
01:09:59Where you can also work.
01:10:00With many terminals.
01:10:02Mostly.
01:10:03Because VS Code.
01:10:04Kept on crashing on me.
01:10:05I was super annoying.
01:10:07Suddenly.
01:10:08After a couple of hours.
01:10:10It would just.
01:10:10Randomly crash.
01:10:11And I would have to reopen.
01:10:13All my sessions.
01:10:13And that was just annoying.
01:10:15So.
01:10:16That's one of the main reasons.
01:10:18Why I'm just not using VS Code.
01:10:19It was too unstable.
01:10:20Too memory hungry.
01:10:22Yeah.
01:10:28Did I choose Pi.
01:10:29For any specific reason.
01:10:33For me.
01:10:34It's really just.
01:10:35A minimal core.
01:10:36And that I can then.
01:10:37Tweak it.
01:10:38And extend it.
01:10:39Into whatever.
01:10:40I want it to be.
01:10:41I can ask it.
01:10:42To build.
01:10:42Its own extensions.
01:10:44I can throw away.
01:10:45Those extensions.
01:10:46If I'm not happy with them.
01:10:47I can install extensions.
01:10:48By other people.
01:10:49It has a very minimal core.
01:10:51It doesn't pollute.
01:10:53The context.
01:10:53With any built in.
01:10:54System prompt.
01:10:55That's invisible.
01:10:56Or maybe hard.
01:10:57To change.
01:10:58And that is the part.
01:11:00I like.
01:11:00The minimalism.
01:11:01That I can then build.
01:11:02Into whatever I want.
01:11:03But I said before.
01:11:05And it's really important.
01:11:08All these coding.
01:11:09Agents are great.
01:11:10Really.
01:11:11It's not like.
01:11:13You have to use.
01:11:14Pie and Herder.
01:11:15To be cool.
01:11:17That's just.
01:11:17For people like me.
01:11:18Who like tweaking.
01:11:19And building.
01:11:20Their own stuff.
01:11:21You can absolutely.
01:11:23Just use the.
01:11:23Codex desktop app.
01:11:24Or Claude code.
01:11:25Or the Claude code.
01:11:26Desktop app.
01:11:27Or T3 code.
01:11:28Or any other.
01:11:29Right.
01:11:29They're all amazing.
01:11:30All these agents.
01:11:31Are amazing.
01:11:31And we'll get the job done.
01:11:34I just like.
01:11:35Being able to.
01:11:35To build.
01:11:37Or to turn this agent.
01:11:38Into whatever.
01:11:39I want it to be.
01:11:40What app is this?
01:11:41This is Herder.
01:11:44Written like.
01:11:46This.
01:11:46With the pie coding agent.
01:11:48Greetings from Regensburg.
01:11:50Greetings back.
01:11:51From Munich.
01:11:52Regensburg is.
01:11:53Such a nice city.
01:11:55I always like it.
01:12:00When I get there.
01:12:01It's such a.
01:12:02Such a beautiful city.
01:12:03My parents.
01:12:04Went to the university.
01:12:06In Regensburg.
01:12:07So I have fond.
01:12:10Well I don't have personal fond memories.
01:12:12But.
01:12:12It's kind of a special place.
01:12:14Good.
01:12:15So.
01:12:16The plan was.
01:12:17Implemented.
01:12:20Let's see.
01:12:24Okay.
01:12:26So now.
01:12:29It'll be interesting.
01:12:32What do we have?
01:12:37Okay.
01:12:38So we have a player.
01:12:39I can move.
01:12:41It's a bit blurry.
01:12:43But we have a player.
01:12:43We have enemies spawning.
01:12:45We don't have any health system yet.
01:12:46I believe.
01:12:47I don't think I can die.
01:12:49I don't know.
01:12:52But yeah.
01:12:52We're shooting.
01:12:53We're moving.
01:12:56And that.
01:12:56Generally is.
01:12:58A bro-tado.
01:12:59I would say no.
01:13:00I don't know if that will keep on going forever.
01:13:01Or I don't think we have a timer.
01:13:06So I will tell it that it's a bit blurry.
01:13:09So something may be off with the rendering.
01:13:12Not sure if you can see it on the stream.
01:13:14But it's a bit blurry.
01:13:16The shapes are a bit blurry.
01:13:18And of course.
01:13:19Yeah.
01:13:19I also want this to.
01:13:21To end at some point.
01:13:22I want a health bar.
01:13:24But yeah.
01:13:25Generally that works.
01:13:27So.
01:13:29I'll say git commit.
01:13:30Looks good.
01:13:40Byron.
01:13:41Greater all other states.
01:13:43I'll not comment on that.
01:13:44I don't want to.
01:13:45Create any enemies.
01:13:47But I like living in Bavaria.
01:13:52One of the plugins.
01:13:53Yeah.
01:13:53Maybe.
01:13:54But to be honest.
01:13:55I'm happy with the setup.
01:13:56I'll not go back to just use code.
01:13:58Now.
01:13:58We can take a look at the code though.
01:14:00And I do like VS code for that.
01:14:01I'm just not a new vim guy.
01:14:04Because I have no idea how the code should look like.
01:14:06Because I've never used phaser.
01:14:07But let's see what we got.
01:14:08So we select an element.
01:14:10Where we render the game.
01:14:11And we create a game.
01:14:13With.
01:14:14From the phaser engine.
01:14:15By creating a new phaser game.
01:14:18Instance.
01:14:21Here we.
01:14:22We render it to that.
01:14:24App element.
01:14:27I don't know what phaser auto is.
01:14:29This setting will auto detect.
01:14:30If the browser is capable of supporting WebGL.
01:14:33Got it.
01:14:34Set the width and height of the.
01:14:36Arena as it seems.
01:14:37Background color.
01:14:38Set up the physics model.
01:14:40As it seems scale.
01:14:43Scene as the arena scene.
01:14:44Okay.
01:14:44So that is important.
01:14:46Arena scene.
01:14:49So that is.
01:14:50So we work with scenes.
01:14:52And an arena scene.
01:14:54Extends the phaser scene.
01:14:55Defines what's going on in the arena.
01:14:57As it seems.
01:14:59So we create that scene.
01:15:02Scene by setting up some.
01:15:04Physics boundaries.
01:15:05So I guess that's for a collision.
01:15:07We add.
01:15:09A rectangle.
01:15:11So that is like the arena background.
01:15:12I assume.
01:15:14Or is that for.
01:15:17Collision.
01:15:18Not sure.
01:15:21Maybe for a collision.
01:15:25No.
01:15:25I guess it's a background.
01:15:28Borders.
01:15:29So we have like the.
01:15:31Strokes around the board.
01:15:32Around the arena as borders.
01:15:36Then we call a bunch of methods.
01:15:37For adding a player.
01:15:38Enemy group.
01:15:41Projectile group.
01:15:42So I guess.
01:15:43Stuff gets grouped.
01:15:44For efficient management.
01:15:48And then we have.
01:15:49Update.
01:15:49Which I assume.
01:15:50Runs once every.
01:15:52Frame.
01:15:56Placeholder textures.
01:15:59Yeah.
01:15:59So that's just.
01:16:00The circles being rendered.
01:16:02Create the player.
01:16:04The player entity.
01:16:08Set collider world bound.
01:16:09So that we can't leave the arena.
01:16:12Then we have the enemy group.
01:16:13Where we spawn our enemies.
01:16:16And we should have.
01:16:18When do we spawn a new enemy?
01:16:19Do we.
01:16:20Try.
01:16:21Try spawn enemy.
01:16:23Okay.
01:16:23Okay.
01:16:24So we basically check.
01:16:24If 800 milliseconds passed.
01:16:29And then we spawn a new enemy.
01:16:33I don't know.
01:16:33If that is good code.
01:16:34By the way.
01:16:34If we're following.
01:16:35The best practices here.
01:16:36Because again.
01:16:37I have no experience.
01:16:38With phaser.
01:16:39I'm just trying to understand.
01:16:40What's going on here.
01:16:42Handle projectile enemy overlap.
01:16:44So that's.
01:16:46Essentially.
01:16:47Doing damage detection.
01:16:49As I understand it.
01:16:50So.
01:16:50Or we.
01:16:51Hit detection.
01:16:52I mean.
01:16:55We get.
01:16:56And again.
01:16:57I'm not sure.
01:16:57If that is all efficient.
01:16:58And stuff.
01:16:59But.
01:17:00Let's hope for the best.
01:17:05Input handling.
01:17:07Up.
01:17:07Down.
01:17:07Left.
01:17:08Right.
01:17:09That's where we set up.
01:17:10Wasd.
01:17:13Update player movement.
01:17:18And then we got.
01:17:19For enemy spawning.
01:17:20We.
01:17:22Do that randomly.
01:17:23Just.
01:17:24Of course.
01:17:24Limited by the arena.
01:17:26Width and height.
01:17:27So that the enemies.
01:17:28Don't spawn.
01:17:28Outside of the arena.
01:17:31Update enemy pursuit.
01:17:32So that's basically.
01:17:33The targeting system.
01:17:34So that they move.
01:17:35To the object.
01:17:35That the enemy moves.
01:17:36To the player.
01:17:39Destroy projectiles.
01:17:40That expired.
01:17:41Or left the arena.
01:17:42Bounds.
01:17:42Okay.
01:17:43So that projectiles.
01:17:44That didn't hit.
01:17:45For some reason.
01:17:45Don't keep on flying.
01:17:46Or being rendered forever.
01:17:48Okay.
01:17:48So that makes sense.
01:17:50Weapon pistol.
01:17:52It's a class.
01:17:57Which also has a cooldown.
01:17:58So that it's not firing.
01:18:00Non-stop.
01:18:03Tries to find the nearest enemy.
01:18:04Now.
01:18:05I know that stuff like this.
01:18:06Can always be.
01:18:07Difficult for performance.
01:18:09If you run.
01:18:10Detection to find.
01:18:11The nearest enemy.
01:18:12Or to find the player.
01:18:14If you run that every frame.
01:18:15And I'm not sure actually.
01:18:18We seem to be running this every frame.
01:18:21That may be inefficient.
01:18:22To be honest.
01:18:23But I don't know.
01:18:24How phaser handles that.
01:18:26And if I'm missing something here.
01:18:27But of course.
01:18:28If you're scanning.
01:18:29Like all enemies.
01:18:30And all the player.
01:18:32And you do that every frame.
01:18:33That could.
01:18:35Be a performance problem.
01:18:36At some point.
01:18:40But yeah.
01:18:40Right now.
01:18:40It seemed to work fine.
01:18:46Okay.
01:18:47Yeah.
01:18:47Okay.
01:18:48I think I understand.
01:18:49What's going on here.
01:18:51Let me quickly.
01:18:52Catch up in chat.
01:18:54Well.
01:18:54No.
01:18:55Before I do that.
01:18:55I'll actually.
01:18:56Start the next task.
01:18:57Now.
01:18:58Again.
01:18:58I could do this.
01:18:59In a new.
01:19:01Session.
01:19:02But.
01:19:03There's so much.
01:19:04Empty space.
01:19:04In this context.
01:19:05We know.
01:19:05That we can also.
01:19:06Continue here.
01:19:07And I can't just say.
01:19:09Player.
01:19:10And enemy.
01:19:11Shapes.
01:19:12Were kind of.
01:19:13Blurry.
01:19:15Investigate.
01:19:16Carefully.
01:19:17And do.
01:19:18Any research.
01:19:19Necessary.
01:19:20I want to.
01:19:20Nudge it.
01:19:21Add to.
01:19:21Diving into the docs.
01:19:23To find out.
01:19:24Why that.
01:19:26May be.
01:19:26Happening.
01:19:28No rushing.
01:19:30Take.
01:19:30Your time.
01:19:33Do not.
01:19:34Edit anything.
01:19:35Just share.
01:19:36Your findings.
01:19:37So I want.
01:19:38It to.
01:19:38Investigate.
01:19:39And then.
01:19:39Explain to me.
01:19:40Why.
01:19:41Why.
01:19:41That may.
01:19:42Be blurry.
01:19:47I usually.
01:19:48Try to live.
01:19:48In Berlin.
01:19:49I did.
01:19:49Actually live.
01:19:50In Berlin.
01:19:5010 years ago.
01:19:51I lived there.
01:19:52For two years.
01:19:57Is it good practice.
01:19:58To ask.
01:19:58Pi agent.
01:19:59To make changes.
01:19:59And then tweak them.
01:20:00In VS code.
01:20:01Now.
01:20:02The problem.
01:20:03With all those agents.
01:20:04In my experience.
01:20:04Is that if you.
01:20:05Tweak something.
01:20:06Whilst the agent.
01:20:07Is working.
01:20:07It will just.
01:20:08Constantly throw away.
01:20:09Your changes.
01:20:10Totally ignores them.
01:20:11And annihilates them.
01:20:12So changing.
01:20:13Whilst the agent.
01:20:13Is working.
01:20:14Is not a good idea.
01:20:15You would have.
01:20:16To do that.
01:20:16In a separate.
01:20:17Work tree.
01:20:17Or something like that.
01:20:23Yeah.
01:20:23It's true.
01:20:24AI always.
01:20:24Adds pointless.
01:20:25Type code annotations.
01:20:26Like white return.
01:20:27That is true.
01:20:29It does that.
01:20:30Because the entire.
01:20:31Type inference stuff.
01:20:32Is of course.
01:20:32Hidden to the AI.
01:20:34But it.
01:20:35It does.
01:20:36Therefore.
01:20:36Add a lot.
01:20:37Of boilerplate.
01:20:37To the code.
01:20:38For sure.
01:20:40Which version.
01:20:41Of TypeScript.
01:20:41Is being used.
01:20:42Good question.
01:20:44We're using.
01:20:475.9.3.
01:20:49So we could.
01:20:50Be using seven.
01:20:52To be honest.
01:20:53But yeah.
01:20:59Max.
01:20:59Joint.
01:21:00The AI hype train.
01:21:00No.
01:21:01I'm just.
01:21:01Interested in.
01:21:03Staying in the industry.
01:21:04That has nothing.
01:21:05To do.
01:21:05With the hype train.
01:21:07But AI.
01:21:08Is not a fad.
01:21:09And.
01:21:10There is a lot of hype.
01:21:11Around AI.
01:21:12For sure.
01:21:14But.
01:21:15You gotta adapt.
01:21:16Or you gotta go.
01:21:17And I.
01:21:18Rather adapt.
01:21:23Because AI.
01:21:25Clearly.
01:21:26Is useful.
01:21:26In the future.
01:21:31Why.
01:21:31Player enemy.
01:21:32Shaves look blurry.
01:21:35This is almost certainly.
01:21:36Display scaling.
01:21:36Small.
01:21:37Soft edge.
01:21:38Place holder.
01:21:38Textures.
01:21:41Canvas is upscaled.
01:21:42After a low res.
01:21:43Render.
01:21:47Tiny circle textures.
01:21:53So we're basically rendering that pretty low res.
01:21:56And then we're scaling it up.
01:21:57That's not good.
01:21:59Okay.
01:22:00So we should fix it.
01:22:02I also.
01:22:05Took a look at the.
01:22:07Code.
01:22:08Not sure if the.
01:22:11Player.
01:22:14Detection code.
01:22:18Enemy detection.
01:22:21Code.
01:22:22For projectiles.
01:22:25Will cause.
01:22:26Performance issues.
01:22:30Please.
01:22:32Investigate.
01:22:33And share your.
01:22:36Thoughts.
01:22:38Also look.
01:22:40For.
01:22:41Common.
01:22:43Common.
01:22:44Best.
01:22:45Practices.
01:22:47And see what.
01:22:48The docs.
01:22:49Say.
01:22:52Um.
01:22:56Yeah.
01:22:56The model I used.
01:22:57Was not trained on.
01:22:57TypeScript 7.
01:22:58Definitely not now.
01:23:01So we could.
01:23:01Of course update.
01:23:03Uh it's just not too important.
01:23:04Here.
01:23:05Can I use react.
01:23:06For a game.
01:23:07That requires.
01:23:07Thousands of actions.
01:23:08Being accurate.
01:23:09Within.
01:23:10Under one second.
01:23:11My understanding is.
01:23:12No.
01:23:14If you're building.
01:23:14Something like this.
01:23:15Because.
01:23:16If you're rendering.
01:23:17Something to a canvas.
01:23:18Which is in the end.
01:23:19What we're doing.
01:23:22That.
01:23:24Is.
01:23:25That can be.
01:23:26GPU optimized.
01:23:27But that's not react.
01:23:28Rendering to the dom.
01:23:30That's a different process.
01:23:32So.
01:23:33My understanding is.
01:23:34That there is.
01:23:36No way of doing that.
01:23:37With just react.
01:23:38In a performant way.
01:23:40But then again.
01:23:41I'm absolutely not.
01:23:42A game developer.
01:23:43Especially.
01:23:44In general not.
01:23:45But I also have.
01:23:46No game development experience.
01:23:48In the browser.
01:23:49Um.
01:23:55So.
01:23:56Let's see.
01:23:58Okay.
01:23:58At the current scale.
01:23:59We have no performance issues.
01:24:01They match.
01:24:01Phaser.
01:24:02Phaser's own patterns.
01:24:05Okay.
01:24:08We'll be fine.
01:24:09Then I think.
01:24:12Let's fix the blurriness.
01:24:16Then.
01:24:18Go ahead.
01:24:20And.
01:24:21Share your thoughts.
01:24:23On how to do that.
01:24:24I.
01:24:26Could ask it.
01:24:26To create a plan.
01:24:27But then again.
01:24:28It'll do all the.
01:24:29Reviewing stuff.
01:24:29I could tell it.
01:24:30To not do that though.
01:24:32But.
01:24:32Um.
01:24:33I think.
01:24:33That should be easy enough.
01:24:34To not.
01:24:35Need a detailed plan.
01:24:36I just wanted.
01:24:37To write down.
01:24:38What plans to do.
01:24:39Um.
01:24:40Yeah.
01:24:41Do not.
01:24:41Worry about efficiency.
01:24:42Until it has surfaced.
01:24:43That is true.
01:24:44That is true.
01:24:46Um.
01:24:47Hello from Kiev.
01:24:47I like your courses.
01:24:48You are the best teacher.
01:24:49Hello back.
01:24:50Thank you so so much.
01:24:52Uh.
01:24:52Happy to hear.
01:24:53You're.
01:24:53You're liking the.
01:24:54The courses.
01:24:56Is herder creating.
01:24:57The dot MD files.
01:24:57For the specs.
01:24:59Um.
01:25:00No.
01:25:00The MD files.
01:25:01I asked the model.
01:25:02To create.
01:25:04And I for example.
01:25:05Have a pie extension.
01:25:06That automatically.
01:25:08Puts the last agent.
01:25:09Message.
01:25:10It spits out.
01:25:10Into a MD file.
01:25:12In some temp folder.
01:25:14Which I can then.
01:25:14Open up easily.
01:25:16It's phaser is one of the first.
01:25:21JavaScript game engines.
01:25:22Oh okay.
01:25:22It's good to know.
01:25:27Okay.
01:25:28So let's see.
01:25:30Again normally.
01:25:31I don't need to.
01:25:32Manually copy this around.
01:25:33It's just because.
01:25:34I have these.
01:25:35Two screens going on here.
01:25:37How to fix the blur.
01:25:38Highest impact.
01:25:39Render.
01:25:39At device pixel density.
01:25:41High impact.
01:25:42Stop using tiny soft circles.
01:25:45Suggested implementation order.
01:25:50Okay.
01:25:52Go ahead.
01:25:53And implement this.
01:25:57So now I don't have a plan file.
01:25:58Because again.
01:25:59This should be a fairly simple.
01:26:01Fix.
01:26:02So it was hopefully able to do that.
01:26:04Just like this.
01:26:06We'll see.
01:26:07We'll see.
01:26:08In the meantime.
01:26:09I mean.
01:26:10I can.
01:26:11Go to my other agent.
01:26:12And here we decided.
01:26:14Before.
01:26:14On the.
01:26:15On the art style.
01:26:16And of course.
01:26:16Right now.
01:26:17I'm just rendering circles.
01:26:18But.
01:26:20We could now also.
01:26:22Ask it to generate.
01:26:24Images.
01:26:26And I have no idea.
01:26:27How well that will work out.
01:26:29Let's now.
01:26:31Generate.
01:26:32Actual sprites.
01:26:35Choose some.
01:26:37Reasonable.
01:26:40Images for.
01:26:41Player and enemy.
01:26:45Create.
01:26:47One sprite.
01:26:49Sheet.
01:26:50For the player.
01:26:52And one for.
01:26:54The enemy.
01:26:56With.
01:26:58The frames.
01:27:01The frame.
01:27:02Sprites inside.
01:27:03So I want one image.
01:27:04With multiple images inside.
01:27:06So to say.
01:27:07I think that's how you do it.
01:27:08In game development.
01:27:09I have no idea.
01:27:12Make sure to.
01:27:13Properly position.
01:27:15Those sprites.
01:27:17So that.
01:27:17Extracting.
01:27:18Works.
01:27:19Consistently.
01:27:20I don't want it.
01:27:21To randomly.
01:27:21Put those images.
01:27:22Into the.
01:27:23Image.
01:27:27So create.
01:27:28Exactly.
01:27:29Two images.
01:27:31One.
01:27:31For the player.
01:27:33With its frames.
01:27:35And one.
01:27:36For the enemy.
01:27:44Yeah.
01:27:46And we'll see how that goes.
01:27:48It should now use.
01:27:49My create image.
01:27:51Skill.
01:27:52My generate image skill.
01:27:53And it does.
01:27:54And that.
01:27:54Allows it.
01:27:55To send the request.
01:27:56To fall.
01:27:57Which I mentioned before.
01:28:03And it can then use.
01:28:04An image generation model.
01:28:05It's using gpt image 2.
01:28:06Because I hard coded that.
01:28:08Into my script there.
01:28:10To generate.
01:28:11Those images.
01:28:12So that's what it's doing now.
01:28:13It's.
01:28:13It generated a prompt.
01:28:14Essentially.
01:28:15And now it's sent off.
01:28:16Two requests.
01:28:17Which are now.
01:28:18Being processed.
01:28:19This one here.
01:28:20Failed.
01:28:20As it seems.
01:28:21The first one.
01:28:21Is still going on.
01:28:22Not sure.
01:28:23Why this one.
01:28:23You've.
01:28:24Both failed.
01:28:26Is this an issue.
01:28:27With fall.
01:28:30Requested image size.
01:28:31Exceeds the max.
01:28:32Max.
01:28:33Okay.
01:28:33It requested something.
01:28:35Invalid here.
01:28:38Yeah.
01:28:38But it should be able to.
01:28:40Figure that out.
01:28:43And we'll see how that goes.
01:28:46And the other agent is.
01:28:47Yeah.
01:28:48I mean.
01:28:48That's.
01:28:48That's the nice.
01:28:49Thing about the agents.
01:28:50The bad thing is.
01:28:51I'm paying for that.
01:28:52I could.
01:28:53Of course.
01:28:53Write the prompt myself.
01:28:54And execute the script myself.
01:28:56And then I would not.
01:28:56Be paying for that.
01:28:57The advantage is.
01:28:58I just give it.
01:28:58Some vague instructions.
01:29:00And it.
01:29:00Can figure something out.
01:29:02Obviously vague instructions.
01:29:03Is not what you want.
01:29:04If you have a specific plan.
01:29:05But I don't have that here.
01:29:06So.
01:29:07Yeah.
01:29:07It's good enough.
01:29:08And we'll see what we get.
01:29:12Will I.
01:29:16Make any herder.
01:29:17Deep dive video.
01:29:19Yeah.
01:29:20I think that is something.
01:29:21I could do.
01:29:22I'm still also.
01:29:23Getting better at it.
01:29:25But why not.
01:29:28Probably makes sense.
01:29:30FPS counter.
01:29:31FPS counter.
01:29:32Would be nice to have.
01:29:33That's true.
01:29:34And a health bar.
01:29:35Would also be nice to have.
01:29:37You can use a texture atlas.
01:29:38And gave it a for sure.
01:29:39Sprite sheet.
01:29:40It's small overhead.
01:29:41It's easier these days.
01:29:42For sure.
01:29:43Than having separate images on disk.
01:29:46Phaser has an optimizing atlas.
01:29:48I think.
01:29:48Okay.
01:29:49Yeah.
01:29:49I mean.
01:29:50I'll generate that.
01:29:51And then I'll just tell AI.
01:29:52Hey.
01:29:53Can we use that?
01:29:53And we'll see.
01:29:57Is it normal to feel pressure.
01:29:58To set much shorter deadlines.
01:30:01Yeah.
01:30:01I think you can feel pressured.
01:30:02That you need to get more done.
01:30:04In shorter or equal time.
01:30:07And I think it's important.
01:30:08To actively.
01:30:09At least for yourself.
01:30:10It's harder.
01:30:11In the work context.
01:30:12If your boss.
01:30:13Has certain expectations.
01:30:14For sure.
01:30:15But for yourself.
01:30:16I think you have to.
01:30:16Actively push back.
01:30:18And kind of.
01:30:20Slow down.
01:30:21And relax.
01:30:22And try to relax.
01:30:23And not.
01:30:24Because if you enter that.
01:30:26That spinning wheel.
01:30:27Where you try to go faster.
01:30:28And faster.
01:30:29And faster.
01:30:29I think that's.
01:30:30Basically a recipe.
01:30:31For burning out.
01:30:33So.
01:30:36Yeah.
01:30:37Did you forget.
01:30:38Make no mistakes.
01:30:42I.
01:30:42Yeah.
01:30:44I tried to avoid that.
01:30:50So.
01:30:51Yeah.
01:30:51Let's see.
01:30:52Which images.
01:30:52We get here.
01:30:53And if they are.
01:30:54So.
01:30:54One image is done.
01:30:56And it should now.
01:30:56Copy that.
01:30:57Into this project.
01:30:58Here.
01:30:58I hope.
01:31:02Both images.
01:31:02Are done.
01:31:03Now.
01:31:05Inspecting.
01:31:05The generated.
01:31:07Sorry.
01:31:08Sheets.
01:31:12So.
01:31:18I can show you.
01:31:20What it generated.
01:31:21This is.
01:31:22I guess.
01:31:22The enemy.
01:31:24To be honest.
01:31:26Three of these.
01:31:26Four images.
01:31:27Look equal to me.
01:31:29I'm not sure.
01:31:30If this was really.
01:31:31Any animation.
01:31:32Maybe the feet.
01:31:33Moved a bit.
01:31:35Yeah.
01:31:35Maybe.
01:31:38And I mean.
01:31:38That is.
01:31:40That's not actually.
01:31:40Transparent.
01:31:41Right.
01:31:42That is just.
01:31:43I think.
01:31:44At least.
01:31:45I'm not sure.
01:31:47That may just be.
01:31:48Like that.
01:31:50Fake.
01:31:51Transparency.
01:31:52Background.
01:31:52That causes us.
01:31:53Problems.
01:31:53I should probably.
01:31:54Have told it.
01:31:55To use.
01:31:55White background.
01:31:56And then.
01:31:56Remove it.
01:31:57Programmatically.
01:32:03But we'll see.
01:32:04If it's able.
01:32:04To make something.
01:32:05Work here.
01:32:06It looks like.
01:32:06It.
01:32:08Wrote a little.
01:32:08Script.
01:32:09To process this.
01:32:14Yeah.
01:32:14We'll see.
01:32:15What it gives us.
01:32:15Here.
01:32:23Did it.
01:32:23Add them.
01:32:24Here.
01:32:24To the project.
01:32:28It did.
01:32:30And I was wrong.
01:32:31This was.
01:32:31Transparent.
01:32:32Background.
01:32:33Cool.
01:32:34And that's.
01:32:35Us.
01:32:35Seemingly.
01:32:36And that is.
01:32:37There's a little bit.
01:32:38A little bit of movement.
01:32:38Here.
01:32:39With the feet.
01:32:40Okay.
01:32:41Um.
01:32:42Yeah.
01:32:43So.
01:32:43Looks like.
01:32:43We got.
01:32:44Sprite sheets.
01:32:48And it's done.
01:32:51Got.
01:32:51Two.
01:32:51Sprite sheets.
01:32:52Here.
01:32:53And we'll.
01:32:53Then.
01:32:54Soon.
01:32:54See.
01:32:54If.
01:32:54We can.
01:32:55Use them.
01:33:00Are you.
01:33:00Using.
01:33:01The new.
01:33:01Bun.
01:33:01That's.
01:33:02Rust.
01:33:02Um.
01:33:04I'm not sure.
01:33:04If I have installed that.
01:33:06Because it's been a while.
01:33:07Since I last worked.
01:33:08With Bun.
01:33:08No.
01:33:08I still have the old one here.
01:33:10But I will be using it.
01:33:11Yeah.
01:33:16Uh.
01:33:17These days.
01:33:17You should be using fable five.
01:33:18Which delegates tasks to agents.
01:33:20Yeah.
01:33:20Fable five is very good.
01:33:22But to be honest.
01:33:23I'm delegating to agents here too.
01:33:25Right.
01:33:26So.
01:33:26You don't need fable five for that.
01:33:28Sub agents is a general concept.
01:33:30And we're using sub agents here too.
01:33:32Um.
01:33:33Um.
01:33:36Not here.
01:33:37Because I told it to just fix an issue.
01:33:39But earlier.
01:33:39We did of course.
01:33:41So.
01:33:42You should be using sub agents.
01:33:43I agree on that.
01:33:44And I agree that fable five is a very good model.
01:33:47Um.
01:33:48There is something about keeping the texture atlas evenly divisible by two for optimization.
01:33:54Okay.
01:33:56Huh.
01:33:57Yeah.
01:33:57We'll see.
01:33:58Um.
01:33:58I'm sure we could improve it by a lot.
01:34:05I mean.
01:34:05These images are also maybe rather large.
01:34:08This one has.
01:34:09Almost 400 kilobytes.
01:34:11This one here is 600.
01:34:12So that may be too large.
01:34:14But.
01:34:16I don't know.
01:34:17We'll see if it makes it work.
01:34:19And if we then need to improve or change something.
01:34:22Um.
01:34:26Right now I'm just.
01:34:28Waiting for it to.
01:34:30To actually.
01:34:32Finish up this part here where it tries to fix the blurriness.
01:34:38Maybe we can spin up the.
01:34:40The dev server and take a look.
01:34:44Yeah.
01:34:45Doesn't look blurry anymore.
01:34:48Okay.
01:34:48Cool.
01:34:50Cool.
01:34:50Cool.
01:34:50Cool.
01:34:50Cool.
01:34:50So it should be done momentarily here.
01:34:52I guess.
01:34:54It's just still testing it.
01:34:56Because I told it to.
01:34:57In the skills.
01:34:58And we could of course cancel it.
01:35:00But I'll let it finish.
01:35:02And then we'll try to.
01:35:03Use that sprite sheet.
01:35:11And it's done.
01:35:14Good.
01:35:14Good.
01:35:14So get commit your changes.
01:35:27And now once it is done with committing.
01:35:31Come on.
01:35:38By the way.
01:35:38One thing I also have those models do.
01:35:45I added a global agents and default.
01:35:47That tells them to write quite detailed.
01:35:51Commit messages.
01:35:53Because.
01:35:55I think at least.
01:35:56That models used.
01:35:58To also sometimes inspect.
01:35:59The git log.
01:36:01And then I see that.
01:36:02As a little bit of extra context.
01:36:04That explains what happened.
01:36:05In a project.
01:36:07But that is one of the parts.
01:36:08Where I'm experimenting with.
01:36:09And where I'm not sure.
01:36:10If it will work out.
01:36:12And the engine I'm using.
01:36:12Is phaser by the way.
01:36:15Okay.
01:36:15So now we can go back.
01:36:17To an earlier point.
01:36:18Again here.
01:36:18Using that tree feature.
01:36:23We implemented the arena.
01:36:28The next step.
01:36:29Is that I want to use.
01:36:32The sprites.
01:36:36So now there are different parts.
01:36:37Where we could go back to.
01:36:40But I'll go back to the very beginning.
01:36:42Where we just set up the base project.
01:36:43Now I will choose to summarize.
01:36:45With a custom prompt here.
01:36:47Summarize what we.
01:36:49Worked on and added.
01:36:52Including a list of files.
01:36:54Touched with short per file.
01:37:00Summaries.
01:37:02So again using that.
01:37:03Get that pie.
01:37:05Branch feature.
01:37:06And often I use that.
01:37:08Without summarizing.
01:37:09But now I want to keep.
01:37:10Some of the context.
01:37:11Of what it did.
01:37:12But go back to a way.
01:37:13Earlier point in time.
01:37:14In that session.
01:37:15And by the way.
01:37:16When you jump around.
01:37:17In a session with tree.
01:37:18You are not editing the code.
01:37:19It's just the session context.
01:37:21Basically.
01:37:22So now we have.
01:37:22The branch summary.
01:37:24And in there.
01:37:25We see.
01:37:25What did it put there?
01:37:26It added this.
01:37:27To the context here.
01:37:29That we implemented.
01:37:30The arena.
01:37:33What we have.
01:37:35It points at specific commits.
01:37:39And it mentions those files.
01:37:41Including the plan file.
01:37:42Which is nice.
01:37:43A future agent.
01:37:44Could then look at that file.
01:37:45To understand what we did.
01:37:47So that's good.
01:37:48And now we can continue.
01:37:49Now I'll switch.
01:37:52Back to.
01:37:52GPT 5.6.
01:37:54Sol here for planning.
01:37:56And I want to continue now.
01:37:57And use those sprites.
01:37:59We have.
01:38:00Sprites for player.
01:38:01And enemy.
01:38:02In.
01:38:04Public.
01:38:05Sprites.
01:38:06No.
01:38:06What is the folder?
01:38:07Public assets.
01:38:08Sprites.
01:38:10Let's use those now.
01:38:13There are multiple.
01:38:15Multiple frames.
01:38:17In each.
01:38:17Sheet.
01:38:18For.
01:38:20Animations.
01:38:21Analyze those images.
01:38:23Dive into.
01:38:26GameMD.
01:38:27And.
01:38:28Do the necessary.
01:38:30Research.
01:38:31To understand.
01:38:32How to.
01:38:33Use.
01:38:34Sprite sheets.
01:38:37And if they need.
01:38:39Any adjustments.
01:38:41And how to implement.
01:38:44Animations.
01:38:45In this project.
01:38:48Do not edit.
01:38:51Anything yet.
01:38:52Just do the research.
01:38:56And analysis.
01:38:58Then share your thoughts.
01:39:00And suggestions.
01:39:03And now we'll send it off.
01:39:04And let it do that.
01:39:05For that next step.
01:39:06Because again.
01:39:06I have no idea how it works.
01:39:08So I want to learn myself.
01:39:11One thing I noticed.
01:39:12About your Pi.
01:39:13It's not asking for permissions.
01:39:14Is Pi easier to use.
01:39:15With permissions.
01:39:16So by default.
01:39:16Pi doesn't have.
01:39:17Any permissions check.
01:39:18It has unlimited permissions.
01:39:20Which can of course.
01:39:21Be risky.
01:39:22Which is why.
01:39:23Normally.
01:39:23By the way.
01:39:24I don't code.
01:39:25On my.
01:39:26Laptop here.
01:39:27Are doing it now.
01:39:30To have.
01:39:31So that I didn't have to go through.
01:39:33All the initial setup.
01:39:34With being able to preview.
01:39:35An app.
01:39:36That's running on my VPS.
01:39:38But normally.
01:39:38I don't code on my.
01:39:40Laptop.
01:39:41Because if something breaks.
01:39:42It only breaks on some VPS.
01:39:44Then where I can easily.
01:39:45Restore stuff.
01:39:46Because it's all on GitHub.
01:39:47So that's one thing.
01:39:48But it doesn't.
01:39:49It doesn't have that permission.
01:39:50Management system.
01:39:51Now you can.
01:39:52Install.
01:39:53There are a lot of packages.
01:39:55And you can also build your own ones.
01:39:56As I mentioned.
01:39:58But you can install.
01:40:01Packages like the guardrails.
01:40:03Extension.
01:40:05Which adds some permission checks.
01:40:08You can do that to get some.
01:40:09But I disabled that.
01:40:10To have more flexibility.
01:40:12And instead.
01:40:13Again.
01:40:13I.
01:40:14I typically work in an environment.
01:40:16Where it can't break a lot.
01:40:19That's my approach here.
01:40:25Do you live code often like that?
01:40:27No.
01:40:27Actually not.
01:40:28Because when I live code.
01:40:30I feel the.
01:40:32The urge to at least.
01:40:33Somewhat entertain people.
01:40:35And also of course.
01:40:36Interact.
01:40:37But if I really code.
01:40:39And that's why I'm doing.
01:40:40A bit of wipe coding here.
01:40:42If I really code.
01:40:44I'm not very talkative.
01:40:46I'm just.
01:40:48Deeply.
01:40:48Concentrated.
01:40:49And yeah.
01:40:50So I don't live code a lot.
01:40:59You know.
01:40:59It's always fun at Christmas.
01:41:00Family gatherings.
01:41:01Where they're in awe.
01:41:02With simple AI things.
01:41:03Meanwhile.
01:41:04You're sitting there.
01:41:04If you only knew.
01:41:05What I'm doing.
01:41:06Like right now.
01:41:06Remote control.
01:41:07Yeah.
01:41:08I mean.
01:41:08The gap.
01:41:09Between what we're doing.
01:41:10And what we know about.
01:41:12And what other people.
01:41:13To some degree.
01:41:14Know and use.
01:41:14Is immense.
01:41:16And you can really.
01:41:18Totally.
01:41:20Stun people.
01:41:21By showing them.
01:41:23What you can do.
01:41:24I recently.
01:41:27I posted it on X.
01:41:28I think I.
01:41:30Used AI.
01:41:31To just tell.
01:41:32I just ask it.
01:41:33Hey.
01:41:33I got this.
01:41:34Unoptimized video.
01:41:35Please optimize it.
01:41:36And so on.
01:41:36So super simple task.
01:41:38Of course.
01:41:39But stuff like that.
01:41:40Or build.
01:41:41Build a Microsoft.
01:41:42Excel sheet.
01:41:43With AI.
01:41:43Or anything like that.
01:41:46That can be totally.
01:41:47Impressive.
01:41:48For.
01:41:48For other people.
01:41:50Yeah.
01:41:51The gap is real.
01:41:52Right now.
01:41:54I really like.
01:41:54Pi.
01:41:55Because it's so small.
01:41:56And has few tools.
01:41:56That saves context size.
01:41:58Yeah.
01:41:59For me too.
01:41:59It's very efficient.
01:42:00Very minimal.
01:42:01And you can build it.
01:42:01Into exactly.
01:42:02What you want.
01:42:04Am I using.
01:42:05Inter font.
01:42:06Or JetBrains font.
01:42:07I actually don't know.
01:42:08I'm using the default.
01:42:10Herder shipped with.
01:42:11Herder and ghosty.
01:42:12This is ghosty.
01:42:13As the terminal.
01:42:14Herder running.
01:42:15Inside it.
01:42:15Then pi.
01:42:16Inside herder.
01:42:17And I have not.
01:42:17Configured any fonts here.
01:42:19So I actually.
01:42:20Don't know.
01:42:21I think herder.
01:42:22Has some theming system.
01:42:24But I.
01:42:25I actually did not.
01:42:29Yeah.
01:42:29It has some themes.
01:42:30But I don't know.
01:42:31What the.
01:42:32What the fonts are.
01:42:36Yeah.
01:42:37I'll stick to.
01:42:38Capuchin.
01:42:39Yeah.
01:42:40I'll stick to.
01:42:40Capuchin.
01:42:47Okay.
01:42:47So now.
01:42:47We'll hopefully.
01:42:48Soon learn.
01:42:49How we can use.
01:42:49Those images.
01:42:50I'll not.
01:42:51Add more images.
01:42:52For now.
01:42:52But what we can.
01:42:53Already do.
01:42:54Here in that.
01:42:55Other agent.
01:42:55We can start.
01:42:56A new session here.
01:42:57And I'm using.
01:42:58GPT 5.6.
01:42:59Sol.
01:42:59In high mode here.
01:43:00And we can ask.
01:43:01Or we can plan ahead.
01:43:03So.
01:43:04What I.
01:43:04Again.
01:43:05What I like to do.
01:43:06Is.
01:43:06Say something.
01:43:06Say something like.
01:43:08We're building games.
01:43:08So point at that file.
01:43:11Please analyze.
01:43:14The current.
01:43:15Code base.
01:43:16In depth.
01:43:17Step by step.
01:43:18Without rushing.
01:43:19Doing that.
01:43:20To make sure.
01:43:21Or to increase.
01:43:21The chances.
01:43:22Of it really diving in.
01:43:24As a next.
01:43:26Step.
01:43:26I want.
01:43:28To add.
01:43:30A health.
01:43:31Bar.
01:43:33Floating.
01:43:34Above.
01:43:35The players.
01:43:36Head.
01:43:39An entire.
01:43:40Health.
01:43:41And.
01:43:41Whoops.
01:43:43Head.
01:43:43Sorry.
01:43:45An entire.
01:43:46Health.
01:43:46And death.
01:43:47System.
01:43:49For player.
01:43:51And.
01:43:53Enemies.
01:43:54Oops.
01:43:55Enemies.
01:43:56And.
01:43:57A timer.
01:43:59So that the.
01:44:02Wave.
01:44:02Ends.
01:44:03After.
01:44:0460 seconds.
01:44:06If the player.
01:44:07Is.
01:44:07Alive.
01:44:08We show.
01:44:09A.
01:44:11You won.
01:44:13Screen.
01:44:15Otherwise.
01:44:16Game over.
01:44:18Screen.
01:44:19If.
01:44:20If the player.
01:44:20Died.
01:44:23From both.
01:44:24Screens.
01:44:25We.
01:44:25Should.
01:44:26Be able.
01:44:27To start.
01:44:27A new game.
01:44:28Now again.
01:44:29This is a task.
01:44:29You could consider.
01:44:30Splitting up.
01:44:31Into smaller tasks.
01:44:32But.
01:44:33Since we're using.
01:44:34A game engine.
01:44:35I'm.
01:44:35I think it can.
01:44:36Do that.
01:44:36In one go.
01:44:38But otherwise.
01:44:38The hud.
01:44:39May be a separate task.
01:44:40The timer.
01:44:41May be a separate task.
01:44:42Does the.
01:44:42The game over.
01:44:43Screens.
01:44:43May be a separate task.
01:44:44But here.
01:44:45I'll have one.
01:44:46And I'll say.
01:44:47Do the necessary.
01:44:49Research.
01:44:50And analysis.
01:44:52Then share.
01:44:53Your thoughts.
01:44:55And suggestions.
01:44:56On.
01:44:57How to build this.
01:44:58So I'll not send it.
01:44:59Into planning mode.
01:45:00Right away.
01:45:01Instead.
01:45:01I want to.
01:45:02Do it.
01:45:03I want to have it.
01:45:03Do some research.
01:45:04And be able.
01:45:05To have a discussion.
01:45:06With it.
01:45:06So that I can.
01:45:07Adjust the direction.
01:45:09In which we're going.
01:45:09If I find.
01:45:10That it's the wrong direction.
01:45:12And then.
01:45:13We can.
01:45:13I can ask it.
01:45:14To really write a plan.
01:45:16Once we settled on that.
01:45:17I could also ask it.
01:45:18To build a plan.
01:45:18Right away.
01:45:19But it will go.
01:45:19Into all those.
01:45:20Review loops.
01:45:21And then.
01:45:21Just for me.
01:45:22To find out.
01:45:23That there's something.
01:45:24In there.
01:45:24Which I don't.
01:45:25Want it to do.
01:45:26Is not a good idea.
01:45:28So yeah.
01:45:28I'll do it like this.
01:45:30Now.
01:45:30The other agent.
01:45:31Is done.
01:45:32And.
01:45:33Again.
01:45:33We can.
01:45:34See.
01:45:35What it.
01:45:35Tells me here.
01:45:37That was about.
01:45:37The sprite sheets.
01:45:39Both files.
01:45:39Are valid.
01:45:40Fixed grid sheets.
01:45:45The frames.
01:45:46Are consistently.
01:45:47Centered around.
01:45:48Blah blah.
01:45:48Blah.
01:45:48So.
01:45:50Animation should not.
01:45:50Visibly drift.
01:45:51We'll see.
01:45:52Because of course.
01:45:52If those images.
01:45:53In the images.
01:45:54Are slightly off.
01:45:55We'll have broken.
01:45:56Animation.
01:45:56So we'll see.
01:45:57If that works.
01:46:10Okay.
01:46:16Potential art direction.
01:46:18Conflicts.
01:46:18Now that the player is front facing.
01:46:22Is okay.
01:46:23Because actually.
01:46:23I know.
01:46:25In games.
01:46:26There is this trick.
01:46:27Where it's top down.
01:46:28But the player is rendered.
01:46:29Front facing.
01:46:30In some games.
01:46:31At least.
01:46:31So.
01:46:32Yeah.
01:46:33That you see it actually.
01:46:36At a minimal preload scene.
01:46:37At minimal preload scene.
01:46:38I mean.
01:46:40I have no idea.
01:46:41Of how to do that.
01:46:42In phaser.
01:46:42So I'll just have to accept.
01:46:43Whatever it suggests there.
01:46:48A good starting point.
01:46:49Is displaying each.
01:46:50Frame at.
01:46:51Global logical pixels.
01:46:53So scale it down.
01:46:54Okay.
01:46:54So I guess.
01:46:55We could also.
01:46:56Theoretically.
01:46:57Ask it.
01:46:58To scale down the images.
01:46:59To make them smaller.
01:47:00But.
01:47:00Um.
01:47:01Yeah.
01:47:03If we don't run into.
01:47:04Any performance issues.
01:47:04I think I'll just.
01:47:05Leave it like this.
01:47:06So yeah.
01:47:07We'll let it do that.
01:47:09Um.
01:47:11So now.
01:47:11Since we analyze that.
01:47:12I'll ask it.
01:47:14To.
01:47:14Go ahead.
01:47:15And.
01:47:17Create a plan.
01:47:18But actually.
01:47:20It'll probably be able.
01:47:21To do it.
01:47:22Just like this.
01:47:22Because what else.
01:47:23Would be in a plan.
01:47:27Go ahead.
01:47:27And implement this.
01:47:30Make sure.
01:47:30To also analyze.
01:47:31Those.
01:47:33Changes then.
01:47:36Also in game.
01:47:37Via.
01:47:40Agent browser.
01:47:42According.
01:47:44To implement.
01:47:46Plan.
01:47:47Skill.
01:47:48Even though.
01:47:49We don't have.
01:47:50A plan file here.
01:47:51So a bit more detail.
01:47:53But I want to make sure.
01:47:53That it really follows.
01:47:55That same approach.
01:47:55Even though.
01:47:56I didn't create a plan here.
01:47:57So I'll let.
01:47:58Rock handle this again.
01:48:01And here we go.
01:48:03And the agents.
01:48:04Won't clash.
01:48:05Because the other agent.
01:48:06Is just researching.
01:48:07Not.
01:48:07Not working on it.
01:48:15Does this editor.
01:48:16Allow you to manually.
01:48:17Edit code.
01:48:21Download response.
01:48:22Does not contain.
01:48:22Of what.
01:48:25Try again.
01:48:29Oh.
01:48:29Maybe because.
01:48:29I switched model.
01:48:32And images.
01:48:32Were involved.
01:48:34Let's switch back.
01:48:34To 5.6.
01:48:36Sol.
01:48:37Looks like.
01:48:40It tried.
01:48:40To get an image again.
01:48:41Which was used before.
01:48:43And because.
01:48:43I'm now using.
01:48:44Grok.
01:48:44That doesn't work.
01:48:46Whatever.
01:48:48So.
01:48:50I.
01:48:50Yeah.
01:48:51I can.
01:48:51So.
01:48:52This is just a terminal.
01:48:53I cannot.
01:48:53Edit files there.
01:48:54I could add.
01:48:55New Vim.
01:48:56I typically.
01:48:57Just use.
01:48:58Views code.
01:48:58Because I'm used to it.
01:49:00Or alternatively.
01:49:02I also have.
01:49:06I forget the name.
01:49:07Is it spice edit.
01:49:09That's a nice little.
01:49:10Terminal editor.
01:49:11Looks a bit like.
01:49:12New Vim.
01:49:12But unlike.
01:49:13New Vim.
01:49:14It's also for people.
01:49:14Like me.
01:49:15Because you can.
01:49:15Just use the mouse.
01:49:16And then just.
01:49:17Type right.
01:49:18So that's like.
01:49:18A normal editor.
01:49:19So I can use.
01:49:20That as well.
01:49:22But that is brand new.
01:49:23I have.
01:49:24Not really worked.
01:49:25A lot with that.
01:49:28Yeah.
01:49:31But it.
01:49:31I think it's a bit more.
01:49:32Approachable for me.
01:49:33So.
01:49:35That is something.
01:49:36I may use here.
01:49:38Instead of.
01:49:40VS code.
01:49:40Maybe in the future.
01:49:41We'll see.
01:49:44What do you usually.
01:49:44Pay for API use.
01:49:46In a month.
01:49:46So I don't use any.
01:49:48Models here.
01:49:49Through the API.
01:49:50Except for image generation.
01:49:51And I don't really.
01:49:52Generate a lot of images.
01:49:53So that's just.
01:49:53A couple of cents.
01:49:55And for.
01:49:56The other models.
01:49:57I have to subscription.
01:49:57So right now.
01:49:58I have.
01:49:58Both the big.
01:49:59Open AI.
01:50:00And the big.
01:50:00Anthropic subscription.
01:50:01So it's 400 bucks.
01:50:04And for grok.
01:50:04I have my X.
01:50:06Subscription.
01:50:06Which includes.
01:50:07Some grok.
01:50:09Usage.
01:50:10So that's an extra 40 bucks.
01:50:11Which I was paying.
01:50:12Anyways for X.
01:50:13So yeah.
01:50:14440 right now.
01:50:16But that's not always the case.
01:50:17That's the case right now.
01:50:18Because there's so much happening.
01:50:19There in the model space.
01:50:20That I want to make sure.
01:50:21That I can.
01:50:22Experiment with them all.
01:50:23And play around with them all.
01:50:24As developers.
01:50:34We do tend to be in our bubble.
01:50:35Vibe coding all of this.
01:50:36But should we think of guiding.
01:50:37Our ignorant families.
01:50:39So they don't get scammed.
01:50:40By eye phishing.
01:50:40And malicious stuff.
01:50:41We absolutely should.
01:50:42I think.
01:50:43And I mean.
01:50:44It's a super difficult topic.
01:50:46At least.
01:50:47That's an experience I have.
01:50:51You want to share what's possible.
01:50:53But for one.
01:50:54Most people.
01:50:55Understandably.
01:50:56To some degree.
01:50:57Of course.
01:50:58Are not really paying for that.
01:50:59So they can't use the same tools.
01:51:01As you do.
01:51:02So whenever they try to replicate.
01:51:03What I tell them.
01:51:04They fail.
01:51:06Or they just can't.
01:51:07Try it on their own.
01:51:08So that's one issue.
01:51:09With the education.
01:51:10And of course.
01:51:11You don't want to be that guy.
01:51:12That tells other people.
01:51:13How to live their lives.
01:51:14Or do stuff.
01:51:16And a lot of people.
01:51:17Also understandably.
01:51:18Are so annoyed.
01:51:19By AI.
01:51:21That they.
01:51:22Yeah.
01:51:23Don't really want to talk about that.
01:51:24That's at least something.
01:51:25I have experienced.
01:51:26To some degree.
01:51:27Which makes it hard.
01:51:28To then.
01:51:29Help people.
01:51:30But yeah.
01:51:31You absolutely should try.
01:51:32To.
01:51:33Kind of make people aware.
01:51:34Of the risk.
01:51:35And especially.
01:51:35Of the scamming.
01:51:36As you said.
01:51:37That will happen.
01:51:37Because of AI.
01:51:38And that's already happening.
01:51:42You can use models.
01:51:43Outside their apps.
01:51:44Without using the API.
01:51:45Yeah.
01:51:46You can.
01:51:48The.
01:51:48Claude.
01:51:49Models.
01:51:50You're not allowed.
01:51:51To use.
01:51:51Outside of Claude code.
01:51:53Unless that has.
01:51:54Changed again.
01:51:55But.
01:51:56The XAI.
01:51:57Models.
01:51:58So Grok.
01:51:59And.
01:51:59The open air.
01:52:00Models.
01:52:01GPT 5.6.
01:52:02And so on.
01:52:02You can use.
01:52:03Legally.
01:52:04In Pi.
01:52:06Inside of Pi.
01:52:07You can.
01:52:07Just run.
01:52:08Slash.
01:52:09Login.
01:52:10And then.
01:52:11You can.
01:52:11Login.
01:52:12It says.
01:52:13Anthropic.
01:52:13Account here.
01:52:14But my.
01:52:14Understanding.
01:52:15Is that.
01:52:15You can.
01:52:16Only.
01:52:16Use your.
01:52:17Extra.
01:52:17Usage.
01:52:18Credits.
01:52:18Here.
01:52:18Not.
01:52:19Your.
01:52:19Normal.
01:52:19Subscription.
01:52:20But I.
01:52:20Did.
01:52:20Login.
01:52:21With.
01:52:21Codex.
01:52:21And.
01:52:22XAI.
01:52:22As you.
01:52:22See.
01:52:23And.
01:52:23Besides.
01:52:24That.
01:52:24You.
01:52:24Can.
01:52:24Also.
01:52:25Add.
01:52:26API.
01:52:26Keys.
01:52:27And I.
01:52:27Did.
01:52:27For example.
01:52:28Add.
01:52:28an open.
01:52:29Router.
01:52:29Key.
01:52:30So I.
01:52:30Can.
01:52:30Use.
01:52:31A bunch.
01:52:31Of.
01:52:31Models.
01:52:32Like.
01:52:32Kimi.
01:52:32K3.
01:52:33For example.
01:52:34Through.
01:52:34Open.
01:52:34Router.
01:52:35But there.
01:52:35I'll be.
01:52:35Paying.
01:52:36API.
01:52:36Prices.
01:52:37Which is.
01:52:37Of course.
01:52:37Robber.
01:52:38Expensive.
01:52:39But you.
01:52:39Can.
01:52:39Do.
01:52:39That.
01:52:40Yeah.
01:52:44Have I tried a local model for programming?
01:52:46I have.
01:52:46But honestly.
01:52:47It's been some time.
01:52:48But.
01:52:49To my understanding.
01:52:50They're still not good enough.
01:52:52What you could probably do.
01:52:56Is.
01:52:57You could probably.
01:52:59Do basic.
01:53:00Programming.
01:53:01Or you could like.
01:53:02Plan with a very capable model.
01:53:04And then offload certain tasks.
01:53:06To local models.
01:53:07But that's not something.
01:53:08I've experimented with.
01:53:11Um.
01:53:12Yeah.
01:53:14Yeah.
01:53:15So here.
01:53:16It's now implementing this.
01:53:17And researching.
01:53:19The.
01:53:21And creating a plan.
01:53:22So.
01:53:23I didn't ask it.
01:53:24To create a plan.
01:53:25But that's the thing.
01:53:26With.
01:53:275.6.
01:53:28Sol.
01:53:28It's sometimes just.
01:53:30Goes ahead.
01:53:31And does it anyways.
01:53:32And I should have probably.
01:53:33Told it explicitly.
01:53:34To not do it.
01:53:35Or tweak my skills again.
01:53:37But okay.
01:53:38It's fine.
01:53:39But because of that.
01:53:40It's now taking all a bit longer.
01:53:42Um.
01:53:42Stop.
01:53:43The review cycles.
01:53:44Just give me.
01:53:46What you have.
01:53:47Thus far.
01:53:49So I'm sending this message.
01:53:50As a steering message.
01:53:51So that it's injected.
01:53:52The next time the agent is ready.
01:53:54So that.
01:53:55That it doesn't continue.
01:53:57Reviewing.
01:53:58Enhancing.
01:53:59Reviewing.
01:53:59Enhancing.
01:54:00Because I just want to get an answer.
01:54:01To my original.
01:54:03Question here.
01:54:04Or.
01:54:05My original goal.
01:54:06Which was.
01:54:07That I wanted it.
01:54:07To research.
01:54:08How to implement.
01:54:09The HUD.
01:54:09And these.
01:54:10Game over screens.
01:54:14So now.
01:54:14It's cleaning up.
01:54:15Those sub agents.
01:54:16That's good.
01:54:16It should do that.
01:54:17It's good.
01:54:18That it didn't.
01:54:19Skip that.
01:54:20But then.
01:54:21Hopefully.
01:54:21Soon.
01:54:22It also.
01:54:22Just gives me an answer.
01:54:29And yeah.
01:54:29There are unexpected.
01:54:30Source changes.
01:54:31It's fine.
01:54:34So it did create a plan.
01:54:35Which is now.
01:54:36Of course.
01:54:36Not fully finished.
01:54:39Main findings.
01:54:40Enemy health.
01:54:41Death.
01:54:42Already exist.
01:54:44That's true.
01:54:45Enemies can die.
01:54:51So we should give the player health.
01:54:54Give it some contact immunity.
01:54:55Which makes sense.
01:54:56So that.
01:54:56If.
01:54:57I guess.
01:54:57If an enemy clashes.
01:54:58Into the player.
01:54:59It doesn't die instantly.
01:55:00Because every frame.
01:55:01Adds like.
01:55:02Damage.
01:55:03But that instead.
01:55:04There.
01:55:05There is an initial damage.
01:55:06And then the player.
01:55:07Has a short window.
01:55:08To move away.
01:55:08So that makes sense.
01:55:13We.
01:55:14Need run states.
01:55:15To then.
01:55:16Show the proper scene.
01:55:20Overlap.
01:55:21Callbacks.
01:55:22Run repeatedly.
01:55:22Damage immunity.
01:55:23Is required.
01:55:24To prevent.
01:55:24Instant death.
01:55:25Yep.
01:55:26Phaser.
01:55:26Scene instances.
01:55:27Are reused.
01:55:28So class.
01:55:29Feels.
01:55:29Can't rely solely.
01:55:31Absolute timestamps.
01:55:32Jump after.
01:55:33Hidden.
01:55:33Tap.
01:55:33Resume.
01:55:34Okay.
01:55:35Yeah.
01:55:36Okay.
01:55:36That sounds okay.
01:55:37So let's take a look.
01:55:38At that plan.
01:55:40That was the wrong thing.
01:55:43Here is the plan file.
01:55:48So it did create a plan here.
01:55:50Even though I did not ask for it.
01:55:56Add player health.
01:55:57Contact damage.
01:55:59At the pause.
01:56:00Save.
01:56:0060 second wave.
01:56:04Restart cleanly from both result screens.
01:56:06That is important.
01:56:08Okay.
01:56:09But I'll wait for this to finish.
01:56:11Because of course we could be using work trees here to do this in parallel.
01:56:14But yeah.
01:56:16I think this should be done soon anyways.
01:56:19Maybe we can play the game in the meantime.
01:56:22It may already be working again.
01:56:24Let's see.
01:56:28Yeah.
01:56:28We got.
01:56:30I mean.
01:56:31We're always facing the same direction.
01:56:32And so are the players.
01:56:34We.
01:56:34The enemies.
01:56:35We may need to.
01:56:36To add some logic to rotate them.
01:56:39But in general.
01:56:39We got our enemies.
01:56:40We got our player.
01:56:42Um.
01:56:43Yeah.
01:56:43It looks a bit weird when they're walking backwards.
01:56:46But.
01:56:48The.
01:56:48The sprites are being used.
01:56:49That is the main thing of course here.
01:56:52Um.
01:56:53Right now.
01:56:56So here it's still doing.
01:56:57Uh.
01:56:58More code review.
01:56:58But I'll say.
01:56:59Stop it.
01:57:01Finish the work.
01:57:03Um.
01:57:04Because.
01:57:05I.
01:57:06Gotta go soon.
01:57:07And.
01:57:08Yeah.
01:57:09I don't want it to.
01:57:11To go on forever here.
01:57:13I.
01:57:14I rather add that hut here.
01:57:17Oh episode 8.
01:57:18Yeah.
01:57:18But the stream will stay online.
01:57:20The recording will stay online on YouTube.
01:57:23And I'll try to stream again next Thursday.
01:57:25Because in general.
01:57:26I try to stream every Thursday.
01:57:28Always around that time.
01:57:30So I'll be back.
01:57:31And I'm not done yet.
01:57:33There is more to add.
01:57:35Um.
01:57:40So here.
01:57:41The goal now of course.
01:57:42Is that it finishes up.
01:57:46But somehow.
01:57:51It decided to not do that.
01:57:53What's it doing here?
01:57:58Stop reviewing.
01:57:59Finish up.
01:58:00I could of course cancel it.
01:58:03But actually I.
01:58:04Yeah.
01:58:04I.
01:58:04I wanted to clean up.
01:58:07The sub agents.
01:58:09Clean up.
01:58:09The sub agents.
01:58:11Finish.
01:58:13So I wanted to just.
01:58:14Clean up the sub agents.
01:58:15That's why I'm not.
01:58:16Just canceling it.
01:58:18Um.
01:58:23Yeah.
01:58:24And once it did that.
01:58:30We can.
01:58:32Go to the last.
01:58:33Task here for today.
01:58:35Which is adding that.
01:58:36HUD.
01:58:37And those game over screens.
01:58:38So that we have.
01:58:38A fully functional.
01:58:40At least basic game.
01:58:50Git commit.
01:58:51Your changes.
01:58:52That's also something.
01:58:53I'll add here.
01:58:55Because I wanted to commit.
01:58:56Of course.
01:59:02I mean.
01:59:02That's the thing.
01:59:04GPT 5.6.
01:59:05Sol is a bit slower.
01:59:07Grok is faster.
01:59:14But we'll get there.
01:59:33Okay.
01:59:34And now.
01:59:35We can implement.
01:59:37That other plan here.
01:59:39So in that other session.
01:59:41I'll use good old.
01:59:42PyTree.
01:59:44And go back.
01:59:45To my first.
01:59:47Message.
01:59:47Without a summary.
01:59:49And in there.
01:59:49I'll just keep that.
01:59:50We're building game.
01:59:53Implement.
01:59:53This plan.
01:59:56And.
01:59:57Actually.
01:59:57Do that with.
01:59:58Grok again.
02:00:01On high.
02:00:02And this now.
02:00:03Should trigger.
02:00:04The implement plan skill.
02:00:05And it does.
02:00:05And now it should.
02:00:07Implement that plan.
02:00:11Regarding Grok.
02:00:12There's a bug.
02:00:13That plugin hooks.
02:00:13Aren't loaded in.
02:00:14When starting a Grok session.
02:00:16Yeah.
02:00:16But I'm using.
02:00:16Grok and Pi.
02:00:18So I'm not using.
02:00:19The Grok.
02:00:20CLI.
02:00:21Which is.
02:00:21Good though.
02:00:22But.
02:00:23Possible.
02:00:23That there is a bug.
02:00:24I haven't encountered it.
02:00:25But of course.
02:00:26I actually haven't used.
02:00:28Any plugins.
02:00:28In the Grok CLI.
02:00:37Can I provide you.
02:00:38With the total tokens.
02:00:39Consumed.
02:00:42Um.
02:00:43Yeah.
02:00:43I don't even know.
02:00:44How easily.
02:00:45I can do that.
02:00:45The tokens.
02:00:47Are visible down there.
02:00:48But with all the tree usage.
02:00:52I actually don't know.
02:00:53If I can easily do that.
02:00:56Uh.
02:00:56If I would have to guess.
02:00:58Just based on what I see here.
02:00:59For this session.
02:01:00And for this session.
02:01:01I would guess.
02:01:02It would be roughly.
02:01:05Maybe around.
02:01:07Three million tokens.
02:01:11Sent out.
02:01:14But.
02:01:15Just a guess.
02:01:17I have no quick.
02:01:18And easy way of checking.
02:01:19To be honest.
02:01:22Um.
02:01:23I could ask AI.
02:01:24Sure.
02:01:25But I don't want to kick off.
02:01:26A new process.
02:01:26That takes forever.
02:01:27Because I actually got to go soon.
02:01:29So I'll just finish this up.
02:01:31Um.
02:01:38And.
02:01:38I want to see.
02:01:39It might.
02:01:39I mean.
02:01:40Thus far.
02:01:40You have to say.
02:01:41With all the research.
02:01:42And the planning.
02:01:42That we did.
02:01:43I'm quite happy.
02:01:44With the result.
02:01:45Obviously.
02:01:45This is a super.
02:01:46Super simple game.
02:01:48Um.
02:01:48But.
02:01:49We have a game.
02:01:50With real images.
02:01:51With the base.
02:01:53Gameplay.
02:01:54Gameplay loop.
02:01:54Or one of the core.
02:01:56Gameplay loops.
02:01:57Intact.
02:01:58And.
02:01:58I think that's not.
02:02:00A bad result.
02:02:01And now.
02:02:02I just want to see.
02:02:05Whether it gets.
02:02:06This done.
02:02:07This hut.
02:02:08And.
02:02:08That we actually.
02:02:09Can win.
02:02:09And lose.
02:02:10The game.
02:02:13And yeah.
02:02:14So now.
02:02:15The build.
02:02:15Past.
02:02:18Now.
02:02:18It's testing.
02:02:19The game.
02:02:19itself taking some screenshots here and i guess since the game server is up i can test as well
02:02:32so i got my hut here we're shooting enemies we got the timer the timer's a bit blurry i guess
02:02:37that's again some upscaling issues that we would have to fix that but let me try to survive here
02:02:42for um a minute to see if we can see the the game um the the u1 screen
02:02:54which should appear after one minute
02:03:00now all my gaming skills are required oh god i got hit
02:03:07come on 20 seconds
02:03:12i got hit again even but what's nice is we even have a nice hit animation there's a little
02:03:24probably not visible on on stream but um the the player has a little fade animation when it gets hit
02:03:31you won and it stops it's also a bit blurry start a new game now now let's try dying that should be
02:03:38easier at least once we have some enemies because right now we're killing them too quickly come on
02:03:44hit me so now here we're getting hit and game over so that is working that's pretty nice
02:03:52and here it's still doing some testing but i'll stop that soon because i mean as mentioned i gotta go
02:03:57um it's funny in two hours manual coding probably could have gotten you just about as far
02:04:04if you know what you're doing manual coding could have gotten you much farther except for the images
02:04:12because you've got to be able to create those assets but you can have different opinions about ai
02:04:17generated art for sure now given the fact that i don't know anything about game development and about
02:04:23phaser i would have not gotten as far in two hours i'm pretty sure and of course you can
02:04:30probably accelerate from here as you build more complex systems on top you you don't it
02:04:35you you must not forget this is a simple project for a stream where i don't want to concentrate on
02:04:40anything dealing with something i have zero experience with so i certainly wouldn't have gotten as far
02:04:48if i had done the same thing with the same knowledge level answering a chat all the time
02:04:53um but yeah sure if you knew what you were doing and you were concentrating on this you could definitely
02:04:59i would guess be at the same point um still i'm quite happy with the result here and i hope it was
02:05:08entertaining and interesting uh maybe i'll continue that game in future streams and add more complex
02:05:15systems and stuff um but until then i wish you all the best and again i'll try to stream again next
02:05:24thursday or in general every thursday the recording will stay online and i see you in the future and i
02:05:31wish you a great day evening morning whatever it is so