So by the time Saturday afternoon rolled around, we were all patiently waiting for Daniel to finish up his work on “Rocket Fist” so he could submit it to the contest and we could finally start putting together our game for Ludum Dare. In the meantime, I had already passed the concept art on to Rachel, who started on the base goat model. I’d already started on Rusty and was already thinking about how I was going to put together clumps of grass to be effectively cut.
Modeling Rusty was honestly the easiest part of the whole process.
Admittedly, grass is not one of my favorite things to do in 3D. I knew it was going to take me a couple of tries to get the grass exactly how I wanted it. Having grass in a game that has volume and substance to it is not only really rare to see in large quantities (as putting a lot of polygons on grass is super-hella-wasteful in terms of resources), it’s also something that’s generally reserved for large plants, because that’s how the grass generally ends up looking when done in this style.
The overall challenge for creating the grass was to:
- Make the clumps of grass visually appealing for the player.
- Make the grass look like grass, and not large-leaved plants or bushes.
- Have it take up as few polygons as possible. but still have volume.
- Create more than one “variation”, including cut versions of the grass.
Here are my 3 finished grasses (cut/whole), the finished bases for the grass (far left) and the scraggly rejects in the front.
It took me a few attempts. I moved up from bunching together separate strands of grass, to forming a clump of thin grass and attempting to deform it, and then moving up to creating a large-leaf plant on purpose, where I then positioned and sized down the leaves to create sensible blades of grass. I used the soft-selection tool to shape the grass into different forms. I then removed the tops half of the grass to give it a trimmed look.
Daniel then implemented an awesome physics explosion/animation for the cut grass pieces so they’d burst and fall and splay all around when you destroyed a grass clump. It was a fantastic touch, as the sight of all the cut grass on the ground really gives a sense of accomplishment and adds some texture to the otherwise flat-colored ground once the grass stalks disappear.
At this point, Rachel had finished the base goat mesh and passed it off to me to get it ready for rigging. To prevent unwarranted deformations in a mesh when being animated, you absolutely must model your meshes to facilitate movement. You can do this by creating cuts around joints, giving more polygons to places that squash and stretch (knees, shoulders, elbows), and giving fewer polygons to the inside bend of those joints.
Finished goat model. You can see where the cuts were made to facilitate squash/stretch around certain joints.
Since we wanted to have two types of creatures instead of just one (to give some visual variety to the environment), a sheep model would also have to be constructed. As I planned to make a new sheep model out of the goat model, we went right to work as Daniel (begrudgingly) started rigging and animating the goat. I deleted some of the body, sized up the existing mesh to form a bulky wool coat, and Rachel reformed the horns to be twisty and twirly.
Sheep and goat models side-by-side.
This, by far, is the most effective way to create diversity in your models — like the three R’s: Reduce, Re-use, Recycle. The more you can cut back, stylize and re-purpose already existing assets, the easier time you’re going to have completing something a bit more complex. Since Daniel had already rigged the goat (which has the exact same major joint groups in the same spots as the sheep), all he had to do was copy the weights from one model to another and — tada! Two rigged and animated animals, ready for
slaught — er, I mean, observing!
And the goat was promptly imported into Unity and given ragdoll physics! The. End.
In my next post, I will talk about making simple textures that look great, creating the overall level/environment and the most interesting job in game development, ever: the chaotic task of placing foliage.