A well-deserved & probably one of the best 2D Game Programming Books out there today that includes a finale section on Multi-Player Online Networking! Superb! You're in for some exciting & challenging learning.
First, for the Book Errata & all its code Projects please see [...] This site is the best reference. I downloaded all the projects & studied a lot of the code. It's all well-documented. I ran nearly all of programs & they work fine.
Moreover, here are some other Errata TYPOS I found: I corrected it here. I also posted this in the Forum of Charles' website.
pg89. 2nd paragraph: keysPressed
166 under Listing 6.19 at end of paragraph: An entity's position....
188 right above Listing 7.3: xactParams.lookAheadTime =XACT_ENGINE_LOOKAHEAD_DEFAULT
214 Graphics::loadTextureSystemMem: 1 of the parameters should say UINT &width
281 under Listing 9.30: Any function from the MessageDialog class......
282 under 9.7 Section: IDirect3DDevice9::SetDialogBoxMode
302 in next to last bullet mark: Entering the word "next" displays a second dialog.
413 under Chapter Review: UDP/IP
I read this book twice. It's fascinating & enjoyable. I will gladly recommend this book which focuses on 2D Games to any interested gamer. Gaming is easier said & played than done. Charles definitely has a passion for this knowledge & does a excellent job conveying it. The journey Charles takes you is in stages, with each one building upon each other in a educational way to eventually forming a full functioning game for you. You will explore the game engine's thoughtful design that can be re-used on a variety of games you would like to make.
Pre-requisites: C++ which is Object-Oriented Programming Language, Vector Tutorial in case you need more help than what's in the book. Otherwise, anything else like Windows, Directx you'll be able to learn easily. You don't need to know COM but it will help you understand why Interface pointers, or calling Release , Delete Methods are needed for DirectX.
Throughout the book you'll encounter a lot of un-obvious code info. which can't be overlooked because it is important in DirectX & in the game. Take the time to at least know how the code works. To say a little about it, there's initializing the device, maintaining memory, textures, displaying graphics on the screen, checking monitor compatibility, etc. The book defines Graphics terms such as primitives, rendering, textures, mutex, quad, sprites with ease.
In a nut shell you will learn:
Windows Programming Fundamentals - minimum to use DirectX.
Directx Object, Devices - initializing, accessing , maintenance, memory management of them & other info.
Game Engine - fundamental elements
Frametime -the difference between the time of 2 frames. The calculation used is more accurate than compared to other methods because it factors other things Windows does in the game loop. Game items use Update function which has the parameter frametime to regulate the speed & animation which makes everything run in sync.
Graphics Pipeline , Primitives, Textures, Colors to use on Textures as Filters & Transparency, Sprites
Collisions: BOX, ROTATED BOX, CIRCLE, ROTATED BOX with CIRCLE Collisions
Physics: used with Collisions on Objects, Game Screen, apply gravity force to show acceleration, gravitational pull or reversal
KNOW Vectors: It has length & direction & when used in a period of time (speed) is a Velocity Vector. It can be placed anywhere like on a 0,0 coordinate system. It has a variety of uses in game like in Collision Detection & Reaction. Do Study the Vector Diagrams in the errata in the forum & not in the book because some are wrong.
Input - keyboard: 1. for typing info. for the game 2. to control object's movements
XBOX 360 controller: thorough details on how to program all the buttons including the motor vibrations. Watch out for the dead zones!
For both inputs, the Input Class has a list of functions for setting & getting values for these inputs, clearing keys, assigning certain character like ESC to Window's VIRTUAL KEYS, etc..
Audio - learn how to record, save files in a certain format that can be used with XACT. Use XACT in the game & modify certain sound settings without changing code. You don't need to design an audio engine.
TEXT - 3 Types: pre-rendered text -image file, SPRITE vs DirectX Text. There's a nice TextDemo Program that utilizes different features of these texts.
Console Programming- entering commands to change things in the game
Message Box - display info. to the user
InputDialogMessageBox- user can enter info. in a textbox
Scrolling - with object in center & Bitmap background image scrolls in opposite direction of the input you provide, Parallax scrolling
Reflection, Shadows - also can help object position itself onto a surface for dropping a bomb, landing, or other reasons
Parallel projections: (orthogonal, oblique, stagger, isometric) For a 2D Game you probably will mainly use Orthogonal Projection.
Layers - how to apply them in a 2D Game with the parallel projections, painter's algorithm
Making a Dashboard - items that display or control things (with mouse input) on the screen
Tiled Games - creating a Tile Set, Creating Levels, Displaying Tiles, Isometric Terrain, Elevation Layer. One program includes a mapfile text that is loaded into the map tile array which is efficient for modifying your tile maps on the fly.
Game Project Team Management-using a various form of evolutionary prototyping
Network Programming - This is well-rewarding not only because you have come this far, but now this section will teach you how to transform your game to a multi-player online game. WOW! Other books I have come across, unfortunately don't talk about this topic & probably only a few do. I always wanted to learn how to do this so I was happy this was included. The first program lets you exchanges messages between a client & server. The router at both ends would need to be configured for port-forwarding to work beyond the local network. With the current average internet bandwidth speed at home, you can easily have multiple computers each having 2 players connect online with a server & play the SpaceWar Network Game.
The book should have stated at the beginning that it uses Directx9 especially since it was published in 2012. Also it should make it known more that you need to learn C++.
The book uses Visual Studio Ultimate & not the free Express Version I use. My only problem was viewing the Class Diagrams.
The book lacked diagrams like Function, Pseudo-code to explain the entire game engine & the game itself. This would have made it easier to study the several files (header, source) that the projects use & piece everything together.
On certain programs, the way the objects move in response to input didn't work well. The SpaceWar Program, for example, doesn't make it easy to avoid frequently crashing into the planet.
This makes a wonderful gift & should be your top-choice for reading about 2D Game Graphics Programming. ENJOY!!