Jump to content
  • Advertisement
  • entries
  • comments
  • views

Feedback My first game, from stratch to Steam.



Hi everyone,

I know there is a lot of blogs and advice about what to do and not do for a beginner in a game industry, I even read a lot myself to find inspiration and avoid common mistakes. Unfortunately, there is not so many talking about real experiences. I am here to tell the story behind "Soul of Mask", my first game and I hope not my last. I will avoid a long post, so it will be in different blog entries presented like this:

- Origins and first difficulties,

- Technical: Game engines, programing language, tools

- Marketing and conclusion.

In all point I'll talk from the beginning to the end of the project, there is no chronology so you are free to read what you want in the order you want. Let start then...


My name is Alain Perrin,  as you may have noticed, not a native English speaker. I am a system dev in a Chinese company based in China. So yes I live in China for quite many years. I always wanted to create a game but I always stop writing my game as soon as I was satisfied with the technical problem I solved. It was enough for me until my wife (fiance at that time) talked about people proud of themselves without any real achievement. Yes, she didn't realize it but it hit me right in the brain and let say ego as she was not talking about me. "Yes I think I can do a game but I never proved it". It is where I decide to start a game and finish it to prove to myself that I can really do it. This will explain a lot of choices I made for my tools such as Programming languages and game engines.

     Now we know I never planned to make a commercial game, it was just about to start something bigger than Tetris (I did finish it around 2003, a mixt of ASM and C with class dirty code). I decide Pacman with a lot of improvement in the ghosts. My major was AI and face recognition and I wanted to make Pacman with clever ghosts. But, with time I started to add more and more stuff and the game didn't look like Pacman at all, at least in the gameplay. It was still a mase game but a lot of things were too far from Pacman it is when I decide to stop and think about something else, a real game. I started to look for help; another developer and at least a drawer could be pixel artist or just 2D designer even a comics drawer. It is also when the first problems came.

     As a developer finding another developer was easy to keep him on the project was another challenge. So you guess, he left. And this brilliant guy leaving was a hard strike to my moral, it was so demoralizing. However, this guy was totally honest and told me: " I am leaving because I don't see where this will go". At first, I thought he was talking about money, he may think this project will not bring any money at all. If it was the case I had no way to convince him to stay. But he was talking about achievement. money is not so important when you do something you want to, money is a reward I would love to sell 1Million copy of "Soul of Mask " but it was not my priority and we shared the same thoughts. The problems were the fact that he didn't believe it will finish one day and didn't want to waste is time. Now another part of my personality took control of my mind over depression. The love of challenge. Now I have a new challenge, everything I need to go back to work. I restarted everything with a better design as now I knew I was not doing Pacman anymore. It is also at that moment I made my first big mistake. I read after that it is a common one " I do all the code and I will find soon or later a graphist". So one year passed when I started "Element mask" and I had this:blk1.thumb.png.baf3b4d604cf8a65e53c2115fe39b14f.png

 Element Mask

Element mask was supposed to be the full game. It was the story of a young man who has to collect all the masked stollen by demons. It was not so beautiful but I was sure that with a full gameplay and a story I will find someone to draw. I google images and made something different. all images in the following image are downloaded from google image:


Here you can on the right bottom your different special power. So I spent almost another year trying to find someone to draw. I contacted my brother in law in  France who agreed to help. then I went there, meet him and he realised that is was not 3D game and he could not make  2D graphics assets. So 2 years passed, I have an almost ready gameplay but no graphics. My Brother in law and one of his friend remembered that they have a co-worker that may help. This happened in August 2016. They contact the guy who said OK to meet me the next day. My designer invited me to his place and I was already in love and impressed, this guy is a gamer. He had everything, a lot of games and objects from games of all time. Obviously, if I can convince him then that will be finished. And I did it, he was in.

I left France and move back to China, He sent me Emails to show his interest. I let him free to change what he wants in the game as long as I can program it. and he did bring the idea of half mechanic characters. here is his first sketch:


