GECCO16: General Video Game Level Generation

Hello everyone,
This is my talk in GECCO16 for our paper “General Video Game Level Generation“.

GVG-LG Framework GECCO.001

Hello everyone, I am Ahmed Khalifa a PhD student at NYU Tandon’s school of engineering and today I am gonna present my paper General Video Game Level Generation

GVG-LG Framework GECCO.002

We want to design a framework that allows people to develop general level generator for any game described in video game description language.

GVG-LG Framework GECCO.003

So what is level generation? It using computer algorithm to design levels for games. People in industry have been using it since very long time. At the beginning the reason due to technical difficulties but now to provide more content to user and it enables a new type of games. The problem with level generation is all the well known generators are designed for a specific game. So it depends on domain knowledge to make sure levels are as perfect as possible. Doing that for every new game seems a little exhaustive so we wanted to have on single algorithm that can be used on multiple games. In order to do that we need a way to describe the game for the generators.

GVG-LG Framework GECCO.004

That’s why we are using Video Game Description Language. It’s a scripting language that enables creating different games super easily. So the script written is for that game which is kinda like dungeon system from legend of Zelda. VGDL is simple u need to define 4 sections, SpriteSet, LevelMapping, InteractiveSet, and TerminationSet. SpriteSet to define game objects such as goal, interactionset to define the interactions between different objects, termination set define how the game should end.

GVG-LG Framework GECCO.005

Here some extra examples that shows that vgdl is able to design different games such as freeway where the user try to reach the exit by crossing the street.

GVG-LG Framework GECCO.006

Snowman which is a puzzle game where the player try to build a snowman at the end position by placing the peices correctly. It’s inspired by a snowman is hard to build a famous Indiegame about creating snowmen and giving them names and hugging them.

GVG-LG Framework GECCO.007

Let’s get back to the framework, we want to create it as simple as possible so each user write a level generator where he gets a vgdl description of the game and he has to return a generated level

GVG-LG Framework GECCO.008

The game description object give the user all the information in vgdl and also give tags to the sprites according to their interaction. For example if object block the player movement and don’t react with anything else, is considered solid, if is the player then tagged as avatar, if it could kill the player then it’s a harmful object, collectible object is stuff that get destroyed

GVG-LG Framework GECCO.009

We designed 3 different level generations and shipped them with the framework, the first one is the random generator where it place all game objects in different location on the map

GVG-LG Framework GECCO.010

The second one is the constructive generator where it tries to use information available and design a good level. So it starts by calculate percentages for each object type then it draws a level layout, then place the avatar at random location then place harmful object in a position proportional to the distance to the avatar, then add goal objects. After that it goes through a post processing where it add more goal objects if needed to satisfy goal constraints.

GVG-LG Framework GECCO.011

The third one is a search based generator where it uses feasible infeasible 2 population genetic algorithm to generate the level. We populated with levels generated from the constructive algorithm to ensure that GA will find better levels. We use one point crossover where two levels are swapped around certain point. While mutations used is create where it creates random object at random tile, delete: deletes all objects from a random position,

GVG-LG Framework GECCO.012

We used several constraints to ensure playability of the levels. First one is cover percentage so we never generate an over populated levels or very sparse levels

GVG-LG Framework GECCO.013

Make sure there is one avatar becz if it’s not there it’s impossible to play the game

GVG-LG Framework GECCO.014

Sprite number constraint where it makes sure there is at least one sprite from each type, to make sure the levels are playable. For example if there is no key u can’t win the level

GVG-LG Framework GECCO.015

Goal Constraint to make sure that all goal conditions are not satisfied becz if they are satisfied then u win when the game starts

GVG-LG Framework GECCO.016

Death constraint is to make sure for the 40 game steps if the player did nothing he won’t die becz if the player dies at the beginning it’s unplayable game becz humans are not as fast as expected

GVG-LG Framework GECCO.017

Last one is win constraint and solution length is make sure the levels are winnable and not straight forward win, the best agent takes amount of steps before finishing.

GVG-LG Framework GECCO.018

These are all the constraints, about the fitness, it consists of two parts. The first part is score difference fitness inspired from Nielsen work. He found that the difference in score between the best agent (Explorer) and his worst agent (DoNothing) is big in good designed levels compared to random generated ones. We used the difference between our best agent and worst agent for that.

GVG-LG Framework GECCO.019

The second fitness is unique rule fitness, we noticed by analyzing all games that agents playing good designed levels encounter more unique intersection rules than random designed levels.

