Tuesday, May 16, 2017

20170516 Game-y systems added

Tonight we added a few methods to implement game features in the scene. This gives the player a goal to aim at, but doesn't yet explicitly direct them to do so. There remains pretty decent potential to keep this concept open, to not too strongly direct the player to do anything in particular, so that they may have fun as they see fit. The split here is between what is a 'game' and what is a 'toy' - right now we're on that knife-edge, and are in no rush to close off either option.

To truly embrace its game status, of course, we added particle effects. You know you're doing something right when particles start firing, right? My suggestion that upon reaching the desired score, we call Application.Quit() was totally worth implementing, but did not remain present in the project for long. It's like an escape room - to leave the game, you have to win the game.

Tuesday, May 2, 2017

20170502 Inertia!

Inertia, what a beautiful thing. Updated Reset script to also reset object inertia!

A funny bug this created was that if you reset an object at terminal velocity, then upon Reset it would move so quickly that it would travel through the floor. We think this is possibly due to it spawning at such a velocity that it spawns inside or beneath the floor. But hard to tell exactly without really digging into it.

Tuesday, April 25, 2017

20170425 Reset QOL

Tonight we decided to implement a Reset functionality that enables smoother puzzle solving, as well as improving other feature testing without needing to completely restart the game.

The script is straightforward - a selection of objects in the scene are tagged 'WillReset', and the script resets their Transform information when triggered.

This introduces some new avenues for potential puzzle creation, too.

Thursday, April 13, 2017

20170413 Playtesting

Tonight we did a rush-job on some objects for testing, and then brought in two friends who had not yet seen the prototype, and invited them to check it out and provide us with some feedback.

One of them had trouble learning and picking up the techniques, while the other tester understood the mechanics pretty immediately.

Both overall had fun, but with the caveat that it's pretty bare-bones right now.

It wasn't immensely productive, but it's always interesting watching people experience something you've created.

Tuesday, April 11, 2017

20170411 Checklist stomping

Tonight, we continued the momentum, and added a number of QOL improvements for testing and experimentation.

We fixed a physics bug that, as with all good physics bugs, did not possess an entirely apparent cause. We removed some early Debug.Log statements that were no longer useful, and were clogging up our console window during tests.

We fixed a prefab deletion error - this was something we had written but never properly investigated. It was not a huge surprise that it needed some TLC.

We adjusted a key system to allow for better cueing, and then out-did ourselves by doubling our feature set possibility space straight after that.

All in all, pretty solid work.

Thursday, April 6, 2017

20170406 Bug fixes, recalibration, and design whiteboarding

Tonight we got a lot done. It was good to have an evening of few distractions. We worked pretty solidly from 7pm until 10pm fixing bugs, recalibrating some problems with room tracking and our general feature tests, and we even squeezed in a whiteboarding session to map out a few directions that we are going to take our existing feature set.

My partner and I outlined three use cases that we feel will serve as a decent suite of concept proofs before we take the plunge on more hefty quality-of-life work that will follow, should these prove as enjoyable as we hope.

The plan from here is to spend two weeks on each of the three prototypes, moving onto the next if we happen to finish early, and then likely running some friends and colleagues through them to see what they think.

Things are looking good, and I still have to keep reminding myself that we've only been working on this idea for about a month (and very casually, time-wise), and yet it's moving pretty steadily. It'll be interesting to see how our first proof-of-concept works out!

Tuesday, April 4, 2017

20170404 Unexpected first playtest

Tonight we accidentally stumbled into our first playtest! We were testing hand capture, and added a few spheres to allow for small-scale juggling testing. As we were working, a colleague brought a few of his friends in to check out the office, and one of them happened to be a keen juggler.

Before we know it, she's asking to check out juggling in VR. This was really useful to us, as we'd been testing out the juggling/throwing/catching for a few minutes, and were having trouble figuring out why it felt so inaccurate. After 30 seconds or so, she had figured it out - our system to joint the spheres onto the controllers was creating joints not in line with where the hand typically would be holding something. As a result, when players chose to release the sphere, they were releasing it on a trajectory that did not match their desired angle, resulting in the sphere most often moving out forwards from the player.

This was great, however the real excitement came from her playing with the primary mechanic of the prototype. An initial question I had been exploring with this mechanic was related to something I'd considered regarding medium-scale player populations in locations such as social areas in MMOs - When server data is not available, could it be possible to feed players their own actions on a time delay and have them believe they are watching someone else?

