HiRoads developer Diary

If you remember 5 Commodore 64 games I would like to see ported in Flash, you know I am a great fan of Trailblazer, the game that inspired Tileball.

Today I am proud to introduce Filippo Bodei from Monkey Odyssey his Trailblazer-like game HiRoads.

Let’s read Flippo Bodei’s developer diary:

Introducing Monkey Odyssey
I’m a new developer in the scene but I’ve been designing games since I was able to think. Monkey Odyssey is born with the intent to give finally a form to my thoughts.
Monkey Oyssey has a very deep philosophical meaning, and it is clearly inspired by 2001: A Space Odyssey: the Monolith, which is supposed to give birth to the intellect in monkeys and to enable in this way the evolution, turns on like a monitor and shows a videogame. At this point, the smart one should have already understood the frightening truth: what makes a man actually a man, is the Videogame.
So, Monkey Odyssey labels my creations from now on.
Heavily influenced by late eighties and early nineties, all of my games have a retro touch that I hope will result in a nice nostalgic experience for the ones playing.

Introducing HiRoads

Coming from an Amiga background, I had my first IBM compatible experiences on the 386 of a friend of mine. I remember playing Bubble Bobble (better on the Amiga), Sensible Soccer (better on the Amiga) and some other game that was absolutely inferior to the Amiga counterpart. So I was spending my time with a game I couldn’t play on my gaming station. That game was SkyRoads.
I remember we had the shareware version, so only a few levels were available, but that was enough to produce so much fun I could hardly believe it.
Growing up I had Personal Computers supporting my gaming needs and only with the advent of Internet I managed to have the full version of SkyRoads.
Here I knew frustration. Advanced levels were so difficult that more than once I turned off my computer cursing Bluemoon (SkyRoads developer), just to find myself playing again a few minutes later.

Fast-Forward some years…
Finally I found in Flash the way to shape my creations. It was perfect for retrogaming, so I started learning from tutorials all around the web.
When I found the Basic 3d Tutorial from Kirupa, I had an epiphany. I was clearly seeing SkyRoads inside that tutorial, and the thought of porting that great game on the net was the only I could keep in mind.
After a while I found that someone had the same idea, but SWFRoads wasn’t giving me the right feelings, so I didn’t care and went on my own.
Yes, that was the first experience coding something that was not a button, but that was also my test bed. If I would have been succesful in coding something so difficult, it would have meant I was on the right track.

Developing HiRoads

When I was brainstorming on how to develop the game, Actionscript 3.0 was beginning to spread among flash developer. I decided to go upriver, coding the good old way, because otherwise I had to learn a brand new language, inevitably lengthening times. Due to this, debugging turned out to be a nightmare, but challenge never scared me.
It all started on paper. I drew on my notebook all the blocks I wanted in my games, specifying points in 3d, offsets and heights. I drew perspective views of the game and I was enthusiastic I will have soon seen all those sketches in movement.
I had to merge my knowledge of tile based engines and my understandings on the new 3d notions and finally I had a black and white checkerboard running towards me.
All the tiles were built defining 3d points, face colors and properties like height and everithing that was needed for a nice collision detection.
So, no Papervision (no AS3, remember?) came in help managing all the depth sorting for me. I had to do all from scratch. I was learning how to develop a game developing a game.
Many developers suggest to start low, writing Pac Man or Breakout clones. But I didn’t want to develope those games, so I started with something that my skills couldn’t permit me to do.
My skills increased until I could find a solution for all the problems I encountered, and they were sooooo many!
Collision detection was the key point. If that would have been approximate, the whole game would have not had much sense. I made many mistakes building the collision engine because I haven’t thought at all the possible situations before starting to write it.
When I was resolving a problem, two different were appearing. I fortunately got rid of them all but, actually, I’m not totally satisfied of how my ball behaves. Now I can’t change anything without going through a complete rewrite of the code. Yes, that would be a good thing, but I’m going to code in the right manner in one of my next game.
Before, I mentioned a ball. SkyRoads had a spaceship running through levels, but I wasn’t very happy with it. I always liked the 3d Amiga Ball in the demo showing the 3d capabilities of the computer, so I went for it (not to mention that it was like the ball that was in Trailblazer, a game which SkyRoads was clearly inspired to).
I set up the ball in a 3d program, rendering all the views I needed. So it is basically a sprite changing perspective upon needs.
For backgrounds I chose to go with Bryce. I always liked sky sets that were available in that program, so, although SkyRoads being set in space and naming SKYRoads, I called my game HiRoads despite being actually set in the sky.

Developing Level Editor

Finally my game was ready! However there was something that was slipping my mind. That was the whole level construction thing.
My maps are stored in a double array, like every basic tile based engine. Each cell contain a string specifying the tyle type, the color set and the height, a very simple way to store data, but I couldn’t manage it all by hand.
So I had to start thinking to build a level editor. It actually was quite simple. I obviously used the same engine of the game, so I had only to develope a GUI that would have helped changing dynamically the map. Now my level editor can select tile properties, like type, colors and height, and road properties, like gravity. It has to be refined, but it built all the 27 roads my game is composed by.
27 roads, really a high number, I think, because I spent more time building roads than developing the whole engine. Some of them are very challenging, and some prove that I have a very twisted mind!

