🎉 2021 is over! I've now been doing my sabbatical for a year! 🎉
...and I'm going to do another six months!
Let's pause for a sec and review the past and future
In general, it's a good idea to take a step back now-and-then and look at the big picture. What have I done the last six months? What do I think I'll do the next six months? What did I originally want out of this sabbatical? Has that changed? What do I currently want?
Some stats from 2021
- More than 3000 commits
- 96 pages of daily snippets
- Devlog
- 70 posts
- 1,290 unique viewers
- 3,823 pageviews
- Games
- Inner-Tube Climber
- OoboloO
- 35 plays and downloads
- The Before Times
- 99 plays and downloads
- Momma Duck
- 164 plays and downloads
- The Eye of Glower-On
- 445 plays and downloads
- 55/735 for "Overall"
- 60/735 for "Fun"
- 58/735 for "Audio"
- 9 music tracks
Goals
What were my goals?
In general, my ultimate high-level goal was to get a lot of practice making games, so that I can "have a better idea of what I am interested in, and a better ability to create actual results efficiently in my free time."
I think these were the hand-wavy deliverables that I was planning on:
- Create a bunch of small games.
- Make a lot of pixel art, and get better at making pixel art.
- Finish making my Surfacer framework for platformer AI.
Did I meet my goals?
Yes and no!
The problem is that my focus drifted somewhat toward making a really polished set of tools for making games, rather than making the games themselves.
I am 100% on-board with that focus shift. I think that making a high-quality and versatile toolset has ultimately given me better game-development experience and more skills than creating a bunch of lower-quality games would have.
- I did make a handful of small games. But I was originally envisioning making at least twice as many games.
- I did make a bunch of pixel art (mostly thanks to Octobit!), and I did definitely get better at making pixel art. But, again, I was originally envisioning making much more pixel art. I think developing my art and music skills is the main thing I lost by not churning out as many games.
- I did not finish making my Surfacer framework. I think that "finish" was never the right word, since I plan on using this framework for at least the next few years, and I'll be making changes to it as long as I'm using it. But I definitely don't have a sense that it has all the features that I think it needs yet.
- But I think that I do now "have a better idea of what I am interested in, and a better ability to create actual results efficiently in my free time", and that was my main objective.
So, I didn't meet all of my original goals, but my goals have evolved!
So what am I planning to do next?
I feel like I need to do a bit more! Specifically, I want to add more key features to Surfacer, and I want to practice more game-dev skills with a few more small games.
So I'm going to extend my sabbatical by another six months!
What have I done this year?
- I worked on six small games.
- Squirrel Away
- You are a cat and you chase a squirrel who runs away from you.
- This is my living demo for my Surfacer and Scaffolder frameworks, so I keep making small updates to this.
- Inner-Tube Climber
- An endless climber with fun wall bouncing and polished platforming controls!
- I polished this and published it as a mobile game on Android and iOS.
- OoboloO
- You're a slime that's lost some of your blobs! Collect them and make your way to the exit while avoiding the vicious cave enemies - but be careful, as they are also your only means of maneuvering!
- This is a small game I made with some other folks during a game jam.
- The Before Times
- Descend out of the darkness in this first-person atmospheric game.
- This is a small game I made with some other folks during a game jam.
- Momma Duck
- You are a momma duck and you need to collect your ducklings and lead them to safety.
- This is a small game I made by myself during a game jam.
- The Eye of Glower-On
- You are an evil mountain and try to prevent a horde of heroes from reaching your summit.
- This is a small game I made by myself during a game jam.
- I worked on two large frameworks.
- Surfacer
- An AI and pathfinding 2D-platformer framework for Godot.
- Some highlights from the last year:
- Support for saving and loading platform graphs (a big performance boost!).
- Improved trajectories when falling off the side of a floor and climbing over a wall.
- Support for bypassing run-time physics.
- A robust time-tracking system, which can distinguish between many different dimensions of time (app-time vs play-time, physics-time vs render-time vs wall-clock-time, scaled-time vs unscaled-time (for slow-mo!)).
- A choreography system for scripting automated character movement.
- A dynamic slow-motion system.
- Animation-state prediction during navigation preselection.
- Support for navigating to and from in-air positions.
- Support for tracking music beats and annotating them on navigation paths.
- Automatic camera pan and zoom during navigation preselection when dragging near the screen edges.
- A draw utility for segments with smooth ends.
- A utility for rendering transient animations.
- A huge reduction in platform-graph file sizes.
- Support for running scripts within the editor, which let's you see more pieces of the game as you edit them.
- Support for configuring many parameters (e.g., character, movement, animation) within Godot's scene-editor inspector panel, rather than as script variables.
- A powerful character-behavior system for easily creating a character AI with high-level behaviors like "wander", "follow", "run-away", "return".
- A convenient character-spawn-position system.
- A convenient and configurable character-logging system, which makes debugging much easier.
- Support for making any navigation bouncy.
- Support for ensuring that navigation is reversible.
- Support for crawling on ceiling surfaces.
- Many, many refactors and organizational-improvements across the codebase.
- Support for preserving slow-rise gravity when interrupting a previous navigation to start a new navigation.
- Support for oddly-shaped surfaces (surfaces with non-cell-border-aligned sides).
- Support for single-vertex surfaces.
- Support for projecting a shape onto an oddly shaped surface.
- A more robust system for resolving navigation interruptions.
- Support for rotating the character animation to match the surface slope at the grab point.
- A system for annotating surfaces by drawing marks on tile-maps in Godot's scene editor.
- Support for configurable friction per tile.
- Support for configurable max-speed per tile.
- Support for collinear neighbor surfaces.
- Support for character categories.
- Support for backtracking when overshooting the target on slippery surfaces.
- Scaffolder
- A bunch of general-purpose application scaffolding and utility functionality for games in Godot.
- Some highlights from the last year:
- Configurable UI and camera scaling to adapt to the current viewport.
- Optional analytics based on the proprietary third-party Google Analytics service.
- Optional automatic crash log reporting based on the proprietary third-party Google Cloud Storage service.
- Screen layout and navigation.
- Screen-transition animations.
- Lots of useful utility functions (e.g., Time, Geometry, DrawUtils, Audio).
- A widget library (e.g., AccordionPanel, LabeledControlList).
- A toast notification system.
- I did five 48-hour game jams.
- I did Octobit.
- I made daily pixel-art every day during the month of October.
- I formed a single-member LLC to publish games under.
- I wrote a tutorial series on how to make a platformer AI.
- This covers a lot of my experience making the Surfacer framework and the design decisions I made along the way.
- I learned how to publish apps to the Android and iOS app stores.
- I learned to use the Unity game engine.
- I learned to use the Blender 3D-modeling software.
- I learned about Godot's contribution model and got a couple pull-requests merged into their codebase.
- I published my Surfacer and Scaffolder frameworks on the Godot Asset Library.
- And other folks have been using them!
- I've received a handful of emails and GitHub issues from folks with questions and wanting help getting set up.
- I attended the online GDC Showcase conference.
- I helped raise my one-year-old and slept very little!
What do I think I'll do in the next six months?
- Continue to improve my Surfacer framework for platformer AI.
- Must-haves:
- Add support for predictive timing.
- This would allow characters to reach a given destination at a given time.
- For example, in order to collide with (or jump on) another character.
- Add support for fall-through-floors and walk-through-walls
- These are surfaces that the character can conditionally pass through or grab.
- Add support for flying characters.
- Stretch goals:
- Add support for the player bonking their head on an intermediate ceiling before continuing their movement toward their destination.
- Support lazy-loading platform graph files.
- Implement an R-tree data structure for more efficiently finding close surfaces.
- Make it easier to use and to configure the many different parameters.
- Make it easier for random folks on the internet to use in their games.
- Fix logs of bugs!
- Continue to make a lot of pixel art.
- And hopefully continue to get better at it!
- I don't have a specific plan for this, other than to make a lot of small games and include a lot of art in them.
- I hope that I find lots of interesting techniques to work on in each game, and take the time to learn to do them well.
- Play around with dialogue.
- I think that a lot of the ideas I have for games depend on stories and characters with dialogue and narrative.
- I'm not sure whether I'll be a very good creative writer, but I'm excited to get a feel for it!
- I have couple tools in mind for implementing this.
- Make a handful of small games using Surfacer.
- Maybe three more games?
- I will try to make these games explore the various unique experiences that Surfacer enables.
- Form a concept and prototype for a larger game that I can continue working on after my sabbatical is over.
- A few more game jams.
- Global Game Jam (January)
- Ludum Dare 50 (April)
- GMTK game jam (June)
- Continue publishing a weekly devlog post!
- I'm really happy with these posts.
- I think they've been helping me maintain a good perspective on what my high-level tasks are and how long they're taking.
Comments
Post a Comment