You want to make a game, huh?
Many have gone before, and not all have succeeded.
Truth is, building games is hard, especially 3D games. But if you have the right tools and the right tour guide, the process can be relatively easy. Building games might just be more fun than playing them!
3D gaming courses tend to come in two flavors. Either you learn to build all your models in a 3D editor like Blender or 3DSMax but you barely get to put them in a game, or you start with a high-end powerful gaming tool like Unity or Unreal, but you can only use models made by others.
In this course, we start from the very beginning. You'll learn how to build your own model of anything you can imagine using Blender, a powerful free tool. There are many Blender classes out there, but most do not concentrate on building models for games, which are different than the models used in movies. Blender is well-known as perhaps the best open-source 3D modeling package in existence.
Blender's best-kept secret is its game engine. Not only can you build models in Blender, you can build full-fledged games. The game system is incredibly powerful, yet not well known.
That's where this course comes in. I'll show you how to create compelling models, how to use Blender's logic bricks to write basic games with no programming, and we'll finally transition to writing your own code with the powerful and popular Python language built into Blender.
I've had a blast creating this course. I can't wait to share it with you. The best part of making a game is storing your own playfulness inside a game. I see this course in exactly the same way. Let's play together and build some awesome games.
3D modeling tools can be very intimidating, and Blender is no exception. Learn which parts of the user interface you need to pay attention to, and which ones can be ignored by beginners. Move around in the default scene so you can see various viewpoints, select objects, pan and zoom. Manage quad views and learn how to use the keypad to quickly see your world from any direction.
NOTE: In the video I didn't remember how to force the top numeric keys to act like a keypad. It's the Emulate Numpad checkbox under the input tab in the user preferences. You'll see that checked in the video. I just forgot what was what. I'm pretty sure I come back to it in the next video, just in case.
Also, I rapidly imported the monkey without explaining how I did it. I used the shift-A followed by Mesh->Monkey. You'll always be able to see the keystrokes I do by scrubbing through the video. In this case, I really didn't want to focus on importing a mesh, I just needed something that has a front, back, top and bottom. I'll explain how to add new figures in the next video.
Learn how the main types of transformations work: translation, rotation and scaling. Change objects with the mouse-based inputs as well as through keyboard commands. Understand the difference between local and global coordinate systems.
The default cube is more interesting than it looks, but it's not the only shape built into blender. Learn how to add the other primitive objects, including spheres, cones, and cylinders. Use normal interpolation to make your elements look smooth and natural.
Use materials to add basic colors to your object. Understand the difference between diffuse color and specular color, and add multiple materials to the same object. Use the outline view to to understand the scenegraph, which is how a 3D modeler represents the world.
At the end of this session, you should be able to build your own model. Put together a picture using a number of primitive objects. Translate, rotate, and scale the objects to get a bit more variety, and use materials to give them color. If you want, you can use the F12 key to get a snapshot of the model through the current camera, and the F3 key to save that image.
Edit mode is Blender's secret weapon. with this powerful tool, you can subdivide an element to create more vertices. You can then manipulate these vertices to build many kinds of shapes.
Use the select all command, block and circle select for powerful selection.
Use subdivision and extrusion to add more vertices to a basic object.
Finally you're ready to combine the techniques described so far to build your first foundational model. Once you learn a technique for building a basic car, you can modify it to build nearly any vehicle.
Use subdivide on a basic cube, extrude to flesh out the basic shape, and add multiple materials to get a nice color.
Learn how to apply a multiresolution to get a more organic shape.
Finally build wheel objects, learn how to combine multiple primitives into the same object, duplicate objects, and use the parenting technique to combine the wheels with the car while maintaining individual identities.
Be sure to practice this many times. If you can build the basic car from memory, you can then modify that model to build pretty much any vehicle, from a helicopter to a space ship.
Note that many tutorials will focus on using a mirror modifier here, and I have chosen not to do this. Instead, I'm focusing on keeping the basic model so simple that mirroring is not necessary. I've found that mirroring causes a number of problems later on, which can be easily avoided.
Human-like figures are a staple of game development. Learn to build a very simple humanoid figure. This simple figure can be the foundation of anything roughly human-shaped, including ogres, angels, or aliens.
Note: You should definitely learn to build your own human models, but there are also some great models available for free online. Use the import command to import a model once you have downloaded it. There's also a wonderful free program called "MakeHuman" which allows you to build very realistic custom human figures. Once you can build a basic model by hand, be sure to experiment with these other ways to import great models.
Four-legged creatures are built in a way similar to human and vehicle figures. Learn a basic prototype for any animal and see how you can modify the proportions to make any creature you can imagine.
One of the primary tricks of game programmers is to use 2D drawings as textures on 3D objects. This technique is called UV mapping. Learn how to paint directly onto an object from within Blender. Then learn how to use the UV mapping tools to paint a 2D image within Blender, and how to work with an external image editor (Gimp) to make even fancier graphics.
Frequently you'll want to build some sort of realistic object from an image. Learn how to use a composite image to create a rough outline of a model (in this case a toy car.) Then use edges to create a more useful UV map for your object, then apply UV mapping to map the image onto the object. Essentially this technique is a "poor man's 3D scanner." It can be a very effective way to build a great-looking 3D model with minimal artistic skills.
You've built some great models, but the world they live in is flat and gray. Learn some techniques to add a UV map to the ground. Also learn how to build a sky sphere, and make it visible from the inside. You'll also learn how to walk around in your scenery with WASD controls, and how to work with lighting with your world environments.
Note: There are a couple of places here where I refer to 'texture mode.' Technically, we haven't done texture mode yet, and the panel I'm referring to is the 'material' mode. In the next lecture I'll describe the difference between textures and materials.
Blender has some great tools for building your own textures, but these techniques can't normally be used in the game engine. Learn how to build randomized grass and sky textures, and use the 'texture baking' feature to convert your textures to an image you can use through UV mapping.
While our environments look good, they are incredibly flat. Use the sculpting mode to create an interesting terrain with mountains, valleys, and islands. Use texture paint mode to make your terrain look wonderful, and experiment with fly mode and a custom sky to fly around your new world.
Now you're ready to animate your models. Learn how basic keyframes work. Add location keyframes to your objects and manipulate the timeline to build objects that move over time. Use the dope sheet to understand more clearly what is happening in your animation, and the curve editor for crazy amounts of control of your animation. Learn how keyframes can be applied to any numeric input, and play with color animation. Lots of fun.
It's time to put together some of the objects you've built before to make an animation of a 3rd person driving simulator. Learn how to import objects from other blender files, how to create a complete animation cycle, and how to attach a camera to an object so you can animate the viewpoint to follow an object.
Shape keys allow you to modify part of a mesh. Learn to add shape keys to an object, and record multiple shape key animations with the shape key editor.
Armatures are an animation technique that allows you to create a skeleton for your model and attach your mesh to the skeleton. This allows you to create realistic motions. Build a skeleton, name the bones, and use pose mode to move your character like a doll.
Often an object in a game will have a number of different animations. Learn how to create multiple animations including waving and a basic run cycle. Use the Action editor to create, modify, and save actions.
Note that I started this example with basicRig.blend, from the last video. Download a copy of that file if you want to follow along.
It's finally time to go from modeling and animation to gaming. The secret is user input. Learn about the game logic view, how the logic bricks work, and how to map keyboard inputs to basic movement.
Joysticks and gamepads add a tremendously immersive input experience. Read various kinds of joystick input including buttons, the hat, and axis controls. Learn how to manage the axis threshold for better control, and connect joystick input to a model.
Putting together inputs seems pretty easy, but it doesn't take long for things to get confusing. Learn how to put together a gamepad control for a simple flight simulator. More importantly, learn a technique for managing complexity so that you can map any input you want to the appropriate output. See how frequent testing can make your debugging much easier when things go wrong.
Once you have created a model, added an armature, and created animations, you need to be able to play back those animations from within the game engine. Learn how to invoke any recorded action from user input. Also learn how to combine multiple actions with the animation layers mechanism, and how to 'snap' back to a neutral position after all animations are completed.
Note that I only described actions, but you can do exactly the same things with shape keys.
Mouse look behavior is one of the keys of modern gaming. It involves combining WASD motion with a mouse to rapidly rotate the head and body. This is a surprisingly difficult effect to achieve by hand, but blender includes a really nice tool to make it relatively easy. Attach a camera head to a cube body, map WASD motion to the body, and attach mouse motion to the head to achieve both flying and standard FPS walking motion.
Learn how to convert an object to dynamic physics mode. Modify its mass, drag, and anistropic friction values to get more realistic motion, and use the improved physics motion controls to add forces and torque. If you didn't understand all that, we're building a FLYING CAR!!! Seriously!
Of course, much of the fun of gaming happens when you crash into things. Learn how dynamic physics objects collide with each other. Use the various collision bound techniques, and see how a rigid body mechanism can give better behaviour.
Crashing into things is fun, but shooting things is even better. Learn how to create a bullet spawn point, attach it to a camera for a first-person view, build dynamic bullet objects, and have bullets die on demand to avoid overloading memory with unneeded vertices.
The character physics model allows you to easily apply character motion to your game objects. Learn how to build an object that can move over terrain, jump and double-jump. Turn a character into an actor that can be read by the near and radar sensors of other objects, and learn how to use these sensors to activate animations like opening doors and jumping cubes.
Games are ultimately about data. Learn how to add a property to a game object. Discover the difference between floating point, integer, and string properties. Learn how text elements have a special visible text property, and copy the value of a property from one object to another.
Many games feature things like crosshairs for targets, and text input. These features are often called a HUD (for Heads-Up Display.) Learn how to build a HUD that stays in place as the camera moves with scene overlays. Also learn how to check for ray-style collisions when there is no actual bullet, and how to send messages from any object to any other object in your game.
The game engine has its own variation of layer called 'states.' This tool allows you to apply more than one set of logic bricks to an item and switch between various logic layers at different times. Use this tool to build an object that moves back and forth indefinitely.
Now you can put together all of the things to create a staple of the gaming world - an escape the room game. Move the player towards a door and the door does not open. But if you pick up a key then approach the door, the door automatically opens.
This example is a good review of everything we have done so far: basic modeling, materials, animation, properties, motion, and logic.
Blender's logic bricks are awesome, but there are some things that simply can't be done with logic bricks alone, and some other things are more complicated than they need to be. Learn how to integrate the Python programming language into your games, and learn how to use an existing python template to begin writing code that can do new things. It's a whole new world!
Extend your ability to work with code by building an animation that would be quite complex with logic bricks alone.
Learn why an always sensor in pulse mode is so commonly used in python programming, explore the python documentation, and discover the difference between worldPosition and localPosition. Learn how to read game object properties from within python code, and build code that can create a game like the classic centipede.
There are a number of great ways you can automate keyboard input with Python. I have created a couple of template scripts you can use to simplify managing the keyboard. See how you can build a script that can read any key on the keyboard in either a single burst or continuous stream without requiring a ton of keyboard sensors.
Learn how a single script can easily implement complete FPS controls (mouse movement and keyboard) much more quickly than you would do it with logic bricks.
One of the best hidden secrets of Blender is a complete automotive suspension system that's built in. This technique is very powerful, but has a lot of set-up steps. I walk you through the entire process so you can add a really fun car suspension and power system to any vehicle model and create really fun and exciting driving games.
While it's possible to read a joystick with logic bricks alone, the logic brick mechanism boils all joystick input into simple on/off impulses. It would be better if you could determine how far the stick is being moved. You can do this with a script, and we learn how in this video.
Also, although we can control a lot of elements directly within code, another interesting approach is to set up generic actuators, and change their behavior through code. This can often be a lot easier than managing objects directly, because you already know how actuators work.
We'll take input from a joystick and use it to control a generic motion actuator.
Game design is an interesting topic in its own right, but in order for a game design to be useful, you must have some idea of your technical capabilities and the knowledge to implement your ideas. Now that you have a foundation in the required skills, you can begin creating realistic game design documents. Look over a GDD for a game that was actually created from the document, and see all the thought that goes into planning an actual game.
Now that you've seen the plan for the Spatial Invaders game, look over how it was created. For the most part, there's nothing new here, but we finally put everything together to build an interesting game.
His best-selling books include
He teaches computer science at a major university teaching the following courses:
Andy is also very active in homeschooling. He has taught math and programming classes to various homeschooling groups, and is a featured technology columnist in The Old Schoolhouse magazine, a leading magazine among homeschool families.
While Andy's technical depth is notable, it's his teaching style that makes the biggest difference. He has served as a special education teacher, and knows a little about how to help smart people become even smarter by learning new complicated tasks.
Andy is particularly interested in helping kids and adults who do not have access to computing instruction learn how to get started in this fun and lucrative field.
He has a great time teaching, and his courses are engaging and fun, while informative. A course with Andy is like having a friend who's written a lot of books come by in a sweater on a Saturday morning showing you how to do cool stuff. You'll learn a ton, and you'll have a great time doing it.