How to Make a Video Game from Scratch

Video-Game Are you a hardcore or casual gamer? Ever considered creating a video game yourself but had no idea how or where to start? Well, don’t worry! This how-to is primarily focused on computer gaming and assumes that you have absolutely no skill in creating games, so hopefully it’ll give you a head start* in creating any video game from scratch!

  1. Note that this guide also only covers the basics but doesn’t go into technical details such as how to architecture a program correctly (okay, I’ll give you one tip, avoid object orientation like the plague unless you are an expert programmer) or how to implement a bump mapping engine. However, wikiHow is, as in all matters, your best friend if you have more specific needs.

[dividers style=”3″]

[notice type=”support” title=”STEP BY STEP” tag=”h4″]STEP[/notice]

[dividers style=”3″]

[notice type=”support” title=”Initial planning” tag=”h4″]Initial planning[/notice]


Plan first. Ask yourself a few questions not directly related to the game before you even start working: Is it going to be a short or long term project? Is it going to be done with a budget? Are you going to do this yourself or with a team? Is it going to be a small, casual game or a Crysis look-alike? What software will be used to create it? Are there any prerequisites such as knowledge in coding?


Think of a game to create. Once you have those questions out of the way, brainstorm initial ideas for any game and work out some basic factors like, genre (RPG, Action, MMORPG, etc), length, graphical detail, perspective (2D, Isometric, 3D, etc).


Refine your ideas. Keep brainstorming concepts of your intended game and refine them until you have a very specific game you are happy with. Once you have a clear idea of what you want to create, move on to more detailed ideas such as plot, characters, controls, actions/dialogue, NPCs (non-player controlled characters)/enemies, scenery, music and voice acting (if any), etc.


Start learning a programming language. The one that works for you is different based on what type of game you want to make. For a small 2D platformer, you can make it entirely in a high level language such as Lua, JavaScript, Python or others. For a 3D game you can use said high level languages or a lower-level language such as C++ (which is the de facto standard of programming in the gaming industry). There is also some software you can use in place or along with programming.


Get the software needed to make your dream game. Now that you’ve got a definite idea of what you want to create, you’ll want to evaluate how skillful you are at coding and graphical design because games at their core are basically codes and graphics. Software can include 3D modellers, image editors, text editors, compilers, etc.

[dividers style=”3″]

