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 , ,

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 , ,

6. September 2016

 

There is an entire area of 3D modelling known as architectural visualization, or ArchViz for short, that have long been used by architects to help design buildings and help customers visualize the end result.  Many major CAD packages have archviz functionality built in, but Blender is not one of them, or at least wasn’t.  With the upcoming Blender 2.78 release, there is a plugin called Archimesh that brings much of this capability to Blender.  So… why should you care as a game developer?  As you will see shortly, this can also be used to help rapidly prototype 3D game levels as well.  So without further ado, let’s jump right in.

 

There is a video version of this tutorial available here and embedded below.

 

Getting Started

 

As of writing, the Archimesh plugin isn’t available in the normal Blender distribution.  If by the time you are reading this you are using Blender 2.78 or later you should be good to go.  If not, you will need to download the most recent test release available here.

 

Next you need to enable the plugin.  With Blender loaded select File->User Preferences or hit Ctrl Alt U.

Select the Add-Ons tab

image

 

In the search field type arc

image

 

Click the checkbox beside Add Mesh: Archimesh.

image

 

If you dont want to do this every time be sure to Save User Settings before closing the preferences window:

image

 

We are now ready to make use of Archimesh.  Feel free to close the settings window.

 

Designing A Room

 

Now that we have the plugin enabled, let’s get started.  First let’s get started by drawing some walls.  This is done easily enough using the grease pencil.  In the 3d view (I’m using top view), draw the room outline.  ( D + LMB + Draw ), like so:

image

 

Now in the Tools ( T hotkey ) menu, locate the Archimesh tab:

image

Scroll to the bottom of the tab and locate the Room from Draw button.

image

 

You’ve also got the option to have it generate a Ceiling, Floor and to close the room in ( close any gap in your drawing with a wall ) or not.  I selected Floor then clicked the button.  Here is the result:

image

 

Now in the properties (N) panel you can make tweaks to your generated room.

image

 

Here you can set the thickness of generated walls and you can also add or remove the floor and ceiling after the fact.   Here i’ve set the wall thickness to 0.120.  This is required so we can add doors and windows later.

image

 

You can modify each individual wall, including curving it, raising it to a peak, changing the length, etc.

image

 

And the results of these various settings:

wall

 

Creating your room is that simple.  Now we can refine our room.

 

Adding Detail

So rapidly creating walls and floors is certainly nice, but a little dull no?  Well don’t worry, that’s not the extent of Archimesh’s functionality.  If you take a look in the tools panel you will notice several other options.

image

 

Let’s go ahead and add a door.  Place the cursor where you want the door to be created.  This pivot point is relative to the bottom of the door, so place it low near the floor and along a wall, like so:

image

 

Now you can either add the door using the button in the Tool menu, or via the Shift + A hotkey, then Mesh->Archimesh->Door:

image

 

Tada, a door.

image

 

You will notice there are several options and styles to choose from in the Properties panel:

image

 

These settings appear to only be available on creation however, so be sure you have the door configured in a way you like before moving or modifying it.  Windows can be created using the exact same process.

image

 

Once you are done however there is one last step to perform.  You basically have to “Cut” the window and door from the room.  Don’t worry, it’s easy.  In the Tools panel, with the Room selected, select the Auto Holes button.

image

 

Now the appropriate holes will be cut into the wall.  You will also notice that the mesh hierarchy has changed as well:

image

 

And essentially that’s the process in a nutshell.  There are other very cool features in here, such as Stair creation:

StairGif

 

There is also the option to show detailed measurements, automatically create roofs, built in props like lamps and book shelves and more.

At the end of the way, it’s just creating mesh objects for you too, so you can quickly jump in adding details using traditional techniques like extruding.   There are some missing features.  Ways to link multiple rooms together easily, the ability to create interior walls automatically, but these are easily worked around. 

 

The Video

Art, Design

29. June 2016

 

Welcome to a new tutorial series here on GameFromScratch.com where we will be looking at core concepts of game programming.  This includes data structures, design patterns and algorithms commonly used in game development.  We start the series off with Finite State Machines.

 

There is an HD video version of this tutorial available here and embedded below.

 

What is a Finite State Machine?

 

A Finite State Machine (or FSM for short) is one of those concepts that sounds much scarier than it actually is.  In the simplest form it’s a datatype that can have only one value (state) from a finite selection of values(states).  The easiest way is to understand the finite state machine is to look at a real world example.

 

trafficLight

 