GVG-LG Framework GECCO.020

In order to verify that we did a user study, where the user plays two levels from a certain game and choose which is better. We used 3 different games without including puzzle games as there is no agent excels in playing puzzle games so far.

GVG-LG Framework GECCO.021

The results shows that users prefered search based levels over constructive which was expected while they prefered random over constructive without huge significance.

GVG-LG Framework GECCO.022

One of the main reason we think is people can’t differentiate between constructive and random but random always ensure all sprites there which make its levels playable while constructive although it looks better sometimes it misses a key or something.

GVG-LG Framework GECCO.023

We ran a level generation competition one week ago, we had 4 competitors (1 based on cellular automata, 3 based on search based approaches)

GVG-LG Framework GECCO24.001

It was simple because the cellular automata didn’t put tons of objects in the level which made it somehow playable while all the others overloaded the levels with tons of object so players die insatiately

GVG-LG Framework GECCO.025

Our future work, is enhancing search based generator to get better designed levels, enhance the framework based on competitors feedback, rerunning the competition again and encouraging more people to participate.

GVG-LG Framework GECCO.026

That’s it, Thanks.

That’s it for now.
Bye, Bye

IJCAI16 Talk: Modifying MCTS for Humanlike Video Game Playing

Hello everyone,
Ages since last post :D on Thursday July 14th I gave a talk about my paper “Modifying MCTS for Humanlike Video Game Playing” with Aaron Isaksen, Andy Nealen, and Julian Togelius at IJCAI16. Thanks to Aaron, he captured a video of my talk. Here is it:

Also we did a poster for the conference which looked amazing. Here is the poster:

Humanlike MCTS Poster.001

If the video is not clear, I am posting the slides here with my comments:

Humanlike MCTS New.001

Hello everyone, I am Ahmed Khalifa, PhD student at NYU Tandon’s School of Engineering. Today I am gonna talk about my paper “Modifying MCTS for Humanlike Video Game Playing”.

Humanlike MCTS New.002

We are trying to modifying Monte Carlo Tree Search algorithm to play different games like human player. We are using General Video Game Playing Framework to test our algorithm.

Humanlike MCTS New.003

Why do we need that? One important reason is create humanlike NPCs. One of the reason people play Multiplayer games is the lack of realistic NPCs to play with or against. Also evaluating levels and games for AI-assisted tools. For example if you gave these two levels to a human, he will pick the one on the left as its playable by human while the one of the right is super difficult, it might even be impossible to be played.

Humanlike MCTS New.004

Before we start, whats general video game playing which we are using its framework. Its a competition for general intelligence where competitors create different agents that plays different unseen games. These games are written in a scripting language called Video Game Description Language. Every 40msec the agent should select one of the available actions. Like up, down, left, right, use button, nil which is do nothing. A game play trace is a sequence of actions.

Humanlike MCTS New.005

Here are two videos that shows the difference between human player and MCTS agent. On the left you can see humans tends to go towards their goal and only do actions when necessary (for example only attack when monster is near). While MCTS agent on the right is stuck in the upper left corner moving in walls, attacking the air and walls.

Humanlike MCTS New.006

By analyzing the play traces for both human players and MCTS agent on different games. We found that humans tends to repeat the same action multiple times before changing. In the first graph it shows human have tendency to repeat the same action twice by 50%. Also humans tends to use more NILs and tends to repeat it more during the play trace. While in the third graph it shows the MCTS have a higher tendency to change actions more often than humans. Humans 70% of the time don’t change their action.

Humanlike MCTS New.007

In order to achieve similar play traces, we need to modify MCTS. These are the main 4 steps for MCTS.

Humanlike MCTS New.008

We tried to modify each step on its own but none of them have a big change in the distribution except for the selection step.

Humanlike MCTS New.009

Selection step depends on UCB equation to select the next node.

Humanlike MCTS New.010

UCB equation consists of two terms, exploitation term and exploration term. The exploitation term bias the selection to select the best node while the exploration term push MCTS to explore less visited nodes.

Humanlike MCTS New.011

We modified the equation by adding a new bonus term which consists of 3 parts:
Human Modeling
Trivial Branch Pruning
Map Exploration Bonus
Also we modified the Exploitation term with a MixMax term.
We are going to explain all these terms in details in the upcoming slides.

Humanlike MCTS New.012

We added a bonus value that shift the MCTS distribution to be similar to human distribution. As you see from the video the agent tends to repeat the same action and do more NILs with lower action to new action frequency. But as we see, it is still stupid, stuck in the corner, attacking air, moving into walls.

