Vibe coding for a gamejam
So recently, there was a gamejam from GameDev.js to produce a web game, in less than a week. A total of 420 entries! I spent ~2 hours on it, and I made the entire game by vibe coding. I feel no shame. Wake up! There's a gamejam! I was sort of thinking I would use vibe coding for this jam, not just to make my life easier, but also as an experience to try. I thought I could spend one or two evenings on it. Every day that passed, I kept delaying. The night before the jam, I saw there was 7 hours left to go, and sadly, decided it was too late to take part in this jam. Oh well, better luck next year. The next morning, somehow I woke up a bit early, two hours before the deadline. I suddenly changed my mind and proceeded on building the game in two hours. The concept Before the jam, I was already thinking to use some neat technology I conceived for controlling a game with the phone. Turn your phone into a wireless Joy-Con with SyncoPath Jack Le Hamster ・ Mar 24 #websocket #webrtc #javascript #gamedev When the theme BALANCE came out, I thought this couldn't be any more perfect. With a phone, I could control a platform to balance a ball, and make the ball go through obstacles. So I came up with that plan, and for 7 days, I did absolutely nothing. So when it was finally time to start, 2 hours before the end of the jam, that's pretty much the idea I had in mind so I went with it. I didn't have time to hook up my neat "Phone as JoyCon" technology, so instead I had the platforms controlled with the keyboard. Well, at least I had a clear idea about what to do. In most jams I've partaken before, I would spend half the time coming up with the idea, then killing off that idea and the second half of it making a new half-baked game from scratch. My expectation before starting Ahead of time, I had low expectation about the code quality, and this is fine for a game jam. I've seen people just doing "one-shot" prompts and the AI just builds the entire game from that. That wasn't my plan. I knew I had to do multiple iterations, and didn't want to have an entire game made with one single prompt. Before that, I had tried VSCode CoPilot for auto-complete. I stopped using it because I found it distracting. I also tried working with the chat of ChatGPT and Grok to build some small projects. It had some success. I wasn't sure if Cursor worked the same way. Somehow, I was thinking it might not even have a code editor, but it turns out that worked pretty much like VSCode CoPilot, but it's a bit more integrated. Unlike CoPilot which I used mostly for auto-complete and sometimes asking question, with Cursor, I spent most of my time in the chat, prompting the AI to do things. It was closer to the way I was working with Grok / ChatGPT chatbots, except I didn't have to copy and paste. How's working with Cursor? There's certainly a place for cursor. I think for prototyping, or for small project meant for learning a new technology, Cursor help getting started pretty fast. I'd say Cursor right now is very much usable and potentially useful for a lot of people. Of course, there are some quirks that make it far from perfect: Sometimes, there would be some frustrating moments, where Cursor couldn't get it right after multiple prompts. Those could be very simple features, which I could solve if I put a bit of my own effort... but hum... I guess I didn't. For instance, simply figuring out collision detection with an object to popup a victory screen. I was baffled to find out that Cursor was checking the distance with an object, instead of just using the collision event of the physics engine of the project. At times, I didn't exactly know how to express myself in proper english to inform what I want. What I wanted was very simple. Basically... wait I still don't know how to express that in English ;-P No really, just having proper physics with a ball on top of a disc. At some point, I was thinking of putting an arrow on the disc, and ask the AI to have the ball follow the arrow. That went completely off the rails. Cursor made the arrow go in random direction, the ball didn't fall at all. At the end, the right prompt was to find a good library for handling the game's physics, and it came up with "cannon.js", which I never heard of! Oh, and before that it came up with "Ammo.js" which didn't work at all. I was doubting that it even existed, but I think Cursor just didn't know how to use that library properly. Cannon.js did work like a charm though. And I still have no idea how it works! I did have the experience of Cursor going off the rails, with part of the game becoming more and more randomly broken. There was a way to just ask Cursor to revert back to a previous stage though. I don't think this was a big deal for me. The ugly side This was pretty helpful for me. I know t

So recently, there was a gamejam from GameDev.js to produce a web game, in less than a week.
A total of 420 entries!
I spent ~2 hours on it, and I made the entire game by vibe coding.
I feel no shame.
Wake up! There's a gamejam!
I was sort of thinking I would use vibe coding for this jam, not just to make my life easier, but also as an experience to try. I thought I could spend one or two evenings on it. Every day that passed, I kept delaying. The night before the jam, I saw there was 7 hours left to go, and sadly, decided it was too late to take part in this jam. Oh well, better luck next year.
The next morning, somehow I woke up a bit early, two hours before the deadline. I suddenly changed my mind and proceeded on building the game in two hours.
The concept
Before the jam, I was already thinking to use some neat technology I conceived for controlling a game with the phone.

