pico sonic v6.0 release! (out of alpha)


For SAGE (Sonic Amateur Games Expo) 2021 I’m releasing the first non-alpha version of pico sonic: v6.0!

Link to SAGE entry here.

I completely skipped the beta phase and just decided to consider this the first “serious” release as I did big changes, esp. regarding physics.

Character physics

Big step physics

Complete overhaul of the character physics update: instead of moving pixel by pixel, it moves by several pixels at once then escapes ground, wall and ceiling colliders, as in the original games. This brought a huge optimization and increased FPS from 30 to 60 on the overall stage (when combined with the sprite rotation optimization, see Misc improvements).

Before (v5.4)

v5.4: pixel step physics runs at 30 FPS

After (v6.0)

v6.0: big step physics runs at 60 FPS

Crouch

Sonic can now crouch and if he stays crouched for a moment, look down. Although not as useful as other moves, especially when there is nothing to dodge, peeking down can be helpful in some places.

Sonic crouches to look down and discovers an emerald

But to tell the truth, the main reason for implementing Crouch was to add…

Spin dash

Sonic can now spin dash! Since he’s exploring Angel Island, it made more sense to give him a moveset closer to Sonic 3. This completely change speedrunning attempts, but is also helpful to get emeralds more quickly. It’s also easier to get past some loops when coming from the wrong side, and hopefully it will help you get that nasty yellow emerald!

Sonic charges and launches spin dash

I also coded a simple particle system to give a nice dust effect behind the character, but it ended up costing too many characters for PICO-8 and had to be cut from release… I guess the animated sprite approach from the original game would have been cheaper.

But just for your eyes, here is a demo of the dust particle system before it got cut:

Sonic revs spin dash while spawns dust particles

Late jump

A feature not present in the original games but coming from modern platformers, it is now possible to jump up to 6 frames after leaving the ground by falling off a cliff. This allows more permissive jumps from cliff edges. The feature can be disabled in the pause menu (Late jump > press left/right to switch off).

Sonic falls off cliff but jumps 6 frames later

Stage

Smaller rocks

After a first version where I found rocks too small, and the previous version (5.4) where rocks were wide enough but a bit too tall, I finally found a compromise with rocks at an intermediate size, smaller than the ones from 5.4.

Original game

original game had quite big rocks

Before (v5.4)

v5.4 has big rocks

After (v6.0)

v6.0 has smaller rocks

It was difficult to tune it because the stage and the character have been scaled differently from the original game sprites. To fit in 16x16, the character is slightly smaller than it should be, compared to the environment scale. So scaling rocks to fit the environment perfectly would make them too big. Scaling them to the character would make them too small. I picked an intermediate solution where they are smaller than they should be, but wide enough to avoid making jumping on them too hard.

Visual

Waterfalls

I added waterfalls at the start of the level, to mimic Sonic 3’s Angel Island. Like the original games, I’m using the old-school technique of color palette swapping to give an impression of flowing water while actually showing static sprites.

waterfall flowing

If you’re curious, here are the static sprites I used:

waterfall static sprites made on multiple layers of color

Note that they got more colors than the resulting sprites, but they help getting a more fluid animation.

Attract mode

As a bonus, I added an attract mode as in the original game (itself inspired by arcade games). If you wait for the end of the jingle on the title menu, you’ll see Sonic run around pico island on his own! You can exit attract mode by pressing O, X or pause menu > Back to title.

No spoiler though, he won’t pick any emerald! Almost…

waiting on title screen starts attract mode

That’s it! You can also check the game’s SAGE entry at https://sonicfangameshq.com/forums/showcase/pico-sonic.985/

Misc improvements

  • Application: upgraded to PICO-8 0.2.2c
  • UI: press O on title menu before menu appears to make it appear immediately
  • Stage physics: fixed last descending slope tile connecting slope and loop having no collision
  • Stage physics/visual: offset last emerald (orange) by 5px to the right
  • Stage physics/visual: replaced very low slopes with 1px bumps that are still considered flat ground to avoid slowing down character when running on them, while keeping the funny up-and-down motion
  • Camera: use small vertical window even on ground to avoid moving when character just moves by 1px up and down (due to new bumps)
  • Stage visual: hide emerald behind leaves to make harder to find
  • Stage visual: improved forest hole lightshaft in background (now sprite instead of procedurally generated)
  • Stage visual: fixed one-way platform grass appearing in front of character
  • Stage visual: fixed background parallax to only move when camera moves by an integer pixel, not pixel fractions
  • Character physics: fixed detecting flat ground when running down slopes where some columns of the collision mask are empty
  • Optimization: optimized the sprite rotation method to use efficient code specific for 90-degree rotations, effectively unlocking 60 FPS where previously, looking as a horizontal spring or Sonic’s rotated sprite was dropping to 30 FPS

Files

pico-sonic-web.zip Play in browser
Version 6.0 Aug 20, 2021
pico-sonic-windows.zip 1 MB
Version 6.0 Aug 20, 2021
pico-sonic-osx.zip 3 MB
Version 6.0 Aug 20, 2021
pico-sonic-linux.zip 845 kB
Version 6.0 Aug 20, 2021
pico-sonic-png.zip 329 kB
Version 6.0 Aug 20, 2021
pico-sonic-p8.zip 144 kB
Version 6.0 Aug 20, 2021

Get pico sonic

Leave a comment

Log in with itch.io to leave a comment.