cancel
Showing results for 
Search instead for 
Did you mean: 

SkyIslands VR

erica_layton
Expert Protege
9qi24zif03en.png
Hello, from a world where islands float in the air, and an ancient guild of mages once lived, only to vanish. Clues about who they were and the ecological disaster they wrought can be found in the landscape. Your mission is to help restore balance, and set their ghosts to rest.

I'm actually a few months into the process of building the SkyIslands game. It's slow going, because I'm doing all parts of it myself:  game mechanics, 3D assets, coding, sound design--whatever is needed. I've also been doing various contract work on the side, but focussing as much time as I can afford to on this project, with the goal of publishing it for GearVR on the Oculus Store.

Participating in the Launchpad has given me the encouragement I needed to continue working towards my goals for this game!

So far, I've produced a demo. Here's a walkthrough, captured in GearVR. It's not very interesting yet: I'm currently re-writing the mythos for the world (Thanks to Bernie Yee for great advice!), out of which will flow stories, strung together with puzzles and games for the player.

VIDEO: https://www.youtube.com/watch?v=3ybZEH8c5I8

mv7104zsfr52.png

55 REPLIES 55

erica_layton
Expert Protege
Experimenting with gaze-triggered "dialog."

I bet there's a way to have triggers that determine traversal of a dialog tree, so that the interaction feels a bit less scripted. Some people on YouTube say it's possible to set up dialog trees like that with Unity + some XML. The technique looks doable. They do it with text dialog, not sounds, but it could probably still work. 
Much fiddling around is needed! :smile:

Perhaps there's a way to do it with only C#

https://www.youtube.com/watch?v=j8pxWLJ2LOc&feature=youtu.be

Mindshiftvr
Protege
Erica, I just watched the first video you posted here. It is really beautiful "tripy-abstract" yet kind of soothing. The sound is really great. I am listening with headphones. Where did you get the music?

Thanks for posting the steps on recording a video. Very helpful.

erica_layton
Expert Protege


Where did you get the music?


The sound effects are made with this nifty thing: http://www.bfxr.net/

The music in the first demo scene is royalty-free samples from looperman.com and the music in the second scene is part of an experimental album I made a few years ago. Might use more of it in the game.. Additional sounds--birds, peepers--are from audiomicro.com (works for demos, but the licensing is not always ok for commercial stuff: check carefully!!)

-HOWEVER-
After hearing about recent issues with YouTubers getting in trouble for using supposedly royalty-free loops that were actually pirated/copyrighted, I've decided to do all of the music myself, moving forward. I'm not a musician, so the results should be pretty wacky!  It'll probably be more like this: http://www.skyislandsvr.com/pages/carnivalglobetrees.html

erica_layton
Expert Protege
Thinking about how to do the character for the guiding spirit, in my demo. 
Transparency is super expensive, but perhaps a particle effect plus hovering sprite "eyes" could work. 
Will test soon.
oxuv4q2i9skd.png

ic3sixtycarol
Protege

akababa said:

By the way, have you seen this? Maybe the particle treatment can be of some inspiration for your waterfalls? I have no idea how they designed this. https://vimeo.com/140057053


I saw this at Sundance New Frontier last year. It was scanned with Lidar laser scanning technology , basically you are seeing a lidar scan. My favorite part of the presentation was the sub-pac style backpack they give you, so each animal sound you feel with your body. Honestly the sound design was crucial in my opinion to the success of this experience.

The head displays were fine for me, very cool looking, but for two of my friends, the heaviness of the decoration totally distracted from the experience. One hated it so much she tore it off half way through. 
http://www.creativeapplications.net/maxmsp/in-the-eyes-of-the-animal-mlf-virtualise-a-forest-through...
If you notice even in this article that people are holding the headmounts up. 

Yeah I love this. 

erica_layton
Expert Protege


If you notice even in this article that people are holding the headmounts up. 



That picture reminds me of a particular scene from the Japanese movie Funky Forest: The First Contact where there are these girls DJ-ing the forest.

Wow, the computing power needed to render that in real time..
I like that they use Max MSP to control all of their realtime stuff. Some of my art school classmates were into using that for interactive installation art. 

aleemhossain
Expert Protege
That sketch is just wonderful!

prettydarke
Protege
Erica all of your work is so beautiful and I love checking out your updates. bfxr is a great resource too and thanks for posting tips for getting a demo video together!

erica_layton
Expert Protege
Update! Been playing with UI and player movement.

troy9gny4k38.png
Fun with UI! Got some buttons and sliders working in VR, thanks to this blogpost:
https://developer.oculus.com/blog/unitys-ui-system-in-vr/
(those plants are sliders  😉 )


BUT: I'm modifying the OVRPlayerController script, and got hung up on something..

So, I added Input.GetMouseButton(0) to the movement controls in UpdateMovement(), so that tapping down on touchpad moves the player forward, and this works nicely..
	public virtual void UpdateMovement()
{
if (HaltUpdateMovement)
return;

bool moveForward = Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow)
|| Input.GetMouseButton(0);
bool moveLeft = Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow);
bool moveRight = Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow);
bool moveBack = Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow);
...BUT I don't want the player to be able to move when interacting with UI elements. I know, I know....just use a gamepad...don't do it all with one button, etc etc...nah--there's got to be a way to do this with one button!!! 😉

Desired result:
If the pointer (mouse/GearVR touchpad) is over a UI element, stop player from moving. 

What I've tried (within overplayercontroller.cs):

Using the interface for OnPointerEnter:
public class OVRPlayerController : MonoBehaviour, IPointerEnterHandler

...and then, I tagged my UI elements with "UI" and right before the UpdateMovement() function, I added this:
	public void OnPointerEnter(PointerEventData eventData) {
bool moveForward = Input.GetMouseButton (0);
if (EventSystem.current.IsPointerOverGameObject ()) {
if (eventData.pointerCurrentRaycast.gameObject.tag == "UI") {
Debug.Log ("Pointer is Over UI!");
moveForward = false;
} else if (Input.GetMouseButton (0)) {
moveForward = true;
}
}
}
...But it won't even print my "Pointer is Over UI" message when I hover over my tagged UI elements :neutral:
(I made sure to tag the buttons and sliders as "UI, and to check "Raycast Target" so they can receive raycast)

Do I need to use eventData.IsPointerOverGameObject from within UpdateMovement(), so that the moveForward bool can actually effect player movement?? The docs and forum posts I found seem to say that IsPointerOverGameObject can only be used from within OnGUI() or Update().

Is there a totally different approach I could try?
Suggestions welcome!!!  

Anonymous
Not applicable
Probably wouldn't put the raycast in the OnPointerEnter because that will only give a very small amount of time to make that check onEnter, probably put code in your UpdateMovement function instead, so it's called all the time. If something is pressed, then the selectedObjected is tagged as UI. If it's not, continue on, if it's tagged as UI, do nothing.
If you click on your EventSystem object, you'll see lots of information about selected objects in the inspector.

To get eventdata programmatically in your UpdateMovement function, you'll need to access the eventdata by:

using UnityEngine.EventSystems;
void Update() {
  GameObject obj = EventSystem.current.currentSelectedGameObject;
    if (obj != null)
    {
      if (obj.tag == "UI") { /* don't move */ }
      else { /* move */ }
  }
}
I'm not sure this will work, or exactly what will return from currentSelectedGameObject, you'll maybe have to mod stuff there, but maybe you can try it out.

Re-read a bit of your problem, and you'll looking for if the pointer is hovering, might want to check IsPointerOverGameObject() instead of selected, or you just auto select things when you hover over them to make it easy on yourself.