Week 7: Sketching out the Main Character

20170730_230451.jpg

This week I focused primary on creating the main character for the game. I knew the general character I wanted for the project but I did not know how to go about starting his design. From my art past, which was very long ago, I focused on making caucasian main characters because thats what the resources from my lessons taught.

20170730_230514.jpg 20170730_230527.jpg

However, I knew from the start of planning this project I wanted a African American boy as the main character of this project so I had to dig for inspiration on this front. This was very challenging due to the limited number of good main characters that happen to be black let alone video game characters. I looked at character like Huey Freeman from the Boondocks and the children from Playdead games like Inside and Limbo get a general idea of what I wanted.

20472315_10213828174328665_1543716794_o.jpg

I wanted to show the character a scared and vulnerable, so I went with this hunched over scared look. Then continued with more angles and ideas about the character.

20495731_10213828176408717_2001912788_o.jpg

I want the character to have a Afro, but after a fruitful conversation with Ernest we came to the conclusion that his fro should not be the biggest thing on him so I shorten his hair to make him and his actions the most memorable part of the character not the fro.

20495539_10213828176048708_1909181074_o.jpg

20495586_10213828166808477_1201395462_o.jpg

I still have a lot of work ahead of me for making this character work but I believe we are on the right track and we are weeks away from making this character 3D modeled and animated. So more to come soon!!!

Advertisements

Week 6: Controls are Working and The Take is taking form!

This week I have been mostly fighting with the controls and have gotten something working finally!

3.jpg

What seemed to have been the problem was that within my player move script I needed to register the movement for the player’s input on the Gear VR Controller and add it to the movement of the player. After the player received this movement I then had to set that same movement to 0 all within one update function.

 

// This add the force from the Gear VR Track Pad on the OnEnable Function

void localTouch(InputTouch touch) {

touchHorizontal = touch.currentTouchPosition.x;
touchVertical = touch.currentTouchPosition.y;

}

// VR Controller
float h = touchHorizontal;
float v = touchVertical;

// Set Them Back to 0f so they don’t move the character anymore
touchHorizontal = 0f;
touchVertical = 0f;

// Do all my movement logic after….

This is looking good for now. I will take more time for refinement in controls in the future but progress is being made!!!
Speaking of progress being made… I have still been play around with the idea I had from last week as well.

Over the last week we’ve been working on getting the Gear VR controller to work within our scene and interact with objects. It’s been slow going, but I think we’re finally making some progress. So far, I’ve been able to make a raycasting object that is attached to the Gear VR controller in the scene. This raycaster can detect designated objects, temporarily change their material as it hovers over them, and teleport/lock them to the impact point of the laser with a press of the trigger. Because we’ve given these objects rigidbodies, they will move and bump into other objects in the scene as we move the controller around. Then, when we let go of the trigger, the object will fall to the ground with physics. I’m a little hesitant to rely so heavily on physics in a mobile VR game like this, but anyone who has gotten a chance to try this out has responded positively to these simple but intuitive forms of interactions with objects in 3D space.

My next goal is to figure out how to make the rotation and precise manipulation of objects feel tight and refined. This is the most important part because I want the players to appreciate the detail of the art they’re picking up, and they can’t do that unless the controls feel smooth and intuitive.

Week 5: Putting it All Together

cometogether.jpg

This week I finally got to put the player into the first level. My idea for this level is to make the player wake up in a room and find a way out. This will be an introduction to the controls. There will also be a puzzle to get out of the room, this will show a general understanding of the controls by the player. The player need to mater some basic commands in order to continue within the game.

Screen Shot 2017-07-16 at 5.52.52 PM.png

This warehouse section is the part of the game where player will be waking up and start the experience. The player moves around pretty comfortably and the scene looks great, but most of the shaders within this scene are Unity’s standard shader and that is not good for mobile VR. Currently our drawcalls are around 40 for this scene but some areas the drawcalls are nearly 70. This needs to be fixed before we move on within the next level. However, I have hope we can fixed this soon. There are some prototypes I’ve been working on that only has 9 drawcalls if I can figure out how that is being done my hope is that Ernest and I can use that knowledge within the next scenes.

Screen Shot 2017-07-16 at 5.53.04 PM.pngHowever for now this is excellent progress and I cannot wait to continue on Museum Multiverse.  What I have to do next is get my controller scripts working with the character this has been harder than I thought but I will get this working and it will be great when it I do!

 

 

CRAZY THOUGHT

Early today, I started to wonder how Museum Multiverse would play if experienced from a first person camera. While I know that first person platformers are not the most praised of game genres, I thought about the focus on art and how players might be able to better appreciate the art if viewed from a first person perspective.

Screen Shot 2017-07-14 at 12.18.55 AM.png

