Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

8. October 2016

 

Welcome to the next chapter in the on-going Closer Look At game engine series.  The Closer Look series is aimed at informing you quickly if a given game engine is a good fit for you or not.  It’s a combination of overview, review and getting started tutorial that should give you a quick idea of a game engines strengths and weaknesses.  Today we are looking at Clickteam Fusion, a codeless game engine that has been around in one form or another for over 20 years.  I have to admit up front, this guide isn’t as in-depth as previous entries as I am rushing a bit to get it out to you.  This is because as ofctf25 publish date (Oct 6/2016) Clickteam Fusion 2.5 is heavily discounted in the Humble Bundle.

 

As always, there is an HD video version of this guide available here.

 

About Quickteam Fusion

 

Quickteam Fusion is a 2D cross platform game engine that takes a codeless approach in a similar vein as Construct2 or Stencyl.  First released as Klik and Play in 1995, it was later rebranded The Games Factory, then Multimedia Fusion then finally Clickteam Fusion.  Clickteam tools run on Windows, and via various add-ons and modules is capable of targeting Windows, iOS, Android, Flash, HTML5 and Mac OS.  Note that several of these modules have an additional price tag from the base package.  In terms of pricing, here is the current ( 10/6/2016 ) from Steam.

image

 

Please note however that those prices are in Canadian dollars.  Also Clickteam is frequently discounted up to 75% or more, so do not ever pay the full price.  The free version is mostly full functioning minus extensibility and the ability to generate a game that runs outside of Clickteam itself, along with a few in game resource limitations.  The Developer Upgrade removes the requirement to display that the game was authored in Clickstream ( via Splash screen, credits, etc ) as well as adding some more controls inside the engine, most of which aren’t game related.

 

There are some fairly successful games that have been authored using Clickteam Fusion, the most famous of which is the Five Nights at Freddy’s series.  Other games include The Escapists, Freedom Planet and a few dozen more games available on Steam, Google Play or the iOS App Store.  So this is a production ready game engine, although only suited for 2D games.

 

Inside Clickstream Fusion

 

The strength of Clickteam is certainly the tooling it comes with.  All work in Clickstream Studio is done in the editor:

image

 

One of the biggest faults against Clickstream has got to be it’s aging UI.  While not particularly attractive, it is for the most part effective.  On the left hand side you’ve got the Workspace Toolbar, which can be thought of as your scene graph.  “Scenes” in Clickstream are somewhat confusingly referred to as Frames.  You game is made up on one or more frames, and when you select a frame you see the level editor shown on the right.  This is used for placing and interacting the various items that compose your scene frame.  On the bottom left you see the Properties panel, this changes based on what object is currently selected.  Also shown here is the editor for Active objects.  Actives are very important to CTF as we will see shortly.  There are also windows for controlling layers, for selecting built in assets, etc.  Windows can be undocked, pinned and move about the interface easily.

 

CT1

 

The primary editing service can be used to easily create levels or maps via simple drag and drop.

CT2

 

You can also insert new items into the frame:

image

 

Then choose from the dozens of built-in object types available:

ctf3

 

Perhaps 90% of the time, what you are going to use is an Active object, which is essentially Clickteam’s version of Entity or Sprite.

image

 

Double click the newly created Active and you get the active editor:

image

 

This tool combines several different tools into one.  There is a full paint package in here with fairly advanced tooling.  There are tools for doing common tasks like setting the Active’s pivot point and direction of facing, and there are tools here for defining and previewing animations.

 

In addition to the built in objects, there are several other extensions that can be added using the Extensions manager:

image

 

Additionally Clickteam offer a store for additional extensions that are both freely available and for sale:

image

 

Confusingly there is no direct integration between the store and Clickteam.  Therefore you have to download and manually install extensions and assets purchased this way.  The Store’s contents are mostly free and also showcase games created using Clickteam, tutorials, game code and more.

 

“Coding” in Clickteam

At this point you should have a pretty good idea how you compose the assets of your game to create levels… how do you actually add some logic to it?  That is done using these four tools:

image

Left to right they are the Story Board editor, Frame Editor, Event Editor and Event List Editor.

 

Story Board Editor

image

This one is pretty simple.  It’s just a top level overview of the Frames that make up your game.  Remember your game is ultimately composed of multiple frames, like so:

image

 

Frame Editor

image

