Archives for : Articles

Breaking down The Rats of “A Plague Tale”

Will try to not speak too much, and leave it to the content to handle the talk. With the most recent gameplay video of the amazing anticipated game (at least for me) A Plague Tale, I was fascinated by the rats in that demo, and I’ve seen some people speaking about the possibilities of having this in the final game, and others saying the game would fail to include that amount or would launch with less rats as a downgrade. So I wanted to put a proof of concept that this amount of rats and even 10x times more is still doable (speaking from Unreal + Niagara point of view). And at the same time, knock a new tiny closed door for the Unreal Engine users, to show that the huge world and possibilities relying beyond that door.

I’ve done many similar things in the past with Unreal and Cascade , some was experimental and others really saw some light. So I wanted this time to go ahead, do it with Niagara, Unreal and Epic’s tool-set. I used to have some 3DsMax and Maya custom built scripts, that give kinda similar results, but I wanted this time to use official unreal (4.22) not my own fork, and use any & every thing available to everyone (same max script, same rigging methods,…etc.) so I show some light in a direction that most of the users might not see. So, I hope I did good job with this one.

The full project source (will be updated with new tips as soon as I allocate more time to that project) is free and open for anyone on github:

And the tutorial, already uploaded (FINALLY!!!) to you tube in two different versions, as defined below:

  • Short Tutorial, ~10 minutes, which including the main steps, guidelines, the breakdown of the method and highlighting the core tips of the process.
  • Full Tutorial, ~37 minutes, which including every single detail about the process starting from getting the mesh, ending up with the entire map full of 50k reactive rats!
Watch it to get an idea, or if you want to not follow a step-by-step in detail guide

Watch it if you want to follow a step-by-step in super tiny detailed guide


“I Burn”, My entery for Ludum Dare #44

Play Here

While I recently barely can find some free time after fulfilling my personal obligations, I took a decision, to not miss Ludum Dare this time, been couple of jams I try to enter, but always get busy and never deliver the game, and archive to the folder of death (a folder full of dead projects). And in order to do that, and to start giving myself a sense of a “MUST” take it to the end, I started to vote to the theme as I used to do for the past 10 years, but this time publicly by sharing my vote on twitter.

Ironically, the final jam theme, came one of my choice =D When I done the voting, I pick the ones i feel they are unique and vote for them +1, the ones that might be good or soso, i give them 0, and for the ones that i don’t like or repeated, i give them 0 as well instead of -1, as I hate giving negative review to the topics…Or to anything!!!

I spent almost all the first day with my family and trying to get the idea, while i should have got an idea within few minutes from the fact I’ve voted +1 to that theme..But that was not the case!
I’ve drafted on paper near 10 ideas or more, and few more came from my wife, and eventually didn’t like any..Day 1 is done, so I had to go to bed, so I can think freshly next day 😀
And while trying to sleep with the feel of guilt for wasting the entire day, I got the idea of the candle burning, it makes perfect sense, you play as a candle, you burn and melt, which means you dying or losing your life, and that is the currency for someone else, could be the person you light for. And while 1 day was already lost, and I’ve only one more day for the jam (yes, jam is 3 days, but my free time is limited this time, as I’ve to go to work on Sunday) I decided to think more about the idea, and about making it, but in smaller scope, and there it came the idea of the candle standing, you watching it dying, and you reading a punch of text on the screen. Later before submission, and after making the build, I decided to remove the text part, and let you (the player) to make your own text/story when you watch it reflecting some of your stories or memories.

The final game

Next day, I started right away to work on the game, I’ve made a ton before, and I know my process, so make the character, rig it, animate it & sculpt some details. And while I knew i’ll be using Unreal since the voting process, I wanted to try Unity’s new features, nothing better than learning new things while in rush! So I started moving my assets to make the game in Unity3d to try out the new HDRP and Shader graph, and that was a huge disappointment, don’t get me wrong, Unity is doing good job by adding all those new stuff, but as after 3 hours, I didn’t get any satisfying results, I can’t rely on Unity for this jam. This could be from the fact that all those features were in the preview section, and not ready yet for every scenario. So I decided to hump unreal and just proceed on my initial plan.

That thin candle have very complicated animations and workflow for a 2 days game!

When I did show the game to my friends, some of them asked about the animation, if it is simulated or cached. The answer is no, it is a a mix of 3 layers or techniques, a rig made of ~5 bones + Blendshapes + VertexShader animations. All the 3 of them working together in bringing that final result without having issues in a method dominating or fighting to own the vertices (there are trivial issues indeed though, but this is due to the limited time).

One important element for me, is the visual story telling, at the end of the day the only gameplay you do in that game, is pressing the “Quit” button at the end ^_^ apart from that, all happens mentally, you watch, observe, feel, and your brain will be building a story within your head, and all that will happen at the right empty space, where text used to be! This is not necessarily to happen, but this was what I tried to force the game to do to you! And in order to do that, light, color, camera & music never been enough, and this is the no.1 reason I decided to sculpt the face to go through phases while melting. which are in order:
Normal, Surprised, Sad, Smiley while reaching the end of life. A life ends with a tiny glimpse of a smile is essential!

Several blendshapes that been sculpted to be used. The highlighted one is the main skinned mesh.