Humanlike MCTS New.013

Thats why we added the second term which avoids selecting stupid nodes (like attacking walls and moving into walls) As we see the agent stopped attacking the air and whenever it get stuck in a wall, it changes the action or apply nil. But its still stuck in the corner.

Humanlike MCTS New.014

So we added a bonus term that reward nodes that have less visited positions on the map. As we can see the agent now go every where and explore. But as we see the agent is coward, it avoids attacking the spiders.

Humanlike MCTS New.015

So we used MixMax term instead of the exploitation term which use the mixture between the best value and the average value of the node instead of the average value only. As we can see the agent become courageous and moves towards the enemies and kill them.

Humanlike MCTS New.016

Analyzing the play traces after all these modifications. our BoT (Bag of Tricks) algorithm tends to be more similar to human compared to MCTS in action repetition, nil repetition. Also having less action to new action changes.

Humanlike MCTS New.017

In order to verify these results we conducted a user study. In the study, each user watch two videos and he was to specify which is more likely to be human and why?

Humanlike MCTS New.018

From the study our BoT algorithm was more human than MCTS but still not as good as humans, except for PacMan where deceived the humans by 60%.

Humanlike MCTS New.019

When we analyzed the human comments we found that the main reason for recognizing agent are the same as we stuff we tries to solve. Jitterness (changing directions very quickly), Useless moves (attacking walls, moving into them), No long term planning (stuck in one of the corners), too fast reaction time, over confidence (killing all enemies and become over achiever)

Humanlike MCTS New.020

Thanks for listening.

That’s everything for now.
ByeBye

Super-W-Hack! Incubator Pitch

Hello everyone,
Today me and Gabriella gave a talk about Super-W-Hack for the incubator program. I felt it would be nice to share the talk with you people.

SuperWHack-Pitch.001
Hello everyone, I am Ahmed and this is Gabriella. We are PhD students at the game innovation lab here at NYU. We are going to talk today about our game Super-W-Hack!

SuperWHack-Pitch.002
Super-W-Hack! is a roguelike game with retro aesthetics as a tribute to the roguelike genre. Our game takes the procedural content generation (PCG) up to the next level. We use it to generate everything in the game.

SuperWHack-Pitch.003
Levels are procedurally generated, names, layouts, enemy distributions.

SuperWHack-Pitch.004
Player weapons: weapon pattern, names, sounds.

SuperWHack-Pitch.005
Even bosses are procedurally generated.

SuperWHack-Pitch.006
All game main features are done. But since our research is in PCG and we know how amazing it can generate stuff so we want to embrace it more. Generate the main character (his back story, why he is going to the dungeon). Generate variable weapons like teleportation, mines, bombs. Also our game still needs music. Since we have lots of PCG so we need lots of testing to make sure it works correctly.

SuperWHack-Pitch.007
We plan to finish the game and release it by the end of the year over Desktop such as Steam and Itch.io as Desktop has always been the land of roguelikes and the hugest fanbase. Since the game has simple controls and small decisions to take at each step. We believe it will do well on Mobile markets such as App Store and Google Play. We are going to send our game to all the major events such as IGF, IndieCade, and PAX. We believe with the help of the incubator we will be able to reach all these goals.

SuperWHack-Pitch.008
Thanks everyone for listening any questions.

Level Layout
(Then we played this video in the background while taking questions)

We got couple of questions and concern about the play session time, ensuring the game is playable and interesting to the player, and what’s a roguelike.

I just wanted to share my talk about the game and here is the link (www.amidos-games.com/super-w-hack/) to the alpha version if anyone wanna try it. In the current state its still a little hard to understand in the beginning but as soon as you understand it. It so intuitive and interesting to be played.

ByeBye

Video Game Description Language (VGDL) & General Video Game Playing Framework (GVG-AI)

Hello,
This post is a presentation I did couple of weeks ago at Game Innovation Lab (GIL). It supposes to help people at the lab to understand VGDL and GVG-AI framework. I think that if we want VGDL to evolve, more people should know about it and use it. This evolution won’t happen without showing to people the power of GVG-AI Framework and VGDL. There is lots of development happening to improve the framework and language and making it more accessible to people (creating an Interactive Visual Editor with computer assist). The following paragraphs are my slides with a description for each slide.

Slide1

Slide2

General Video Game Playing (GVGP) is creating an AI agent that can play different video games (not a certain game) efficiently. The hard constrain on these agents that they need to have a response time in about 40 msec.

