What is a “game” programming course?

I have been contemplating my proposed game programming course for next year.  Previous experience has taught me that teaching a game programming course is different from a regular programming course.  With a regular programming course the purpose is to solve a problem with a particular language.  The problem is usually pretty well defined, especially if teaching the course with a textbook, and is usually fairly limited.  In a game course not so much.  Yes, the kids can be given a game to write with well-defined rules and objectives but there always seem to be refinements and add-ons.

That got me thinking of what is the objective of a “game” course?  Originally my intent was to give the course a very tempting label to attract kids into the course.  I would teach a programming course with a game building language (Corona, GameMaker, TouchDevelop) by working through the various tutorials.  In other words, a syntax course.   The students in the course have already had at least one programming course so there is less need for teaching the basics of programming: sequence, loops, etc.  This is what I have done before.  It was a semester long Corona course were we built an oil drop program just to play with gravity and shapes bouncing, a whack-a-mole game for Android phone, and a very basic Angry Birds game for Android.  Overall I was satisfied with the course and the kids learned some more programming.  Giving a course a title and objective that would tempt kids into the course is a perfectly reasonable strategy, at least as long as programming is an elective that has the reputation of being “hard”.  But it was not really a “game” course.

I have been thumbing through the Microsoft Creative Coding with Games and Apps (CCGA) with the intent of offering it next school year.  It is tempting to have a nice cookbook to follow.  From what I have seen so far it is also a syntax course built around games.  Again, this is not a bad thing, it just is not a real game course.

What I would like to do is start out with the typical syntax through a game language pretty much like I do now and then migrate into a game design course.  The objective would not be to design the next Angry Birds but to understand the philosophy of game design.  One of the commenters on my last post, Brian Sea, suggested “The Art of Game Design” by Schell as a starting point.  I hate dropping $60 for a book but it looks like a worthwhile read.  Missoula also has some small programming based businesses.  One of them that I have visited with my class, OnXMaps, writes an original software product.  Although it is not a game it is an original product that requires more than just programming skills.  I need to dig up some software design people to come into the class.

All of this is part of my desire to teach Computer Science and not just programming.  No matter how I look at it programming is no different than teaching welding or wood shop.  It is a job skill.  It is a pretty handy job skill, just like wood working and welding are handy, but still just a job skill.  I am thinking if I can introduce a design and concept thread in the game course I can get more of a higher level thinking skill going.

And besides, maybe one of my students will develop the next Angry Birds and remember who got them started and contribute to my retirement fund.

 

5 Responses to “What is a “game” programming course?”

  1. Eric Preisz Says:

    Garth,

    Personally, I use industry as my guide (my background is professional game development, simulation, and higher ed).

    Traditionally, game design is not programming. Game designers in the industry often don’t know how to program. Jesse’s book is awesome (and Jesse is awesome)…but it’s definitely not a programming book. You might not be looking for a programming book…so that might be a good thing.

    The primary topics of game design (in my opinion) are: game mechanics, balancing, rewards, motivation, game theory, user experience, iterative design, etc. Not so much about data, abstraction, networks, number systems. So is it Computer Science? Seems to be somewhat dependent on your definition of CS. Game design certainly benefits from computational thinking.

    Game programming has a few layers.

    Gameplay programmer is what most people think of when they say game programmer. They implement game designers vision and use the underlying technology to write fairly simple code to manipulate events and trigger animations.

    A tools programmer builds tools that game designers use so that they don’t need to rely on a gameplay programmer.

    An engine programmer does the heavy technical programming. They write the underlying foundation that gameplay and tools programmers use.

    I’d be happy to share my perspective via a call if you like. ericp with the e-mail domain of gginteractive.com.

    Also, we have a (forever) free game design course you might be interested in.

  2. alfredtwo Says:

    FWIW a teacher on Twitter told me they used the videos at http://extra-credits.net/ with their game course.

  3. gflint Says:

    Eric, thank you. This is exactly the kind of comment I am looking for. I am thinking of something a bit more than programming and pure CS. I want the kids to see programming as a tool to build things. More of the big picture and less of the syntax and structure. Since I know zip about this I want just enough to get them thinking and imagining. Many of the kids think of programming, and therefore CS, as this dreary sit in front of a computer for days on end type of thing. With a pure programming course it is. I want to introduce more of a let’s develop an idea, flesh it out, then maybe code it. Something the kid can say “This was my idea and I built it.” Nothing fancy but hopefully more thinking than typing of code. I am going to go order the book tonight.

  4. Eric Preisz Says:

    Might sound crazy, but I’d have them design board games with dice. It has all of the elements of game design and problem solving without the tech getting in the way. Have them design their ideas and then sketch them out with sequence diagrams (https://www.websequencediagrams.com/). Sequence diagrams are what I do before I write code.

    Here’s a cool game design brainstorming process I’ve used for years. http://codecarrot.org/videos/game-design-brainstorming/

    Here’s another favorite game design video from a really talented designer. https://www.youtube.com/watch?v=qwPe3OHR04c

  5. gasstationwithoutpumps Says:

    You might want to contact the Game Design people at UCSC, who just split off from the Computer Science department to form a Computational Media department. They have a lot of ideas for how to develop game designers/programmers, and would probably be willing to share the syllabus for their entry-level courses.

    (like CMPM 80K Foundations of Video Game Design, which has no prereqs, or CMPM 120 Game Development Experience, which has a lot of programming, art, and film prereqs)

Leave a comment