I’ve been working on Dink HD to greatly improve it for a new release, you can help test it here! It’s been open sourced (on the RTsoft subversion server) as well so feel free to contribute patches. The plan is to release it free on all platforms soon as I can, until then, it won’t run on iOS 11.
Also a new interview about the making of Dink is here. Talks about its low sales and making games as an indie in general.
I’m a VR nut. I’ve scribbled about my experiences with the Vive and Rift, the FOVE, and most recently the Hololens. So let’s jump into the void once again because today I received a joyous surprise! (not because I got it for free, but because in my senility I’d forgotten I’d ordered it)
About that name
Seriously, Microsoft? “Windows Mixed Reality Headset”? Not only does it not exactly roll off the tongue, but I wouldn’t even classify this thing as mixed reality. I guess I sort of expected a tethered Hololens but this is just a normal VR headset. (I know it’s technically made by HP, but you can blame MS for the confusing/incorrect name)
As is the rule for VR, each company has to be annoying and create their own incompatible API, store and “Home” apps. Microsoft is no different. It’s sort of built right into Windows 10 – the headset comes with nothing, not even a URL to visit.
Magically, after plugging it in, Windows pops up a thing saying “Nice headset, we’re going to install Mixed Reality Portal for you now” and there you go. (Well, as long you’ve enabled Windows developer mode)
While both the Hololens and the WMRH are Microsoft projects and share a lot of OS features and apps, the hardware is quite different. Let’s compare.
Inside out positional tracking (multiroom)
Windows 10 store/ecosystem
Can detect hand gestures (too slow for games except chess)
Can overlay graphics over your natural view, true holograms
Tiny FOV for the actual rendering (1268×720 per eye)
All in one device with on-board computer, no cables
Has a video camera
Windows Mixed Reality Headset breakdown:
Inside out positional tracking (cables aren’t very long, and after tracing my room the resulting space seemed tiny, much smaller than my Vive play area, maybe my fault)
Windows 10 store/ecosystem
Can’t detect hand gestures (this makes me think it’s using some kind of cut-down cameras as compared to the Hololens) Can it even detect walls and chairs? You have to manually set your play area size, so I’m not sure.
Can’t overlay graphics over natural view, it’s VR only
Large FOV, better resolution than the other major VR headsets (1440×1440 per eye)
Tethered to computer, like most headsets, you’re using your computer to do the work and the headset display acts as an external monitor
No video camera from what I could tell
Cheap(ish) and dead easy to setup, no external cameras/satellites to install
Motion controllers are coming
So this (and the Hololens?) WILL be getting a sort of budget motion controller later – however, they will have some limitations as compared to Vive/Rift controllers due to the tracking differences. If the headset cameras can’t see them, they probably won’t register the movement. So, like an app where you jump rope might not work right.
It remains to be seen how accurate the tracking will be, I guess I’ll have to do an updated review that I get my hands on those. (I’m using an Xbox controller right now) Without motion controllers, VR is pretty lame.
Oh, you can also use Cortana for voice controls, but saying “Select” each time you want to press a button is tedious at best.
So what can you actually do with this thing?
Well.. like the Hololens, you can place “Holograms” around, except instead of your real house it has to be in a fully virtual one. How it is even a hologram? Whatever.
You can browse the web or view the weather report in VR, but let’s be honest, after a few minutes we just want to take the headset off and use our real monitor for that kind of stuff.
You can play games in your “home” as well. However, the game has to specifically support this feature, the only game I have that does is Gears Of Wars 4, so I tried that.
Well… it worked fine. I’d prefer to play non VR games on my real 3440×1440 monitor though.
Of course, you can also download VR apps from the Microsoft Store. I suspect the development process is very similar to how Hololens appdev works. (last I checked, Unity supports it and UE4 doesn’t (at least not without plenty of hoop jumping))
While previously I found the Hololens to have some amazing features I don’t really see anything about this WMRH that would make me recommend it over a Vive.
Well, I have to admit, the screen resolution bump is excellent – maybe if you were playing Elite Dangerous and didn’t need motion controllers this could be a thing. Oh, but of course you can’t, because Elite doesn’t support the Microsoft specific VR API.
We’re sort of still waiting for everybody to get onboard with the OSVR standard I guess.
Presenting, the crappy game title I made! Akiko’s comment was “I didn’t know you were going to show my model up close, ugh”
The Last E8 Postmortem
Last weekend was the triannual Ludumdare game jam. If you don’t know what that is, it’s a masochistic ritual where you voluntarily force yourself to create a new game over a weekend and publish it for all to see.
Akiko pressured me into it as she wanted to Blender up some things for practice. I acquiesced to be her programming partner if we could come up with something to match the theme.
The LD theme announced was “Running out of power”. This was 10 AM our time.
The Idea Phase
We agreed to think up some ideas and exchange them at lunch. So in a Kyoto thai place Akiko showed me her idea:
Hmm. I don’t know what to say about that except, I like it. Something about being an employee who has to manage his drug use to stay productive. (for the record, RTsoft does not endorse the use of illegal narcotics. I do however, endorse the world’s favorite stimulant, coffee.)
As for myself, I didn’t have much except a vague concept of celebrating the Tesla Model 3’s release with a game based on it somehow. 3D flying game?
So we starting working on Akiko’s idea – resolutely requiring that we completely nail down the game mechanics in photoshop or on paper before even starting.
I figured there were two possible ways to take this:
Cookie Clicker style: Also buttons and clicks, no real strategy but slowly building up your empire. (I’m playing as I write this article. Whee!)
I was appalled to find Akiko wasn’t aware of either game. You think you know somebody.
I decided “Cocaine Clicker” was the way to go simply because I liked the name and according to google it wasn’t taken.
Side note: I always google names because if I don’t, people will think I copied something else. I sort of miss pre-internet days where you could just be original without caring if people thought you weren’t original.
I did some photoshop mockups of the buttons and tried to map out some gameplay.
Unfortunately “Running out of power” didn’t really match what I’d designed; the concept of running an office, buying more employees and managing their illicit substance needs just didn’t work with it.
A fundamental problem is you never run out of anything in a classical clicker game, you only gain.
I did like her idea of a split screen, half being the office, and half being the drug farm/factory. Sort of two games in one with a symbiotic relationship between them required for survival.
As I mulled this over I fired up my game engine for the first time. I decided to use UE4 as that’s what I’ve had in my head in recently for some VR tests. (If you have a Vive, please try my tech demo later!)
Lo and behold, UE4 was cursed. I had setup a basic C++ UE4 project but was plagued by crashes and bugs. I mean, I hadn’t even written any real code yet.
The worst of it was the silent errors. Sometimes something internally was broken that caused a setting to be grayed out that shouldn’t be. I feel like the only way to be safe is basically restart the editor after every C++ class is added or a blueprint is reparented. Slow.
Those issues are WORSE than a simple crash, because until it occurs to you to restart, your progress is entirely obstructed for unknown reasons. I thought I had done something wrong, when I hadn’t.
Knowing I probably had less than a day of total time to throw at this, I said screw it and used this jam as a chance to try out Unity 2017. (I’d used Unity 5 last year but forgot everything)
I have to admit, Unity is nice. The MS Visual Studio 2017 integration is fantastic these days. Zero crashes. Breakpoint debugging worked immediately with no hoops to hop. Goodbye forever, MonoDevelop.
I’m constantly switching back and forth between these two engines (plus my own homegrown one for 2D and simple 3D) so I’m going to pause for a second and show my current engine scorecard in this middleware battle royale.
Seth’s Unity VS UE4 scorecard:
Unreal Engine 4:
Allows real C++ so the last twenty years of code doesn’t feel wasted
Actually using that C++ causes editor glitches non-stop and longish compile times
I think it’s faster overall and easier for me to replace the networking code with my own
I don’t like the royalty scheme. Being legally required to calculate royalties for eternity (assuming your game makes anything) is awful
Blueprints may seem ok at first, but they are actually the spawn of satan as soon as you need to do anything slightly tricky. Go ahead, write Vector3 vFinal = (vDir +vOffset).Normalize()*speed*dragMod); in BP, see what a mess that looks like. Now cut and paste it into a new entity and get forced to recreate and reconnect all the variables involved.
Forced to choose between overly simplistic BP or slow compiling C++
HTML5 support is questionable, doesn’t seem to be a priority. Huge file sizes, rendering problems
Full source code. Makes this a good choice if you’re going to be implementing your own streaming landscape or enet networking.
No C++. C# isn’t bad, but I miss my direct pointer manipulation and huge library of code I’ve written, so it means a lot of porting, or using plugins that are less portable.
Compile times are a dream
No crashes, was 100% stable (so far, anyway)
Better 3D import options, it can handle .blend files directly
Better audio import options too, unlike UE4 it can properly handle a simple .mp3 file
Excellent HTML5 support – nearly a must for a public game jam, more on this later
Month to month licensing isn’t cheap for the Pro version, but at least they don’t have their hooks on your game royalties for eternity. Free version isn’t bad either really
No source code (well, not for peons like me, anyway)
So in the end, I’m thinking I’m around 5X faster when using Unity simply because of faster compiling and smarter import options. I guess I need to do a VR demo in Unity and test that side of things too though.
Screw it, let’s use Unity
In the end I told Akiko, look, I’m switching engines so how about I do a sort of simple 2D flying game as a refresher for me.
“Can I still make 3D models in blender?”
“Ok, I’m in. What will the game be like?”
“It will be like The Last V8 crossed with Space Taxi”
“Never heard of those”
The Last V8:
Using Unity’s auto collision
I remembered this trick from when I made Multiplayer Space Taxi a while ago, you can very easily add collision to a level simply from an image.
Unity’s magical Polygon Collider 2D component
About HTML5 vs native with game jams
Because this is my main development machine, long gone are the days where I can run unsigned binaries from people I don’t know. I know, I hate that, but unless I setup a clean or virtual machine that’s just how it is.
Play our game
So finally, here is the game we made. True to its heritage, it’s extremely hard. Good luck!
At an extremely spendy price of $3,000 I picked up a HoloLens. Why so much more than a Rift or Vive?
Well, the biggest difference is instead of tethering to your computer, this thing IS a computer+kinect small enough to wear.
Welcome to the world of mixed reality! I hope I’m keeping up with my jargon correctly
Mobile VR is trash, HoloLens is different
The current mobile VR solutions (GearVR, Google Daydream, etc) are garbage, you know why? They can’t track positional movement. Take a step sideways or forward – in the game nothing happens.
This means there is an entire category of games they won’t work with – basically nothing where you move around a room naturally.
HoloLens is different (well, it’s AR/MR and not VR for one, but that’s not the point here), it can fully track position/rotation/acceleration, you can even do something a Vive can’t – you can walk BETWEEN ROOMS and it knows.
Without any complicated setup, you can plop this on someone’s head and it just works, anywhere. Oh, and it’s fast. As for tracking your hand.. well, not so fast, we’ll get into that later.
Akiko knows kung-fu
It uses multiple cameras (normal and infrared) to figure out where your walls, table, and chairs are – and is capable of knowing exactly where your head is located in space.
It’s quick enough to feel nearly as smooth as say, a Vive. I think it’s using acceleration/rotation sensors to do accurate predictions while constantly correcting things with the camera based space-mapping but it works well despite the occasional glitch.
I didn’t expect it to track outside (it must use walls to calculate head position, right?) but it worked fine! I guess it’s scanning the ground or something.
Cool, but here are the problems
At 1268×720 resolution per eye, the objects you’ll see overlaid look great – but that’s mostly because the DPI (dots per inch) are so tiny.
If you hold a piece of A4 paper at arm’s length you’ll get an idea of how small the rendering area is.
The actual screen overlay area is tiny
This means when a spaceship tries to run away in a game, it just gets cut-off unless you turn your head to follow it. A workaround that games are using is they will pop up an arrow “<– It’s over there!” to help you find it again. Not great, but hey.
It also isn’t able to overlay graphics too close, like if you set your GL near plane too far away. You can see the image break apart in the gif below.
Click this gif to view it in action. Don’t blame me if you get sick
Kinect delay is back, baby
It can sort of track one of your hands – but it’s too laggy to be of much use for anything. It’s a better experience to move your head around to put a centered crosshair on an option, then use the included remote’s satisfying clicker to select something.
Random free idea that makes no sense due to the hardware requirements: Use with a Vive hand control to make a spray paint simulator so you can tag up your house.
The wall mapping and fast, accurate positional tracking is amazing. This is a hard nut to crack and probably the most impressive thing about the entire HoloLens project
Totally self contained unit makes it easier to show people. I mean, good luck bringing your Vive to Kyoto Indie Meetup
It barely works, but it can sort of do smart occlusion around physical objects (if a real chair is in front of the hologram, it won’t render the hologram there) – its 3d scanning is too rough but .. it’s still tantalizing us with what the future will hold
Costly, it’s squarely in “developers only” territory right now. It’s no surprise it’s only sold “thousands”
The tiny video overlay area is very limiting
Laggy-ass gesture controls are bad for most gaming
Can’t walk up close enough to objects, they disappear
UE4 doesn’t support HoloLens as an export target, I don’t think there is a way to build it without fighting with Microsoft’s hacked up version of UE4 they did a while back, no thanks
There are rumors that Microsoft has canceled the 2nd generation HoloLens and are skipping straight to a 3rd gen version slated for release in 2019. Interesting.