Utveckling för VR / HTC Vive / Oculus Rift / Gear

Permalänk
Medlem
Skrivet av CyberVillain:

Vi vill inte släppa ett opolerat spel, vi är båda för perfektionister för det.
Men man måste tänkte på prestanda hela tiden, vi är lite stolta över frameraten i vårt spel, bättre än många spel med sämre utseende

Prioriterar ni att skriva snygg kod med många script för enskilda uppgifter eller bakar ni ihop mer saker i samma skript? Är ju själv ingen spelutvecklare, så nu får man ju tänka lite annorlunda.

På den tiden jag kodade amiga-demos fick man lära sig fuska så mycket som möjligt. Allt skulle för-rendreras. Till och med sinusvärden fick man lägga i tabeller...

Om ett par dagar kan jag nog äntligen uppdatera till gtx 1080, och då blir det nog ännu svårare att optimera för sämre datorer/grafikkort. Just nu kör jag ju utvecklingen på 970. Denna uppdatering kan vara direkt osmart!

Skrivet av CyberVillain:

Jag har sett det. Mycket imponerande men man fattar ju hur mycket jobb som ligger bakom. Sedan är ju frågan om det är realtime?

Tror det händer en del bra saker bakom kulisserna med Unity också. Det jag hoppas på är ju stöd för VR SLI / Simultaneous Multi Projection så man kan få upp prestandan till bättre nivåer..

Unity is already baking single pass rendering (a engine side improvement) into their native vive support in 5.4 Afaik you just drop in the VR camera and when the game detects an HMD it uses the new single pass rendering feature, which should given close to a 50%+ performance boost in theory.

Permalänk
Avstängd

jag är Systemarkitekt i grunden i enterprise-svängen

https://andersmalmgren.com/

Så vi fulkodar inte Allt vårt beteende är väldefinierat

hehe, jo det minns jag, skrev ett litet topdown bilspel för DOS, för att få smooth beteende på datorer utan matteprocessor var man tvungne att precomputa sinus kurvorna Sedan skrev man pixlarna direkt till videominnet Det var tider.

Även unity fuskar ju mycket, hela Enlighten bygger ju på precomputed realtime GI. Men det blir snyggt och fungeraer bra i VR, jag har hört att många har problem med UE4s dynamiska skuggor i VR, man får inte ut 90 fps konstant

Visa signatur
Permalänk
Medlem

Från det ena till det andra. Spelet ser ohyggligt snyggt ut, men det känns som ni borde förbättra rörelsetekniken?

Det här med "VR Naussa", är enklare än man tror. Det är ju hastig/plötslig acceleration/deacceleration som är mest bekymmersamt!

Tror bästa lösningen är man skall försöka implementera något som att man sätter en tung boll i rullning! Man kan då enkelt springa (rulla) i en riktning för att titta åt andra riktningar. Det enda problemet då är ju att man kan rulla in med den i en vägg, och man får totalstopp, men det skulle man kunna lösa med mjuk inbromsning om man är duktig utvecklare

Permalänk
Avstängd

Faktum är att både Oculus och HTC/valve säger tvärt om, man ska inte accelera/deaccelerera kameran utan det ska förflyttar direkt från 0 till full rörelsehastigheten, dock har jag av tidsbrist inte hunnit testa om så är fallet. Dock blir varken jag min bror, eller in sambo åksjuka, min son på 3 år tappade iof fotfästet när han fick prova

Däremot ska vi fixa så att om man släpper touchpadden på på ett visst sätt så ska man fortsätta i den riktningen och fart och på så sett kan man obehindrat titta höger och vänster samt skjuta fiender i den riktningen. Om man nuddar padden igen eller avviker mer än 95 grader åt varje håll så lossnar läget.

Lite kul att anton för H3VR skriver såhär

"No. Touchpad based motion is a significantly harder problem for a tight environment with elevation change and complex collision geo. Basically think of it like playing a game with 'no clip', just on walls, where you can fall out of the level. Because you can move arbitrarily, I couldn't stop you from falling through a wall/out of the level. The only alternative would be for you to not fall at all, which then complicates any vertical movement.
There are a lot of folk who complain when devs don't implement touch-pad style movement, and don't realize that this is a problem space (WASD movement + positional tracking in a volume) that has been fought with design wise since the CAVE VR days like 15 years ago. I have never seen a truly elegant solution to this problem that doesn't have insane corner cases in complex environments. Back in the cave days, the 'character controller' was often just made to be the size of the tracked range (about 10 feet), so you had to build these silly looking environments where every hall and room could accommodate a 10x10x8 foot box sliding through it."

