Game Programming – A Complimentary Endeavor

????????

Two years ago when my oldest was 8 I began offering to volunteer teaching a programming class at the local public school, a private school and an after school science play space.  I focused on teaching game programming, since most kids this age are fascinated by games and that fact could be a great motivator.

Unfortunately, none of the places I spoke with were able to accept my offers which is how we came to start a community-based First LEGO League team two years later.  FFL offers  kids great insights into real-world STEM practices such as lab work, controlling physical equipment, original research, working in teams, etc.  However, game programming has other advantages in areas of motivation/familiarity, accessibility and developing more advanced programming skills.  FLL and Game Programming are complimentary in these regards.

scratch_logo

Originally, I wanted to teach a SCRATCH game programming class since most of the places I was talking with had computer laboratories and the software was open source.  SCRATCH is a visual programming language similar to the LEGO NXT-G/eV3 programming tools, but much more sophisticated.  Also, SCRATCH is freely accessible via any modern web browser while cost and accessibility to hardware are the main limitations of FLL.

SCRATCH was created by MIT Media Labs and is a great tool to teach kids basic programming concepts.  It very naturally teaches kids how to think in an event-driven, object-orientated way which sounds more difficult than it is.  You can create a number of simple 2D games (shooter, maze, etc) as well as presentations, eCards, animations, etc.  The language teaches most of the core concepts in nearly every ALGO-based language (C, C++, Perl, Python, Ruby, etc), but it has limited use beyond teaching programming.  However, hackers have customized SCRATCH to run LEGO Mindstorms, Arduino and Raspberry Pi systems as well as many others.

3dgamecsjava

I’ve recently come across another great resource for teaching kids programming in the book “3D Game Programming for Kids – Create Interactive Worlds With JavaScript” by Chris Strom.   I’ve read through most of the book and have been impressed by the sophistication of the games and models they teach the kids.  One way they accomplish this is by eliding over much of the underlying details and discussing the code at a higher level.

My son was duly impressed by the 3D virtual world game developed in the first half of the book.  Because JavaScript is embedded in nearly every web browser it is a popular development language for mobile and web games.  JavaScript is also rapidly evolving in sophistication (eg acquiring more object-orientated and LISP like features) and finding use in applications beyond the simple Internet web pages and gaming.  There are many good gaming books that cover HTML5/JavaScript development like “Pro HTML5 Games” by Aditya Ravi Shankar.

Another good language I consider using to introduce programming to kids is Python.  On the surface it’s simple language that can go very deep and wide in application and complexity.  There are some highly reviewed books that I’ve glanced over, but the return on effort and WOW factors are just not as great for game programming when compared to SCRATCH and especially JavaScript.  Still, there are some very cool things like Machine Learning, Artificial Intelligence, Statistical Analysis, Web Crawling, etc that Python excels at.  A couple of good titles for teaching Python to kids are:  “Python for Kids:  A Playful Introduction to Programming” by Jason Briggs and “Hello World!:  Computer Programming for Kids and Other Beginners” by Warren Sande.

An off-beat resource I liked was “Realm of Racket:  Learn to Program, One Game at a Time!” by Matthias Felleisen.  It introduces LISP-like programming to kids via game development.  Again, the games don’t have the Wow factor of low effort SCRATCH or complex JavaScript, but I am interested to see if kids can understand LISP-like thinking which many adults find difficult to grok after years of ALGO-like thinking.

For the more advanced there are hard core gaming development environments like UNITY that ease and speed very sophisticated game development by abstracting out a lot of the low level details.   Since we’re taking about education this year in FLL and gamification, one particularly apt resource is “Creating E-Learning Games with Unity” by David Horachek.

Finally, if you really want to become a hard core game developer I don’t think there is any substitutes for the insights lower level programming in C/C++ can give you.  There are some great resources out to teach yourself this.

On a different note, there are also a lot of ways to become involved with gaming without becoming a hard-core programmer:  game designers, artists, actors and many others who would be typically be involved in a Hollywood film production.

game_scape

As a footnote and to put things in perspective, Robotics is a healthy growing niche and some even talk of a Robot Bubble – there are 420 companies manufacturing robots in China alone.  However, the Gaming Industry is absolutely huge and may become the unquestioned dominate form of Entertainment in the next decade (vs Hollywood, TV, etc).

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s