Learn Python Game Programming


What better way is there to learn a programming language than with a game-oriented approach? If you ask the many readers that have made this book’s prequel, PYTHON PROGRAMMING FOR THE ABSOLUTE BEGINNER, a bestseller, they’ll tell you – there isn’t one. MORE PYTHON PROGRAMMING FOR THE ABSOLUTE BEGINNER offers readers more practice, more exercises, and slightly more advanced instruction in Python programming, all while using the game-focused examples and projects that have proven to be both effective and fun.

It picks up where its prequel leaves off, addressing data structures, file handling, exceptions, object oriented programming, GUI programming, multimedia programming, name spaces, and program planning. Following a deliberate, logical progression of topics that cover increasingly complex subject matter, this is a powerful resource that will arm readers with an in-depth knowledge of the Python language.

This book was marketed as a follow-up to the previous Python book, but in reality it covers a whole new library–PYGAME–which was not in the previous book by another author. This is an excellent resource if you’re new to Python and want to get familiar with the language while making small, simple games in the process.

Portfolio Page


Teach Yourself Windows Phone Game Programming

Windows Phone


Now, there’s a practical, hands-on guide to mastering game development for Windows Phone 7 with Visual C# 2010 and XNA Game Studio 4.0. One step at a time, this book teaches all facets of mobile game development, from design through publishing via Microsoft’s Marketplace. Top game development author Jonathan S. Harbour starts with the absolute basics, making Windows Phone game development accessible even to programmers who’ve never written a game before.

Then, one step at a time, he shows how to use Microsoft’s free XNA toolset to design and construct high-performance, highly-playable games for the newest Windows Phone 7 devices. Friendly, accessible, and conversational, this book delivers a practical grounding in Windows Phone 7 game development without ever becoming overwhelming or intimidating. Each lesson builds on everything that’s come before, helping readers learn core techniques from the ground up. Readers learn key concepts, syntax, and techniques through short, practical examples that reflect the realities of modern mobile game development.

If you are using a Windows Phone 8 device, the code will still compile for it with XNA 4.0.

Portfolio Page


Man of Steel 2 (aka Batman vs Superman)

I am a big fan of comic books but have been out of touch with the goings-on in the comic industry for the last 4 years, having bought only a few graphic novels and focusing on films. Recently, I got back into comics again, subscribing to my favorites (via local store Kenmore Komics) and getting up to speed on what has happened to my favorite characters during my hiatus from reading for so long.

The last few years have been dominated by Marvel in a big way with the extremely popular Iron Man films starring Gwyneth Paltrow and Robert Downey, Jr., not to mention the awesome Jeff Bridges (whose presence had a lot to do with the huge success of the first film, and mediocre reception of the second). Following Iron Man, we were treated to The Incredible Hulk, Thor, Captain America, and the astounding Joss Whedon film, The Avengers, which brought them all together. As much fun as this has been, I have to admit that I need a break from Marvel–maybe I’m going through Marvel overload. So, I’ve returned to reading DC and Marvel again.

Of course, I was already used to DC Comics and Marvel rebooting their series from time to time. This happened in 2008 with DC’s “52” event and Marvel’s “Secret Invasion” event (a cross-issue storyline that affects all of the characters by a particular publisher). So, I was not surprised to find Avengers #1 and Iron Man #1 again as the latest issues. What did surprise me, though, was the huge changes made by DC Comics to their universe!

All of the DC characters have been rebooted as of late 2011 with the “New 52” event. Every character has a new origin story set a mere 5 years in the past, and all comic series now follow a synchronous issue number (1, 2, 3, 4, etc), with all of them presently at #15. I can understand the benefit of doing this to attract new readers. Let’s face it, unless you’re a long-time subscriber or serious collector, you probably aren’t going to be able to keep track of how the various comics relate to each other, with some original series (namely, Action Comics and Detective Comics) retaining their original sequence since the 1930s (up in the 800s). I’ve always thought comic publishers should adopt a series or season number and sequentially number the issues 1 to 12, like any other magazine. Rebooting seems to attract attention, though, appealing to the amateur collector any time there’s another #1.

The scope of effect for this New 52 reboot is comprehensive across the DC universe, affecting every comic. In fact, DC officially cancelled every comic issue being published at the time and launched 52 new issues (which began in September, 2011). Here are just a few:

  • Action Comics
  • Detective Comics
  • Superman
  • Justice League
  • Wonder Woman
  • The Flash
  • Batman
  • Nightwing
  • Batman & Robin
  • Catwoman
  • Green Lantern

