Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

RUNNER_2 / RUNTIME

A topic by Drew Harry created 4 days ago Views: 291 Replies: 5
Viewing posts 1 to 6
(1 edit)

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.

I did my first devlog over on reddit yesterday. Linking here for completeness!

(4 edits)

Images and video

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

(+1)

This looks very interesting. I loved runner, and I'd love to see where you're taking this.

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.

image.png

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.

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:

  1. Added an “energy” system so you can’t use turbo indefinitely.
  2. 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.
  3. 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.
  4. 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.
  5. 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?

  1. 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.
  2. Add some enemy munition variety. Right now it’s all emp-clouds, but I have ideas for more options.
  3. Figure out how to place enemies in the world in a fun way. Randomly placing cameras feels pretttty good but not perfect.
  4. 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.
  5. Fix some world generation bugs.
  6. Crank on building out some building variation so it’s not quite so drab out there.
  7. Performance optimization top to bottom.
  8. If you complete enough objectives, go to day 2 in a different city.
  9. Make a “starting building” for the player that’s consistent.
  10. Make an “exit” building for the player that’s consistent.

Is that it? Easy.