The Future
I’m waiting to release the game because first I want to complete the level editor and make it more user friendly. I want to integrate it in a community based website, where users can submit their own levels, mark their favourites, leave comments and so on.
In the meantime I released a new game, built on the game that won the 4k Flash Game Audience Choice Award at Gamepoetry, it is called Pillars, and it’s based on the same 3d engine used for HiRoads.

I hope you will have fun playing my games like I had developing them!

Get the most popular Phaser 3 book

Through 202 pages, 32 source code examples and an Android Studio project you will learn how to build cross platform HTML5 games and create a complete game along the way.

Get the book

// 1+2=3
// 100 rounds
// 10000000
// 2 Cars
// 2048
// A Blocky Christmas
// A Jumping Block
// A Life of Logic
// Angry Birds
// Angry Birds Space
// Artillery
// Astro-PANIC!
// Avoider
// Back to Square One
// Ball Game
// Ball vs Ball
// Ball: Revamped
// Balloon Invasion
// BallPusher
// Ballz
// Bar Balance
// Bejeweled
// Biggification
// Block it
// Blockage
// Bloons
// Boids
// Bombuzal
// Boom Dots
// Bouncing Ball
// Bouncing Ball 2
// Bouncy Light
// BoxHead
// Breakout
// Bricks
// Bubble Chaos
// Bubbles 2
// Card Game
// Castle Ramble
// Chronotron
// Circle Chain
// Circle Path
// Circle Race
// Circular endless runner
// Cirplosion
// CLOCKS - The Game
// Color Hit
// Color Jump
// ColorFill
// Columns
// Concentration
// Crossy Road
// Crush the Castle
// Cube Jump
// CubesOut
// Dash N Blast
// Dashy Panda
// Deflection
// Diamond Digger Saga
// Don't touch the spikes
// Dots
// Down The Mountain
// Drag and Match
// Draw Game
// Drop Wizard
// DROP'd
// Dudeski
// Dungeon Raid
// Educational Game
// Elasticity
// Endless Runner
// Erase Box
// Eskiv
// Farm Heroes Saga
// Filler
// Flappy Bird
// Fling
// Flipping Legend
// Floaty Light
// Fuse Ballz
// GearTaker
// Gem Sweeper
// Globe
// Goat Rider
// Gold Miner
// Grindstone
// GuessNext
// Helicopter
// Hero Emblems
// Hero Slide
// Hexagonal Tiles
// HookPod
// Hop Hop Hop Underwater
// Horizontal Endless Runner
// Hundreds
// Hungry Hero
// Hurry it's Christmas
// InkTd
// Iromeku
// Jet Set Willy
// Jigsaw Game
// Knife Hit
// Knightfall
// Legends of Runeterra
// Lep's World
// Line Rider
// Lumines
// Magick
// MagOrMin
// Mass Attack
// Math Game
// Maze
// Meeblings
// Memdot
// Metro Siberia Underground
// Mike Dangers
// Mikey Hooks
// Nano War
// Nodes
// o:anquan
// One Button Game
// One Tap RPG
// Ononmin
// Pacco
// Perfect Square!
// Perfectionism
// Phyballs
// Pixel Purge
// PixelField
// Planet Revenge
// Plants Vs Zombies
// Platform
// Platform game
// Plus+Plus
// Pocket Snap
// Poker
// Pool
// Pop the Lock
// Pop to Save
// Poux
// Pudi
// Pumpkin Story
// Puppet Bird
// Pyramids of Ra
// qomp
// Quick Switch
// Racing
// Radical
// Rebuild Chile
// Renju
// Rise Above
// Risky Road
// Roguelike
// Roly Poly
// Run Around
// Rush Hour
// SameGame
// SamePhysics
// Save the Totem
// Security
// Serious Scramblers
// Shrink it
// Sling
// Slingy
// Snowflakes
// Sokoban
// Space Checkers
// Space is Key
// Spellfall
// Spinny Gun
// Splitter
// Spring Ninja
// Sproing
// Stabilize!
// Stack
// Stairs
// Stick Hero
// String Avoider
// Stringy
// Sudoku
// Super Mario Bros
// Surfingers
// Survival Horror
// Talesworth Adventure
// Tetris
// The Impossible Line
// The Moops - Combos of Joy
// The Next Arrow
// Threes
// Tic Tac Toe
// Timberman
// Tiny Wings
// Tipsy Tower
// Toony
// Totem Destroyer
// Tower Defense
// Trick Shot
// Tunnelball
// Turn
// Turnellio
// TwinSpin
// vvvvvv
// Warp Shift
// Way of an Idea
// Whack a Creep
// Wheel of Fortune
// Where's my Water
// Wish Upon a Star
// Word Game
// Wordle
// Worms
// Yanga
// Yeah Bunny
// Zhed
// zNumbers