Game Jam | Adventure Game

We’re doing another game jam. Details here!

Challenge

The protagonist’s main objective must be based on a belief that is clearly and obviously false (within your game’s world). The player must know from the beginning (or near the beginning) that the belief is false. ALSO, all the other characters in the story can clearly see that the belief is false. Yet the main character stubbornly keeps the belief despite all evidence and reason to the contrary. The main character could realize the belief is false at the very end (but not before), or could not and continue believing it through the end of the game. A classic example of this is the story of Don Quixote, although there are many other different ways the story could go.

Details

  • Unreal 4.25.3
  • Maya 2018 | Back to 2018 after some bugginess on the last jam
  • 30fps

Unreal

  • MRS
    • Export set for Unreal should use geo group
    • For Unity should be individual geo
  • Skin cluster | did max 4 | found some posts saying that any more will auto max to 8 and be a performance hit

Synopsis

A man awakes in an alley to an amnesiatic haze- finding some lose clothes he assumes a new identity and seeks to solve this mystery.

Crew

Initial Testing

9.14 | Bokser got an early version of our toon in unreal working.

Face Rework

Bokser had been messing with this character for awhile. For this project we’re making some changes to the geo that need to be brought in and some changes to how we want the face to work.

  • Going to try a hinge head with the segment
  • Nose | changing to a two handle to connect to the head joints
  • Brow | adding scale setup
  • Eye | simple clam
  • Mouth | no more noodle lip. Changing to a much bigger mouth
  • Tongue | Roll in new geo

 

Post build Change list

Things to do after build to make consistent with prototype rig

  • Head |
    • Top segment handle | add base handle as default space [0] to the dynParentGroup
  • Joints
    • Scale Constraints off | Kill the scale constraints on:
      • Eye joint
      • Upr Lid
      • Lwr Lid
    • Maybe should convert these to direct connects to the direct handle?
  • Upr lip
    • Add first three head joints as spaces
  •  Renames
    • Spine
      • Cog | CTR_spine_part_cog_anim
      • Base IK | CTR_hips_ikBase_anim
      • end IK | CTR_chest_ik_anim

Rig #10

  • Jacket
    • Added extra joints on end
    • Back center | shortened for the split
  • Tongue
    • moved a bit
    • Changed index to 3
    • Moved setting gear out of the face
  • Teeth
    • Added upr and lwr teeth
  • HEAD
    • Moved the settings to the front
  • EYE
    • The scale constraints have to be off on the lid joints
    • Need simple clam setup

Rig #9

  • Export body weights from Bokser’s last
  • Initial build
  • Played with adding lip dynParent space on the upr lip
  • So far liking upr teeth following Face joint 3

For next build

  • Enough lip joints?
  • Finalized teeth
  • 3 joints on jacket
  • Final clothes
  • Move settings to front of head

Block changes necessary

  • DYNParentGroup | We’re gonna need scale space as well. Not sure if now is the time to do it but it will be necessary
  •  EYE
    • Might need the simple clam to be at root rather than lid position for better scaling. Need to test
    • Segment scale needs to be off on the lid roots for scale setup
    • I think we used to have the lid control as the aim vector for the lid. Might be nice
  • BROW
    • Simple scale blend?
  • MUZZLE |
    • Need another control follow setup than the ribbon. Going to try a dist factored point,orient, scale
    • Lip corner optional?
  • SEGMENT
    • Maybe need a hard orient to the segment handle option
    • SegMeasure curves aren’t hiding

Pizza guy

  • Front Idle
  • Dialog
  • Idle | spinning pizza, cutting up. do as much with dragger as we can
  • Transition to Talk
  • Talk Idle
  • Talking
  • Transition to Idle

Idle

Working at a table in the back making a pizza

  • Started with animDraw on the cog. Actually for speed, just did it on a ball and transferred to the rig
  • Spine
    • Dragger | 7.0 force, .1 damp, 50 scale
  •  Arm
    • Spring | 7.0 force, .1 damp, 50 scale
  • Pizza

First pass…

Front Anims

Decided for this initial push to just do the basics.

Template 1

Rig

First build

  • Somethign weird on left leg proxy
  • Need to swap out for new hands
  • Left eye proxy weird

