Yuan Works Development Blog - Video game development, tutorials, design, and news

Making the stage art!

In a normal traditional platform game, we’ll need some pretty tiles that cycle without giving too much hint that they are tiles. This game however, aims to capture the natural organic feel of the environment, so it will have many unique tilesets (that is, there will be many tiles which are only used once). Games that feature this kind of tilesets include the Metal Slug series, as well as the arenas for most modern fighters.

Unfortunately, this approach requires a lot of observation and time to draw. For instance, this tree branch was “constructed” very much like a real branch. It has detailed individual leaves and is irregular and full of accidents. This gives it a much more organic feel.

Notice how it almost looks like the branch actually grows in the construction. The same is applied to the rock patterns that I’ve been drawing for the game. In nature, they don’t shape up chaotically, but rather in very complex ways, and you’d need advanced mathematics to calculate them. This actually means you have a lot of freedom to draw freehand and imagine the geometry any way you want because nobody will know the difference, but remember to keep the light source consistent!


In normal tile-based games these details are usually stylized into a generic shape, giving it a more anime look, for instance the trees in 2D Zelda games. Here’s a tree I worked on for a former project. The advantage is that it is easily recyclable and fits perfectly into any 16×16 tileset, making it very comfortable to implement into map design.


This game will actually be a combination of both, but there will be many visual treats to make every single surrounding unique.
Well, that’s it for today. Merry Christmas to you all!

Into the Platform Game Engine (Part 2)

Hi everyone!

Last time we saw Little Ninja running and jumping, and I promised to make him walk in slopes and hang in walls (after all, we’re talking about Little Ninja™ here). Well then it’s time to learn about Little Ninja’s new moves!

Walking on slopes (terrain angles)

The first thing I’ll solve today is having the Ninja walk on different terrain angles. As of now, there are three terrain types if you remember, but Mr. Ninja can only walk on two of them as for now:

When the Ninja walks on flat terrain, his X position changes (left and right). Well, what happens when he walks on slopes? His Y position changes, too (up and down)! In the 45° slope, for every X+1 pixel he moves Y+1 pixels, while on the ~26° slope, for every X+1 pixel, he moves Y+½, (but remember that pixels can’t be divided).

An important aspect is knowing when his Y position changes. For this, we have to use the sprite’s CENTER position. Whenever the Ninja jumps on a slope his Y position must be calculated too based on his X.

New Ninja States: Wall Hang and Double Jump (somersault flip)

A Ninja that can’t hang on walls or randomly somersault in the air defying all physics laws is definitely not a skilled one!

Anyway, wall hanging was pretty simple to do: Basically, when the Ninja hits a wall and you hold the direction on the d-pad (right in that case), he’ll hang on the wall and slide.

As for the double-jump, after performing a normal jump, jumping again while hanging in mid-air makes Little Ninja perform what is normally called a “double jump”, allowing him to move a little higher and a little further too!

Well, besides these two new states and slopes, I also added background scrolling, which I’ll try to explain more detailed later on. And as always, here’s a video (well GIF actually) of Little Ninja in action!

It’s starting to feel very versatile with the new moves and I’m sure that as soon as he runs and slides things are going to get even more exciting. Stay tuned for more Ninja action!

Animating the Little Ninja!

I still haven’t decided on the final look of the character, but I’ve started sketching the way he will move. Here’s one of his preliminary animations: the run cycle! Most of Ryuuhi’s ninja moves aren’t too realistic, but this particular run cycle is very traditional animation-wise, except for the extra weight put in the hammering of his feet.

Notice the two frames marked with an arrow. They are extra ugly frames that not only look bad, they don’t let the motion flow correctly/convincingly. Not that 0.05 seconds of screen-time are particularly visible, but we want to make this look as good as possible, don’t we?

Also, when you’re animating something, if you detect/suspect any errors early on, it’s important to correct them right away. Otherwise they will haunt you, turn more difficult to correct later on, or in worst scenario generate even more errors.

I also made a slash animation:

This kind of motion is not found in nature or traditional animation. And the way it is animated is exclusive to pixel art. With this kind of “special effects”, you have the freedom to experiment a little, but keep in mind the timing of the movement. Remember that is has to be functional in a game!

I have some more animations, but they’re too long to post here!

