Devlog 5: Insanity’s Alpha Version Update

On February 16th, 2020,  I released my first game, Insanity, on itch.io as an alpha version for testing. I consider this as one of the most important milestones in my career as a game developer, as I never imagined that I would go this far. It was nice to see people downloading the game, giving it a try, and giving you feedback on how the game felt, or where things went wrong. It was such a great experience.

But where are we now with the game? What is the upcoming plan? I have been thinking a lot about this lately, and I have been a bit confused on whether to add some additional features to the game, or leave it as it is, and work on creating more levels and getting it ready for the release? Being indecisive is one of the things that you get to face when you do not have a proper scope document for your game; ironically speaking, I am starting a PMP exam prep course tomorrow, so this should help me in planning my next game better. I finally decided this quarrel in my head; I decided that I will not add any more features to the game, and I will start creating additional levels and challenges, and finally polish the game for release. I do not want to consume my brain by adding features and forget that I do have a deadline for releasing the game.

So what are the updates of Insanity so far? Here is a list of the most common issues that the testers reported in the alpha version:

  1. Interface issue: Almost all the bugs that the testers reported were related to this topic. The game’s menu has visual problems when it runs on other phones that have an aspect ratio that is not 16:9. It looks like the menu is going off the screen. I resolved this issue by downloading an asset from the asset store called Resolution Magic. This asset adjusts the camera’s orthographic size based on the aspect ratio of the display. What you do is that you define a canvas that you want to be visible, and the asset adjusts whatever is within that canvas according to the screen size.
Resolution Magic Canvas
The area in yellow is the canvas where all items within will be fitted with any screen’s aspect ratio.
  1. Coin Stacking: It seems that there was a bug that I oversaw when it comes to counting the collected coins. The correct behavior of the game should add the accumulated coins to the total count if and only if the player passes the level. It seems that in some cases, when the player dies, the coin counter does not reset, and the player accumulates the coins collected. I was able to fix this bug by taking a more in-depth look into the “PlayerPrefs” of the game; it should be working fine in the upcoming releases.
  2. I had a couple of comments on the controls of the game, and they are all divided into two significant opinions. Opinion #1: Keep the right and left arrows as they are as they provided more precision in character movement, especially in narrow areas. Opinion #2: Replace the two buttons with an on-screen joystick. Adding a joystick will allow the player not to remove their finger off the screen if they want to change direction. I think this is a valid opinion, but when I first started working on Insanity, I used an on-screen joystick, and somehow the controls did not feel right.

I am not quite sure which input method I should use, and I would love to see your opinions on this down in the comments, so feel free to share those ideas in the comments section, and let’s discuss this.

I received other suggestions with regards to Ad placement and a couple more on adding a timer functionality to each level so the users can speed run each level. While I think this idea is a great one, I think I will postpone it till the end of development. I will keep in mind when designing the levels that they need to be a speed run friendly to allow the players to speed run them fluidly, but I will keep the implementation of the timer and saving it to later in development.

I was also able to implement Insanity’s ultimate challenge, “Insanity Mode.” This mode is all about finishing the whole game in a single run. If the player dies, then you respawn back at level 1. I think if later I am to develop the speed run functionality in the game, then I would also include it in “Insanity Mode.” That way, the player can be challenged to finish the game in a single run, as fast as possible.

Insanity Mode
Insanity mode in action

So far, I think the game is looking good. I still need to work on many things and do many optimizations to the game, but that may be for a later time.

I really want to thank everyone who gave my game a try and submitted feedback or a bug report. The game is still on itch.io if you’re going to give it a try. You can download it by clicking here.

The thrill of making my first video game!

I was always fascinated by video games. Not just by how fun they are, but also in the small details that make them what they are. I remember back in the days when I was young I used to play Super Mario Bros over and over again! I got so good at this game to the extent that I used to speed run the game and try to break my record every time. I didn’t have a stop watch back in the days so I used to start at the hour and see how long it will take me to finish the game end to end without any shortcuts! I was 6 or 7 years old back then!

