Hey folks , new here, and to making games in general.
I manage a small product design team in my day to day life, but have limited experience with programming, outside of a few attempts to learn, which failed before I built anything substantial.
Anyway, cut to getting my Playdate about 6 weeks ago, and getting hugely inspired by the constraints of the device, and the ease of development, that I decided to jump in and have a go.
My first project is called (working title) ArcPong, and is as the title describes, a little paddle/ball/pong style game, where you control a little arc paddle in a circle 1:1 with the crank. It's a project I'm just making in order to learn the various aspects of Playdate development, as I'm not yet convinced that the core loop is that much fun (though I plan to iterate on it a bit).
The templates were very easy to get started with even with near-zero knowledge, and I was very quickly able to get the basic arc paddle input working. The collision detection proved to be the biggest time-sink so far, and the approach currently is pretty basic with a few big downsides that I want to fix in future. If you don't have a background in math (I don't), probably don't start with something that involves so much trigonometry! XD I'm basically checking first for the distance of the ball from the centre to the distance of the arc (which is static), and then once it hits that, checks whether it's within the arc or not and either bounces back, or keeps going until it hits a screen edge.
So at this point, I start using GPT4 to help (I know, I know). Firstly, GPT4 is garbage for Playdate development specifically. It doesn't understand the Playdate SDK at all, so its code snippets almost never work unless it's a really simple change. What it is really great for though as a beginner, is it'll explain its suggestions and why it's trying something. So I'll say something like "Here's my code , but I'm seeing X unexpected behavior" and it'll be like "That's because Y, you could fix this by doing A and B", and A and B won't work, but it'll give me enough context about why the bug is probably happening, to be able to dive into documentation, this forum, stack overflow, to eventually be able to solve it in a similar way, or at least point me in a direction.
Anyway, after this weekend's work, I have a little working game with an animated cover image. Once loaded you Press A to start, and see a little countdown before launching into the game. The ball fires in a random direction, quite slowly, and each paddle hit increases your score, and the speed slightly. If you miss and the ball hits the screen edge, it resets your score and counts down again. The ball and fail sound have some placeholder synth sounds, and if you move the paddle before the ball hit, it adds a little spin to the ball which sends it in an arc which decays over time.
I'm posting here to kind of track my progress, and try to keep myself motivated.
My next steps are:
- Show score on the fail screen
- Implement top 5 high scores, saved between sessions
- Improve countdown timers to allow paddle movement while counting down (right now implemented poorly with wait() as I couldn't get timers working properly)
- Implement proper menu system with multiple actions
- Put restart game into system menu instead of on B
- Countdown when undocked/unpaused
- Tweak spin values to feel more interesting
Thanks, look forward to continue to learn and interact with the community here a bit more