The reasons of professional developers do not apply to you

Many would-be video game programmers are concerned with using the same tools, languages and methods as professional developers.  Unfortunately this can often be a mistake, especially for those not planning to enter the industry soon.  Professional development in AAA studios has very little — if anything — in common with hobbyist or independent development, and it is important to take this into consideration before deciding you should do things the same way the pros do.

Let’s take a look at some of the differences between professional and indie or hobbyist development, and how they can impact choices.

1.  Professional developers are often targeting consoles, limiting their choice of languages and libraries.

Video-game consoles such as the XBox and Wii often support only a single programming language and may not even support all of the normal features of that language.  They may also be lacking the extensive standard libraries we’re used to having available on PC.  It is often the case that C or C++ are chosen because they are the only options rather than an actual preference for those languages.

Indie or hobbyist developers are often targeting Windows PC and are free to choose any language they are comfortable with.  Alternatively they may be targeting mobile platforms where Objective-C or versions of Java might be more suitable choices.

2.  Professional developers often have access to large existing code-bases.

By reusing code that have already written, professional developers can save a lot of time and effort.  Over years of development they have accrued large collections of code for many different purposes.  This code already works, has been tested extensively, and the developers are very familiar with it.  By sticking with the language(s) this existing code is written in professionals gain measurable advantages.

The average beginner does not have an existing code-base to work with, and even if they gain access to existing code they will not be familiar with it.  They are therefore free to choose any language they are comfortable using for the task.

3.  Professional developers have years of experience.

Professional developers have already been using their language(s) of choice for years and are deeply familiar with it.  Unless there is a good reason to change, they will often be more productive using a language they already know.

A beginner — by definition — does not have prior experience.  They can choose any language they are comfortable with.

Why is C++ difficult?

Like any programming language C++ has both advantages and disadvantages, and for certain tasks it’s an excellent choice.  If you’ve spent much time in online programming communities you may have seen people recommending beginners choose another language, often citing the difficulty of C++ as a major reason.  But is C++ really harder than other languages?  Why do people think that?  Difficulty is of course somewhat subjective — what some people find difficult will be easy for others, and vice versa — but we’ll try to stay reasonably objective.

C++ is complicated

C++ is a complex language which assumes that the programmer is an expert who knows what they are doing.  This provides great freedom and flexibility when the assumption is true, but means that there are many potential mistakes to be made which are more easily avoided or simply impossible in other languages.  Making it worse, thanks to the dreaded “undefined behaviour” there are many situations where the code will appear to work correctly but may cause subtle problems elsewhere or fail at a later time.  The C++ language is filled with undefined behaviour, obscure details, and unusual corner cases, and even programmers who have been using the language for years can sometimes be confounded by the language.   Consider for example these C++ quizzes.

C++ can be tedious

Thanks to a design goal of “only paying for what [features] you use” C++ code written by an expert programmer can be very efficient.  The trade-off for this is that you have to do a lot of work that other languages might handle for you; in cases when you don’t need that extra efficiency — which is more often than many beginners tend to think — this is simply a lot of extra work for no real benefit.  Manual memory management is a tedious and repetitive task  where mistakes can easily be made unless care is taken, and unless you’re on a platform with limited hardware capabilities or are writing particularly performance critical code there’s often minimal or no noticeable benefit from doing so; it might make you feel better to be that little bit more efficient, but customers won’t even notice the difference.

Other problems

There are a lot of poor-quality or outdated resources teaching “c with classes” under the guise of C++.

C++ is a difficult language to parse and has a rather dated build process.  This means that tools often aren’t as good as those available for other languages.

Your choices are not forever

Many beginning programmers put a lot of time and thought into choosing a programming language and libraries.  They usually want a choice that can be cross platform.  They want a choice that can be used for free, or cheaply.  They want a choice that is used by professionals.  They don’t want to waste time learning a programming language or library they might not use later.  It’s good to put some thought into making an informed choice, but the majority of these concerns aren’t as important as most beginners think or in many cases don’t matter at all.

Experienced professional developers learn and use many languages during their career based on the requirements of different projects.  Programming languages are a tool, and like any good workman a programmer will need a complete set of tools for different tasks.  Libraries and languages have different strengths and weaknesses, and sometimes fall in and out of common usage.

The thing most beginners miss is that once they learn the fundamental skills of programming and get some experience it becomes relatively trivial to pick up new languages or libraries as required.   For a skilled professional it can be a matter of hours to pick up the basics of a new tool.  In only a week or two they can be considered proficient and write good quality code.  If you eventually become a professional programmer the choice will likely be out of your hands — you will use the languages and libraries you are told to use.  The experience you have gained will be a valuable step towards learning it though.  Don’t sweat your initial choices — they won’t matter in the long run.

