TravelShooting JP, a Space Harrier type fake 3D shooter

TravelShooting JP was originally developed on cocos2d-iphone V2.1, and has been ported to Android using cocos2d-x V3.4.

It is a Sega Space Harrier type pseudo 3D rail shooter with a high school girl and Japanese scenery.

Thanks to the great performance of cocos2d-x, the game runs at 60 fps on my Google Nexus 7 (2013).
The tiled ground (and ceiling in scene 5) is composed of 4 large sprites that are layered and tinted in different colors. The near-far stripes are alpha texture of two of the sprites and the horizontal stripes are made by GL_SCISSOR_TEST.

https://play.google.com/store/apps/details?id=com.takujifukumoto.TravelShooting

3 Likes

Hey this looks great !
when it will be for iOS?
did you use the new cocos2d-x 3d options ?

Hi, thanks a lot for your comment!

It is already available for iOS on the App Store: https://itunes.apple.com/app/id917570972
I don’t use much of the 3D features of the cocos2d-x for this game, but 3D vector calculation is done using Vec3.

Congrats on the release! I watched the YT video and it looks fast paced and not easy to master.

Thank you very much! To be honest, people say it is not easy like you mentioned.
I make games alone and it is not easy to properly adjust the difficulty as I become a super expert of my game as the development goes.
This Android version has been tamed and not as difficult as the initial iOS version though.

Can you explain to us here how you make the 3D effect without using 3D features? I think we would all love a technical conversation!

All these sprites have a Vec3 property and the calculation of the position is done in the 3D coordinate.
The point is that the 3D space is warped on purpose; the z axis is warped (extended) as it goes farther. Otherwise, they look too slow when they are far from the screen and then become too fast as they come close.

Enemies move on Bezier paths so that they move smoothly in the 3D space, but the motion data is composed of only several points.

The tiled ground is made of a layer of four large sprites. Two are with radial stripes of alpha of 0 and 255. A striped sprite and a solid sprite are paired and the striped sprite is stacked on top of the solid one. So, you see the solid sprite that is tinted in a different color between radial stripes.

Two pairs of these are layered again. And the upper pair is masked using horizontal stripes made of GL_SCISSOR_TEST. So, you now can see all four sprites as if they were tiled repeatedly.

To make the infinite side scrolling, I move the bottom vertices of the sprites left and right, and to make the far-to-near scrolling, I move the horizontal stripes from the horizon to bottom of the screen changing the height of the stripes according to their z positions.

Please feel free to ask if you have any questions.

Fantastic break down.

How long did it take you to develop?

How did you come up with the concept?

Are you doing anything “unconventional” with the engine?

Space Harrier, what a great game.
And you game looks impressive as well. Well done!

slackmoehrie,

It took about a year to develop the game on cocos2d/Objective-C and took 2 months to port it to cocos2d-x/C++.

The concept of the game is borrowed from Sega’s arcade version Space Harrier. I tried to make my version of Space Harrier on mobile devices. So, first I tried to replicate the first level of Space Harrier on my iPhone. This is what I made;

I did not touch anything inside the cocos2d-x game engine; everything is done using its standard features.

ricardo,

Thanks a lot!
Yes, Space Harrier is an awesome game especially when you are riding in the moving chassis!
I loved playing it when I was young, and I wanted to make my version and did it on an 8 bit computer using BASIC, but of course it was not a great game.
Finally, after nearly 30 years, cocos2d/cocos2d-x allows me to make a good game.

1 Like