A geometric speedrunnning platformer game!
This game is a more polished recreation of a game I made for a game jam, this time in 1 month :D
A geometric speedrunnning platformer game!
This game is a more polished recreation of a game I made for a game jam, this time in 1 month :D
Very proud of this speedrunning game! I learnt a LOT of new math stuff (projections, splines, frame-independent interpolation) while trying to make it, and had a lot of fun. This will probably spiral into my first full game after this; This is just a demo, after all. I have so many more ideas and polishes to make, like adaptive music, SFX, multiple worlds’ worth of levels…
Put the finishing touches on for this release; made banners, the README, got screenshots, builds, everything else. I made the banners in the game itself, since I wanted to use the polygon tool and font.
Log in to leave a comment
Log in to leave a comment
Remade 1-1, since it was way too hard - I was half-dead when I made it originally ._.
The old 1-1 is going to be a later level instead, and I’m going to split the mechanic introductions into multiple levels, half so I don’t need more level ideas, half because it’ll be more manageable for the player.
Also made some minor optimizations, since it was lagging HARD after pulling to my home laptop - the DashCooldownBar especially was lagging since it was updating color every frame, even when the value was unchanged.
Log in to leave a comment
Made the death border visible, and added a few indicators for when the dash cooldown resets.
Log in to leave a comment
Made the death border visible, and added a few indicators for when the dash cooldown resets.
Log in to leave a comment
Remade 1-3, fixed all the score/rank thresholds, and made the pause menu actually exist and let you quit the level.
Log in to leave a comment
Remade 1-2 to work with the new speed and mechanics - I just started from scratch because the previous version could be beat in two seconds with the dash mechanic.
Log in to leave a comment
Remade 1-1, and fixed some UI things.
Log in to leave a comment
Reworked TimeSlows to support rectangles as a shape. It took SO LONG, because the formula is way different, and it took me a HOT minute to not only change the existing code to support it, but figure out what the math was. Here’s a new rectangle one next to an existing circle, with the same settings.
Annoyingly, since the rectangle’s formula is more expensive, it lags when it re-renders the editor overlay, which means I did a bit of work to make it not redraw every frame like it was, now it’s just when the settings change or the window does.
Log in to leave a comment
Spent way longer than I’d have liked reworking how runs are stored, since now we need to worry about scores - changed from an array of times to an array of objects that store the time and score, plus some extra info based on the time and score and level for easy access. Also minor style tweaks, and a little + by the rankings when you beat their score thresholds.
Log in to leave a comment
I love forgetting to devlog. Favorite activity.
Made some more levels, then one of my friends gave me ideas that completely changed my plan for the game, so I spent 8 hours prototyping to see if it’d work;
Log in to leave a comment
Oh. I forgot to devlog for 3h… I pretty much just did all the set up and started working on World 2;
Log in to leave a comment
Got a sixth level done for this first world, and I’m deciding to call it here - we’re moving onto the second world. I am fully out of level ideas with just the pieces introduced so far - once spline lerping is introduced I’ll hopefully be sitting better for ideas.
Log in to leave a comment
Finished setting up the times and other tweaks to 1-2 / 1-3, and made 1-4. It’s just a momentum-building practice level. Also added Velocity Amplifiers (They add a set amount to the player’s velocity), which the next 3-4 levels will be based around.
Log in to leave a comment
Added a speedometer in the bottom right so you can see how fast you’re going, made several level tweaks based on feedback I got, and started working on 1-3
Log in to leave a comment
Finished up the first two levels, after a LOT of playtesting, and added some spikes that kill the player on contact for the second level.
Log in to leave a comment
Got the run timer working, + the level/world unlocking stuff and the reset key - holding down R for a full second resets the current level.
Log in to leave a comment
Added a merge sort function since the default sort function was… working differently depending on the OS? Also got most of the first level done. I definitely have more work to do on it, but we’re getting somewhere.
Log in to leave a comment
Added some fonts, a UI element, and a time-slowing effect.
The time slowing affects delta and was initially making the jump really suck - I thought it was something to do with lerp being time-dependent, and fixed that following (https://www.youtube.com/watch?v=LSNQuFEDOyQ), but it was literally just me multiplying the jump height by delta…
Since this devlog’s shorter, might as well mention how I did splines; coincidentally I learned about how splines work from a video by the same creator as above; (https://www.youtube.com/watch?v=jvPPXbo87ds&t=809s) - spent a few weeks making an implementation of the continuous ones mentioned in it by building a tool script over top of Line2D, where points are sectioned into 4s, then turned into quadratic(?) splines. Then sample points from those splines are used to create the actual line.
For the meshes, I turned each point into two on either side of it half the width away - the direction is “perpendicular to the direction between the two neighboring points” (see the picture of a sketch example I made while I was coming up w/ this). Then those points are put in different arrays, which are combined at the end to make a continuous mesh.
It gets pretty close to smooth, but definitely runs into issues - it’s like a poor man’s version of Line2D’s solving. Notably, the points can overlap and completely mess up the mesh if the spline overlaps itself - I haven’t found a solution for that yet.
Log in to leave a comment
Spent way too long on way too little;
Added the ability to put textures on the splines.
Made the velocity on hitting a wall more accurate; when you fall onto a wall, it projects your velocity onto the wall, and takes the higher of [the default grind speed, the projection’s magnitude] and uses that for the grind speed. Basically, if you’re already going fast and you grind onto a parallel surface, you keep most of your speed.
Red line is velocity, blue is the wall direction, green is the projected velocity.
Log in to leave a comment
Added Goals and DeathBorders for win and lose conditions; There’s of course a tool script to show the death borders.
Got the entire level resetting cycle working; it’ll need to be added per thing that needs resetting, but that’s expected - also added a countdown when you start/restart a level so there’s time to realize.
Log in to leave a comment
Made a extension of the RegularPolygons (AnimatedPolygon) that supports some basic animations;
I also am finally home so we’re doing videos again - here’s how everything is so far, there’s a AnimatedPolygon in the background.
Log in to leave a comment
Imported some scripts from my previous attempt, and ported them to work with how things are set up now. Mainly the Player’s controls, the Spline and Chain script, and the RegularPolygon script, since they’re the most technical ones and I didn’t want to rewrite them for no reason.
Used some RegularPolygons to make a simple graphic for the player, and built a quick test environment for the player; the controller works as expected after some tweaks, since the resolution is different.
Log in to leave a comment
Way more work on the UI; Got the actual implementation of what I want it to do done. All that isn’t working is actually loading the levels (since they don’t exist), and cycling between world screens (since there’s only one.)
Log in to leave a comment
Started setting up things for the levels and the world/level selection screen. Mostly just function rn - got the file hierarchy set up the way I want it.
Every world screen is in the same folder, and it loads all of the screens in that folder, then the screens load a level entry for each LevelData resource in their corresponding folder.
Log in to leave a comment