More ways to make games without programming

This is a follow-up to another recent post “how to make games without programming” with another round of possibilities.

Be sure to try before you buy and choose a package you are comfortable with, and remember my advice from the previous article about keeping your goals and expectations reasonable.

Stencyl

Stencyl is similar to Construct 2 and Game Maker (covered in the first article) and also allows you to create 2d games without coding, although this time you have the option of scripting as well.  The features offered are very similar to Construct 2 — I’d suggest giving demos of both products a try to see which you prefer — but pricing for Stencyl is based on a yearly subscription of $79/year for Flash and desktop games or $149/year for iOS (with Android support apparently in-the-works).  The engine behind Stencyl has recently been re-written to use HaXe NME, and apparently now offers the ability to generate native applications for all supported platforms.

GameSalad Creator

Again in the same vein as Construct 2 and Game Maker, GameSalad Creator allows you to create 2d games without coding.  A basic version is available free of charge, and the professional licence is a yearly subscription currently priced at $299/year.  Again, I do not have any personal experience with the product, so I suggest doing your own investigation before parting with any money.

MultiMedia Fusion 2

MultiMedia Fusion 2.0 is yet another 2d game creator with a drag & drop interface with a range of options, and was used to create the game Saira (link to Steam store).  This is an older package, with an older-looking interface to match it’s age, but has also proven it’s capabilities and been maintained and enhanced over the years.  In addition to the range of target-platforms offered by most of the similar packages Multimedia Fusion can also export an XNA project for Windows Mobile and XBox 360.

Alice

Alice is a free educational product developed by Carnegie Mellon University to help teach beginners basic computer science concepts in a fun and interactive environment.  Alice allows users to create 3d animations or games by dragging and dropping graphical tiles to input programming logic.  There are also a wide range of educational materials to help learn both how to use Alice, and how the concepts used can be more generally applied to the task of computer programming.

XtremeWorlds

XtremeWorlds is a free offering that works very similarly to RPG Maker (listed in the previous article) but aims to create online role-playing games instead.  A great choice for anyone interested in making a 2d online RPG with a retro feel.

Adventure Game Studio

Adventure Game Studio allows users to create Sierra-style point-and-click adventure games, and is provided free of charge.  Games are created with simple drawing and drag&drop tools, with simple scripting used to provide some of the more advanced logic.  This is a mature product that has been around for over a decade, and has been used to create plenty of games.

DOS-based game creation systems

I suspect there will be fairly minimal interest in these, but to try to be reasonably complete I’ll include them all together for those who might be interested  This page lists a number of DOS based game maker products.  It’s unlikely (though I won’t be made a fool by saying it’s impossible!) that you’ll be able to make any commercial products with these offerings, but if you’re interested in making some truly old-school games or simply investigating how older software of this type functioned they might be worth a look.

Know more ways to create games without programming, or do you have experiences with any of these or the packages from the original article to share?  Let me know in the comments!

How to make games without programming

Many people will tell you it’s impossible to create a video game without programming.  Fortunately, if you find programming to be too difficult or intimidating, those people are wrong!  There are a growing number of software packages available that will allow to create a great game without programming or just some minimal (and often optional) scripting.  Some people might rush to point out that the solutions I’m going to suggest are technically still programming — and technically, that’s true — but by allowing you to express you game logic with drag-and-drop functionality or through simple menus rather than typing in code, you’ll likely find the task much less intimidating.

Before we get into the options, a quick note on the scope and scale of your games: this is a trade-off, and you don’t get something for nothing.  You can make very polished and fun games using these tools — and if you’re good enough you can even sell them and earn some money — but you won’t be making top-quality 3d masterpieces with hour upon hour of game play like professional AAA developers make.  Those games are created by large teams of developers who have years of experience, and have gigantic budgets.  If you have reasonable expectations you will probably be very happy with the games you can make using these tools.

Now that that’s out-of-the-way…

Construct 2

Construct 2 is a wonderful Windows-based editor that allows you to create 2d games using a simple editor and by expressing your logic using a visual “event” system.  The editor is designed to create HTML5-based games that run in the web-browser, but also features exporters for desktop executables, iOS phones and tablets and Android mobiles.  For some examples of what Construct can do, check out some of the games in the Scirra Arcade.  Construct 2 has a detailed user manual, a growing collection of detailed tutorials and sample applications, and a helpful and active community of users.  The free trial version features all of the editor functionality, and a personal licence is a once-off fee of US$120, giving you all future updates to the software.  A “business” licence is required only if you earn more than $5,000 revenue from your Construct creations, and is reasonably priced at only US$400.

Game Maker

