Siggraph 2017 Rewind - Winston Matthews: Creating VR Games with C4D

Photo of Cineversity

Instructor Cineversity

Share this video
  • Duration: 45:31
  • Views: 3694
  • Made with Release: 18
  • Works with Release: 18 and greater

See Cinema 4D workflows for creating Virtual Reality game assets.

Fourteen-year-old Winston Matthews has already created two Virtual Reality games with the help of Cinema 4D and Unity. In this live presentation from Siggraph 2017, Winston shows some of the Cinema 4D techniques he’s used to create assets for his games. You’ll see how Winston generates skyboxes using simple displacement, animates characters to create game actions and creates grass and water assets. Learn more about Winston and his games at

06:03Creating Assets for A Wasteland VR Experience
11:07Creating a Skybox
21:42Teddy Bear Animation
37:56Water Simulation



- [Winston] Good afternoon, everybody. I'm Winston Matthews, and I'm 14 years old. In 2016, I was hired as the youngest VR game developer for a Silicon Valley based company called Virtual World Arcade. That's where I developed my first VR game called "Worst Nightbear" in October of 2016. "Worst Nightbear" has been released commercially in several arcades throughout Silicon Valley. Over the last year, I have been invited to present at TechCrunch DC...TechCrunch Disrupt DC and at South by Southwest in Austin, Texas. An investor in the company I worked for saw my potential and decided to invest in me, so I launched my own startup company, Winston Matthews LLC, where I have raised $80,000 in angel funding. I'm also the first youth ambassador for a Washington DC-based ed tech firm, EVERFI, a company which is backed by Google's chairman, Mr. Eric Schmidt, Amazon's founder, Mr. Jeff Bezos and the lead singer of U2, Mr. Bono. I've also been invited to speak at the World Bank in Washington DC, October 5th 2017, about our new reality in a virtual reality world. Now, South by Southwest is one of the biggest music gaming conferences and film conferences around. It was there that I met with Maxon and was invited to speak here at SIGGRAPH 2017. And I know that most of you here today are all professional animators, although I do create animations which I put in my VR games, I do not specialize in animation. My skills are really in being able to code and put the entire product together from the storyboard, concept, the front end and back end coding, the development and the music and the sound effects. Then by applying all of these skills, I'm able to create my own virtual reality games. And I'm currently taking my VR skills and putting them into VR games, but in the future I'm looking to gamify other industries that will be impacted by VR, from medicine, mental illness, sports, travel, finance, entertainment among others. Now I would like to show you all a quick video trailer of my first virtual reality game called "Worst Nightbear," which includes feedback that I received from South by Southwest. - [Man 1] We're here at South by Southwest, and we ran across America. It's one of the coolest stories ever. I've been making games for 30 years. A young man, 13 years old only, who's built his own VR game. It's incredible. You haven't seen it yet? You got to get out there and check it out. ♪ [music] ♪ - How'd you like the game? - It's really cool. Yeah, best one that I've seen out here. It's really nice. - That was crazy. - The game's awesome. It was crazy. I loved it. - Oh, it was wonderful. It was so much fun. It was better than going to Disney World or Disneyland. - [Matthias] I'm Matthias with Maxon, maker of Cinema 4D. Amazing experience, and I'm so impressed with what you're actually doing at this stage of the game. - [Ricardo] My name is Ricardo Laganaro. I am a VR filmmaker from Brazil. Thirteen-years-old kid invented a game that is so funny and so cool. I just played for, like, hours, not thinking about anything. It's great. - VR was amazing, I got to say. My sons have done it. His friends have done it. They were playing all kinds of games here, and they just pretty much reverberating that this is their funnest game. Like, this is the one that they like the most. There's some big games here, so I got to say, Winston, you really did a good job. - Like, it's really good. Like, I love it. I just really like it. It's really cool. - The experience was surreal. So many things to look out for and [inaudible] at the same time. It's absolutely amazing. - I loved it. That was the first time, and I thought it was great. - You can just shoot. You can look around, and you can still just be's awesome. - Very realistic, very responsive to, like, the controls are very responsive. - I thought it was crazy. I thought it was super good. There's so much to like. - This kid has a huge, huge future. That was great game. It's a lot of fun. - Yeah, there's other people who are, like, 40 years old, done their thing. This kid's 13 years old, and he's beaten these other people by, like, a mile. ♪ [music] ♪ - So what makes virtual reality so important? Our brain's interpretation of actual reality is not really real. Our brain can easily be fooled and blur the lines between actual reality and virtual reality. Anything is possible with VR. You can travel across the world, fly around space or even battle dinosaurs. Virtual reality can most accurately mimic human experience of reality and therefore has the ability to disrupt many industries over the next 5 to even 50 years. Some industry statisticians have predicted that half of the Fortune 500 companies that exist today will not exist in the next 5 to 15 years, for example, Kodak films. Now, where does Cinema 4D come into play with all of this? Well, I've been using Cinema 4D for years now. And when I first started out, I was just doing it for fun to see what I could create with it. And eventually, I was able to convince my parents to get the full R13 version, and years later, when I started to create my first virtual reality games, I had seen some of the animations that I had done in the years before and thought, "Well, maybe I could throw this into my game." And so, I started to create my own animations for my VR games. And first before I jump into Cinema 4D and start animating, I would like to show you some screenshots of animations that I've created in Cinema 4D and brought into my newest game called "The Wasteland." So, here I have just a hand which has been textured and rigged. Each finger has been rigged to be able to move just like a normal human hand. And for those unfamiliar with virtual reality, if you want to be able to track where your hands are you have to hold controllers which look like these. And now having virtual hands in VR can make the experience much more immersive and adds to the realism of virtual reality. And to show you how hands can work in VR, I created a little video of the hands that I animated in that previous slide and show you a snippet of what hands really can do in VR. ♪ [music] ♪ And now here I have two low poly cars, which I have created to look broken down and rustic to go along with my post-apocalyptic look of my newest game. And here are the vehicles and what they look like in the game. And this is a zombie which I have a rigged up and textured and given some animations. And this is a mutant sort of creature which I have also textured, rigged, and animated. Now, here we have a handgun and each of the components of this handgun are separate, like the slide, the trigger, and the magazine. And I created all of these components separate because in VR, with these components separate, I will be able to pull out the magazine, put a new magazine in, pull back on the slide and animate the trigger when I actually shoot. Now, here I have automatic weapon which I've done the same thing, making each component separate and a semi-automatic weapon and a shotgun with the shotgun shell and empty shell and a sniper with the shell and the bullet and the empty shell. Now I have another quick video that showcases how I took these weapons and made them virtual reality. ♪ [music] ♪ Okay, so, now I'm going to jump into Cinema 4D and do some animations and the methods that I did to create those animations. Okay, so, the first thing that I'm going to create is a skybox. Now, a skybox is very important when creating a game or a virtual reality game because it acts as the actual sky, and it can also act as objects far out in the distance like mountains. So, what I'm going to create now is a skybox with mountains out in the distance and have a sky and a simple terrain. So the first thing I'm going to do is create a disc and kind of make it like a circle around the center, so I'm going to increase the outer radius to about 800 and the inner radius to about 600. Let's say 650. So now we have sort of a ring around the center, and this ring will act as our mountains. So now I'm going to increase the disc segment up to about 20 and add the rotational segments and make that about 100 for now. So now what we're going to do is create a displacer and put that as a child of our disc. I'll increase the height to about 100 for now and go to our Shader and create a Noise, so this will create this kind of look. And if we go into our Noise, we can make it an FBM, which I think looks better when creating things like rocks and mountains. And if we go back and go to our Falloff, instead of making the shape infinite, I'm going to make it a torus, and I'm going to expand this torus so it fits pretty nice and snug around our disc. So now that we have created our torus, I'm going to go back to the object and increase the height so we kind of have our mountains which sort of take place. Now, as you can see, the mountains are kind of going up and downwards if we look down here. And we only want it to go in the positive y direction. So instead of having the intensity at centered, we're just going to have a regular intensity which will make the mountains go upwards. Now, it's kind of unnatural how these mountains look. They're kind of sloping inwards, and we want the mountains the slope outwards. So if we go to our Falloff, I'm just going to hit Invert which will make the mountains slope outwards. So now we're going to create our material, and I'm going to go in here and turn off our reflectiveness and check Displacement. Here I'm going to add another Noise texture and hit Sub Polygon Displacement, and I'll make the Subdivision Level about six is probably good, and we want to click Round Geometry so our mountains don't look like pointy triangles and more like realistic mountains. So now in our Noise, I'm going to make the Noise an Electric. And then that all looks good, so I'm going to give it sort of like a brownish kind of color, dark brown sort of like that. So now if we put our material on our mountains, and we render this, we get sort of a mountain-y kind of look to it. So if we go back to our disc and increase the disc segments, we'll see that the mountains take different shapes, and if we increase the rotational segments, the mountains will change as well. So I'm going to make this about 150 and make the Disc Segments 35, and now I'm going to go into our little disc here, and when we render this, we kind of get our mountains. So, to make this look a little more realistic, I'm going to add a Physical Sky, and we can play with these settings a little bit. I'll make it August, and let's say 17:00, and I'm going to add atmosphere, clouds, and fog. There we go. So in our clouds, I'm going to check Layer 6 so we get six different layers of clouds, and let's see. In our atmosphere, I'm going to increase the Horizon Fade to about 60 and then go to our Fog and increase the Density a bit. So now if we render this, we get a more realistic looking mountain with our sky. Now, these mountains are much too clumped together and we kind of want them a little more spread out, so if we go back to our disc, we can change these settings a little bit to make that happen. So now that we have our mountains set up, I'm going to create a simple terrain. So I'm going to make a landscape, and I'm going to expand this a bit like that, so it goes around our mountains. So now we have our simple landscape, but if we were to render this, we would see gaps underneath the mountains and that doesn't look very good. So now I'm going to uncheck Borders At Sea Level which will raise it up a little bit, and I'm going to raise this up a little bit more to cover all of the disc. So now we just get the mountains. And because this is a skybox, we're going to want to create a camera, and I'm going to set this camera at 0, and the Y, I'll just set it at about 100 and reset the rotation. So if we go to our camera, we get this look, and this is what one of our camera angles of our skybox will look like. So now we're going to add a basic texture to our terrain, just to match the mountains. So I'm going to create another Displacement and make another Noise. Hit Sub Polygon and Round Geometry except I'm going to make this a Wavy Turbulence and change the low clip. So I'm going to increase this low clip. Let's see, 70, say 72 so we get an occasional bump every once in a while on our terrain and, again, I'm going to give this like a slightly light brown texture like that. So when we render this, we get an occasional bump here and there with little rocks. Give you a very rocky looking sort of terrain. Now, if we wanted to lower the amount of mountains there are, in our Displacements, and if we go to our Shader and go into our Shader, I'm going to scroll down and take our Low Clip, and this will kind of spread out the mountains a little bit. So let's make that 35 and see how that looks. So now we have less mountains, and that looks a little more realistic. And obviously, we can play with these settings and create your own mountain range. And if we wanted to make this a little more three-dimensional instead of just having one layer of rocks, you could take your disc, and I'm just going to copy it so we have another disc layer. I'm going to change my camera angle, go like this, so we can get a little better view of it, and I'm going to increase the outer radius and increase the inner radius a little bit which will add a second layer of rocks. So it will look like this when finished rendering. And because it's a skybox, we want the mountains to look far away, so I'm going to go back out here and take both of my discs and change the coordinates to 2, 2, 2, just so the mountains are farther away and change this one and do the same thing, 2, 2, 2. And to keep it proportional, I'm going to go to our landscape, 2, 2, 2, so now our mountains will look farther away and more like a skybox. And if we wanted to now take our skybox and bring it into our game, what we would need to do is take our camera like this, and I'm going to go out of the view so I get a better look at it, and I'm going to just copy and paste that. And since I'm just going to make this first camera that we made our front angle, so I'm just going to call this "Front" just so we know which camera is facing which direction. And this second camera, I'm going to rotate to the left like this, and I need to make it exactly at 90 degrees. So now it's at 90 degrees, and I'll call this camera "Left." And then we do the same thing, and we call this "Back," and we rotate this to 180 and do the same thing, make this 270 and call this "Right." Now, we also need the up and down so the skybox will include the sky. So we make another copy, call this "Up," and you rotate it upwards and make it exactly 90 degrees and make another copy and call this "Down" and then make this negative 90 degrees. So now that we have all of our cameras set up to render this and export it to make a skybox, we would go to our front camera and export it and call it "Front," and then we're going to go to our left camera, export and call it "Left" and so on and so on until we finish all of these. And then we get every single angle of our skybox, which we then import into our game. So, now we've completed our skybox, and the next thing that I'm going to do is take one of the teddy bears in "Worst Nightbear," one of the teddy bears and give it an attack animation. Now, those teddy bears I purchased off the Unity Asset Store, and they did not come with an attack animation. And because they are evil teddy bears that are attacking you, I wanted to give them my own attack animation. So I'm going to go to my teddy bear here, and we are going to give it our own attack animation. So I'm going to go to the "Animate" layout like this, so now I'm just going to delete the teddy bear so we just have our root. Because I prefer animating with just the root alone. So this is basically our bones of our teddy bear, and we're going to animate our teddy bear to do an attack animation which will look like one of these...which will look like this where the teddy bear brings back its arm and swings its arm at the player when it gets close enough to the player. So, to start off, I'm going to hit "Auto Key Framing" and I'm going to bring his arms down into a little more of a natural position. That looks about good and set our keyframe right there. And then I'm going to copy this keyframe at 5, so he stands there for five frames, and then he's going to start moving back his arm. So I'm going to bring up his arm slightly like this and give his forearm some bending, so now he brings up his arm like that. Oh, the bending didn't keyframe. Okay, so now he bends his arm. So we also want, when he takes back his arm, for the body to rotate with his arm. So after he takes up his arm, so at 15, he's going to take his arm all the way up and bend his arm like that, and then we want his body to begin to rotate with his arm. So now if we play this, he brings up his arm and begins to rotate. Now, when he brings up his arm, we kind of want him to have a little bit create a fist with his little hand, so I'm going to rotate his fingers in like that and bring in his finger. No, there we go, and bring in his other hand like that. So now if we bring back our teddy bear, he's created a little fist. So, now that his body has started to rotate, we want his body to continue to rotate. So I'm going to click on his body and rotate his body all the way back like that and so he brings back his body. And that's a little too fast. Let's make it about that. So then he brings back his body and is ready to attack. So at 25 as well, I'm going to give his arm a little more bending and then bring his arm, like, a little bit forward. Okay, so, if we bring in our teddy bear, this should look like this. Oh, that's not quite right. So, he brings back his arm like this, and we're trying to make it look a little more natural, so he gradually brings up his arm. So instead of having his arm all the way up at this point, I'm going to lower his arm down a bit. I think that's probably better. Let's see how that looks. Okay, so, now that looks a little bit better with the arm, except he kind of unnaturally bends his forearm right about here when we play this. So right there we have a kind of unnatural bent, so instead I'm going to make this a little less and make it more like that. All right, so, if we bring our teddy bear back, let's see how that looks. So he kind of makes a fist, begins to bring back his body and then...let me put that back. He makes a fist. He begins to bring back his body and is ready to attack. So, now at 30, I'm going to begin to bring his body back and then back over the axis because he's putting a lot of force into it, and he's rotating over. So, that's probably about good. So, then he goes and brings through his body. And now at 32, I'm going to have his arm as well come around like this, so bring that way around and straighten out his arm a bit like that and let's see. So it's something like that. So he brings through his arm and attacks. So if we play this with our teddy bear, it kind of looks like that. So now that he's come through and hit the player with his hand, we are going to have his arm begin to come back, but we want his body to continue to rotate out a little bit and then will gradually come back to its starting position. So if we take his arm, we're going to take this back just slightly like that and straighten out his arm just a little bit. And then if we take his body, we can just slightly rotate it a little bit more. Let's see how that looks. Okay, so here brings in his arm. Let's move this out a bit like that. So that looks a little bit better but also here, I want to bring down his forearm a bit like that. Let's make that 40. That kind of looks a little bit unnatural, so let's bring down his forearm a little bit more and bring it out a bit like...let's see how that looks. Okay. That looks a little bit better. So now once he's there, he's going to start bringing his arm back into his original position, so I'm going to copy our 0 keyframe and bring it here. Let's see. That's way too fast. Let's take that maybe to 55. Swings through, but then he kind of, like, comes around, and that doesn't look amazing. So instead I'm going to bring his arm at about 45 and bring it down a little bit more. I kind of get a little kick there. And let's take this out to 60, actually, maybe 60, yeah. [Inaudible] and brings back his arm. Let's see if that looks any good with the Teddy. Make that 60 frames. All right, so, that looks pretty good. Now we want to make sure that the teddy is returning back to its original standing position at key frame 0, and it has the same stance at keyframe 0 and at keyframe 60. Because in the game when the teddy approaches the player, and it gets close enough to attack, it's going to take its arm, swing, and it's not just going to stay there and not do anything. We want it to continue to keep attacking the player. And so if we want that to run smoothly, we want the arm to go back to its original position so that it can swing again and come back and swing again. Now, what we can always change...we can always mess with this a little more, and we can make his ears wiggle a little bit, so I'm going to maybe give his ears a little bit of a wiggle. So right before he's about to finish bringing up his arm, let's rotate his ear a little bit and rotate this other ear. So he kind of rotates its ear, and then he'll come back and have his ear back into its original position. All right. We can't really see that unless we actually have the teddy, so I'm going to put that back, and we'll see how that looks. So it does a little ear wiggle and then attacks the player. Now, if we wanted its head to also move instead of it having just aligned with the body wherever the body rotates, we can take the teddy and its, like, head, and we can rotate it slightly so it kind of looks that way before it brings back its arm and then goes...oh, that was its nose, not its face. Let's undo that, all right. Now, so, this is the face here, and we're going to make it look a little bit that way and then bring back its arm. So it kind of looks that way, and then it brings its arm back. So this is our completed teddy bear attack animation where it brings back its arm and swings through and attacks the player. And we can always add to this, give him a little knee bend and do what we wish with our teddy. But I think this is a pretty good base attack animation. And now, if we wanted to export this teddy and bring it into our game, we would just save this and go to "File," "Export," and we would export our teddy as a ".FBX" which will export our teddy with its attack animation, and we would just call it something like a "Teddy Attack." And that would be our teddy attack animation in our game. So the next thing I'm going to do is create grass. Now, I created grass in my game, in my new game "The Wasteland," which kind of looked like this. And I'm going to show you somewhat how I did that. So we're going to start off by creating a plane, and this will be our dirt for the grass. And grass in real life, obviously, doesn't have a flat plane of dirt under it, so we're going to give it a little bumpiness. And so I'm going to add a Displacer and go to the Object and add a Noise which will make this slightly bumpy, so now we have a decent-looking dirt terrain. So I'm going to click on our plane and go to "Simulate Particles..." No, not particles, "Hair Objects" and add our hair which will create our hair grass. And obviously, when we render this, this will look like some kind of dirty blonde hair, so we want to make it look like grass. I'm going to go into the Texture, and for the bottom of the grass, give it a dark green look and then for the top of the grass, give it a brighter green. Now, this grass has way too much specular on it, so I'm going to go to the Specular and turn down the strength quite a bit, primary and secondary, so now we have a little better looking grass here. And instead of making it look like thinning hair, I'm going to make it look like grass and increase the thickness and make it 1.2 instead of 1. So now we get a little thicker looking grass. Now, I'm creating a little plot of grass right now, but this can also be, like, a line of grass or just one little thing of grass, if you just wanted a small, little sprout. So what I'm going to do now is in our hair, if we play this, all our grass unfortunately falls over, and that is very sad. So I'm going to go to the Dynamics and hit Rigid and go to our properties and increase the Rest Hold to about 25%, and that will...yeah, so now our grass doesn't fall over. And in our Texture, now I'm going to go to our Basic, and I'm going to add a Clump and a Wave and a Curl as well. So, this curl, this is way too much curl for grass. I'm only going to make it 10%, and that will give it a little bit of a curly look to the grass, making it look a little more realistic. And now if we go to the "Clump," I'm going to increase the count to, let's say, 50, and the clump to 35 and increase the variation. I'll make it 50. So we get a little clumpier looking grass, and it all kind of clumps together a little bit. So now, let's see. Oh, right, so, now we want our grass to kind of animate in the wind and have it blow around in the wind. So I'm going to click on our Hair and go to Simulate and Particles and add a Turbulence to our hair. And I'm going to make this, let's say, 25 strength, and that's probably about good. So if we play this, we kind of get the wind blowing in the grass which is kind of hard to see without it being rendered. I'll increase that to 50, maybe. So now it's kind of blowing around. To get a better look at this, I'm going to go to the Hair and the Guides, and I'm going to decrease this Count, make it 200. So now we get a better look at the the grass animating in the wind. Now, to finish off this grass, I'm going to give the dirt some texture. I'm going to increase this back up to 2000 which will create a more realistic looking grass again. But we're going to create our dirt, so I'm going to make this just like a...oops, kind of, like, a dark brown texture again. And in our Displacement, add a slight Noise to it, and I'm going to make this noise a Wavy Turbulence and increase the Low Clip on it. That's probably good. All right. Let's see how that looks. Oh, I didn't apply it. All right. Oh, Sub Polygon Displacement, forgot about that. All right, so now we get kind of a dirt looking texture, and if we wanted this grass to be on a different material, or we wanted it to be on a material that was already in our game, we could just get rid of this dirt and just have the grass and place that grass on top of, like, a road or something. So now that is our completed grass, and it will animate in the wind. It's a little hard to see, but when it's rendered, we'll be able to get good looking wind blowing through that grass. And since I have a little bit of extra time, I'm going to show you how I animated some water which is not currently in my game, but I am using water in the final version of the game "Wasteland." And I'm going to show you how I created that water. So, again, I'm just going to create a plane. Let's make this plane bigger so we have a bigger body of water and make the width 100 and the height segments at 100 again. Okay, so, now we have our plane and we are going to create a Displacer on this plane...under the plane as a child and create that Shader which is going to be a layer. Because we're going to add multiple different noise shaders in our water to give it a more random watery kind of feel to it. So we're going to create our first shader which will be a Noise, and we'll go into this, and we're going to make the Speed 1%. Let's see how fast that is, and make that movement 0.2 and 0.2. Let's see what that looks like. Okay. That's okay, maybe a little bit fast. I'm going to make this 0.5 and see if that's any better. Okay. That looks a little better for water. And now in our displacer, I'm going to create our second shader which will, again, be a Noise and go into this. And I'll make the Speed once again 0.5, and this time I'm going to make the movement 0.1, 0.1 and the Y, 0.3. Okay, so, back in our displacer. Now, here is our first noise, and this is our second noise, and now we're going to mix the two and make each of these 50. And so now we get a good mix of both of those noises which will create somewhat of watery texture. All right, so, now we're going to create our material which I'm going to add a Bump to, and this bump is going to have a Noise on it. And this Noise, I'm going to make a Displaced Turbulence, and I'm going to increase the speed, 0.5. And I'm going to make the movement 0.2 and the height 2. So now if we want to give it a reflection, I will add a reflection. Let's see. Yeah. I'll just add a reflection and turn down this a bit like that and give it a very dark bluish texture like that. So now we have our water which will animate, but when we render this, we're obviously not going to get any reflection off of it because there's nothing to reflect off of. So I'm going to create our Physical Sky and add some Clouds and Atmosphere and Fog again. Except now I'm just going to load a sky preset. I'll load this...any one of these would probably work. I'll just load that one, see what this looks like. So if we get up nice and close to this water, we should get a nice looking water texture with a reflection. Now, this water is very triangular. It's kind of not realistic and rounded. So in our Material, I'm going to go to this Bump,, I'm going to go check Displacement, and I'll just create a Colorizer like that and hit Sub Polygon Displacement and Round Geometry so our water will look a lot more rounded. So, now our water definitely looks a lot better, and when we animate it, we will see our water animation. And it's kind of being water. And we can obviously increase, like, the waves if we wanted to make this much wavier like it's in a storm or something like that, but I'm just going to leave this water how it is, nice and still, like how most people like it. So now we have completed our water animation, and I think that does it for our Cinema 4D demo. But now to wrap everything up, I'd like to show you one more thing, and that is my trailer for my newest game, "The Wasteland." ♪ [music] ♪ - [Host] All right, ladies and gentlemen, Winston Matthews.
Resume Auto-Scroll?