Hey guys, honestly it was promising, right? But if you bought "Soul of Mask" today you already guess that it didn't work. How? I don't know myself. This was his last email. After that he disappeared, no news, no answers nada, nothing, keine, rien. As if it was not enough I injured myself playing football (soccer for USA).

ACL was torn, for those who play sport they know it is a serious injury.

   Good can come from Bad.

Nine months without sport said the doctor, and at least 2 weeks without moving my right knew. So I had to stay at home and this was the good part. I use to play football 3 times per week plus 2 times of basketball. For almost a year I will have to do something else. Unfortunatly I still had no news from my designer. I decided to go again to France to visit my family and try to contact him again. I did and he said sorry but he didn't have time to work on Element mask.


Angry programmer.

That was too much. I was very pissed. I nicely said " ok I understand we all have our job and our life. No problem". But inside all was fire ready to burn everything around. August 2016 to February 2017 you cannot find 15 seconds to send me a WhatsApp to tell me you are out of the project? you are busy but me I can just wait and hope?  I realized that everything is really relative. I was convinced of total failure if I attempt to make Element Mask alone but I just have the proof of the opposite: I would have to work alone if I want it to finish one day. I just remember a funny fact, I can draw myself. I used to draw comics for my classmate when I was in middle school. I bought my watcom and started again. My level is far from what I could do but it was enough for buyer to accept it. actually no body said my game was ugly: 


Rip Element mask

My problem now was different. I had nobody to wait but I was not fast to draw as I was before. Worse,  I cannot draw what my code is made fore. So gameplay changed a lot. Every time I failed to draw something,  the gameplay will change. This is for example how I moved from a character wearing a mask to bouncing masks. Soul of Mask was born. It was something I could finish before the end of 2017 and I did it. I learn a lot about people, life and myself in this adventure.

next blog entry will talk about the coding part.

thanks for reading.


Recommended Comments

I had some time earlier this morning to read your article. In the 15+ years I've been working in games it's always been like this with small teams, especially if they're not being hired as employees. I had a project years ago I was working on, I coded the entire level editor to be drag and drop, and a scene editor as well. I did this because the artist and game designers at the time wanted to craft the game from a more visual stand point in real time, and they were complaining about having to wait for code changes to see their ideas in real-time. I linked the editor to the game engine I coded and they were able to generate levels on the fly. Yet, the amount of work that had to go into asset creation and design turned most people off, and one by one people left.

Thankfully if you have coding skills and you only need visual and audio assets, it's a lot cheaper to outsource these tasks, as opposed to hiring a game programmer to make your game while you either draw or engineer audio.

I was in this same battle fighting for artists, now I just hire people on contracts because trying to keep small teams together can really drain you, and in the end your project suffers greatly.

You did a great job turning the game from what we seen in the first few images, to what you have now on Steam. If you need help in the future let me know.

Share this comment

Link to comment

Your first paragraph is depressing. I understand that is more difficult to find someone who wants both pleasure of making the game and money. Money here is an issue and a motivation. I understand all of them, we are not kids anymore and we cannot just enjoy programming, drawing,... But sometimes looks like people I meet have no passion in this industry and work with you only if you pay them or if they are 100% of a good revenue.

I don't know if it exists but it will be nice to have a platform to make people like developers and artists to meet. I am sure there is a lot of artist in this word ready to do the same I did but they cannot find developers who want to work with them.

If you want to help, you can already. the scenario of the next game is almost done and I already said I don't want to work alone again. Plus I received an email from Microsoft they like SoM but may not approve it on Xbox because it is already released on steam. I am tried to convince them to accept it anyway in exchange for more contents in Xbox version for a period of time, here also there is room for help. let MP if you are interested.

Share this comment

Link to comment

What kind of game were you writing? I would like to see that level editor. do you have

Can you make a small video to show that editor?

Share this comment

Link to comment