Another last thing, I want to highlight in that project, is the visual quality, the reason I didn’t built the game in Unity was not about the broken tools, I can accept them and deal with them, but was the lacking of ability to achieve real wax at real-time, with real life light scattering around. But in Unreal, results can speak for themselves!
Have the chance to carve and create a very high quality of sub-surface scattering that works perfectly and respond realistically to the flames light, that is a thing!

The only thing i regret, is not making some normal map or melting liquid reaching the floor!


The Resume thing!

Today while cleaning-up old files, that proj came on my radar, and it brought some nice memories, so I wanted to share more about it.

Years ago, specifically at the peak of X360 era. I was still 100% Gameplay programmer, I took a decision to show myself in a different way as a GPP who can do a bit of everything else. @ the end of the day, the more u know about the pipeline, the higher ur chances r.

Seeing my avatar daily hanging around the X360 menu got me the idea of remake my console avatar in game, and make a little demo with the minimal elements of a game. Not only that! But everytime I get and HR asking for my PDF file, I send the game instead!

This became interesting and super beneficial thing @ my career at that time. Opportunities was countless @ that time, not to mention, sending that resume was my green-card to get the job I want!!!!

Last time I updated and used that “interactive” resume was 3 years ago, but still, the project itself can stand today. In the future, I’ll defiantly work on a similar one again, but totally different, and including what been learned in the past decade since that demo!

I hope this can inspire you with something different.


reNode for Houdini (Tool & case Study)

When it comes to working with node based editors, some people (me at least) takes it to a whole new level of madness and mental disorders. Where a fair amount of time always spent in trying hard to make the connection lines straight, or trying as much as possible to make the graph looks artistic even if it takes to add some useless nodes for decorations 😀 I won’t mind adding a 100 reroute node within Unreal Engine just to make the simplest graph looks very tidy.

And came from that background, I decided to try out something new with my graphs, which is adding custom node shapes into Unreal & Houdini. Let’s mention the Houdini case here, as it’s clearly the target of this group.

Please welcome my reNode v1.0


reNode is a C# based tool (standalone application). That allow you to create your own custom node shapes and then use them right away in Houdini.

The process is as follow:

  • Draw the node shape
  • Save it’s file
  • Copy it from the C drive to the shapes root of Houdini​, Restart Houdini
  • You can use it!

Watch that quick video:

When I got the idea of having my own custom node shapes, I started looking around Houdini directories itself, at the end of the day lots of apps, SDKs and tools keep tons of things not packed or encrypted. This worked a lot with me in the past, you can check out the Uinty3d case if you didn’t already. Back to Houdini, it didn’t take much time to find the node shapes library folder:

E:\Program Files\Side Effects Software\Houdini 16.5.268\houdini\config\NodeShapes

As a very friendly file format for me, the JSON seemed very different this time. I was not able to understand it quickly, so I decided to check first if it is even possible to add new shape by duplicating the files, or it needs me to change some values or an array somewhere. So, I’ve duplicated one file, renamed it, and changed the only obvious (at the time) value for me, which was the “name” of the shape, so I avoid and failure cases of Houdini loading the shape by name and then overriding it with the new one by name as well. And then restarted Houdini (it make sense that the app will read that only at launch). And BOOM, I found the same shape twice!

Now I was sure, whatever I’m going to do, I can use it right away. So I moved to the next part of the issue, which is the JSON file content itself. I tried to read it first and failed to make any sense of it, then I tried to google for “Convert a shape to JSON” I came to lots of dead ends of online converters that will give a totally different file content, while this was a failure, but I came up with a great assumption, that the content of the file is only subjective to Houdini, and not global type of content that I can find within other apps or JSON files. So I decided to go in the most primitive way, which is just randomly changing some values in the new shape file I’ve duplicated, and notice what would be changed in the nodes. So I took them line by line, and changing some random value, and I ended up with deformations in shapes that can tell me what I really needed to know.

It is now became very clear to me, that we have 4 toggle options per node, which are represented in the JSON file with the name “Flags”, and we have the body of the node, which represented with the word “Outline”, and the rest were very self-explanatory, which are “Inputs” for the input socket, “Output” for the output socket & “Icon” for the icon of that node.

All nodes have Inputs and outputs, and icons. Which made their naming make sense. All nodes have bodies, which was named “Outline” and I kind of considered it confusing. But The name “Flags” was really a smart idea from SideFX as not all node are equal. As you see at the image above I’ve deformed the Bypass toggle of the node which is colored in Yellow (that node have 4 flags), which in another node it is not called Bypass any more, it is a Selectable toggle and colored in Green (and the node have only 2 flags).

Now I got it, the Flags are numbered 0, 1, 2, 3 is not only representing an array order, but also the order of the nodes from Screen Left to the Screen Right. As the one changed above was Flag number 0. And that mean in a 4 toggles node, Houdini will show [0, 1, 2, 3], but in a 2 toggles node Houdini will show [0, 3]. As 0 and 1 is the left side screen toggles, and 2 and 3 are the right side screen toggles.

With that said, Changing the toggle 1 will affect the 4 toggles node:

Where the 2 toggles node will remain the same, as it doesn’t have the index toggle 1

But changing the Index 3 (the last index, which is the far right of the screen), will affect both types of nodes. In a 4 toggles node:

Where in a 2 toggles Node:

