XaiJu
drludos
drludos

patreon


[Prototype] Yo-Yo Shuriken (SNES)

Dear Patrons,

I've just published a detailed article about making my SNES game Yo-Yo Shuriken.
Among other things, this article presents the main game prototypes. To thank you for your support, I'm happy to give you an exclusive access to these prototypes, so you can actually play with them! You'll find all the SNES ROM files attached to this post. Here is a detailed presentation of each prototype:

Designing the game

Making Yo-Yo Shuriken was quite an organic process. I tested gameplay ideas as I came up with them,  and tried to refine them until I had a "fun" game in hand. Let's start  with the initial idea. For a long time, I wanted to make a shooting game with a single bullet. So the player must retrieve it each time he shoots. Besides the "one bullet" idea, I also wanted to make a game that could be enjoyed with a friend,  in co-op. With both ideas in mind, I created the game step-by-step.  Each major progress I made was labelled as a new "version" and  playtested heavily. If the current version was good, I continued to add  new features. Else, I kept working on the current features until the  game was fun to play again before adding anything new. Here is a rundown of the major game prototypes, with screenshots.

1) Cyber Ninja - version 1

The first thing to do when making a game on a platform you don't know is to display something onscreen!  So I drew a robotic ninja sprite and tried to have the SNES to display  it onscreen. When it worked, I added code to make the sprite moves with  the D-Pad. And then  I made a walking animation when the sprite moved.  These firsts steps may look simple. But remember that it was my first time making a game for the SNES!  So it actually took quite some time to do, as I was learning how the  machine worked while making the game. As the current project only  displayed a robotic ninja, I named it "Cyber Ninja."


2) Cyber Ninja - version 2

The actual player sprite, a ninja, appeared in  this second version. So the robot sprites naturally became their  enemies, as everyone know that ninja and robots hate each other! As a  proud ninja, the player can throw a single shuriken. The shuriken can  get stuck on the screen border, and the player must pick it up to be  able to shoot again. The robot enemies can move aimlessly on screen, but no collision detection is performed yet.


3) Yo-Yo Shuriken - version 1

After several tests, I thought that the shuriken could come back to the ninja automatically when the player pressed the button a second time.  I had a lot of fun while testing this mechanic, so it became the core  of the whole game! I also changed the project title to reflect this  evolution: say goodbye to "Cyber Ninja", and welcome to "Yo-Yo Shuriken"! Indeed, in the game the shuriken goes back-and-forth, much like a yo-yo.


I also added collisions detection. Now the  robots disappear when the shuriken hits them. But if a robot hits the  player, he's the one who disappear. While everything is still in a very  basic state, the core gameplay of the game is almost complete in this third game prototype. So I decided to "stress test" the engine to see how far I could push it before the game lags. I managed to have up to 80 enemies  walking and interacting on screen. Remember that a SNES can display a  grand total of 128 sprites, so having 80 of them updated 60 times per  second with collisions and animations is some kind of achievement.

4) Yo-Yo Shuriken - version 2

In this fourth version, the enemies are no  longer limited to straight line movements. They can now move in several  directions. They also bounce off the screen borders to avoid exiting the  game area. The game became more interesting as a result.


5) Yo-Yo Shuriken - version 3

I added a different background color, and a  system to spawn enemies endlessly. In the previous version, once the 80  robots were destroyed, the game was empty. Here an endless army of robots is generated!  The enemies can also follow the player, to force him to keep moving.  Indeed, in this fifth version, the game became  quickly boring if the  player remained static.


6) Yo-Yo Shuriken - version 4

In this version, I faced my first big technical difficulty: displaying large explosion sprites whenever a robot dies. I chose to have quite small player and enemies sprites : 16x16 pixels. That way, I could display loads of them on screen while keeping enough empty space for the player to move around and avoid hitting enemies (the SNES screen resolution is 256x224 pixels). However, I decided to draw my explosions at larger size: 32x32 pixels. The Super Nintendo is capable of displaying two different sprites size at the same time. The developer can choose a "small" and a "large" sprite size from a short list of sizes (8x8, 16x16, 32x32 and 64x64)  and the console will use this information when accessing the video ram  to display the sprite data onscreen. This is one of the many graphical  features that make game developers' life easier. But as any technical  feature, it can become daunting when you don't know how to use it!


In my case, in this current prototype, I was  only able to display a small portion of the explosion sprites, no matter  what I did. The issue was actually quite simple: I wasn't uploading the sprite data where needed in the SNES video memory. So the machine couldn't read them back. I did find the solution after spending several hours on the wonderful documentations made by the homebrew community over the years. I thank them a lot for their hard work on creating and sharing all this precious knowledge: without them, amateurs like me wouldn't be able to make SNES games!

7) Yo-Yo Shuriken - version 5

This prototype marks the addition of another key feature: the two players co-op mode!


