Dig dig dig dig dig. Love it.
Drew Harry
Creator of
Recent community posts
This is so in your style! Obviously I love the “shift” movement. That’s maybe a hint of my style in there??
I struggle a bit with these more mysterious mechanics and my patience for working them out is relatively low. But it’s visually really compelling and the mysterious/threatening world is a cool vibe. I love how it looks when the arcane gates(?) open and warp the world around you.
Thanks for playing!
Performance is probably not intentional; it’s a home grown engine with some inefficiencies in the rendering core that I need to swap out. Friends don’t let friends fillText
every cell every frame! Cache those images! Or make sprites like a normal person!
I’ll play some more with the animation. I recall some reason in early prototyping why I didn’t go fully smooth, but that reason may be irrelevant now. :D
Death freeze, hmm. Can’t recreate. But if you have any JS logs it might help me find it.
Mind-bogglingly cool rendering style. When I heard it come out of speakers I laughed out loud. So delightful, and the way the complexity of the screen turns into sound … chef’s kiss. Especially how proximate enemies fuzz your screen and your audio in a deterministic manner. Really incredible aesthetic work here.
Alright, objectives are in.
Green targets on the minimap show where you can find your next objective.
Your target is lit up! (This is too much light, tbh, but I’ll tone it down tomorrow.)
Bump into it to steal its precious cargo.
Do it three times and you’re done! No problem!
This was, of course, harder than it looks for various reasons. But it’s working. So now we REALLY have a game on our hands. You can die, and you can win. Great!
Driving Feel
The afternoon was spent on bugs and driving feel. I prototyped the core driving mechanics before the jam to make sure it was possible and fun enough. It’s hard to write about this sort of thing because it’s so qualitative. But here’s what’s changed:
- Added an “energy” system so you can’t use turbo indefinitely.
- Fixed a bug where you couldn’t collide into a wall if you were “sliding.” This is a pretty un-generous-to-the-player change to make, but it had the effect of making turning in traffic very hard (huge turning radius) but if you turned into an alley you could make it work at max speed no problem. That unpredictability felt off to me. But I may revert this later if it’s simple too easy to crash now.
- Tuned steering parameters up and down a bunch. Essentially, it’s easier to make tighter turns now. The car’s turning radius is ~2 tiles now, and it used to be ~3.
- Fixed braking, and differentiated it from retro thrusting. You can enter movement commands “against” your movement direction, which will slow you but never stop you. To stop, hit spacebar. Whether this will be used or not, I’m not sure. It enables a perfect 90 degree turn if you time it right. I may also use it for regenerative braking? TBD.
- A lot of finnicky work with inputs up/down/repeat to make it feel more intentional.
Test Track
I got tired of testing these changes in the game world itself, so I added a little test track.
Cute huh? I aim to ship this track plus maybe a more complex one with more enemies so players can learn the mechanics. I hope to manage a bit more tutorialization before the end, but in case not … this will at least give you a simpler environment to get a handle on the controls.
Next Up
We’re over the hump now. What’s left?
- Get reload and map changing working. From the title screen, select which mode to start and load that in properly. Ideally, get a refresh working too, so you don’t have to fully reload the page like last year.
- Add some enemy munition variety. Right now it’s all emp-clouds, but I have ideas for more options.
- Figure out how to place enemies in the world in a fun way. Randomly placing cameras feels pretttty good but not perfect.
- Put all the pieces together and balance the core experience. Vision radius of all the enemies versus your speed versus helicopter speed. Many knobs to to turn here.
- Fix some world generation bugs.
- Crank on building out some building variation so it’s not quite so drab out there.
- Performance optimization top to bottom.
- If you complete enough objectives, go to day 2 in a different city.
- Make a “starting building” for the player that’s consistent.
- Make an “exit” building for the player that’s consistent.
Is that it? Easy.
The antagonist has arrived! In RUNTIME you’re hunted from the skies by an automated drone. Spend too much time in its spotlight and it will disable your robot and end your run.
For anyone who remembers runner from last year, you will recall the HUNTER. It chased you through the sub-basements of a corporate tower. The HELI this year has a number of advantages: it can fly anywhere, move almost as fast as you, and move diagonally. But it has a problem: it doesn’t know where you are. If any enemies manage to get a “lock” on you, they give HELI your location to come lock you down.
The CAMS are stationary but plentiful. Try to avoid their watchful eye!
When a BOOMER picks up your scent, it runs at you and explodes, leaving behind impassable terrain and usually causing a crash.
TURRETs are stationary but have a variety of munitions to ruin your day: EMP clouds (above), caltrop zones, oil slicks, and smoke screens.
The bottom right corner now hosts a mini-map that shows an abstract view of the city (incidentally, re-using my city generator models as a UI) with fog of war and indicators for the player, the HELI, and (soon) objective locations.
Overall – highly productive day. I should have swapped my day 2 and day 3 work. Getting enemies (especially the HELI antagonist) built feels really important for having something playable. I can start to feel the game now. I don’t know if it’s good but there’s something in there.
Next Up
To really close out the core gameplay loop, I need objectives. I think this is going to be special vehicles that wander the city that you need … bump? … to steal their cargo. Let’s say 3 objectives per level, you gotta get them all, and then make it to an exit point on the edge of the map. This should be relatively straightforward. The main thing I don’t have a plan for is the “steal” action. I guess bumping is the main verb at the moment, so we’ll just do that.
Then I will switch to movement tuning. The movement has to feel SO smooth and it’s far from that point. I want to add an energy system to limit turbo usage, fix some input buffering issues, fix the “drift” marks, make braking actually work (or remove it), and tune some bits of the low-speed logic. This is all vibes. Not normal roguelike work, but I’m enjoying these really micro input considerations.
Today was vehicles day! What are city streets without traffic?
I built:
- A basic pedestrian entity, that uses a simple nav-mesh system. I place invisible entities that pedestrians look up to decide where to move to.
- Added multi-part vehicles.
- Intersections, with stop lights and a working “cycle” system.
- A vehicle “consumer” that deletes vehicles nearby who get off track.
My level design collaborator filled in the remaining holes in the generator block types for roads.
I spent a lot of the day on a mistake – I thought I wanted vehicles to spawn in continuously from “deadends” in the road network. There was a certain logic to this. It turned out to be both tricky to implement (the multi-tile vehicles are finicky) and when I got it working, the streets were just flooded with traffic. Plus it made me realize that the actual network itself needed to be coherent; there could be no loops. All traffic needed to move from a source to a sink reliably.
Over dinner, I was bemoaning my poor planning to my son and as always rubber-ducking my problem made me realize my error. What if I simply … baked the vehicles into the road tiles themselves. It’s not quite as systematic. But turned out to be a lot easier and a lot more reliable.
So I exited the day with roughly what I was aiming for. A working vehicle system that the player can interact with dynamically.
Next Up
The days go fast! My high level modules left are:
- Enemies + “death”
- Player movement tuning (and add energy system)
- Player abilities
- Objectives + success
- Multiple levels
- UI polish (minimap?)
- Tutorialization??
More of those than I have days left. But I think many of these will be less than a day to do. Tomorrow is probably Enemies and “death.”
Too late, you notice the tell-tale glint of a laser designator dancing across your visual sensors as you cross an empty intersection at high speed. A tire-shredding cluster munition is surely inbound. You drift hard to the north and pop smoke. Hopefully you can break their lock with a detour through the crowded night-market ahead and still make it to the exit with your package intact.
RUNTIME is a sequel to last year’s runner. Like the original, RUNTIME is a continuation of my interest in non-combat games. This time instead of having “moves” I wanted to make an expressive-enough input system that had emergent moves in it. More on how that will work on future days.
yes! Check out my day 1 report. RUNNER_2: RUNTIME is coming!
https://www.reddit.com/r/roguelikedev/comments/1j2ajo9/comment/mfx7tnu/
Hi Charlie! If you’re still looking for SFX specifically, I’d love to chat. Some context on what I’m making here: https://www.reddit.com/r/roguelikedev/comments/1j2ajo9/comment/mfx7tnu/
My top priority is SFX – sci-fi driving / crashing / being-targeted, and so on.
I’m dr_ewww on discord.
Wow, what a polished game! Beautiful style, great “feel” to the different attacks, nice enemy diversity. Dash feels great. I had a fun time doing “alpha strikes” with the archer, timing my projectiles to hit all at once on an enemy and knock it out without it attacking me much. I wasn’t quite clear on my meta objective beyond leveling up. I see in the comments there is a boss somewhere, but I didn’t encounter it.
Im glad you’re enjoying it! I don’t know much about stream decks. It’s just a single webpage inside. Does it have a web browser?
Either way, I’m working on a next gen version now. It will have an executable. That piece is working, but nothing else yet. 😉 it’ll be a month or two realistically. I’m learning a bunch of new tools.
Yeah I think that’s just bad map generation on my part. I switched the map validity checker to only use 4-way movement which I think will cause it to reject maps that REQUIRE diagonal movement to get to an objective. However I haven’t yet found a map that actually DOES require that, so I’m not certain it’s working yet. :D
I found a VERY hard to hit button in my developer commentary here: https://youtu.be/mXRjvb0w1Yc?si=22sTrqlZxpV38Oxv&t=1202
It was ultimately accessible, but it looked like it might be impossible early in the run. Maybe this is something like what you encountered?
It shoulddddd be the case that the validity checker will reject the map in the case you describe. I have seen cases where players think it’s inaccessible but it’s not.
- You can press buttons diagonally, and the validity checker will consider that to be ok. I should just make this not ok.
- The path can be very far, and feel impossible if you don’t have as much confidence as I do there will be doors where you need them along the way.
Or the validity checker could be broken! It was a hard bit of code to test in a hurry. I didn’t have time to build up nice test sets that I had pre validated. So it’s quite possible there are errors that my manual testing missed.
Thanks for reading!
Oh thank you! Very good suggestions. I took many of them just now!
- S works for jumping down
- red circle now moves “in” rather than “out” – maybe that helps communicate this is the hunter seeking you?? this feature clearly needs to be explained better earlier on. lots of players don’t know what it is.
- doors are now blue; agree players get confused sometimes about buttons and doors and it’s good to keep the overall objectives one color and other interactables a different color.
Diagonal movement I’ve thought some about but it’s not really viable in this version. It makes some hard assumptions right now about movement being essentially one dimensional.
Curious what you think about tuning it. It would need to be tuned to not be absurdly strong. Could just be the total distance is ~half of what you get moving in a cardinal direction to compensate for the 1.4 diagonal distance thing. Maybe handle via longer CDs. Hmm. Interesting balance question.
Yeah agree 100% with those suggestions. I have a hunch that if I can build the first one (i.e. wall run for 2 spaces if 3 is not possible, or enemy jump from 2 spaces away but only get 2 spaces of distance on the other side) it takes a lot of pressure off the live preview idea. Which is harder for some stupid internal architecture reasons. Third idea I will just … do. That’s correct. Whoops.
Thanks for playing and I’m glad you enjoyed it and are inspired! That’s the best possible outcome for me, someone who thinks “this design space is interesting enough that it makes me have ideas of my own that extend or expand it.”
Love the core mechanic here! It’s simple and inventive and creates a really interesting combat dynamic where you need to sequence combat more than just “get strong.” I like that I never get to think of enemies as just “fodder.” Sometimes I really WANT to find a “9” and sometimes a “9” is scary to me. That’s super cool and intuitive and I’ve never seen anything quite like it.
Game is hard! My best run was level 17. I like that I can revive and keep going, but also it feels a bit random towards the end when numbers get scarce. I may just be bad but my instinct is that skillful play might not have a 100% winrate at that level. No requirement that it NEEDS to but just an observation about how it’s tuned right now.
Oh yeah don’t read this as “better mechanics” – I think it’s really inventive and it’s just a matter of style. Some games want to lay it all out and the challenge is in applying it. That’s more the style I made and play more myself.
IDK if you have played cogmind, but I’m the sort of player who instantly looks up what the artifacts do on the wiki rather than using them and finding out. Because I don’t enjoy losing a run to learning about a later game mechanic. So I have less of that experimental instinct in my DNA than many players do, I think.
I especially like the asymmetry of movement. Both because of the costs of going through different rock, but also not being able to drill “up.” It creates a real sense of space, and you develop patterns for how to move efficiently. And the continuity between days creates opportunities for like “highways” you use over and over, and leaving resources for future days when you’re doing well, etc.
Speaking of highways, I wonder if there are opportunities to build things in the mine? That’s a core mining idea, and I could see that working really nicely here. An elevator, for example. Or you place a drill and the next day it has drilled out a direction. Or turrets that protect your core areas from enemies.
Good tutorialization, too. Love the just-in-time messages.
The quality on this entry is just off the charts! Gorgeous environment, great color design. UI is really crisp and interesting. The world is so evocative in terms of the sprites and tileset. Everything works so damn well.
I admit I don't fullllly get the core consuming mechanic yet. I see my stats going up and down as I equip things, consume bones, etc. And how to move down. But how my stats influence combat, or what goals I should have about my stats (other than "get one to 9") is less clear to me. I need to play more to work that out. Do I want to linger on levels as long as possible before the "losing health" leech pushes me forward? Can I regain health somehow? Why do health ticks have arrows up and down, and colors matching the stat colors? I can tell it all fits together in a neat way but I need a few more runs to work it out for myself. But that's part of the fun in games like this!
It is exactly what it says! A game focused on combat, and especially using your position relative to enemies and the environment. It's got a really strong "action" feeling where enemies are trying to hit you and you're dodging and trying to get them into a position where you can stun them and finish them off without them hitting you back. Visual quality and interface quality are really high. It could use some more exposing of the underlying systems around "recover" and "startup" but I think the systems themselves are really smart. Not much world-building or progression, but that's not really what this is about. It's a testing ground for some cool new ways to interact beyond "bumping" and I really enjoyed that!
Day 7 -- Polish!
That's a wrap! My first #7drl is done. Final game is available here.
My morning was tutorialization. Having played some entries from previous years, I felt like this was commonly a major gap. You'd get dropped into these worlds with a lot of mechanics and it can be hard to figure out what's going on except through repetition. I had an idea about a simple tutorial level that would introduce the key movement and enemy behavior concepts. The hardest part was dealing with spaghetti code issues that made it difficult to have what amounted to a separate instance of the game. Once that was cleaned up, crafting a tutorial was really satisfying. My one regret is that my system of "triggers" that post instruction messages had zero awareness of player actions. They were purely positional. So it's quite possible to complete the tutorial not having done much of what the tutorial suggests you do. Maybe a future engine design will have a better tutorial trigger system built in.
The other key updates for the day:
- Laser color gets darker the farther it is from the source. Gives the player some sense of how far off an enemy is, even if they can't see them. Plus it adds some more visual depth.
- Speaking of depth, added some slight variation to floor and wall colors.
- Added little animations when the player uses special moves. One play-tester reported it felt a little flat when you used the abilities.
- Added a new enemy type, sentries.
- Added some difficulty scaling between levels. The farther you get, the more enemies and enemy types spawn. Plus [REDACTED].
- Added some thematic animations to the title screen so it didn't look quite so sad.
- Implemented a truly janky "reset" mechanism if you want to dive back into another run.
- Added notices when the hunter enters the level.
[REDACTED]
Late in the day, I was doing some play tests with folks, focused especially on the tutorial. One player from the discord played more of the main game, and had this to say.
From this misunderstanding spawned a key new idea. I won't describe it here, but you'll find it on L-1. I probably shouldn't have implemented an idea as disruptive as this on the final afternoon, but it's really cool and adds some extra flavor to the last stage. Overcoming it feels even better than before.
Not much more to say than that! I'll leave some more screenshots here just to memorialize its final game-jam state.