The answer is yes.

Thursday, March 30, 2017

20170330 Short session, good outcome

We only had a single development session this week, but it went very well.

This past weekend, the office we use for work, Indies Workshop, relocated from SoDo to Capitol Hill. With that move came the loss of our previously large VR development space. In its place, we must (at least temporarily) make do with a small converted conference room.

With the help of another member of the office, I spent the late afternoon getting the room ready for work. This meant that part of tonight's work was focused on figuring out how to most optimally arrange the room in order to facilitate getting work done, and not getting in each other's way. It has enough space for about 4 people sitting at a table, but 2 people can only just walk around without getting in each other's way.

That said, we found a setup that worked for the most part, and commenced the next steps on our prototype. Namely, refactoring some code and breaking things out into their own scripts (at this stage everything was running in a single script, which was messy for a whole bunch of reasons), and adding the next 'ability' that we wanted to explore. It went great. Our initial planning was way over the top, and we were happy to see that Unity does exactly what we want without the slightly complicated vector math that we had planned for.

Another successful evening! If things continue on this path, I think we'll have something demonstrable by the end of June.

Thursday, March 23, 2017

20170323 Prototype progress

Tonight's session was probably our strongest so far. We've really found our rhythm when it comes to approaching and solving problems, whether they occur during fiddly programming tasks, or while thinking through design challenges.

We have outlined a few tasks, and spend our development sessions tackling them top-down. Tonight finished with us solving a problem so quickly, completely, and immediately that we looked at each other in surprise (and joy!) and decided to stop while we were feeling good.

Tuesday, March 21, 2017

20170321 First day back after pause

Tonight was our first evening back in action since the month-long break for a few work commitments.

As expected, our previously-compiled list of research into 'what works and what doesn't' for VR on small projects with small teams and small budgets proved extremely useful. We spent most of the evening poring over it, and agreeing on a few principles for our experiments going forward. The previous window for work was 3 months, give or take, and since things worked well, we agreed to continue for another 3 months on a few 'idea++' concepts - taking things that worked well during our initial tests, and building upon them.

The evening finished with a clear direction in mind, and we began work on our first 'proper' prototype!

Thursday, February 16, 2017

20170216 VR brainstorming

Tonight, we revised the games and experiences we had previously examined, and created a rough set of guidelines laying out what works, what doesn't, what's feasible for a small team. This covered art direction, animation, art, mechanics - essentially we're trying to find a recipe for what to make, based on our limitations.

Scheduling is in flux for the next few weeks, as a number of large video game conventions and conferences are looming, so we likely won't get back into things until the end of March.

However it's good to be pausing at a stage where we have a bunch of options for what to do when we're ready.

Thursday, February 9, 2017

20170209 VR porting experiment

Tonight we tried porting a friend's Unity first-person project to VR - not the whole thing, just testing a scene.

Ran into a litany of weird Unity errors - this is our first time interfering with someone else's project, and it was pretty offputting!

Something to do with Unity versioning, and/or plugins.

Tuesday, February 7, 2017

20170207 Vive Camera experiment

The chaperone effect is pretty neat if you like Glowing Edges in Photoshop. I do.
Tonight, we ran some experiments related to the HTC Vive's built-in camera, mostly riffing on how possible it might be to use as a real-world camera in which one might place virtual objects.

From what we can tell, the camera simply isn't high-definition enough to be useful for this, and given our three-hour session limit, it felt like too much of a rabbit-hole to re-fit the camera's image output to be suitable for use within the headset. My inclination is also that someone has already done this part somewhere out there.

We also took a side-trip and made a little cube character who would mimic your movements in reverse, thus mirroring you. Its name is HeadFriend and it is strangely compelling and 'life-like' despite being obviously not lifelike at all.

One fun little thing we ran into tonight was the weird feeling of watching the Unity Game view as someone else wearing the headset approaches you from behind. It is a chilling feeling, even though you know they are there, to watch someone approach you! Pretty interesting.

The overall outcome of tonight is that we're really starting to pick up the pace on the idea-implement-execute cycle. Some things this evening barely took 20 minutes to go from 'what if' to 'oh, cool!'. That feels good, for sure. Not bad for just 4~ weeks of VR experimentation.

Thursday, February 2, 2017

20170202 VR testing

