Irritating Ship - a precision movement game

Moderator: Moderators

Post Reply
Fiskbit
Posts: 891
Joined: Sat Nov 18, 2017 9:15 pm

Irritating Ship - a precision movement game

Post by Fiskbit »

My entry this year is Irritating Ship, a game in the vein of Asteroids and especially Gravitar where you move your ship through a winding corridor without touching the walls. The frictionless rotate-and-thrust control scheme makes intentional, precise movement very challenging, and this game is all about mastering it to overcome increasingly difficult obstacles. Different modes control how many lives you get from checkpoints and how many lives you can hold, and gravity can be enabled for added challenge. The corridor in this release is fairly short, but should still provide plenty of play time as you learn how to move. The game also tracks numerous gameplay stats to optimize for, including time spent and thrust used, which are displayed upon completing the game. Skilled players can also unlock an extremely difficult hidden gameplay mode and hunt for a secret ending.

Some interesting points about Irritating Ship:
- It's multi-region, supporting NTSC, PAL, and Dendy. Gameplay speed, timers, audio speed, and audio pitch have been corrected for each region. It's even compatible with the FamicomBox!
- Horizontal acceleration is slowed down compared to vertical to compensate for the NES' wide pixels. On NTSC, the scaling is for 8:7 pixels, and on PAL, it's for ~18:13. As such, this game shouldn't be played with square pixels, especially not in PAL mode.
- Collision uses sprite 0 hit, allowing it to be pixel-perfect. Checkpoints also use sprite 0 hit, so software collision is used to determine if the ship is close enough to a checkpoint to allow any resulting hit to be handled properly. The only other game I know of that uses sprite 0 hit for collision is Lunar Limit, another space homebrew. Because of sprite 0 hit, I wasn't able to embed an emulator on the game's itch.io page, because both JSNES and emFCEUX trigger spurious hits that destroy the ship.


Outside of the sound engine, which is Famitracker and Famitone2 with some custom glue and modifications, I handled all of the programming, game design, and art. Trirosmos composed the game's excellent song and created the sound effects. Special thanks to FrankenGraphics for NEXXT and helping me get set up for level creation; to Sour for Mesen and helping when I encountered emulator bugs; to rainwarrior for the PowerPak header fix; and to brizzo, zeta0134, Sour, FrankenGraphics, Trirosmos, nintendesi, Matt Hughson, NewRisingSun, and j4m13c0 for testing this out prior to release, which resulted in several bug fixes and game design improvements.


[Note for PowerPak users: This ROM has an NES 2.0 header, which conflicts with the PowerPak's 'DiskDude!' header filter. rainwarrior posted an updated N.MAP file here that removes this filter, which you'll need to run this on PowerPak. You'll probably want this to improve ROM compatibility going forward.]
Attachments
Irritating Ship (NESdev Compo 2022).nes
(40.02 KiB) Downloaded 109 times
gameplay1.png
gameplay2.png
gameplay3.png
WhiteHat94
Posts: 46
Joined: Fri Apr 07, 2017 5:02 pm

Re: Irritating Ship - a precision movement game

Post by WhiteHat94 »

Really enjoy this game. The control of the ship is excellent, and the accuracy of the ship hitbox is amazing, both together make it really fun.

I managed to get a 4:58 so far, vid if you wanna check it out, https://www.youtube.com/watch?v=uGBprGh_gKA
Fiskbit
Posts: 891
Joined: Sat Nov 18, 2017 9:15 pm

Re: Irritating Ship - a precision movement game

Post by Fiskbit »

I appreciate the link! I've been checking for streams and had seen you play this, but not this latest video yet. You're clearly getting pretty good! I'd hoped this would have some speedrun appeal and I'm glad it's been a hit so far for at least a few people.

A few comments I've thought to say while watching:
- The lowest part of the timer is measured in frames, so it goes 0-59 on NTSC and 0-49 on PAL. The timer also assumes a framerate of exactly 60 or 50 FPS, but the NES doesn't run at exactly that speed, so it does drift slightly over time (about 1 second every 10 minutes on NTSC).
- The game only times actual gameplay and doesn't actually start until the player moves (turns or thrusts). So, the death animation and fades don't count against you, and you can sit still after respawning without it counting against you. This was done in part to avoid gravity pulling you down immediately, and in part to offset the intentional lack of a pause feature.
- Resetting between runs shouldn't be necessary. It won't make any difference to the timer, and nothing about the game's random numbers affect actual gameplay or time. The timer also resets whenever you begin from the start of the level, and because time doesn't start until you move, you can even sit at the start without penalty.

- Hard mode also caps the maximum lives to 3. Even with that, it's perhaps not really necessary, since I suspect people are going to be doing either normal or expert all the time.
- The 3rd to last section is definitely the hardest, I agree. If I'd had more time and more skilled player feedback before release, I'd have made the latter two sections harder or changed some of the ordering, but it is what it is; they're still pretty challenging. I also seem to have a lot more trouble with the very last turn before the end than you do!

- Sprite 0 hit is a PPU (video chip) feature. The NES supports up to 64 sprite tiles (8x8 or 8x16 pixel movable things), and the first one of them, sprite 0, has this special feature where if an opaque pixel of the sprite overlaps an opaque pixel of the background, it immediately sets a flag. This happens mid-screen, so games normally use this to figure out when the PPU is drawing a certain part of the screen in order to do a 'screen split', usually to separate a HUD from the playfield. You only get 1 hit per screen and you only know that a hit happened, not what actually hit what. Using this for actual collision in a game is very limiting.

- Contrary to what the title suggests, this game wasn't actually inspired by Irritating Stick. I'm a big fan of Gravitar and other Asteroids-style games, and my initial idea was to do something along the lines of a Gravitar-style infinite runner. I pretty quickly dropped the idea of auto-scrolling as the game tended more toward precision movement, and I eventually settled on not having any sort of shooting mechanic, so the focus become entirely around mastering the movement. I had been considering putting fuel into expert mode to really force fast play, but decided that limiting the player to 1 life was enough of a challenge, at least for now. While I haven't played Irritating Stick, I couldn't pass up the goofy name, since the game did settle into a very similar design in the end.

- Once the competition's scoring period comes to an end, I intend to do an update with some minor fixes and improvements. I don't intend to change anything about the level or timing, as that would make times not comparable between revisions. I'm open to suggestions on things to include in an update.
WhiteHat94
Posts: 46
Joined: Fri Apr 07, 2017 5:02 pm

Re: Irritating Ship - a precision movement game

Post by WhiteHat94 »

Very interesting, thanks for all the clarifications. I think in general it ramps up pretty nicely in difficulty. It can be frustrating but only because you have so much control, so when you fail it's always your own fault, at least that's how I feel.

I think the only thing I would potentially want is a couple more courses/boards/levels, whatever you want to call them, even if they're harder and shorter, or just a couple different themes. Specific difficulties don't really interest me personally all that much, but I can see others wanting to No Miss Expert mode, or the hidden difficulty.
Fiskbit
Posts: 891
Joined: Sat Nov 18, 2017 9:15 pm

Re: Irritating Ship - a precision movement game

Post by Fiskbit »

More content is definitely something I'm interested in doing, but likely not for this update. I think it'd be fun to turn this into a full game, with more levels, new kinds of obstacles (ones that move or change), and perhaps more graphical themes.
WhiteHat94
Posts: 46
Joined: Fri Apr 07, 2017 5:02 pm

Re: Irritating Ship - a precision movement game

Post by WhiteHat94 »

Cool, if you expand it at some point and would like some help testing, feel free to hit me up.
Post Reply