Yep, a traffic light is a perfect example of a FSM, or at least, the logic controlling it is.  Consider the three possible states this particular traffic light can be in.  At any given point (assuming I suppose the power is working...) the light will be one of three states, red, yellow or green.  It can never been more than one of those states at a time, it’s always red or yellow or green.  These are the two keep concepts of a finite state machine.  There are a finite number of states ( 3 in this case ) and only one is true or active at a time.

 

It’s a very simple concept, but extremely useful in game development.

 

What are FSMs Used For?

 

In game development, one of the most common uses for finite state machines is artificial intelligence.  Consider the example of PacMan’s ghosts.  A state machine can be used to control how they behave.  A ghost may have one of several different operating modes for example waiting to be released, hunting, hunted and dead.  The state machine is what is used to drive the ghost’s actions and to switch between states.  You will find AI examples absolutely loaded with state machines, often with some fuzzy logic controlling the transition between states to give a layer of unpredictability to your characters.

AI isn’t the only place of course, think of all the different things in a game that are related, there are multiple different states they can be in, but only one can be active at a time.  Game states are a very common example, where you break your game up into a series of states, for example Loading, Main Menu, Playing, High Score, Exiting.  Many game engines ( one such example is Phaser ) split your game up into a series of states.  The ultimate controller of these states is a finite state machine.  A sequential UI ( think of a sequence of dialogs controlled by next/back buttons ) can also be implemented using FSMs.  They are also commonly used to control elements in a games world.  Consider a game with a weather system, be it day or night cycles or season cycles like Spring, Summer, etc...  these would most likely be controlled via FSMs.

 

Implementing a Finite State Machine

 

The example we are going to use here is to implement a traffic light via FSM.  At it’s core the data is going to be stored in an enum, a natural fit for state machines, but stack based or array based options are also viable.  This example is not only going to switch the traffic lights periodically, it’s also going to implement callbacks so the world at large can interact with the light.  This example is implemented using C#, but should be easily adapted to most modern programming languages.

 

using System;

namespace GameFromScratchDemo
{

    public class TrafficLight{
        // This enum represents the three possible values our state machine can 
        be
        public enum States { Green, Yellow, Red };    
        // This is the amount of time for the timer to wait before changing 
        between states
        private const int LIGHT_DURATION = 5000;

        // An actual instance of our enum.
        private States _state;

        // The timer object that is going to be used to switch between states 
        private System.Threading.Timer _timer;

        // This function is called by the timer when it's time for a light to 
        change
        public void lightChanged(){
            System.Console.WriteLine("Light Changed");
            
            //  For each state, move to the next appropriate state.  I.e, red 
            becomes green, etc. 
            switch(_state){
                case States.Green:
                _state = States.Yellow;
                break;

                case States.Yellow:
                _state = States.Red;
                break;

                case States.Red:
                _state = States.Green;
                break;
            }

            // Reset our timer, so this will all happen again and again
            _timer.Change(LIGHT_DURATION,System.Threading.Timeout.Infinite);

            // Call our event.  This is used to communicate with the outside 
            world that our state change occured
            onStateChange(_state);
        }

        // In our constructor we simply set out default state (green) and 
        create/start our timer
        public TrafficLight() {
            _state = States.Green;
            System.Console.WriteLine("Light Created with initial Green state");

            _timer = new System.Threading.Timer( _ => lightChanged(), null, 
            LIGHT_DURATION,
                System.Threading.Timeout.Infinite);
        }

        // these two work together to provide the callback functionality
        // Implementing callback is going to differ greatly from langauge to 
        language
        public delegate void StateChangedResult(States newState);
        public event StateChangedResult onStateChange;
    }

    // Our actual program.  Simply create a traffic light instance
    // Register a callback that will simply print the current state returned 
    when the light state changes
    // And finally wait for the user to hit enter before ending the program
    public class Program
    {
        public static void Main(string[] args)
        {
            TrafficLight light = new TrafficLight();
            light.onStateChange += (TrafficLight.States state) => { Console.
            WriteLine(state); };
            Console.ReadLine();
        }
       
    }
}

The example is pretty well documented in the code above.  Essentially we are creating a class TrafficLight that can internally have one of three states Green, Yellow or Red.  It also implements a timer that switches between those states.  To make the code actually useful, it also implements a callback system so code external to the TrafficLight can interact with it as a black box.  The callback will be passed the current state value every time the light changes.

 

This is obviously a simple example of a state machine but the same basic premise remains regardless to complexity.  It is a very useful data structure for organizing code, especially the flow of logic.  Coupled with callbacks, it is also a great way of keeping systems decoupled as much as possible.

 

The Video

Programming, Design , ,

Month List

Popular Comments