But as a bonus, I corrected one of the aforementioned frames while writing this post:

Looks much better, doesn’t it?

Into the Platform Game Engine

Hi everyone,

Today’s post talks will be about how to design the most basic parts of a platform game engine. On our last post, I finished a simple Map Editor, now it’s time to put Ninja Stick Figure into action!

Defining the Ninja Action States

Most of you are probably thinking about defining the most basic and generic objects (EG: the main character, enemies, bullets, items, etc.), but since this game is supposed to be simple, we’ll jump right into the main character, Ryuuhi, since I’m more interested in developing the platform engine. For a more complex and bigger project, this definitely wouldn’t be the best approach.

Anyway, the first thing I have to think about are the different states that our Ninja has:

Every state is self-explanatory so there’s not much to explain. Defining how states work is easy, IDLE happens when you don’t press any button, WALK when you press Left/Right, JUMP when you press the “Jump” button, and so on. For now, I won’t be using the ATTACK state since I’m only interested in how Little Ninja interacts with the terrain, not with other objects. Anyway, it’s important to associate an animation with each state, as well as a transition between states: for example, the character may go from IDLE to WALK, but can’t go directly from JUMP to WALK. Anyway, this can be done with a simple Enum:

enum NinjaAction
{
    NJA_Idle = 0,
    NJA_Walk = 1,
    NJA_Turn = 2,
    NJA_JumpStart = 3,
    NJA_JumpHang = 4,
    NJA_JumpEnd = 5,
}

Enums are very simple but work well on cases like this. This way, if I need to define another state or need to change its number for any reason, the rest of the code stays clean. For example, the IDLE animation would be ninjaAnimation[NJA_Idle], which is easier to understand compared to ninjaAnimation[0]. As for  Jumping, three different states were defined: the part where Ryuuhi ascends (Start), the part where Ryuuhi doesn’t move and descends (Hang), and the part where he falls (End). In good theory, all states should have a generic outcome when you enter and exit a state, but as I said before, I’m more focused on game mechanics right now.

Note that Ryuuhi is facing to his LEFT on all the images. This means that, besides states, it is important to define the state’s direction too.

Continue reading this entry »

Pretty settings and animation: let’s go!

Okay, this time I have drawn some more natural looking terrain to make the game easy on the eyes. This is how Little Ninja will (hopefully) look like in action!

The game will sport a very japonesque look, featuring a lot of rocks, rivers, waterfalls, exotic trees, and cerulean skies. (Which pretty much renders our “keep it simple” useless…)

As for Ryuuhi, I still haven’t fully decided on the final look he will have, but he now has several animations, all running at full 30 fps. I swore I would never animate anything at that rate again after Wind and Water. But oh, well.

I also made this new tileset so that the engine Hao is making will look prettier, but he hasn’t even used my old new tileset!! Anyway, here it is.

Well, that’s it for today. Tomorrow I’ll keep experimenting with the animation. This project is advancing much faster that I expected, and I had a lot of fun playing with Hao’s preliminary engine!!

Time to build the Map Editor!

Hi again!

If you remember last time, we were in the process of  defining what was important for Little Ninja’s new Map Editor. If you haven’t read the last article, it’s a good idea to take a look at it since I’ll be taking off right where I left it :)

Map Terrain Design (Part 2)

Last time we were overviewing the different terrain angles. After taking a look at my favorite platform-adventure games, I decided to keep three types of angles, remember?

Angles for map editor terrain

One may think that most platform games have a wider array of possible angles. However, in fact, I came to realize that a great number of games only use the 45° and ~26° inclination — Cave Story or Metroid, for example.

Now that I have chosen the three types of angles, it’s time to choose the different terrain directions. Fortunately, this is a very easy choice as tiles can only be transformed (rotated or flipped) into four different configurations, creating the following set of tiles:

Map Editor tile transformation

Now that we have terrain type, angle, direction, we’re all set to start making our Map Editor™ ! Before starting, let’s do a test-run on our current terrain:

Mockup tile map

As you can see, the combination of tiles allows a quite versatile design, while keeping it “simple”. While our Ninja trap does not look too smooth, remember that this is our mask! Further addition of foreground tiles will do the trick, believe me (I can’t wait for Yuan to give me some tiles). Actually, Yuan has already started drawing the prototype sprite art for Little Ninja.