Vi har ju fixat allt det där nämligen

Visa signatur
Permalänk
Avstängd

Kul att du tycker det är snyggt, i filmen med min bror var dessutom reflektionerna trasiga Så ännu snyggare med dem (I filmen ovan med Singel pass buggen fungerar reflektionerna som tänkt, dock är specular ligjting avslaget för de statiskt bakade objekten pga en bugg där, sjukt mycket buggar med 5.3-4 som har med Enlighten att göra)

Visa signatur
Permalänk
Medlem

Jag köper INTE deras logik. Just när man drar iväg eller gör en tvär inbromsning har man ju till och med svårt att stå still, baserat på egna erfarenheter.. och det är ju enkelt att testa.

Sen är det väl ett problem att ju mer man varit inne i det här med VR, ju okänsligare blir man ju. Har heller inte några större problem, vilket gör att man kan behöva lite försökskaniner...

Med din lösning så är det väl iofs valfritt eftersom man själv kan bestämma accelerationen med touchplattan?

Råkade hittade detta, förmodligen i samma tråd som ditt klipp, som delar min uppfattning:

StartCoroutine(Decceleration());

float smoothing = 1.5f;
IEnumerator Decceleration() {
while (Player_Rigidbody.velocity.magnitude > 0f) {
Player_Rigidbody.velocity = Vector3.Lerp(Player_Rigidbody.velocity, Vector3.zero, smoothing * Time.deltaTime);
yield return null;
}
}

Permalänk
Medlem
Skrivet av CyberVillain:

Kul att du tycker det är snyggt, i filmen med min bror var dessutom reflektionerna trasiga Så ännu snyggare med dem (I filmen ovan med Singel pass buggen fungerar reflektionerna som tänkt, dock är specular ligjting avslaget för de statiskt bakade objekten pga en bugg där, sjukt mycket buggar med 5.3-4 som har med Enlighten att göra)

Mm.. Det blir intressant! Hur är det med prestandan i Single-pass rendreringen förresten?

Permalänk
Avstängd

Jo vi kör helt steglöst där, men absolut ska jag testa lite lerp/slerp

har inte hunnit utvärdera då den buggar, har lagt krutet där Men den ska tydligen vara effektiv om jag förstår saker rätt

Visa signatur
Permalänk
Medlem
Skrivet av CyberVillain:

har inte hunnit utvärdera då den buggar, har lagt krutet där Men den ska tydligen vara effektiv om jag förstår saker rätt

Märkte av jämnare eller högre fps när jag kryssade i den.. så visst är den mer effektiv. Märkte dock att den "klipper" längre ifrån, så det ser ut som vissa objekt blir lite transparenta när man hade den kryssad. Man får antagligen som vanligt inte bättre prestanda utan att få betala för det..

Fick dubbeltext på gui-text också..

Men det kan ju vara så också att den funktionen inte är helt färdigimplementerad...

Permalänk
Avstängd
Skrivet av dblade:

Märkte av jämnare eller högre fps när jag kryssade i den.. så visst är den mer effektiv. Märkte dock att den "klipper" längre ifrån, så det ser ut som vissa objekt blir lite transparenta när man hade den kryssad. Man får antagligen som vanligt inte bättre prestanda utan att få betala för det..

Fick dubbeltext på gui-text också..

Men det kan ju vara så också att den funktionen inte är helt färdigimplementerad...

Fungerar bra nu i b23

Visa signatur
Permalänk
Medlem
Skrivet av CyberVillain:

Fungerar bra nu i b23

Gott. Kör på b22 nu och tyckte det fungerade ganska okej med skuggor när man kör stereo-rendrering. Vatten och speglingar fungerade inte speciellt bra.. men det är ju bara att köra på.. så får man hoppas saker och ting löser sig med tiden..