As primarily a Batman fan, I am buying the half dozen or so Batman titles and a few Avenger titles from Marvel. And in fairness to Dark Horse, which has been ignored in this piece, I do read any new Aliens and Star Wars titles they release.

It surprises me how many fans have strong opinions about the new Batmans vs Superman movie, which will also feature Wonder Woman and Cyborg, considering many opinionated souls have never actually read the comics. I may be way off base here–I doubt it, but still–but the most highly agitated fans seem to be the watchers rather than the readers, who tend to be a bit more sophisticated. I guess we’ll just wait and see what Snyder comes up with.


Visual C# Game Programming for Teens


Learn how to create your own role-playing game (RPG) with VISUAL C# GAME PROGRAMMING FOR TEENS! A true beginner’s guide, the book covers each essential step for creating your own complete RPG using Windows Forms and GDI+, including a tiled scroller, game editors, and scripting.

While some experience with Visual C# is helpful, this book is an introductory guide for readers who are new to programming or new to programming for games and want to learn the basics of RPG game mechanics (based loosely on the D&D rules).

You will learn by studying the short examples in each chapter, building the complete RPG called Dungeon Crawler as you move from one chapter to the next, with new features and game play elements added in each new chapter.

Along the way you’ll discover how to load and draw bitmaps, create sprites, render a game world, keep track of inventory and character stats, and build tools including a level editor, character editor, item editor, and monster editor. And the finished Dungeon Crawler game includes all the source code and tools you’ll need to make your own awesome RPGs with loads of cool features and functionality.

Portfolio Page


Revisiting Why XNA Is Not Totally Abandonware

This book had a promising future until Microsoft left XNA developers out in the cold. Here was the blurb:

Discover how to create exciting and challenging games for the Xbox 360 using XNA Game Studio 4.0 and the Visual C# programming language. XNA Game Studio 4.0 for Xbox 360 Developers provides experienced game developers with a comprehensive overview of the XNA Framework, providing all the tools, source code, and information you need to develop Windows and Xbox 360 games.

You’ll find an introduction to programming in XNA, the XNA Framework, and all the new features included in XNA 4.0 to get you started. The bulk of the book focuses on the XNA Framework, in particular the features of the Xbox 360, including the controller, playing audio, and creating graphics.

The final part of the book covers the major features of Xbox Live, including creating and rendering an avatar, 3D programming, loading and rendering a mesh using a basic shader, and networking via system link and online.You’ll tie together all the skills you’ve learned in a final game project that demonstrates the networking capabilities of XNA and acts as a rudimentary, sprite-based networked game engine for your own projects.

It’s still a good reference for anyone working with XNA for the Xbox 360 or Windows Phone, and is still being used in academia. Personally, I was never much of a fan of XNA. It didn’t feel right to me from the start, and I expressed that opinion frequently over the years. If I were inclined to make an indie game for Xbox or Windows Phone today, I would refer to this book again, because it’s the only book on the market that covers networking with Xboxes and Windows PCs (any mix thereof).

Abandonware or Deadware–no, it’s not a term used to describe funeral attire; think of it as a synonym for abandonware. Microsoft has put XNA down by not releasing any new updates beyond XNA 4, which had support for Xbox 360, Windows 7, and Windows Phone devices (having dropped support for the defunct Zune product line). Microsoft has not made any announcements about any new releases are in the works, and in fact, the XNA team has been disbanded, according to rumors.

Microsoft’s XNA Developer Center is still online, the forums are still active, but there’s no support for Windows 8, including Microsoft’s new tablet. What gives, Microsoft?!

This is obviously pretty bad news for anyone involved in writing XNA books! I’ve gotten two to market in as many years: XNA Game Studio 4.0 for Xbox 360 Developers and Teach Yourself Windows Phone Game Programming.

I wrote a piece back in December of 2010 (XNA Is Not Academic) as a play on words and a wink at the upcoming MonoGame (an open source alternative for XNA developers). In this piece, I argue that XNA is not even remotely easy or even suitable for beginners, and that academics were making a mistake in using it for their entry-level courses. I argued that XNA is a complex cross-platform SDK that Microsoft (and skilled developers) have falsely marketed to the beginner and academic market.

Xbox 360 game development is too appealing to students, and too hot for academics to ignore, despite the problems (and warnings) about it. Microsoft did pretty much exactly what I was expecting as the natural marketable lifetime of the Xbox 360 came to an end. Although, granted, in 2010 I had expected the “Xbox Next” to be announced sooner.

