• Advertisement
Sign in to follow this  

Another 'How can I....' thread... sorry!

This topic is 3481 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Okay, so I'm a fairly competant programmer, versed in C++, C#, Windows Forms development, and quite extensive use of Actionscript (and some application of this into making very basic games), and good knowledge of the VS2008 IDE. I've wanted to get into game-creation using C++ for a heck of a long time, and ultimately every attempt I make always ends up in failure due to one resounding factor: There doesn't seem to be any specific 'rule of thumb' as to what you should spend your time learning. Let me be more specific. There are many, many talented people out there who can create games using C++. I mean, ultimately, everyone wants to be able to program their own 3D extravaganze, but really everyone has to start somewhere. But where is this elusive starting point? I've got books at home on C++, books on game development, but there's no real cohesiveness to it all. People are very quick to use throwaway comments like, "Oh, learn 'x' and you'll be fine" - but cite no literature or resources from which to use as a launchpad. So, to my question. I want to get started writing games using C++ - I'll probably have to start with something like GDI+ or something, since DX is well out of my reach. However, I want to become extremely (and I mean extremely) proficient at the basics before I crack on with the more advanced side of it. If that means spending the next 3 months creating a myriad of hello world apps, then so be it. Let's say that my intended destination (in the future) is DirectX. I know that means windows API programming and the like (something I've not yet done). Can someone give me a decent list of technologies / specific areas of programming I should be concentrating on - from the ground up? I.e. C++ inside and out, GDI programming, COM object etc. etc. I don't know, that's why I'm asking! I really appreciate any help anybody can give. I've tried asking this question in the past many years ago, and I didn't seem to get any decent answers from anyone who actually knows this stuff inside and out. It would be tremendously useful! Thanks again.

Share this post


Link to post
Share on other sites
Advertisement
As a start I suggest that you learn the very basic just to get things up and running. You can always go back and learn more advanced topics when needed. You don't have to know everything there is to know about C++, Windows, GDI or DirectX to create a game. Reading a book about Game Programming seems to be a good start.

Share this post


Link to post
Share on other sites
Quote:
Original post by PixelPrime
However, I want to become extremely (and I mean extremely) proficient at the basics before I crack on with the more advanced side of it. If that means spending the next 3 months creating a myriad of hello world apps, then so be it.

Let me just begin by saying you've already got the most important thing it takes to get started - the motivation. As long as you can stay true to your word, I'm 100% sure you will be sucessful in starting out after following all the advice that the people here will offer you.

The reason I'll stay quiet is that I myself am more from the OpenGL side of things rather than DirectX (but I'll tell you this much, it doesn't matter which you use as you can do equivalent things in both).

Quote:
Original post by PixelPrime
Okay, so I'm a fairly competant programmer, versed in C++, C#, Windows Forms development, and quite extensive use of Actionscript (and some application of this into making very basic games), and good knowledge of the VS2008 IDE.

I want to get started writing games using C++ - I'll probably have to start with something like GDI+ or something, since DX is well out of my reach.

To be honest with you, I wouldn't recommend starting out with GDI+ or similar older technologies. They're probably no less complicated than DX itself, and may not be the best starting point.

My advice, as far as learning things, would be like this:
1. Learn C++.
2. Start using C++ with DirectX or OpenGL.

There are probably tons of tutorials out there that'll explain how to setup a window and let you draw some primitives (triangles, etc.) on there.

Using that knowledge, try to make a tetris game. That's usually a great starting game, if you can do it without getting bored and actually complete it, you KNOW you're on the right track.

Quote:
Let's say that my intended destination (in the future) is DirectX. I know that means windows API programming and the like (something I've not yet done).

Do you want to make games for Windows only, or would you prefer them to be multiplatform? In either case, it might be a good idea to use a window creation library like SDL or similar to take care of things like creating a window, getting input, etc.

P.S. If you want to know where I'm coming from, feel free to take a look at using OpenGL. I use a library called GLFW to create windows/get input. Take a look at this document right here, see if it's to your liking.

Good luck!

Share this post


Link to post
Share on other sites

Ok, where to start... [smile]

Quote:
Original post by PixelPrime
I want to get started writing games using C++ - I'll probably have to start with something like GDI+ or something, since DX is well out of my reach.


Let's cut down this myth first. Obviously DX is a bit more obscure than GDI+ and the might be some more particularities, but in the end it's just an API. Either way, you'll need to get generic concepts down, like your typical rendering loop, some maths and many other common topics. After you take the initial DX hurdle of working with sprites and/or 3D stuff, I'd wager it'd actually be easier to code games in DX.

Quote:
There are many, many talented people out there who can create games using C++. I mean, ultimately, everyone wants to be able to program their own 3D extravaganze, but really everyone has to start somewhere. But where is this elusive starting point?


Anywhere you like really, the sky is the limit [wink]

Seriously, I don't think there is a clear-cut answer to this. A lot depends on your current skill and the amount of time you can or are willing to dedicate to your game, but there is no fixed path like Pong -> Arkanoid -> Oblivion. Likewise, it isn't always productive to start with 2D when you actually want to create a 3D game.