Slide3

Video Game Description Language (VGDL) was invented to help to prototype different games quickly for the GVGP and have a common framework to work with. VGDL was initially written in python but now ported for java (to be faster). The language is tree structured like xml files. It supports grid physics like old arcade games (PcMan, Space Invaders, …etc). It is human readable and easy to prototype lots of different games using it (PcMan, Frogs, Space Invaders, Sokoban, …etc)

Slide4

The current drawbacks of the VGDL: It hasn’t a visual editor, It hasn’t a good online documentation for the language, It has limited physics (no continuous physics to prototype games like Cut the Rope), and It has limited events (all game events are restricted with collision events between objects). Right now people are working to improve these drawbacks and make the VGDL more accessible to more people. Check the current draft of documentation and may be you could help improve the writing and improve it (link).

Slide5

In order to write a game using VGDL, you need to provide two files (Game Description File and Level Description File). The Game Description File describes the whole game (What are the game sprites? What’s the termination condition? How do sprites interact? …etc). The Level Description File describes the level layout (Sprite arrangement).

Slide6

Let’s take an example. This game is called WaterGame. It’s super simple game where you have to move the avatar towards the exit. The problem is the path is always blocked by water. If avatar touches water, it will die. In order to pass the water, the avatar should push boxes over it (Box destroys the water, you can think it floats).

Slide7

That’s the Game Description File for that game. It is divided into 4 sections (SpriteSet, TerminationSet, InteractionSet, and LevelMapping).

  • SpriteSet: explains all the game sprites (their type, their rendered image). For example “avatar” is defined as of type “MovingAvatar” which means it can move in all 4 directions and it has an image called “avatar” (All images must be in sprites folder).
  • TerminationSet: explains how should the game ends? For example “SpriteCounter stype=avatar limit=0 win=False” means if the number of “avatar” sprites are equal to zero, you lose the game.
  • InteractionSet: explains the result of collision between sprites. For example the first collision says if “avatar” collides with “wall”, the “avatar” should “stepBack” which means undo its last movement.
  • LevelMapping: just helps the VGDL engine to parse the Level Description File. The VGDL engine just replace each character with the corresponding sprites.

Slide8

The Level Description File is a 2D matrix of characters described in the LevelMapping section. The VGDL engine just replace each character with the correct sprites and voila the level appears.

Slide9

Let’s now talk about the different types of sprites we can define. There is several amount of sprites but I just categorize it into the following:

  • Portal & Spawn Points: Like doors, teleports, portals that spawn objects, and …etc
  • NPC: there is chasing npc (follows a certain sprite), fleeing npc (runs away from certain sprite), random npc (moves randomly), and …etc
  • Resource: objects that can be collected and change certain defined variable value. This value can be anything like score, health, ammo, …etc
  • Avatar: It is controlled by the player (using keyboard or an agent). It can be moving avatar (moves everywhere), shooting avatar (which moves and can shoot), …etc
  • Movable: It is an object that is affected with physics like missiles.
  • Static: It is not affected with any physics even its applied on it like walls.

Slide10

There is only three different types of termination condition:

  • SpriteCounter: It terminates the game when the number of certain sprite is larger than or equal to certain value.
  • MultiSpriteCounter: It terminates the game when the summation of two different sprites equal to certain value.
  • TimeOut: It terminates the game when the game time is larger than or equal to certain value.

Slide11

There is lots of different interactions that can be used on collision between different sprites. The following are categorization for them:

  • Kill Sprite
  • Spawn Sprite
  • Undo Movement
  • Change Orientation
  • Change Position
  • Collect Resource

Slide12

The following slides will focus on the GVG-AI framework and what does it offer? For more details check GVG-AI website documentation (link).

Slide14

You can integrate an AI Agent that plays VGDL games just by extending AbstractPlayer class and providing a constructor and an act function which returns the avatar action every single game step.

Slide15

The framework also supports a StateObservation class that wraps the current game status (winning, score, and time), avatar status (speed, position, and orientation), grid observation for all the game (also it supports arrays for different sprite types), and Event History for all collisions happened due to the avatar or a sprites spawned by it.

Slide16

The StateObservation class provides forward model that can predict the future but not exactly as most games are some how stochastic.

Slide17

Last thing the framework comes with couple of sample agents to help you understand how to write your AI agent. For example: Random Agent, One Look Ahead, Genetic Algorithm, and Monte Carlo Tree Search.

Slide18

