morganqdev Profile Banner
morganqdev Profile
morganqdev

@morganqdev

Followers
360
Following
101
Media
65
Statuses
95

video game Latest game Tiny Hawk: https://t.co/ZDxl6l9VOi Other game Picket Puzzle: https://t.co/p4nNVBGECH

Joined May 2022
Don't wanna be here? Send us removal request.
@morganqdev
morganqdev
1 year
Picket Puzzle is out and it's free! Check the gif trailer below to see how it works. I had so much fun working on this little game (: Available on Itch and the #pico8 BBS -
3
13
48
@morganqdev
morganqdev
3 days
Tweet media one
Tweet media two
Tweet media three
Tweet media four
0
0
0
@grok
Grok
1 day
Join millions who have switched to Grok.
96
177
1K
@morganqdev
morganqdev
3 days
Hex Die - our new #pico8 game - out now! A time-freezing tactics game about a cursed die. Free as usual :)
1
1
7
@morganqdev
morganqdev
13 days
Upgrade screen between each level:
Tweet media one
Tweet media two
1
0
0
@morganqdev
morganqdev
13 days
My new #PICO8 game is a roguelike action/tactics game (nod to MMBN). Really enjoying testing it and doing runs! Lots of different skills, fun upgrades, tough bosses. The pause-on-roll feature changes the feel a lot. You get some time to consider your moves.
2
4
14
@morganqdev
morganqdev
13 days
New #PICO8 game almost done!
Tweet media one
Tweet media two
Tweet media three
Tweet media four
0
0
4
@morganqdev
morganqdev
8 months
🛹 Try out the game, Tiny Hawk Pico8 Sk8er on the lexaloffle website and join the PICO8 community there and on Discord if this sort of game dev sounds fun to you!
0
0
13
@morganqdev
morganqdev
8 months
Cut many features like collecting SKATE or filling a special meter. #PICO8 dev always has this tradeoff and can help focus your efforts towards the core of the game.
1
0
7
@morganqdev
morganqdev
8 months
Ran everything through a build script that uses shrinko8 to minify the code.
Tweet media one
1
0
2
@morganqdev
morganqdev
8 months
SAVING SPACE - Stored everything possible as string data. Precomputed all the volumes, and generated tricky ones like quarter pipes using a python script.
Tweet media one
1
0
2
@morganqdev
morganqdev
8 months
The skater tracks if it’s in “grind mode” and tries to continuously attach itself to any grind lines that are nearby and roughly facing the same direction. Being airborne for a moment cancels “grind mode.”
1
0
3
@morganqdev
morganqdev
8 months
GRINDS - “Grindable” edges are precomputed. By default, any roughly horizontal edge is grindable, but it gets deleted from the grindable list if there’s another edge blocking it or directly adjacent to it.
2
0
2
@morganqdev
morganqdev
8 months
By the way, quarter pipes are magic. Once airborne, they lock your movement to the vertical plane for the pipe until you leave that tile or hold forward to transfer.
2
0
2
@morganqdev
morganqdev
8 months
The key for any of these methods to run fast enough is that you only check collisions against the tiles you’re near (blue tile outlines here).
1
0
3
@morganqdev
morganqdev
8 months
To collide a ray with a volume, I check if that ray goes through one of the planes defining the boundaries of the volume, and if so, you want to find out if that collision point on the plane is on the same side of every plane - ie inside the volume.
Tweet media one
1
0
2
@morganqdev
morganqdev
8 months
Every tile is made up of a list of convex 3d volumes. The collision function fires a ray from the old skater position to the next position based on velocity, and one by one resolves collisions as that ray intersects the volumes.
Tweet media one
1
0
1
@morganqdev
morganqdev
8 months
This made for straightforward collision detection, but I found it was easy to accidentally clip through the planes where they meet and fall under the level. So I finally settled on convex volumes.
1
0
1
@morganqdev
morganqdev
8 months
A very cheap idea! But I wasn't smart enough to figure out how to deal with the boundaries between tiles. My next idea was making every tile out of planes which are clipped at the tile borders.
Tweet media one
2
1
3
@morganqdev
morganqdev
8 months
COLLISIONS - I first attempted collisions with a heightmap. Each level tile would have a height lookup function. The skater would compare the height under their feet to the neighboring heights to figure out the incline of the part they are moving along.
Tweet media one
1
0
2
@morganqdev
morganqdev
8 months
PHYSICS - The player has a forward velocity vector and separately a board-forward vector. If those become too far apart from eachother, this triggers a fall. That can happen if you suddenly hit a wall or if you land from a jump facing sideways.
1
1
7
@morganqdev
morganqdev
8 months
The 3d-looking board is completely fake. It is drawn with a series of circles in a line, and when the board is more sideways the circles get smaller as if seeing it edge-on. If the board is upside down I use a different color. Here the board circles are each a different color.
1
0
7