Indie Game Development - My Path Options?

Started by
10 comments, last by GoCatGoGames 9 years, 9 months ago

Hi all, first post here,

So, you may have had a lot of these questions but after hours of searching I am still confused about general things.

What I know

I know some C++ and have programmed simple applications (console), so I know things like data structures, arrays, pointers, managing memory, input/output.

I also understand (just) that I need additional libraries to handle other things like user input, graphics etc? I have the SFML library and am using the documentation for that.

So, what I am assuming is I use this library (higher level language?) in order to do all that graphics stuff, and native C++ for the engine and "under the hood" components?

What I WANT to achieve

I am not actually a programmer, I am a networker but the thought of programming as a hobby or potential career path interests me. So indie game developing is definitely on the list (yes, going solo).

What I don't quite understand

Basically how to go about it?

Am I jumping in head first? I haven't delved into Win32 applications for Windows (or do I not need to?), I don't particularly understand anything outside console applications.

My Question

Or options:

  • Self Taught using online material (currently looking at C++ and DirectX over at MVA)
  • Online paid courses
  • Book material (step by step)

I may have a long way to go and I am not used to object orientated approaches.

Additional Questions

Do I necessarily need to dive head first into OpenGL/D2D/D3D, or do I simply use C++ with the online SFML tutorials? Of course I want to start simple (very simple) but as I am not used to anything graphical I am clueless where to start.

Side note: I can design text based games, I understand the principle, basically anything text I will be OK with. Move to Windows and graphical and I really am clueless.

I am new to programming in general but seem to pick up things quickly.

Thanks all, I appreciate its a long post and I appreciate this is a very beginner type question.

Advertisement

As a beginner myself, I would definitely suggest starting with 2d rather than jumping into 3d.

The graphical elements to SFML are pretty easy to pick up. The tutorials on the main site are pretty straightforward:

http://www.sfml-dev.org/tutorials/2.1/

Those should pretty much walk you through all of the essentials for getting a 2D game up and running with SFML. And, these are a little less formal but can walk you through some of the stuff left out of the tutorials:

But, depending on how quick you learn, you ought to be able to finish some 2d games rather quick with sfml.

As a newbie to OpenGL myself, I would say I'm rather glad I started with 2d first. The newer changes to OpenGL appear to be much less beginner-friendly and I've personally struggled not insignificantly in my learning (though I do find 3d programming more rewarding, if slower). So many of the resources out there for OpenGL use deprecated functions (or sometimes even a mix of new and deprecated ones), it can sometimes be a little daunting. Any day now, I'm just going to break down and start at the beginning of the Opengl Superbible and force my way through it (i tend to not like this approach when learning things myself :P). I don't know how strong your math background is, but be prepared for a rather lot of matrix math.

I can't recommend any paid courses because I haven't personally used any. I used mostly online tutorials supplemented with the superbible to fill in the gaps.

I would recommend

http://www.opengl-tutorial.org/beginners-tutorials/tutorial-1-opening-a-window/

as one of the better online resources for modern opengl.

And, lastly, there's always using pre-made engines like unity, unreal, cryengine, etc. I personally don't like using them, and find just doing things straight through opengl to be more rewarding (and I find I learn things more thoroughly this way). I'm sure many(most?) people would disagree, but that's been my experience. I found just implementing them to be more frustrating than just doing things from scratch :P Whether it's OS compatibility (i'm on linux) or just poor documentation, I gave up on them eventually(I'm mostly talking about the Ogre engine here, and as always, user experience may widely vary).

Perhaps someone with more experience will provide a better answer, but this has been my experience with everything so far :) Good luck!

Beginner here <- please take any opinions with grain of salt

Welcome to Gamedev!

There's a FAQ for just these questions:

http://www.gamedev.net/page/reference/faq.php/_/for-beginners-r1

I think, therefore I am. I think? - "George Carlin"
My Website: Indie Game Programming

My Twitter: https://twitter.com/indieprogram

My Book: http://amzn.com/1305076532


Self Taught using online material (currently looking at C++ and DirectX over at MVA)
Online paid courses
Book material (step by step)

Some people learn programming well with books, and others don't. I am one of those people that doesn't learn so well reading, I need to be actually writing code to soak it in. You may be different. Try out some books, but even if you read a book cover to cover, it wont cover everything and the internet is going to be one of you best resources.

Stay gold, Pony Boy.

My Question
Or options:

  • Self Taught using online material (currently looking at C++ and DirectX over at MVA)
  • Online paid courses
  • Book material (step by step)