Day 6 - Signature Moves, Validation, and Garbage Collection
I got my first "win" screen today with all mechanics in place! So we're at a complete state with a day to spare.
My main charismatic feature today was the addition of move cooldowns. We talked about how hunters are the driving character pushing you forward and the special moves are your way to stay ahead. Well, now that resource is limited so you gotta make it count. The philosophy that developed today was that moves should be common but not constant. You should want to use them more or less as often as they come off cooldown, but it should feel impactful when you do use them. So a lot of the moves got more powerful, but more rare since you get them less often. This also forces you to want to FIND uses for your cooldowns. This is especially the case for move (3), which is less flexible (you have to have a wall behind you to do it) but I find myself creating the scenarios to use it and get it on cooldown.
Two moves added today really brought the game together. The first is "burrow."
Hunter bearing down on you in a dead-end location? Back against the wall? BURROW! It moves you two spaces through a wall. There must be a free space on the other side. When you burrow, you leave behind a closed door. So if you burrow yourself into a dead end you CAN get back the way you came. But hunters will be delayed; they're slower at opening doors than you.
This move really brought the game to live. The level generator is now more prone to creating dead ends, and this gives you a way out. Most importantly, it feels cool. It's got a very long cooldown; it's a once-or-twice-per-level type move. But it can save a bad situation, or hasten your escape if you're close to the exit where your cooldowns will refresh.
Storytime My 7 year-old kid is very curious about this whole process, and I've been offering him chances to playtest. He has MANY suggestions (all day, all the time) and really gets the game systems. I built burrow (and some other stuff) and then went to the kitchen while he played. A few minutes later he darts into the kitchen to report "I just totally tricked a hunter with burrow!!!" and walked me through how he burrowed in a way that saved him from the hunter and how tickled he was at choosing a good location to burrow into. Seeing him connect with the mechanics and have that feeling about the move was really special. A core memory of the jam.
The other move is NOT my 7yo's favorite. He insists it's basically impossible to use. But I promise you it is not! It is "enemy jump." Basically, if you can get the spacing right between you and an enemy, you can hop over them!
A bit like burrow in that it's a "reversal" move versus a "get ahead" move, but it has very different spatial constraints. It's good in more open areas, and you have to really set it up proactively. Consequently, it's lower cooldown than burrow and you can conceivably use it often if you can engineer the circumstances right.
These two moves have really sealed the game into "fun" territory for me. It's legitimately hard, and certain situations and choices can be run-ending. These "problem solving" moves make it feel more fair, though.
Validation
The other aspect of my game that really had an impact on my kid was when he was about to win a run and discovered that the exit was blocked by faulty level generation. That moment brought legitimate tears to his eyes. He was so excited to advance a level he'd never advanced to before and then ... a wall. Literally.
So my most computationally complex task today was building level generation that both had a pretty high success rate at building winnable level designs, but also building a mechanism that could PROVE they were winnable and re-generate if they weren't. Learned a lot about how to do this structurally. I wasn't set up for it. Most critically, I discovered I actually needed to be able to CREATE bad levels to test my validator, and expose a lot of metadata about what was causing the validator to view a level as good or bad.
Garbage Collection
Finally, I ran into a bunch of bad assumptions I'd made early on when I was only doing one level a time. I wanted to string together some number of levels with increasing difficulty. But when I was testing I'd only really play the first level. When I loaded into the second level, I discovered all manner of bizarre bugs including phantom enemies from previous levels still existing and shooting at you periodically. Some studious garbage collection, and the phantoms were cleaned out.
Next Steps
The final day dawns! My priorities:
- Tutorial. I have a vision of some hand crafted starter levels that introduce you to the structure of the game and the movement mechanics. This may be more ambitious than I can achieve.
- Scaling difficulty. At the moment, all 3 levels have the same generation. I may add more enemies as you go deeper, more buttons to press, and so on.
- Level generation at the moment is also pretty high variance on difficulty. Sometimes the buttons are near each other, or you at the start. Sometimes you spawn with an enemy "looking" at you. Cleaning up these very easy and very hard situations may also help me layer on more difficulty later.
- More enemy types.
- Thinking primarily a bot that sits in the wall and doesn't move. A sort of "tax" on your move CDs because you have to have certain moves available or you can't get past without damage.
- Graphics for the title card.
- Something more exciting for winning than a few words saying you win?! We can dream.
- JUICE!
- Animations on the title card
- Animating enemy vision, so it "pulses"
- Some sort of animation when you move that makes it feel more satisfying
- etc.