Continue reading this entry »

Little Ninja new Sprites and Tiles!

Well, after the Dreamcast release of Wind and Water: Puzzle Battles we had a short two week vacation which was mostly spent playing games.

Back on the drawing board, we decided to make a “small” game project which we could handle leisurely. So we chose to expand one of our previous projects, namely “Little Ninja” or “Shounin Ryuuhi”, a Ninja platformer.

First of all, I took the original main character and did an overhaul so that he would still be small (which is the idea), but versatile to animate. This is the result:

I haven’t decided on the final look yet, but this is probably what I will stick to.

Also, we decided to make a new “terrain interactive” engine, and we chose the following angles for tiles:

This is because a 45 degree angle is a perfect one-pixel diagonal line, and the other ones are perfect two-pixel diagonal lines. Any other irregular lines will need too much work to look elegant. This is a preliminary tileset to make the map editor a little easier on the eyes.Instead of just “pasting” the character on top of any terrain, we will make him really interact with it. So the little Ninja stands and acts differently depending on the inclination of the plane:

Finally, I made this “Stick Ninja” to test the animation flow and interaction. His name is Chopsticks the Ninja™. Having so much terrain interaction means a LOT of animation on my part. So there goes our “simple” game project…

Starting a New Project! (codename: Little Ninja)

Hi everyone!

As you probably noticed, Wind and Water: Puzzle Battles for Dreamcast was released early this month, so we decided to start a new simple platform-adventure game, codename: Little Ninja!

Since Wind and Water was a very extensive and ambitious project, we want to keep this one simple. We’re mostly focusing on engine development, programming, scripting, as well as graphical issues that need to be resolved. Little Ninja may become the stage for our new big platform/adventure project, but for now, we’ll try to keep it simple, and we really hope this time we don’t mess it up :) We’ll be documenting the whole development process, both from my side (programming), as well as the artistical and musical part — Yuan’s part.

What is Little Ninja anyway?

少忍龍飛 (Shounin Ryuuhi — Young Ninja Ryuuhi) is an old Yuan Works project:

Yuan Works project codename: Little Ninja

That’s an old screenshot taken from the Yuan Works website. We’ll be remaking it from scratch, but the basic idea still applies.

Map Editor and Tile Design

Before starting to program directly on the game, there are several tools that need to be done beforehand. Fortunately, all animation and image editors used for our past project were dramatically improved while we were working on Wind and Water, however, one of the tools that is not too flexible is W&W’s map editor:

Wind and Water: Puzzle Battles world map

Wind and Water does feature a map (usually compared to Super Mario Bros 3), but we need something more complex this time. It’s time to design a map editor then!

Continue reading this entry »

Wind and Water: Dreamcast Preorders Now Open!

Hi everyone,

The wait is over! The Dreamcast version of Wind and Water: Puzzle Battles will be released by the end of October, and preorders are running now. Head to the W&W website for more information! The game can be preordered at our publisher redspotgames’ webshop.

Wind and Water: Puzzle Battles packaging and spine card

We have also opened the official W&W Forums where we will be adding information about the preordering, the release date, and future shops that will carry the game, so don’t forget to register and check it out!

Wind and Water for Dreamcast: It’s Official!

Hi everyone,

We’d like to let you know that Wind and Water: Puzzle Battles for the Dreamcast will be released on Summer 2008! We’ve updated our website with the announcement, you can check it out here. The sprite ordering for Dreamcast will be available for two weeks starting now and will be very limited, so be sure to grab yours as soon as possible! The game will be available for preorder in the following weeks, and will be published by redspotgames.

New packaging and design

The game will feature an extensive manual in both Japanese and English, as well as new artwork and design for the packaging:

Wind and Water: Puzzle Battles - Dreamcast packaging

New features for the Dreamcast version

For those familiar with the GP2X version, we’ve added tons of new features,  including: the new Mr. VMU character and dialogues, the new Danger Break system, faster and more accurate gameplay, new Computer Difficulty Levels, fully dual-language packaging and game software (English and Japanese), new artwork and design for the Manual and Packaging, a new ending, rebalanced 2-player battles, tons of new graphics, high-quality CD Soundtrack music with new songs, arcade stick support for the Dreamcast, and much more (but we don’t want to spoil everything)!

Don’t forget to check the new website!