Now I’ve a very clear Idea about how Houdini handle the shape of a node. What is needed to make use see a node drawn on the canvas. With all that in mind, I decided to make sure I’m at the right direction though, so I wrote a very small interface, that can take a string value I copy from that JSON shape file, and it break it down to points in space, so I can see if those numbers I’ve been changing randomly is really representing a drawing, so far I’ve been changing numbers randomly, which gave me those weird shapes you seeing above. And Holy Moly, I was right, parsing those copied JSON nodes will draw some shapes to me. Some were based on Vec2 values where others are based on vec3 values (Vec3 is mostly used to do layering, imagine drawing something on top of something else, you give some offset to make it closer to the camera). So if we break down the order of drawing for a Houdini node, we will end up with (far to near):

  • Toggles/Flags
  • Body outline
  • Input socket
  • Output socket
  • Icon

And while my interface was able to read the JSON shape file, I knew that it is a matter of time and implementation for a nice drawing functionality, and I’ll be able to write down my own JSON shape files quickly, and use them within Houdini. After few days I finished writing my tool, and it was too much fun to do. It took me sometime to keep iterating in the UX of the tool, to make sure it visually looks like my other tools, and it works at the most reliable way, that a user can understand quickly or at least can be familiar with after a quick demonstration. And the results was really nice and I’m glad to move during those weeks from v0.1 to v1.0 it was a good learning experiment =D

It might mean nothing changing the node shapes, I might not able to draw amazing shapes, and for a long time I’ve been using the default node shapes, not even changing their colors. But the idea here was a matter of demystifying; the more you get into the heart of the tech you use, the more you learn about it. It was about learning more in depth about the SDK I use. And most importantly feeding my disorders of a visually unique graphs! Now I can have my special “M” node 🙂

Last thing I want to mention is the guidelines:

  • The tool still will get some development
  • You can’t move a point as soon as it is placed (to be changed)
  • The order or the points matter, it has to make sense of a curve to get drawn
  • For the icon, you have to use only 2 points, Houdini want a diagonal line which represent the the icon top corner with the reversed corner
  • Don’t forget to add a name to the shape
  • Input and Output, are enough to be a straight line to define where sockets could be distributed

Enjoy your nodes!


Unity Editor Custom Skins!

Few weeks ago I started a thread In Unity forums, it is worth to check it as it contain some ugly images for a freak skinned Unity version that have a green UI and different buttons/animations for the Editor itself.

In the past few months I decided to use neither the dark or light themes with Unity3d, and I must have a new color, at the end of the day a part of being human involves that refusing to be forced for limited choices, although I love the two skins, but I found I must find a way.

As an old user of Unity, I started quickly running the same process of any Unity related issue, which involves the documentations, the forums, the answer hub and finally Google. Unfortunately I found that nothing figured out a way to do that. So I decided to think outside the box. First I started to almost treat the engine as a game, and use some of the available tools to debug and track the GPU/CPU calls. I ended up with one conclusion, that is the Unity Engine, is a one big Unity game. and that conclusion made me see what I was never been able to see before. I don’t want to share more about the process, as I’m not sure if Unity would love that people starts making Pink skins! But all what I wanted to mentions, that anything you might think is impossible or limited is not exist, as your brain is the limited party here!

With that said, and with the past conclusion, I said to my self “The best way to fix, change or update Unity game is by using the Unity Editor”, and finally I started another round of debugging and testing, and ended up with writing a set of tools that allows me to change in the skin itself, using the Unity Editor itself!

Finally, I found it is not worth the time to be waste, it was a nice try to hack the engine, and open it’s hood. It was epic in fact to see those tons and tons of assets, but changing the skin color is not just setting a single color value that will be applied to all the UI elements, but it is a process of changing the colors of hundreds of small assets.

UnityEditorSomeAssetsFromItsLibrarySome of the Editor Assets – Click to Open the large version of it

This method opened lots of closed doors in front of me. Now I set my Unity back to the dark skin, but I managed to change other things. As I used to use lots and lots of Planes in my games, but Unity always use it’s own multi faces plane mesh, Now with an access to almost all the assets used to build the editor, I managed to replace the default plane with a 2 triangles one I exported from Maya. And now whenever I insert a plane, it use the Maya one by default. Still there is lots to be made, but it is a matter of balancing time waste with importance.

Glad to reach this point, but I never liked my green version of Unity 🙂


As lots of people sent me asking for hints regarding this process (mail, discuss, forum messages,…..); I would like to post those hints here for further inquiries, but I’ll not share any of the tools I wrote to hack the file:

*All the matter related to a file called “unity editor resources” inside the unity installation.
it is a *.assets file, which can be hacked using the editor itself. Then adding files to it requires writing a some tools.

*This section of the API will help out:

I hope it helps, And please feel free to contact me regarding anything Except the tools to access the file content.


Carefully Pick The player’s Character

Perhaps everyone know that having characters in the game is something essential to lead the players to make their own connection with the game. Yes there still games without characters at all, but the genre controls that. But in case you’r game based on characters

Which type of characters?
Does this characters should have some features?
What makes game character more appeal than other game?
Why a character could work fine in game, but not in another?!

With all this questions suddenly came to my mind while thinking about new game. I found that I have to search and look more before moving further in my decisions. so I made a small study trying to get to the essence of choosing character, or in another meaning what or which character works the best for me.

