Requested to post here. Original and updated version will be maintained at Homebrew Illuminati.
- I want to make this into a career developing games
- Which platform do I develop for?
- Should I worry about Intellectual Property, Copyright or Trademarks?
- How do I get a team together?
- What should I call my release?
- When should I release?
- Do I need to know how to program to make homebrew?
- How long will it take for me to learn enough to make a game?
I want to make this into a career developing games
I recommend reading Tom Sloper's FAQ instead. It directly relates to the industry and is very thorough.
Which platform do I develop for?
This of course depends on what platforms you have access to and the level of expertise that you are at. At present, the PSP, GP2X, GBA, NDS, Xbox360 and PC are the most accessible in terms of getting started and going.
This is usually the most viable option for most people as there is no extra hardware needed to run homebrew, just the right firmware (more details can be found here). It is a mainstream console that you can easily buy in the high street and has a large audience to distribute to. There is a stable programming SDK for C or C++ with many external libraries available to download for free or you can use a high level scripting language such as Lua or Python. Part of the appeal of developing for the PSP is that it is very similar to developing for a PC, just on slower hardware.
Due to the extra accessibility of the platform, there are already a large number of experienced developers currently using the platform but you will find that this is outweighed by the number of beginner programmers that are just starting out. This can make it difficult when asking for advice as it suffers from the 'beginner teaching the beginner' syndrome where either person doesn't know better.
As mentioned earlier, it is a mainstream console so the range of your users is broad, this can range from the enthusiastic that know the scene inside and out to the clueless expecting everything for free and just be as good as commercial work. The latter are more likely to leave comments that such as "This game is ****, my mum can do better". These, you ignore or even better, don't give them an excuse to say so (see When should I release?).
Otherwise known as the Open Source handheld, it runs homebrew games straight out of the box without any extra hardware or special firmware or software. As with the PSP there are stable SDKs for C or C++ with hardware accelerated SDL libraries. This means it is very fast (even for emulators to use) and because it is a common cross platform library used by many games and applications, ports of games can be very easy to do and help can be widely found.
However, the console itself is nowhere as mainstream as the PSP and is a niche platform with limited user base. While this limits your audience, you find that there less whiners and idiots in the community that you find in the PSP. The developer community is usually pretty tight nit and tend to stick together, helping each other out as much as possible and you find the frequency of high quality releases is better then the PSPs.
GBA and NDS
Again, SDKs for C and C++ exist and are very stable, however extra hardware in the form of flash cartridges is usually needed to run homebrew on the platform. Thankfully, emulators exist for both platforms which makes development a little easier. Developing on either platform is considered much more difficult then any of the other platforms mentioned here because much of the hardware is rather unique and the developer programs close to hardware with reasonable knowledge in how they work. Not recommended for beginners to programming.
Microsoft have done rather unexpected, they have released and supported tools with libraries to use with the Xbox 360 and PC. C# (pronounced C Sharp) is their language of choice and quite frankly, it is a great language to program with. The downside is that it isn't free for Xbox360 support and only other paid subscribers to the service can play the games that you create. More information can be found on the XNA's Creator Club site.
Anything goes, you can pretty much use any language, there are a tremendous amount of libraries that can be used to create games with on the PC platform. No extra software or hardware is needed to play games and there is no shortage of tools or tutorials to use. The only real downside is the sheer infinite number of combinations of hardware that can be used to make a PC and the possibility that it won't work on the ones that you want to run it on.
Should I worry about Intellectual Property, Copyright or Trademarks?
Yes, you should worry about these things as by using trademarks (TMs), copyrighted work or intellectual property (IP) that does not belong to you, you are breaking the law. What makes it worst is that you are ripping off other people's hard earned work. Quite simply, don't. Make something original and you get much more respect from the community when you do so or at least ask the existing owner(s) for permission first.
This differs case to case, community to community. Some companies won't care unless it becomes too big so it eats into their profits or harms their image (e.g. Zelda Classic), others will step in and send a 'Cease and desist' (e.g Chrono Resurrection). Some communities, the user base will take it as a given and the majority will happily play and support fan based works based on existing IP and TMs using ripped assets (graphics/music) from the existing games. Others will do the opposite.
For more information on cloning games, read Sloperama's FAQ Q61.
How do I get a team together?
First you have to ask, do you need a team in the first place? Is the project large enough to distribute across several people? If so, bear this in mind: the majority Internet teams fail. The most common reasons are:
- Lack of experience. None of the members nor the leader has any experience working as a team and the whole thing collapses due to lack of direction or progress.
- Lack of knowledge. None of the members have any working knowledge of the tools needed to collaborate together. Programmers don't use source control, use inconsistent coding styles; artists use inconsistent palette depths, formats. Everything goes to hell as time is wasted trying to put the whole thing together.
- Lack of communication. Due to the nature of Internet teams, communication between members becomes much more difficult. Talking to someone or a group of people in person is completely different then talking over instant messaging, forums or email. Putting your point across becomes difficult as you have no body language or voice, just text. The problem gets worse when members are split across time zones. No communication = no project.
So, despite this, what can you do to help make a team project successful?
- Make the project achievable. If it isn't, then any time invested is wasted, it becomes a death march. Keep the development time reasonably short and the scope of the game small, the most important thing is to finish the game. There is no point in having the 'bestest' project ever if it never gets finished. In short, no MMOs.
- Preparation. Make sure you and your proposed project is ready to start going before you start hiring. The ultimate motivation for members is to join a project and wait for the gears to churn. This means you need to have your project documentation ready for download somewhere, tools setup and ready to use, forums all prepared ready to use, you get idea. As soon as a member joins, they should be able to join the forums, make their introductions, download any extra documentation to read and start doing work.
- Know who you want and why. When you open positions for a project, make sure you know exact how many people you need for each discipline at what level. As well as forcing you to consider the size of the project and the workload, it allows applicants to judge how big the project is.
- Keep it local. Try to have all the members in similar time zones, communication will become easier and at worst, it allows members to call each other although you should consider caution in sharing to much personal information to strangers.
- Screen the applicants. Don't just let any random member join, check each applicant's previous post/online history to check if they are right for the team One bad egg can ruin the entire project.
What should I call my release?
This is one of my pet peeves in that a lot of people randomly prefix their releases with 'Pre-Alpha', 'Alpha', 'Beta' and 'Final' so I thought I clarify it a little.
- Pre-Alpha means anything before Alpha. However, this begs the question why the game was released to the public in a very incomplete state in the first place.
- Alpha represents a build that is about 75-100% feature complete and is generally playable from start to finish without crashing. However, some minor sections of the game may be incomplete or missing. Again, Alpha builds should not be distributed to the public as it is still buggy, incomplete and/or lacks polish.
- Beta is a feature complete build. It doesn't crash and the game is generally stable. All that is left is to thoroughly test the build and fix any outstanding issues with game that are found. These include graphically glitches, game logic bugs (e.g. the player gets the game in the state why he/she can't progress), tech hangs, unexpected crashes, etc. Ideally, you should distribute this build among a select group so you can manage the bug reports better.
- Final is THE build that should be released to the general public. In an ideal world, this would be a completely bug free version of 'Beta'. In reality, there will still be several bugs that weren't found in the Beta builds so there may be a few patches released post-Final to fix these minor issues.
When should I release?
When it hits the 'Beta' or 'Final' milestone. No one wants to play an incomplete game.
Do I need to know how to program to make homebrew?
If your intended platform is on the PC then you are in luck. There are plenty of programs out there that allow you to make games without any knowledge of programming. One of the most common is GameMaker.
However, for any other platform listed on this FAQ, this kind of software doesn't exist which leaves you with a few options:
- Learn how to program - While viable, it can take a long time to get to the level of proficiency before you start making your game. Other factors to consider what programming languages are available to use on the platform.
- Start or join a team that does have programmers - Be sure to read How do I get a team together?
- Post your idea on the Internet and wait for a bored programmer to make it for you - Without any pro-activity from you, this can take a very long time if it happens at all.
How long will it take for me to learn enough to make a game?
How long is a piece of string? It will take different people different amounts of time with different approaches for the same path. Factors include the size of the project, skill and experience of the team/individual.
Keep your first few games small and achievable and aim to complete it fully. The hardest part of any project is finishing.