The Frame Editor is simple the level editor we’ve already taken a look at.

 

Event Editor

image

 

This is where the “coding” happens.  Essentially its a top down flow chart/graph of events that happen in your game and what those events happen to.  Here for example is the “code” to select a Flying Saucer Active in the game “Saucer Squad”:

image

On the left hand side are the events (38 and 39, 36 is a group heading and 37 is simply a comment).  That first event triggers when the user left clicks on the Saucer object.  The right handle side of the screen shows the action that occurs when that happens.

image

 

So for the event on Line 38, then the user clicks the left mouse button on Active type Saucer, it plays the sound sample Button_1, among other actions.  It’s essentially these events and actions you use to create your game.  Let’s create a very simple example… lets create an action that simple plays a sound effect when the frame (scene) is created.

First select Insert->Condition

image

 

This will bring up the conditions dialog:

image

 

In this case I clicked the Storyboard Controls (the chessboard/horse icon), then chose Start of Frame.  The creates a new action that will fire when the frame is started.  Now to the right hand side, select the space below the Speaker icon, like so:

image

 

Right click and all of the available options will be displayed:

image

 

Next the appropriate editor will be shown

image

 

Event List Editor

This editor performs the same functionality as the Event Editor, but instead of in a somewhat unwieldy grid view, it represents the events in a much more readable list form:

image

 

One last editor of note is the expression editor, for creating much more advanced logical conditions:

image

 

Individual entities within the frame can also have their own events, set in the properties panel of the selected item:

image

Clicking edit will bring you back to the exact same interface we just discussed.  Also in the properties panel you can define variables:

image

 

These values can then be interacted with in other event controllers.

 

Community and Documentation

Documentation in Clickteam is decent.  Built in there is an integrated CHM based help system, as well as 4 multipart tutorial games to get started.  There are also a wealth of tutorials available to download (mostly free) on the Clickteam store.  There are also a fair number of Clickteam tutorials on YouTube, although many of them are quite awful.  There is an active forum as well as a wiki.  All told, for every problem I faced, I found a solution quickly enough online.

 

Summary

So what ultimately do I think of Clickteam Fusion?  For the most part it is what it’s advertised to be, a code free 2D game creation kit able to target multiple platform.  There is of course a learning curve, but it’s a relatively short one.  As a code focused programmer, I don’t find the coding process extremely productive, but I can see how it would be so for a more visual oriented person and especially for a non-coder.  Clickteam tools are certainly getting a bit long in the tooth, a lot of the legacy cruft is showing it’s age and the UI could certainly use an update.  My biggest hesitation is wondering how well this development system would scale with system complexity.  If you’re game isn’t easily broken into scenes or is sprawling in complexity, I can see Clickteam becoming incredibly cumbersome.  That said, I think this is a successful all in one development tool that can take you a very far way in a very short period of time even with minimal to no development skill.

 

The Video

Programming, Design , ,

3. October 2016

 

Welcome to the next part in our ongoing Defold Game Engine tutorial series.  In this tutorial we are looking at working with the integrated Box2D physics engine built into the Defold engine.

 

As always there is an HD video version of this tutorial available here or embedded below.

 

The Defold engine makes it extremely easy to work with physics but is rather minimal in it’s implementation.  Let’s jump right in.

 

Creating a Collision Object

 

The heard of implementing physics in Defold is the Collision component.  This is composed of two part, the Collision Component that describes the physical attributes of a game object, and the Physics shape, which defines it’s dimensions.  I start off by creating this simple Gameobject, the image used in the sprite is 128x128 pixels:

image

 

Now we simple add a new physics component to the game object.  Right click the Game Object in the Outline, select Add Component, then select Collision Object:

image

 

Here are the default properties of a Collision Object:

image

 

Type is important and we will cover that shortly.  Mass is the weight of the object relative to dimensions, friction is how one surface reacts to another ( think traction ), restitution is the “bouncy-ness” of an object, linear damping and angular damping determine how motion of the object degrades over time, locked rotation determines if the physics simulation will rotate the attached game object or not.  Group and Mask are used to determine which collision objects interact with other collision objects.  Objects in the same group will collide, while objects not in the same group, or if that particular group isn’t added to the Group value ( comma separated ) will not interact.  So think of Group as the physics identity or type(s) this object belongs to, while Mask is the groups that object will interact with.

 

Next we need to define the shape of our physics object.  Simply right click the Collision Object and select Add Shape:

