Automating Windows 10 Installs

I hate repetitive tasks, but I love automating them. One of the most common tasks for me is installing Windows, so I sought to automate as much of that as I could. I just wanted to write about a custom command I made for my Windows 10 Answer File.

If you haven’t heard of Windows 10 Answer Files, you can read about them here. Long story short, they automate installs for things like Windows and Office. If you want to get make your own, you can easily get started by using a template from the unofficial Windows 10 Answer File Generator.

In my Answer File (I will now call it autounattend.xml) I automatically wipe the hard drive of the target computer, reformat it, add my company as the organization, name the initial user, set the language and time zone, enter the product key for Windows, add a basic password-less admin account, enable the Local Administrator account, set the Local Administrator password, and disables the temporary admin account.

After that things get fun.

I wanted to launch a prompt asking for the user to input a computer name, then name the computer and restart. Unfortunately documentation on this subject is incredibly scarce so I had to figure out a solution myself. Thankfully, I’m a stubborn person.

A couple limitations to autounattent.xml command capabilities:

  • Each command must be on a single line of code.
  • Each line of code can be no greater than 260 characters.
  • Local variables can not be set and used on the same line of code.

Ouch. Long story short, I found a solution: create a temporary container and set environment variables within that container, then close it. That way I can set a variable and use it on a single line of code.

<SynchronousCommand wcm:action="add">
          <Order>7</Order>
          <RequiresUserInput>true</RequiresUserInput>
          <CommandLine>cmd /V /C echo Computer name:&setlocal&set /p NewName=&powershell -Command "Add-Computer -domainname *********.com -ComputerName $env:computername -NewName $env:NewName -OUPath 'OU=Newly Configured Computers,OU=I. T.,DC=**********,DC=com'"&endlocal</CommandLine>
          <Description>Rename PC and Join Domain</Description>
</SynchronousCommand>

From there, Group Policy installs Chrome and UltraVNC with the desired configuration, customizes firewall settings and allows RDP. All that to say, deploying new computers is now a very simple process. An hour saved is an hour earned, right?

KB5000802 🤦🏼‍♂️

Anyone else have issues with Microsoft’s KB5000802 hotfix? It broke a lot of our printers. Fastest way to resolve this issue is to uninstall the hotfix. Since we needed to do it on hundreds of computers, I made a script for that. I hope this helps someone!

Instead of hosting this code on WordPress, I published it on my GitHub.

Battling Motion Sickness in Virtual Reality

Screen Shot 2015-08-12 at 6.54.00 PM

As many of my followers know, I’m working on a virtual reality game– the world’s first VRMMORPG codenamed Project Portara. I’m in charge of all the things you will see and hear in the game, which includes level design.

I upgraded to Mac OS X El Capitan so I could get the Xcode 7 Beta. This allowed me to finally play-test Project Portara in real VR and with the Steelseries Stratus bluetooth controller. As amazing as this was, it became very clear that motion sickness is going to be an obstacle in the user experience. I strapped on my Google Cardboard to my family and close friends, and watched them stumble about while watching them in-game on my Mac. Most were able to play for a maximum of 5-10 minutes before getting sick.

My little brother is a frequent gamer, and he was the only other person besides me who could play indefinitely without getting sick– it’s interesting how it seems like people could build up a tolerance for screens– is it cause of effect? Are gamers people who are capable of staring at screens for hours, or does gaming make people capable of staring at screens? I’ll run some tests at a later date, but for now, I’ve got to treat this symptom with proper UI and level design.

I found that putting a stationary object in the middle of the screen (such as a weapon or UI) helps players by giving them a point of reference while looking around in 3D space. I’ve read that you can superimpose a “nose” in the middle of the screen. We added a sword to test. This definitely helped, but we’re going to have to add more for sure.

Now here came the tricky part– I added a set of islands (pictured above) to our game, but it honestly made me incredibly nauseous two days in a row. After playing the game for 10 minutes the first night, I got a migraine and quit work for the night very early. Thinking I only had a head cold, I tried again the next day And experienced the same results despite being in good health.

I realized that this area that I had spent three days designing would now have to be scrapped. I think that the island area of my world had three things that triggered headaches and motion sickness, and they are all things that I’m going to avoid in the future while doing level design for virtual reality entertainment.

1. Reflections. I added water with real-time reflections, and I think that for whatever reason, it messes with people’s eyes while wearing VR goggles. I’m curious to see if it’s just for Google Cardboard, or if people will experience the same troubles with the Oculous Rift.

2. Too much variance in terrain height. I added a lot of flat ground (to make it look good for the top-down view), and I think that constantly adjusting your eyesight to look around walls and across flat lands caused a little too much eyestrain. I’ll try to make terrain changes a little more gradual in the future.

3. Too close. Walls, pillars and hills were too close to the player all the time. You’d walk across a cluster of tiny islands, but when you turned a corner you’d be confronted with a wall. Constantly having to adjust your eyes from looking at distant objects, just to have a wall appear right in front of you actually became an issue when playing with a VR headset, so I’ll have to keep that in mind when I redesign this whole area.

Level 2

I’ve been working on a game over the past couple months, and it’s actually starting to look good enough to show screenshots! I’m super excited for Project Portara, as it will be the world’s first VRMMORPG, and one of the very first cross-platform MMORPG games. This is a screenshot from part of the game world– hope you enjoy!