mandag den 12. maj 2014

Konceptudvikling - Racerspil med forhindringer

Fase 1:

Vores idégenerering har vil valgt at udføre som en brainstorm med enkelte constraints. Første constraint er at vi skal udvikle et computerspil. Anden constraint er at spilleren (eller mindst 1 af spilleren) skal bruge Oculus Rift, hvor synsfeltet skal være en relevant del af interaktionen.
Vores brainstorm resulterede i at konceptet skulle tage udgangspunkt  i en simulation af oplevelsen af at sidde i enten et køretøj eller et rumskib, hvor spilleren vil være nødsaget til at orientere sig visuelt for at kunne spille spillet. Efter mentalt at have vendt samtlige mulige kombinationer af ovenstående, er vi blevet enige om følgende koncept:
Spiller 1 har perspektivet inde fra en bil lidt á la som de fleste bilspil fungerer i dag. Fysisk skal spilleren være udstyret med et rat, som anvendes til at styre bilen med og Oculus Rift monteret på hovedet som skal repræsentere spillerens synsfelt. Vi har to mulige scenarier for hvordan spilleren kan vinde spillet:

  1. Spilleren overlever at køre hele vejen igennem en bane, ved at undgå forhindringer.
  2. Der er flere spillere, og den som overlever og kommer først i mål vinder spillet.

Spiller 2 er placeret ved et interaktionsbord hvor hele landskabet/banen er projiceret og hvor Spiller 1’s position er repræsenteret i realtime (ved hjælp af et overview-camera i Unity). Spiller 2 kan placere objekter (fysiske objekter med fiducials) på bordet, hvorefter landskabet bliver modificeret, så Spiller 1 kan se de ændringer i landskabet som Spiller 2 sætter ind. Spiller 2 kan derfor i real-time placere forhindringer som Spiller 1 konstant skal navigere i forhold til. Når Spiller 2 placerer et objekt på bordet kommer det modulerede objekt ikke bare frem fra ingenting i Unity, men vil blive instancieret fra en af siderne af bordet/landskabet og så bevæge sig ind mod den position som Spiller 2 har angivet. Spiller 1 har derfor mulighed for at orientere sig om de forhindringer som kommer, ved at kigge til siderne og op. Hvis Spiller 1 skal have nogen forhåbning om at overkomme forhindringerne er spilleren nødt til at orientere sig om hvor de kommer fra.

Spilmæssigt gælder det for spiller 1 om at nå i mål og for spiller 2 om at forhindre spiller 1 at nå i mål. Optionelt kan der være flere spillere udstyret med rat og oculus, hvilket kan tilføje enten et kompetetivt eller et kooperativ element til det ovennævnte.

Elementer i spil:

Oculus Rift
Interaktionsbord + objekter med fiducials
Rat/Controller (evt. et bilsæde)

Mulig implementering:

Statisk interface som giver en indikation af hvor forhindringer kan komme fra.

lørdag den 3. maj 2014

Giraffe-simulator test med interaktivt bord og leap motion i 3D bio

Testen af giraf-simulatoren forløb efter forventningerne. Med kun få justeringer af porte i Eventbusserne og Unity virkede kommunikationen mellem Leap, Unity, 3D biografen og det interaktive bord.

Setup in action:

Den umiddelbare eneste komplikation som vi ikke havde forudset, var at giraffens position i 3d-miljøet ikke var identisk for de 2 unity instancer, hvilket betød at hvis man via bordet dumpede et fly på giraffens position på bordet, ramte den ikke giraffen i perspektivet som var projiceret via 3d-bioen. Selvom flyene kom frem i begge instancer var der en væsentlig forskydning mellem hvor de landte.

Lidt for ivrige fingre satte computeren i det interaktive bord på overarbejde:

mandag den 7. april 2014

Leap Control

Vi havde planlagt at girafsimulatoren skulle kunne kontrolleres med en leap motion controller (www.leapmotion.com), som ved hjælp af infrarøde sensorer kan registrere en hånd og dens bevægelser.

Part 1

Første problematik som opstod var at få Eventbussen til at snakke sammen med Unity. Tilsyneladende er der restriktioner på hvilke porte som kan anvendes til at kommunikere igennem, hvilket resulterede i et par timers testing og problemløsning. For os fungerede det kun hvis vi anvendte den port som i Eventbussen default er sat til 4260, og derimod ikke den som i Unity default er sat til 3333. Eftersom vi anvende alt den planlagte tid på at løse dette problem, resulterede første del af denne process i at vi fik leap motion controlleren til at kunne sende data til Unity.

Opsætningen af Eventbus vi har anvendt er følgende:


Part 2

Da vi endelig havde fået Leap Motion til at sende data til Unity opdagede vi næste konflikt. Scriptet i Unity som håndterer inputs fra Leap Motion er kodet i C+, hvor vores oprindelige controller for giraffen var kodet i Java. Af gode grunde gav det lidt ekstra udfordringer at konvertere vores eksisterende kode til C+, specielt fordi ingen af os før har nogen erfaringer med C+.
Det lykkedes dog at få konverteret koden, så vores førhen komplet umulige styringsform med tastatur, nu var blevet til en komplet umulig styringsform med en hånd! Success!!

Resultatet kan ses her:


Næste del i processen er at få giraffen til imitere håndens bevægelser, hvilket skulle gøre styringsegenskaberne en kende mere intuitive.