image

Next pick Box:

image

 

In the properties, set the Width and Height to match the size of our source image.  Depth is the value along the z-axis and can be left at the default value in most cases.

image

 

Now that we have our Collision object define, simply create a couple instances of our game object in the scene and the results are immediately demonstrated.

GIF

 

You probably didn’t want the boxes just dropping out of the world now do you?  So we need to create a physics body for the “floor”.  We can easily do this by creating a new Game Object in main and adding a physics body to it.  Like so:

image

image

 

The problem here is, our newly created floor will be effected by gravity, just like every other object in the scene!  This is where the Type of the Collision Object becomes important:

image

 

So far we have only used the default, Dynamic.  A dynamic object is a fully simulated physics object.  It will take part in the simulation, will be part of the simulation and will be affected by the simulation.  Static is what we want in this situation.  A static object will be part of the simulation, but will not be effected by it.  This is your proverbial unmovable force!  So other objects in the simulation will be able to hit the collision object and they will be affected by the collision, but the static object will not be changed in any way.  Kinematic objects are special objects that are generally moved directly by the character or code but also take part in the physics simulation and will be affected by it ( think that players sprite for example ).  Triggers on the other hand are simply shapes in the world that can detect a collision and can be hit, but wont have any affect on anything in the world.  They are often used to detect movement, for example the goal area in an air hockey game.

 

Now with our floor object set to static, our updated results!

gif2

 

So, how exactly do we control global physics properties, such as gravity?  These settings are available in the .project file:

image

 

Physics and Code

Now that we know how to set up a physics simulation, let’s look at how to deal with it in code.  For we are going to look at how you respond to a collision in code.  As you might be able to guess, messages are used.  Let’s look at a simple program that responds when a collision occurs.  Attach a script to your box object and add the following code:

 

function on_message(self, message_id, message, sender)
    if message_id == hash("contact_point_response") then
    	msg.post("@render:","draw_line", { 
    		start_point = vmath.vector3(message.position.x -40, message.position.y - 
    		40, 0),
    		end_point = vmath.vector3(message.position.x +40, message.position.y + 40, 
    		0), 
    		color = vmath.vector4(1,0,0,1) })
    	msg.post("@render:","draw_line", { 
    		start_point = vmath.vector3(message.position.x -40, message.position.y + 
    		40, 0),
    		end_point = vmath.vector3(message.position.x +40, message.position.y - 40, 
    		0), 
    		color = vmath.vector4(1,0,0,1) })	
    end
end

This code simply listens for the contact_point_response message which is sent when a collision occurs with the attached game object.  When such a collision occurs, this code draws an X centered about the collision point by sending the draw_line message to the render subsystem.

There is a great deal of information about the collision passed along in the message parameter:

image

As you can see, information on what object was collided with, how fast, groups, velocity, mass etc are all available in the contact_point_response message.

 

On final topic to cover is occasionally you are going to want to be able to apply force directly to a physics object using code.  This is also easily accomplished using the following code:

    	msg.post("#collisionobject", "apply_force", { 
    		force = vmath.vector3(0,5000,0),
    		position = go.get_world_position()})

Again using Defold’s messaging system, we send the apply_force message to our Collision Object component.  This applies 5000 newton of force along the Y axis.  Added inside our collision handler, it makes for some interesting results!

gif3

 

The Video

Programming ,

23. September 2016

 

Welcome back to our ongoing Godot tutorial series.  You may notice a pretty major change in the way Godot looks from previous tutorials.  This is because this tutorial jumps forward to Godot 2.1 which has an updated look and feel.  Don’t worry, the process is virtually identical regardless to which version of Godot you were running.  Today we are going to look at implementing 2D lights in your Godot game.  This will involve creating Godot light nodes, as well as occluders to prevent light.  We will also look at light masking, which is useful for implementing fog of war type effects. 

 

As always there is a video version of this tutorial available here.

 

First let’s set up a simple scene we can test our lighting on.  I simple create the following hierarchy using the default Godot icon sprite.

image

 

Then scale it up like so:

image

 

Now let’s add a Light2D as a Child to our Root node:

image

 

Notice the exclamation mark?

image

 

This is because we need to specify a texture to use as the light source.  I created the following image in Paint.net (process is shown in the video if you want to see how it was made):

LightMask

 