Like Construct 2, Game Maker offers a visual editor for creating your game, but allows more advanced users to further customise their games using a simple scripting language called GML, or Game Maker Language.  This can be used as a starting point for those who hope to move on to programming at a later stage, but is also a very capable editor that can be used to produce high-quality games for Windows, Mac OS X, iOS, Android, and HTML5-capable web-browsers.   There are a number of different Game Maker versions available, with those most expensive priced at US$99 and a free trial available before deciding to purchase.

Legend of Fae is an example of a commercially successful Game Maker creation.

RPG Maker

RPG Maker is focused on creating traditional styled role-playing games.  A number of different versions are available ranging in price from US$30 to US$90.  Although this tool is more specialised and can not be used to create different types of games, it does a good job creating RPG games, and also includes collections of graphics and audio to get you started creating your games.  Award-winning indie game To the Moon is an example of a successful game created with RPG Maker.

Blender Game Engine

Blender is reasonably well-known as a free and open-sourced 3d modelling package, but they also provide a game engine which can be programmed either using Python, or visually by placing dragging and dropping “logic blocks”.  You can create 3d games with this engine, and it’s completely free (even for commercial use), but the community is still creating documentation and tutorials, so although the engine is reasonably easy to use it can be a bit intimidating for a beginner to get started.

FPS Creator

FPS Creator does one thing, and does a pretty good job of it for only US$50. This editor will allow you to produce good-looking 3d shooter games.  Basic scripting is available for more advanced customizations, but a standard shooter can be created using only the editor.  The creators of this package also provide bundled of pre-made content that can be purchased for very reasonable prices.

Realm Crafter

Real Crafter claims to allow you to create a MMORPG.  Personally, I think that claim is a bit grandiose — and your hopes will probably be shattered if you purchase the package intending to make the next “RuneScape” or “World of Warcraft” — but the package will allow you to create a 3d multi-player role-playing game you can play with — or against — your friends.  The editors provides numerous features to customise your game, and costs US$100.  Again, the creators also offer bundles of pre-made content for purchase.  You can get an idea of how Realm Crafter works from this user review on YouTube.

It’s true that you get more control by programming a game rather than simply using an editor — and you certainly need appropriate expectations to be happy with editors like the ones listed — but you can create a game without having to get your hands dirty with “real” programming, and it doesn’t have to be some crappy arcade game no one will want to play.

What next? Intermediate to advanced C++

The internet is filled with advice on getting started with C++, but many programmers find themselves lost once they’ve taken that first step.  How do you move from beginner-level topics to learning intermediate and advanced C++?  If you have already worked through a good book or online reference to learn the basics of C++ and aren’t sure what to do next then this article is for you!

Solidify your knowledge of the basics

You’ve covered the basics already, but there are probably still some gaps in your knowledge.

C++ Primer, 5th Edition is an excellent book for learning or use as a reference for modern C++, comprehensively covering the newly updated C++11 standard and focussing on best practices in order to write clean and efficient code.

You might also try Bruce Eckel’s freely available Thinking In C++.  Thinking In C++ has not been updated to cover the latest standard, it is a detailed reference covering the C++ language and standard library.

A read through Herb Sutter’s Elements of Modern C++ Style should make sure you’re up-to-speed with the basics of C++11 style code and idioms.

Learn more about C++

A good next step might be to learn more about C++ and best practices, and I highly recommend three great books by Scott Meyers:

Learn more about programming in general

Rather than teaching language-specifics, Code Complete: A Practical Handbook of Software Construction provides an in-depth look at best-practices for software development, featuring hundreds of invaluable tips and code samples to illustrate how and why certain techniques are beneficial.  Every programmer should read this book at some point in their career.

You might also enjoy The Pragmatic Programmer: From Journeyman to Master, which similarly offers insight into best practices based on the wisdom of experienced programmers.

Get more practice

All that reading is great — and hopefully you’ve been doing any included exercises along the way — but to really improve your programming you need practice!

Project Euler provides a series of challenging mathematical and programming related questions to test and challenge your abilities.

Code Kata also provides a series of exercises — some to be solved mentally, and some by writing code — to train and practice your problem solving abilities.

Embark on a project

Why are you learning programming?  Did you have some end-goal when you started?  If you feel that you’ve got a good grip on the basics and are making good progress starting to learn more advanced topics, then it’s probably time to start working on or towards that goal!  Write a piece of useful software, develop a game, or whatever it is you want to do with your programming.  You will almost certainly still make mistakes along the way, but it is only be proceeding to actually make those mistakes that you can learn, and perhaps one day become a programming guru.

20 ways to advertise your video game

Maybe you have a game close to release and you’re wondering how you’ll find players.  Maybe you’ve already released a great game and you don’t know why so few people are trying it out.  In either case, the answer is advertising!  You can have the best game in the world and not sell a single copy if people don’t know it exists.

