Starting out on your own to learn something as complex as game development on Unity can be a tremendous task, which is why I wanted to tell everyone about the great experience I had with the 8-week Unity class offered by Playcrafting. I went in knowing just a little about Unity, but now that the course is completed, I have a much stronger foundation with Unity and C# programming, and I feel ready to develop some of my own games.
I have always felt a bit challenged by my inability to fully grasp Unity and C#. I attempted to teach myself Unity and C# a number of times over the past several years. I’d learn a few things here and there, but ultimately my progress was just too slow. I did some of Unity’s online tutorials, tried tutorials on other websites and read how-to books (that are now out of date). I think this year is going to be different. In taking Playcrafting’s Unity course, I discovered that for me, personally, learning Unity face-to-face with a professional who could answer my questions on the spot was most helpful. Prerecorded tutorials can’t always answer your specific questions; I just needed that human connection. I am lucky to have found a class that has given me the knowledge base I need to jumpstart my future in game development.
MAKING THE EFFORT
I’ve wanted to design my own games since I was a kid in the 1970’s. Yes, I’m THAT old. I remember when Pong was first introduced. Before that, all we had was pinball and darts. Pong was the coolest new game ever. Imagine seeing something like that for the first time. A game you play on a TV set with two paddles and a square ball that bounces back and forth across the black and white screen. Imagine our excitement at the mind-blowing graphics! I knew back then that this was just the start of an awesome future, and I knew that one-day I would work for a computer company and make games of my own. But life took me in a different direction and being a game developer was never an option for me. So now here we are… Welcome to the 21st century, Unity3d and Playcrafting. I think what was impossible for most people just ten years ago is now an attainable dream for anyone willing to invest the time and energy. If you can achieve your goal, consider it time and energy well spent.
For me, personally, programming is very complicated, so I like to take notes in an intensive class such as this. I learned that the five building blocks of programming are: variables, for loops, if statements, functions and arrays. I still have a lot to learn. But the instructor was great at not only teaching C#, but also how to troubleshoot and find our own answers online. You are not going to have a teacher by your side forever, so it is good to know how to find your own solutions to problems with the resources that are available to you on the Internet. An 8-week course is not enough to teach you everything there is to know about Unity and C#, but I’m happy to say that I am doing fine on my own after the class. I am continuing to work on one of the projects I started in class, and I have other ideas for new projects I hope to start in the near future. This Unity class left me with the knowledge and confidence to map out ideas and set goals for what I hope to achieve as a budding developer.
OUR FIRST PROJECT
We worked on several projects over the course of 8 weeks. The first project was a Flappy Bird clone. This, of course, involves Unity’s 2D features. I was happy because this turned out to be a perfect first project to help me get my feet wet, plus I’m a big fan of 2D games in general. It included some pretty cool game elements and functions that will translate well into future projects. We imported an airplane to be the player’s avatar and a background to be our scrolling parallax. Next, we learned some basic C# code to keep the player in the air with a mouse click or through a keyboard, adding colliders and tweaking the rigidbody2D component to set the strength of gravity, a script for randomly generating the obstacles a player must avoid, settings for the speed and frequency of those obstacles, and additional scripting to create a parallax background. It sounds like a lot, but the instructors made it very easy to understand.
As we continued to build on our knowledge, we learned how to manipulate sprites, and discovered where to search for game assets via online resources such as royalty free libraries or Unity’s Asset Store. I make my living as a graphic designer and I have a background in illustration, so I immediately saw an opportunity here to have some real fun with the project. Working with Adobe Illustrator and Photoshop, I started to design my own sprites within a customized world that was my own creation. I studied the code and found that it wasn’t too difficult to identify where I can make my own modifications to enhance the game. I realized that I was already traveling down the road toward developing my very first game.
In between classes, the instructor assigned us programming homework to help reinforce what we have already learned. He would suggest a real world situation and have us write code that can solve or manage a situation using the five building blocks of programming (mentioned previously). As the saying goes, practice makes perfect. I think assignments like this greatly helped me to realize the logic and structure behind programming, and now that the class is over I am doing better at solving programming tasks. I’m far from being an expert, I need a lot more practice for that, but I feel more comfortable looking at C# examples online. I find that I can now better understand what the programming is designed to accomplish, and hopefully I can translate that into my own game. For me, it is another reason why I’m glad I took this class.
As you work on these projects, you get a much better feel for how to work with Unity. Knowing how to populate your Asset folder with scenes, scripts, prefabs, materials and textures. You learn how and where to drag and drop your resources into the Unity scene window, applying your script and adding components to your game object. We used this knowledge to push our skills further with the next project.
ADDING A NEW DIMENSION
The next project introduced us to 3D. The first step involved getting familiar with Unity’s 3D primitives like cubes and spheres, and how to manipulate them. We also learned how to work with materials and imported skyboxes. The cool part was going to Unity’s Asset Store and downloading a free 3D model of a racing car. We learned how to use a material to build a road and did some C# coding to control the car. The final elements included a ramp to put your speeding car in the air, and a platform to land on. We wrote the script together and attached it to the correct game object, and the demo was complete. If your car lands on the ramp… success! Otherwise the game resets you to the starting position.
With an understanding of this basic game play under my belt, I decided to build a more complex game where you drive a car over ramps and bridges, jumping though hoops and avoiding obstacles. I also explored how I can work with other applications alongside Unity. I designed a vector racetrack in Adobe Illustrator; imported that into Blender to give the flat track a third dimension (see Blender screenshot below). And then finally exported that as an .fbx file which I placed into Unity. Please note, this class does not teach Blender, I was just experimenting on my own. I know almost nothing about building 3D objects in Blender, but it was a good exercise to see what was possible and to better understand the basics.
At this point I was familiar enough with C# that I could search online for code that would allow me to simply animate these 3D objects. I built simple rotating pinwheels and donuts to act as obstacles that populated my game. I set these obstacles to rotate at different speeds to add some challenge to the game. It would take careful observation and timing to get your car past these dangers.
The project didn’t stop there. We learned how to build a title screen with text and a start button. Also, when the level ends, we learned how to trigger the appearance of a new button that would advance the player to the next level. Now that I had the tools to build a cool car game with multiple levels, I proceeded to design a complete second level for my car game. In the end, I built two challenging obstacle courses complete with winding roads and spinning dangers, and a goal that completes the level.
The next lesson in the class introduced us to particles, some of Unity’s animation features and new C# code to control more functions. We used our previous car demo as a starting point. We programmed cubes to jump into air and explode with particles the moment there is a collision with the car. We wrote code to count these collisions and display the result on the screen. This was a great lesson on creating a scoring system that I could apply to other games.
A NEW PERSPECTIVE
The course didn’t end there. We learned how to download assets from the Asset Store and built a sample first-person dungeon game. We constructed rooms with a 3D wall prefab, set up flaming torches and gates, populated the rooms with zombies and learned more about Unity’s lighting controls. We also learned about raycasting and how to set up triggers that cause other actions to happen. For example, we set up the torch to act as a trigger that, when clicked, would raise a gate giving the player access to other parts of the dungeon. It was a great introduction to first-person game creation.
In the next class we explored how to use a navmesh to make a game object navigate around barriers. We created a plane and populated the space with walls to act as barriers, and added a 3D capsule to be our player. Clicking the mouse somewhere randomly on the screen would cause the 3D capsule to move toward the location of the mouse click. If a wall blocked the direct line of sight for the capsule, the capsule would then alter its course and navigate around the wall to reach the point of the mouse click. We then added more planes at higher and lower points on the y-axis and made the capsule jump from one plane to another. With a little imagination, this example can be added to so many game concepts.
“IT HAPPENED IN OUTER SPACE
The best part of the class, for me, was the final project. I decided to base my project off of the first 2D project, the Flappy Bird-clone. The code was already written several weeks before, but now I was ready to expand on it and add features that I wanted to include in the game. The basic game play is similar to Flappy Birds…tap the keys to keep your player in the air while navigating through tight places. But I would make this game my own by adding a science fiction element. For now, my working title is, “It Happened In Outer Space.”
My avatar is a retro-style rocket ship that you navigate over an alien city. But my game is also a shooter. There are enemies in your way that you need to eliminate if you are going to advance. This gets back to what I said before about learning to find solutions on my own. I am building an actual shooter. I researched how to fire projectiles with the help of Unity tutorials and other online resources, which also helped me to figure out how to make enemies explode. Finally, I added some sound effects and created a scoring system. These were all things that I could not do just two months earlier, before I enrolled in the 8-week Unity course!
This project also gave me a chance to merge my graphic design and illustration skills, the things I knew best, with what I learned in class. I designed a complex alien city background with several levels of parallax scrolling. I designed my obstacles to be integrated with the overall design of this alien city. Feedback on my game has been very positive and I look forward to expanding on my ideas with additional levels. I think I created an amazing world that is attractive to view and fun to play.
As the weeks go on and so many new concepts are introduced, it becomes clear how rewarding it is to work with the other students. It was great to be in an environment where we all had the same goal. It felt like you were part of a community. Members of the class were often as helpful as our instructors. We offered each other help and advice as best we could. I got some great tips for my projects by showing those around me what I was trying to accomplish. These were people who love games as much as I do, and their feedback and input was incredibly valuable and appreciated. As a result, my comfort level with game design and Unity3D has greatly increased.
I think I have not fully realized all the ways the Playcrafting 8-Week Unity course has benefited me. But I am grateful to Playcrafting for offering the class, and to my instructor and his assistant for skillfully sharing their expertise and opening up a new world of possibilities. I can see how this class could have easily continued for many more weeks. There is just so much ground to cover. If I’m going to be a pro someday, I’ll need to do a lot more studying, but this is a perfect class to get you started on a path to real game development. You will complete this class with a greater understanding of Unity, C# and what it takes to be a game developer. When the class is over, the work never ends. It is up to you to continue to work hard and do your best. I feel that soon my dream of offering my own games on the iTunes Store will finally come true.
Inspired by Glenn’s story? Join Playcrafting in our next Learn Unity in 8 Weeks course!