Hey, I’m sure this question gets asked a bunch, but I checked and didn’t see it in the forums. I have been interested in learning to develop “flash games” and get them online, but I don’t really know where to start. I’ve started learning C++ only because I worked with that when I was younger.
I’ve seen people mention unity, adobe/macromedia flash, and java, but I just can’t get a definite answer. If I just wanted to put up the simplest game, what programs would I need to do it? I can learn the languages as I go, but I don’t know what to use to actually write the code it. At this point, ANY help would be appreciated.
Thanks!
Getting started with game programming!
If by flash games you mean Adobe Flash, forget about it. Unity3d allows to develop games for web, and so do most of modern engines. In the long term will be more profitable to learn a decent engine than get involved witha dying technology.
flash games ... learning C++ ... unity, adobe/macromedia flash, and java, but I just can’t get a definite answer.
If I just wanted to put up the simplest game, what programs would I need to do it? I can learn the languages as I go, but I don’t know what to use to actually write the code it. At this point, ANY help would be appreciated.
You can use whatever you want. Those who play the games don't usually care about how they were made.
About the tools you mention:
- Flash. This was once a popular tool for making games on the Web. It has fallen out of favor for many reasons. It isn't dead yet, and it likely won't be completely dead for another decade or so. But if you are looking to the future, this probably isn't it.
- C++. Major studios use C++ for console and PC games because the language has many strengths for systems-level work. For major games, usually the core of the game engine is implemented in C++, other languages are used for game scripting, controlling game objects, and simulation work. While the language is quite powerful, it is a terrible choice for a beginner. C++ assumes the programmer always knows what they are doing, and that the programmer is always right; beginners rarely know what they are doing, and are very often wrong about their implementations. When you do eventually decide to learn C++ you will need to know that the language does not provide direct support for most game-related functionality. Graphics, audio, networking, input devices, and high performance disk operations go through libraries that interface with C++.
- Java. Java is the officially preferred language for Android devices. It also runs okay on desktop computers, can be fairly portable, and has built in graphics, audio, networking, and other systems. Unfortunately for beginners the design of the language is focused more on small business applications, transactions, and tiny chunks of processing work, so it can be difficult to get high performance. For hobby games and personal learning it is great. It is a fine choice for a beginning language.
- HTML5 + Javascript (not mentioned in your post). Javascript -- which really isn't related to Java in any way except for the first four letters of its name -- is the current popular language of the Internet. You can do quite a lot with these two combined, but because every browser has their own implementation details and quirks, trying to get a program to run here is often a matter of building for one browser, then fixing the things that are broken in the second browser, then fixing what you broke in the first browser, then fixing it for a third browser and double-checking the first two, then adding another browser, and another. Every programmer should eventually pick these languages up eventually because they are ubiquitous. It works as a first language, but beware that learning can be quite painful.
- C# (not mentioned in your post). Works good in Windows with Microsoft's implementation, and with mono it works on most other systems, so it is quite portable. I love this language for quick prototypes and testing out ideas. It has some of the same problems Java has with larger systems and the language's design choices not quite matching what games need, but still a good choice for small hobby projects and personal learning. I recommend it as a first choice.
- Python (not mentioned in your post). Another good learning language, tools like PyGame can help you build games rapidly. Inside the professional world python is frequently used for quick scripts and automation tools. Some people recommend it as a first choice, I think it is a good early choice for a second or third language if not your first.
- Unity. This isn't a language. Unity is a game engine where you can write your own scripts that get compiled and run by the engine. Unity supports three different languages for development: C#, a variant of Javascript, and a variant of Python. Most people who use Unity these days tend to use C#. Over the past few years they have added 2D support, so you can build 2D and 3D games relatively easy. (They are still a lot of work, easy is relative.) If you want to make games without years of experience, this is a great tool. Many people have built professional quality games with the tool with just a few weeks of effort. It also targets a wide range of systems, including PC, Mac, Linux, and phones/tablets. Free for most hobby games.
- Unreal Engine (not mentioned in your post). Another popular engine used for many commercial games. It primarily uses C++ for scripts you write, and it also has another system called Blueprints. You can do quite a lot with the built-in functionality, and is often compared against Unity. Both are very powerful, capable engines that are used in major games. Unreal has a longer history of the two. Also free for most hobby games.
- GameMaker Studio (not mentioned in your post). Another popular game engine, it uses its own language. It can help you build 2D games quickly.
- Game Salad (not mentioned in your post). Another popular game engine, using its own language. It can also help with 2D games.
There is no wrong answer, except not to do anything. Pick something. My current recommendation (that changes every few years) is to learn C# as a language and learn Unity as the game engine. Both have strong community support and are widely used, both have shallow learning curves.