Trying to break into more adv. game prog. areas

Started by
2 comments, last by CowKing 9 years, 10 months ago

I've been programming games for a little while now, but only in C#/Unity. Unity is fine for what I want to make, and is fast enough. The only thing that's been bugging me is that I'd like to work at a (relatively) large company in the future, and everywhere I look it's C++ this and C++ that. I'm a fairly competent programmer, but I just haven't had enough time to really practice more advanced topics like engine development.

What I'd like to do with this personal self bettering:

  • Learn ins and outs of C++.
  • Develop a good knowledge of Multi-threading software architecture.
  • Create a software renderer (IDK, it just seems like it would be fun).
  • Create a separate OpenGL renderer.
  • Ideally, make all custom made Physics/Audio library.
  • Have the engine be cross-platform

Now, What I want to make clear, and I don't know if I can stress this enough, is that I won't be using this for any sort of commercial product whatsoever. Nada.Zip.Zilch. This is more of a way for me to just dick around with stuff in my head. I'll use Unity if I want to actually make a game.

So, I'm wondering if you all could help point me in the right direction for some of these topics. I've looked online for a lot of this stuff, but I thought I would seek wisdom from the elders.

Where's a good place to learn C++ syntax? Everywhere I look it's just aimed at pure beginners that don't know what a variables is.

Advertisement

if you're sure you can handle C++ without a book check these:

C++

http://www.cplusplus.com/reference/

http://msdn.microsoft.com/en-us/library/3bstk3k5.aspx - You probably already know that.

http://www.arcsynthesis.org/gltut/ - about openGL, a colleague of mine told me that these tutorials are good.

So, the first thing to know is that by having started with C#, you have a beginning understanding of C++ syntax already. There are fundamental differences mostly in the structure and declaration of things but the core portions of the languages are very similar such that actually coding things and applying logic isn't going to change too horribly. The largest differences are going to be in class declarations, how h(xx/pp) versus cpp files are used and other trivial, but important, items which take a while to work through.

Having said that, if you have a pro license for Unity you could simply start off by writing some plugins for Unity. Even without the pro license you can still write external helpers and use networking to communicate back and forth, though that may easily be too much to start off with.

Anyway, for C++ by itself given the listed goals. I'd actually *start* by looking at the build systems first. If you want to target cross platform eventually then don't put off learning how to do it. Trying to unwind code from compiler, library, OS etc differences at a later date is nearly futile. Start out coding that way if it is where you want to end up. As to your choices, you know you are biting off a lot though I'd question the need/desire/utility of writing physics and audio libraries yourself. The other items are pretty solid items to learn and even while large, the software renderer will likely show a lot of things many programmers never see in terms of math and related.

In general though, if you start these things, you will learn C++ by osmosis as you go. The one thing I highly suggest is keeping things simple to start with. Don't try and learn/use every feature of C++, start with the minimal set you can to do the work. Only jump to new features of the language as you have become solid with the ones you are using and also make sure you *need* a feature before you use it. For me, I think that one of the most important things to learn early on is pointers, arrays and how to work with those "low level" features of the language prior to jumping on the shared pointer band wagon. It is amazing how many recent folks simply don't know how to use simple pointers and it really cripples them moving forward, even when using STL and the likes.

Anyway, this is a pretty huge subject. I personally suggest just jumping in since you know C# to a degree and there is similarity. If that doesn't work, Amazon is rife with C++ beginner books.

if you're sure you can handle C++ without a book check these:

C++

http://www.cplusplus.com/reference/

http://msdn.microsoft.com/en-us/library/3bstk3k5.aspx - You probably already know that.

http://www.arcsynthesis.org/gltut/ - about openGL, a colleague of mine told me that these tutorials are good.

Yeah, I've seen both of those reference websites, but it's comforting to know that I'm already looking at resources that other people would recommend. That OpenGL guide is really good, by the way.

So, the first thing to know is that by having started with C#, you have a beginning understanding of C++ syntax already. There are fundamental differences mostly in the structure and declaration of things but the core portions of the languages are very similar such that actually coding things and applying logic isn't going to change too horribly. The largest differences are going to be in class declarations, how h(xx/pp) versus cpp files are used and other trivial, but important, items which take a while to work through.

Having said that, if you have a pro license for Unity you could simply start off by writing some plugins for Unity. Even without the pro license you can still write external helpers and use networking to communicate back and forth, though that may easily be too much to start off with.

Anyway, for C++ by itself given the listed goals. I'd actually *start* by looking at the build systems first. If you want to target cross platform eventually then don't put off learning how to do it. Trying to unwind code from compiler, library, OS etc differences at a later date is nearly futile. Start out coding that way if it is where you want to end up. As to your choices, you know you are biting off a lot though I'd question the need/desire/utility of writing physics and audio libraries yourself. The other items are pretty solid items to learn and even while large, the software renderer will likely show a lot of things many programmers never see in terms of math and related.

In general though, if you start these things, you will learn C++ by osmosis as you go. The one thing I highly suggest is keeping things simple to start with. Don't try and learn/use every feature of C++, start with the minimal set you can to do the work. Only jump to new features of the language as you have become solid with the ones you are using and also make sure you *need* a feature before you use it. For me, I think that one of the most important things to learn early on is pointers, arrays and how to work with those "low level" features of the language prior to jumping on the shared pointer band wagon. It is amazing how many recent folks simply don't know how to use simple pointers and it really cripples them moving forward, even when using STL and the likes.

Anyway, this is a pretty huge subject. I personally suggest just jumping in since you know C# to a degree and there is similarity. If that doesn't work, Amazon is rife with C++ beginner books.

Thank you so much, and you're right on everything. I can read a lot of C++ code do to specific problems I've had in C#, but whose examples/solutions were written in C++. About the whole Physics system, I didn't really think I'd write anything robust; maybe just have a sphere that can bounce/roll/stop, do raycasting. Nothing too advanced where tons of systems are interacting with each other.

This topic is closed to new replies.

Advertisement