- [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
like...it'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 of...to 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
hair...at 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, and...no,
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.