That’s the whole presentation. I hope it encourages you to use VGDL to prototype your games or even participate in the next GVG-AI competition (link). The Game Innovation Lab is trying to improve all the drawbacks of the VGDL language and even start a PCG competition track (link).

Bye Bye

Game Development BootCamp Talk

Hello Everyone,
Sorry for being away still trying to get out of depression but at same time I made a talk for an event called Game Development BootCamp in Egypt in Alexandria (a city on the north coast) I went there with my game developers / designers friends and I enjoyed it because it was really good time to get away from everything and try to get out of depression it helped somehow but I keep going back and back to depression but don’t worry I am getting out from that.

Here a recorded video about the talk (The talk is in Arabic so I will post the slides with English explanation to everything in here as I done with A Maze talk)

P.S. The talk is not recorded from the beginning they started a bit late (10 mins late)
Let’s cut the crap talk I am doing and let’s get to the talk itself :) The talk is called Tossing a Coin which is mainly my personal experience and trip about publishing commercial games till my latest game Atomic+ and telling people there is mainly a huge part of luck in all that but in the end do your best and may be the luck be on your side :)

Slide1

How many people know this game? [lots of people raise their hands]
Slide2

Yes its Flappy Bird.
You play as a bird that falls with gravity and when you touch the screen the bird flap its wings and jumps up. You have to pass through the pipes and avoid hitting into them or falling off the screen.
Slide3

The game is stupidly hard and that’s because of the game having bad collision (hit boxes are a bit larger than object).
The pipes are same pipes from Super Mario.
So nothing unique about that game.
Slide4

Although of all what I said the game had millions of downloads, it was the top in AppStore (for long time).
Everything started by some school students who downloaded the game and started challenging each other.
After sometime some people started recording weird vines about people playing Flappy Bird and getting angry and frustrated and because some of these vines are pretty weird and funny it caught people attention started wondering about the game and downloading it.
Also the cute little bird icon caught some people eyes.
But that’s not enough reason for getting to top of AppStore. The main reason is LUCK because of it school children found the game and because of Luck someone started vineing and these vines went viral.
Slide5

Tossing A Coin is the name of my presentation today where I am gonna talk about my personal experience of releasing Commercial games in different stores.
Slide6

Who am I? I am Ahmed Abdel Samea Khalifa Indie Game Developer / Designer.
Created around 5 Full games (2 flash games, 1 pc game, 2 iOS games) you can check them from games section on the website.
Created over than 30 prototypes mostly are done in gamejams.
Now working on new mobile game.
Slide7

Why do I make games? First answer because I love games (love playing games, making games, watching games).
Its the only way I can express myself, as you can see I am terrible writer I can’t write good lines, sometimes feel shy talking to people. I make games to express a feeling I have, explain idea or thought or/and telling people my opinion about certain topic.
Games make people happy and I love seeing happy people with smiley faces so its another reason I make games.
Slide8

How many people know this game? [Some people raise their hands] yes its 2048.
You have to swipe the screen in any direction so all tiles moves in that direction and equal tiles are combined in one tile with summation of both tiles. You have to get 2048 to finish the game. Every step new tiles entered the map with value of 2.
Slide9

How many people know this game? [very few people raise their hands] Its called Threes.
Its the original game of 2048. Its same as 2048 but instead of 2 you play with 3 (From here come the name).
Slide10

2048 is a copy of a game called 1024. 1024 is a copy of Threes but we can’t blame the developer he was just a little kid trying to learn programming so he created open source game 1024 based on his favorite game Threes.
Although Threes came out before 2048 but 2048 is much more famous and having more downloads than threes. So why is that?
Some people says because 2048 is a free game while Threes is paid one that makes people download it rather than threes.
Also being an open source project lots of clones of 2048 are placed in the store and on web and on every platform so it was easier to find 2048 than finding Threes.
Developer thinks that colors and animation he used is better than Threes (my view because it use de-saturated colors while Threes colors are more vivid) I think that reason is lame.
Also some people (like me) prefer number 2 and its multiple rather than 3.
But the hugest part of success of 2048 over Threes is LUCK because of it people noticed 2048 after Threes was out and become famous somehow.
Slide11

Clean’Em Up is a game I made for PC with a friend of mine Omar Khaled Shoukry (that’s why we named ourselves Omidos (Omar + Amidos)). The game is top down shooter where you play with antivirus who wants to destroy viruses infecting the system. Viruses in the game act like real life computer virus (ex: Port Holes cause more viruses to enter the system, viruses infect files and replicates, Worms replicates themselves very quick …etc).
Slide12