We decided that over the next couple of weeks we’ll create and experiment inside a small mock scene in Unity, focusing more on utilizing the Gear VR controller and manipulating objects by picking them up and turning them around. What if we could pick up a piece of art, pull it in and out, turn it around, and fully appreciate the detail in each piece? Then we can intersperse sections of fast-paced third person platforming action with quieter times of first person appreciation and exploration of art. We don’t have any of the art assets in this room just yet, so we’ll be using simple geometric shapes and common room items to get the feel and controller first.

Screen Shot 2017-07-16 at 7.02.05 PM.png

Screen Shot 2017-07-16 at 7.02.21 PM.png

I’ll continue to work on my third person platforming section, but I can’t rest until I throughly test this first person idea.

Week 4: Handling Camera Movement in VR

FOV.jpg

I am facing a problem in Museum Multiverse, the third person camera still feels weird following the player. I want to make sure the movement is smooth and comfortable for the camera and player, so I have been looking around for solutions and I think I found one.

Limiting the player’s peripheral view reduces the motion sickness of movement. I learned this from a paper I found on the subject by Ajoy S Fernandes and Steven K. Feiner at Columbia University. Basically the solution they learned from experimentation had a real reduction of motion sickness by limiting the view based on player speed.

So how do we do this in Unity?

First we would need to import the older Image Effects into Unity from the asset store. We are really just looking for the Vignette And Chromatic Aberration script. After you import this add this to your main camera. Once this script is added you need to set everything on the script to 0, you will only be playing around with the vignetting option.

Screen Shot 2017-07-09 at 3.11.17 PM.png

Try playing around with the Vignetting values to see how it effects your camera!

Screen Shot 2017-07-09 at 3.14.53 PM.png

Next we are going to write a script to adjust the Vignetting based of the Camera speed.

using System.Collections;
using System.Collections.Generic;
using UnityStandardAssets.ImageEffects;
using UnityEngine;

public class FOVLimiter : MonoBehaviour {
    private Vector3 oldPosition;
    public float MaxSpeed = 6f;
    public float MaxFOV = .7f;

    public static float CRate = .01f;
    public static float RateCutOff = .25f;

    // max .7 Vignetting

    private VignetteAndChromaticAberration fovLimiter;
    // Use this for initialization
    void Start () {
        oldPosition = transform.position;
        fovLimiter = GetComponent<VignetteAndChromaticAberration> ();
    }
    
    // Update is called once per frame
    void Update () {
        Vector3 velocity = (transform.position  oldPosition) / Time.deltaTime;
        oldPosition = transform.position;

        float expectedLimit = MaxFOV;
        if (velocity.magnitude < MaxSpeed) {
            expectedLimit = (velocity.magnitude / MaxSpeed) * MaxFOV;
        }

        float currLimit = fovLimiter.intensity;
        float rate = CRate;

        if (currLimit < RateCutOff) {
            rate *= 3; //fast rate since the field of view is large and fast changes are less noticeable
        } else {
            rate *= .5f; //slower rate since the field of view changes are more noticable for larger values. 
        }

        fovLimiter.intensity = Mathf.Lerp (fovLimiter.intensity, expectedLimit, rate);
    }
}

So what the heck is the Field Of Vision (FOV)Limiter script is doing? We are grabbing the distance the player has traveled each frame to find the speed of the player and calculate how much of the field of vision should be limited based on the player speed. So remembering some key points from the paper, the rate of the FOV transition can be faster at some points when the field of view is large because fast changes are less noticeable, but FOV changes are more noticeable for larger values.

Right now this is working pretty well but I know this is only step one to making a great 3rd person VR camera. Next week I will be focusing on making a smarter camera that can follow the player without getting stuck on walls.

If you would like to learn more about limiting camera view to prevent motion sickness and other VR tips I would recommend checking out FusedVR these guys are great!

Week 3: Getting the Oculus Controller Working and 360 Videos are Awesome

Let me start this post by saying 360 photography is awesome!

19575342_10155582896764040_380833773015553673_o.jpg

I have received my New Gear 360 Camera this week and I have been taking photos everyday since and it is so much fun to capture the entirety of the moment in a picture and my life has some really silly moments!

20170626_184609.jpg

Also this week, I have incorporated the Gear VR controller into Museum Multiverse. I wanted to find a comfortable way of moving a player in 3D space and I think I found it with Easy Input for Gear VR from the Unity asset store. This made moving a Gameobject very easy in Unity with the Gear VR controller. I have decided to use the trackpad on the Gear VR controller to move the player around because it feels more like a joystick on a normal controller.

giphy (3).gif

My next challenge is linking up my character’s movement animations with the controller’s movement.

giphy (2).gif

I also worked with Ernest to get the layout of the museum world. If you’d like to learn more about this he has written an excellent blog post on the subject here!

19650390_10213535617974939_704379263_o.jpg

19679640_10213761933945957_1172374726_n.jpg