Skinning…

Trin

We got our new mesh from the modeler and ref her into the template file.

Few things we see.

  • She’s off the template by a consistent amount
  • We can lose the jacket and hat blocks and we’ll need a few more as well.
    • Tattoo pen and base
    • Goggles
    • Chest

Fix height

When we need to find a specific offset we can of course just eyeball it. However, precision when we can manage it is usually a better route. So, what’s a place we can easily find a very specific point and differential between the two?

Eyeball? Excactly.

  • Go to the new geo and select the eyeball verts
  • Loc the center with cgm>create>loc-special>mid
  • We could use a measure node to get a distance but what we really wanna do is just snap it and then fix the others. So, I’m going to create a dag at the template eye root or that joint. This is our mover.
  • Select all of the rig blocks and parent them to this new null
  • Snap this null to the center pivot of the new eye geo
  • Presto. Pretty much everything is where we want it
  • Fix the feet and we’re done.

Build 1

  • Everything built find for the most part
  • I forgot to move the brow so I had to rebuild that
  • Rig still feeling good

Build 2

Post

  • Snap head end dynParent target to the correct upr head spot
  • Do same from Base head
  • Remove unused shaders
  • Add geo to export group

Sock Puppet

Sock Puppet is the quirkiest character for our game. Don’t wanna spoil the story so I’ll just talk about the plan.

  • Dumpster as a part of the rig
    • Try segment in it for fun squash
    • Lid Handle
  • Sock
    • Segment through body with squash stretch
    • Handle eyes
    • Muzzle lips
    • 2 joint tongue
    • 3 joint segments for hair

Build 1

  • I tried a limb (mid) and segment. I prefer the limb cause it feels more arm like but the segment would let you treat it more like a snake if you wanna go that route
  • the mouth is gonna be great especially with the seal
  • Tried pivots on the buttons and like how that feels
  • Might be worth a couple of handles for upr/lwr jaw for more play there. Could do just simple handles or short segments if you want squash.

Build 2

  • Added segments in head. This feels great. Might iterate placement
  • Initially had mouth following upr but prefer lwr after a test build.
  • Added hair
  • Added tongue
  • Dumpster geo needs some splitting
  • We’ll need to add a blending corner driver between the upr lwr jaw. Maybe as a space thing as well
  • SEGMENT | added parentToDriver setup
  • ISSUE
    • To get lid to follow constraint properly we have to scale delete scale constraint on the lid joint. Need to delve into the why
    • the seg joints need end scale connected…
  • Name issues
    • The new editor setup should really help head off name issues that constantly creep up not because of what is and isn’t visible in the attribute editor
for mObj in cgmMeta.asMeta(sl=1):
    mObj.doConnectOut('sx','sz')

for mObj in cgmMeta.asMeta(mc.ls(type='joint')):
    if mObj.mNode.endswith('segJnt'):
        if not mObj.isAttrConnected('sz'):
                mObj.doConnectOut('sx','sz')

Got a decent 6 joint dumpster.

Sock post fixes

  • Uprlip | add dynparent group
    • uprJawTip_segJnt
    • lwrJawTip_segJnt
  • Corners
    • make dag per handle
    • constrain those between the jaw seg joints
    • make this main dynParent space with the other joints as options
  • add new dynparent targets to delete set

Post Settings

  • Hair Base
    • Spring | 5.0, .5, 10scale

Anim

  • idle_inactive
  • idle_awake | socky opens lid and peeks out
  • dialog

 

Limb Patient

Quick mod on the base.

  • Tweaked nose geo
  • Other hair
  • Moved eyes

Trin and Limb guy

  • Together
  • Anims
    • idle
      • they’re just there
    •  dialog
      • trin talk, guy idle
      • vice versa
    • guy_cycle
      • idle
      • talk

I have a day to do all these anims so it’s important to get the base pose right and things setup how I want them.

  • Stylus hand
    • Stylus constrained to hand via space pivot
    • Battery pack constrained to back of hand via space pivot
    • Hand in space Pivot space. That space pivot constrained to a locator so I  have tip control
  • Right hand
    • Constained to guys arm via space pivot as I want that arm to flop around some during the cycles
  • Guys left hand constrained to head via space pivot for my peek

