This weekend, I had an amazing opportunity, I joined a small group of teachers from across North Carolina at Epic Games in Cary, NC to learn about the Unreal Game Engine!
Our visit started off with a tour of the facility or at least the areas that we were able to see, that is. The first stop was a hallway lined by framed examples of products put out by Epic Games over the years. I never realized just how far back Epic's history went. It all began with a map on paper in 1991 and a game called ZZT with all of Epic Megagames titles distributed on floppy disks. I was thrilled to see Jill of the Jungle from 1994 on the wall which I had received in a mail order package of games back when I was in college. Somehow, I never realized it was created by Epic! The "wall of fame" identified several game titles such as Jazz Jackrabbit, Unreal Tournament, Gears of War, Infinity Blade, Fortnite, and of course, the release of the Unreal game engine.
The hallway opened up into a large open space where we were first shown pictures of Epic's teams located in offices all around the world. Epic is a private company but they have several worldwide offices including teams located in Germany, China, Canada, the Chair team, and so forth. But, their Cary headquarters contains the largest collection of employees in a single location.
This large space was also their cafeteria. We were informed that at Epic Games, all of the food and drink in the cafeteria is completely free. Employees can work long hours and Epic doesn't want their employees to have to worry about leaving the site to grab a bite. This is especially important at crunch time, when employees are likely to spend very long days in the office. I also noticed they had some areas to help employees blow off a little steam: there was a climbing wall, a slide from the second to first floors and several tabletop games such as air hockey. It looked like the game room also gave employees a place to play video games but it was nice to see they had options that allowed them to do things away from a screen if they wished. I'm sure that is important when you spend all day looking at a screen and a break from it might be nice at times.
When our tour ended, we returned to a conference room for the meat of why we were there: getting some hands-on experience with the Unreal game engine from the experts who created it! The conference room itself was amazing. They had set up laptops with separate keyboards and mice for us to use along with snacks and swag to take home. The hospitality they expressed was amazing and something that we, as teachers, are not accustomed to receiving. It was definitely appreciated!
We spent the next several hours going through the game engine. We explored interface basics and how to move around in the engine, creating a basic projects, basic workflow and standard naming conventions, working with objects (actors) and using blueprints for coding actions. To be honest, it was a ton of information and I could have easily spent several more days just getting my feet wet with it. But, a few things were abundantly clear to me from this experience.
For starters, using Unreal is a lot easier to understand than the Unity game engine, which is what we currently use in Game Art & Design as well as Advanced Game Art & Design at DSA. A lot of the features overlap between the two engines, especially when when you look at creating environments. And, the basic tools are similar to other software students learn, such as 3ds Max. But, the biggest thing that students struggle with in Unity is understanding the basics of programming using the C# language. This is often the point of contention for most of my very artistic students and while they can follow the steps in a tutorial, I often find they don't understand why they are keying in what they type despite several weeks spent on learning C# coding. Unreal helps to destroy this barrier of entry using a method known as blueprints. Blueprints are a node based method of writing code using a more visual interface instead of keying in line after line of text. In other words, it is very intuitive. That being said, one can access the code itself and code away to their heart's content, but they don't have to for the majority (or even any) of the game development process unless they really want to. This by itself makes moving to the Unreal engine highly enticing.
The next thing I noticed about the Unreal engine was the level of immediate functionality it provides to young game designers. Almost immediately, a student can get a game up and running simply by dropping any of the predefined actors into a level. Support is provided for common player modes including: 1st and 3rd person, puzzles, wheeled and flying vehicles, and even virtual reality! Creating the environment is as simple as painting what you want on the mesh using tools that are easy to understand. The same is true in terms of materials/skins and using particles, though the student will need to edit simple and easy to understand parameters as well. In short, students can get the basics down in a matter of minutes, not weeks!
Another important thing to note with respect to teaching young developers involves having access to up-to-date resources regarding the tools they are learning. Unreal has this mastered in a neat and easy to use online compendium of resources. One of my biggest complaints with Unity has been how they keep adding more resources with minimal updating for the current engine version they offer. In other words - they leave old tutorials relevant to earlier versions without providing easy to find information on how or even if they work with the latest version. It's a growing list with minimal replacement going back several versions that makes finding relevant resources more difficult, though not impossible. So, I am not a fan of their support site.
As a teacher, another area of importance to me is how well a company supports education. Epic has done an amazing job with this! The sheer magnitude of educational resources provided, access to in-engine assistance, and having expressed a willingness to help educators and students in person really fits the bill on this issue. Representatives from Epic games have been helping local colleges for quite some time now and we were the first group of high school teachers they have worked with but they expressed interest in continuing the conversations with us over time. Personally, I am looking forward to this and commend Epic for putting such effort into educating young game designers!
Also on the educator side, CTE teachers are constantly being told about the importance of making local industry connections for our students. Epic is a worldwide company that is directly relevant to our curriculum and students AND they are located right in our own backyard! On top of that, they are the creators of what is arguably the most popular game in the world at the moment. What more could a game design teacher want in terms of creating connections between content and industry outside of the classroom setting than to make a connection with them?
At the end of the day, I left mentally exhausted with a ton of reflect on. But, one thing is certain: I am completely sold on the idea that making the shift from the Unity game engine to the Unreal game engine is something we need to seriously consider. The cost is right (Unreal, like Unity, is completely free to use and contains no information sniffers, so privacy is ensured), it has a lower barrier to entry for learning, and with the company being local, especially when Unity is not local, makes Epic Games a great hands-on inspiration and resource for both students and educators. But, making this move is not without difficulties.
The Unreal game engine really needs a higher quality computer than what we typically have in our classrooms. My student machines are running with an i5 processor, 8GB of RAM and an older NVIDIA Geforce GTX 680 graphics card. I have tried running Unreal on this setup before (and plan to test it out again soon) and as I recall, the experience was excruciating! The engine lagged, it stopped running at times or had graphics issues and it crashed, quite a bit. Maybe I need some assistance tweaking settings to make it operate more efficiently and plan on reaching out to Epic once I verify our specs, but the laptops we used in the training were i7s with NVIDIA 1070 cards in them. I forgot to ask how much RAM they had. Testing the engine on my personal laptop with an i7, 16GB, and an NVIDIA 1060, it runs smooth. So, we need to think about what we purchase when replacement machines are due for labs teaching game design. On the bright side, the cost of such high quality hardware continues dropping every day and finding a system with the specs to run Unreal for a reasonable cost shouldn't be too hard by the time we are due for replacement machines.
A second concern is the discussion of 2D vs. 3D games. Unreal is designed mainly for 3D game creation and we didn't discuss the possibility of 2D in our training, but there are some options for game modes that imply it can be used for such. This is just something that will need additional investigation. But, I wouldn't let this stop me from using Unreal in my classroom.
In short, nothing is perfect, especially when talking about using technology in a public school system setting. But, I believe the pros of making a switch from Unity to Unreal far outweighs the downsides. So, I'm going to make a concerted effort to ensure we can and do make this change, supporting a local NC business while that same local business supports our education efforts.
Even though the Game Art & Design class focuses mainly of the creation of 2D games and their assets, there are also a number of 3D modeling techniques included in the curriculum. One of them involves rigging a character for animation. You can ask any student who has previously taken this course to list what they consider to be the most frustrating activities they completed in that course and my bet is that 9 out of 10 of them will say rigging a 3D model. And, it is with good reason that I would expect this response.
Rigging involves adding bones to your model, connecting them to one another and then making sure the falloff for what they affect works as expected. It can get highly detailed and is definitely not a task for the casual modeler. Most students enjoy modeling but rigging, that's a whole different ball of wax. However, this year, I think I might have found a solution even though it is far from perfect.
Enter Adobe Fuse and Mixamo. Fuse is Adobe's answer to the 3D modeling. It allows the students to create a bipedal character using various body parts that are already modeled, then using slider controls, one can make adjustments to the character. It also has several outfits one can choose from to skin their model. In short, it makes creating a human character exceptionally easy.
Once created, you can save the model to your Adobe libraries for additional manipulation. From there, you can pull the model into Photoshop and by using the 2D Essentials workspace, you can gain easy access to the materials on it for quick and easy personalization of the model's skins.
Now for the best part: rigging! One can pull the model into Mixamo from their Adobe library or if that was problematic, simply export the model from Photoshop into a standard 3D format such as and OBJ file, then import it into Mixamo and utilize their automatic rigging system! You simply define where specific key points are located on the model (chin, wrists, elbow, knee and groin) and the program does the rest! It even has several predefined animations that you can apply to your newly rigged model, then export it as FBX for use in other applications such as the Unity game engine. It couldn't be simpler. The only downside - it only works with humanoid bipedal models. So, if you want to rig anything else, a monster, vehicles, etc., you still have to rig it from inside a program like Autodesk 3ds Max. But, for getting down the basics, this process should work.
Now for the real test of this change in how I teach rigging and skinning: letting the kids try it out. The modeling part went well and several got into skinning it in Photoshop quickly. Next up when we return to school: getting it rigged. I hope it goes as well as I predict, but more on that later.
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.