itch.io is community of indie game creators and players

Devlogs

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

pico sonic
A browser game made in HTML5

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)

After (v6.0)

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.

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!

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:

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).

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

Before (v5.4)

After (v6.0)

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.

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

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…

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 626 kB
    Version 6.0
  • pico-sonic-windows.zip 1 MB
    Version 6.0
  • pico-sonic-osx.zip 3 MB
    Version 6.0
  • pico-sonic-linux.zip 845 kB
    Version 6.0
  • pico-sonic-png.zip 329 kB
    Version 6.0
  • pico-sonic-p8.zip 144 kB
    Version 6.0
Download pico sonic
Leave a comment