Turn your phone into a wireless Joy-Con with SyncoPath
Jack Le Hamster ・ Mar 24
When the theme BALANCE came out, I thought this couldn't be any more perfect. With a phone, I could control a platform to balance a ball, and make the ball go through obstacles. So I came up with that plan, and for 7 days, I did absolutely nothing.
So when it was finally time to start, 2 hours before the end of the jam, that's pretty much the idea I had in mind so I went with it. I didn't have time to hook up my neat "Phone as JoyCon" technology, so instead I had the platforms controlled with the keyboard.
Well, at least I had a clear idea about what to do. In most jams I've partaken before, I would spend half the time coming up with the idea, then killing off that idea and the second half of it making a new half-baked game from scratch.
My expectation before starting
Ahead of time, I had low expectation about the code quality, and this is fine for a game jam. I've seen people just doing "one-shot" prompts and the AI just builds the entire game from that.
That wasn't my plan. I knew I had to do multiple iterations, and didn't want to have an entire game made with one single prompt.
Before that, I had tried VSCode CoPilot for auto-complete. I stopped using it because I found it distracting. I also tried working with the chat of ChatGPT and Grok to build some small projects. It had some success.
I wasn't sure if Cursor worked the same way. Somehow, I was thinking it might not even have a code editor, but it turns out that worked pretty much like VSCode CoPilot, but it's a bit more integrated. Unlike CoPilot which I used mostly for auto-complete and sometimes asking question, with Cursor, I spent most of my time in the chat, prompting the AI to do things. It was closer to the way I was working with Grok / ChatGPT chatbots, except I didn't have to copy and paste.
How's working with Cursor?
There's certainly a place for cursor. I think for prototyping, or for small project meant for learning a new technology, Cursor help getting started pretty fast.
I'd say Cursor right now is very much usable and potentially useful for a lot of people. Of course, there are some quirks that make it far from perfect:
- Sometimes, there would be some frustrating moments, where Cursor couldn't get it right after multiple prompts. Those could be very simple features, which I could solve if I put a bit of my own effort... but hum... I guess I didn't. For instance, simply figuring out collision detection with an object to popup a victory screen. I was baffled to find out that Cursor was checking the distance with an object, instead of just using the collision event of the physics engine of the project.
- At times, I didn't exactly know how to express myself in proper english to inform what I want. What I wanted was very simple. Basically... wait I still don't know how to express that in English ;-P No really, just having proper physics with a ball on top of a disc. At some point, I was thinking of putting an arrow on the disc, and ask the AI to have the ball follow the arrow. That went completely off the rails. Cursor made the arrow go in random direction, the ball didn't fall at all. At the end, the right prompt was to find a good library for handling the game's physics, and it came up with "cannon.js", which I never heard of! Oh, and before that it came up with "Ammo.js" which didn't work at all. I was doubting that it even existed, but I think Cursor just didn't know how to use that library properly. Cannon.js did work like a charm though. And I still have no idea how it works!
- I did have the experience of Cursor going off the rails, with part of the game becoming more and more randomly broken. There was a way to just ask Cursor to revert back to a previous stage though. I don't think this was a big deal for me.
The ugly side
This was pretty helpful for me. I know that this is the kind of game I could have built myself, but Cursor made it so easy and so fast. I likely wouldn't be able to complete this type of game in two hours.
Cursor also exposed me to some new library I didn't know about, and could possibly reuse in the future.
But aside from that, the thing is, I didn't really learn all that much. Cursor used some library in my code, and I still have no idea where it's used. I didn't really look at the code all that much, so I have no idea how the physics work in my game.
I think for some, this could be dangerous as this could lead to successfully completing a project without learning anything.
And completing one project doesn't mean it will always be possible. At some point, there might be a need to actually understand the code that Cursor wrote, but without that extra effort, some might never reach that point.
One major flaw in Cursor
One more interesting thing I found with Cursor, is that it was unable to figure out that the code was wrong. That seemed to make sense to me, since it couldn't test its own code, but then it hit me...
No it DOES NOT make sense. Why can't it test its own code, how can it build something without ever trying to see if it actually works?!
Imagine, it's like having a famous composer who's completely deaf!
I get that the technology isn't there yet. But some say that AI is supposedly going to replace coders. Yet it cannot even figure out if what it built works or not? That's quite laughable.
So the consequence of this, is that as a Cursor user, you become a tester for a dev who never tests, never runs its code. The AI gives you something, and it obviously does not work, and you have to tell the AI that it doesn't work, like it's blind.
I guess eventually, it will be able to verify its own output, but then will it know how to use what was built? Perhaps that's still long ways to go.
Links
Check out the game at: https://jacklehamster.itch.io/balance-your-vibe
Video of the experience
Part1:
Part2: