Monday, March 24, 2014

A quick guide for new developers

A quick guide to Oculus Rift game development

Are you thinking about building a game for the Rift? Great news. Welcome aboard.

VR game development is in its infancy and you can make a difference. I think the primary thing that is going to hold back mainstream VR is lack of great software titles, not the hardware.

Where to start:
If you are getting into VR because it sounds interesting, that may not be enough. You need an idea to carry you forward. Something small but cool enough to keep your interest. I recommend reading a book on VR such as ready player one or snow crash. Then think about some of your favorite movies/books searching for something you'd love to experience in VR.

What tools do I need:
You will need 4 tools to build a game from scratch.
1. game engine: this is what accepts player input and manages their view
2. 3D editor: you will build all your 3D objects here
3. image editor: use this to build the textures that are displayed on your objects
4. sound editor: use this to crop sounds and music, add effects and convert them to work with your engine

Game Engines:

1. UDK/UE4 (Unreal Development Kit)
> cost : $19/month, plus 5% of gross revenue resulting from any commercial products built using UE4
https://www.unrealengine.com/blog/welcome-to-unreal-engine-4
> How to tweak UE4 for Rift development: http://oculusdrifter.blogspot.com/2014/06/fixing-ue-defaults-for-oculus-rift.html

2. Unity
> cost : $75/mo or $1500
https://unity3d.com/unity/download

3. Torque3D
> cost : free
www.garagegames.com/products/torque-3d

4. Coding directly against the Oculus API (Oculus SDK)
> cost : free
https://developer.oculusvr.com/?action=dl

3D Editors:

1. Blender
> cost : free
http://www.blender.org/download/

2. 3D studio max
> cost : $195/mo or $3675
www.autodesk.com/products/autodesk-3ds-max/free-trial‎

3. Autodesk Maya
> cost : $600/yr or $3454
www.autodesk.com/products/autodesk-maya/free-trial‎

Texture Editors:

1. Photoshop
> $50/mo (or get an older version cs6 for $700)
https://creative.adobe.com/products/photoshop

2. Gimp
> free
www.gimp.org/downloads

3. Paint.net (windows)
> free
http://www.getpaint.net/download.html

4. Pixelmator (OSX)
> $30
http://www.pixelmator.com/

Sound Editors:

1. Audacity
> free
audacity.sourceforge.net/download/

2. Wavepad
> free for non commercial use, $60 for commercial use
www.nch.com.au/wavepad

3. Adobe Audition $19/mo (or get older version cs6 for $350)
www.adobe.com/products/audition.html‎

Demos built with each engine:
I recommend you download a few games built with each engine to get a feel for which feels better for you.

You can try a ton of games here:
https://share.oculusvr.com/

UDK demos:
rollercoaster demo : http://www.mtbs3d.com/phpbb/viewtopic.php?f=140&t=17157
my game: http://oculusdrifter.blogspot.com/2014/05/ready-player-one-stacks-game-download.html

Unity demos:
Tuscany : https://share.oculusvr.com/app/oculus-tuscany-demo
Kite & Lightning : http://blog.kiteandlightning.la/new-oculus-experience-kl-station/

Tutorials:
UDK: http://www.worldofleveldesign.com/categories/cat_udk.php
UE4: https://www.youtube.com/playlist?list=PLZlv_N0_O1gaCL2XjKluO7N2Pmmw9pvhE
Unity: http://unity3d.com/learn/tutorials/modules
Blender: http://www.blender.org/support/tutorials/

Best Practices Guide:
Oculus has spent a lot of time researching VR development and has created a Best Practice Guide. This is a work in progress with lots of information. I think it all boils down to: don't break immersion and make sure your game is fast. Either of these will result in the user losing their sense of presence and possibly making them ill:
http://developer.oculusvr.com/best-practices

Stem Dev Days:
Steam Dev Days talks are highly recommended to get you psych'd about VR development:
http://www.steamdevdays.com/

What VR Could, Should, and Almost Certainly Will Be within Two Years
Michael Abrash (Valve)

Porting games to Virtual Reality
Palmer Luckey (Oculus VR)

Wild West of VR - Discovering the Rules of Oculus Rift Development
Devin Reimer (Owlchemy Labs), Alex Schwartz (Owlchemy Labs)

Getting a Dev Kit:
I think it goes without saying that you need to buy a development kit:

IMHO, $350 is a small price to pay to have this technology. If you can't wait, you can pick up the older dev kit off ebay, probably pretty cheap.

If you have one on order, don't let that stop you from getting started. I often find myself in venues where I don't have my VR headset for days and I can still use that time to model and polish my game.

What do I use?
I think everybody is different. There is no perfect solution. Your background, finances and areas of interest will drive your tool selections.

This is what I use:

Engine :
UDK3. I will switch UE4 once I finish my current game. I don't want to deal with refactoring anything. I chose UDK because it was used to make some of my favorite games. It was also cheap.

