One of the first decisions a game designer needs to make is what game engine they plan to use when developing their idea into something other people can play. If you don't already know, a game engine is the basic software framework used for the creation and development of video games. They typically encompass several different engines packaged together under one larger system, each handling specific tasks including rendering, physics, collisions, animation, artificial intelligence, and so forth. While one can always build their own engine, there are lots of options available for use that can save a team tons of time and effort. In fact, many game engines are free to use until you start shipping games. At that time, you typically have to pay a small fee which differs from engine-to-engine. Here in NC, the state has endorsed the use of two different engines since the early days of the GAD courses: Game Maker and Unity.
Over the past couple of years, I have been a good employee and followed the state's lead in endorsing these engines for use in my classes. However, we ran into a glitch earlier this year. For some unknown reason, despite nothing changing on my computers, Game Maker decided it would not run for the students in GAD. So, knowing that Unity added support for 2D development in recent years, I decided to move them straight into Unity. I thought: how much harder can it be and what are the benefits of doing so now instead of waiting a year?
The benefits were clear: since they need to learn C# to code for 3D, having them start now means they will be even better at it next year. Also, it would give the students experience with a professional tool that is widely used in the industry. CTE directors are always touting the importance of using industry-standard tools, especially software, so this plays up to their desire to do so. And, I found some great introductory tutorials by Brian Moakley on the Ray Wenderlich tutorial website for free to teach the students the basics of C# programming. So, what could go wrong? Plenty!
For starters, learning the basics of coding via the video tutorials should have taken a week...maybe a week and a half for those who really struggled or slacked off. I went through them and there was nothing truly difficult or too in-depth. It took considerably longer. I helped the students through the process as needed, but the idea that attention to detail while coding, especially things like being consistent in spelling, capitalization and punctuation, simply didn't sink in for many of them. There is a reason coding is compared to learning a foreign language. As is the case with learning any written/spoken language, programming languages have their own sense of grammar that needs to be closely adhered to or one's code simply won't work correctly. This makes programming less forgiving than spoken languages.
Next, some of the students really struggled with the concept of simple programming logic: conditionals, loops, variables, etc. These logical, left-brained concepts made my creative right-brained students' heads spin. But, eventually they all finished the tutorials and could start working in Unity 2D. This opened up an entirely new set of problems as the students continued to struggle with the coding.
Game Maker was awesome because it allowed students to learn coding logic and design with a bit of a cushion that Unity does not provide by being graphically oriented instead of "grammatically" focused. Students in GAD, being more creative than analytical, tended to pick up the basics well this way and appreciated the visual aspects of a simple interface. I saw a lot of the same problems with coding from my students in AGAD this year as well. Which makes me wonder: is Unity the best choice for high school students when it comes to selecting game engines?
This weekend, I decided to examine a third option: Unreal Editor 4 by Epic Games, located right here in Cary, NC! UE4 is another game engine that is used all across the game industry. While I am only just beginning to examine UE4, I have to say that I truly like what I see. The interface looks and feels a lot like Unity. Sure, there are different names for each panel and different options on menus, but moving around and the tools are not completely unfamiliar to me. Where I do notice a huge difference that gives UE4 an advantage is the coding is handled.
While one can (and probably will eventually need to) get into learning C++ coding to create desired games, a lot of the logic can be setup using what they call blueprints. So, what are blueprints and why do they matter? At its most simple explanation blueprints are objects created using a form of visual scripting. Much like Game Maker, this means it takes away a lot of the confusion of coding logic for individuals who are more artistic in nature. For more on Blueprint and its related objects, check out this UE4 video on the subject!
Where does this leave myself and my students? Personally, I have a lot more to learn about the UE4 and it seems I will have a very busy summer doing so. While I am under the belief that it will not run on the school computers due to lack of necessary hardware resources, I'm going to try it anyway! I haven't given it a shot yet and want to make sure my earlier beliefs are true before making huge changes to the program. But, I have quickly taken a liking to UE4, preferring the interface and tools over Unity, and believe my students will as well. While it is too late in the year to make such a switch now, it makes me wonder about doing so next school year. And, like Unity, UE4 offers options for both 2D and 3D development, though most people use it for 3D alone.
One of the most important things to realize when working with both students and technology is flexibility. And while I have had moments in the past where I have fought change for the comfort of routine, I almost always realize at some point that I have to eventually give in to the demands of the universe. That experience occurred once again just last week.
In Game Art & Design, the use of Game Maker (a free game engine from YoYo Games) has been firmly embedded into the curriculum for years. Game Maker has a low entry point in terms of learning difficulty but is just advanced enough to give students the experience of using programming logic. It is a graphically-oriented style of learning how to make video games which focuses mainly on 2D design. In short, it is more advanced than using Scratch but there is no need to learn a programming language like C++, which can be overwhelming for many students.
Last week, the universe exerted its force for change just as we were starting to use Game Maker. For some students, the program wouldn't finish installing, for other students it ran fine. After spending a number of days thinking about how to solve this problem and putting in several hours to researching various options, then having our tech specialist give it a shot with no luck, I realized we reached what I considered to be the ultimate fate for Game Maker: time to move to a new game engine! I had considered moving to using the Unity game engine a number of times, but always came back to what I was most comfortable using with this age group. But I could no longer resist that pull. Unity has been used for professional 3D game development for years and with version 4.3, they added support for 2D game development.. Knowing that professionals are more likely to use Unity than Game Maker made the decision to switch an easy one. Besides, my students would need to learn how to use Unity for 3D development next year anyway, so why not start them a little earlier?
Deep down, I knew the answer to that question and to be frank, it frightened me. This change meant that my students, most of whom had zero experience in programming or understanding of simple computer logic, would have to become familiar with writing scripts using a real programming language: C#. And, having years of programming experience myself, I know that attention to detail is critical for success. Unfortunately, many students seem to lack the kind of attention to detail that is important for successfully writing a script or program. And that is exactly what scared me: knowing I had to find a solution to teach the students basic programming logic and syntax without overwhelming them.
I found my solution when I learned about a great Beginning C# with Unity online course from the team at Ray Wenderlich. The course is free and contains 24 brief videos covering the basics of programming. It covers everything from the basics of what a variable is and how to set a variable's type to conditional statements, loops, arrays, inheritances and so forth. In other words, it really is a crash course in basic programming logic and technique. Each video explains an important programming technique, discusses the basic C# syntax, provides a guided example within Unity, and provides a related challenge to reinforce the concept. It also does all of this within the Unity game engine, which helps acquaint budding game designers with the interface and techniques without getting distracted by all the cool bells and whistles that the program contains.
So, how will this all work out in the end? We'll have to wait and see. We just started using the tutorials but I have been very impressed up to this point. My students seem to be picking it up well thus far, though there are a few who are experiencing problems as they want to rush through the tutorials and one cannot simply rush coding when they are new to it.
I am a high school Career & Technical Education (CTE) teacher located in Durham, NC with a focus on game art and design. This blog provides a place for reflection on relevant classroom practices.
The views and opinions expressed in this blog are solely those of the author and do not represent those of my employer or anyone else associated with Durham Public Schools.