To make it easy, games are type of art and it has always been involved with other arts like animation, music, writing,….etc. But I’ll be speaking at some points from animations and cartoons perspective as it have always been a hidden part inside so many games. and In fact lots of the character artists we have in the game industry came to us from the Animations and features Industry. And so as the talented Animators we have!

A couple of years ago I got an idea about making game based on colors, a game where the player have to coat hims elf with colors to avoid or kill enemies, and I called it “Coated” and it was an IGF Finalist here in China in 2013 and it went out last year. Once I got the idea of the game without any doubt I decided to go with “Creatures”, neither humans nor animals as it make more sense to me (back in the time!). but if I could back in the time and keep thinking for a while, I would go with Humans, Animals or another type of creatures. And thats because…

*The game story and it’s context is the most important
There is some facts that you couldn’t change, and even if you can, it will be a mistake to do so. What if you are the one who is responsible for those kinda of early planning decisions in a game like Super Mario. Would you replace Mario with an animal plumber who wants to save his (animal) queen? or replace it with a robot plumber? I’ve to say the story controls you. A similar game idea was “Super Meat Boy”, but the fact is, meat boy is just a piece of meat (we’ll discuss this type of characters in the “What we can define…” Point) but not plumber piece of meat, which makes huge difference!

What I mean here is your story, with all it’s details will be the enforcing power to decide what type of character you should go with. And you can measure on that example so many games, can Max in “Max Payne” be an animal? replaced with a robot who got his wife killed and seeking for the revenge and truth! Or could you find using a super fast human instead of sonic as a main character is a good fit?…Simply, all the story details judges your choices!

*Humans are the best, but not always
When a player (specially shooter games players) open his PC or console to play a game, defiantly he escapes from something in his real world and he want to compensate that in a game (fake world)…that’s what we used to know first thing about the reasons behind creating games.
You want to touch people, let them get very close toy your character, even want those talented cosplayers to show your characters? Then use human as your game characters. It is always working when you want people to be more engaging with your game to use humans, shooters, action, sport,….etc all those type of games used to use humans 100% and that makes it succeed and last for long time. why there is so many parts of COD or any other game? because it is based in humans and players where you (as a player) can easily accept the fact of replacing yourself with it.
Me and my friends, we all played “Plants vs zombies garden warfare“, it was a great game…but..just for few days and then we switched to another game.. And by checking the game rating, you can obviously compare it’s success to any other action game that is based on humans; we all used to see that a successful AAA should be over 80% anyway!


*Animals are super cute, serious, funny and more
Animals! What a huge and massive kingdom that is full of wide range of animals with a huge variation in their features. We all have been witnessed that since the creation of motion pictures (I mean the cartoons not silver screens) and we saw almost all the types of animals have been used as characters in feature films and tv episodes. Animals used to play the good, the bad and the ugly. Also played the funny and the goofy. Animals in my point of view is the most interesting creatures that you can pick them for a game (if Humans was not the requested entities), and it will always working better than anything else.
In fact having an animal could be a reason to make game..Walt Disney made Micky mouse based on a real mouse named Mortimer! The point I want to flag here, is that animals could be a design tool more than an appeal feature in the game. You can get an idea of a game, mechanic, level or enemy for just the sake of seeing a strange or unique behavior from an animal.
Goat Simulator, perhaps I didn’t like the game because the experience was quick and fast and I do like the games that can last a bit longer with me, but playing with a goat character,…as a goat…Kidding me…!! that was unique in fact! Could you imagine this game a “Human Simulator”? it will never catch us, as we are already humans beings!
I would say the game might reach the same success if it was a turtle simulator or a donkey simulator; as far as it goes in the animal kingdom, it might give the same result but will have a different scenarios or mechanics. I might have played it for more few weeks if it was “Kangaroo simulator”!
One last thing about animals, I see them as a golden key and they can fit any type of game or any story (in most cases, but there is nothing absolute), perhaps the reason for that because they could be a bit close to humans, and at the same time they hold the functionality of being different some how. We could be able to accept them as a replacement for humans because we used to see that in cartoons starting so many years ago. And at the same time we accept them as a replacement for any strange thing..I bet at some point we all loved to play Crash Bandicoot Games…All of them!!

Walt Disney, Mickey Mouse

*Aliens have their audience
Want to use Aliens ?! Then do it in two cases. Either you have an already established IP (probably a movie of cartoon) that have it’s audience base, or the character types will not make huge difference. Lots of the players escape playing games with aliens, but they play it because of the space. Because they want to see some weird, strange and fancy environments that could give them an idea abut how it looks like in the outer space. So in a nut shell, they play it because of the experience neither the story nor the characters. A game like “Kerbal Space Program” could be made with humans too, but using those type of aliens didn’t give it a plus in fact. because at the end of the day 100% of the player’s focus is on the experience of having a rocket built correctly, being sort of a scientist, and going to see the space; the character type will not make a huge difference. and I see it could be easily replaced with any other characters/creature type with the same level of humor and fun. Imagine the game with Humans or even space chimps, it could work too!
Is this was the only game using aliens?!…Of course no…”Star Wars” had it’s own IP. “Aliens” Have an IP, “Aliens vs Predators” I guess have an IP too…!