This is a list of ideas you can try to get your game noticed.  Some are free, some are cheap and others can be very expensive.  Some are quick and easy, while others would take a lot of work.  Some are obvious and common-place, and others are a bit “out there” and may not be for everyone.  If you’re not sure how to advertise your video game at least one of these ideas will get you started so you can find more players and earn more money!

1.  Tell your friends and family

This one is good because it’s free, very easy, and is probably something you’ll already be doing.  Unfortunately, in the majority of cases it will also have limited effectiveness.  Tell all of your friends and family about your game, and make it easy for any who might be interested to try it out.

To get the most out of telling your friends and family about your game, remind them to rate your game and/or leave positive feedback to encourage views by others and improve your chances of ranking in app stores or other game lists.  You could also ask (but should not pressure) them to tell their own friends and family outside of your own social circle.

2.  Run a contest

People love the chance to get free stuff, so a competition can be a great way to raise awareness.  Be sure to check if there are any local laws that need to be followed or permits you might need to obtain.  You could give entries into a contest to those who purchase your game, you could give away copies of your game to build interest, or you could give away prizes to people who blog about, post videos about, or otherwise help to promote your game.

3.  Print bumper or windshield stickers

Print bumper stickers or stickers for the rear windshield of your car.  For best results clearly display your web-address on the stickers.  Again, don’t pressure them, but close friends and family might also be willing to apply your stickers to their cars.  The more people you can make aware of your game or web-address, the higher your chances that some of them will try it out and become fans.

If any of your games feature memorable characters you might even be able to create bumper stickers that would be popular with your existing fan-base.  See if a local university might be willing to include your stickers in the welcome bags that are often given to new students.

4.  Promotional bundles

Promotional bundles are great for customers, as they offer better value for money.  If you have several games you can make a bundle with just your own games, but it can often be better to team up with some other fellow developers and offer a bundle with one or more games each, allowing you to share your existing fan-base and still offering your players a better deal.

The “Humble Indie Bundle” — which offers collections of games from high-profile indie developers at a pay-what-you-want price — is probably the most well-known example of this, but bundles can also be successfully used by other developers, and don’t necessarily need to follow suit with the pay-what-you-want gimmick.

Have a read through this 5 For 5 Bundle Postmortem, where a developer details the process of his own successful promotional bundle, including a look at what does and does not seem to work well, as well as some tips for succeeding with your own bundles.

5.  Build a mailing list

Building a mailing list can help to advertise a newly released game or create awareness of your latest promotion.  This is something that you’ll do over the course of multiple game releases, but by presenting a mailing address opt-in to your users you can build a list fans who might be interested in your future releases.

To attract more sign-ups you might consider offering bonus levels or some other incentive to users who provide their email address.  You’ll need a privacy policy detailing how you plan to use the addresses, and should be sure to only use your address for legitimate purposes.

6.  In-game incentives

Offer bonus content (extra levels, an unlockable weapon, etc.) for helpful activities.  In Angry Birds I unlocked a couple of free bonus levels by “liking” the game’s Facebook page and rating the game in the Apple app store.  This is a simple but effective way of encouraging people to share your game on social media or reminding them to give a rating.  Remember that there are rules about encouraging or requiring a rating for most distribution channels — it’s normally ok to remind users to rate your game or to encourage them to give a fair evaluation, but you’ll quickly find yourself black-listed for pushing only good ratings or reviews — if your users choose to provide negative feedback you’ll just have to take it on-board and work towards improving your game.

7.  Purchase online advertising

Paying for the right online advertising can be very effective.  Consider services like Google AdWords, Facebook advertising – which are good because they allow you to be very specific about your target demographics – direct advertising deals with relevant websites — which are good because they are often a little cheaper and allow you to target a specific online community — or in-game advertising through networks such as MochiMedia or AdMob – which are good because they allow you to target people who are already playing games and are therefore obviously interested.

8.  Purchase offline advertising

Offline advertising is something that has traditionally been reserved for AAA games with massive advertising budgets but there’s no reason you can’t do the same thing, albeit most likely on a smaller scale.  The obvious ones include television or radio advertising, but you could also consider other offline advertising options such as cinema pre-show advertising, newspapers and magazines, billboards, bus-stop advertising and more.

Any large-scale advertising campaign will be very expensive, but more local options can sometimes be surprisingly affordable whilst still allowing you to reach a huge audience.

9.  Print flyers

Printed flyers could be distributed by various methods and help to draw attention to your new game.  Follow the rules that would normally apply to design of a poster or direct-mail advertising.  Consider including a discount offer on your flyers.  The following are some possible ways you could distribute flyers:

  • Hand-deliver them to mailboxes in your local area (be sure to check your local laws — commenter Jamin Grey points out this is illegal in some jurisdictions).
  • Pay for the postal service to deliver them for you (in Australia you would use the “Un-addressed Mail” service from Australia Post).
  • Hand them out outside of game-related events such as performances of the Eminence Orchestra, large LAN events, or expos like E3.
  • Universities often give new students a show-bag or welcome package.  You might find out if they would be willing to include your flyer.
  • or…