Since me and Omar love top down shooters so we decided to create one with a twist where the player can shoot from front and back (back is not for aiming its just supportive gun so you should choose carefully the best supporting gun in the back).
The game was part of Imagine Cup 2012 as a request from my friend Omar and also as a target and ambition to us (That’s why the game is about viruses and antiviruses).
We worked on the game for 6 Full months we everyday test the game and add new features and create new levels (I work more than 10 hours daily during that period on the game).
It was my first commercial game since I felt I put huge effort in the game. I thought I could charge some money from people for it. As I can’t find sponsor for it (like flash games) as it was made in XNA framework.
On the release day the game FAILED.
Slide13

I always learn stuff by the hard way after releasing the game and something happens I start thinking why that happens so let’s analyze why it failed.
Since we had small time frame for the game and we aimed very high and I wanted to have aesthetics that makes you feel you are inside a computer so I got inspired by Geometry Wars graphics. Since Geometry Wars also a top down shooter people called my game Geometry Wars clone without even playing the game (as its different). So the look hurt the game a lot.
We designed around 75 Levels which was a huge mistake because most of them are just redundant levels with nothing new so the unique levels are just about 40 or 50 level max and all other levels are just repeating levels so people gets bored quickly before seeing different kinds of mechanics with different levels.
The game was designed by me and Omar and tested by us and other friends who are very good at top down shooters so the game was very very hard to any newbie and we didn’t notice that at all because for us its easy. Even when we where designing levels, I test the level and found it easy so I ask Omar so he agrees so we increase the difficulty of the level till making it insanely difficult.
The game didn’t focus to show the player what’s good about the new mechanic or how to choose the back weapon well so no one cared about the back weapon, so it was nothing to people as if there is nothing new just more headache.
I didn’t support XBox controller (as game was for PC) and most of top down shooter fans love to play games with dual sticks rather than keyboard and mouse.
Bad coverage hurt the game more because on day of release (I was still not very known) so when I sent emails to journalist in the indie press, it never got their attention because of the game look and lots of top down shooter games are released frequently, so rarely anybody wrote about it. Even the small amount who wrote about the game were not good reporters some of them didn’t judge the game and started judging me because the game was in English not Arabic and was for PC and not for iPad, another one gave the game bad rating because its PC game and he don’t like small games to be on PC and I should have made it for mobile devices.
Although all these reasons that caused the game to fail but the main reason behind everything was LUCK as usual because Flappy Bird had nothing and it was a hit.
After that huge failure I got pretty depressed and in very bad mood so to get out of that mood I started creating more games (prototypes).
Slide14

So I created that game.
Slide15

and that
Slide15

and that
Slide15

and that
Slide18

and that
Slide19

and that
Slide20

and that
Slide21

And more prototypes than I can share here. I made all these prototypes just to forget about my sadness and get out of it but what I didn’t know at same time that this was some kind of marketing to myself. I built a big audience, built fans on twitter by posting to #ScreenShotSaturday and following people and talking to designers and developers. Also making lots of games made the press featuring most of my games without even me asking them. So I had better contacts with press and more fans than before. That’s also the same reason why people create free games because they want to create fan base for themselves before going commercial.
Slide22

Match a Number my first commercial game on iOS (also any mobile device) where you have to get the target number by holding a tile and move vertical or horizontal till you get the same result (blue tiles are positive, red tiles are negative, yellow tiles are multiplication).
Slide23

The game was released on 14th Novemeber (I spend around from 1.5 to 2 weeks (Full time) working on it), I sent lots of emails to review sites, twitter friends and some of my fans, also made lots of tweets about game before release and on release day. I got nice amount of coverage but I just got 2.33K downloads (2.06K are free downloads as I set the game for free on my Birthday) I can say that game is a bit success compared to the massive failure of Clean’Em Up but still the money came didn’t cover the development cost [These stats are a bit old].
Slide24

Atomic+ is my second commercial game on iOS where you play as that hollow circle that rotate in orb around the center and you should pick squares and avoid hitting white small dots (bullets) coming from the center. Getting a square make the player change direction of rotation and change background color and change the center shooting pattern (as center shoots bullets with a pattern that changes with each square). Touching the screen increase orbit radius and releasing decrease it. The game is nominated as Best Audio Game in IndiePrize 2014 in Amsterdam (Thanks to Essam Ghamdi without his music that game wouldn’t be possible or a hit).
Slide25

