Background shifting and Parallax scrolling

Hey there,
I’ve been working on the Background module in Skywalk : I added the ability of background shifting ( movement), and parallax scrolling.
Parallax scrolling for those who do not know about it, is the movement of layers from the background at different speeds, due to their distance from the observer. Parallax scrolling can be seen in real life as well : for example when travelling a road, you notice that its sidewalks and asphalt ground move at a higher speed than the mountains or the scenery in the background ( which move relatively slowly). I noticed that most programmers, when attempting to implement this kind of scrolling, tend to give layers different pre-defined speeds, this did not seem proper to me, I wanted to give each layer a height from the ship, and let the game engine automatically calculate the speed of the layer based on the speed of the ship. So I came up with the following formula ( I used Thalés theorem to retrieve it ) :

layerScrollingSpeed = (((maxHeight – heightFromShip) / maxLayerLevels) * shipScrollingSpeed)

Where maxHeight is a constant defining possible usable layer levels, meaning that heightFromShip must range from 0 ( layerScrollingSpeed == shipScrollingSpeed) to maxHeight ( layerScrollingSpeed == 0), this can be verified in the formula above by giving heightFromShip the value maxLayerLevels and then 0. Think of it as the height at which the layer will be so distant that it will seem like not moving.
So the game in its actual state looks like that :

Hope you like it !

Actual lines of code : 4112

Skywalk’s artist : Otman Elkantaoui

Hello everyone,
I’ll start by talking about changes that occured in the game : I have added audio support to the gameplay, now it seems much more alive and responsive. I also exploited the utility of the Identity Maker by designing some new enemies’ paths. I programmed a new enemy’s behaviour, the Aimed Rushed enemy : unlike the normal Rushed enemy, this one can rush into the player at any direction ( the normal Rushed only rushes if the player is in front of the enemy). Here’s a video featuring the new version of the game :