10.  Community or club notice boards

Many stores and shopping centres have a community notice board where the public are able to put flyers or business cards for others to see, often free of charge.  Universities, schools and sports or social clubs may also have such a notice board.  If you’ve already created flyers as suggested above you can simply put those up, otherwise create a simple but eye-catching poster and see if you can find some suitable notice boards.

This one will unfortunately not often result in a lot of exposure unless you can find a particularly relevant and popular notice-board, but it’s also very cheap, very easy, and doesn’t take long to do.  To try to increase your exposure, you could have willing friends or relatives take some notices to put up when travelling, or if you’re up for a more unusual approach you might ask a travelling circus if they’re willing to put up your notices when distributing their own posters in each new town in exchange for a small donation or slab of beer.

11.  Submit press releases

Not all organisations you submit to will publish your release — especially as a smaller developer — but if you submit press releases to relevant websites — and even print media — some of them might spread your message to their readership.  For best results, format your releases in a neat and professional style and ensure you meet any submission guidelines.

Remember that the audience of your press release is an editor or writer who will usually write their own piece based on the information provided; they will rarely publish your release as-is.  Provide all the information that might be required in a clear and concise way, and take the time to include or link to some images and video that could possibly be used in the piece.

12.  Get reviewed

Try to get as many reviews — preferably positive — of your game as possible.  This will increase your potential audience and may help to sway those who are initially unsure to try your game.  To increase your chances of being reviewed, make things easy on the reviewers by giving them all the materials they might need to write-up your game.  This should include a collection of pre-made screenshots showing key features of the game and one or more videos showing game play and key features.  Remember that you can attempt to be reviewed online as well as in magazines.

Reviewers also won’t usually want to pay for your game.  For best results give them a completely free copy rather than a limited version.  For games distributed via app stores you can usually offer (a limited number of) codes allowing a free download.  You can read a bit about indie company Mirthwerx’ experience with getting reviewed in their article “How we built an iOS game on PC 4/4: Testing, Release, Marketing“.

13.  Submit your game to as many portals or distributors as possible

By submitting to as many portals (for online and browser games) or distributors (for downloadable titles) as you can find, you increase the chances of any given player coming across your game.  You should obviously consider the situation more carefully in the cases of distributors that charge for listing your game, and might not want to do this if you are able to take advantage of an exclusivity deal with a single popular distributor.

14.  Have a give-away or discount offer

Like a promotional bundle, discounts offer better-than-normal value for customers, and a free give away is even more certain to attract some attention.  You could offer a limited time discount, offer discounts to specific groups of people, or give away one product for free to draw more attention to the rest of your catalogue or help to build a mailing list.

15.  Advertising on online forums

Find relevant forums where you can advertise your game.  Be sure to post only in the correct places, and check and follow any rules in each community.  You don’t want to develop a reputation as a spammer, and will likely not get much (if any) advantage from spamming.

You should also be up-front and honest in your advertising.  Don’t pretend to be someone you are not — a fan rather than the developer of the game for example — and try to respond promptly and courteously to any feedback or questions you receive.

Try to provide pictures or videos of your game as well as plenty of information about what system the game runs on, any minimum requirements, etc.  You might also try providing a special discount offer.

16.  T-shirts

Print T-shirts to help advertise your game.  You might simply create shirts featuring the address of your website for yourself and any willing friends or family, or could even take it to the level of creating shirts featuring characters or graphics from the game that fans might be interested in wearing.  T-shirts popular with fans could be distributed in free give-aways, or if the game is reasonably popular could even be sold (perhaps via a site such as CafePress) to raise additional money.

17.  Blogging

Blogging can help to build interest as well as potentially attracting a wider audience.  Good topics include unusual design features in your game, difficulties or unusual experiences during the development process, and milestones or significant achievements in your efforts.  You could also share unusual or potentially difficult techniques used in the game.

By blogging during development you can potentially attract a community of interested readers before release.

18.  Sponsor a club, organisation or event

Local sports clubs or other organisations may be able to help spread the word in exchange for a sponsorship deal.  You could make a monetary donation, or donate copies of your game to be used as prizes.  Find out if there is the possibility of having your logo and/or web address displayed on club uniforms, at sports grounds or on signs within a clubhouse.  You might also be able to get a mention in a club newsletter.

19.  Host a LAN