Notice that this image is a grayscale PNG file with an alpha channel.  Where there are no pixels at all, there will be no light shown.  Where it is whitest, the light will be most intense, while the darker it gets the less intense the light.  Save this image or create your own and add it to your project.  Now we set it as the texture source for our light.

image

 

Now if you move your Light2D node around the scene, you will see how it interacts with other objects in the scene:

GIF

 

There are a number of properties you can set for the light, such as the Energy (intensity) Color (tint) and Scale (size):

image

 

Notice also Mode.  We will come back to that in a minute.  Now sometimes you aren’t going to want all lights affecting all objects in the scene.  Thankfully there is a setting for that.  Notice in the range category there is a setting called Item Mask:

image

 

This controls what layer of items this light will interact with (there is also a setting for shadows as well).  Now if you switch over to your Sprite, under canvas item you will notice a Light Mask setting:

image

 

So long as the light and CanvasItem use the same masking channel, the light will apply to that node.  If they don’t use the same channel, the light will have no effect.  This can lower processing costs and enables you to exempt parts of your seen from being lit if so desired.

 

Now sometimes you want to have light actively blocked in your scene.  For example you might have a wall that should cast a shadow.  This is easy to implement in Godot using Occuluders.  This is simply a polygon area where the proverbial light don’t shine.  Let’s set one up around the nose of our Godot sprite.  Add a LightOccluder2D to your Sprite.

image

 

Your scene hierarchy should now look like:

image

 

With the LightOcculder2D node selected in the Scene the following icon should be available in the 2D view:

image

 

Click the pencil.  Now we want to draw our occlusion polygon, like so:

Gif2

 

Now notice the way the light interacts with the scene...

gif4

 

Now remember earlier on the Mode value of our Light2D node?

image

 

Now we are going to switch it over to “Mask” and show a powerful capability.  This can be used to create localized lights or to implement fog of war effects.  Just like before we need a texture to represent our light source, but this time we want the pixel values reversed, so I created the following image:

LightMask2

 

In this case the black area will receive no light, while the whitest area will contain the most light.  Here is the end result:

gif5

 

By scaling the light out to the full size of the screen, you can easily attach such a light to the character sprite to easily implement a fog of war type approach.

 

The Video

Programming ,

12. September 2016

 

Welcome to the next part in our ongoing Defold Game Engine tutorial series.  Today’s tutorial is going to show an area where the Defold engine really shines, creating 2D tile based levels.  This way of creating levels is to paint levels in a data structure called a tilemap, which itself is a collection of tiles.  A tile is simply a portion of an image that can be drawn over and over, much like you could use Lego blocks to create a castle.

 

As always there is an HD video version of this tutorial available here.

 

For this tutorial we need a tileset to work with.  This is simply an image composed of tiles, in this case with no spaces or padding between them.  I personally am using the tiles from opengameart.org in the Free Platformer Game tileset.  I have taken these individual tiles and merged them together into a single image you can download below.  (Be sure to click the image to get the full sized version.  In this example size does matter! ).

 

tilesThis is a 1024x512 pixel image composed of 64x64 pixel tiles.  Of course you can use whatever image you want, just be aware that if there is padding or different sized tiles your version is going to be different.

 

As always I assume you have gone through the prior tutorials in the series.  Alright, now that we are set up, let’s get going.

 

Creating a Tile Source

 

First things first, we need to create a directory for our level, tiles, images, etc.  I simply created a folder called level.  Inside this folder I created a directory called images and dragged the image above into that folder, like so:

image

 

Now we need to create a tile source.  You can think of this as the palette or selection of tiles we are going to paint with.  Don’t worry, it’s exceedingly easy.  Simply right click level, select New->Tile Source File

image

 

Called it tiles.tilesource like so:

image

 

Now in Outline make sure Tile Source is selected:

image

 

Now in the Properties panel, select the image file we added earlier for the Image property, then set Tile Height and Tile Width to 64.  Obviously if you used a different image you may have different settings here.

image

 

Now in your viewport you should see your tiles, with the grid drawn nicely around them like so:

image

 

All done creating our tilesource.  Make not of the collision property... we will come back for that in the next tutorial.  Make sure you save.

 

Creating a Tile Map

Now it’s time to actually create our tile map.  Once again right click the level folder and select New->Tile Map File.  Name this one map.tilemap:

image

 

Now in Outline make sure Grid is selected:

image

 