Then after some time, I got my first PC, it was packed with games. I don’t really remember most of them but the games that consumed me were Quake and Doom. Oh, the thrill of seeing a 3D game for the first time; to me that was a miracle! Something out of this world! I always said to myself that this is it! Video games cannot get better than this. I would spend hours and hours playing these two games trying to finish them. Back in the days, we didn’t use the mouse to aim n the FPS games, it was all in the keyboard.

Then I got my PS1 and a whole new era of video games opened its arms to me! i never thought that you can tell a story in a video game! I remember player Resident Evil 3, Crash trilogy and other games that had some great stories! I would get very emotional because of how the story turns out or really frustrated at a character. From this moment, my love to video game was cemented!

I never saw myself as a person who would develop video games. I always thought that making these games was too complicated and advanced for me! I would always think to myself that I am no match to do things like that! I had some great stories to tell, and I do have the passion towards video games, but making them was not a thing that I would put myself through because I was afraid that I might fail. I had this thought because I took a computer graphics course back at school that was based on OpenGL and C++ and boy that was one tough course! I barely got out with a B, and I was proud of it! I couldn’t imagine myself going through all this again for making games!

In 2018 I discovered Unity; and after watching few tutorials, I saw that it was not that hard to make a game on that engine! I decided to give myself a chance and give it a try. I started with a course called “The Ultimate Guide to Game Development in Unity” that was offered in Udemy by Jonathan Weinberger and I found that it was not that hard. You just needed to understand the API of Unity and get used to it and things will start to click from there! I remember the feeling I had when I finished the space shooter game that was the product of that course. I was over the moon! I actually made my first video game. I shared this game with all my friends and they all didn’t believe that I actually made a video game. This is when I decided that this would be the kind of work that I want to do for the rest of my life.

Today I am working on developing my first video game, Insanity. I started working on this game earlier this year, and I am planning on participating in the Ultimate Game Jam with that game! Honestly, I do not care if I win or lose in this Game Jam. I do not care whether this game bring me a lot of money or not. I do not care if that game does not get viral. All I care about is that this is my first video game that I started on my own from scratch, and now it is published to the public. I finally made it; I finally was able to do something that I thought I would never do! Today I am preparing my game for its alpha version; and soon, the game will hit the market. I can’t be more thrilled than I am right now!

So, if you are reading this post right now and having these second thoughts; if you are being haunted by that thought that you are not good enough for this field, or does not have the knowledge to excel in it. Think again and read this post one more time! If you love the field and passionate about it, then my advice to you is to never give up on yourself!

 

Regards,

Samir Georgy

Devlog 4: Music Composition

Music is an essential part of any video game. They can change the mood of any scene drastically. You can have an intense scene full of action but if the music is not good enough, you may lose interest in whats going on. That’s why, in my opinion, right now, AAA studios spend a lot of money with top composers to get their music right. These days when you listen to a track, sometimes you cannot differentiate whether this is made for a movie or a video game.

When it comes to Insanity, music plays a crucial part of the player experience. I want the player to feel excited, I want the player to get that feeling of moving forward, to overcome all the obstacles to win the level. I want the pace of the game to be fast. I am not planning on showing any between level graphics like a player level performance rating or so, once the player is done with a level, I will get him/her right into the next one. There is no stop or pause. The music needs to convey this experience as well. I want the music to be fast, loud and when it comes to progression I want it to always have major notes, so it implants that feeling into the player that no matter how hard the level is, the player can still do it.

I worked with my cousin who is a great aspiring musician; his name is Karim Ibrahim, you can follow him on twitter by clicking here, or find some of his work on Anghami by clicking here. We spend hours and hours thinking about the main theme of the music. What I understood from him is that you need to pick a melody, a master melody and this should be the theme of the music of your entire game. You can them take that melody and do all kind of variations to it, but you need to stick to the main theme. I am not a musician so maybe I am having a little hard time explaining this; but think of Assassin’s Creed as an example. We all know the famous theme of Assassin’s Creed, and we have heard it in almost all the different releases of the game; but sometimes you hear the theme in acoustic guitar, sometimes you hear it in an orchestra, maybe in a rock progression. You can use that theme and incorporate it in any music genre you want. We spent a lot of time trying to figure out a good melody that we can use and follow through out the composition of the music; and we finally got there! It was really exciting for me to get that music recorded and ready.

