Inspiration :
**Aesthetic inspiration:** Pixel art, fantasy,
**Gameplay inspiration:** Platformers like Celeste
What it does :
Spell Shot is a wizarding golf game where every shot is a spell. You climb a towering magical course, launching your ball from platform to platform toward a flag at the very top, in as few strokes as possible.
Before each turn, you build a three-spell combo: a directional Slash to kick the ball, followed by spells like Force, which supercharges the ball so it smashes through enemies, or Brake, which kills its speed for a precise landing. Then you fire each spell mid-flight with a click, steering the ball through the air in ways no normal golf shot could. Along the way, enemies knock you back to the start, fragile platforms crumble beneath you, and every stroke counts toward the high score chart, so planning the perfect combo is the difference between a clumsy hacker and a true golf wizard.
How we built it:
We built the game in Godot 4 with GDScript, splitting the team between engineering and art.
On the engineering side, the ball runs on Godot's physics engine, which we tuned by hand to feel right: custom ground detection so the ball knows a platform's top from its underside, collision tweaks to stop fast shots from tunneling through floors, and a slingshot-style shot with a live trajectory preview. Every spell is its own reusable Ability resource, so the combo system is fully data-driven: the HUD builds a three-spell combo, and the game loads and fires each spell on the ball in sequence. On top of that, we built breakable platforms that crack and split apart, enemies that patrol and punish mistakes, a sound system wired to every bounce, spell, and button press, and a high score chart that saves your best runs.
On the art side, two of us sketched every asset by hand first, from the wizard and his staff to the enemies, platforms, and spell icons, then recreated them digitally for the game. All of the game's art is original and made by our team; the only outside asset is the Minecraftia font by Andrew Tyler, which gives the text its retro pixel look. With four people working in parallel on separate Git branches, we merged constantly to keep everything in sync, and learned a lot about resolving conflicts under pressure along the way.
Challenges we ran into :
None of us had ever used Godot before this weekend, so we were learning the engine at the same time as building a game in it. We also walked in with almost nothing decided beyond "some kind of golf game." With no art direction set in advance, our artists were designing, drawing, and digitizing assets right up until the final minutes, while the rest of us wired them into the game as fast as they arrived.
Our biggest battle was the golf ball physics. Godot's collision detection is extremely precise, and the ball found every possible way to break it. Early on, the ball would land perfectly on the first shot, then fall straight through the floor on the second. It would get stuck to the underside of platforms and think it was standing on the ground. When it fell off the level, teleporting it back caused the physics engine to treat the jump as movement, trapping the ball beneath the very platforms it was supposed to land on. Fast shots tunneled straight through one-way platforms. We tracked each bug down by printing the ball's position at every shot and reset until the numbers showed us what was really happening, then reworked how the ball rests, detects the ground, and teleports.
Working as four people learning Git at the same time came with its own chaos: merge conflicts in shared files like the ball script, and at one point a single leftover conflict marker in our project settings silently broke the game's sound and high score systems until we hunted it down.
We fixed the game-breaking bugs in our main gameplay, but physics edge cases still pop up in some of our test levels, and that's one of the first things we'd tackle with more time.
Accomplishments that we're proud of:
Going from zero to a finished game in Godot. None of us had touched Godot before this hackathon, and we're leaving with a complete, playable game: a main menu, a full level, a working combo system, sound effects for every action, and a high score chart that saves your best runs. A combo system that actually feels like magic. Chaining spells mid-flight, like hiting the ball with a Slash, supercharging it with Force to smash through an enemy, then braking for a precise landing, turned out to be genuinely fun, and it makes every stroke feel like a puzzle you solve on the fly. Every piece of art is ours. From the wizard and his staff to the enemies, crumbling platforms, and spell icons and even the golf ball , all of it was sketched by hand and rebuilt digitally by our team during the hackathon. Taming the physics. Turning a ball that fell through floors and got stuck under platforms into one that bounces, rolls, and lands reliably was one of the hardest parts of the weekend, and one of the most satisfying to finish. Becoming golf wizards ourselves. After hours of playtesting, we can now sink the hole in embarrassingly few strokes. Try to beat our high score.
What we learned:
** How to build a game as a team of specialists.** With artists and programmers working side by side, we learned to split the work so nobody was waiting on anyone else: the art team drew while the code team built placeholder versions of every system, then swapped in the real assets as they arrived.
How to figure things out when nobody knows the answer. Plenty of problems this weekend had no obvious approach, from ball physics to connecting the combo HUD to the game. We got good at breaking them down, testing small pieces, and reading what the game was actually telling us through debug output instead of guessing.
**Godot, from scratch. **We went from never having opened the engine to building physics, a data-driven ability system, UI, sound, and save files in it. We're far from experts, but we now have a real foundation to keep building on.
**Git under pressure. **Four people merging into the same project taught us to commit often, pull before we push, and never trust a file with a leftover conflict marker in it.
What's next for Spell Shot:
** More levels*, each with its own magical theme and new obstacles to climb past. **New enemies* with different behaviors, from ones that chase the ball to ones that shield themselves from certain spells. A bigger spellbook, with new abilities to unlock and longer, more creative combos. Competitive play , so golf wizards can face off locally and online, with a shared online leaderboard to prove who's the true golf wizard. Polish, including squashing the remaining physics edge cases and adding animations and visual effects to every spell.
Built With
- gdscript
- godot
Log in or sign up for Devpost to join the conversation.