Filters

  • Arm | spring 7.0, .3 20scale
  • Hand | … 10 scale
  • Fingers | spring 9, .4 15 scale
  • Body | dragger 7.0, 25 | trans and rot

Also needed anims for just the guy. Rough. Knocked it out in a couple hours.

Teddy

We have a cyborg teddy that will need a rig should we want to expand on our game which we do.

A reason to check scale… 🙂

Random Bits

A bin of arms was requested. And delivered.

Life to the party

  • Car cycles
    • Rig with joint
  • Drone
    • See if we have a mesh
  • Cleaning robot
    • little mouse robot going around
  • Maybe motorcycle

Drone

For the mesh I took a ‘wheel’ from one of the hover cars and scaled it around a bit. It had some cool light texture work already and the geo was setup to be able to spin the bottom for hovering.

  • Simple poses
  • Anim layers
    • Aim To path pass
    • Dragger | -y aim to get drag aim backwards for p

4.25 Exodus | Let my build go!

We had a major block in that 4.25 refused to build for us. Bokser spent days on it and there was no current way to get a build out. So we migrated to 4.24

Specific FBX import settings

  • Material instancing to a specific mat
  • Base Color change

Moved fbx files all to dropbox and just importing to the repos build.

After this we imported all the old anims and rigs from the new dropbox rather than fbxs on the repos to save some overhead.

Then after that the main blueprints had to be rebuilt for 4.24

Face Scaling Stuff

Still having issues with face scaling stuff. Need to work through this more

for mObj in cgmMeta.asMeta(sl=1):
    mRigJnt = mObj.getMessageAsMeta('rigJoint')
    mObj.doConnectIn('scale',"{0}.scale".format(mRigJnt.mNode))

 

Supplemental Anims

Since we had to bail on our deadline because of unreal we decided to flesh out the game a bit more and push towards a possible actual release.

Trin and limb guy

  • Base idle to Zany
  • Zany idle
  • Zany female talk
  • Zany guy talk
  • Zany to idle

Pizza Guy Update and supplemental

Team wanted a firmer pizza arm so went back to the rig and moved some stuff around and gave myself a few more handles to bring some more life to it.

Note – Watch the pivots. The base on the arm tip there’s pivot isn’t quite centered and doesn’t rotate well. I’ll rebuild if I have time but it’s not super noticable. Maybe the wobble adds interest. 🙂

Cry and dialog cycle – hour looking for some good cry poses, 3 hours with fliters.

  • Body | default dragger layer, size 50
  • Head bob | Spring 10, .4, 25
  • Body | spring 7, .4, 50
  • Shoulders| spring 10, .4, 50
  • Pizza arm | spring varied, .4, 50. Played with aim and after bake killed the data on the channels I didn’t want

Shader issues…needed to fix

for t in ['blinn','phong']:
    for mObj in cgmMeta.asMeta(mc.ls(type=t)):
        if 'pizzaGuy_geo_06_' in mObj.p_nameBase:
            mObj.rename(mObj.p_nameBase.replace('pizzaGuy_geo_06_',''))

Final Fixes

  • Main guy
    • Lid fixes | -8.182

Post Mortem

Unreal

  • It sucks. 4.25.3 | major issues getting a build out
    • Migrated to 4.24
  • No reason to store FBXs in our repos. Takes up space for unreal projects. Better to keep in separate dropbox fol

MRS

  • Still holding up like a champ
  • TO DO
    • SCENE/Project
      • anim match should fix timeline when changing time option so it’s not on a fractional time
    • Have stand alone instances of Maya close the window unless it fails
    • LIMB
      • Need consistent sizing on prerig
      • Add pickwalking to shapers
    • Segment
      • None ikBase not connecting to parent properly
    • REALLY need this new block editor
Josh Burton

[MRS Project Lead | CG Monks] Josh is an animator turned TD who hails from Oklahoma, pre-undergrad in the Marine Corps, animation basics at Savannah College of Art and Design, cut his teeth in gaming and commercials before co-founding CG Monks and more recently the CG Monastery. The Morpheus Rigging System is a culmination of years of R&D and he is now thrilled to see what users can create, collaborate and expand on with this open source MRS platform.