Jump to content

  • Log In with Google      Sign In   
  • Create Account

FREE SOFTWARE GIVEAWAY

We have 4 x Pro Licences (valued at $59 each) for 2d modular animation software Spriter to give away in this Thursday's GDNet Direct email newsletter.


Read more in this forum topic or make sure you're signed up (from the right-hand sidebar on the homepage) and read Thursday's newsletter to get in the running!


Indie Game Development - My Path Options?


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
11 replies to this topic

#1 mikeo01   Members   -  Reputation: 175

Like
4Likes
Like

Posted 08 July 2014 - 02:56 PM

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.


Edited by mikeo01, 08 July 2014 - 02:59 PM.


Sponsor:

#2 Misantes   GDNet+   -  Reputation: 1228

Like
3Likes
Like

Posted 08 July 2014 - 04:58 PM

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:

https://www.youtube.com/watch?v=kAbkFY6lwAY&list=PLHJE4y54mpC5j_x90UkuoMZOdmmL9-_rg

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 :P


#3 Glass_Knife   Moderators   -  Reputation: 5056

Like
6Likes
Like

Posted 08 July 2014 - 05:22 PM

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"
Indie Game Programming

#4 minibutmany   Members   -  Reputation: 1681

Like
2Likes
Like

Posted 08 July 2014 - 05:52 PM


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.

#5 Tom Sloper   Moderators   -  Reputation: 10173

Like
3Likes
Like

Posted 09 July 2014 - 09:40 AM

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 Productions
Making games fun and getting them done.
www.sloperama.com

Please do not PM me. My email address is easy to find, but note that I do not give private advice.

#6 mikeo01   Members   -  Reputation: 175

Like
0Likes
Like

Posted 09 July 2014 - 02:37 PM

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. 



#7 kseh   Crossbones+   -  Reputation: 2205

Like
1Likes
Like

Posted 09 July 2014 - 04:05 PM

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.



#8 Misantes   GDNet+   -  Reputation: 1228

Like
0Likes
Like

Posted 09 July 2014 - 04:59 PM


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.


Edited by Misantes, 09 July 2014 - 05:26 PM.

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


#9 mikeo01   Members   -  Reputation: 175

Like
0Likes
Like

Posted 10 July 2014 - 12:22 PM

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


Edited by mikeo01, 10 July 2014 - 12:28 PM.


#10 mikeo01   Members   -  Reputation: 175

Like
0Likes
Like

Posted 12 July 2014 - 04:24 AM

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 :)



#11 Misantes   GDNet+   -  Reputation: 1228

Like
1Likes
Like

Posted 14 July 2014 - 04:58 PM

Linux has a console (terminal) as well. It works similarly as it does windows side, with some exceptions of course. But, for simple SFML games and such,  you shouldn't need to change your code much (if at all). You'll just launch a terminal with the game (if you're using an IDE, this should be done automatically. If not, you will need to compile a little differently). Most of mine compile just fine on either OS. Linking your libraries may be slightly different on each platform, but otherwise you shouldn't run in to too much trouble. Depending on whether you're using static or dynamic libraries, and depending on the library, you'll likely need to substitute in the correct library files(i.e. download the linux SFML files and then link them for linux before you compile there)

 

I don't generally do much on windows these days though, so perhaps someone has better advice. But, for simple games, I know everything I compile on Linux compiles just fine on Windows as well with C++, OpenGL, and SFML.

 

But,  perhaps just try making something simple and then cross compiling with your other OS and see how it goes. If you haven't cross compiled before, I find the simplest way (at least for small games) is just to take the same code, log over to your other OS, open it up with whatever IDE you use, and try to compile it there. I generally get a few library errors that are generally easy enough to sort out, but that's about it.

 

But, again, I'm pretty inexperienced with developing for windows, so perhaps someone will come along with more complete advice smile.png


Edited by Misantes, 14 July 2014 - 05:04 PM.

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


#12 GoCatGo   GDNet+   -  Reputation: 1637

Like
0Likes
Like

Posted 14 July 2014 - 05:56 PM

First off, Best of Luck!  Game development is fun, challenging, maddening, frustrating, exhilerating, and -- let's face it -- cool.

 

You've been given some very good advice above.  All I can add is the following:

 

  • Use whatever helps you, chuck out what doesn't.  I love books that discuss the thought process behind coding, but I do just generally like reading.  I also hack at ideas until they work, watch tutorials, and rip apart any code I can find (like the publically available Hexen sourcecode) just to see how it works.  Do whatever moves your creativity and learning forward.
  • Use lots of tools.  Carpenters don't focus on only working with one hammer and every once in a while a particular saw.  They use the right tool for the right job.  Unity, OpenGL, C++, a particular IDE... these are just tools.  Know their uses and be proficient with how and when they are needed.  Never take a knife to a gun fight!
  • Make something.  Anything.  Hell, make a text-based game.  Make games and make them often.  Be proud of what you accomplished and learn where you are weak.

Indie games are what indie movies were in the early 90s -- half-baked, poorly executed wastes of time that will quickly fall out of fashion.  Now go make Minecraft with wizards and watch the dozen or so remakes of Reservior Dogs.





Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS