Game development - where on Earth to start?

Started by
13 comments, last by Patrick B 9 years, 7 months ago

Hi there!

I'm GreatBlitz. From when I was little, I had a passion for creating things. I began programming in late 2011, starting with Python. Back then, Python felt like a huge achievement for a non-computerish guy, and I wanted to proceed further. The good librarian lent me the book Head First Java in March 2012, and I began Java from then. From calculators to currency converters, Java felt like my home (and still does!). I took a small break as I got busy with school, but in late 2013 I got back, making mods in Java for a game called Minecraft. Now, I want to make my own game. I'm quite confused, with such a variety of options available, anything seemed like a feasible option. But I wanted some opinion from more experienced people. Here are a few things about me:

1. Game Maker (and the like) is a clear no-no. I want to code, not drag and drop.

2. I'm comfortable with Java, but at the same time I don't mind learning a new language. The learning experience of a new language is quite fun too.

3. I prefer books over videos.

So can you suggest a starting point in game programming for me? According to my research, C++ seems like a good language for game programming (correct me if I'm wrong). Should I begin learning C++? If yes, can you recommend a book for it? And if no, what do I program in?

Regards,

GreatBlitz.

Advertisement

Unity is kind of the big deal right now. Myself, I think html5 is more interesing because there is no plugin needed. WebGl is supported by most browsers so you can get small engines like PIXI.js that are hardware accellerated. I looked at Unity and found it hard to organize but it may have been me. The editors are cool, but it seems to end up it's hard to create enough content so the games look generic and dull. I guess the big choice is 2d or 3d. You either need someone to create content for you, or you have to create it yourself.

Depends what type of game, from flappy bird to COD, 2D game or 3D game, PC, MAC, Linux, Windows, Android, iOS, WP, Xbox, Wii, PS etc..

Games on Android are written in Java by default for example so maybe an Android 2D game?

Depends what type of game, from flappy bird to COD, 2D game or 3D game, PC, MAC, Linux, Windows, Android, iOS, WP, Xbox, Wii, PS etc..

Games on Android are written in Java by default for example so maybe an Android 2D game?

Unity is kind of the big deal right now. Myself, I think html5 is more interesing because there is no plugin needed. WebGl is supported by most browsers so you can get small engines like PIXI.js that are hardware accellerated. I looked at Unity and found it hard to organize but it may have been me. The editors are cool, but it seems to end up it's hard to create enough content so the games look generic and dull. I guess the big choice is 2d or 3d. You either need someone to create content for you, or you have to create it yourself.

2D games is what I want to do. More emphasis on story than on gameplay.

Well I take it your a one man team, can you create art, including textures, freehand drawing, pixel art, vector art, animations, can you create sounds effects, music etc...

There is a lot involved aside programming that's why people recommend using an established game engine like Unity, Cry Engine or Unreal Engine.

Your choice of tools will be informed by the type of game you want to make. For example, if you're looking to so something with 3D or something that requires broad audio support, you would be wise to steer clear of HTML5 -- lessons learned when I was building Teletoon's Toon Feud game. However, if you're building something simpler that doesn't require excellent audio support and synchronization, across-the-board 3D support or peer-to-peer networking, and are willing to work around occasional browser incompatibilities, HTML5 is a good choice. I have no doubt that HTML5 will continue to evolve so in a few years we can expect it to have the capabilities of Flash 8 -- just not there yet. I broke it down in greater detail here: http://patrickbay.ca/blog/?p=153

If you're looking for a broad platform (your game can run on as many devices as possible without having to alter your code), I highly recommend Adobe Flash/AIR. I've developed nearly 90% of the games I've worked on in Flash or AIR and have no regrets. Keep in mind that your audience probably won't care what underlying technology is being used so the important take-away is that you work backwards from them -- what are your audience looking for? How will your game achieve these things? How can your choice of technology make this happen? Most successful developers don't tout the underlying technology (except to interested nerds), they tout what their product does for you.

Full disclosure: People have been paying me to develop games for about 10 years (I did it for fun for about 25), and I have a real soft spot for Adobe Flash / AIR. Yes, I'm deeply biased. I've worked in ActionScript, HTML5/JavaScript/jQuery, PHP, Java, C#, Assembler, and in the early days Pascal and BASIC. In my opinion, Flash gives you the biggest bang for the buck in terms of flexibility, power/abilities, and platform coverage. Of course, being interpreted means that ActionScript will never run quite as fast as C++ or to-the-metal Assembler, but ever since great Java-inspired concepts like Just-In-Time compilation were implemented, the Flash/AIR virtual machines have improved significantly. These days, Java and ActionScript are close cousins (though Java is still a few steps above and beyond).

You can go entirely open source and free (FlashDevelop or Apache Flex, supplanted with GIMP and InkScape), so costs are not a barrier. And, frankly, I think you'll find that ActionScript is close enough to Java to make the transition easy. Transitioning to JavaScript afterwards is even simpler -- just cut out the useful features and advances of languages like Java or ActionScript (strong data typing, for example), and you end up with JavaScript. Your skills will definitely transfer to other browser-based technologies so even if you end up dropping Flash/AIR in the future, knowing how frame-based animation is achieved, for example, comes in real handy when dealing with things like HTML5 (again, personal experience).

Ultimately, if you stick with one of the dot-notation languages you're probably safe in the long run, and when HTML5 is advanced (and actually standard) enough, you should be able to seamlessly transition your code. If you start with HTML5/JavaScript first, however, you'll be immersing yourself in a somewhat stagnant "standard" that, in my opinion, will limit you more than free you. But, of course, this is entirely dependent on what your actual limits are.

Well I take it your a one man team, can you create art, including textures, freehand drawing, pixel art, vector art, animations, can you create sounds effects, music etc...

There is a lot involved aside programming that's why people recommend using an established game engine like Unity, Cry Engine or Unreal Engine.

Yes, you're right. But Unity or any other engine will not create the images or art for you, will it? In the end, you're the one who makes/gets the resources.

Your choice of tools will be informed by the type of game you want to make. For example, if you're looking to so something with 3D or something that requires broad audio support, you would be wise to steer clear of HTML5 -- lessons learned when I was building Teletoon's Toon Feud game. However, if you're building something simpler that doesn't require excellent audio support and synchronization, across-the-board 3D support or peer-to-peer networking, and are willing to work around occasional browser incompatibilities, HTML5 is a good choice. I have no doubt that HTML5 will continue to evolve so in a few years we can expect it to have the capabilities of Flash 8 -- just not there yet. I broke it down in greater detail here: http://patrickbay.ca/blog/?p=153

If you're looking for a broad platform (your game can run on as many devices as possible without having to alter your code), I highly recommend Adobe Flash/AIR. I've developed nearly 90% of the games I've worked on in Flash or AIR and have no regrets. Keep in mind that your audience probably won't care what underlying technology is being used so the important take-away is that you work backwards from them -- what are your audience looking for? How will your game achieve these things? How can your choice of technology make this happen? Most successful developers don't tout the underlying technology (except to interested nerds), they tout what their product does for you.

Full disclosure: People have been paying me to develop games for about 10 years (I did it for fun for about 25), and I have a real soft spot for Adobe Flash / AIR. Yes, I'm deeply biased. I've worked in ActionScript, HTML5/JavaScript/jQuery, PHP, Java, C#, Assembler, and in the early days Pascal and BASIC. In my opinion, Flash gives you the biggest bang for the buck in terms of flexibility, power/abilities, and platform coverage. Of course, being interpreted means that ActionScript will never run quite as fast as C++ or to-the-metal Assembler, but ever since great Java-inspired concepts like Just-In-Time compilation were implemented, the Flash/AIR virtual machines have improved significantly. These days, Java and ActionScript are close cousins (though Java is still a few steps above and beyond).

You can go entirely open source and free (FlashDevelop or Apache Flex, supplanted with GIMP and InkScape), so costs are not a barrier. And, frankly, I think you'll find that ActionScript is close enough to Java to make the transition easy. Transitioning to JavaScript afterwards is even simpler -- just cut out the useful features and advances of languages like Java or ActionScript (strong data typing, for example), and you end up with JavaScript. Your skills will definitely transfer to other browser-based technologies so even if you end up dropping Flash/AIR in the future, knowing how frame-based animation is achieved, for example, comes in real handy when dealing with things like HTML5 (again, personal experience).

Ultimately, if you stick with one of the dot-notation languages you're probably safe in the long run, and when HTML5 is advanced (and actually standard) enough, you should be able to seamlessly transition your code. If you start with HTML5/JavaScript first, however, you'll be immersing yourself in a somewhat stagnant "standard" that, in my opinion, will limit you more than free you. But, of course, this is entirely dependent on what your actual limits are.

HTML 5 is web-based, is it not? Web based deployment isn't what I'm looking for.

As for Adobe AIR, it sounds like a good option.

Unity is kind of the big deal right now. Myself, I think html5 is more interesing because there is no plugin needed. WebGl is supported by most browsers so you can get small engines like PIXI.js that are hardware accellerated. I looked at Unity and found it hard to organize but it may have been me. The editors are cool, but it seems to end up it's hard to create enough content so the games look generic and dull. I guess the big choice is 2d or 3d. You either need someone to create content for you, or you have to create it yourself.

WebGL is not supported by most browsers. Only 33% of browsers fully support it, another 33% have partial support, and the remaining 33% (most mobile browsers), don't support it at all: http://caniuse.com/#feat=webgl

HTML 5 is web-based, is it not? Web based deployment isn't what I'm looking for.

As for Adobe AIR, it sounds like a good option.

HTML5 is either web-only or app-only.

When not running in the browser, technologies like PhoneGap can turn HTML5/JavaScript content into apps. However, the custom JavaScript calls used in PhoneGap (etc.) are only used in such technologies, so these apps simply won't run correctly, or at all, in the browser. Performance or broad compatibility are simply not there yet. This is sometimes a necessary situation -- PhoneGap can't support something on a Windows phone that can't be supported on Android and iOS, for example -- but there's no low-level workaround at the moment (see ActionScript's Native Extension system, for example).

This situation is reminiscent of Flash circa 2007 when ActionScript 3 was being formulated and third-party technologies like NothCode's SWF Studio were providing app functionality to otherwise web-only Flash content. This is why I'm not against HTML5 or JavaScript -- I can see where it's heading, it's just clearly not there yet. If you learn the advanced stuff first and work backwards, I estimate that you'll be in a much better spot in a few years than someone having to climb the knowledge mountain for the first time.

WebGL is not supported by most browsers. Only 33% of browsers fully support it, another 33% have partial support, and the remaining 33% (most mobile browsers), don't support it at all: http://caniuse.com/#feat=webgl

The current versions of the major browsers support it:

http://caniuse.com/#feat=webgl

People that play games tend to use current browsers, and it will just become more prevalent in the future.

This topic is closed to new replies.

Advertisement