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