*What we can define we can accept
When it comes to be a father, I’ve to measure so many things by applying it to my kids. Usually if my game’s target is to be something humor, I’ve to see my kids impressions, at the end of the day they will not be kids to the last days in my life, but I can take an advantage of it now!

My son is a big fan of “Sponge Bob Square pants”….It is not a Human, Animal, or planet. it is nothing belongs to the normal classification we studied at school in the science lab. Except if the creator meant a Sponge creature that lives in the deep ocean, but it looks different than Spongebob in Fact!!!
But lets assume that they means a Sponge…a manufactured sponge. So what makes me feel that my son is accepting it, because it represents something he can see, touch and use in our day to day life…Like a normal sponge he uses to clean his dish. So he believes that his sponge that he uses at home, could be some how sort of spoken sponge character with eyes, tie and pants.
And with that in consideration, you can measure so many things. Disney will release it’s movie (Big Hero 6) soon. My son watched the trailer with me, and once he watched it, he liked the giant balloon character and wanted to watch it again and again…However the character looks strange, but at the end it is made of balloon and this is gives my son a definition of that entity.
But when it comes to a game like “Tales from Space: Mutant Blobs Attack“, when my son saw me playing it, he asked me what is this character, he wants to know how it was made,..and because I can’t answer him and say “Mutant blob”, because I don’t know what type of creature or material blob are based on…And the result is, he forgot about the main character, and disliked it. And never asked me to see or to know what is this character anymore, but he always loved to see the scared and freaked out humans in the game, the game still awesome though!
As long as we can define the character with it’s material, shape, components, type or whatever…we can accept it,..We can accept it with as long as the information we have casts a real entity we know, touch, use and feel in our life. And those kinda of characters is the best fit for humor relate, funny, fancy and crazy stuff..Think about “Little Big Planet”or “Super meat boy” for example.


*Still some stuff, out of the rule, in the study..
As far as I go with different games and genres I find new types of characters, or sometimes I found stuff that I can’t explain or define or find a strong reason that make us love or hate the character. Something like “Ray Man”, which I can’ define till this moment what is it! Or “Pac Man” too have nothing I can tell about except a yellow sphere,…perhaps we have accepted this last two because they were introduced to us with the word “Man”!!…..Honestly, I’m still trying to figure it out!

Regardless the art style, which usually have the most important impact on getting the players attracted and connected to the game; The character type and it’s definition is very important. You can imagine it as a Huge productive machine (the art style) which requires a very very very simple button to run it, and help it to start doing it’s job correctly. That button is the “Definition” of player’s character.
Huge variation of types are out there, everyone fitting a specific conditions, those ones I’ve mentioned it comes from my notes, watching, playing, designing and failing in my choices..It is not everything but it is something. At least it helped me to decide and choose better for my next games. and I hope it’ll do the same for you.
At the end, this is just a personal study/notes. If it make sense for you I’m very grateful that it will help you to take better decisions about your game characters.
And if it doesn’t I’m really sorry that I wasted few minutes of your time, but I hope you just ask your self those first questions and try to find an answer that fits you, as finding an answer will defiantly improve your next decisions about your game characters and that will work for your game appeal. and move it to a next level.



The Art of Writing Tools


We all agree that all the programmers who work in games never studied games before. or even the other programmers who did study games before, none of those groups of people have studied something called “Art of programming”, because it is simply something I’ve invented it and taught myself !

There is a small portion in this art I really like to call it “The art of writing and making tools”, and as the name said, it is about how to make tools with the most efficient way. If you are using a custom engine, framework or already made engine, you probably hit a limitation which you wanna break this(through) To do this, you will need to)expand the engine and it’s tools a bit more further.

Some people think that making tools is all about programming and writing efficient code. But I disagree with that. here in this small article I’ll be listing the steps/questions I used to follow and ask myself while making the majority of the tools I’ve made in all my entire career. You may disagree with me, but as I mentioned before, it is my own art and my own rules, and any one is welcomed to follow it, and also anyone can ignore it!

1-What(‘s) the reason behind the tool?
The first and the most important step in the life cycle of making the tool is to  decide why you are going to make this tool, or if you are in the company and it is your task, you need to define the reasons behind making the tool. It might sound silly, but nah the reason behind the tool is very essential for you to follow up in the next steps. the reason behind making a tool must not be [ to finish the task X] or [to do the X functionality]. But it should be something like [to do the X functionality with a proper way that can fit the other X functionality]. So the meaning here is you want to understand the tool and what exactly it can affect, because a short tool reason description might be a reason of breaking some other stuff when you start using the tool.

2-How familiar am I with the API/SDK?
The API, SDK or whatever the rules you are going to follow and use to write the tool. You don’t have to be 100% aware of the API but the more you aware, the better for the step(4). I’ve to mention that some times I’ve been in a situation of writing tools for API’s that I never used or wrote for it before, or in other times I have to use languages that I never used before! Let’s face it, if you don’t know an API you still be able to write for it, you just need to look in the documentation index and give it a roll to know that calls, functions or other stuff it can provide and how you can use it in your tool, and the rest is just about using your programming skills and your syntax knowledge to wrap a tool code that (can or will) work with an API you never used before. I did it before to write some tools for a game bundles in cloud server ! which was really far from my area of working in that company  “gameplay & gameplay tools” but as long as it is coding for the game, I agree that I/any game programmer can or perhaps should do it.