Audioshield is a lot of fun.
Tonight we completed our testing that we had begun on Tuesday. Our conclusions remain mostly the same, with the exception that we saved a few 'best in class' entries for tonight, to avoid overly coloring our impressions of the others in the line-up.

Space Pirate Trainer is an excellent shooting gallery that results in quite a cardio workout as wave difficulty and intensity increases.

Budget Cuts has a particularly cool idea for modifying what the tracked controllers do, and I can almost definitely imagine using it in the future.

Overall our impressionss were:
  • Lots of physics and scripting is good and works well
  • As little animation as possible is fine - the player is largely more interested in how they can affect their surroundings.
  • If you do have loads of art and animation, it is very impressive but also looks acceptably very expensive
  • Games where you walk the least are the most engaging
  • Teleportation does not feel like 'the answer' to VR movement

Tuesday, January 31, 2017

20170131 VR testing night

Cosmic Trip is a beautiful game both technically and visually
This week, we opted to see what's out there in the VR market. We tested approximately 20-30 different games and experiences, looking for ideas on what works, and some already-established best practices (before we waste time stumbling to them on our own dev time).

Of tonight's tests, there were a couple of standout favorites, including Unseen Diplomacy and Cosmic Trip. Cosmic Trip is relatively deep in terms of design, so it's hard to get a real sense of it after just 40 minutes of testing. However, it's a seriously beautiful game, and impressive for what appears to be a small team working on it.

Unseen Diplomacy is a wonderful concept that suffers a little in its execution. That said, for $3 we got our money's worth, at least. When I first heard of room-scale VR, I had wondered how possible it would be to implement this concept, and the team behind UD have proved that it is possible, although it poses a huge number of edge-cases that are complicated to elegantly solve. Still, a lot of fun.

Thursday, January 26, 2017

20170126 - VR Prototype #4 - 8-way movement

A simple representation of our movement system

Tonight we finished the grid-based movement experiment, and are pretty happy with it.

We took the 4-way NSEW movement, and added the points between each of those, allowing full 8-way movement around a series of grid cells.

As it currently stands, you can look in a direction, and press the touchpad to be moved there. We also implemented an overhead map that is placed on your left-hand Vive controller for reference. This actually threw us into a pretty horrendous place that we inexplicably escaped. Something to do with using multiple cameras in a Steam VR scene in Unity. But we escaped, at least! We can hopefully fix this long-term if we come back to it.

This is the most impressive prototype so far, especially after just 6 hours of experimentation. We'll likely iterate more on this one after finishing our current schedule of experiments.

Tuesday, January 24, 2017

20170124 - VR prototype #4 - Point-based movement

Rough example of this movement system

This prototype was a simple concept that proved challenging due to initially not understanding how SteamVR tracks Y movement on the headset, but we got there in the end.

This experiment was based on a series of cells on a grid, allowing the player to point to a cell and move there. Sort of like being the king piece on a chess board - eight cells surround your cell, and you may choose which one to move to.

Tonight's progress got us to 4-way movement (North, South, East, West).

Sunday, January 22, 2017

20170122 Multiple linear regression using backward elimination

Today I performed a multiple linear regression using backward elimination, which is the next section on the Machine Learning course I've been following.

This course is a little too low on theory for my liking. I'm performing a lot of impressive actions, but I lack the context on how they work or what they are really 'for'. Still, it's something fun to tinker with.

Thursday, January 19, 2017

20170119 - VR prototype #3 - Physics rowboat

Prototype #3 was a test of physics-based implementation of movement through the water. We used the same scene as #2.

This experiment involved tracking the two oars we had created for the boat, and monitoring when they were in water. Beyond that, it was a (relatively) simple case of reflecting boat movement in whichever way the oars had moved. Again, this worked surprisingly well. We also ran into an incredible bug whereby if water friction was too low, and you could really ramp up quite horrifying speeds. It was fun, though!

Tuesday, January 17, 2017

20170117 VR prototype #2 - Rowboat

Tonight we started our second set of locomotion prototypes. We started by creating a simple wooden boat in the middle of open water in a Unity scene, with a few trees scattered around to behave as way-points.

Prototype #2 involved implementing a rowing-machine method of method, akin to what you might find in a gym. The system was 'reach forward, pull triggers and pull back towards chest, release triggers' to calculate movement. It took a little longer than we might have liked, but it worked alright after a few hours of tinkering.