I would ignore the email, and just go to Xbox Live Creators Program site: https://www.xbox.com/en-US/developers/creators-program/ then submit your game. I cannot find anything in their policy that states you must have your game on their platform only. Either way, if your game generates enough revenue on steam, I'm sure they will approve it on Xbox.

I've made a lot of level editors and 2D engines. I worked on platformers, side-scrollers, and rpg games. I've made all these tools with C++, and C# when I had a few XNA projects to do.

The current projects I'm working on now I cannot display, but the prior ones were done with C++ and Allegro, and C# with XNA. I use C++ and SFML for 2D games now. They need to be ran with the engine, but consists of IP that I do not fully own, so I cannot share the tools. I have a collection of source code I keep for future editors and engines based on the prior projects that I have rights to.

The one editor and engine for the side scroller game I was working on with XNA wont load up on Windows 10 sadly, the exe crashes on load, this was made back in 2009. I do own the full IP on this, but I cannot figure out how to load it, and would need to port the source code to MonoGame to get it to run. This editor would let you make level lists, item lists within the level with attributes, enemies with stats, auto-scrolling scenes, and more. It had a quick launch feature to port into the engine right away for quick testing.

Are you looking at revamping your current editor? I'm not sure if you're using one you created, or a 3rd party tool.

Share this comment

Link to comment

They don't ask me to be an Xbox exclusive, they ask to release at the same time on Steam and Xbox. but it is already released on Xbox. 

edit: I just realise the problem, I am in ID@Xbox program instead of Creators Program. so I could be able to release on Xbox with creators program. thanks

So you still work on games, the way to talked sounds like you were out now. It could be nice to have you on the next project then as it is a platformer one. For my current editor I use the one I created just a one-game purpose so it will go to trash can, it is full of bug, almost unusable and I didn't care much as I knew how to use and avoid all those bugs, I didn't correct them because I was the only one using it so no need to waste time doing something fancy or good when I can create a game with a trash editor and have the same result. It is coded in C / SDL2.

Edited by lilington

Share this comment

Link to comment

Yes, I run a few companies in different fields, and I'm working on two game titles right now. I use C++ with SFML for 2D games, but I know C/C++/C#/BASIC/JAVA and scripting like PHP/Javascript, ect...

I personally avoid C and SDL by preference (Never tried SDL2, was using SDL 1 back in the day). Depending on what kind of assistance you need I might be able to help.

I'm looking at picking up Unreal soon for some 3D projects in future.

Share this comment

Link to comment

Language is not a problem, just a tool. I will say you should have a look at SDL2 at least if you want your game to work on more platforms. There is a lot of differences with SDL1-2.

I am still in conception process, I still don't know what I may need or not. I will let you know.

Share this comment

Link to comment

No problem, I'll look at SDL 2 some day. Right now SFML provides me with every platform I need, Windows, Linux, and Mac OS X. I've ported from C++ to JAVA for android very easily, as well as to SWIFT for iOS. A lot of my saved code and classes throughout the years are all in C++, C#, and JAVA. I'm not a fan of C to be honest. :D

Let me know when you're at that stage. Take care!

Share this comment

Link to comment
9 hours ago, lilington said:

Roger that. But as I said C is just a language.

:) Yep, we all have personal preferences and reasons for using the languages that we do. I program in over 7, but mostly use 3. I've worked on other projects in which the second programmer didn't use C++, but only Visual Basic at the time, which was never a problem because the engine was done in C++, and all the 3rd party tools like map editors, and item editors were done with BASIC, which saved to a file, and loaded into the engine.

I'm not here to push dropping C or debate about C++ vs C, or anything like that. I really don't care what language people use because if your goal is to create a game, then it doesn't matter. In my above example, I just improvised and had the other party make 3rd party tools in BASIC, which was never an issue.

I wish you the best preparing your concepts for the new title.

Share this comment

Link to comment

yes, Debate about languages is a real waste of time. ofcourse it doesn't really make sens to create a game engine for Playstation 4 with Visual basic.

Thank you for your wishes I will come to you soon.