We basically recorded two small tracks, one for the menu and another for the level. The rationale behind the menu music is that it should put you in the mood. It need to be a little but slow, but at the same time powerful enough to prepare you for the challenges ahead. We thought of having a basic percussion of a drum kick followed by a clap, maybe to give a feeling of encouragement to the player to what is yet to come! So the pace of the menu music would be a little slow, but the pace of the levels will be fast, this would put a good contrast, I guess, so that if the player switches back to the menu, things will get a little bit less intense.

I have to say when we finished recording the menu music and I added it into unity, the feeling I had was just priceless. The game started to have its own identity. It started to have its own unique feeling. To be honest, this experience has been one of the greatest experiences in my life so far and I am so thankful that my game has reached this stage. I will leave you here with a small snippet of what we did.

Devlog 3: Insanity’s Experience

One of the things that I was thinking about when i was working on my game is its experience. Any good game, in my opinion has to make the player feel something. Some games make their players feel powerful, smart, afraid, sad or even angry! I remember playing a game called I AM BREAD… Oh, that game made me want to find the developer that made it and just punch him/her in the face! But that what makes a game good, in my opinion; even if not a lot of people like it.

So, what do I want the player to feel when playing Insanity? I want the game to be challenging, fun and at the same time to make the player feel unstoppable. Now, the important question is: how can I convey this feeling to the player? The first thing that I thought of was the Music. Music can set the mood for any game. It can turn a glorious winning scene into the saddest scene you have even seen. For now, I am using the Mjolnir mix track for Halo 2; it is fast, using high keys and the progression of the music makes you feel that you just want to keep going forward. Now, I cannot just use that track in the game I am planning to release, but this track helped me in knowing what kind of music I want to include in my game. I want the music to be badass!

What else can I do to enhance the experience of my game? The Controls? Of course… the simpler and more efficient and responsive the controls are to the player, the smoother the game is, and the player will focus more on the game rather than having understand a complex controlling system (of course that case if for Mobile gaming). At first I was thinking of just using a joystick and put it on the left of the screen and the jump button would be on the right; something like Pubg’s controls. But I thought that this will be too complicated for my game; besides, the player will never have to do upwards or downwards in the game. So I decided to create the control system in buttons. A button that you press so the player moves forward and another for backward movement and a jump button. The movement buttons are close to each others to make movement for the player easy. The jump button is located to the left as most players have a muscle memory of jumping using the right hand.

Insanity Game
The controls of insanity at the bottom of the screen.

The plan for Insanity goes beyond music and controls, but also through game play. The player has to finish the whole game before he/she can unlock two additional modes for the game:

  1. Time Trial: Where the player can select a level and do it within his/her time. The player can break his/her own record by playing the level again and finishing it in less time.
  2. Insanity Mode: The ultimate mode of Insanity. This mode’s challenge is to finish the whole game in a single run. Which means that you have only one health point through out the game. If you die at any level, you restart the game from level 1.

I am thinking of incorporating the game with Google play games, and introduce trophy system to the game in order to make the game more rewarding to the player, but I need to think about it. Not sure if this will be available in version 1.0

For now, these are my thoughts when it comes to the Insanity Experience. I am sure, I will come up with more ideas along the way; after all, this is my first game ever. and I can’t wait to get it released!

Devlog 2: Level Design

One of the challenges I had when creating the levels is art. It is a skill that I am working on improving but at the same time I need to be productive and take a fast run in order to finish the game on time. I had to find a solution that can make my life a bit easier when it comes to the arts.

To start, I used the sprites that Jonathan used in his course “The Ultimate Guide to Mobile Game Development” and I used the skills I learned in that course to build a tile-map for the first level. Now I have a simple level where I used the dungeon sprites that were provided in that course. Then I decided to build another level with the same tileset, but I was thinking that I shouldn’t have all the levels having the same dungeon-y theme. I need to create levels with variable themes so that levels won’t be boring.

Level 2 of Insanity
Level 2 of Insanity