Now in the properties, pick out tilesource:

image

 

Now select layer1 in the outline window and we can begin painting!

 

In the viewport use the spacebar to bring up the tile source, then left click to select the active tile.  Now hit space again to hide the tile source and paint using the left mouse button.  You can also use the right mouse button to select multiple painted tiles to easily clone and reproduce compound tiles.

GIF2

 

If you need to paint tiles on top of other tiles, simply create another layer, right click Layers and select add:

image

 

The z order determines the draw order of tile layers:

image

 

Right click an empty space then left click to delete a tile if required.  Save before continuing on!

 

Using a Tile Map

Finally it’s time to put our newly created tilemap to use.  This is also simple.  Open your main.collection in the editor then add a new game object just like we did in the past.  Right click the game object and select Add Component From File:

image

 

Select your .tilemap file, and voila:

image

 

The Video

Design, Programming ,

9. September 2016

 

Never in the history of game development have indie developers, or developers in general, had access to such a massive array of resources.  What is perhaps most impressive is that so many of these tools are available at no cost.  That is exactly what this guide is going to look at, and end to end look at freely available tools for all facets of game development. 

There is also a video version of this guide available here.

This guide is not meant to be comprehensive, I don’t want to flood the reader with too much choice.  I do however want to make sure I capture the “greatest hits”, so If I miss a package that you believe should have been included, please let me know!

 

The Definition of Free

First off, this point needs to be addressed right up front.  To use a popular open source expression, I am talking free as in beer, not free as in freedom.  This means that non-open source tools are going to be included, although when source is available I well mention.  The primary criteria is that the developer can get started and develop using the tool completely free.  There might however be a cost after a certain revenue threshold is met (I find this to be an exceedingly fair business model personally) or there might be multiple tiers available, so long as it includes a free tier that enables you to ship and sell your title, it will be eligible for this guide.  It will also include software and tools that have a premium version available, just know that I am referring to the free tier in this guide.

 


Art

In this section we will look at the essential tools for creating game development art, both 2D and 3D.

 

2D

There are a wide variety of 2D imaging applications available, some specialized for developing and animating 2D game sprites, while others are more general purpose image manipulation applications or painter focused.

 

Paint.Net – Windows

An excellent, easy to use general purpose Painting application with hundreds of plugins available, layer support and more.  Frankly this is my goto application for simple image manipulation tasks.  Featured Paint.NET in the GameDev Toolbox series if you want to learn more.  Sadly it is Windows only software.

 

GIMP – Various – Open Source

Pretty much the closest thing to an open source alternative to Photoshop.  It’s a powerful application with an unwieldy UI.  Thankfully they have been focusing heavily on making UI improvements.

 

Inkscape – Various – Open Source

Inkscape is different from other applications on this list as it’s Vector based (instead of bitmap/raster based).  It takes an approach similar to Adobe Illustrator or Flash and is very useful for creating resolution independent graphics.

 

Krita – Linux/Mac/Windows – Open Source

Krita is an open source application that is focused on digital painting, similar to commercial products like Corel Painter.  In recent releases however it has been extended to add animation and text support, making it more and more useful for game development.

 

ASESprite – Windows/Mac/Ubuntu

This is app is dedicated to creating and animating 8/16bit style sprites.  Supporting painting, layers, onion skinning, fixed color pallet, sprite sheet generation and more.

 

GratfX2 – Various – Open Source

Once upon a time there was a program called Deluxe Paint and it was responsible for art creation for 99% of games developed.  GrafX2 is an open source implementation of that application.

 

Piskel – Mac/Linux/Windows/Web – Open Source

Piskel is another pixel art oriented image editor, although this one is somewhat unique in being usable in the browser, with offline versions available for download.  Supports layers, palletes, animation frames and more.

 

JPixel – Various

Not technically free, it’s a name your own price application, however that price can be $0.  It’s a pixel art application with support for animations, tilesets, color palettes and more.

 

GraphicsGale – Windows

The free version of this application is mostly just limited in what file formats it supports for export.  Sadly it is Windows only.  Offers pretty much every feature you would expect from a pixel graphics oriented application.

 

ShoeBox – Adobe Air

ShoeBox is an image/sprite/texture manipulation tool.  Useful for creating textures from existing images, extracting an animation into a sequence of sprites, creating 9patch images and more.  This is a utility and not a graphics creation package like many in this list.  It requires the Adobe Air runtime to run.

 