Hosting a LAN party — especially a larger one — can potentially be a difficult, time-consuming and expensive task.  It does however present the opportunity of getting live feedback from people who are actually playing your game, and could be an excellent way to find bugs and gain feedback before an official release as well as helping to build interest in your game.  This would be most effective for games featuring competitive multi-player options.

20.  Local or public television broadcasting

It’s usually cheap to air a commercial or sponsor a show on a local or public-access television network.  You’ll reach a smaller audience than through popular media, but might find the cost off-set makes it worth while.

Even better, find out if there are locally produced shows which discuss video games or even just local businesses and see if you can arrange to be interviewed about your upcoming or newly released title.  You might also offer a time-limited discount offer to viewers.

Your thoughts?

Hopefully you now have some good ideas to help advertise your game.  The above is not by any means an exhaustive list of ideas — and obviously you’ll need to pick and choose the ideas that seem suitable and match your available time and budget — but should provide a pretty solid starting point.

Have you tried any of the above ideas, or do you have ideas that aren’t listed here?  Share them in the comments!

Where to get audio for your video game

If you’re reading this you already know how to create video games.  You’ve chosen a suitable editor or programming language and you’ve started making some good progress.  Then you hit a stumbling block… you can’t create your own sound and music… how should you proceed?

Obviously you could learn to do it all yourself — and that would be a topic for a whole series of articles — but let’s assume you want to source good quality audio soon rather than having to spend months or years learning to make your own.  There are a few approaches:

  • Look for free audio
  • Purchase stock audio
  • Hire one or more people to create your audio
Let’s look at each of those in a little more detail:
Free Audio

A lot of people are tempted to look for free music or sound effects for their games — and if you’re just making games as a hobby it can be an appealing idea.  Unfortunately there are a number of problems with free audio:

  1. Legal issues.  It is often unclear whether or not free audio is legal to use, and what the terms of use might be.  Without clearly stated licensing terms and audio provided by a trusted source, you run the risk of being taken to court or receiving a cease & desist further into your project.
  2. Consistency.  Having to collect different sounds and music from a variety of sources to get everything you need, you can often end up with a collection of audio that doesn’t quite go together.  A few of the effects might be louder or quieter than others, the music is obviously of different styles, etc.
  3. Quality.  A lot of the stuff that is freely available was released by hobbyists and may not be top quality.  Music might not loop properly and can sometimes be distorted.  Sound effects might have unwanted noise on the recording, or cut a little too short.

The good thing about free audio is obviously the price; but with an increased investment of time required to track down exactly what you need it’s well worth asking yourself how much you value your time, and at least considering the option of paying to get exactly what you need without all the hassle.

If you do decide to go with free audio be sure to carefully check the licences or request licensing terms if none are provided, and don’t run the risk of using anything without a clear licence.  Keep a record of where all the audio came from in case you later find out the providers weren’t 100% honest.

You might try Freesound.org as a starting point to your search for free audio.

Stock Audio

Stock audio is music and sound effects that have already been recorded and can be purchased.  This audio is not specifically tailored to your project and you usually won’t have an exclusive licence to be the only one using it.  Thanks to the vast amount of audio available however you will usually be able to find something suitable for your needs.

The advantages of stock audio are:

  • Available to use immediately after purchase.  You don’t have to wait for it to be created.
  • You get to hear what you’re getting up-front.  Most providers offer water-marked or lower-quality samples.
  • Licensing terms are clear and — assuming you don’t do anything naughty! — there are no legal problems.
  • Stock audio can sometimes be cheaper than custom-made.

If you decide to purchase stock audio, remember as always to check that the licencing terms are appropriate for your intended usage; most stock audio sellers provide a simpler explanation of the legal terms of their licences, but if you’re still unsure it’s best to just ask.

You’ll find plenty of sources for stock audio if you search for “stock music”, “royalty-free music”, “stock sound”, “royalty free sound” or similar terms, but the following are a couple of trust-worthy providers to get you started:

  • AudioJungle have a library containing thousands of sound effects and music tracks at reasonable prices.  You would normally want to purchase a “regular” licence for use in free games, or an “extended” licence for games you intend to sell — this page is provided to clarify which licence you should buy.  I’ve used AudioJungle a number of times for my own projects, and always been happy with the service and result.
  • Partners in Rhyme are a very popular source for royalty free music and sound effects, offering a massive selection to choose from and a nice clear explanation of their licencing terms.
  • iStockPhoto is another popular stock collection which has expanded from it’s initial photo-based service to also offer audio and video.  Licensing for iStockPhoto is more a little more complicated, but the informational pages are well written and should allow you to quickly find an appropriate licence.

Custom Made

Lastly, you have the option of hiring someone to create custom music and/or sound for your game.  Custom audio can really help to give your game a distinctive feel, and can be a fantastic way to help create a unique brand; everyone immediately recognises the music from Mario Brothers!