Monday, January 16, 2017

20170116 LAMP + Web server VM

I think this is maybe the second time in my life that I've successfully started the Apache service...

Tonight I:

  • Installed LAMP stack on my Linux Mint VM
  • Got everything up and running - it turns out this can be achieved using a single command!
  • Set up port forwarding to make my server visible to the wider world
  • Created my first three (incredibly basic) PHP pages
Pretty fun! Web development is pretty immediately rewarding. The write-run loop is super duper quick, plus it's fun that the weird little things you make can come alive literally from the moment you save the file in its editor. I mean, assuming you're live-editing your pages. And at the tier I am at, why not?

Wednesday, January 11, 2017

20170111 Machine Learning

Tonight I:

I'm taking a course in Machine Learning. Tonight I waded through the 'Getting Started' parts, as well as Data Preprocessing. Lots of packages to install, and fiddly things to fiddle with:

  • Installed R
  • Installed RStudio
  • Installed Anaconda
  • Using Spyder for Python

Learned how to preprocess a dataset:

  • Empty cells
  • Categorical data
This course is curious because it takes place concurrently over Python and R, giving you the how-to for both languages, one after the other in each lecture. I'm sticking with both for now, examining how tasks are performed in each language. I expect to choose one over the other eventually, likely I'll go with Python, but that is yet to be decided.

Next steps look to involve learning how to operate on datasets directly. Looking forward to it.

Tuesday, January 10, 2017

20170110 Virtual Reality prototyping

Tonight I:

Completed the first of a series of VR prototypes I have devised with a friend. We made pretty astonishing progress inside of around 2 hours, making use of the Unity Asset Store to build a quick proof-of-concept.

What's more surprising is that we used a don't-do-it style of locomotion, yet it didn't induce motion sickness! That was pretty surprising, but it might be because we weren't testing it for particularly long.

I don't have much to share on this work, visually, but suffice it to say that it's going well, and ought to continue for a while (a few months, at least).

We currently have approximately six prototypes outlined, that we intend to spend around eight hours on, per concept. More updates to follow.

Thursday, January 5, 2017

20170105 Virtual Reality beginnings

Tonight I:

Worked through this guide to getting started with HTC Vive development in Unity.

The entire thing took around three or four hours, with plenty of distractions and sidesteps. The guide itself is pretty straightforward, but my development partner and I spent a bunch of time fiddling around with a couple ideas that were inspired by parts of the guide, mostly in terms of 'I wonder if we can do this?' - which worked out, thankfully!

All in all, it was a surprisingly easy first step into working in VR. More to come.

Wednesday, January 4, 2017

20170104 Virtual Machines

My very first pet ghost computer!
Tonight, I:

  • Set up a brand-new-in-box Brix Pro i7 to run ESXi,  a virtual machine host OS
  • 'Hacked' (is this even hacking? I don't know) an ESXi customizer program to not flag Windows 10 as an non-modern Windows operating system (it thought it was pre-XP...)
    • For this, I edited the .cmd (in Notepad) and found the function that was messing with it
    • I changed the if statement within the function to not flag an error if the version of Windows was not 9.? (isn't this the whole joke about why Windows 10 happened?!)
    • I saved the file, and it worked!
    • I felt clever
  • Re-compiled a custom ESXi .iso to make it play nice with the Brix Pro
    • Some issues with the HDD and the Network Adapter
    • Required two extra packages, and a lot of searching around
  • Made a bootable USB of the .iso
  • Installed the .iso to the Brix Pro
  • Successfully loaded the web client in order to install machines
    • Experimented a little, creating and destroying VMs
  • SSH'd into the host machine
  • Downloaded Linux Mint 18 to attempt installation of a VM from .iso
    • Made another bootable USB
    • Created a Linux VM
    • Couldn't get the VM to see the bootable USB in host machine
    • Uploaded Mint.iso to datastore
    • Gave VM a CD drive that was directly linked to the datastore .iso file
    • It worked! It is pictured up at the top of this post
    • Installed using the prompt pictured above
Quite an adventure, and a lot of fun! Total time, end to end, was 3 hours.

Software acquired:
  • ESXi Customizer (to re-compile the .iso)
  • VMware PowerCLI (I ended up not using this)
  • Universal USB Installer
  • VMware vSphere
  • Putty
  • Linux Mint 18
Thanks to Matthew Wegner for the inspiration and coaching.