The sad truth is, there will be no more iterations of XNA Game Studio, which is quite an upset for anyone in academia who has invested in it. That sort of decision might have been important, strategically, for Microsoft, but it does not do anything to help public opinion of a company known to ignore its customers. I guess we’ll just have to wait and see if the Xbox Live Indie Arcade will be resurrected with new tools or abandoned.



Multi-Threaded Game Engine Design


Multi-Threaded Game Engine Design shows experienced game developers how to apply threading techniques to game programming technology to improve game performance. Using Direct3D and C++, a sample game engine is created step-by-step through the book featuring numerous examples to illustrate the concepts.

Detailed screenshots and well documented source code help readers understand the techniques being presented. Multi-threading is one of the hottest game development topics today and this book will show students how to apply advanced, cutting edge techniques to their game programming skill set.

This book has been misunderstood due to an unfortunate title. It is not an advanced book on threading existing engines, it’s an introduction to threading using several thread libraries, and it builds a competent DirectX shader engine in the process.

Compiler support: The code in this book was developed using Visual C++ 2008 and DirectX SDK (2010). Later versions of both will still work, but earlier versions may not.

Portfolio Page


Visual Basic Game Programming for Teens


VISUAL BASIC GAME PROGRAMMING FOR TEENS, THIRD EDITION teaches teens and other beginners how to create their own 2D role-playing game (RPG) using the free-to-download and easy-to-use Visual Basic 2008 Express.

You will learn step-by-step how to construct each part of the game engine using Windows Forms and GDI+, including a tiled scroller, game editors, and scripting. If you like playing RPGs, you’ll love learning how to create your own because you have complete control over the game world.

You’ll gain a basic understanding of Visual Basic, giving you a game programming foundation, and the ability to use the tools and source code you create for other custom games.

In each chapter you’ll study short examples of code to help you build the different components of the game, including the foundational elements, the game engine, and all the gameplay components. You’ll build the sample game from chapter to chapter, adding new elements and features as you learn them.

By the end of the book you’ll have created a working RPG from scratch! With the tools, code, and skills you learn you’ll be able to start creating your very own game adventures in no time.

Portfolio Page


Teach Yourself To Be A Game Programmer

The question most often asked of persons working in the game industry is inevitably this: What does it take to land a job as a programmer at a professional game studio working on games such as Batman: Arkham City or Call of Duty: Black Ops II? While the question is straightforward, there is no simple answer because the question is loaded due to inexperience.

A comparable question might be asked of a neurosurgeon about getting into the healthcare industry as a top-tier surgeon. The simple fact is, you have to start with a college degree, and eventually move into an apprenticeship to gain experience, and/or get an entry-level job doing the grunt work while being immersed in the environment, before moving on to specialization.

My experience teaching this subject for five years at the undergrad and graduate level helped give me a certain perspective on how well (or not so well) the education system prepares graduates for the game industry. The situation is quite simple, actually. The most passionate graduates will have gone above and beyond the courses they took in college to learn as much as possible about their desired profession, without relying solely on the degree certificate for their future employment chances.

College Degree or Work Experience?

What I also learned during those years of teaching computer science and game programming is that a college degree, while preferred, is not absolutely necessary. Some of the best and brightest in the industry today have no such degree.

That’s not an excuse to shirk college studies–if you have an opportunity to go, then go! But, I recommend against incurring a huge financial debt through student loans. I would not recommend it to any relative or friend when the student loan will go above, say, $50,000–an insurmountable debt for a young person just entering the workforce. Ultimately, your skills and experience will do more for your career than a college degree, all things being equal.

When I was just getting started in 1994, I was hired by a small game studio in my home town in California, a few hours north of Sacramento. This studio worked on contract retail games for the publisher, Simon & Schuster Interactive, which at the time was involved in game publishing, comparable to Activision and Electronic Arts today (before the industry consolidation). I worked on a sports game for the Sega Genesis, which was then ported to the IBM PC. It was an MS-DOS game, of course, and used SVGA resolution, prior to DirectX, so there was a lot of assembly and C++. The compiler used was Borland C++, with custom low-level graphics code (all software rendering, of course). A real far cry from today’s hardware rendering with Direct3D, OpenGL, and GPUs.

I left that job in order to go to college!

Was that a bad move? At the time, it was one of the hardest choices of my life, if not the hardest one. On the one hand, I wanted a college degree. I’d already spent a couple years fooling around at a community college while working mostly full time after high school. I wasn’t the sort of high school graduate who immediately took off to a premier college, and frankly, my family couldn’t afford that anyway.

Tuition Woes and Student Loan Nightmares