Custom audio is great — and obviously everyone would have it if they could — but it does have a couple of small down-sides: you have to wait for the audio to be created, and it can potentially cost more than stock audio.  If you approach it with reasonable expectations about the number and length of tracks for your game you might be pleasantly surprised about how affordable custom audio can sometimes be — it’s well worth at least taking a little time to investigate!

Most sound and music professionals will charge:

  • Per minute of music, or per sound-effect.
  • Per track.
  • An agreed-upon amount for the whole project, or
  • (more rarely in my experience) for their time (i.e. an hourly rate).

Keep an eye out over the next few days for a follow-up article detailing how to choose someone to create custom audio, as well as what you’ll need to do and provide to get the best results!

Myth: Java not suitable for video games

There seems to be a popular belief that the Java programming language is unsuitable for video game development, often citing either the runtime speed or the “power” of the language.

Today, I’m going to take a stab at putting this myth to bed; it’s not true, and those who tell you otherwise are misinformed and should be listened to only with a healthy grain of salt.

I’m a believer in the concept of “putting up or shutting up” — that is, you should be willing to back up what you say with solid evidence or you should stop saying it — and so I’ll start by providing some evidence to support my claims.  We’ll then take a look at why people might believe this particular myth, and examine some of the reasons Java might still not be suitable for your specific game.

The proof: Java is suitable for video games:

A simple case of proof by contradiction: if there are good quality games programmed using Java, then Java must be suitable for games.  Let’s look at a few notable games created with Java:

  1. RuneScape is a popular Java-based MMORPG which can be played in a web-browser window.  According to Wikipedia the game “has approximately 10 million active accounts, [and] over 200 million accounts created”, whilst this Java.com page lists “over 135 million users who have already discovered RuneScape”.  This is a very successful and popular game.
  2. Puzzle Pirates offers both single player-puzzles as well as a MMO puzzle-solving experience, and has over 4 million registered users.  The game is free to play, but offers premium content and subscription-only “oceans” (servers) as in-game purchases.  The game was originally released in 2003 and is still going strong today.  Again, this is a very successful title.
  3. Minecraft is “a game about placing blocks to build anything you can imagine”.  At the time of my writing, according to the official website “36,456,346 people have registered and 6,873,118 people bought the game”.  A stats page is provided on the website.  This game is fairly recent, and is a pretty well known smash-hit success.
  4. Spiral Knights is a newer MMOPRG with attractive graphics which opened to the general public in 2011 and reached 1 million user accounts within 3 months of launch, and has since exceeded 3 million.  The game is free-to-play but offers premium features including the ability to start a guild.
  5. Wurm Online is yet another Java-based MMORPG featuring dynamic, player-constructed worlds, and has been going strong since a beta release in 2003.  This game presents a different experience than more mainstream MMO titles, but has a loyal player-base and is usually able to count the number of online players at any given time in the low thousands.  At the time of my writing there were a little over 3000 paying players currently active, and whilst this is lower than popular commercial MMOs it’s certainly nothing for an indie to scoff at.

Given these examples, it seems blindingly obvious that Java is suitable for at least some games.  There’s nothing about the language or platform that prevented these games from being very successful.  So…

Why do some people think Java is unsuitable?

There are a couple of reasons this particular myth came to be commonly believed.

The first is historical.  Java used to be pretty terrible for creating any non-trivial game.  The code was interpreted (newer versions benefit from JIT compilation) and there were therefore serious performance concerns.  There also weren’t as many libraries for would-be game creators as more popular choices such as C and C++ provided.

Secondly because Java — like any programming language — isn’t suitable for all games and some people unfortunately take that a little too far and decide that Java must not be suitable for any games.  There aren’t a lot of professional games (excluding the more recently popular Android platform) written in Java, and so many falsely conclude that hobbyist and indie developers should not use it either.

Thirdly Java is taught as an introductory programming language at many colleges and universities, often poorly, or well but not to a great extent, and so there are many bad or mediocre would-be programmers out in the world creating bad examples of software written in Java.  Any programming language will look bad if you examine poorly written software created with it, and unfortunately there is a highly visible wealth of such examples available for Java.  This should not reflect on what can be achieved if the language is used well, as in the examples given above.

Is Java suitable for your game?

Personal preference plays a huge part in the smart selection of tools and programming languages.  Many people — myself included —  simply don’t really like Java, and if you are one of those people then Java will not likely be a good choice for your next project.

Assuming you don’t have a dislike for the language you should next examine the libraries available to help achieve your goal.  What sort of game are you making, and are there libraries available to a Java programmer which will help make your life easier?  If there are, then you can consider Java as a good potential candidate for your project; if not, you may wish to look elsewhere.