3D Editor :
Blender. Although I could afford the Autodesk products I wanted to give Blender a shot. After 10 months of using it I have become very comfortable with it. You must approach learning blender seriously as if it was a college course. Memorize the keystrokes and use them daily.

Texture Editor:
Photoshop. This is the odd duck of my tool selection. I do semi-professional photography and I already owned CS3. That doesn't mean other tools will work just as well. It is just what I'm used to.

Sound Editor:
I found wavepad and it has worked well for cropping, fading in/out and saving into a format that works with UDK. It sounds like Audacity may be a better pick. I will need to try that in the future.

What are the first steps?
I recommend building a simple 3D object, importing it into your game engine and walking around it via the rift. This includes texture mapping onto the 3D object. If you can do that you are well on your way to making whatever you want.

Adding more to this:
This is just the start. There is a lot to add. Just shoot me a line or add comments on what I should add. I have tried to keep it non biased but I am only familiar with certain toolsets.

12 comments:

  1. Hi Sean,
    Great to see someone who is trying to help in this area.I think this is a really helpful starting point that people can begin to get a feel for end-end production from.

    I am a hobbyist 3d modeller and have created some basic demoes - my house , jurassic park , a car showroom (for work) and Iron Mans garage in VR. I would love to build up a few like minded individuals who have experience in various areas or at least are eager to learn together for the purpose of bringing some vr experiences to fruition. Maybe you could give my details - steve.p.murphy1@gmail.com and see what happens.

    thanks again Sean

    ReplyDelete
  2. Under Tutorials you could add the Unity tutorials. I personally recommend the Roll-A-Ball project for first time devs. It's not a VR game but it teaches the basics of Unity.
    http://unity3d.com/learn/tutorials/projects

    ReplyDelete
  3. You mention 3D Studio Max and Blender as 3D design options. What about Poser and Daz3D? Are those an option too? What are the (dis-)advantages of those?

    ReplyDelete
    Replies
    1. Poser geometry requires alot of optmization b4 its useful, usually has too many polygons and bad geometry

      Delete
  4. Hey Sean,
    I am a bio student at UMN-TC and have recently had an interest for game development and the oculus rift. I saw on reddit that you would be willing to let others demo it and was wondering if we could setup a time one weekend so that I could do that. Also, I would be interested in learning about game development. I've tried from time to time to get into development but I feel like there is a very steep learning curve so I have been hesitant to really start making anything.
    Thanks,
    Houston

    ReplyDelete
    Replies
    1. I am based in Minneapolis. If you are in the area, I can set up a time for you to see the Oculus and my new game.

      Delete
  5. I take it using photos as a starting point for textures isn't a particularly popular approach? I have some tile that I was hoping to just take a picture of but I can't seem to find any tutorials on this approach.

    ReplyDelete
    Replies
    1. I have a tutorial on my blog specifically for doing that.
      http://oculusdrifter.blogspot.com/2013/09/creating-seamless-texture.html

      I often go to cgtextures.com for a texture and then use photoshop to make it seamless.

      Delete
    2. I needed a texture of some existing wall tile in my bathroom. What I ended up with looked pretty good to me especially considering the minimal work involved. What I did was this...

      I took a picture of the tile, filling the frame as best I could with just a couple tiles (enough for variety but not so much that the resolution per tile was low).

      Using GIMP's Tools->Transform Tools->Perspective I was able to straighten out my crappy photo. The tile now looked square, not trapezoid.

      Then I cropped the photo such that each edge was grout.

      Then I resized it so that it was a multiple of 1024 per side (I think was 2048 x 2048). This was cheating a little as the tile isn't square IRL.

      Switching from GIMP I used a free tool called NJOB (url below) to create a normal map for the tile.

      Lastly I dragged the tile photo and the normal map into UE4, created a material from them, and applied the material to the wall area.

      I had to mess around with the Surface Properties to get things to look right (I think I had to Pan some and possibly do other stuff). Perhaps if I knew more about creating textures and materials I could have avoided that. Not sure.

      NJOB URL: http://www.polycount.com/forum/showthread.php?t=68860

      Delete
  6. Hi Sean, I am really new here but I have 3d software (Lightwave11.6) and the experience to create 3d objects and to build scenes. My first idea, to acttract customers in the VR world with just 1 3d scene, kind of environment where in you only can look around. I want to animate it so he/she is not only looking inside a image sphere. If I can interest customers I want to go further, with Unity or something similar.
    My question is: What is the best way to render the left and right views? Cylinder (360) with double width like 6000X3000pixels (2 times for left and right eye), or a spherical (360) 6000x6000. Are there any specs for this or rules to follow? I hope I don't bother you with this. I just need someone to help me on my way and I have chosen you ;-)

    Thanks anyway!

    Freddy (www.cyberfish.nl)

    ReplyDelete
    Replies
    1. The easy route is to use Unity or UE4. I use UDK3 but download UE4 yesterday and UE4 looks very impressive. If you want to code 3D by hand Oculus has provided an SDK.

      Delete
  7. A quick guide to Oculus Rift game development ... aoculusrift.blogspot.com

    ReplyDelete