Why not just try all of those? You say you want to follow an indie path ("going solo"). So you can learn solo too, if you want. There's no hard-and-fast rule about how to learn, and what's "best" for others isn't necessarily what's best for you. Try all your options, see what works for you.

-- Tom Sloper -- sloperama.com

Thank you for all the replies and input it is much appreciated.

Misantes: Thank you for your detailed response. I am working through some of the SFML tutorials and am finding its syntax pretty straight forward at the moment. Seems like I could work with it.

I have taken a look at GameMaker and Unity and to be honest I don't really understand it. I've got Blender installed for future modeling but from taking a peek at these ready made Engines I don't think I am comfortable with drag and drop.

Just to clarify things:

1: Would I need to look into Win32 API for Windows applications? Or may I continue using SFML if I get comfortable with it?

2: If I become comfortable with using SFML (+ Blender in future), could I continue to do so and still achieve the same outcome as is possible if one were using Unity?

There are a lot of books out there, but I definitely want to get somewhere where I can actually design a graphical user interface rather than console stuff.

Again, thank you all for your input.

SFML is an API. Why are you thinking you might need to look into learning the Win32 API?

Your question is probably a good example of one of the cons of going ahead on your own. Not understanding what an API is, what they're used for, and why you might choose one over another might hold you back if you find yourself in a situation where what you're currently using isn't suitable and you need to find something else. But understanding such things aren't exactly a prerequisite for being able to use them.

If you're finding the SFML syntax pretty straight forward to work with then I have to think there's a good chance that it will suit your needs for quite some time. If you find that it has limitations that are getting in your way then you probably want to consider looking at something else. For that matter, there really isn't anything stopping you from trying out different APIs at any time just to see what they're like. Though you'd probably want to have a bit of experience with one so that when you hold another against it you understand what you're comparing.

Though some tasks may be easier with one API over another, results will vary depending on the experience and tenacity of the developer.

You sound like you have some good tools at your disposal and it sounds like you'll be comfortable working with them. I say don't worry about what you don't have until you find an actual need for it.


Just to clarify things:

1: Would I need to look into Win32 API for Windows applications? Or may I continue using SFML if I get comfortable with it?

2: If I become comfortable with using SFML (+ Blender in future), could I continue to do so and still achieve the same outcome as is possible if one were using Unity?

