Posted June 17, 2025 by BonedudeGamesStudiosLLC
#Amazon Q #Arcade Classic #AI
This project was done for the 2025 Build Games Challenge: Build Classics with Amazon Q Developer CLI. The goal of the challenge is to learn about Amazon Q Developer and make a classic arcade using only prompts from Amazon Q Developer.
I chose to create Wizard Breaker, a magical twist on the classic brick breaker game. I wanted something arcadey to fit the requirements and be simple but leave room for something unique. I wanted to add a unique twist, blending wizard-themed power-ups like fireball, time slow, and orb control let me get creative while keeping the core gameplay of a brick breaker type game.
I found that breaking down prompts into layered goals helped the most. Instead of asking for "a fun power-up," I'd ask things like "What’s a power up that could destroy multiple bricks at a time?". Adding contextual text to the prompt also helped, like "classic arcade gameplay" and "brick breaker-like".
AI handled game structure and mechanics surprisingly well. From organizing the game loop and handling states to setting up class hierarchies for orbs, bricks, and effects. Collision logic and brick interactions were generated accurately and needed minimal tweaking.
AI automated basically all aspects of this project: generating consistent power-up logic, creating a flexible brick layout per level, and handling sprite drawing with conditional coloring. It also scaffolded reusable systems like the mana mechanic and orb-control physics, which would’ve taken far longer manually. I have limited Python experience and even less with PyGames, so it was really great to see how things can be done with AI.
One standout is how the orb control system uses player input plus a mana-drain mechanic:
python CopyEdit if keys[K_LCTRL] and wizard.mana > 0: self.controlled = True wizard.mana -= 0.5 # Drain mana while controlling
Another clever piece was the AOE fireball effect that checks nearby bricks and destroys them in a radius:
python CopyEdit if orb.fireball: for other_brick in self.bricks[:]: if (abs(other_brick.x - brick.x) < 100 and abs(other_brick.y - brick.y) < 100): self.handle_brick_destruction(other_brick)