I'd advise you to get busy coding on some tech demos (looking at and implementing relatively isolated samples, specifically with a game idea in mind). While this does not provide all the insights to game coding, it'll give you a good feel for the API and the common pitfalls, plus you'll get some pretty looking things to show off and feel proud off. Simultaneously, you could start coding at a bigger, more coherent game or larger demo, so you get some hands-on experience on making everything work together and figuring out all the things that might have seemed trivial.

This can be a daunting approach and it'll occasionally get you down (that's my experience at least), but I personally think this is the way to get going towards your goal, instead of getting bogged down on some clone you don't really want to make.


Quote:
I've got books at home on C++, books on game development, but there's no real cohesiveness to it all. People are very quick to use throwaway comments like, "Oh, learn 'x' and you'll be fine" - but cite no literature or resources from which to use as a launchpad.


Again, just learn and do what interests you, while keeping a coherent project going to tie everything together (switch projects if you hit a wall, polish if you can and feel like it).

Quote:
However, I want to become extremely (and I mean extremely) proficient at the basics before I crack on with the more advanced side of it. If that means spending the next 3 months creating a myriad of hello world apps, then so be it.


This way might work, but I found it didn't suit me anyway. Writing piles of samples is no replacement for actually coding a working game, in terms of learning experience. Again from my personal experience, I wrote some relatively advanced samples, but getting everything to work together to make a coherent game proved to be quite a bit harder.

Quote:

Let's say that my intended destination (in the future) is DirectX. I know that means windows API programming and the like (something I've not yet done).

Can someone give me a decent list of technologies / specific areas of programming I should be concentrating on - from the ground up? I.e. C++ inside and out, GDI programming, COM object etc. etc.


Either go GDI or DX, learning both isn't all that productive. I'm no C++ coder, but from what I heard DX actually abuses the COM standard quite a bit, so there's no point in becoming a COM master anyway (please correct me if I'm wrong). Without getting involved in a C++ vs C# discussion, you might also want to check out XNA, which can be a bit easier to get started with than DX.

Quote:
I've tried asking this question in the past many years ago, and I didn't seem to get any decent answers from anyone who actually knows this stuff inside and out. It would be tremendously useful!


Well, the point is that there is no perfect way of going about this. I hope my reply proves somewhat useful, but it isn't the be-all-end-all way to get busy on coding a game. It's only what I've found to work best from my experience so YMMV as usual [smile]


RandomPixel's advice is also sound and probably is a bit more concise [grin]

Share this post


Link to post
Share on other sites
If you're going to learn DirectX then just learn DirectX and get coding ;) Skip learning one APi only to learn another as they're not going to be any less complicated and DirectX is pretty simple and clean itself.

Good luck, it's pretty straight forward. Just follow some tutorials to get up and running and then get one with making a game (or whatever your goal) just don't get bogged down with making an engine.

Andy

Share this post


Link to post
Share on other sites
Thanks to everybody who's posted a helpful and concise reply to my question. I've found your collective input extremely useful and valuable - this community certainly has a very well-versed range of technical knowledge.

I appreciate everyone taking the time to assist me, I will be putting this motivation into practice very soon, and will hopefully be breaking, nay, crashing through that 'pain' barrier very soon!

With kindest of thanks,
~PP

Share this post


Link to post
Share on other sites
C++ tutorial. That ought to help out in learning C++. Long line of tutorials. Good explanations. Just a tip, when you get to pointers, research into implementing "Linked Lists". I did not understand the use for pointers until I read about those. Good luck!

Share this post


Link to post
Share on other sites
You may also want to look for the free online books "Thinking in C++" and "C++: A Dialog." Since you already have some C++ experience you don't need to read them cover-to-cover, but they can work well as refreshers for some concepts you may have forgotten or don't feel as comfortable with.

Share this post


Link to post
Share on other sites
Quote:
Original post by PixelPrime
There doesn't seem to be any specific 'rule of thumb' as to what you should spend your time learning.

We don't need no stinking rule of thumb!

Share this post


Link to post
Share on other sites
What I found useful for learning is to get a few books on each subject that I would like to learn and go through them. I went through three C++ books now I am learning SDL and it's all tying together quite nicely. (Three books may seem like overkill however each author writes code differently so its nice to see different things from different perspectives.)

For learning SDL I use LazyFoo's website with a sprinkle of Focus on SDL. I found I learned a lot more by breaking everything LazyFoo did down to its basic level to see why he was creating the functions he was creating. This helped me learn a lot more about SDL and I feel that by the end of the month I should be through his tutorials and have enough knowledge to create a small game :)

So in short, read through some C++ books, start learning SDL (or whatever else you wish)

Share this post


Link to post
Share on other sites
Like Nike: Just do it!
Like me: Stick with it!

It doesn't matter where you start. There's no real answer to your question because everyone is different. While I started learning C++ I was building a text-based RPG before I even knew what a class or structure was. When I started learning Direct X I started building an MMO. The point is you can start anywhere, on any game. Recreate one or make your own, it doesn't matter. The experience and wisdom will always come with practice, and that's what you need to do: practice.

Good luck!

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement