Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon

14. November 2011

 

Chapter 8 of the GFS beginner C++ tutorial, Pang! is now live and can be accessed here.

 

 

This chapter represents a bit of a break from the norm, in that it deals with code design more than it does actual SFML and game implementation.  I actually had a great deal of fun writing this chapter, but the end result is very little usable code.  There is a companion post to this one that illustrates much better use of SFML’s audio classes, that should be up shortly.  That said, I think you could learn a great  deal from this post, it may even alter the way you program!

 

 

Instead this post introduces the concept of design patterns and illustrates a way to de-couple  your code, so you don’t end up littered with global and manager classes.  It covers a concept that I have never seen covered by a game tutorial before, but then, there might be a good reason for that! Winking smile

 

 

So give it a read and let me know what you think.  Would you like to see more posts like this, or would you like me to focus on more implementation specific aspects?

Programming ,

27. October 2011

 

Yeah, I really took my sweet time on this one, but things are better the longer you wait, no? Smile

 

 

In this chapter we get the ball rolling, literally.  Additionally we add collision detection and realistic rebounds.  On the C++ front, we introduce and discuss the various types of casts in C++.

 

For those of you that haven’t read it yet, the Pang C++ Tutorial table of contents is right here.

 

For those that have been following along, Pang Part 7 is here.  As always, full project source is included at the end.

 

 

And here Pang, the worlds most over-engineered pong clone in action!

 

pang7

Programming , ,

25. September 2011

 

Ok, it actually has been live for a couple days and I forgot to post an update here, oops.

 

 

In this chapter we add animation to our PlayerPaddle class, including player keyboard input.  We cover off topics such as running at the same speed on multiple machines, dealing with protected member variables and using asserts.  Now, I’m off to write part 7.  I swear this is going to make the Guinness world record for the longest Pong tutorial ever!  I hope it’s been useful, please let me know any questions, recommendations or comments you have.

 

 

I proudly present Game From Scratch C++ Edition Part 6.

, ,

15. September 2011

 

I recently had a user who tried to run Pang on MacOS and there were a few incompatibilities.

 

So today, I fired up my trust old iMac and created my first ever C++ Application in XCode 4.1 and I have to say, it really wasn’t all that pleasant of an experience!

 

 

First off, about Pang.  There are a few small changes that don’t work on the iMac using GCC 4.2.  First is there is no tchar.h header file.  On the same thought, Microsoft’s _tmain is not portable and the entire targetver.h header file doesn’t work.  Reality is, none of these are really a big deal as we are not using any Windows specific features, nor are we supporting Unicode parameters to our main(), so it is all a pretty easy fix.  Simply delete all of these includes, remove targetver.h completely and change make to a traditional main().

 

 

Code wise, there was one gotcha.  GCC 4.2 does not support calling a nest enum’s name.  For example if you have the following:

struct Colour { enum DefinedColours { Red, Green, Blue }; };

 

You can’t do this:

Colour::DefinedColours::Red;

 

Instead you have to do this:

Colour::Red;

 

Which is a shame as I find the one much more readable than the other, but no big loss.  Going forward I will be compiling on both Windows using Visual Studio and Mac OS using XCode/GCC 4.2, so if you are following along using a Mac ( or GCC with CodeBlocks ) the code will be guaranteed to work.

 

 

Now, about XCode.  I will admit this is my first real experience with it.  I played around with 3.x when I first looked into iOS development but never really got a chance to try out 4.1.  I like the idea that they went to a single Window, as a VC developer  XCode 3.x was very alien.  That said, this is about where my likes end.

 

Nothing was intuitive, intellisense ( or whatever it is called in non-Microsoft parlance ) is SLOOOOOOOWWWWWW, the interface is extremely cluttered, the project/scheme system seems odd ( with time this might improve ), the debugging experience was not fun ( weird focus issues with my running application ).  Then worst of all, I had to spent a good 20 minutes figuring out where the hell my compiled application even ended up!

 

Through this experience, as a complete newbie I had to Google a lot and I noticed two trends.  First, all the documentation for earlier versions is useless… its like every single keyboard shortcut and menu was changed completely.  Second, the hate seems to be pretty universal!  Every time I would Google something, half of the answers would be “screw it, stick with 3.4” or similar.

 

That leads me to my question to you Mac C++ developers out there… Does Apple have a bit of a turd on their hands with XCode 4.x, or will it get better as I get used to it?  If not, what IDE are you all using for C++ development on Mac?

 

 

Anyways, long story short, from Pang part 5 on, Mac/GCC will compile unchanged out of the box.  That said, this tutorial is still going to focus on Visual C++ Express as the IDE of choice.

Programming ,

13. September 2011

 

 

I was trying to figure out a way to work a “Johnny Five is Alive!” Short Circuit reference into the title and failed hard…  anyways, the next chapter/part of Game From Scratch C++ Edition is now live although I promise you I will be doing edits. 

 

 

In this part we create a game object manager, aptly called GameObjectManager to organize and manage game objects.  It may seem like a bit of a waste of time but trust me, in time this little class is going to seem exceptionally powerful!  On the bright side, it will give you more exposure to the standard library classes, especially std::map and std::for_each, both of which you will use over and over again from this point on.

 

 

Is it massive overkill for a pong clone?  Yes, very much so!  But truth told, this series is little about the actual game and more about how to create a “real” game instead of a demo.  So, even though this game is quite trivial in it’s scope doesn’t mean we can’t have a certain amount of complexity.  When we are done this process my ideal is you can walk away and make just about any type of game, not just a trivial pong clone.  This is why at times things may seem a bit overkilled.

 

Truth told, I don’t know if I blew the difficulty curve on this post.  I feel compared to the last post, I may have ramped up the difficulty and done a poor job of explaining things, please let me know if this is the case!  If things are confusing or unclear or just simply wrong, let me know and I will address them!

 

 

Well, without any further ado, I present Game From Scratch   C++ Edition     Part5.

Programming ,

Month List

Popular Comments