TexturePacker – Mac/Windows

TexturePacker by Code and Web is a utility designed to create sprite sheets.  Like ShoeBox above it is not an image creation or modification application.  There is a free version but limits some advanced features.

 

DragonBones – Windows/Mac

Unique in this list, DragonBones is a 2D animation system that enables you to use bone based IK animation to control and animate 2D images.  It’s similar in function to Creature, Spriter and Spine but is completely free.  It comes with runtimes for playing your animations in various game engines.

 

OpenToonz – Windows/Mac

An open source implementation of Toonz, originally developed by Studio Ghibli and used to help make Princess Mononoke, is completely free to use.  Aimed primarily at film animations, Toonz has been used to create animation for games in the past.  Not an easy tool to master.

 

TileCraft – Windows/Mac/Linux – Open Source

TileCraft is a unique little tool for creating 2D sprites using a 3D workflow.  Essentially you add and subtract solid 3D shapes to create more complex 2D images.  It’s an interesting approach and is open source, but sadly hasn’t been updated in over a year.

 

3D

 

Blender – Most Platforms – Open Source

Blender is certainly the biggest 3D package available for free, it’s also open source and remarkably full featured.  Model, sculpt, animate, physics simulation, render and composite all using a single program.  There is a ton of power here, but also a huge learning curve.  Thankfully, I’ve got you covered with a pair of tutorial series.

 

Daz Studio – Windows/Mac

Daz Studio is a 3D package, focused heavily on characters.  It’s incredibly easy to use, is available for free, while they make money selling 3D models, outfits, etc.  It is similar in scope and functionality to another application called Poser, which is not available in a free form.  A warning however, they will spam the email address you register with.

 

Dilay – Windows/Linux – Open Source

Dilay is a free open source 3D sculpting tool in the same vein as Mudbox, Sculptris and ZBrush.  I featured Dilay in this video if you wish to learn more.

 

MagickaVoxel – Windows/Mac

MagickaVoxel is a free to use Voxel editor.  Voxels are an alternative to traditional polygon approach to models, essentially composing objects out of blocks in 3D space. Minecraft is the most famous Voxel based game, but there are plenty of other examples preceding Minecraft.

 

Mixamo/Mixamo Fuse – Windows

Mixamo is a gigantic animation data base, and set of tools for applying animations to 3D models.  Mixamo FUSE is a 3D character creator, using a video game like interface for making 3D character models.  It was purchased by Adobe and currently is available for completely free.  I reviewed Fuse before the Adobe acquisition if you want an idea of what you are getting.  This is perhaps the simplest way to create 3D character models and is certainly the easiest way to animate them.

 

PolyBrush – Windows

PolyBrush is a one of a kind 3D sketching app, enabling you to create complex organic 3D shapes using a sketching workflow.  There is a free version available with some limitations ( single layer, max 8 undo levels, cannot save brushes ) but it is perfectly functional.  I featured Polybrush in this video should you wish to learn more.

 

Sculptris – Windows/Mac

A free 3D sculpting tool from Pixologic, the makers of ZBrush.  It’s not actively developed anymore, but is a great introduction to sculpting and the results can be exported for use in other software such as Blender.  For more details you can watch our Scultpris feature in the GameDev Toolbox series.

 

Wings 3D – Most Platforms – Open Source

Wings is an excellent 3D modeling application built around the Winged Edge polygon.  It enables fast and fairly easy 3D model creation.  Development however appears to have stopped sadly.  In recent years the 3d modeling tools in Blender have also improved greatly, making Wings less and less valuable.

 


Audio

By far my weakest area of knowledge, the following are applications freely available and used to create and edit audio from sound effects to background music.

 

Audacity – Windows/Mac/Linux – Open Source

Audacity is the swiss army knife for recording, translating and modifying audio files.  Simply put you should stop everything and download this tool if you haven’t done so already.  Audacity was featured in the GameDev Toolbox series if you want more information.

 

SunVox – Various

SunVox is a class of program called a ModTracker and can be used to create music.  The interface is simply daunting, but the effects can be pretty amazing.  Runs on just about every platform created by man and possibly aliens.  Was featured in the GameDev Toolbox series as well.

 

ChipTone – Web

ChipTone is like a streamlined version of SunVox that runs in your browser.  Comes with several game focused samples and the ability to record your own.

 

