Looking for some direction

Started by
2 comments, last by Alismuffin 11 years, 9 months ago
Hey everyone! I came here seeking some direction as I am currently, for lack of a better word, lost.

I am enthusiastic about game programming, as I'm sure is obvious by the fact that I am actually on these forums. I am also prepared to dedicate a good deal of time to learning how to program games. I am lacking direction however as I know essentially what I wish to achieve, but I would like recommendations for the particular areas of game development that I am interested in.

What I have done thus far regarding game development:
-I have a bit of experience in programming games using javascript(Or as many prefer, UnityScript) and C# within the Unity3D game engine. All of this was learnt via experimentation, asking questions on unity answers and documentation consultation. The games I were programming however were not very well optimised. I feel that this stage really started my deep interest in game programming.

-I decided I'd like to harness the power of the UnrealEngine3 and attempt to program in that environment. It was then that I realised that essentially I knew nothing much about programming. I found some documentation gems, but even then it wasn't enough for me to acquire knowledge. I was basically stuck. In Unity3D it was so easy to pull generic functionality out of a huge list of pre-made functions(The Unity3D API) and there was so much documentation that I never was stuck for too long a period of time.

-It was at this point that I decided to learn how to make a game without using a pre-made engine itself. The point was not to ditch using an engine, but to enable me to later down the track actually be able to make more use of one(Namely Unreal Engine 3). So I decided to learn C++. I read a book called Beginning C++Through Game Programming, Third Edition by Michael Dawson. This went very well. I learnt a lot from the book and really enjoyed reading it.

-It was now time for me to try my hand at something outside of DOS however. I had my mind set on creating a 2D game, namely an rpg like that of the early final fantasy or pokemon games. This is where I hit a snag. I was using Visual C++ Express as my compiler and began reading Beginning Game Programming by Jonathan S. Harbour. I wasn't entirely sure I was going down the right path using DirectX for a 2D game. Upon further research I discovered that DirectX is essentially Microsoft exclusive. I wanted to learn how to develop games for Windows, yes, but I also wanted to develop applications for smartphones or games that are supported across a range of platforms. I also wasnt sure if DirectX is exactly what I was looking for in terms of creating a 2D game.

So I decided that I'd seek direction from a community of experienced game programmers.

What I want to do
At the moment I wish to focus primarily on 2D game development, so any recommendations, pipeline examples, words of wisdom, experienced advice are all welcome!
I am using Visual Studio C++ as my current compiler, but am willing to switch over

Eventually I want to be able to program 2D games for PCs but also for smart devices such as android and iphone. I am considering OpenGL as a possible API to learn.
I also want to be able to program 3D games (Probably through an engine such as UDK, but perhaps eventually through my own 3D engine).

Thanks!
Advertisement
Hi,

First off, JavaScript is not Unreal Script, what you used with Unity3D is JavaScript, which is derived from ECMAScript. UnrealScript is also derived from ECMAScript, although just an incomplete subset. This was just a "The More you know.... " segment.


As to your actual question, for a 2D game, I would avoid DirectX or OpenGL for now. I would also start a bit smaller than an RPG, at least initially. The two most common recommendations are SDLand SFML. If you decide to go the SFML route, try my C++ tutorial series, it is designed for people in exactly your situation. People who have some experience with C++, perhaps making simple console applications, but want to make the leap to both making 2D games, and structuring code in a real world maintainable way. Hopefully you will learn a bit more about C++ along the way, at the very least, you will see STL and OO in actual use, instead of heavily contrived examples.
For 3d if you don't want to use directx directly there are 3 other alternatives all providing cross platform support across mac, windows and linux minimum. These are Ogre3d (android support detailed here, iOS here, neither are official but at least it works), irrlicht (scattered info on it working for android, same for iOS) and raw openGL which seems to work on just about god damned everything. All 3 are available for most major programming languages but are mostly documented with C++.

Irrlicht does 2d graphics aswell, ogre's 2d support is focused around GUI's rather than whole games so getting a 2d game to work might be difficult. openGL can do 2d but from what I hear (having not used them) SDL and SMFL are both better choices for 2d games.


Regarding your desire to eventually develop on mobile devices. Its nice to see you holding off on that until you have experience, seems a few people think they can just charge straight in there. Android has its NDK for developing apps in C and C++ but its got quite a few restrictions, the Ogre3d article I linked to shows an alternate android C++ development solution without these restrictions (needed to support Ogre3d on android) however I don't know googles rulings on putting apps on the app store without using their official SDK's so you would need to check. There are apps on the iOS app store using Ogre3d though. Both devices provide their own openGL libraries.


2 more libraries not primarily intended for C++ but fully capable of 2d and 3d would be XNA (driectx under the hood) and its openGL equivelant monogame. XNA is for use with the .net framework so you are limited to windows, xbox 360 and windows phone 7 (and 8) however xbox and windows phone require you to use either C# or Visual Basic.net. Applications for windows can use any .net language including C++/CLI which you already have access to through visual studio, however all the microsoft provided project templates are written in C# but I believe there is a website somewhere with downloads for ports to other languages. Mono you should have heard of, it is essentially an open source cross platform implementation of the .net framework. For free it supports windows, mac and linux. For $400 each it will support iOS and android. The PS vita also uses it but I don't know the pricing on that. Monogame is essentially XNA for mono and aims to closely replicate it but using openGL instead of directx. Currently it supports mac, windows and linux. Windows 8 it supports in legacy mode only. Android and iOS require you to have the licenses to use mono on those devices. PS vita and windows 8 metro are currently planned for one of the next updates. For the desktop systems you can use any mono language (which is virtually all .net languages, not so sure on C++ though), I have no idea about any language restrictions for the mobile devices, I believe the vita is going to be C# only. If you do go with XNA or monogame then language switching to C# may be a good idea, all the docs and tutorials usually assume C#. Otherwise use something other than these 2.

Of all the above I've only used XNA although I have considered using managed ogre (ogre3d for .net) but I'm waiting on mono support for that, either that or I might switch to monogame.
Thank you very much for your replies!

I appreciate the time you took to help me :)

I have decided, based on your posts, to start learning SFML. Thanks again!

This topic is closed to new replies.

Advertisement