Well, as you can see, no ‘major’ changes have been applied to the game, but let me tell you that the best thing ever since I started the development has happened : I recruited a new member to the development team. His name is Otman Elkantaoui (, and he’s a damn skillful artist, we live in the same town, and I’m so relieved I got engaged with someone having this much talent in art, I can finally focus on the design and programming of the game, and leave any visual-related aspects of the game to Otman. Here’s a concept art he did for Amalay’s ( the protagonist) ship :
Amalay's ship for Skywalk

About Me

I’m Reda Lahdili, a Moroccan programmer who’s interested in games and how they’re made. I had my first computer contact when I was young, and of course doubt and wonder about these magical machines grew up with me. I decided to dive deep into this field and learn how these marvels actually work, so I started learning programming at 14 years old or so, and begun with the C++ programming language. The process of learning was so challenging yet so fun and intuitive. After two years, I learnt and mastered all the basics of this language ( yes, mastering the language as a whole, if possible, can take between 5 and 10 years).
Since I’m a huge passionnate of video games, especially 2D games, I finally made the decision to dive into the independant game development industry, and it’s so far freaking awesome.
I do have many passions besides programming, such as playing ( lots ?) of Video Games. Watching Anime, movies, and documentaries. Drawing Pixel-Art and/or Concept art. Solving riddles involving logic, maths, or physics skills and abilities. Listening to music, mainly the electronic ( 8-bit/Chiptune, Trance, Electro…), classic ( Symphony, Piano…), J-Pop genres and others…
I’m now in the process of making my first ‘official’ video game, titled Skywalk. Make sure to visit its own page in this blog, hope you like it.


Skywalk is a independant video game project that I’ve been working on since late 2013.
Otman Elkantaoui joined the development team in 04/2014, he’s in charge of all the visual assets of the game : Pixel-art ( Gameplay) + Manga ( Story) sequences.
I can’t share right now the core idea of the game ( yes, I’m afraid of ideas thieves :p ). A concrete definition of the game won’t be available until I can afford making at least a prototype, which will act as a proof of concept.
But basically, all you need to know about the game is that it’s a SHMUP game, with noticeable RPG elements and exciting story.

This game is all about the feeling of adventure, speed, flying, and freedom : the main protagonist is on his way to start a tremendous quest that will change the world forever.

My main inspirations were inherited from vertical SHMUPs such as Rayforce ( Arcade), Twinbee n’ Yahhoo ( SNES), Fat Cat ( Flash game by Nitrome), One Piece ( anime), and others…

Indeed, the game itself talks about a meaningful journey, instead of setting the player with pointless tasks, such as shooting and evading enemies’s bullets to complete a level, and then repeating the same process until the player finishes the game.

I expect a slow progress since school takes like 75% of my time.

Digital Artist v1

Hey there,
just wanted to do some creative work, waiting for more of inspiration and will-power ( as in One Piece’s Haki power haha) to comeback in order to work on Skywalk. So I made this random image generator program that has been stuck in my head for some time, and thought it would be great to share it with you, so here it is :
Also, here is a GIF :
Animated screenshots

The Identity Maker

Hey there !
Came up with an interesting feature during this week of holidays. I finally created the Identity Maker, which is a a software that enables making and editing Identities. This means that creating identities from a text file is no longer needed, the software I made provides a graphical way to do it, it can be considered as an enemy ‘editor’. Again, the identity do not specify the behaviour of the enemy, but rather how it moves and how it looks like. Behaviours are hard coded in the game engine, and as for now I can’t think of any other way without complicating things.
Well, the software itself do not add something new to the game, however, what’s interesting is what the Identity Maker can provide in the future ( when I will be sitting designing enemies and levels), that’s where the software will feature its utility. Here’s a screenshot :

Identity Maker v1.0

( the size of the window is 1280×680)
The editor basically consists of the following :

  • The Grid :
    A 2D space that simulates the game window: the inner green rectangle represents the game window ( which is natively 300×300 pixel size ( without scaling)), the other remaining space around is off-screen space, which also usable ( theoritically infinte size). The user can create dispalcement targets using the left mouse button, delete them using the right button, and select them using the middle one.
  • Some options related to the Grid :
    Show DT Indices : show the indices of each displacement target
    Show DTs : show the visual representation of a displacement target on the Grid ( usually circles, as shown in the screenshot)
    Show Links : show lines linking the whole movement pattern
    Show Enemy Preview : generates an enemy based on the inputted properties and show it in the Grid ( as a preview of how enemies with the created Identity will move and look like)
  • Settings of a single dispalcement target :
    The position of the displacement target
    The speed at the displacement target
    isFireSpot ( boolean) : whether the enemy has to shoot at that displacement target ( the displacement target where this boolean is true gets an orange ‘F’ letter in its representation on the Grid ( as shown in the screenshot))
    isDeletionSpot ( boolean) : the enemy disappears upon reaching this displacement target ( the enemy fulfilled his duty and is now ready to retreat !). I always specify the deletion spot outside of the window ( in the off-screen space) so that the player do not notice the enemy’s disappearance ( in the Grid, it’s represented as a square with a blue ‘E’ letter ( stands for End))
    isRelative ( boolean) : nothing exciting here, it’s related to the game engine…
  • Main properties of the enemy :
    The enemy’s spritesheet filepath
    Its health
    How much damage does he inflict.
  • Save Button :
    Save the identity in the hard disk under the specified name. We can then copy the file in the Assets directory of the game, and load an enemy with that identity, et voilà, the enemy now uses the identity we created.

There’s a bunch of other things I still want to add in the Identity Maker, but I’ll leave it as it is for now. I’m satisfied with the result done so far, so I’ll move to other parts of the game engine, probably the Command List editor ( will enable making levels…)
I’ve already prepared a load of enemies’ behaviours designs on paper, so as soon as I finish off with fundamental game engine utilities ( looking at you Command List editor), I will head towards the game content, and will eventually start making the Skywalk I see in my mind.