[notice type=”support” title=”Three Essential Skills” tag=”h4″]Three Essential Skills[/notice]


  1. 1. 3D Artwork. Your environment is what will give your game personality. Even if the game play is top notch, the environment still needs a creative and unique look to keep people interested. An environment is composed of 3D models. A 3D model is built with polygons that are combined to resemble a real life or abstract object. Another name for a 3D model that is more commonly used in the video game world is a mesh. A mesh is an object’s shape. In order to make the object appear realistic, you will need to assign materials to that object. Materials can be simple or more complex for added realism. A material can have just one base texture or a base texture, a normal map, and a specular map to make the texture appear shiny, bumpy, and more detailed. Once you have a set of meshes to load into your game, you will need to apply UV coordinates or UV map each object. Most 3D software offer a UV texture editor in which this can be done. Each vertex (similar to a UV) is assigned to a specific part of a texture. Enlarging the UV shell (set of UVs) will tile the texture or repeat it. Depending on the complexity of the model you are working with, UV mapping can be just as hard or even harder than building the actual mesh. As for specific software, make sure to use software that has many different exporters. You are most likely to use a game engine for your first game as a test and not create your own, so make sure your preferred game engine has support for the required model file format. Some of the most popular such software in the gaming industry are, in no particular order, Blender, Autodesk 3DS Max, Maya and Softimage XSI

  2. 2. Once you have a set of 3D meshes ready to go, the next step would be 3D animation. While I personally find this to be the easiest of the three essential skills, it can be frustrating and challenging sometimes. 3D animation has two sub categories that have drastically different difficulty levels. There is basic animation of standard objects in a scene and character animation. It is probably best to master object animation first before attempting character animation. Object animation follows a fairly straightforward process. A toolbar called a time slider is used, either in your 3D animation software or game engine. The time slider uses keyframe animation, a process where the user transforms (either translates, scales, or rotates) an object and sets that transformation to a time (in seconds or frames) on the time slider. Setting a transform time is known as keying in an animation. Once you have enough transformations keyed in, you can playback the animation and notice the object moves, rotates, or scales, in between each frame. Character animation follows a different process with more steps. In order for a character to be animated, it must have a bone system and sometimes a muscular system assigned or skinned on it. Through adding IK handles, a characters body can be transformed more easily. The character must still follow the same keyframe process, but make sure the skin is correct before animating, otherwise you will need to rebuild the entire bone and muscle structure if you don’t follow the steps correctly.

  3. 3. Be a good kid and don’t try to do this work because it is hard. While the above two steps contribute to the appearance of the game, the game will be nothing more than a pretty scene without gameplay. That leads us to programming, a whole different ballgame. Programming is the bread and butter of any game. From designing a heads up display to text boxes, to even adding controls to make your character move, none of this would be possible without scripting. The first step to scripting is to decide what type of script you want to write. Programming languages can be broadly split into two types. Ones that are compiled, and others that are interpreted. The former usually have better performance as they translate directly to individual bits. The latter are read on-the-fly and are often much easier to program in. In many cases, where performance is critical, the core, computer resource-intensive parts are written in a low-level language such as C and the less performance-critical parts in a nicer language such as Python or Ruby. These are sometimes called ‘scripting languages’. They are usually much more capable than lower-level languages and tend to ship with richer functionality, as the price of performance.

  4. One such language is JavaScript (.js). It is doubtlessly one of them most popular languages in the world. From nearly all websites and many computer games and applications, JavaScript is a very useful and popular language that is fairly easy to understand. There are two parts that make up JavaScript: functions and variables (var). Depending on what engine you are using, there are hundreds of different variables and functions that, when combined with game objects, can create a nearly infinite number of unique scripts. This depends on the engine you use. As with all programming, extensibility is a key concept and if your engine doesn’t support a function you need, you can create it yourself. A basic JavaScript program usually follows this pattern:

  5. 1. Define and introduce variables ex: var target : Transform; //this script is based on a transformation of an object

  6. 2. Set up event and functions (if this happens, make this happen) ex:

  7. function Update () } if (Vector3.Distance(target.position, transform.position ) < 12) { //if object is less than 12 meters from the target position other.enabled = true; //the other (script) is true and should run if ( Vector3.Distance(target.position, transform.position ) > 12) { //if object is more than 12 meters from the target position other.enabled = false; //the other (script) is false and should not run That is a fairly simple script (only around 10 lines) The more variables you add, the more functions you need to define and the longer and more complex your script will be. Keep in mind that more complex scripts are more interesting and therefore more fun to play. Simpler scripts, on the other hand, are more basic and boring to play. Once you have these three essential skills mastered (or somewhat mastered) get yourself an engine. It is not recommended to start with a more full-blown engine such as Unity or jMonkeyEngine as these teach poor practices and make most people useless programmers. One popular framework for creating games with the Python programming language (much prettier and powerful than JS) is pygame. Many excellent tutorials for pygame are linked to here.

[dividers style=”3″]

[notice type=”support” title=”Beginner Software” tag=”h4″]Beginner Software[/notice]


The listed software are for users with little to no knowledge with gaming systems, coding or even computer programs. This is of course not a complete list and is only a selected few recommended by the authors.

Before we start, just remember that you are using these as a means to an end. That is, creating games. You can always create your own engine, though it probably won’t be a good one. Basically, if you have the skill set to do it, always strive for technical excellence instead of using a pre-packaged engine which can oftentimes restrict what you can do with your game – a very frustrating experience.

  1. Game Maker 7.0 Game Maker is basically the absolute beginner software which offers a user-friendly interface and should let anyone grasp and master it quickly. However, it is only used to create 2D games (complex ones still entirely possible) with no knowledge of programming, though it does contain simple programming functions to create scripts. (You can also purchase the fully-functioning product for $20). Additionally, Gamer Maker also hosts a very active community and has various sets of tutorials to help beginners.

  2. RPG Maker 2003. As the name suggests, this simple and easy-to-use program is only for creating Role-Playing Games but is a huge favourite among game creators. Like before, only a 2D perspective could be used but it comes with tiled-maps, random battle generators, support of animated sprite characters and pre-made sprites. This version is completely free but a new version, RPG Maker VX can also be purchased for upgraded functionality and features.

  3. Sphere 1.5 Sphere is a cross-platform, open source engine that is used primarily to create RPGs but also flexible enough to create other genres of games, too. It supports 2D and also basic 3D graphics by using the “OpenGL” video driver. A bit of knowledge in Javascript may be needed but it boasts a large community with plenty of tutorials.

  4. M.U.G.E.N is a free, very customisable engine for creating 2D fighting games similar to Street Fighter, Tekken or Mortal Kombat. It is extremely popular and thus has a large community base, help files and mods. Rather than coding, M.U.G.E.N involves more graphical and animation work as when using it. Mostly characters and their fighting moves will be worked on. However, some coding still needs to be done and it uses C. While its graphical capabilities are only basic, it supports high-resolution stages (with a mod) and music.

  5. 3d Rad. Although this was previously a commercial software, it is now being distributed for free. It is mostly used to create racing games but can also be used create role playing games. It is relatively easy to understand and use, and should be perfect for the beginner game programmer since code does not need to be typed.

  6. Adobe Flash CS4. All the software listed so far are more related to distributed single player games but for games that need to be hosted/embedded on websites for single or multiplayer use, Flash is probably the best and most popular solution. Its community base is gigantic and tutorials are never, ever in shortage thus making Flash one of the easiest software to grasp. Utilising its own programming language called “ActionScript” (which is fairly similar to JavaScript) any sort of game be created to a professional degree. It is harder to master than the previous mentioned software but is an extremely flexible tool. However, Flash is more expensive than a single PS3 at $699. On the other hand, there is a trial available for download so you can test it out and decide whether it suits your game creation. Flash could’ve been listed as an intermmediate/professional software but due to its gentle learning slope, it is listed as a beginner software instead. Flash is not recommended for creating games. While an excellent animation engine, the program suffers from an identity crisis and it provides a very difficult and buggy interface for creating games. It was not originally intended to make interactive programs; this functionality is precarious to this day. Additionally, Adobe Flash has suffered many regressions in usage since the advent of HTML5 and it is likely that its presence will be little-visible in the future.

  7. Atmosphir. Game builders can create games using various snap together blocks, then get free publicity by publishing to the Atmosphere website. Games run in the web browser; players need only to install the Unity Web Player plugin.

  8. ROBLOX. Similar to Atmosphir, but geared toward children. ROBLOX games can be shared online, but players must install an application to play them. There are a lot of “duds,” but it is possible to create high quality games using the embedded Lua scripting.

  9. 2DWorlds. A Java tool that allows designers to design 2D game levels with the editor, then make them interactive using Lua. Appears to be early in development, so there isn’t a lot of user-added content yet. Java is the only required download.

[dividers style=”3″]

[notice type=”support” title=”Intermediate/Professional Software” tag=”h4″]Intermediate/Professional Software[/notice]


The next few listed software programs are more advanced, have steeper learning curves and may require a prerequisite knowledge of coding and/or graphics design.

  1. ZBrush 4. is a great commercial application that is used to develop very unique 3D models of characters and other things, that can easily be exported to other game developing applications such as Maya, 3D Studio Max, and others.

  2. UDK. This software is widely used in developing FPS games and other 3D environment type games, it should also be noted there is a free UDK that you can download, but once you are ready to publish you are going to need to look into getting a license from the Unreal Development Kit developers that will allow you to sell your game to the public. (Getting a license for a group of developers is wise to do prior to work beginning so all legality is already handled, and you own the rights to the content that is developed by employee developers.)

  3. Adventure Game Studio’. Remember the days of Lucas-art/Sierra point’n’click games such as the likes of Monkey Island or Beneath a Steel Sky? With AGS (which is completely free), anyone can create their own point’n’click game but it is quite complex and requires some advanced scripting knowledge for longer, better games. On the other hand, its community is absolutely huge with a large amount of help files and tutorials.

  4. BYOND. Everything listed so far has been aimed at offline gaming (besides Flash) but for a software aimed truly at creating quality online games or rather, MMORPGS, BYOND is an excellent choice. Its community is quite large and has many comprehensive helpfiles available. BYOND uses its own code named “Dream Maker” but anyone with knowledge in C/++ or JavaScript should feel quite at home as it is not entirely dissimilar. However, beginners will have to read a lot to understand even the basics and creating a decent MMORPG could take months, if not years. Hosting games is also hard to understand at first and can be quite a hassle as a static IP address and portforwarding may be required.

  5. Microsoft Visual C++ If you are serious about gaming, there is a free version of Microsoft’s Visual C++, The Game Creators GDK and the Xbox 360 XNA development kit. This is high quality, professional softwares for creating industry standard games but requires a good deal of coding knowledge-particularly C++. This could take years to master but don’t be discouraged, C++ is a popular and common programming language so there are tons of tutorials on the internet. (Hint: wikiHow.) That said, XNA’s future is uncertain. It is also not cross-platform at all, and Microsoft’s monopoly won’t be tolerated for much longer by the markets.


8 Unity. If you want software that can easily do casual games on low-end software, Unity is a great tool. Although the basic version is free, there is a Pro version that costs several hundred dollars. The user interface is easy to get used to, and has a large community to work with. It uses C#/Javascript, and has an animation engine, real-time physics, and supports lightmaps (the Pro version includes dynamic shadows).

  1. Blender. On the other hand, if coding doesn’t appeal too much and you prefer to work more graphically, Blender is another excellent alternative. Blender is professional-level 3D modelling, animation and sculpting software and easily matches, if not surpasses Maya in capability, that is free of charge for anyone to use, partially due to being open source (though be warned that open source does not equate gratis). Blender also ships with ‘Game Blender’ (sometimes called Blender Game Engine, or BGE) which uses Python as a scripting language (common in the CGI industry). BGE is, unfortunately, not as well-developed as other parts of the program though it is always improving. That said, it has a very intuitive system of ‘code blocks’, making for what its creators call ‘visual programming’. BGE supports all the features of Blender which its power derives from, including excellent support for lighting and an excellent physics engine. BGE mainly suffers from a lack of good tutorials and documentation, though Blender as a 3D program (and that workflow ties in to game creation a lot) is absolutely brimming with great help resources. Blender is best described as a jack of all trades (animation, modelling, sculpting and games) and master of the first three. However, BGE has made leaps and bounds in power since the monumental 2.5 release. That, in addition to frequent updates make it an excellent tool, especially if you are already familiar with Blender 3D.

  2. Java. If you are serious about gaming and if you’re looking for a cross-platform solution (except for consoles and iPhone/iPad/iPod), look at Java, it has several powerful integrated development environments (Eclipse, Netbeans, …), a huge indie/amateur community especially on, lots of tutorials, lots of tools to create 2D games (Slick, JGames, etc…) and 3D games including OpenGL/OpenCL/OpenAL sets of bindings (JogAmp, LWJGL), 3D engines (Ardor3D, JMonkeyEngine, 3DzzD, Xith3D, Aviatrix3D, M.S.G; etc…), physics engines (JBullet, Jinngine, etc…), game development environments (jMonkeyEngine Platform, JFPSM, A.R.C, MMF2, etc…). Java can interoperate with a lot of scripting languages including Lua, Python, Ruby, JavaScript… It is used in commercial games like Wakfu and Poisonville. One of the best parts of Java is that you can use Java classes with a programming language of your choice that runs in the Java Virtual Machine. That is, most programming languages! So even if a given framework you want to use is not available for your favourite language – say, Ruby, you can usually find a Java framework for the task at hand and access that directly from Ruby. Please note that Java is not related to JavaScript in any way whatsoever.

[dividers style=”3″]

[notice type=”support” title=” Graphical tools” tag=”h4″] Graphical tools[/notice]


You can code an extremely good game but achieve nothing if you have no means of presenting it graphically (unless of course it is a text adventure like Zork). Here are some recommended and immensely popular graphics creation/editing software programs.

  1. Microsoft Paint. Everyone should’ve used or at least heard of Paint. While it is not the most powerful image tool, it’s free and with enough practice (not much), anyone can create decent sprites and images. (Although some professional graphic artists have been able to create amazingly realistic images using Paint. Head to YouTube to see for yourself.[1]

  2. The GNU Image Manipulation Program. (better known as the GIMP) A great free, open source solution to do advanced graphic manipulations, this is very similar to Photoshop in form and functionality. Like PhotoShop, it is mostly geared towards photo editing but can be used for a variety of tasks. The GIMP is compatible with PhotoShop filters and has a large and active community of its own, and many tutorials to go along with it. While not quite a serious competitor to PhotoShop in terms of productivity, which needs some work, most of PS’s functionality can at least be duplicated in the GIMP, if less elegantly.

  3. Adobe PhotoShop. A classic. Every serious artist must have this software in their portfolio as it provides a huge range of simple to professional image editing tools. Even though it may be difficult to use PhotoShop effectively at first, you will master it in no time as there are literally endless amounts of tutorials for it everywhere. On the other hand, with quality comes a price. Either US $699 for the standard version or a whooping $999 for the extended version. Try out the 30-day trial first before making the purchase. (or just get GIMP for free)

  4. Paint.NET. A free Paint Shop Pro clone built using the .NET framework (Windows only, unfortunately, but Pinta is a decent Linux-only alternative – PDN also runs well under WINE on Linux and Mac) comes with add-on support and some useful basic tools. Several tutorials can be found on their forums. Easy to learn. Can be found at:

  5. Blender. Since the User Interface redesign of 2.5, most usability concerns have flown out of the window and Blender is far easier than similar software such as Maya, while 3DS Max simply cannot compete in terms of functionality. Blender is a true open source success story. Do note you will probably have to use an image editor in conjunction to this (or any 3D program for that matter) for texturing and other tasks you may wish to perform. Whilst Game Blender is far from perfect, Blender as a CGI program is almost unmatched in prowess. While it has an exhaustive manual, the tutorial approach (whether written [preferably with pictures], spoken or viewed) is probably better for learning any 3D program.

[dividers style=”3″]

[notice type=”information” title=”TIPS” tag=”h4″]

  1. Test. Test. Test. One of the most annoying and embarrassing things is to find critical errors, glitches and bugs in your game after it is released to the public. Set your game into stages such as “development” (still making), “alpha” (initial or early testing), “closed beta” (a before-release testing for invited or chosen people) and “open beta” (a before-release testing for the whole public). Choose the appropriate people for close-beta and alpha stages and collect as much feedback and constructive criticism as you can. Use them to improve your game and fix as many bugs as possible before the release. Note: Add a “pre-” or “version xx.xx” to your stages to refine them even more. Make sure it is clearly marked as a development release if it is one.
  2. Don’t expect your first game to be a revolutionary benchmark. If you really put effort, hey, that could just happen but it isn’t likely. Don’t give up just yet, hear from others what went wrong and what they liked. Implement the liked aspects in your second game and improve or remove the disliked or bad aspects of your first game.
  3. Create hype and advertise. Let’s face it, you are not the only amateur game creator. You can release a game and it will be instantly shadowed by newer and/or better games being released. To counter this, spread the word about your upcoming game through whatever means necessary. “Leak” some details here and there. Put a release date so people look forward to it even more. If it’s appropriate, you may even want to consider paying for advertising.
  4. Finally, don’t ever give up. Creating a game can be a boring, tiring and frustrating process. At times you will feel the urge to just give up and do something else. Don’t. Take a break, go out for a while and put it off for a few days. You’ll return feeling more confident again.
  5. Remember, a team is always better than going solo. You can significantly decrease the workload and time spent by splitting members into graphical and coding then add more divisions such as writing and composing, etc. This is an important area that depends on what software you choose, as graphical game builders such as BGE, Unity and the UDK have poor support for a team workflow, and editing code directly and pushing to a version control system such as git is probably a better idea.
  6. Keep learning. If you ever need help, ask for it. There are billions of helpful people on making a game so don’t ever be afraid to ask or seek for it. And remember, there is always room for improvement so keep studying and learning about making games.
  7. Remember to backup your files frequently. You never know when your computer may crash.
  8. Set a work plan. If this the first time and you want to take it easy and experiment then it may not be necessary. However, it can keep you on track and may be especially important if you have a promised release date. Plan roughly when you want to get it done and then refine it into sub-sections of coding/graphical stages, etc.
  9. Practice as much as you can, so you can get better and better at making games, as they say “Practice Makes Perfect!”


[dividers style=”3″]

[notice type=”warning” title=”WARNINGS” tag=”h4″]

  1. Copyrights! Be as original with ideas of your game as possible. If you cannot think of anything else, a good idea is to borrow some aspect of a game and modify it. If you absolutely must include copyrighted aspects of games such as plot, characters or music, acknowledge the original creator(s). Concepts (gameplay, how you write your code, etcetera) cannot be copyrighted, though characters’ names and narrative universes are by default.
    • Make sure to respect the license of the tools you use. A lot of proprietary software (such as Unity) forbids commercial usage (that is, you cannot sell a game made with it) without paying up for an expensive license. This is where open source software can really help as it allows commercial usage. Be careful with ‘copyleft’ open source software though. The GNU General Public License is an example of such a license. It stipulates that you must release your software under the same license. This is okay for games and you can still sell them if you keep the art assets and such things to yourself. However, you may have legal issues if you use any closed source software library such as FMOD. Additionally – especially if you are a good programmer, you have access to the source code and are now working with a black box all the time and can debug and add features as you see fit. You can find out more about open source (called ‘free software’ by the founder of the movement – free as in freedom, not price) here.





Like it? Share it!