Hopefully this helps to clear up some misconceptions about the suitability of Java.  Like any programming language, it isn’t for everyone, and it certainly isn’t suitable for all projects, but in the majority of cases it simply doesn’t deserve the bad reputation.  Be on the lookout for follow-up articles over the next week or two on why I personally prefer to avoid Java, and a look at some of the resources available to those who want to create their next game using the language.

4 reasons you aren’t a successful indie developer

1.  You haven’t really started making a game.

You’ve been working on your game for over six months or maybe even a year or more, but… when someone asks to see the game you have nothing to show.  All of your work so far has been design or pre-production.  If you’re more serious about your project you might have one or more lengthy documents detailing various aspects of your game, and maybe some concept art.

Design is important.  It can be valuable to do some planning in pre-production.  It’s never a bad thing to have an idea of how you’re going to approach the project before you jump on in and start the hard work of creating it.  You’re probably offended — and perhaps even rightfully so — when people suggest that all of your efforts are pointless… but until you can take the difficult step from idea to implementation, you’ll never have a great come-back to respond to those people.

Successful indie developers actually work on implementing their games.  They don’t spend forever on design and so-called pre-production, and it’s common that they’ll take an iterative approach where the design evolves during development and testing, invalidating lengthy up-front design in the process.  Maybe it’s unfair of people to suggest that all your design work is pointless, but until you actually have a game to show you’ll never really convince them otherwise.

Don’t get stuck in an endless design cycle.  Start to actually create your game and have something to show.  You’ll likely find that you simply don’t need to spend months on end designing up-front, and you’ll be able to swiftly respond to the nay-sayers with a rather hard-to-dispute “yeah, well I’ve published a game — what have you done?”

2.  You think it matters that you’re using “real” languages and “real” tools.

You’re serious about this, and you don’t want to play around with toys or use languages and software designed for kids.  You have your mind set on using a real language — perhaps C or C++ — like professional programmers at AAA studios do.   You would never waste your time using silly tools like Game Maker or writing code in a language like C# or Python.

Successful indie developers aren’t interested in long lists of reasons that simpler tools and languages aren’t suitable for serious game creation, and they don’t get caught up with ideas about using the same tools as AAA developers.  Why not?  Because they’re too busy making real games with whatever “silly” tools best meet their needs.  Legend of Fae and Serious Sam: The Random Encounter are both Game Maker titles, and both are for sale via Steam.  Saira was made with multimedia fusion, and is also for sale via Steam.  The Binding of Isaac is a Flash game, also for sale via Steam.  Terraria is a commercially available indie game written with C# and XNA.  Minecraft was written in Java.  The list goes on…

If you’re happy using C++ and writing lower-level code then all power to you, but don’t feel you must take that path because AAA developers do.  Plenty of successful indie developers use simpler tools, so if there is a simpler and faster way that is suitable for creating your next game you should absolutely take advantage!  Next time you see a language/technology-snob belittle use of Game Maker (or similar tools) you might think to ask how many games they’ve actually released, and point out some of the examples above; you’ll likely find them stumped and unable or unwilling to continue defending their point.

3.  You aren’t making indie games.

Your game is going to be the next big hit.  It will have fantastic next-gen graphics like the latest Call of Duty, wonderful physics like HalfLife 2, and customisable characters like World of Warcraft.  The problem is that these games were created by large teams of skilled developers and to have huge budgets running into millions of dollars.

Successful indie developers usually concentrate on smaller and more easily achievable games.  They often try to avoid having to spend excessive amounts of time and money on content-creation by focussing on simple, reusable mechanics, or via procedural generation and the use of player-created content.

4.  You haven’t released your game.

You didn’t make any of the mistakes above.  You designed a fun indie game of reasonable size and scope, and perhaps even released a few prototypes or demos along the way.  Maybe you’ve gathered a small community of fans who are eagerly awaiting the publishing of your title.  It’s all very exciting, and you’re happy with the work you’ve done…

…but you just have to add one more feature before release.  You’ve had a brilliant new idea that will make the game even better and it simply must be added.  Perhaps this isn’t the first “one more feature” you’ve added, but it will be worth it in the end.

At some point, you need to stop.  Successful indie developers actually release one or more games, and at some point you simply have to say enough is enough and stop adding new features.  This can be difficult to do, but feature creep can stretch out development forever, and you’ll never be able to count yourself as a successful developer if you don’t declare your game good enough and release it.  Perhaps you could add your “one more feature” as an expansion (downloadable content is all the rage these days!) or sequel, or maybe it could go into an entirely new game.  It’s important to polish your game and create a fun and complete experience, but there’s no point in endlessly adding new features to a game that is never actually played.

Why aren’t you a successful indie developer?  Alternatively, what did you change in order to become a successful developer?