Hindsight is always 20/20, as they say. But, when I look back on that decision, I still cannot say whether it was the best choice, even after all these years. The reason for that is because, soon after I graduated from college, in 1997, college tuition doubled, and then tripled, and quadrupled! Also, I was able to get a Stafford loan from the U.S. Department of Education, which meant a single loan. Today, most student loans go through commercial banks, and that really makes me sad to think about it now, because that really does explain why tuition rates went through the roof.

In the 90s, college tuition was reasonable–not so today. I managed to get scholarships every semester to offset the costs, and my total loan was only about $25,000, which I paid off in 10 years. That was pretty common at the time, I’m sad to say, compared to today. It’s not necessarily that teachers are making higher salaries, but the educational system is in bed with the banks, and it’s a lose-lose situation for students. Thank you, representatives and senators in the U.S. Congress, for allowing greed to overcome common sense!

As a result, I finished college just before tuition skyrocketed, and in that regard, it was a good decision. But then, by the time I’d finished, I might have continued working as a game programmer, built up my resumé, gotten several games under my belt, and moved on to a larger studio during those 3-4 years. I might not have needed college to go down that career path. Or, perhaps I might have picked up a degree later with part-time evening/weekend courses (which are now offered online, but that’s what they were called when I was younger).

I could have gotten back into the game industry after college if I’d wanted to, but by the time I finished, I’d entered the information systems industry as a software developer and had my sights on high-end IT work, leaving video games behind. Ironically, I still had a passion and love for game programming, and I found a parallel career writing books on the subject.

The Indie Developer Route

One can also make a good living writing and publishing games as an independent or “indie” developer, by self-publishing. That wasn’t really a very good option prior to Apple inventing the App Store, which really opened the market to indie developers like never before (and copycats have sprung up which is even better for self-made game developers, such as Google Play and Windows Store).

I am a proponent of self learning, of giving oneself an education through self study–if one has the discipline to learn without the structure of a formal course. When I formally exited the game industry, I continued learning, continued to have a passion for video games, and maintained my skills through writing books and working on my own hobby games, without that being my primary means of income. But, without discipline, self learning will be ineffective. You have to test yourself by pushing your boundaries.

In the context of game programming, that means learning new languages and SDKs that are out of your comfort zone, and working on your own hobby game(s) to test your skills as you continue to learn. You should be creating demos and games anyway, if you truly love game programming, but do so with the intention of putting your work into a portfolio and be mindful of how your work looks. Algorithms are great, but if you can display them graphically, that’s even better.

Where To Start Learning?

First, as an aspiring game programmer, you simply must learn C++, and learn it well! That means reading a dozen or more books on C++ to get a good breadth of understanding as well as a depth to your skills in certain aspects of the language. I highly recommend studying the C++ standard library and becoming proficient with iterators, lists, vectors, and similar constructs. Use them in your own games and demos, and write up a blurb about how you’ve used them. Make short tutorials to put into your portfolio if you prefer.

Yes, you do want to study other programming languages as well, but if you’re serious about formal employment in the game industry (i.e. with the likes of Electronic Arts or Sony of America), then C++ is your ticket. But, by all means, learn Java, C#, and Python as well–the experience will only help you, assuming you are highly proficient in C++.

The Book List

I did not intend to push my own books in this article, which is why I’ve recommended other authors for primary and secondary reading. However, my own portfolio is on this site and found here:

Here are two related articles that complement this one:


Teach Yourself Android Game Programming


Now, there’s a practical, hands-on guide to mastering game development for Android 4.0 with the Android SDK and Eclipse IDE. One step at a time, this book teaches all facets of mobile game development, from game design and handling user input through publishing via Google’s Android Market. Top game development author Jonathan S. Harbour starts with the absolute basics, making Android game development accessible even to programmers who’ve never written a game before.

In just 24 sessions of one hour or less, he shows how to use free Android development tools to design and construct high-performance, highly-playable games for the newest Android smartphones and tablets. Friendly, accessible, and conversational, this book delivers a practical grounding in Android game development without ever becoming overwhelming or intimidating. Each lesson builds on everything that’s come before, helping readers learn core techniques from the ground up. Readers learn key concepts, syntax, and techniques through short, practical examples that reflect the realities of modern mobile game development.

This book covers the Android 4.0 SDK 19 using Eclipse and the Java language, with step-by-step tutorials on setting up the development environment. A new developer is likely to find Android daunting to break into. This book helps alleviate those challenges by offering sage advice and solid tutorials. This book is for beginners with intermediate coverage of game programming concepts.

More Details Here