Share this comment

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
  • Advertisement
  • Blog Entries

  • Similar Content

    • By TehosKhiin
      It's my first time posting anything on this forum but I thought it was time to step up my knowledge about gaming theory and game design if I want to get into the industry. I have a lot of ideas of games that would be great. I write everything, draw characters, right stories, design and think about gameplay mechanics etc. A day I had an epiphany about a fighting game with Sekiro's gameplay. I know of course there would be a lot of problems with...camera being wonky, the guard bar must be readjusted, and the major problem would be the deflect spamming. But personally I think that with some adjustments, great character, some risk reward (like you can cancel an attack to throw of your opponent or if you try to deflect and miss your deflect you get punished for 'spamming') mechanics, It would be an engaging experience. It would be intuitive, easy to learn hard to master and mind games. 
      Of course, I write all of this because I intent to begin digging a bit deeper with that idea. If any of you think this is crap or it is the wrong section of the forum feel free to report me. Sorry if it is the case ^^.
      Hope it will interest anybody.  
    • By ToeBeans The Brave
      Hello everyone!
      I'm new to programming and pixel art, and I would greatly appreciate hearing some feedback on my Idle and Running animations. I'm looking for constructive criticism so that I can become better at making sprites in the future, so don't hold back!

    • By Pepsidog
      I'm wanting to create a hybrid game between turn based and action.  I'm looking to create a system where the player has a list of attack or move options on their turn, but I want to add a skill minigame in order to make the game more engaging for non-strategists.  I figured some sort of minigame or something.  Any ideas are welcome.  Thanks in advance!
    • By Ey-Lord
      Hello everyone

      I am here to gather your opinion, remarks, ideas or any constructive criticism you may have about what I am going to present. Don’t be shy!

      A bit of background:

      I am working alone on an indy web-based game, a simulation of RPG (idle game) where the player controls a group of 4 characters that he can sent into battle and that will fight automatically based on some AI preference that are similar to the FF 12 system (but more complex / powerful). He then earns some experience and resources that he can use to improve his unit’s gear, talents and skills. He has a lot of control on what skills his characters will use and how/when.

      What brings me here today:

      The AI of Monsters. I have the AI settings for players covered (basically a bunch of if/then/and/or/else settings that he can combine and order so that his units will act as he intends in battle). I’ve been working on the AI of monsters for quite some time, made a long break and came back recently to it.

      Short description of the battle system:

      No movement involved. Battle is fully automated. Players setup its units AI settings before battle and monsters are controlled by a separate AI. This is a 4v4 battle, like FF7 with some kind of ATB and any time a unit fill its ATB, it can play and the then the next unit who will fill it will play, etc. The player is completely free of his playstyle and may create very offensive group or very defensive ones. 4 healers or 4 tanks is completely possible.

      The battle system is very complex and allows for very varied and sometimes unusual strategies, like killing your own allies to proc an “on death buff” that will be devastating for the opponent.

      What I want for my AI?

      It needs to be fun to fight against and challenging. Ideally, I would like an AI as smart as possible (not omniscient but thinking as a human would). I know that a super-smart AI is not always the best way to make a game fun or challenging but in the context of my game, this is the result I want to achieve. It may seem unfair to have the AI try to kill your squishy while your tank is standing right there but my class design gives the tools to players to counter that so it’s not an issue (tanks are not purely aggro based for example). I want players to always be challenged by AI moves and that they must carefully think about their strategy because if they leave a big hole in it, I want the AI to exploit it.

      In practice, it means a few requirements:

      No dumb decision / do not fall into obvious player’s traps Exploit obvious flaws of the opponent Act in coordination when appropriate with other units Able to find who should be their focus in the player’s team (some notion of threat) Find the best move to use and if there is some kind of combo possible, use it

      These requirements are harder to meet than it looks. The issue is the sheer number of different mechanisms and strategies available to players and to monsters as well. For example, there are many cases where killing or attacking a player unit might be detrimental (units that return damages or that gain power when you hit then for example).

      What I have tried before?

      I have tried or at least reviewed many different AI concepts so far.

      -          A simple copy of my player’s AI system (hierarchical if/then/else). It was easy to script as I already have the UI in place for players so I can quickly define a basic AI for any new monster’s group. The main drawbacks are that it needs to be written for every monster group, it does not allow smart targeting and cannot find the best target or the best skill to use. It will also make dumbs decision as the targeting options cannot assess threats at all.

                I’ve rules out planners since for purely selecting the best pair of (skill, target), they do not seem to match my needs.           (H)FSM or BT does not seems to match my needs as monsters do not have states / transition condition that can lead to something useful for me.        I’ve ruled out aNNs as they might, with proper training, be able to find the best action at a given time but it’s very tedious to implement and will not solve my need of finding combo or coordinating with other units very well. (plus, let’s be honest, I’d be a bit out of my depth to program them)           I have spent an extensive period of time trying with tree searches. Mainly: monte-carlo with random sampling and came to the conclusion that due to the complexity of my battle system, it is excessively costly to compute any kind of reliable data this way.
      -        My current AI system is a version of my first one (the same as the players) but with access to some “smarter” targeting function that in theory allow to choose the best target. These functions work by gathering data for thousands of simulated fights during the AI time to play (1 second). It’s a first step to find the best target but not very accurate (lots of big flaws that can be exploited by players) and it is very time consuming and that is something I’m trying to get away from. I do not want to use 100% of the players CPU as I do now.

      What is my latest idea?

      I started to study more in-depth the Utility theory as described by Dave Marks (I read his book and watched his GDC AI lectures as well). I liked the idea. I like that I can start on something relatively simple and add more considerations as things progress to handle more and more situations. While my work began as something very close to utility theory, it evolved a bit afterward. Here is what I plan on doing to compute a unit’s best course of action:

      A – Score every of its move (each move is a pair [skill, target]).

      B – Chose the move according to a selection strategy (highest score, weighted random, random amongst the top scores… lots of different selection algorithm can be used there).

      So far, easy, right? Let’s dig deeper into our first phase of scoring (A), which is the hard part. For all the damage or healing skills:

      Step 1: The final scoring of the move [skill,target] will be function of the a “Survival” scoring for the player team and for the enemy team. An example of this relationship could be: Adding all the survival scores of each unit in Team A and divide the result by the addition of all the survival scores for each unit in team B.

      Step 2: The survival score of each unit will be its Health after the move we are evaluating, divided by the total damage per turn that we estimate other units can deal to her (minus the total heal it ca receive). [This a step where we can process damage and heal over time as well]

      Step 3: This damage per turn estimation will be, initially, the sum for every unit in battle of the damage or heal per second it can deal to that unit. For example: If I’m alone vs 2 bad guy that can deal 1 dmg/turn and if I can deal 1 heal/turn, the damage per turn estimation against me will be 2-1 = 1. [This is not optimal since we are counting the damage of each unit once per enemy unit but it’s a start]

      Step 4: To compute the DPS or HPS of each unit, we review the unit’s skills and compute their output against the unit we want to evaluate it against. From that, we construct a skill sequence to maximize the damage output and once we got the optimal skill sequence, we can compute its DPS or HPS output and pass it along for Step 3.

      It might seem like a lot of work, since, in a world with only damage or healing skills, the DPS or HPS sequence of each unit will be the same in every situation and as such only the damage done or healing done by the skill evaluated would be enough. But…

      The tricky part comes from buffs and debuffs. If we use the above algorithm, (de)buffs that changes the damage or healing someone does or receive will be evaluated correctly as it will change the damage or heal per second output of units and it would affect the survival score and the final scoring. That is why I chose to include DPS and HPS computations for each unit for each move.

      This is all fine until we consider (de)buffs that changes the power of other (de)buffs. Like: I cast a buff that double the length of all my future buffs. My algorithm can’t evaluate it correctly. It’s a situation that will be common enough in my game and I want my AI to deal with it. Note: there are more complex situations where a unit could buff a buff that buffs a buff that buff a buff [….] that will end-up buffing a damage or healing skills, but those cases will not be addressed as they will hopefully be rare and too cumbersome to compute anyway.

      So, my goal is to score properly buffs that: 

            Buffs the damage or healing output of someone           Buffs that buffs a skill that does the above

      L    Long story short of how I am doing that. I’m using my initial algorithm but while also estimating damage or healing per second change for each dps or hps sequence.To do that I’m evaluating every move of the unit (or every unit in case of AoE but lets keep it simple with single target) that is targeted by the buff. So, we are switching PoV here compared to the initial unit we are evaluating (unless the move evaluated is buffing itself)

      -          I’m doing the above in 2 situations:

      o   A : After a cast of the buff skill I’m evaluating

      o   B : Without the cast of the buff, just like if it was that unit’s turn to play

      -          Using a sort of min/max approach: if the unit targeted by the buff is an ally, we will take the best branch of our tree in A and compare it with the same branch (pair [skill,target]) in B. If the unit targeted by the buff is an enemy, we want to lower their maximum score and will select the tree branch that does that in A to also compare it with the same branch in B.

      -          The information we extract here are DPS or HPS delta for each sequence of DPS/HPS for each unit vs each other unit.

      -          Then, we go back to our steps 1 to 5 and compute our scoring for the move (buff) while using our new dps/hps deltas to get better and more accurate dps/hps sequence for units affected by the buff.

      This is basically it. I’ve ran a manual version of the algorithm in 2 different battle settings to test it and see if it gave good results. It worked. Not flawlessly but it worked. Lots of cases will still require tweak and additions to the basic idea but I think its promising. (taunts and CCs are not easy to deal with but it’s manageable)

      What I like is that I can add more considerations later (as in the utility theory) like: resource cost, general unit strategy (cleave or focus), behavior (careful, lunatic, reckless). While this will still be a bit time consuming it should be a good order of magnitude faster than my current AI. It also does not prevent me from adding hardcoded AI move if I want to “script” more some monsters. Debugging and tweaking might be a bit painful though, especially when fights will involve lots of skills & stats but that’s an issue that most AI for my game would likely have anyway.

      To come back with my initial goals:

              No dumb decision / do not fall into obvious player’s traps
      o   Not perfect but it should choose the best target whenever possible

                 Exploit obvious flaws of the opponent
      o   Same as above

              Act in coordination when appropriate with other units
      o   This can be done simply by adding weight to some targets or computing moves for all units of a group before deciding which one to take (for example to take the best move vs a specific unit, on average)

             Able to find who should be their focus in the player’s team (some notion of threat)
      o   It will naturally focus the unit who is the easiest to kill and debuff or CC the ones that deal the more heal/damage. But, to better solve this, we will need to add other considerations to the AI scoring process, It should not be *too* hard    

            Find the best move to use and if there is some kind of combo possible, use it
      o   Combo are very often in the form of buff/debuff setup before an actual damaging or healing skills and my AI can compute up to a 3 moves combo (buff > buff > skill that dmg or heal) which should cover most cases.

      I’m quite happy with my initial tests. I’m not going to be coding it now. My goal was to reflect on the subject on paper and try to see if designing my AI would be a roadblock or not for my project. There are a few other area I want to design and take time to really think about before getting back to my project full time. I’d love to hear your toughs and feedbacks about my AI ideas. Do you see huge roadblocks I’m missing? Does it sound ok to you?

      If you read that far…. thank you and I can"t wait to hear from you guys😊

    • By Joey Nigro
      Can someone please program a new whacking game. The title of the game is "Whack the Mouse". I made the characters on Pixton. The weapons that are attached to the cat are claws and fangs. Don't forget to add the violence and gore warning.
      Here are the characters (the cat is the player and the mouse is the one who's getting whacked):

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!