Thankfully a friend of mine, who is a graphic designer, referred me to a website called Freepik. This website has a big set of sprites that you can use to build your own 2D game varying from 2D characters with their animations to tilesets to GUI items and a lot more. Basically what I did is that I downloaded almost all the tilesets from that website and I had to find my way through Adobe Illustrator to extract those tiles, make a sprite sheet with the correct sizes so I can slice them properly in Unity and create the tilemaps. I have to admit, the results turned out to be great! So if you are a game developer who is not good at art like me, I recommend that you use this website as a good start.

Then it came the time to decide which traps should I implement to make the game challenging and at the same time fun. The idea that I have is that I wanted the player to advance through the game bit by bit. I don’t want level one to have tough traps and tricky jumps, otherwise, the player will get bored from the game; but rather, let’s start with an easy level and get tougher the more the player advances through the game. The traps that I am initially thinking about are the following:

  1. Spikes (of course)
  2. Circular Saws (stationary and moving).
  3. Fire (bring the heat!)
  4. tracking missiles? (not yet sure whether I should include this or not.)

When it comes to the behavior of those traps, I tried as much as I could to make the behavior of those traps modular. So basically I have built a universal class called TrapDamageBehavior. This class is responsible for killing the player if it collides with the trap. This class can work with any trap that I can think of. Now some of those traps are not stationary. For example, The Circular Saws tend to move back and forth in their tracks at the level. For this scenario, I wanted to do some OOP. Basically, I have created a generic parent class called MovableObject that Inherits from MonoBehavior. Here is its code:

public class MoveableObject : Monobehavior
{
    #region Private Protected Variables

    /// <summary>
    /// The object's point A
    /// </summary>
    [SerializedField] protected Transform pointA;

    /// <summary>
    /// The object's point B
    /// </summary>
    [SerializedField] protected Transform pointB;

    /// <summary>
    /// The movement speed
    /// </summary>
    [SerializedField] protected float _movementSpeed;

    #endregion
}

This class has two points, A and B, where the object can move between and a movement speed variable. Now I can create another class called OscillatingMovement that defines the movement of any object that needs to move between two points. That class will inherit from MovableObject and use points A and B and the movement speed variable. This class has a function called Movement where the object is moved from one point to another back and forth. The code of the function is this:

public void Movement()
{
    //positionToMoveTo is initialized in start to pointA

    transform.position = Vector3.MoveTowards(transform.position, positionToMoveTo.position, _movementSpeed * Time.Deltatime);

    if (transform.position == pointA.position)
        positionToMoveTo = pointB;
    else if (transform.position == pointB.position)
        positionToMoveTo = pointA;
}

I was able to use this class to move all the circles saw traps as well as the moving platforms in my game; I even used the same class to move the level target which is the gem in the same manner. All that I have to do is to reference PointA and PointB for any moving object in the scene and define a movement speed and the object will move between Point A and B right away. The reason why I thought of building the movement of those objects in this way is that I am trying as much as I can to reuse the parent class with multiple objects. For example, If I am to implement the missile that I may need to create a child class that only uses point A for example as a spawn point and point B be the player last location upon spawning and the missile can then move towards point B but not in an oscillating movement but rather a one-directional movement.

There is still a lot to consider and to think about when it comes to the traps and I also see opportunities for optimization; but for now, this is how I approached my trap behaviors.

Devlog 1: Insanity

Hello, and welcome to my devlog where I will be documenting my journey in developing my first game, Insanity.

Insanity is a mobile 2D platformer game that is inspired by a game called Super Meat Boy. I am planning to publish it to the play and app stores by the end of 2020. At the beginning I had no idea what game I should be doing. I downloaded some free assets from the asset store and tried to build my own Third Person Controller, then I tried to animate that character and play around with it, but I didn’t really have a solid idea that I can work on from the beginning and take it all the way to release. At that time I was playing Super Meat Boy, and i thought… why not start with something similar to it. 2D and 3D Development are pretty much the same with few differences as per my knowledge with Unity so far. So I decided to start with developing a 2D Platformer game similar to Super Meat Boy but for mobile.