New kinds of enemies join the fray too: the orange robots can take several hits before exploding, and the blue robots can chase the player anywhere. I also added coins that you have to collect to score points. This mecanic greatly improves the gameplay. Indeed, the only way to score points is to collect coins.  Killing robots doesn't bring you any "reward" per se, it's just a way  to prevent your avatar from dying. The robots drop coins when they die.  But the coins disappear after a few seconds. And there are always loads  of robots on screen, that will kill you instantly when touched. To earn points, player must thus take a lot of risks and move among the robots, else he won't be able to make a high score. But sometimes, it's better to let some coins disappear to avoid losing a life. This is what game designers call a "risk / reward" choice, and it's a great way to make a game interesting. Here, this mecanic allows Yo-Yo Shuriken to offer a smooth difficulty progression to  players. Usually, a rookie player will tend to stay static, and will  solely focus on destroying the robots. He won't get points, but he will  be able to continue through the game and defeat the final boss. Once a  player starts to get more confident, he'll be able to collect coins to  make a highscore. And of course, experienced players can try to make a  "perfect run" by collecting all the coins, although it means taking an  insane amount of risks!

8) Yo-Yo Shuriken - version 6

As playtesting went on, I realized that the game  was becoming quite repetitive. I tested several ideas to solve this  issue. The one I found the most interesting was to hold down the shoot  button to "charge" your shuriken. When you release the button, it  triggers a "super shot" that can cut through several enemies.  This mecanic brings a bit of strategic thinking to the game. Now, the  player can choose to perform several simple shots to kill the enemies  one by one. Or he can choose to perform a charged shot to kill several  enemies at once. But then he'll be vulnerable while the super shot is  charging.


9) Yo-Yo Shuriken - version 7

Starting with this version, all the game  mecanics that defines the core gameplay were in. So the project entered  the longest and most tedious phase: adding content and polishing the game. First, I added sound effects, that I created with BFXR. I also included the wonderful music tracks composed by XRACECAR. I also modified the game GUI and moved it to the top of the screen.


Regarding graphics, I added a pattern to the game background.  As my artistic skills are limited, I had an hard time drawing a  convincing background. I made several attempts, including this one,  before settling on a "wood planks floor" to emphasize that the game  takes place inside a dojo (see next version).

Last but not least, I started to create the various game levels.  Each level is composed by several enemies waves, with increasing  strength and numbers. I spent an insane amount of time testing and  balancing those enemies waves to make the game entertaining. Each game  designer does this his own way. Personally, for an arcade game, I like  to mix intense and challenging moments with easier moments  so the player can catch his breath. For example if the player manage to  pass a moment with fast moving robots chasing him while the dojo is  already filled with slow moving enemies, I'll reward him with a  slower-paced moment. Like 4-5 basic enemies moving very slowly so you  can easily kill them and collect their coins.

On a side note, you may notice that the explosions graphics are still particularly hideous at this stage.

10) Yo-Yo Shuriken - version 8

In this version, a new type of enemy joined the fray: the "shield" robot.  They can only be hit from behind. The "yo-yo shuriken" mecanic becomes  even more meaningful here. Indeed, the best way to kill shield robots is  to shoot around them first. Then, you'll have to call the shuriken back  and to try to hit them by controlling its return trajectory. I also  made new explosions sprites, and the background image is better looking.  I even added an invincibility bonus pickup (a white ninja head, replaced by a star in the final game).


11) Yo-Yo Shuriken - version 9

The last major feature arrived in this version: the game bosses. I spend a lot time designing and testing numerous bosses. This was one of the most enjoyable part of the game development process!


In the screenshots, you can see a prototype of the "snake" boss, and a boss not present in the final version: the tank. The tank boss must be destroyed in several steps. It has several weak points (the orange balls)  that have to be hit one after the other. Once a weak point is  destroyed, it removes part of the tanks structure, exposing new weak  points. This was a challenging boss. For example, one weak point is at  the end of a tunnel, so it requires a very precise aiming.

On paper, this boss idea was quite interesting.  It took me quite several days to program it. But after many play  sessions, I decided to removed it from the game as it was boring.  Indeed, it was sometimes quite hard to destroy the boss because of its  huge size. Also, if the boss managed to block you into a corner, you  were dead as you couldn't hit any of its weak points. In the end, facing  this boss was a more frustrating than fun experience. As you can see,  even in amateur game projects, sometimes you have to cut disappointing content despite the time you spent making it! 

12) Yo-Yo Shuriken - version 10

The key word of this final version was "polish."  I added the title screen, the introduction and ending animations, and a  screen to explain how the game plays. The final touch was to include a hidden bonus mode:  the "double ninja" mode, where you can control two ninjas with a single  controller. To unlock this mode, you simply need to finish the game  once (or use a cheat code!).


So, after more that one year of development and 5491 lines of code, Yo-Yo Shuriken was finally completed! The game ROM works perfectly. It was tested on several versions of the original game console (Japanese Super Famicom, US Super NES, PAL Super Nintendo); on modern versions (PAL modded with the 50/60hz kit from FFVIMan, Analogue Super NT); and on many emulators (Higan/BSNES, SNES9X, ZSNES, No$SNS, RetroArch, etc.) for various platforms (PC, smartphone, PSP, Raspberry Pi, etc.).

I hope you will enjoy these prototypes! If you want to play the final game, you can buy it from here (or, if you're a $5 patron, get it for free ;)). And you can read the full making of article here: 

https://drludos.itch.io/yo-yo-shuriken/devlog/147478/making-a-snes-game-in-2020 


More Creators