Zero Zero: Perfect Stop (Train Sim)

Hi all,

I'm working on an arcadey train sim game for Playdate called Zero Zero: Perfect Stop. I am making this using the C API. Of course, the Playdate's crank is used to control the throttle and brake!

If people are interested, I'd be happy to chronicle aspects of development and answer any questions. Right now I basically have the pseudo 3D track and a functional HUD. Next I'll be adding in game elements like station stops and speed limits!

Screenshots:

Video:

Itch.io page:
Zero Zero: Perfect Stop by Hunter Bridges

Excited to see where you take this!

Have you seen this? Playdate game development in C by Alberto Benavent Ramón (found here). Check out section 6.7.1 where he describes a unique way of using the crank that could make a lot of sense here for increased immersion.

Thanks for checking it out!

The way I'm currently doing the crank controlls is pretty unique I think... It's modeled after the Densha de Go "One Hand" style controllers

Basically, the "neutral" position is when the crank is pointing towards the front of the device. If you push the crank up from there, it engages the brake. If you push the crank down from there, it engages the throttle. If you brake all the way behind the back of the device, it engages the emergency brake.

Crude MSPaint diagram:

I'm familiar with the series and actually was assuming that was what you were doing! I did not anticipate the part about the E break- if not for that, my suggestion would work. What Alberto's method prevents is the awkwardness of swinging around fully and going straight from E to 5 or vice versa, that's what I meant about "immersion." Another idea could be to dock for E. Anyway I'll stop telling you how to control this train and just look forward to a release (or beta?) :stuck_out_tongue:

Ah yeah, that was a problem I immediately ran into :stuck_out_tongue: My current solution for that is actually just preventing any direct shifts between throttle and brake settings, and instead always requiring a shift through neutral. That way you can push the crank all the way around the back and it will not suddenly flip over to Throttle 5, etc.

That definitely seems like it would work nicely. I took your MSPaint too literally!

yay! I have the plug-n-play version of Densha De Go, and it seems like the playdate is the ideal platform for a mobile / handheld implementation! Looking forward to see this one come together :smiley:

Couple weeks since my last update!

I have implemented a few new things since then. One is the track lookahead view on the left, it now shows upcoming speed limits and checkpoints. There is also now an indicator for the distance of the upcoming station.

I have also done a first pass implementing SFX for driving the train. In the interest of keeping RAM and Disk usage down, I have done all the SFX in mono 8-bit @ 16KHz (About on par with SFX for a GameCube or Wii game). Despite the somewhat crunched samples, I think it still sounds nice. I was also able to use the built-in TwoPoleFilter to do a bandpass and implement a dynamic wind sound effect.

Check it out in the video!

Next on the docket will be implementing some game rules and getting the actual gameplay loop going.

Wow this looks awesome.... :slight_smile:

I've started working on the game flow stuff! First up is a game start sequence which shows the status of the course diagram...

DiaIntro

Oh my sweet Jeebus, if you seriously get Densha De Go on the Playdate 1) my life is over 2) I love you 3) How dare you.

GOTY contender right here.

Also, I would put money down now for a beta that was just like a random length of track with one stop and a high score board. Maybe a way to get beta feedback without "giving away" the game?

Yeah, I might try a small demo with a short diagram once I get the full game loop implemented! Thanks for the suggestion

First update in a while! I can only squirrel away time work on this project on weekends, and my past couple of Playdate sessions were spent digging into some bugs @matt reported on my PDFontConvert project

Anyway, I've been aiming to get the game loop functional before digging more into the game visuals. Yesterday I reached a good checkpoint! You can now complete a full cycle of departing, traversing a segment, then stopping at the station. Check it out in the video:

Getting into the fun stuff now- visuals! For starters, added some curves and hills to the pseudo 3D track...

Testing out some power lines and sprite scaling! Now the "super scaler" 3D effect is starting to come alive. I managed to get decent performance on device by pre-scaling the sprites, but need to figure out a way to bake that into an asset instead of doing it on game load

Hey, good to see you adding more details. But I wonder if it would be possible to draw the cross beam with lines, because it seems to shift thickness due to the scaling. Takes away from the zen feel for me at least

I was talking about this with a friend, and came up with an interesting solution. If I originate the sprites as SVGs, I can set the strokes to maintain a fixed with when the image is scaled. Implementation is a little bit more complicated than that, but I tried it out in game and it looks much nicer :slight_smile:

It does look nicer indeed! Can't wait to try this one out. I can already feel the vibes of the game.

Much improved! A disadvantage is that the thick lines make the bar look solid at a distance.

Are you using lines thicker than 1px? Then I suggest the following:

  • determine the distance at which the individual lines become visible. This is the near threshold.
  • before the near threshold is reached, use a line width of 1. After the near threshold, use the current line width.

This produces a single switch in line width, hopefully not as noticeable because it happens when the bar is still small on screen.