I developed my first level in that game and experimented with the character controller to try to make the player move. Thanks to the course “The Ultimate Guide to Mobile Game Development” that Jonathan Weinberger offered on Unity, I got familiar with tilemaps and with the basics of level design for mobile games, and this is where it all started. I had my notebook with me all the time to write down any idea that I may have for that game. The game is supposed to challenge the player where he/she has to go through multiple levels with obstacles and traps and make it all the way to collect the sacred gem in each level. When I first thought about Insanity, I thought that it should include the following:

  1. Lots of traps that the player has to overcome.
  2. Power ups that can help the player overcome some complex traps easily. The power ups that I thought about so far are an ability to dash and freeze time for the environment.
  3. The game should give the player a feeling of having to push forward. So the over all atmosphere of the game is drive the player forward to try and pass all the levels.
  4. The music should convey that feeling to the player. For now I am using as a pilot the soundtrack of Halo. I still need to work on its soundtracks, but this will do for now.

When you unlock all the levels the game will unload a mode called “Insanity Mode” where the player is challenged to finish the whole game in a single run. No checkpoints, no lives, no mercy. If the player dies, he/she has to start the game all over from the beginning. I am not sure yet if this is a good idea to make or not, but I guess things will be clearer towards the end of development.

Insanity Game
One of the levels in Insanity

One of the challenges that I have when developing this game is the art. When it comes to art, and designing good looking environments and animations I am not that skilled, so i tried as much as I can to get myself comfortable with Photoshop. I also found a great website where you can file some really good tilesets that you can use in your 2D game. The website is www.freepik.com you can find a lot of good sprites over there.

I am also using Unity Advertisements to play ads to the player. I will be talking more about the my approach towards the ads in later posts.

So far I have built only 4 levels, and I keep on expanding on the game’s features. Once I finish all the features that I have planned, I will continue on creating more levels.

Level Selection
Level selection menu in Insanity

I will be sharing more insights on my development journey of Insanity. If you like to give it a try, you down download the apk file from this link and give it a try. This is an initial version just to test how things are going when building it for android. Go ahead… Give it a try!

First FPS game!

As many have noticed, these days I started to learn game development. Through the last course that i took I learned the basics of Unity; I learned how to make 2D games as well as 3D games.

One of the projects that i worked on during the course was to create a 3D First Person Shooter (FPS) game. All the models imported into the project were created by Unity artists; so all i did was just the programming and the logic for the game.

I am pleased to share with you my first FPS game. you can download it from the link below and try it out. Feel free to leave a comment about the game.

Sci-Fi Shooter Game

First Game Development Certificate

Hello Everyone! Today I am excited to share with you an important piece of news.

Today I got my first game development certificate. I finally started to pursuit my dream of becoming a game developer and this is step one. As i mentioned in my previous post, when it comes to video games, my passion just over grows me. I love video games; I love playing them, and i love making them.

This course was an introductory course to Unity engine where it teaches you the basics on have to make some good games. I will continue on expanding my knowledge to this field until i reach my ultimate goal 🙂

My first game ever!!

It has been a very long time since i last posted something on my blog; and it is time to start writing again! I think that there is no greater start than to announce that I have finally started to pursuit my dream of becoming a game developer. I have always been passionate about video games and wanted to create some.

Today I announce the release of my first video game. Galaxy Shooter.

Feel free to download it and leave any comments below if you have any about it. Enjoy it! 🙂

Galaxy Shooter

The CoD:MW3 Experience

Yes I am gamer. I am a hardcore gamer.

One of the games that I recently played is a game called Call of Duty: Modern Warfare 3. I upgraded my computer specifically to play this game. I think Call of Duty is one of the most brilliant games ever made in the history of gaming. I remember when I started playing games, when there was this old Nintendo, and these old gaming stations, games used to be… you know… just a guy walking around and shooting things! The character you were playing with used to be the super hero, or this amazing guy/girl that can do anything.

This is not the case in games these days. A lot of new games now have stories, REALLY good stories. They are well directed, and they are just breath taking. Modern Warfare 3 is the third and final release of the Modern Warfare trilogy. This game never seize to impress me with its brilliant game play and super interesting story.
Continue reading