3-Which name should I call it?
Lots of times trying to pick a name for my tool was the main reason of adding new features for the tool !
Try it and you will get amazed how strange it is !!!

4-What else the tool can provide?
Sometimes you can used simple lines of code to achieve something else that can be related to the tool. Or in other times that there is a certain behavior or code that can be reverted or controlled with a value. Lets say we are working in a tool that blends two images to use them as a texture. So why not we add a slider to control the blend ? or why don’t we add a check box to enable the user to auto remove the original 2 textures after blending, so he can save some space on the long is all about asking your self what else the user might need, what else can be implemented with zero amount of time, what else the tool should do & what else the tool can integrate. And all that will depends on how familiar you are with the API. the more you know, the more you can add and the more the tool efficiency will be.

5-Is there something the user should know?
Sometimes the tool has something the user should know every time he opens it. It is not about documenting the tool, we will talk about documentation in a later point. But it is about reporting to the user very important information every time he runs the tool. Two of my tools examples were reporting the user that [he can not undo the changes made by the tool] or another one was reporting to the user that when he press a button he should wait because the tool will be looking inside all the project files one by one and that will take some time (I was not able to put a loading bar in that API). And one more thing, for this info try to make it 100% obvious either with different color or big font…or may be with a popup message box with an “OK” button !

6-How it should looks like?
We are programmers, we are not artists to make a nice and clean mock-up..BUT as long as we know how to make our code organized, we also know how to make out tool UI organized. So you need to get a paper and pencil, list all your features, all your buttons, sliders and other UI elements. And start organizing the tool with the most user friendly looking. If it looks fine for you, then it will looks fine for others, because it is a tool and will be used with a guy like you who is Engine friendly as well !
In here also you can decide which graphical elements you need to add to the tool (icon, images,….etc).

7-How easy is it to use ?
Making a tool is not about adding too much UI elements and too many buttons. If you can shrink this UI elements and save the user’s time, that will be awesome. Check if the tool is easy to use and the user can not get confused from your UI elements order. if that is fine then you jump to the next step, if it is not, then you need to go back and forth between this step and the previous one!

8-Write it !
Nothing to say about writing the code. just few notes. First, if you can write it in it’s own project and then implement it into the main Engine/project, that would be more safe and you will be sure that you are not going to affect the original project files..We all use version control, but some times for some unknown reasons it get weird !
Second, document the code with some notes. Third any canceled code or feature, just comment it’s code, and never delete it. You might need it later or you might need parts of it to construct another functionality. and that would save your time !

9-Is it need to be documented?
If the tool is too big, complex or whatever. Make sure that you document all the code and document all the buttons functionalities in a PDF. It is nice way to if you can add tooltips to the UI elements of the tool, so it can help. The main reason for this point is that you may leave the company for some reason, and all other team members who get used of the tool can leave as well. So what happens if a brand new people came to the company and they either want to use the tool or improve it ?

10-Is it need to be locked?
Do you need to lock the code ? Can you lock it ? Are you eligible to do that ? then do it !
Sometimes you have some intern, beginners or even other programmer who are not familiar with writing tools, all of them working with you in the same project. Sometimes those people try to learn how to make tools and sometimes they can change some of your code by mistake and submit to git and that will broke the tool for all the project users !
Sometimes other programmer wanna to add an X feature to the tool and he don’t want to bother you with that. And he is not aware of it’s code as well. and that will break it as well.
So as long as you can lock it it an available choice, then do it to save the tool from unintended mistakes by others

11-Test it !
Test it in all the different cases and take your time in that step, you don’t wanna get some one to your disk say your tool is broken !
And if you can test it is an empty project, it would be better,just to save the project from any conflicts that could happen.

As English is not my main language, I get some grammar mistakes quite often. Thanks for my friend “Brad” in helping me to clean the grammar mistakes 🙂