The game was released on 19th December (I spend from 3 to 4 weeks working on it (Full Time)), I did same marketing for it like for Match a Number but this time I didn’t even cared a lot about resending again to people or following up with press. But the game was downloaded 31.8k times (23.2k are free downloads on my Birthday) That number is huge even the amount of money generated from it covered more than the development cost. Why that happens to Atomic+ and not Match a Number? That’s because Atomic+ was featured as Best New Game on launching week [These stats are a bit old].
Slide26

So how and why I get best new game? As usual I think after something happens not before it.
It was Christmas time so people are willing to pay for a game and play in the weekends but that’s not a good reason because more games are released in Christmas than any day in the year.
Game vivid colors that matches iOS 7 design so maybe one of the reviewer found it sexy and looks nice on iOS and fits their new OS so he decided to feature it.
One button game which is easily to be played at any place and anytime with no hard or long time waiting or preparing to play the game.
The game was under Music Genre, how could that help? I didn’t think about it but it was great choice. All games should have two genres so Atomic+ was Action as first genre, but I got confused for the second genre I wanted to pick Arcade but there was no Arcade so I chose Music. So when some people started buying the game on release day (since there wasn’t a lot of games in Music genre as in Action genre) the game became on top charts of Music genre easier than Action genre so it helped it to keep for longer time with good rating.
But really the main reason behind that was LUCK as in my view Match a Number is a better game and better design than Atomic+ but Atomic+ was the hit.
Slide27

So is everything happens is related to LUCK so why should put lots of work in games?
Slide28

No that’s not true its not all about LUCK.
You should build fanbase before launching your game by making lots of free games or prototypes, engaging with people on twitter or on forums. A good example of good fanbase game went to Steam is Anodyne, since the developer kept a daily devlog on Tigsource till the end of development so he had a huge fanbase on the release day so one of these people put it on torrents so Sean used that point very good and made a 1$ discount for the game and featured his game on the piratebay website asking people to vote for it on Steam Greenlight. He got lots of votes and it was greenlit.
Always think out of the box never repeat, never clone, try to look different, played different, focus on the new thing in your game not the traditional stuff. Bad example for that was Clean’Em Up because I use same art style like Geometry Wars people thought it was a clone (we are not on candy land anymore).
Polish your game never release game look so bad or feels bad in playing (even as prototype) if you are going to release it in the wild just give some polish. Try to make your game looks new and nice and looks you.
Choose correct audience for your game which means if you are going to release game for word games players so you should focus on how to make your game good for those people not on how to make your game better to all people, because in the end they are your main buyers and target player who will never let you down and if your game is good they will buy it. So focus on these people rather than trying hard to appeal to everyone.
Last thing is always do your best and leave the rest to fate (Don’t worry a lot about LUCK).
Slide29

That’s everything for now :) Hope you like the talk and help lots of indie developer to get out of their depression and that someday everything will be great :) There are a lot of information would love to share with you soon with new blog posts soon :)

Bye Bye

A Maze Johannesburg Festival 2013 Presentation

Hey All,
I know I should have posted that article long ago after I return back from Johannesburg, but the truth is I was busy finishing my games and also somehow lazy to post about my presentation I gave there which is called “be Different”.
That version I will be posting here contain more details than the one I presented at A Maze

Slide1
Slide2

Why do we play games?
In Egypt if you say that word some will tell you just wasting time although if you told them you can waste it by other activities like reading but they choose to play games cause it makes them happy or change their mood or take their attention or communicating with other people through multiplayer games or just seeking some challenge either via PC or via other Human

All these stuff I said is experience …. people play games to experience feelings and emotions

Slide3

Games is a system of rules and interactions that we can use it to transfer a certain experience from game designers (most of the time) to players so it’s a medium or channel for transferring experience like all other mediums (e.g. books, movies, music …etc).

For example “Aquaria” by Alec Holwaka it wants you to make you feel comfortable enjoy every second exploring the game seeing the result of every action
So it transferred that experience using

  • Visuals: nice underwater plants and colors
  • Sound and Music: nice calm music give you time to breathe and to relax
  • Story: it is revealed one at a time and doesn’t show a lot every time to give you curiosity to explore
  • Level Design: every scene in the game is designed well with lots of nice colors and plants and creatures to give you pleasant sight and relaxing sensation
  • Mechanics: controls are smooth and game mechanics are exploratory every time you get new song that give you new power which reveal new paths that are inaccessible before or make you explore old paths in a new way

