Teaching Unity: Not a Programming Course

It seems like every semester I go through the following thought/rationalization process.  I have been teaching Game Making with Unity for a few years now.  It started out as an experiment because I was getting bored with my pure coding curriculum.  I was surfing around and stumbled on Dawn DuPriest’s Unity videos on YouTube and away I went.  Too cool to resist.  Since then I have been back and forth on the purpose of teaching something like Unity as opposed to the more traditional courses such as Python or Java.  If the purpose of high school programming classes is to prepare students for college coding classes (notice I did not say “college CS”) then Unity is probably not the optimal way to go, at least not the way I teach it.  When I teach Python we start with a program objective and then build the code from scratch.  We build the code line by line from the Python key words we have learned.  We do not hit Google for coding solutions that already exist.  (OK, sometimes but not often.)  With Unity we never build from scratch.  Last week I wanted to make a ball make a bump noise when it hits pegs on the wall as it falls.  I had done this previously but could not remember how.  Google, here I come.  With a little searching I find a program that does this and with some minor modifications it is ready to go.  Last night I wanted to make a gameobject loop through a path on a plane.  I did not sit down with a blank Visual Studio Code screen and build original C# code.  I found a YouTube video and copied and modified.  Tomorrow I will give my students the link to the video and we will look at what I did and how the code works.  In the years I have been teaching Unity I have never sat down to a blank editor and built code as I would for a Python program.  The one thing this approach is teaching is how to troubleshoot existing C# code and how to make some modifications needed for the particular instance we are building.  Oh, and how to do a Google search.  

Am I teaching my students how to code in C#?  I do not think so.  Am I teaching how to build Unity projects?  For sure.  I kind of compare it to building the Millenium Falcon with Lego bricks.  If I want to build the model I do not go out and buy a bunch of Lego bricks.  I go out and buy the Millenium Falcon kit and follow the directions.  The bricks are already designed to end up with a really cool looking model.  Could the Falcon be built with regular Lego bricks?  Sure but it would take a long time and it would not look as cool.  Years ago I did teach a C# course using “The C# Programming Yellow Book” by Rob Miles.  It was the “start with a black page and end up with a coded solution” approach.  To me the objective was completely different from what I am doing in my Unity courses.  I do not think the C# learned through Unity is transferable to the types of problems presented in the Yellow Book.  Regular Lego bricks versus special Falcon kit bricks.

Unity courses to me are more of a design and problem solving type of course than a programming course.  Get an idea, design something to go with that idea then start looking for resources to help find things to make that idea become real.  Wood shop in digital form.

Leave a comment