|The final and most complicated level.
tl;dr: So many new levels! So many bug fixes! So close to launch!
Reflecting on my pace, my priorities, and what's next
With Inner-Tube Climber finally looking like it's almost ready to release, I want to take a step back and think about the progression of my sabbatical and re-evaluate my current goals.
How did Inner-Tube Climber development go?
I was originally expecting to spend much less time on Inner-Tube Climber. It was supposed to just be a quick game-jam project with a little bit of production polish afterward, and I was supposed to be done with it in October!
Additionally, a lot of my time since the original game-jam version has been spent on app infrastructure stuff that isn't really very directly related to the gameplay. Gameplay is the fun bit that I'm supposed to be focusing on!
However, I'm glad I've spent the time I have on the things I have since then. I think Inner-Tube Climber now feels much more like a real production-quality app now. But, far more importantly, most of the work I've been doing has been on re-usable infrastructure that I can copy/paste in most of my future projects this year. In theory, I should now be able to easily give my later games this more-polished feel, without sinking all the time that I did for Inner-Tube Climber.
What are my current goals?
- Make some smaller games.
- Get more practice on creating art—hopefully both with quality and quantity!
- Spend less time on app infrastructure in later projects, by re-using my rich collection of utilities.
- Do some interesting things with my old Surfacer framework (procedural pathfinding for 2D platformers (aka. click here, and the player jump and moves over to there)).
- Finish releasing Inner-Tube Climber.
- Create an easily-reusable framework repository with all the good stuff I've created in Inner-Tube Climber.
- Use this new framework to create another small game.
- Force myself to not spend too long on this next game.
- Get lots of art practice with this game.
- Revisit my old Surfacer framework, and use it to make some interesting new games!
What happened last week?
- My friends Roy and Jake have been doing some playtesting for me, and they've given me some very useful feedback!
- Thanks Roy and Jake!!
- Experimented a little with slightly different wall-bounce mechanics, to make things feel more predictable.
- When bouncing off a wall, I give the player a new x velocity that depends on their previous x velocity with a simple multiplier.
- But the y velocity gets a little more complicated.
- I give the player some additional upward velocity, which isn't at all realistic, but makes the gameplay feel more fun.
- The main part of this additional y velocity is a constant offset.
- But if bouncing back-and-forth off nearby walls, this constant offset can stack a lot and gets out-of-control fast.
- So I also dampen the y velocity by about 60% of its current value.
- But this can all feel like it produces some unpredictable bounces.
- With a little more experimentation, it seems like just reassigning the y velocity to a constant value is the most predictable option.
- But that destroys some of the fun slightly-additive back-and-forth bouncing that my game uses.
- So, I added a new compromise. I now ensure the player has at least a minimum y velocity when bouncing.
- This makes bounces feel more predictable, and also lets us keep our fun back-and-forth bouncing!
- Fixed a problem with level-select items capturing pointer events and preventing scroll.
- Fixed a problem with wide level-select item names.
- Refactored level-select item unlock hint to be presented as a pulsing overlay when pressed.
- Fixed a bug with the player sometimes seeming to rapidly collide with the floor a lot.
- Added support for going back a screen with Escape (useful for debugging).
- Added support for adding extra lives in debug mode with 'G' (useful for debugging).
- Created a SpawnPositionOverride for debugging.
- Fixed an issue with camera horizontal pan when transitioning from a non-pan-locked tier to a locked tier.
- Fixed a problem with level-select screen auto-scroll positions.
- Fixed a problem with level-select accordion heights.
- Fixed a problem with the static level config object somehow inconsistently losing state sometimes (made it dynamic instead of static).
- Created a next-rank-at score-board display.
- Fixed an issue with player horizontal movement stopping when slightly clipping a top corner of a tile when falling down and past the tile.
- Fixed an issue when pressing into a wall, then jumping over the wall, and the player doesn't start moving horizontally until too late.
- Start with more lives on easy difficulty.
- Start with more lives in debug mode.
- Added a difficulty-selection screen to show when first playing.
- Prevent repeated bounces against the same wall without moving far enough from the wall between bounces.
- Make the mobile control gesture's reverse-direction threshold a little bigger again.
- Fixed a bug where music would restart when falling.
- Added a button in the pause menu for adding more lives when playtesting.
- Fixed a very annoying infrequent bug where floor collisions could be mistaken as wall collisions by the Godot `move_and_slide` collision system.
- Added support for clearing old version state when new versions of levels or scores are configured.
- Reduced the height needed for each multiplier cooldown step.
- Fixed a bug with the multiplier failing when the player is in air when it would have expired.
- Fixed unlock hint messaging.
- Lots of level design!
- Re-worked old tiers.
- Created a lot of new tiers.
- Configured a specific song for each tier.
- Configured per-level silver and gold score thresholds.
- Did a lot of playtesting and level polishing.
|Here's some gameplay footage from one of the last levels.
This level zooms the camera in, which definitely makes things more challenging!
- Fix a few small bugs in the iOS version.
- Research how to maximize the impact of my app launch.
- Get things ready to launch!