To your second point, yes and no. SFML is only for 2D graphics (while unity supports 3D). You can integrate opengl into SFML and use SFML as a wrapper of sorts (I'm unsure about directx), but you'll still need to learn all the opengl and directx stuff. I keep SFML around in my opengl applications for audio/keypresses/mouse/etc, as I'm familiar with them, but that's not entirely necessary. Blender will certainly come in handy when you move onto 3D graphics. But, unlike Unity, SFML will not be all that much use when you move to 3d. OpenGL + blender could achieve the same outcome as Unity, more or less, but involve a lot more effort as Unity will handle a lot of things for you. It kind of comes down to whether you'd like to use a pre-made engine, or get into the details and do everything yourself. I'm more in the latter category, for better or worse, but don't take that as meaningful at all. You'd likely get a wide array of opinions on using a pre-made engine or not. They're just a tool, to be used or not, depending on a lot of factors.

As to whether Unity or SFML is right for you for 2D I couldn't say. Like Tom suggested above, perhaps just take a sampler approach and see what works. I know that when starting out, it can seem like whatever you start with is going to be what you're stuck with forever, but that isn't really the case, and picking up a new API or engine isn't that great an obstacle in the long term and you'll likely use many over the course of time.

But, that said, I would still definitely recommend starting with 2D games and getting really comfortable with things before delving into, or even concerning yourself with 3D graphics too heavily, especially if you're planning on developing alone. I should note, that, in my very limited experience, I'm finding 3D development in openGL to be much, much, much slower than creating a 2D game. Truth be told, after I'm done with my current project, I'll probably go back to 2D games for awhile. This may not necessarily be the case with Unity, but I can't speak to that as I haven't really used it in depth other than playing around with it. But, I think there's a reason most of the solo developers out there make 2D games rather than 3d ones tongue.png. Though, there are exceptions, to be sure.

Beginner here <- please take any opinions with grain of salt

SFML is an API. Why are you thinking you might need to look into learning the Win32 API?

Your question is probably a good example of one of the cons of going ahead on your own. Not understanding what an API is, what they're used for, and why you might choose one over another might hold you back if you find yourself in a situation where what you're currently using isn't suitable and you need to find something else. But understanding such things aren't exactly a prerequisite for being able to use them.

If you're finding the SFML syntax pretty straight forward to work with then I have to think there's a good chance that it will suit your needs for quite some time. If you find that it has limitations that are getting in your way then you probably want to consider looking at something else. For that matter, there really isn't anything stopping you from trying out different APIs at any time just to see what they're like. Though you'd probably want to have a bit of experience with one so that when you hold another against it you understand what you're comparing.

Though some tasks may be easier with one API over another, results will vary depending on the experience and tenacity of the developer.

You sound like you have some good tools at your disposal and it sounds like you'll be comfortable working with them. I say don't worry about what you don't have until you find an actual need for it.

Win32 for all the Windows based stuff. If I were to ever release something on the Steam market for instance wouldn't I need support for adding files and registry settings into a users file system? Doesn't only the Win32 allow access that deeply?

Or am I thinking too deeply here? tongue.png

Ignore, found THIS automatic installer creation process under Visual Studio.

I don't mind writing my own simple engine as if I ever get into DirectX or OpenGL I'll need to learn everything behind physics etc, which would be nice to throw in myself on even in 2D.


Just to clarify things:

1: Would I need to look into Win32 API for Windows applications? Or may I continue using SFML if I get comfortable with it?

2: If I become comfortable with using SFML (+ Blender in future), could I continue to do so and still achieve the same outcome as is possible if one were using Unity?

To your second point, yes and no. SFML is only for 2D graphics (while unity supports 3D). You can integrate opengl into SFML and use SFML as a wrapper of sorts (I'm unsure about directx), but you'll still need to learn all the opengl and directx stuff. I keep SFML around in my opengl applications for audio/keypresses/mouse/etc, as I'm familiar with them, but that's not entirely necessary. Blender will certainly come in handy when you move onto 3D graphics. But, unlike Unity, SFML will not be all that much use when you move to 3d. OpenGL + blender could achieve the same outcome as Unity, more or less, but involve a lot more effort as Unity will handle a lot of things for you. It kind of comes down to whether you'd like to use a pre-made engine, or get into the details and do everything yourself. I'm more in the latter category, for better or worse, but don't take that as meaningful at all. You'd likely get a wide array of opinions on using a pre-made engine or not. They're just a tool, to be used or not, depending on a lot of factors.

As to whether Unity or SFML is right for you for 2D I couldn't say. Like Tom suggested above, perhaps just take a sampler approach and see what works. I know that when starting out, it can seem like whatever you start with is going to be what you're stuck with forever, but that isn't really the case, and picking up a new API or engine isn't that great an obstacle in the long term and you'll likely use many over the course of time.

But, that said, I would still definitely recommend starting with 2D games and getting really comfortable with things before delving into, or even concerning yourself with 3D graphics too heavily, especially if you're planning on developing alone. I should note, that, in my very limited experience, I'm finding 3D development in openGL to be much, much, much slower than creating a 2D game. Truth be told, after I'm done with my current project, I'll probably go back to 2D games for awhile. This may not necessarily be the case with Unity, but I can't speak to that as I haven't really used it in depth other than playing around with it. But, I think there's a reason most of the solo developers out there make 2D games rather than 3d ones tongue.png. Though, there are exceptions, to be sure.

Thanks, yeah that was exactly my thought, I could always keep SFML and directly use OpenGL for the graphical stuff (if I ever get into 3D that is). One thing I am learning already is event handling and the "game" loop. Interesting to see it working in code.

Similar to when I did web development before, typing out in HTML, CSS etc was a lot more satisfying than using a pre-built software. Then again even understanding key aspects of DirectX/OpenGL will help me develop better in a pre-built engine such as Unity.

Either way discussing this topic has got me thinking a lot more deeply about the inner workings; so thanks everyone for the input.

One thing I am thinking, using InkScape or GIMP to develop vector graphics and textures. Although I'd like to try and draw art and scan it in maybe happy.png but we will come to that road when I get to it. I may be being overly ambitious here.

... and on that note, back to some coding and playing around with SFML wink.png

Releasing a Game?

One final question for me to understand when releasing a game. How does that actually work?

Because it is a console application, the console is launched. But if we use WinMain then its restricted to a Windows platform? And hence it isn't cross platform because its looking for "Windows".

If I were to release a game for Linux perhaps, or even Windows how would I go about this as I wouldn't need the console.

Thanks all :)

This topic is closed to new replies.

Advertisement