By the way you could make every aspect of the game perfect without checking others but if you done that you will end up with a normal game because to transfer a good experience to player all aspects should collaborate to have that notion.

focusing on mechanics is a very important aspect in the game because its the interaction that makes games differ from others.

Slide4

Some of AAA games don’t give any attention for mechanics. They just use well known Mechanics and makes a new game (FPS games). That’s because most AAA games have high production cost so sometimes they can’t risk using new mechanics and systems that can make them fail or not appealing to players so they use well known mechanics (known for huge revenue) and sometimes make some changes on it.

That’s why we should try to find new mechanics and sharing it with rest of the world to show to the industry there is lots of mechanics unexplored

And what a better way to explore the mechanics than participating in GameJams
A very good example for that 7DFPS created by Rami Ismail where you have to create FPS game during 7 days this gamejam showed to the industry that even FPS mechanics and games still have lots of hidden potential and they should dig more and explore it more.

Btw I never managed to participate in it but definitely one day I will.

Slide5

We should think about the experience that is delivered to the player and how to make it a new experience or a memorable one

The most interesting technique to get new experience is by experimenting:

  • new technologies (sometimes the way some technologies are organized and how it works get you an idea around that)
  • control schemes (like flying, swimming, driving car …etc)
  • real life mechanics (liquid flow, sand dunes, fumes …etc)

Expressing personal stuff

  • Feeling/Emotion (being in love, being sad, feeling surprised, transfer a feeling or emotion you have to the player)
  • Thought (expressing your point of view about something happens in society or about a topic …etc)
  • Experience (expressing something u passed through it or something happened to you or a dream …etc)

Nostalgia to an old genre may be doing it in a new way or just do it and make it better and correct some problems in design it had before

Slide6
Slide7
Slide8

As I said before people here think games are for kids they are waste of time (even some young adult feel like that) and that’s difficult to be changed and even if you could change that they don’t try the game unless it’s using the next generation of graphics.

Also what make it harder that there is no support not from your family nor society .

  • For example my family always kept discouraging me, whenI was 12 years old I made a game (Kanfooz) they never thought its an achievement or be surprised or say anything good. They just tell me to do something useful and stop wasting my time and wasting others
  • The society is the same, they never take me serious and always saying that you must find a real job. When you tell someone you are game designer or developer first question can/do you make a game like Assassins Creed.
  • Due to that I always get depressed and feel down and whenever I fail there is no one there for me which was kinda-hard (I have passed through tough years where everyday my family tell me to leave what I am doing and my friends don’t care and you find yourself alone with no support and no one there for you)

Also to sell games in Egypt is almost impossible, in Egypt people doesn’t believe in software copyrights and they always get cracked copies of software so what about a game? That’s a dream. So the best strategy is to make free games with ads but here come the other problem that most people who play games either people wants cracked AAA titles or kids who wants games like Farmville, other types of games doesn’t have any market here.

Slide9

All these problems led me to be Different

  • Being different will help me to prove to people here that games are not a waste of time and it’s a medium like all other mediums to transfer experience
    • I created games about political problems in Egypt (Mindless)
    • transferring love feeling (Simple Love)
    • persistence to achieve goals if you fail (Loss)
    • just expressing some of my crappy dreams (Crappy Dreams)
  • Also it will help me to target global market and since the market world wide is fierce and there are lots of games I have to struggle with so I have to stand out and be different.

Slide10

Since I am Teacher Assistant at the university (computer department) so I have lots of students who play computer games so I always tell and show them indiegames and encourage them to make games and express themselves through games and encourage them to enter Gamejams

Organzing gamejams in Egypt and encourage people to participate and that wouldn’t happen without the support of GameTako (an arabic foundation that try to increase the connections between all game developers across the middle east)

Became a writer for Indiegames.com so I can be a portal for the arab developers to the world and help them to get noticed because there are really some amazing developers in middle east (The more developer we have the more games we have with different points of views and different experiences)

Created Egyptian Game Dev Group so people can depend on each other talk to each other collaborate find same mindset so people don’t feel alone anymore (we are still at the beginning)

Created around 30 games so far some of them are quietly known and some of them are totally garbage

  • Increase my exposure to the world
  • Made me feel I am not alone and there are people sharing my feelings
  • Increase my self confidence (as I never had one before)

Most of these games are created in GameJams and ExperimentalGameplay or LudumDare

Slide11
Slide12

That’s everything for now :) Hope it was good and it inspires someone to do games :)

Bye Bye