HolonizeThePlanet - roadMap

The road map

So we had been investigating HoloLens and Unity for almost two months. Together we now have a good idea of what we wanted to create and a vague idea of how to create it. It was time to create a “Road Map”. A timeline we can work toward.

The current indications are that HoloLens will be available by Christmas so Flatventure needs to have the “Asset Manager” developed as much as possible by then. This is to allow some last minute tinkering with the “Asset Manager” so it can be offered to users almost immediately after HoloLens is available.

We’ve decided to use the waterfall methodology for design and development. This means completing all the analysis and decision making up-front to create a common specification which everyone can then work on independently.

With that in mind, we started off with the below “Development Road Map” for the “Asset Manager”:

7/27/2015 8/2/2015 Design Placeholder Website
8/3/2015 8/9/2015 Build and deploy Placeholder Website
8/10/2015 8/16/2015 Document functional design
8/17/2015 8/23/2015 Document functional design
8/24/2015 8/30/2015 Document functional design
8/31/2015 9/6/2015 Finish functional design
9/7/2015 9/13/2015 Document technical specification – datafeed between hololens and server
9/14/2015 9/20/2015 Document technical specification – datafeed between hololens peer-to-peer
9/21/2015 9/27/2015 Document design DB for accounts; document and design DB for objects and browsing
9/28/2015 10/4/2015 Finish technical specification
10/5/2015 10/11/2015 Build asset manager
10/12/2015 10/18/2015 Build asset manager
10/19/2015 10/25/2015 Build asset manager
10/26/2015 11/1/2015 Test asset manager
11/2/2015 11/8/2015 Build asset bundle creator
11/9/2015 11/15/2015 Populate object DB
11/16/2015 11/22/2015 Populate object DB
11/23/2015 11/29/2015 Populate object DB

11/30/2015 12/6/2015 Buy HoloLens devkits?

HolonizeThePlanet - persistence

Persistence and sharing

Hololens will use the Unity Game Engine. Unity allows persistence by saving to disk. This works okay if you’re alone, but doesn’t work if you’re playing a multiplayer game. You can’t simply save to disk and come back the next day as other people sharing the virtual space may have changed it.

The current implementation of persistence and sharing in the Unity Game engine is predicated on a set of “knowns”: The server holds all the maps of virtual space, and these maps only change within predefined limits. There is a predetermined collection of objects in each of these maps that the Unity server must already know about. The server must be running 24/7 to let people connect, engage and disconnect while maintaining the virtual space.

Some questions arise from this:

  • How do you map the entire world?
  • How do maps get updated?
  • How will people add new objects to this world that do not already exist on the server?
  • How will a server know what map they are in?

The questions above may not have answers. Asking them helps to illustrate the challenges facing HoloLens, Unity, Microsoft, and Flatventure. For example, when a user enters a room for the first time, the virtual objects that have been placed in that room by other users need to be displayed in the correct location. This is the essence of persistence and sharing.

With the above details in mind, we started investigating the idea of peer-to-peer data sharing and decided it wasn’t a viable way of sharing data. There was a whole raft of considerations that invalidated this approach. For instance, two people see the same object in a room, both users then leave the room. One user returns, deletes the object and leaves. The other user now returns to the room. How will they know the virtual object has been deleted? What if they move the object to a different location? When the first user returns to the room and the two HoloLens synchronize their data what will happen to the object? Will it be deleted? Will it have moved?

We also investigated WIFI triangulation. It is possible to work out where a user is in the world by looking at WIFI access points and comparing it to a known map. The most common approach taken is to record both WIFI access points and GPS coordinates to a lookup database. By looking up WIFI access points you can get GPS coordinates. It sounds great on paper. The reality is that the margin of error can be from 20 meters to 20 kilometers. If the best granularity is 20 meters it makes it pretty hard to place a virtual picture on your wall when the next day it may appear in the middle of your next doors neighbor’s front yard.

We also started creating a database of 3D objects. The internet is full of amazing royalty free objects which would look great in any living room. Unfortunately these objects are not in a form that can readily be used by the Unity game engine. Specifically, they need to be found, downloaded, checked for errors, simplified if they hurt performance, and then be saved in a format that can be read by the Unity game engine. If Flatventure wanted to offer users a database of 5000 3D objects then this would involve a lot of labor. After a few false starts, the entire process was automated. We now have a workflow “pipeline” to look for free 3D models on the internet and produce an object that is verified, validated and ready for the Unity game engine.

HolonizeThePlanet - Business plan

The Business Plan

Every company needs a Business Plan. In the case of an IT company there are three things to consider – the Software Development Life Cycle (SDLC), the Product Development Life Cycle (PDLC) and the Business Development Life Cycle (BDLC).

The SDLC is all about designing, implementing, and testing an idea. It is usually described as: Design, Build, Test, Deploy with numerous (sometimes infinite) iterations.

The PDLC is about Market Research, Prototyping, Marketing, Selling. The prototyping is technical. The rest relies on interaction with users and customers.

The BDLC involves creating and financing a business, developing products, gaining market share, and generating a client base that provides remuneration for the people who created it.

These simple concepts and ideas took almost a week of discussion, cursing, ranting, raving, shaking fists, pouting lips, crying… well, maybe not, but there were some wailing noises. Eventually the dust settled. We arrived at a consensus on what the Business Plan was. The SDLC, PDLC and BDLC were all going to revolve around the idea, application, and product referred to as the “Asset Manager”.

Flatventure will create a software application for HoloLens that will let users select 3D objects from an online gallery, download them, place them in 3D space, then make them move, rotate, resize, persist, and be shared with friends.

HolonizeThePlanet - Lets get started

Let’s get started!

This week saw a lot of tasks started. A little bit of housekeeping, a touch of design, and a whole lot of prototyping.

As with any business venture a high degree of exposure is required to generate interest and promote the sharing of ideas and information. At the very least an online presence is required to prove that someone, somewhere is doing something. Toward this end, a suggestion was made to create a temporary website that says “We are here” and “This is what we are doing”. You’re reading it now!

We needed a shared document repository so we can work on projects at the same time. For documents and graphics, Office 365 works perfectly. It was easy to setup and great for sharing access. Call us old fashioned, but we’re using our own SVN server for source code. SVN was a simple application to install and it was easy to configure automated backups across the internet to multiple sites. This gave us direct control over the source code repository and provided the added security of being backed-up to multiple sites.

We wanted to investigate streaming video into unity. This was an idea to let multiple users see the same object. After lengthy investigation and analysis we decided this did not support the persistence or sharing concepts we wanted to provide. However the concept has been earmarked for another project.

The next item on the agenda was how to access and “place” 3D objects. Could Flatventure provide an online gallery of objects that non-technical users could browse, select and “place” in their real environment. We decided to investigate this and create a proof of concept to show this could be done.

We also decided to make universal position and object manipulation scripts in C#. If a user was able to download a 3D object from an online gallery and get Unity to display this object, they would also need to be able to position, rotate, and scale the object to suit their needs. This would be done with generic scripts that could be applied to any 3D object in Unity.