Bfxr.net – Web

A web based sound fx generator.  Very easy to use, start with several default sounds ( explosion, laser, etc. ) then modify the generator to create exactly the effect you need, then download locally.  Dead simple.

 

FMod – Windows/Mac

FMod is perhaps the most used game middleware for AAA and A game titles.  While it’s commercial software, it’s free to use if make less than $100K USD a year. They also offer FMod.io that gives access to a gigantic library of sound effects for 99cents each.  There is a first look video of FMOD.io available here.

 

Podium Free – Windows

Podium is a surprisingly full featured free version of Podium.  Podium is a digital audio workstation (DAW) that enables you to create, record and edit audio and MIDI as well as hosting VST instruments and effect plugins.

 


 

Code

 

This is where the various programming languages and development tools are listed.  Just a few years ago many of these products cost many hundred or thousands of dollars.  These days most programming tools are made available for basically free.  This features only the languages and tools most commonly used in game development.  There are dozens of programming languages and literally hundreds of tools, so a line in the sand must be made.

 

Please note, you often don’t require a programming language at all, at least not a stand alone one.  It’s increasingly common for many game engines to include the entire tool-chain for you, basically hiding this layer from you.  Additionally, some may find using an IDE as way too heavy.  Don’t worry however, you can also work entirely from the command line or terminal and use a lighter weight code editor should you prefer.

 

Languages and IDEs

 

Visual Studio Community – Windows

Visual Studio Community is perhaps the most used IDE (Integrated Developer Environment) in the world of both Windows development and game development in general.  It includes several programming language, but C++, JavaScript and C# are the most commonly used for game development (VB.Net, F# and TypeScript are also supported).  It also contains editors, debuggers, source control and much more.  In fact it contains so much more it’s actually rather bloated at this point, resulting in an install size north of 10GB.  Visual Studio Community is a revenue/team size limited version of the full Visual Studio package.  It’s essentially the same product and for individuals there is no limitation, for organizations there is a team size limit of 5 developers and $1M USD in revenue.  For Enterprise organizations, usage is not permitted.  You can read the full license details here.

One recent change with Visual Studio is Microsoft recently acquired Xamarin, and made it’s suite of products available free as part of Visual Studio Community.  This now gives you the ability to target iOS and Android using Visual Studio and C#. 

 

XCode – MacOS

XCode is the Apple equivalent of Visual Studio and is a requirement to sign and package iOS applications.  It can be used to develop for the various Apple platforms ( OS X, iOS, AppleTV, etc. ) with the primarily languages being Objective C and now Swift.  C++ is also fully supported, but is treated like a bit of a red headed stepchild for some unfathomable reason.  Like Visual Studio it contains a full set of development tools including code editors, an integrated debugger, forms designers and more.  XCode used to require a developer subscription with Apple but this requirement and fee has now been removed.  On a personal note, I’d rather use my forehead as a hammer than use XCode, but that’s just me.

 

GNU Tool Chain – Various – Open Source

GCC, or the GNU compiler collection, is a set of open source developer tools including support for just about every single language you’ve ever dreamed of using.  If you are developing on Linux, chances are you already have much of the GNU toolchain installed.  One caveat of the GNU suite is the GPL or Gnu Public License.  This open source license greatly restricts what you can do with the software, basically requiring you to make all changes and modifications to the code open and available.  Don’t worry, this restriction only applies to changes to tools themselves, not code you compile using them.  As mentioned earlier, GCC is generally included with any Linux distribution.  There are also ports to various platforms such as MingW for Windows or MacPorts on Windows.  Keep in mind GCC is NOT an ide, it’s the underlying compiler/linker/debugger.  Generally some form of editor is required as well.

 

LLVM(Clang) – Various – Open Source

LLVM, which isn’t actually an acronym no matter what other people tell you, is a suite of tools very similar to GCC.  It is instead released under the much more liberal BSD license and is the underyling technology behind a lot of commercial tools as a result, including XCode mentioned earlier, as well as closed development kits, such as the PlayStation 4.  An LLVM implementation is available as part of the MingW port, while it can also be used directly inside Visual Studio.  Like GCC, this is a lower level suite of tools and generally still requires an editor for code creation.

 

Qt Creator – Windows/Mac/Linux