Featured On Gamasutra


  • udi udi song from paa
  • download offline real player
  • air os software
  • download phim hoac nguyen giap mf
  • trilha sonora keoma
  • firstclass mac os x
  • rpg online games
  • ce i cu inima mea
  • download snood on mac
  • vhs para dvd
  • php5 com mysql comArcio eletrA?nico
  • download sebastien tellier sexuality remix
  • download fernandinho cd uma nova historia
  • itunes x64 10
  • run daddy run
  • ntprint.inf x86 windows 2008 r2
  • privat server crossfire
  • samurai shodown rza download
  • anjos e demonios yes filmes
  • tippspiel em 2012 excel
  • avid pro tools 9 download
  • office 2010 download for key card
  • bug mafia hoteluri 2008 download
  • el matador pc
  • download soad sugar mp3
  • fatto de yaar bade ne
  • download lick you down
  • driver samsung l700 mobile
  • skat download fA?r windows 7
  • nonlinear process control download
  • on bended knee instrumental
  • senhor dos anAis download avi dublado
  • 5.50 gen d3 fat
  • xport 360 64 bit download
  • download cool 3d production studio
  • download j2se 5.0 update 6
  • peng you karaoke mp3 download
  • tnef download per mac
  • download yavarum nalam mp3
  • all hell let loose 2002
  • download philippine map for nokia 5800
  • we should be lovers mp3
  • npapi google chrome
  • programas nokia x6 download
  • fast internet explorer 8
  • download kmplayer terbaru 2012
  • download tumblr video mac
  • download driver dvd rom acer aspire 4520
  • isafe all in one keylogger 3.0.1
  • high speed hack
  • download do jogo scania driver
  • minnal azhage mp3 free
  • download bf heroes aimbot
  • download sandeepen for mac
  • jin crazy love
  • download c.s 1.5 completo
  • download joe brooks holes inside free
  • w8 theme for w7
  • supernatural 4 legendado
  • filmes japones dublado
  • yani olmuyor mp3
  • download zezo grandes sucessos
  • tintin explorers on the moon
  • acqlite for windows
  • download kgb hunter game
  • free telugu quran mp3
  • christina aguilera dirrty mp3
  • spin doctors two princes zippy
  • download oficina g3 depois da guerra
  • free download heidi cartoon in tamil
  • mfA yaAYAn 19 mp3
  • download ananthapuram 1980 telugu songs
  • papa roach loved download
  • download that don impress me much
  • sweet charity movie
  • download games blackberry curve 8530 free
  • pes 2011 pc link unico
  • download internet explorer youtube
  • careless whisper george michael mp3 free
  • canon mf 4100 treiber download
  • driver kyocera mita km 1650
  • download armadillo run 2
  • jagadeka veerudu athiloka sundari mp3 free
  • the boys 61 cbr
  • download sakura live wallpaper
  • empires dawn of the modern world full version
  • cd dj alpiste 2011
  • nek laura non c e download
  • download driver ecs 945ct m 2
  • speed dial for internet explorer
  • ios 6 verizon
  • secret agent 666 download
  • ds 1 games
  • chu hieu chu tinh
  • sonic colors rom nds
  • weak jojo mp3
  • folha de redaAA?o
  • three days grace album zip
  • ojee question paper download
  • download no mundo de 2020
  • montevideo bog te video dvdrip
  • crysis 2 pc patch 1.4
  • download programa baixar videos youtube
  • warcraft iii tft patch 1.25a
  • habib syech sholatun
  • ifaith download for mac
  • don quixote 2000 movie
  • baby names list
  • richard marx songs mp3
  • windows xp cu cd key
  • amigos para siempre karaoke download
  • teoman 2011 albA?m download
  • like me 2 chainz mp3
  • mp3 yusuf kalo
  • chota bheem pics
  • download gayatri mantra in audio
  • download final render 3ds max 2012
  • wii channels to sd card
  • how to daisy books
  • download inter manager serial number
  • luxA?ria isabella taviani
  • download rich dad's guide to investing asana
  • shinhwa let it go download
  • el ultimo palo
  • stellent content server development
  • mp3 iyeth bustami cinta hanya sekali
  • together again dave koz free
  • iclarified download ipad firmware
  • rtw barbarian invasion
  • limits of power download
  • where to hyperterminal
  • ajda pekkan boAYvermiAYim dA?nyaya download
  • fear game full version
  • tezz movie avi
  • dell drivers laptop xp
  • beyblade 1 season
  • download introduction to java programming comprehensive
  • city racing pc
  • ao meu lado tianastacia
  • hp ilo player download
  • zatmAnA cz dabing download
  • gameloft games for 5800
  • plugin windows media player free
  • bane the note
  • os 3 mosqueteiros 2011 dublado dvdrip
  • aarti kunj bihari download mp3
  • lagu love u howl
  • download original mile sur mera tumhara
  • bnf 2010 bookman
  • free rajasthani meena songs
  • kinect xbox games
  • registration internet manager
  • matchbox 20 exile on mainstream
  • download wow client us
  • masters of orion
  • ku fight song download
  • el viaje del emperador
  • holzfAller simulator 2012 tpb
  • tfc mod manager 1.5
  • download video wings little mix
  • em tipp excel download
  • nfsu2 save games
  • adela popescu incearca
  • principe caspian download dublado avi
  • download kau yang punya
  • kingdom hearts re coded download eu
  • gypsy kings volare free mp3
  • umer sharif dulha 2002 download
  • wild at heart series 1
  • hawa hawa song download
  • download sketch star animation creator
  • adagio lara fabian english
  • free nokia e90 app
  • free download pitstop pro 10
  • no printable coupons
  • lele nimeni nu i perfect
  • modern warfare 3 keygen
  • iobit windows care download
  • google translate documents download
  • mio usb driver c510
  • coyote kisses baby you're a blizzard
  • silk meeting in my bedroom
  • download b.u.g. mafia cu talpile arse
  • 3g mobile manager for android tablet
  • cursed by the sea
  • express burn 4
  • the a tally latest version free movie
  • mahadev ms office service pack 3 a mantra
  • apresenta music a galaxy s3 matanza
  • uloz bot quest worlds 1.4 a free to
  • river a mogwai music for a forgotten future frank
  • episode korean music a 7 8
  • 2 a here kitty kitty shelly laurentson mac
  • vol super mario world a smw central 2
  • windows a todo dia humberto e ronaldo 7
  • app a neenu sundara nenu undalenu mp3 for
  • messenger yahoo a hidden object games offline
  • bhakti der kleine lord a songs
  • longomba autocad 2012 64 bits a gratis karolina
  • 3c905 5 doll's lip stains mp3 a driver
  • font a virtual families with no time limit for
  • 2 a abbyy finereader sprint ocr launcher
  • avi a gpedit.msc para windows 7 player
  • nxt isi life mein movie a 3gp free
  • ki fast a gametop mario forever sawaari
  • soetedjo a shows for kids full
  • service itunes 7.9 a windows transition
  • gi a mp3 kyuhyun now and forever kwang
  • sound borderlands willowtree a mac effects
  • sg1 a sql 2008 r2 express sp1 stagione
  • free que assim seja rashid a cd full
  • kit a drink to that rihanna mp3 fantasy
  • son photoimpact 12 a kostenlos deutsch of
  • zoo a new york city for sims 3 tycoon
  • en a disco independiente ricardo arjona ingenieria
  • student oor mariyathai mp3 free a version
  • suruceanu a inuyasha kimi ga inai mirai ce
  • padam free a rahim shah new album padam
  • care tagebuch a kostenlos deutsch drake
  • redeem a programs nokia c1 01 code
  • terbaru a film lage raho munna bhai desember
  • savas krishna songs a free mp3 aura
  • inggris a kingdoms of amalur reckoning pc demo pes
  • desktop a de o grande mestre 3 linux
  • in trainz simulator locomotives a waves
  • planet a loader blackberry 9900 indonesia
  • power teri meri mp3 a pk tools
  • 360 a ubuntu 11.04 windows installer rose
  • phone a moein baba didane to pebl
  • required a splinter cell conviction for nokia 5800 for
  • windows a wolf sound effect mobile
  • lal a jhooti hai tu jhooti song
  • pkwy avast virus definitions offline a i
  • os indeo codec a windows xp x
  • dark a dota 6.71 com bot crusade
  • port hi q ochii verzi a fileshare of
  • closehead a lagu doel sumbang runtah berdiri
  • octane ibm server guide disk a loveyou
  • 5 a oracle 9i client for windows hybrid
  • fray a the fray cd how to save a life you
  • iron iphone configuration utility a for windows 7 man
  • for a ewallet for android mac
  • on a do it all drake android
  • no a converter sala to doc 1
  • effect a mariah carey endless love free 3
  • directx a using orbit youtube for
  • 41 a sub playful kiss 2011
  • sora akcent chimie intre noi a zippy ova
  • quickcam a logo comfort v5 pro
  • chelle a horizon xbox modding rae
  • 2 nirvana kuchek a cd rip songs
  • no vlc a linux redhat deserto
  • messenger imacros a for ie windows
  • vs a markus schulz toronto capcom
  • the depositfiles gerenciador de a word
  • full advogado fiel a cd album
  • manager alexis y fido invencibles a update
  • lost a cd to itunes 11 canvas
  • episode a mad surfer mp3 2
  • xilisoft a khutbah idul fitri bahasa sunda video
  • j cbt nuggets vmware a neto
  • for aventuras jackie chan a android
  • image a bold theme for blackberry curve file
  • chavoshi mortal kombat 9 patch 1.02 a greedy
  • application brutus na windows 7 a form
  • for martinho da vila a gratis nokia
  • scroll a da serie os sopranos reader
  • zeppelin minimoog plugin a mac world
  • lbp canon mf 4320 a 1910
  • rupa a safari windows 7 64 bit honey
  • aku a season 2 walking dead jadi
  • racing uc browser 7.3 free a for android 4x4
  • ipsw james blunt instrumental a directory
  • bible a chop my money by psquare and akon audio
  • movie anjell as ever mp3 a hindi
  • 5130 nokia 5800 xpressmusic hardware a rm
  • youtube a tasha baxter ebb & flow videos
  • root cd dj cabeça 2012 a xxjvt
  • birds a antm cycle 19 2.1
  • three a roses are red kingdom
  • corby a sam tsui born this way ii
  • untuk a wma from youtube win
  • suna a photoshop на бг remix
  • francois a jim ward broken songs maurice
  • kamus free a latest raj comics baggins yunani
  • disappear a citizen cope the clarence greenwood recordings in
  • dark a .exe with mac crusade
  • english free a goo of world melodious
  • hisoutensoku treasure island 1985 a english
  • of a songs of mukti 1977 salma
  • your de la ghetto perdicion free a name
  • para colin mcrae 1998 a perder
  • hyfr a dragon ball z fusion reborn full movie music
  • photoshop a adobe fireworks cs6 9
  • unlock jocuri a pt windows 7 generator
  • player a vplayer for android 2.1 4.0.1
  • uyen a album baru endank soekamti 2010 linh
  • that a damages season 4 episode 2 men
  • wrestling a johnny cash i won't back down 2011
  • waller john talbot mp3 a cd
  • schäfer microsoft mn 700 software a kalender
  • firmware websites a youtube videos mac failed
  • link crack rete wifi a dropbox
  • 3 cartoon yourself software a free datpiff
  • erecovery aadhar card software a management
  • miku a hawx hd android dream
  • s a surat al waqiah free o
  • tere a bing maps 3d italiano sanam
  • full a avengers hd trailer version
  • ux hp photosmart b209a m driver a 11i
  • for pakiet office a peb pc
  • retail a macro mouse x7 dvd
  • russell a otserv 8.6 xtibia peters