Source Code Release and Final Thoughts


Source code is now available for anyone who wants to untangle the game jam spaghetti!  You can get it here.

Some things I think went well:

  • This project is a working example using my Hydro water physics module.  With one minor exception, everything I threw at it just worked.
  • I adapted a really good UE4 tutorial to create the fireballs.  Unfortunately the Godot particle system doesn't support streamers, but I'm happy with how the ball itself turned out.
  • Ducks, fireballs, splashes, and bullet holes are all pooled and re-used.  This worked a lot better than creating and destroying them over and over again.  I'll make a better system to manage the pool next time, but it's not that many lines of GDScript to do a quick-n-dirty implementation.  You can find it in several places if you look at the GDScript for those items.
  • Creating some really simple rules for duck motion yielded pretty good results.  Sometimes less is more!  The only thing I'd add would be a way to keep lots of ducks from clumping up in the middle.  I think I'd do this by making each duck prefer its home quadrant it spawned from.  That would also keep areas of the bathtub from getting too empty.  If that didn't suffice, at that point I'd actually add the logic to make the ducks actively avoid each other.

Some things that didn't go so well:

  • I found an awesome looking blood splatter particle tutorial I thought would make nice water splashes when you shot the water.  I didn't manage to draw a good enough splash texture for it to turn out the way I wanted.
  • The bullet hole decals are screen-space projected.  It worked well on the bathtub because it was a smooth surface, but it's easy to get a stretched one when you graze a duck.  I'd expect some distortion in a crease, but it seems like maybe some weirdness with the collision normals was happening too.
  • The Godot UI layout system is not as intuitive as I expected it to be.  I'm decently well-versed in dynamic layout systems but with seemingly multiple ways to specify dimensions on an item, I'm never sure what takes precedence.  I had several situations where the layout would appear one way in the editor, and when you closed and reopened the scene it would look different.  I saved the UI for last so my code quality started to suffer at that point as well.
  • The boat and especially gun turret could have used one more modelling pass.  I started off going for an extra-simple low-poly style and decided I wanted a higher level of detail after I got the background in there.  Making it a toy matching the quality and feel of the duck wouldn't have been too hard.
  • There's a really scary editor issue I hit twice, I'm not sure how to reproduce it but I really need to look into it some more.  It may have involved reorganizing nodes within a scene, but the end result was everything inside the scene getting deleted.  Both times, I didn't realize it until running, and at that point it had already been saved.  I was able to restore the scene fairly easily in both instances, but it could have easily been a lot worse.

All in all, I enjoyed working on this project.  The jam had a long enough timespan for me to explore what I wanted to while still providing motivation to reach a finished point.  It was a great way to learn something new, and even looking back on a small project like this is valuable.  As for Godot itself, I'm still finding it mostly pleasant to work with, and I hope that the 3D support  and the codebase as a whole both continue to mature and improve as time goes on!

Get Dawn of the Duck

Leave a comment

Log in with itch.io to leave a comment.