Qt Creator is a full cross platform IDE primarily for C++ programming.  It’s has several tools designed to work with the Qt cross platform UI toolkit, but can be used as a standalone C++ development environment.  It includes a code editor, debugger, project management tools, UI designers, etc just like VS and XCode.

 

JetBrain’s Suite Of Products – Most Platforms

Instead of listing each product individually, it’s probably easier to mention the entire suite.  Most of the IDEs made by JetBrain offer a free version that is generally enough for most developers needs.  Perhaps their most known product is IntelliJ IDEA a Java IDE that has plugin support for dozens of programming languages.  They also have C#, C++, HTML/JavaScript, Python, etc. IDEs available as well.  

 

Eclipse – Most Platforms

Primarily a Java IDE, plugins have extended it’s functionality to support several other languages.  Full suite of tools and used to be the preferred development path for Android development (it is no longer).  Eclipse has everything and the kitchen sink.  Personally I’d rather code using morse code then use Eclipse again, but I figured I’d mention it for completeness.

 

Netbeans – Most Platforms

Oracle’s Java IDE, but can add support for other languages via plugins.  Again full featured, but certainly enterprise focused.  I’d prefer it to Eclipse, but then, I’d prefer just about anything to Eclipse.

 

Other Languages of Note:

 

Special Note for Android Developers

Android is a bit of a special case for development.  While based on Java, it’s not technically using Java (it’s a long story and got Google sued).  So long and short of it, there are special tools for Android development, specifically the Android SDK(Java) and the Android NDK(C++).  Google also make an IDE called Android Studio available, a port of the IntelliJ IDE, specifically for IDE development.

 

Editors

The following are code oriented text editors.  Don’t want the heavy install of a full IDE, are using a game engine that doesn’t include it’s own editor (or it’s built in editor sucks?), then you will probably want one of these.  Each of the following generally offer most of the following: multiple language support, plugin extensibility, syntax highlighting, refactoring tools and more.  Choosing the right editor is a deeply personal experience... Im not going to start any wars here... just list the options available... you pick your favorite.

And just so I don’t fend the old timers...

Just be aware of the learning curve, you will need to memorize about a hundred character combinations to become proficient with either of these editors.  That said, once you’ve got them down they can be exceedingly efficient.  It’s worth noting however the VI and Emacs keyboard bindings are often available in other editors.  A quick note here, Visual Studio Code and Visual Studio Community have NOTHING in common.  Code is a light weight cross platform editor, not a Windows only IDE.

 


 

Tools and Misc

Didn’t fit somewhere else but is available for free?  It goes here.

 

Tiled – Windows/Linux/Mac – Open Source

The preeminent free 2D map editing software package.  The map files Tiled generates are supported by just about every game engine available.  We have a full Tiled tutorial series available if you wish to learn more.

 

FreeMind – Various – Open Source

Freemind is an open source mind mapping package.  If you’ve never used one before, this is a great way to get ideas from your head to your computer.  There are actually a massive number of mind mapping packages available, FreeMind just happens to be the one I’m most familiar with.

 

ShaderToy – Web

GPU Shaders are becoming more and more critical to the world of game development and ShaderToy is perhaps the primary place to share and download shaders on the web.  You can also modify the shader source and see the results in real time.  Almost 12,000 shaders currently exist in the collection and growing daily.

 

FreeSound.org – Web

A huge collection of free audio files.

 

OpenGameArt.org – Web

A massive collection of free game graphics.

 

VST4Free.org – Web

A resource for VST instruments and effects.  VST stands for Virtual Studio Technology an enables you to encode samples of actual instruments, special sound effects etc. and use them in VST compatible instruments and software such as Podium mentioned earlier.

 


Game Engines

This is a section that could fill a few hundred pages and only just get started.  The reality is, almost every single game engine is available in a free form with differing business models.  Some such as Unreal Engine take a percentage of your revenue after certain thresholds are exceeded.  Others like Unity offer a free tier which has limitations, such as a maximum annual revenue, and require a subscription if you exceed those amounts.  There are also game engines like Godot, Urho, Atomic and Panda that are completely free and open source.  Then there are all the various frameworks such as SFML, LibGDX, SDL, Love, etc. many of which are open source and freely available.

 

This topic is well beyond this guide’s ability to cover.  Thankfully I’ve slowly been reviewing many of these engines and frameworks as part of the Closer Look series.

 


The Video

 

Design, Art, General, Programming , ,

Month List

Popular Comments