Det är ju lite samma sak det här med SteamVR Toolkit och NewtonVR.. det rör ju på sig där..

Lite jobbigt bara att dom inte kommit längre med canvas-hanteringen..

Permalänk
Avstängd

Om man som vi Asset flippar
https://www.youtube.com/watch?v=5svAoQ7D38k

Så det kan vara bra att kolla antal tris på ALLA (!) assets i ett packet man köper. Det objekt vi har mest av på kartan, en lastcontainer hade 13k tris. Ungefär lika mycket som vår AR15. Köpte en ny container på Assset store som har 3.5k och dessutom ser bättre ut

Visa signatur
Permalänk
Medlem
Skrivet av CyberVillain:

Ja, troligen kommer många spel vara väldigt lika varandra framöver. Man kan ju till och med få identiska kartor, i olika spel
[/quote]

Skrivet av CyberVillain:

Så det kan vara bra att kolla antal tris på ALLA (!) assets i ett packet man köper. Det objekt vi har mest av på kartan, en lastcontainer hade 13k tris. Ungefär lika mycket som vår AR15. Köpte en ny container på Assset store som har 3.5k och dessutom ser bättre ut

Hur bra är unity på att dynamiskt sänka LOD:en på objekt när man går längre bort? Jag har ju sett att man kan ställa in skugg-avståndet t.ex.

Annars är det säkert mycket man kan implemetera med triggers..

Permalänk
Avstängd

Finns inget dynamiskt stöd, du måste själv lägga in LODs

Skickades från m.sweclockers.com

Visa signatur
Permalänk
Avstängd

@dblade:

jag har använt detta verktyg för att skapa LODs för saker som saknar det från "fabrik" fungerar bra på irregulara saker som tex vapen. Funkar inte lika bra på fyrkantiga saker som en lastcontainer.

https://www.simplygon.com/

Visa signatur
Permalänk
Medlem

Kan varmt rekommendera denna slack för VR utvecklare:

https://steamvr-unity-toolkit.slack.com/

Permalänk
Avstängd

Det här med att Unity använder Light probes för LOD > 0 är fan riktigt jävla jobbigt
Plus att även fast jag bara har två LODS så ändrar den ljusstyrkan flera ggr (3 ggr)

Visa signatur
Permalänk
Avstängd

@dblade
Jag var lite inne i spelet där, jag menade lambda expressions, inte lambdas. Lambdas ska inte vara mycket dyrae än vanligt metodanrop.

Visa signatur
Permalänk
Medlem
Skrivet av CyberVillain:

@wirefire
Jag var lite inne i spelet där, jag menade lambda expressions, inte lambdas. Lambdas ska inte vara mycket dyrae än vanligt metodanrop.

Det är bara lambda expressions jag tänker på när jag hör ordet lambda... och jag använder det överallt pga. det går så mycket snabbare att skriva koden. Men då är det oftast i Awake/Start metoder så jag tror det är ok.

*Update() metoderna ska man ju till och med helst ta bort helt Annars är det väl bäst att använda traditionella for satser om man måste iterera i en update-sats...

Hursomhelst, jobbigt men samtidigt lite kul, att koda för prestanda, något jag inte är van vid som traditionell desktop-developer..

Permalänk
Avstängd

Tror du fortfaranda menar typ

public void Foo(Action dooFoo) { dooFoo(); }

Right?

Det är inga problem (Dock ska du inte använda Linq från Update men det är av andra skäl än lambda)

utan det är när du använder expressions som prestandaproblem kommer på posten med Unity.
Ska du använda lambda för saker som ska RPCas måste du använda expressions för att kunna serialiizera de.

Så vi har fått ändra kod som

RPC(() => Fire(this.LocalFirearm.FlashPoint.transform.position, -this.LocalFirearm.FlashPoint.transform.forward));

RPC("Fire", LocalFirearm.FlashPoint.transform.position, -LocalFirearm.FlashPoint.transform.forward);

Lite trist, men den övre tar ca 2ms och exekvera medans den undre tar 0.001
Jag jobbar ju som Systemarkitekt inom medelstora/stora businesssystem och en sådan suboptimering hade man aldrig gjort, mycket viktigare med den starkt typade koden i första exemplet, men lite andra regler i spelutveckling

Visa signatur