• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
  • entries
  • comments
  • views

About this blog

Indie Dev

Entries in this blog



Below is my preliminary draft design for the AI system within Spellbound. I'm slowly migrating away from scripted expert systems towards a more dynamic and fluid AI system based on machine learning and neural networks. I may be crazy to attempt this, but I find this topic fascinating. I ended up having a mild existential crisis as a result of this. Let me know what you think or if I'm missing something.

Artificial Intelligence:

Spellbound is going to be a large open world with many different types of characters, each with different motives and behaviors. We want this open world to feel alive, as if the characters within the world are inhabitants. If we went with pre-scripted behavioral patterns, the characters would be unable to learn and adapt to changes in their environment. It would also be very labor intensive to write specific AI routines for each character. Ideally, we just give every character a self-adapting brain and let them loose to figure out the rest for themselves. 

Core Premise: (very dense, take a minute to soak this in)
Intelligence is not a fixed intrinsic property of creatures. Intelligence is an emergent property which results directly from the neural topology of a biological brain. True sentience can be created if the neural topology of an intelligent being is replicated with data structures and the correct intelligence model. If intelligence is an emergent property, and emergent properties are simple rule sets working together, then creating intelligence is a matter of discovering the simple rule sets.

Each character has its own individual Artificial Neural Network (ANN). This is a weighted graph which uses reinforcement learning. Throughout the character's lifespan, the graph will become more weighted towards rewarding actions and away from displeasurable ones. Any time an action causes a displeasure to go away or brings a pleasure, that neural pathway will be reinforced. If a neural pathway has not been used in a long time, we reduce its weight. Over time, the creature will learn.

A SIMPLE ANN is just a single cluster of connected neurons. Each neuron is a “node” which is connected to nearby neurons. Each neuron receives inputs and generates outputs. The neural outputs always fire and activate a connected neuron. When a neuron receives enough inputs, it itself fires and activates downstream neurons. So, a SIMPLE ANN receives input and generates outputs which are a reaction to the inputs. At the end of neural cycle, we have to give response feedback to the ANN. If the neural response was positive, we strengthen the neural pathway by increasing the neural connection weights. If the response was negative, we decrease the weights of the pathway. With enough trial runs, we will find the neural pathway for the given inputs which creates the most positive outcome.

The SIMPLE ANN can be considered a single cluster. It can be abstracted into a single node for the purposes of creating a higher layer of connected node networks. When we have multiple source inputs feeding into our neural network cluster and each node is running its most optimal neural pathway depending on the input, we get complex unscripted behavior. A brain is just a very large collection of layered neural nodes connected to each other. We’ll call this our “Artificial Brain” (AB)

Motivation, motivators (rule sets):
-All creatures have a “desired state” they want to achieve and maintain. Think about food. When you have eaten and are full, your state is at an optimally desired state. When time passes, you become increasingly hungry. Being just a teensy bit hungry may not be enough to compel you to change your current behavior, but as time goes on and your hunger increases, your motivation to eat increases until it supersedes the motives for all other actions. We can create a few very simple rules to create complex, emergent behavior.
    Rule 1: Every creature has a desired state they are trying to achieve and maintain. Some desired states may be unachievable (ie, infinite wealth)
    Rule 2: States are changed by performing actions. Actions may change one or more states at once (one to many relationship).
    Rule 3: “Motive” is created by a delta between current state (CS) and desired state (DS). The greater the delta between CS and DS, the more powerful the motive is. (Is this a linear graph or an exponential graph?)
    Rule 4: “relief” is the sum of all deltas between CS and DS provided by an action.
    Rule 5: A creature can have multiple competing motives. The creature will choose the action which provides the greatest amount of relief.
    Rule 6: Some actions are a means to an end and can be chained together (action chains). If you’re hungry and the food is 50 feet away from you, you can’t just start eating. You first must move to the food to get within interaction radius, then eat it.

Q: How do we create an action chain?
Q: How do we know that the action chain will result in relief?
A: We generally know what desired result we want, so we work backwards. What action causes desired result (DR)? Action G does (learned from experience). How do we perform Action G? We have to perform Action D, which causes Action G. How do we cause Action D? We perform Action A, which causes Action D. Therefore, G<-D<-A; So we should do A->D->G->DR. Back propagation may be the contemporary approach to changing graph weights, but it's backwards.
Q: How does long term planning work?
Q: What is a conceptual idea? How can it be represented?
A: A conceptual idea is a set of nodes which is abstracted to become a single node?

Motivators: (Why we do the things we do)
    Body Temperature
    Social Validation
    Pain Relief
    Virtues, Vices & Ethics
Notice that all of these motivators are actually psychological motivators. That means they happen in the head of the agent rather than being a physical motivator. You can be physically hungry, but psychologically, you can ignore the pains of hunger. The psychological thresholds would be different per agent. Therefore, all of these motivators belong in the “brain” of the character rather than all being attributes of an agents physical body. Hunger and body temperature would be physical attributes, but they would also be “psychological tolerances”.

Psychological Tolerances:

{motivator} => 0 [------------|-----------o----|----] 100
                 A            B           C    D    E

A - This is the lowest possible bound for the motivator.
B - This is the lower threshold point for the motivator. If the current state falls below this value, the desired state begins to affect actions.
C - This is the current state of the motivator.
D - This is the upper threshold point for the motivator. If the current state exceeds this value, the desired state begins to affect actions.
E - This is the highest bounds for the motivator.

The A & E bounds values are fixed and universal.
The B and D threshold values vary by creature. Where you place them can make huge differences in behavior.

Psychological Profiles:
We can assign a class of creatures a list of psychological tolerances and assign their current state to some preset values. The behavioral decisions and subsequent actions will be driven by the psychological profile based upon the actions which create the sum of most psychological relief. The psychological profile will be the inputs into an artificial neural network, and the outputs will be the range of actions which can be performed by the agent. Ideally, the psychological profile state will drive the ANN, which drives actions, which changes the state of the psychological profile, which creates a feedback loop of reinforcement learning.


Final Result:
We do not program scripted behaviors, we assign psychological profiles and lists of actions. Characters will have psychological states which drive their behavioral patterns. Simply by tweaking the psychological desires of a creature, we can create emergent behavior resembling intelligence. A zombie would always be hungry, feasting on flesh would provide temporary relief. A goblin would have a strong compulsion for wealth, so they'd be very motivated to perform actions which ultimately result in gold. Rather than spending lots of time writing expert systems styled AI, we create a machine learning type of AI. 

I have never created a working artificial neural network type of AI. 

Experimental research and development:

The following notes are crazy talk which may or may not be feasible. They may need more investigation to measure their merit as viable approaches to AI.

Learning by Observation:
Our intelligent character doesn’t necessarily have to perform an action themselves to learn about its consequences (reward vs regret). If they watch another character perform an action and receive a reward, the intelligent character creates a connection between an action and consequence. 
Exploration Learning:
A very important component to getting an simple ANN to work most efficiently is to get the neurons to find and establish new connections with other neurons. If we have a neural connection topology which always results in a negative response, we’ll want to generate a new connection at random to a nearby neuron. 

Exploration Scheduling:
When all other paths are terrible, the new path becomes better and we “try it out” because there’s nothing better. If the new pathway happens to result in a positive outcome, suddenly it gets much stronger. This is how our simple ANN discovers new unscripted behaviors.

The danger is that we will have a sub-optimal behavior pattern which generates some results, but they’re not the best results. We’d use the same neural pathway over and over again because it is a well travelled path.

Exploration Rewards:
In order to encourage exploring different untravelled paths, we gradually increase the “novelty” reward value for taking that pathway. If traveling this pathway results in a large reward, the pathway is highly rewarded and may become the most travelled path.

Dynamic Deep Learning:
On occasion, we’ll also want to create new neurons at random and connect them to at least one other nearby downstream neuron. If a neuron is not connected to any other neurons, it becomes an “island” and must die. When we follow a neural pathway, we are looking at two costs: The connection weight and the path weight. We always choose the shortest path with the least weight. Rarely used pathways will have their weight decrease over a long period of time. If a path weight reaches zero, we break the connection and our brain “forgets” the neural connection.
Evolutionary & Inherited Learning:
It takes a lot of effort for a neural pathway to become developed. We will want to speed up the development. If a child is born to two parents, those parents will rapidly increase the neural pathways of the child by sharing their own pathways. This is one way to "teach". Thus, children will think very much like their parents do. Other characters will also share their knowledge with other characters. In order for knowledge to spread, it must be interesting enough to be spread. So, a character will generally share the most interesting knowledge they have. 

Network Training & Evolutionary Inheritance:
An untrained ANN results in an uninteresting character. So, we have to have at least a trained base preset for a brain. This is consistent with biological brains because our brains have been pre-configured through evolutionary processes and come pre-wired with certain regions of the brain being universally responsible for processing certain input types. The training method will be rudimentary at first, to get something at least passable, and it can be done as a part of the development process.
When we release the game to the public, the creatures are still going to be training. The creatures which had the most “success” will become a part of the next generation. These brain configurations can be stored on a central database somewhere in the cloud. When a player begins a new game, we download the most recent generation of brain configurations. Each newly instanced character may have a chance to have a random mutation. When the game completes, if there were any particular brains which were more successful than the current strain, we select it for “breeding” with other successful strains so that the next generation is an amalgamation of the most successful previous generations. We’ll probably begin to see some divergence and brain species over time?

Predisposition towards Behavior Patterns via bias:        
Characters will also have slight predispositions which are assigned at birth. 50% of their predisposition is innate to their creature class. 25% is genetically passed down by parents. 25% is randomly chosen. A predisposition causes some pleasures and displeasures to be more or less intense. This will skew the weightings of a developing ANN a bit more heavily to favor particular actions. This is what will create a variety in interests between characters, and will ultimately lead to a variety in personalities. We can create very different behavior patterns in our AB’s by tweaking the amount of pleasure and displeasure various outputs generate for our creature. The brain of a goblin could derive much more pleasure from getting gold, so it will have strong neural pathways which result in getting gold.

AI will be able to interact with interactable objects. An interactable object has a list of ways it can be interacted with. Interactable objects can be used to interact with other interactable objects. Characters are considered to be interactable objects. The AI has a sense of ownership for various objects. When it loses an object, it is a displeasurable feeling. When they gain an object, it is a pleasurable feeling. Stealing from an AI will cause it to be unhappy and it will learn about theft and begin trying to avoid it. Giving a gift to an AI makes it very happy. Trading one object for another will transfer ownership of objects. There is no "intrinsic value" to an object. The value of an object is based on how much the AI wants it compared to how much it wants the other object in question.
Learning through Socialization:
AI's will socialize with each other. This is the primary mechanism for knowledge transfer. They will generally tell each other about recent events or interests, choosing to talk about the most interesting events first. If an AI doesn't find a conversation very interesting, they will stop the conversation and leave (terminating condition). If a threat is nearby, the AI will be very interested in it and will share with nearby AI. If a player has hurt or killed a townsfolk, all of the nearby townsfolk will be very upset and may attack the player on sight. If enough players attack the townsfolk, the townsfolk AI will start to associate all players with negative feelings and may attack a player on sight even if they didn't do anything to aggravate the townsfolk AI.


Tomorrow morning, I have to fire someone.

It's been a tough three months with a lot of big life changes. My girlfriend and I were unable to pay our apartment rent in downtown Seattle, for the months of April and May. So, we were strongly encouraged to move out. We were paying $2461 per month in rent, plus $200 a month for parking, plus utilities, all for a 940 square foot two bedroom apartment with no air conditioning. Then they raised the rent. So, we moved out and found a house to rent in Edmonds, a small sleepy town about 12 miles north of Seattle. We doubled the square footage and only pay $2000 a month in rent. It's amazing. It's so peaceful and quiet. It is far superior to living in an apartment. The Seattle apartment was two blocks away from a fire station, so you would often have fire engines roaring down the street with sirens blaring at 3am. Or, there'd be someone unloading product all night for the business next door, operating a hydraulic lift. Or, maybe there'd be homeless or drunk people having an argument outside my window. I don't miss it one bit. The only thing I miss is my 15 minute commute to work by walking.

Moving was a bit of a... problem. The day before, I fell off of a horse, you see. I was at my ranch, testing out a new horse to see how well it rode. It was acting a bit anxious. The saddle didn't quite fit. The horse wasn't responding very well. I figured the horse needed to get used to a rider a bit more and that I'd tire it out a bit by galloping around and break it in. So, we did. We galloped down the forested road a bit, went down the field, galloped some more, and did two loops. Then, I brought the horse back to the hitching post. This stupid daschund dog came running and barking at me and the horse, completely oblivious to the sheer difference in size between a 7lb dog and a 700lb horse. Despite that, the horse was even more anxious. So, I turned it around and went over the bridge into the field by the creek. I was going to gallop it a bit more to tire it out. So, off we go again! I see some sticks and logs in the field ahead, so I start steering the horse to the left, except its not listening. We're just running at a good 30mph. Then, at the very last second, the horse sees the debris -- and makes an almost 90 degree left turn at 30 miles per hour. Naturally, this isn't a video game, so the principles of momentum apply, and my body wants to go straight. I stomp really hard on my right stirrup, with all my body weight, to stay on the horse -- except the saddle slides to the bottom of the horse and I go with it. Keep in mind, the horse is still galloping as I'm falling. In a split second decision, I decide that I'm doomed to fall and get hurt, but the smartest thing to do is get my boots out of the stirrups so that I'm not dragged behind the horse. If I don't get my boots out, I will get killed, and that's more important to avoid than getting hurt. I did it. I got my boot out, just in time. Then I land HARD on my right back onto hard dirt. Immediate pain. I'm writhing on the ground in sheer agony, screaming in pain. It's arguably the most pain I'd ever felt in my entire life. I left myself writhe in the dirt for ten seconds and then decide its time to man up. I lay still. What's my damage assessment? My legs work. I have feeling. No broken spinal cord. I have extreme pain in my rib cage and back. I feel swelling already. Breathing is hard. My immediate assessment is that I probably broke a rib and its probably got multiple fractures. Nobody knows where I'm at, so I have to get up. Moving is excruciatingly painful, but I gotta do it. Little by little, I upright myself, then slowly stand up on my two feet. Then I slowly, ever so slowly, hobble my way back to the farm house. It's a long walk.

My girlfriend sees me. I tell her what happened. I go sit in a rocking chair for a minute. Then I decide it's time to go to the hospital. The pain is getting worse. I struggle to get into the car. Then, we seem to hit every. single. fucking. pothole. along the way, each one inducing nightmarish pain in my back. We get to the emergency room. I'm brought inside immediately and put on a gurney for evaluation. I'm brought into this machine to get a CAT scan and X-Rays at the same time. It hurts so much to even breathe. Despite that, I'm calm. I'm not in mortal danger. I'll get through this, but it's gonna hurt. Well, the good news is, I don't have any spinal problems and no broken ribs. I do have a bruised right lung, internal bleeding, and as I discover later, the main source of pain was a torn back muscle. The torn muscle was the worst. It felt like every time I moved, someone was stabbing me in the back with a screwdriver and twisting viciously. I was cleared to go home and given pain meds.

The whole day I laid on the couch, not daring to move. I needed two people to help me sit up, and that was extreme pain. The hardest part of my day was getting up to go use the bathroom. It literally took me a good 45 minutes to walk down the hall to use the toilet because the pain was so bad. The second day, the pain got even worse. The third day, the pain was slightly less, but still excruciating. We returned to my apartment in Seattle. We had to move out. How is that going to happen when I can't even move? Thankfully, friends and family are the greatest blessing in the world. My brothers, sisters, mom, and friends all came to help us move (and a couple hired hands). The only thing I could do is lay in bed and watch as everyone around me moved furniture. I know I was supposed to be relaxing and getting better, but I just felt so guilty watching everyone else working. Anytime I had dumb ideas about getting up, my back would hastily remind me not to.

It took me a full week of laying down to recover enough to the point where I could walk around with minimal pain. I went back to work on Monday. However, my commute was now a bus ride and some short walking. With virtual reality game dev, you frequently have to get up and test something out in room scale VR. It's a bit more physically active development work than you'd think. I couldn't quite do that yet. I took it easy. Then, late evening came. It was time to walk to the bus stop and go home. Now, for those who don't know Seattle, it has some hills. My bus stop was two blocks away, but it required walking up a slight incline. Normally, I'd just power walk it and have no problems. But this time, walking even at a slow pace was just too much for me. A bruised lung left me so faint that I was about to pass out. I literally had to stop and take a breather. Maybe it was too early for me to go back to work if this was my condition? So, I decided to continue resting for another week, doing light duty. By the end of two weeks, I felt nearly completely recovered. It was an amazingly speedy recovery, considering the pain and seriousness of the injuries. I am very lucky. I could have been hurt much more seriously. Now, I am a lot more cautious around horses. I don't need to repeat that life experience. 

What's funny is how different riding horses are in real life compared to video games. Never, ever do you ever worry about falling off of a horse in a video game. Riding a horse is always like driving a car, it always perfectly does exactly what you want, as if the beast doesn't even have a mind of its own. It's interesting to think about the difference in user experiences between real life and game design and the balances between trade offs.

Anyways, long story short, I fell off of a horse and was out of commission for a bit.

During the month of May, I started doing some freelance contract work. I built a VR application for Dell, just in time for their annual Dell World event. The film guys in my office went to three different parts of the world and shot some 360 video to highlight the philanthropic programs Dell was doing to make the world a better place. We wanted to create a seamless and easy to use, interactive and immersive VR experience. People would pick up the GearVR, place it on their head, watch a couple videos, learn about the programs, and continue on with the conference, just a little wiser. We nailed it. We completely blew everyones socks off. The beauty of the Unreal Engine, coupled with good design and good assets, made an incredible VR experience. After the conference, they told me about one guy who was acting like a know-it-all, claiming that 360 video was not VR and pre-judging our app as being shit. Then, the skeptic put on our headset and tried out the experience. He's immediately in a stereoscopic world and able to use his gaze to interact with objects in the scene. Sure, the 360 video is projected onto the insides of a sphere, but that doesn't mean that all of the environment has to be projected onto a sphere or be a passive experience ;) Afterwards, he couldn't stop raving about how amazed and wrong he was.

I also started doing consulting on the side for a small local VR company here in Seattle. They were having some major problems with shipping on the GearVR platform. The problem is that the Samsung Galaxy S6 phone is notorious for overheating. The Oculus Store won't accept any submissions which cause the S6 to overheat within 15 minutes. Their app was overheating the phone within 5 minutes. So, this was clearly an optimization problem. Their dev team wasn't the very best when it comes to creating high performance systems. What they created is more than acceptable for a PC, but on a phone? Terrible. I spent considerable time testing and optimizing the scene and trying to get the app to run for 15 minutes before overheating. It's a really tedious process, where you have to document what change you made, create a package, deploy it to the phone, run a couple sessions, take an average, and figure out whether your change had any effect on the overall temperature heating rate of the phone. This workflow could easily take a few hours to test a few things. I got tired of this monotonous process, so I started just measuring the rate of temperature increase over time. The goal was to keep the phone temperature below the shut off value for the entire experience. As the temperature of the phone increases, we throttle down the experience quality. As the quality decreases, the temperature delta decreases and we squeeze out more lifetime. It was sort of like a temperature based LOD system. I was kind of proud of it. I'm not sure if anyone else has had to invent something like that. Anyways, I proved that it worked and got the app to run for at least 15 minutes on my test phone. I submitted it to Oculus for review, eagerly waiting for the test results... days go by... and then... REJECTED! Why?? Supposedly, their S6 was overheating within 5 minutes. How is that possible? We have the exact same phone! I'm still a bit baffled.

For my own game, it's development has taken somewhat of a back burner. It sells on average, 1 copy a day on Steam. That volume is gradually decreasing. The bottom line is that it barely makes any money. Contracting work pays much, much more. However, Spellbound is my baby and I will continue working on it in between higher paying projects. I still spend a majority of my time working on it though. I have identified a couple key problems and areas to work on. The problems are as follows:
1) The content is too short and incomplete.
2) There is a marketing and advertising problem. Nobody knows about my game.

#1 is relatively easy to fix: Just keep working on the game and adding in more content. The challenge is to create more content without spending any money or increasing debts. You want more art? voice acting? sound effects? music? You gotta pay for that... with money you don't have.

#2 is the really hard one. How do you get your game in front of more people without spending lots of money? I have come up with a few key strategies:
A) I need to identify and develop hardware companies in the VR space and create a cooperative partnership with them. I'll make my game compatible with their hardware, and their hardware will have compatible content. It's a win-win for both of us. Hardware sells content, and content sells hardware. If 2000 people buy a unique hardware peripheral, the next thing they'll do is look for quality content to use with the hardware. I want to make sure that Spellbound is at the top of that list everywhere they look.
B) I also need to make my game as "discoverable" as possible. This means that it should be easy for people to stumble onto it. Let's face it. Nobody is going to go into their search bar and directly type in the name of my game and buy it. The only way people know about it is if they accidentally find it. Okay, that's a bad thing to rely on, right? What if... we make it easy for people to stumble onto the game in multiple places? What if we have the game available on multiple online distribution channels? Buy it on Steam! Buy it on Oculus Store! Buy it everywhere! Wherever you buy it, I don't care, so long as I get paid! If I make one sale a day on one channel and that becomes my average across all channels, then I just need to be on 50 channels to make 50 sales a day! (yeah, right)
But, that does speak to the value of diversifying and broadening your footprint and availability.
C) Make game content so good that people will talk to other people about it. This is extra hard for a lone indie with no budget. I'm convinced that there is only *one* way to do this right. I have to tell the most amazing story ever in the history of stories, and I have to keep the world super small and highly polished. Small, amazing story & polished. That's a tall order. Everyone else will beat me on scope. Everyone else will beat me on quality art assets and uniqueness. Everyone else will probably beat me on tech as well, though using UE4 helps even that playing field. A great story is my only chance. I can write, but is it any good? Can I write an epic story which speaks to the very heart and soul of the player? How exactly do I do that in VR? What's unique about VR that no other medium has? What do I need to discover that nobody else has discovered yet? ... short & scary answer: I don't know yet. I just have to have faith in my abilities, hard work and dedication.

In line with my first strategy, I have created a partnership with NullspaceVR. They're creating the Hardlight haptics suit for VR. I got to try it out at their office and get some first impressions. It's pretty cool. They have a vest you wear which has a bunch of rumble packs placed all over your body. The developer can control which rumble packs activate and the intensity and type of the vibration. By selectively controlling the rumble packs, you can create various physical sensations on the players body. In my game, I want players to feel an impact on their body at the precise location a zombie hits them. I think this would heighten the sense of immersion and presence players experience and also work as an additional user interface medium (rather than having graphical damage indicators). The key consideration is that the support for this hardware should be treated as an optional accessory to enhance gameplay rather than a requirement to play -- additional hardware requirements only increase the consumers barrier for entry, and it's already high enough as it is with VR hardware.

I have also started refactoring the artificial intelligence system in my game, for the fourth time now. This may be a mistake, but I'm doing it anyways. It's not broken. It works. But it's too scripted. The current systems are just hard coded expert systems and I don't find them very interesting or convincing, and worst of all, if I want to change behavior, I have to rewrite code. So, I've been doing some hard thinking and designing a new approach to AI. Characters now use "abilities". Abilities are a type of polymorphic action which can be assigned to a creature. If I have a zombie and a knight, I can grant both of them the "Melee Attack" ability. They can both activate the ability, but the creature response to the ability differs by creature type. The ability mostly contains meta data, such as ability cooldowns and timings for effect activations, but they can eventually be treated as "nodes" in a graph. So, I grant a creature a long list of abilities (eat, sleep, melee attack, ranged attack, run away, cast spell, etc) and ideally, it will choose the most suitable ability to use in context to its current situation. How do we determine which ability to use in the current situation? We use a weighted graph (similar to an artificial neural network). Okay, but how do we find the graph weights then? I don't want to run thousands of training simulations to get the most appropriate behavior. Instead, what I really, really want to do is just give a creature a bunch of preferences it wants to satisfy and then it chooses the most important preference to satisfy and figures out what action to take to satisfy it. Initially, the weighted graph would probably be all wrong, so we'd have to run through a few training cycles -- but not too many! The secret sauce would be to use the same graph weight for the same creatures, save them to disc so that learning is persistent through various play sessions, and also share the graph weights with some sort of online database which other brains download. That super smart zombie you are fighting? He's smart because he trained against 1000 online players and he shared his training knowledge with all zombies. At this point, ideally, all I would have to do to get different behavior patterns out of wildly different creature classes, is to tweak their innate preferences and reward systems. Zombies are constantly hungry and crave living flesh. Goblins absolutely love gold above everything else. Dwarves just want to forge stuff out of iron. Demons want to own souls like goblins own gold. Bandits just have a lower moral standard than regular people. etc. etc. Slight tweaks to preference parameters would ultimately result in different behavior patterns and it would slowly get replicated universally across all game clients over time. If I can do this, and just sort of create a sandbox game world, will the AI actors live interesting lives? Will every play through be significantly different? I don't know. It's a lot of extra scope to digest.

The real question is, does the player give a fuck? Or would a scripted AI be "good enough"? Am I engineering stuff that doesn't increase the bottom line? Or am I creating something ground breaking? It's hard to tell. I need money but I also want to make cool stuff at the same time.

Anyways, tomorrow morning I have to fire someone. One of the staff at our ranch has been taking our tools and selling them in town. This is the last straw in a long list of second chances. My younger sister told me something wise: "You get what you tolerate." I can't tolerate theft and the distrust that creates, no matter the sob story. The line has been crossed. I hate firing people, I take no pleasure in it, but it's a necessity for the future success of a business. You know you're ruining someones day/month, but people have to be held accountable for their own actions, good or bad. Running this ranch has been a valuable teacher on the nuances of business and management, but I can't help but feel there are many lessons for me yet to learn.

P.S. I am probably the closest to being a cowboy coder right now.


I wrote this article on Medium and thought I'd cross post it here:

This is based off of my own past personal experiences (and failures) and observations of indie teams. I think a lot of the points are probably common knowledge among experienced game devs, but it's good to share it regardless. If we can steer a few more teams onto the right track and get good games, it's worth the effort :) 

Note: I've been procrastinating on monthly updates. Long and short is that I've been busy, distracted, recovered from falling off a horse, etc.


It's been a tough few months. Spellbound is not really selling very well on Steam. It's to be expected, since the game is both in Early Access mode and has zero marketing behind it. But, it's still a disappointing reality. I'm optimistic that it will eventually change. All I have to do is keep working away at the game, add more content, start marketing and promoting it, and create more interest and attention.

The biggest challenge right now is financial. I'm quite broke, but that's not really news for anyone, but it is very limiting. It means I can't hire anyone to help me. It means I can't spend money on marketing and advertising. It means I have to spend my time working on side projects which bring in extra money. Ultimately, it lengthens my timeline to final delivery. My costs have become extremely lean. My operating costs are now $400/month and I have to buy food and pay rent. I have to do everything without spending money because I don't really have money to spend.

For the month of April, I have spent most of my efforts on trying to figure out how to make money on the side and how to market and advertise my game. I'm working in an office of film guys and they are offering their clients 360 video services, and will fly around the world to film and make 360 video content. Their target hardware platform is the GearVR, so they recently pinged me to help them produce their content. Easy! The first project was a short 2 minute 360 film for a film producer. He needed it made in time for NAB so that he could give demos and get work. I delivered. He was happy. Now, I just need to invoice him. I'm certain there will be much more work in the future. Dell is also another client. Their project is a bit more involved: They have three different philanthropy programs they want to promote, so I'm creating their application for GearVR as well. What's interesting about this project is that it was originally just going to be a series of 360 videos viewed in GearVR, but now that I'm involved, it has become a much more interactive VR experience. The film making and VR gaming industries are merging together, and this product is a testament to that. I foresaw this over two years ago, but didn't really expect to be one of the people to bring our industries closer together. But, it's exciting. I think this project will raise the bar for everyone else doing 360 videos.

I've also been doing a little bit of consulting on the side. A fellow VR company is trying to get their GearVR app submitted to the Oculus Store, but their problem is that the phone overheats within 5 minutes. They asked me to come help them troubleshoot this. So, how do you troubleshoot a nebulous problem like this? With super debugging skills (see my last post). You can't exactly set a break point on a particular line of code or point at one thing and blame it, you have to have a really good, thorough debugging process. Anyways, I helped them out and they're now on the right path to resolving their problem.

But I'm not just doing VR consulting to make money. There really isn't enough money to make it worth my time yet, and it comes with opportunity costs. I'm also selling my girlfriends product "The Perfect Wine Opener" at various street fairs, home shows, and events around the pacific northwest. Yeah. I'm a programmer, selling products to complete strangers. And I'm actually very good at it. Like, scary good. Put me in your crappiest show in the crappiest booth, and I will sell the shit out of your wine openers. Two weekends ago, I almost sold out completely and made around $2,000 -- in a weekend! This weekend, I went to an outdoor show, which was completely miserable because it was cold, rainy and windy, and I still sold $1,200 of product. I've had a guy go out to get me a coffee and come back, and I've sold another $100 in the three minutes he was gone. I honestly think that sales is a very wonderful, valuable skill to have. Think about how amazing it would be to be both a skilled salesman and a VR content creator at the same time. Not only do you understand exactly what your customer wants to get out of your experiences, you can also build it.

So, it's a bit of a perplexing wonder that Spellbound isn't selling very well, considering how good I am at selling wine openers. I'm treating all of this as a science problem to solve (we engineers are good at these!). I'm going to use the same process I use to debug software to debug my marketing problem: So, why isn't anyone buying my game? What's my hypothesis? How do I test my hypothesis? How do I measure the reaction? What assumptions am I making?

Last week, I assumed that if I created a Reddit AMA, I would get a lot of extra traffic to my storefront and I would see a measurable bump in sales. So, I spent the whole afternoon answering questions about VR game development. Surely, people are interested in virtual reality, game development, philosophy, ethics, war, and all of them together, right?! Those were all stupid assumptions I made. Apparently, there wasn't much interest. So, why do some AMA's get 1,500 questions and others like mine get 24 questions and engagement with 7 people? Probably because I'm not a celebrity or really weird/interesting? I have no idea. Regardless, the test results showed that there was absolutely zero change in traffic or sales from my established baseline. My hypothesis was proven wrong.

And that's okay! It's 100% acceptable to be wrong! In fact, the faster you can figure out that you're wrong, the faster you can quit doing the wrong things and try different wrong things! Eventually, you'll try something that isn't wrong and you'll do something right! The key is to not get down when something negative happens!!!!!!

I guess this is what makes me so good at sales. Every rejection, every objection, is perfectly fine. Just be like a rock in the bottom of a stream and let it roll off of you like water. Learn and move on fast. It's all about having a positive, optimistic attitude, no matter what is happening. Broke? Keep your head up and keep charging forward! Getting shot at? Keep your head down but don't stop smiling -- you're still alive! People quit your team? That's to bad, it's certainly a setback, but you know who won't ever quit your team? Yourself! You'll get new people eventually -- success attracts them. An indomitable spirit, positive attitude and a strong work ethic will steamroll any obstacle in your path between yourself and success.

I'm a betting man, and I would still bet on myself. The lack of funds is just a small, temporary problem / challenge, but there are much bigger problems to solve in my future. I've got an industry to define and build.

On that front, I have been going through the process of getting Spellbound onto the Oculus Store. It's every bit of a painful process as you'd imagine. First, you have to make your marketing materials and create your storefront. Then you have to submit a build to Oculus and go through a QA review process. I've been rejected three times. The first time, I didn't have an "entitlement check", which means I'm not checking to see if the game is a legitimate purchase. I missed that in the plethora of documentation. Second time around, I ran into this really, really annoying "black screen" bug which only happened on the oculus rift with a packaged build for levels which contained sub levels. This took me over a week to isolate and identify. It was obviously a game breaking bug. The third time I got rejected, it's because my game isn't hitting the required 90 frames per second. This is where I'm currently stuck. My scenes are complex and heavy, and I average around 45-60 frames per second. Once I can consistently hit that magical 90fps mark in all parts of my game, I'll resubmit. It's a tough benchmark to hit while trying not to lose quality in content. But, after I get accepted onto the Oculus Store, I'll have my game available on two different distribution channels. Then I can have no sales on both channels! :D But no, really, it's actually a good thing. It increases my "discoverability" and any additional marketing and advertising I eventually push out, will make my game easier to find and purchase. I think the way this works is that the more successful a game is on a storefront, the higher it "ranks" in the listings and featured sections. The more it is featured, the more eyeballs it gets and the more it is purchased. It turns into a self promoting cycle which snowballs. Naturally, these storefronts will want to continue promoting products which sell very well. It only makes sense, right? There's no incentive to promote garbage which doesn't sell well. If you take 30% from every sale and promote stuff that doesn't sell, you don't make much money. The key is to be able to say, "This will sell well. People who buy it, will like it." Am I there yet? I'm not sure. My biggest problem is that my game doesn't have enough content to make it compelling. But, that's also a temporary problem. I am also very interested in making this into a multiplayer game. But, multiplayer is going to be challenging if there aren't enough players to play with yet. So, I also need to grow my player base to justify multiplayer. Currently, I average about 1-2 concurrent sessions globally, so spending a few months building multiplayer capabilities would be a wasted effort. So, expand the player base, add more content, add multiplayer, make game better, rinse, repeat.

In another recent development, I met with the Nullspace VR team last week and tried out their Hardlight VR haptics suit. They've recently had a successful kickstarter and have been getting a lot of positive press recently. They're obviously a hardware company, and as they say, "hardware is hard!". Hardware is another platform to build content for. Anyways, I tried out their suit. It was pretty cool. I felt that the VR demos they gave didn't really do their tech proper justice. I could do way better. But it's cool tech. So, I'm going to add support for their hardware in a future release of Spellbound. When a zombie claws at you, you'll feel it on your body. When you die and they munch your corpse, you'll feel it. When you get hit by a sizzling wraith spell, you'll feel the impact and burn on your body. It'll be amazing. They played Spellbound and really liked it as well, so in a few weeks or months, we're both going to announce another title with official support for their hardware. I think this will help both of our teams. I need the marketing exposure, they need content to support their hardware, and consumers need amazing, immersive VR experiences which takes VR to the next level.

Anyways, VR is going to be a big deal in a few years. I hope I have a part in building its future. Right now, I have to make sure I can survive and be a part of it.


I just spent three days debugging a problem within my VR game. I don't quite understand the root cause of the problem, but I do know enough about the nature of the problem to create an effective work around.

Over the course of my career as a programmer and developer, I've gradually gotten better and better at debugging and troubleshooting. I think this is a really hard skill to get down and get good at because its more of a methodology and way of critical thinking to master than a particular debugger in an IDE. Without wasting a bunch of time, I'll get right to it.

The first step is to identify a problem. It's a problem if the behavior of the software application does not behave as it was designed or intended to behave.

The second step is to be able to reliably reproduce the problem. This isn't always easy. In theory, someone could create a random number generator which creates undesirable behavior in a 1 in 100 chance, and that would make the behavior very difficult to reproduce. If you can, it would be super helpful for you to be able to create a game "replay" file, and then save and replay the game and observe the behavior.

Let's say you get this far: You've identified a problem and you can reproduce it reliably. Now what?

This is when we start to practice the "scientific theory". This is where I've seen many, many people screw up and waste time chasing ghosts and trying to fix problems they don't have.

The first step in this process, is to write down your hypothesis. Seriously. Write it down. I'm not kidding. Open up notepad and write down your very best guess at what you think is causing the problem. Remember, this is a guess. It is NOT a diagnosis!!!

In science, when you have a hypothesis on how something works or why something happens, a scientist doesn't go around trying to prove that the hypothesis is correct -- instead, they try to falsify the hypothesis by finding contradictory evidence. The distinction here is ultra important! All you need to do is find one contradictory counter-example to invalidate the hypothesis. If a hypothesis is invalidated, it means that the hypothesis was wrong and we can now move on to formulating a new one. Having a hypothesis invalidated is the opposite of bad, it's very good because now you're one step closer to truth.

I take the same approach to debugging. I write down my hypothesis. Then I try to find ways to prove it is wrong. It is more often the case that I have about 10+ different hypotheses which could explain the cause of the problem. Either zero or one of them is correct. To find the correct hypothesis, I begin running tests and collecting data to invalidate each possible hypothesis by counter-example and contradiction. I want to prove via negation that a hypothesis is impossible. Usually, this involves a lot of isolation of variables and potential causes. During every test, I also write down what I tried and what the results were. This helps me be more rigorous and formalized with my methodology. I also forget things, especially after hours and days of testing, and writing things down helps me not waste precious time repeating experiments.

The process of narrowing down multiple hypotheses to a single hypothesis, is itself a skill which gets developed over time. Valuable knowledge isn't just about getting answers, it is also about asking the right questions. Let me illustrate with a scenario:

Imagine that one day, you meet an angel. It is a divine creature and meeting it is extremely rare. The angel tells you, "I will grant you the true answer to any question you want. What question would you like answered?". Some people might be tempted to ask about the meaning of life, or when they'll die, or next weeks winning lottery numbers, but the very best question to ask is, "What is the best question to ask you?"
For, if you know the right question to ask, finding the answer is relatively easy.

So, when you're trying to negate/break your hypothesis, focus carefully on asking the right questions. Don't be afraid to take five to ten minutes to think about it. It is better to move slowly in the correct direction than to rush quickly in the wrong direction.

Finally, when you have a hypothesis which has withstood the onslaught of testing, you have something which is demonstrably strong. The hypothesis may still be wrong and you just don't know it yet, but it's an operating hypothesis now -- you can reasonably assume it is correct until proven otherwise. I have had operating hypotheses proven wrong on multiple occasions, and that is always a humbling moment for pause and reflection. Once you have an operating hypothesis, you can begin diagnosing and fixing the problem.

I won't get into how to fix problems. That's beyond the scope of this and kind of irrelevant because its so subjective.

Once you believe you have fixed your problem, it is now time to TEST. Did the fix actually work? Is the problem behavior still persisting? If the problem is still there, then either your operating hypothesis is flawed or the fix is flawed.

If you think you fixed the problem, great! You have a new hypothesis to disprove! On multiple occasions, I have mistakenly believed that I have fixed a problem when in truth, my insufficient testing lead me to believe I had fixed it when I really had not fixed it.

Why is this rigorous scientific methodology so important to follow? Because it works, it saves time, and it finds truth.

I once worked with a few novice programmers and sys admin contractors in the US military. They were an embarrassment to the professions. Invariably, as with all software and IT systems, stuff would break or stop working. What did they do? They immediately rushed to the first hypothesis which came to mind, assumed it was true, made it their diagnosis, and began fixing the diagnosed problem. Their fixes would take days of effort and lots of coordination between groups in various parts of the organization. The problem is, they were often wrong. Very wrong, They'd apply a fix and it wouldn't fix anything and the problem would persist. Then they'd invent a new cause, rinse, lather, repeat, until eventually, they got lucky and stumbled into the right answer or everyone gave up and scraped the project. Lots of fingers would get pointed, lots of baseless conspiracy theories are invented, etc. You can imagine the nonsense they put everyone through.

So, back to my debugging experience today:

I used the process I outlined above. I wrote down my initial hypothesis and devised a test to prove it wrong. I successfully proved it wrong. I invented a new hypothesis. Proved that one wrong as well. I wrote down about 18 different hypotheses, before I eventually narrowed down the specifics of my problem.

The problem is that when I enter my game level with an oculus rift VR headset, the screen is entirely black. This only happens on "packaged builds" of my game, which means it is ready to ship to customers. This game breaking bug slipped through my informal QA because I had made some dangerous assumptions. Oddly, this bug is particular to just the Oculus Rift. If I repeated my reproduction steps with an HTC Vive, I would have no issues. Was it an engine bug or a project bug? I recreated a similar scenario with a new project using all of the same settings, and failed to reproduce the error. So, its a project specific error. Is my level corrupted somehow? I made a duplicate of the level and started deleting half of my assets. If it magically worked, then I knew that one of the assets I deleted was the culprit. Sort of. It turns out that if my level has sub levels and those sub levels are set to automatically load as the game loads, oculus can't handle it in the latest version of the engine, only in my project. I have no idea why, but putting a 2 second delay in the game followed by a manual loading fixed the problem.

So, to recap:
1. Formulate a hypothesis.
2. Try to invalidate / negate your hypothesis through data collection. Goto step 1 until step 2 fails.
3. You have an operating hypothesis, now apply a fix.
4. Test your fix. "My fix worked" is your new hypothesis, return to step 1.
5. Go slow and be right.

Okay, if you've read this far, here's the kicker: This process and methodology doesn't just apply to debugging software and IT systems. It applies to everything in life.

Problem: "People don't know my game exists."
Hypothesis: "If I create a bunch of facebook posts / ads, people will know about my game."
Test: Create posts
Data Collection: Look at your web traffic and analytics. Did you see a change? Is your hypothesis invalidated?

When you are armed with this process and methodology, you can find truth. When your actions are based upon truth, you will enjoy successful results based upon those actions grounded in reality.


I don't really have the energy to write a long dev blog for this month.

I was invited to meet a chinese delegation looking to do some collaboration with the VR scene in Seattle. I picked the brains of a few fellow chinese devs and I learned that most of them understand english well enough that translation isn't 100% necessary to be successful in the chinese market. That refuted an assumption I had made about the necessity of localization.

I was also invited to be a judge for a VR hackathon (a 48 hour game jam).

I brought a sound team from Scotland on board.

I've been working on a system to interact with objects in VR using your own hands. It's really hard. I'm trying to convey the sense of object weight even though you're not physically holding anything. You also have two hands, so objects need to be able to respond. My use case is a heavy barrel which can be pushed and rotated with two hands by applying forces to it. I think it's going to be really important to get this interaction system working perfectly because it's going to be the basis for how players interact with all objects in VR. I see this as being the tech I eventually use in the future to let people interact with products in VR. One thing that's going to be extra hard is dynamically figuring out finger positions on an object -- think of where your fingers land on the surface of an object as you touch it.

I also spent a day shooting a new game play trailer for the Oculus Store. I had about 6 actresses come in and play the game on camera and I recorded the game play and their responses. I later discovered that I wasn't recording any of the sound, so all of my recorded gameplay footage was useless. Even if I had the sound though, screen capturing VR footage doesn't work very well. You only get one eye, so the aspect ratio is all wrong. I think what I need to do is create a "replay" system. You play the game in VR while recording every variable, then you load up the game in full screen mode and play the replay file and record the screen as a video file. I think if I build in support for this, I'll be a step closer to multiplayer support and I'll have a solution for youtube broadcasters.

The focus for the month of March is to get another big release out ASAP.


January 27th. The first major update for Spellbound since early access release on Sept 4th, 2016. Almost five months later. For the sake of brevity, you can read the lengthy Patch Notes here.

This helps me get one step closer to achieving a core strategic business objective: To get Spellbound on as many online distribution platforms as possible, supporting as many VR hardware platforms as possible. This will increase my total addressable market, which means more sales. More sales means a step closer to becoming financially self-sufficient, where monthly income at least matches expenses.

What's next?

1) I need to get my game up on Oculus Store. To do that, I'm going to be re-creating my game play trailer to better reflect the new style of game play using room scale VR. This is going to be ultra important to get right because every view is going to become the very first impression of the game and people will base most of their purchase decision based on how the game play trailer made them feel.

2) Localize for Chinese. I have *never* localized a game for another nation/culture before, so this will be new learning for me. I want to do this now, while the game content is still very short. It's more of a "hello world" type of thing right now, where I have to go out and establish the relationship with whoever will be localizing and figure out what they need from me, and then figure out how I'm going to integrate their deliverables back into the game. This would be an ongoing relationship as more content is developed over time. I think it's going to be a requirement to localize to support Chinese if I'm ever going to launch on the Viveport store.

3) Continue building content, adding game play, adding puzzles, story, levels, etc. Once we've got all of the distribution channels setup for all of the major platforms and customers can buy the game at any time, the pipeline to distributing fresh new content and updates to customers around the world will be very fast, smooth and seamless. Once the content reaches a critical mass (measured in compelling gameplay, average user hours spent in game, reviews & feedback), it's time to start advertising and promoting the game directly.

4) Hopefully, if I'm smart, I'll already have greased the wheels for promotion and advertising by making the game easy for twitch streamers and youtubers to share their experiences. The recent update I released helped take one step in that direction, but there's still a ton of work to do. UE4 doesn't support mixed reality yet, so if I catch up to them, I'll have to implement it myself. I think I'm going to have to be very careful about where and how I do advertising, because the VR market is so small, anything physical would miss 99%.

Growing Company Relationships:
I'm slowly building and solidifying relationships with various companies in the VR hardware space. Particularly Oculus, Leap Motion, and Razer via emails and phone calls. Nobody is throwing money at me though, so I'm still all on my own to make it happen. That's okay. I think that once I have compelling VR content available for their hardware platforms, they'll help with marketing and promotion of my content because it helps sell their hardware. The key on my side is to deliver quality, compelling VR content. I know I can do it. I think the long term success for my company will be built off of the strong relationships I build with other companies in the VR industry. Relationships take time to grow and need mutual benefit and trust. The value of a company is based off of its products, sales, relationships, and staff. I think their perception of whether or not my content is compelling will have to come from anyone but me so that it seems like a public perception rather than something I'm pushing through back channels -- but that's easy: just build great content.

New Team members:
I started using Discord a lot this month to collaborate with my new team member Stuart (friend from highschool, 15 years ago). Feel free to drop in any time. He came and visited my office this month and we spent two days working on illustration stuff in VR. I noticed that in some of his illustrations, the art seems to really pop out of the canvas and look like it's 3 dimensional in VR. It looks a bit like an optical illusion, but it gave me an interesting idea: What if we enhance that illusion and create an illustration in layers and then display each layer with a slight z offset? When you move your head, it looks more like the illustration is popping out. I gave it a try and it looks pretty good, but it's going to need some careful tweaks and polish to get it just right. The end effect will be that when you move your head in VR, the illustration has slight parallaxing and we can make some small portions animated, so rather than being a static illustration, it's more "alive". It's an interesting experiment. Stuart was so blown away by VR that he immediately went and bought himself an HTC Vive. Previously he was on the fence on VR and was waiting for the next generation of hardware, whenever that eventually comes out. He's dedicated to the success of the project and will be producing art assets going forward.

We also started collaborating with a small sound team based out of Scotland to produce sound assets for VR. I hope this turns into a long, mutually beneficial relationship.

The next few months are going to be focused on increasing sales and adding more content. There's a mutual dependency on the two objectives.

Edit: Here's a cool youtube video I made recently using some of my spiral code to create ribbon particles:



Last month I said:[quote]
On VR Indie Growth & Survival:
Eventually, I'm going to have to get more people to join my team. Growth is going to be very tricky to manage correctly -- especially in the VR industry, which is brand new. The biggest danger is that a company gets a short term influx of money and then they use that money to staff up. They have to make payroll every two weeks. Their costs exceed their income. Eventually, they can't make payroll and the studio has to either lay people off or shut their doors. They grew too fast and their cashflow was negative for too long. That's especially dangerous for the VR industry right now because the VR market is so small. The size of the market is growing, but I don't think it's going to be that explosive exponential growth for at least another 2-4 years. The VR industry will be lead almost exclusively by gaming. Everyone else is out solving problems for which there isn't a market yet so it's not going to be profitable for at least 4-6 years. If you don't pace your burn rate with the market growth rate, you're going to either need another influx of cash via investment or you will have to cut labor costs or go out of business. And in the game of business, you have to survive before you can thrive. Investment money is just a scaffolding for your business to prop it up while you build the core business model. Success is not equal to getting funded and looking forward to a life of martinis on the beach, if anything, it should be a kick in the pants to get into high gear. Anyways, back to full time employees: They become a fixed cost which has to be paid on a monthly basis, and the more employees you add, the more your overhead costs rise (hiring support staff).[/quote]

The big news of the week in the VR industry is that EnvelopVR has shutdown. I was 95% certain this would happen to them and they were the first local company that came to mind when I wrote that paragraph last month. EnvelopVR was a "large" company with about 20-30? employees working on building a VR desktop. They were aiming for enterprise customers and staging themselves for being a big player in the future of VR. Their business plan was conceptually sound: There will be much demand for VR desktop applications. Envelop wanted to get a head start on their competitors by being first to market. That all sounds good and juicy and makes a lot of sense. At first glance, it sounds pretty good!

About a year ago, I went and visited the managing partners at Madrona Group, a big VC company here in Seattle. I foolishly thought they would be interested in investing in me, but really, what they wanted was to pick my brain a bit and... they asked me what I thought about EnvelopVR. I didn't know it, but they were thinking about investing. I was a bit tight lipped with my assessment of their business and I didn't want to hurt their chances at getting funded, so I didn't say much. Even then, I didn't think they had a very interesting product, but what do I know? Enterprise VR is outside of my target market. But... having worked in enterprise before, I knew it would be an uphill battle from the very beginning. Why? It's extremely simple business math: If you're running an enterprise with 1,000+ desks, and then VR comes and you want to put a VR HMD on ever client workstation, and each workstation is generally underpowered to support VR, you're going to be looking at a workstation upgrade cost of $1500 per seat, followed by $800 for the HMD, followed by $X? for the EnvelopVR desktop application. So, the initial cost to upgrade 1000 seats to VR would be 1000 * $2300 = $2.3 million + licensing costs.
That's already a WTF number. So, the follow up question for the enterprise manager is, "Okay, how do I get my ROI back?" and if there isn't an immediate and obvious answer, the answer is a flat out "NO." On the side of Envelop, how many large enterprise clients would they need to acquire before they are at least 100% cost neutral?
Again, I was very tight lipped about other peoples' business and their prospects, and ultimately, Madrona gave about $4m in funding last year to EnvelopVR. I think next time a VC wants to pick my brain about a potential investment, I'll tell them to give me 10% of their offering and in exchange, I'll make sure they don't lose 100% of it. $400k sounds nice in my fantasy land :)

It's safe to say that enterprise is generally 2-3 years behind the cutting edge in terms of technological adoption. They have to be, with their scale. So... if VR is only 9 months old on the market, Enterprise isn't going to adopt it for at least another 2-3 years. Minimum. And their adoption curve will be a phased adoption based on test trials for business viability.

So, EnvelopVR had a "large" FTE staff compared to most VR companies. They got funded by Madrona a few months after I met their managing partners, and then they burned through their cash. They released a prototype into the market. The existing market didn't really care about it. They didn't make much, if any, money. Bottom line: Their costs exceeded their income. The biggest flaw in their business plan? They built a product for a market which wasn't ready for their product yet and they couldn't stay in business long enough to wait for the VR market to catch up and mature. In my humble opinion, their long term business plan was a good, viable strategy, but they were 2-3 years too early for the market. They staffed up a little to quickly, but otherwise, they could have eventually grown into a sizable company within the VR industry.

Here's the thing: VR *is* going to be *huge*!!! ... in the distant future. In 2016 and 2017? Every VR company MUST be SMALL. Survival depends on it. The VR market is small. It's going to continue to be small for the next 4-6 years. Maybe longer. But it will grow and pickup steam. Gaming and entertainment is going to be the tip of the spear which leads the growth of the VR market -- NOT enterprise or non-gaming apps. If you are doing VR right now, you *need* to understand this. Survival depends on it. In 4-6 years after the hardware becomes more ubiquitous in the market, non-gaming apps will become more viable, but it's still going to be a rough battle. The current leader in VR gaming has sold $3m worth of games. That's like the GTA5 of the industry. And everyone else is way, way below that number. If VR games are like the traditional gaming market, where 5% of the industry makes 90% of the revenue, you can read between the lines and bet that there are going to be a lot of starving VR indie game developers (*ahem*). My prediction still holds: There will be a LOT of VR companies quietly imploding in the next few years because their expenses exceeded their income for too long while they waited for the market to mature. EnvelopVR is just the canary in the coal mine, the first of many to die. If you are a VR business in 2017, you need to be extremely conservative with your cash flow or else you too will be a statistic / historical anecdote.

My goal? Survival. I need to survive and build this super awesome VR game. If it's as cool as I believe it's going to be and I can build it, I will be okay. My biggest challenge will be managing scope. Having ambitions is fine, I just need to grow the scope with a pace which is sustainable with the VR market growth.


Game Status:
Where is the game at today? I have nearly finished working on a major update. Customers are starting to ask about it. I'm a bit nervous about releasing it because I'm worried that people may not like it or that it will break parts of the game. But, that's what testing and early access is for, right? In the next few days, I'm going to be thoroughly testing and refining the systems I've been working on for the last 3 months. This is my lead up to deployment. This patch is obviously going to be a very significant update to the game on the technical back end because I've torn everything apart and put it back together. There are some subtle changes to the way the game feels, but overall, it feels mostly the same. Probably the most important change is that players no longer directly control the characters they're possessing. Instead, they control an invisible ghost which possesses the character they're controlling. The ghost can possess any character in the game, and controlling that character is just a matter of whether or not that character implements a control interface. This is going to be huge when it comes to supporting multiple hardware platforms, supporting multiplayer in a future release (co-op, spectating, pvp, etc), and supporting mixed reality video capture (The camera is just another ghost). I've also refactored the arm swinging locomotion system quite a bit, so with version 2.0, the torso is very close to the players torso, and movement direction is independent of head direction. Now, I can actually turn my head and look over my shoulder and still run forward. This lets me see behind myself as I'm running away from a monster. I don't know of any other game or medium which has this capability yet. This will probably be one of those changes 95% of people don't notice but take for granted. However... when you do something and the game responds perfectly, it's amazing. Creating immersion and presence is all about matching user expectations.

I think I'm getting pretty close to finishing up all of the boiler plate VR interaction stuff. One of the very last things I need to do is match the controlled avatar with the player height, so when the player jumps or ducks, so does the controlled character. Then, a player can physically duck behind a wall and hide from a monster. Or, they can duck under an obstacle blocking their movement. I'm thinking that as I develop these sorts of mechanics, I'll create gated areas in the level which teach the player how to use these mechanics. At the end of each "trial" will be some sort of reward, and really, the reward will just be another form of trial to teach another mechanic. Sort of like, "Hey... you learned how to duck! Here, have a magic missile spell! Oh, now you need to learn how to target multiple monsters with this spell."

I am now going to officially support a different spell in each hand. Some spells can target creatures, and my old technique for targeting was designed to support a single spell type at a time. I needed to come up with an intuitive new UI which doesn't break immersion. To target a creature, you point your hand at it. Initially, my implementation just shot a line trace from the motion controller position to wherever you're pointing it. However, during play testing I discovered that trying to target distant creatures is like trying to shine a laser pointer at a dime ten feet away. So... I now place targeting cones on each hand and I detect whether that cone overlaps a creature. It works. Unfortunately, there are no cones in UE4, so I had to figure out and implement the math from scratch. I learned a lot and discovered a new way to think about geometric shapes. A cone is really just an infinite series of circles stacked on top of each other, and the radius of those circles changes as a function of the tangent of the cone half angle. This technique of infinite shapes stacked on a line can be used to define a lot of different shapes too. All you're really changing is the rate of change of the radius of a circle. With this, you can create a lot of interesting shapes using a mathematical function. A sphere is an infinite series of circles stacked next to each other, starting and ending with a radius of 0, and reaching a maximum radius of the sphere radius at the line segment midpoint. A capsule is an infinite series of spheres overlapping each other on a line segment. A funnel is a non-linear but increasing change in circle radius along a line segment. I know this is a fundamental principle behind calculus, but I hadn't ever applied it to geometry like this. Anyways, this resulted in mathematically correct collision detection with cones and other shapes instead of "close enough" iterative approximations. This means it doesn't cost any CPU time to run a calculation because its constant time.

One other thing I'm going to start thinking about is character progression and growth. I'm not 100% sure how that will look yet. Normally when you have an RPG, character growth is all about stats, charts, experience, and wearing progressively more powerful equipment. My goal is to have zero UI. This is VR. There is no "UI" in reality. I have no idea how many "hitpoints" I personally have, or what my intelligence score is at (probably an 8). So, it makes no sense to have any of that in a VR RPG. You can have some RPG elements, but every element needs to be communicated somehow to the player without a graphical user interface. It's either got to be something embedded into the environment or be a sound cue of some sort. The element selection UI was particularly challenging to design, but I think I have something that works and feels convincingly real.

Upcoming Content:
I reconnected with a friend from highschool. It turns out that he's been working as an illustrator and I just so happen to need some illustrations! So, I contracted him to do some work for me and it's turning out quite nicely. He'll be in town next month, so we'll hang out and he can play through my game. I've had him working on the book illustrations which will accompany the voice over audio. It'll be the first introduction people get to the story and works as an establishing shot, so it'll need to be done perfectly. Here are some of those establishing illustrations:

Twitch Streaming:
I have begun streaming my VR game development on Twitch.tv. It's probably a pretty boring stream considering that most of my screen is in visual studio, but I try to explain what I'm working on, show my approach, show my mistakes, and generally show my production process. If you're interested in that sort of thing, feel free to stop by and say hello. I don't stream every day but when I do stream, I bore everyone to death and they leave within 5 minutes. However, it has done wonders for my productivity to see people pop in and out and try to explain what I'm working on and how it fits into the bigger picture. As far as marketing goes? Complete failure. I probably need a webcam.

Hardware Support:
If I release full support for Leap Motion, I'm certain it would be the best Leap Motion game in the world. The hard part is figuring out how locomotion would work. We're in very informal early stage talks about featured content.

The next patch is going to add full support for Oculus and Oculus Touch. This is going to make my game fully playable on both major VR hardware platforms and set me up to host the game on the Oculus Store as well as Steam.

Steam added full OSVR support recently. I looked into it and asked for an HMD. I received a complimentary OSVR headset! This means I will be adding support for OSVR!

Razer is the hardware company behind Open Source Virtual Reality (OSVR). We had briefly talked in August about funding for indie VR developers such as myself, but that effort fell through the cracks back then. The exciting news is that we've resumed talks about funding and sponsorship. I had to sign an NDA, so I can't talk about anything confidential / proprietary or go into details. But, the exciting news is that there is a greater than zero percent chance that I might get non-exclusive funding to help develop my content. I had to submit a projected costs for 2017 for them to review. I certainly don't expect much, if any money, but I'll be grateful for anything. My projected finances are totally not confidential, so I'll share that spreadsheet here and explain a bit. It's a bit eye opening for a guy who has less than $200 in my bank account.

Project Cost Estimation:
Here are my total costs projected for the entire game. I'm looking at about $1.25 million dollars and several years to produce the complete game and all of its DLC. This is making a LOT of assumptions, which I'm going to get into in a few moments.

Here is a breakdown of what I *think* will be the per episode production costs and production schedule. It's a range which can vary wildly. I am most worried that I am not including all of my costs and being unrealistic about some things I can't account for, such as schedule and budget overruns. I may need to add some extra padding just in case. I have also broken this production down into what needs to be done in sequence and what can be done in parallel (See: Sequence column below). The number is the sequence number and the letter represents a role / person.

Here is what I think the breakdown of the production costs are going to look like per episode. There are a LOT of unknowns which clouds accurate projections.

On Cost Projection:
But I guess maybe a smarter principle is to think in terms of "orders of magnitude" and round up. So, if I think something is going to cost $4,000, that's in the $1,000 to $10,000 bucket, so I should choose the ceiling and say it's going to cost $10,000. If I'm looking at $36,000, that's in the 10k->100k range, so it's going to cost $100k. If I quote it at $98k, it's still $100k. This would account for cost overruns and have some padding for unforeseen expenses. Usually when you're scoping out the amount of work, how long its going to take, and how much it's going to cost, you are assuming a perfect world without problems. That coding project which you thought would take a week but actually took a month? Yeah. You thought it was going to be a week because you were only looking at the tip of the iceberg and thought it wasn't that big. You didn't realize it would cause other things to break because they depended on it.

A lot of projected actual costs are a "It depends" category. Voice acting is one of those. I can't possibly predict what that's going to cost because I don't have any idea on the length of my story script yet because I haven't written it. But, recording the audio is one part of it, it then needs to be processed and cleaned up, and then integrated and timed with game sequence events. And if you have people who are perfectionists, they'll take way longer than is necessarily adequate to sample or clean up, and that means your time and costs will run away.

I put my own operating costs in, and they're totally bare metal. My rent is $2,600 a month. Office costs $400 / month. Food costs $200 / month. Small expenses like socks, underwear, shoes, and other general life support costs $200. Overall, I'm looking at paying $3,400 / month to work. Boy... employment sure sounds good right about now. You mean... someone pays ME to work instead of me paying to work?! What a deal!

On Spending & Employees:
Speaking of employees, I think I'm going to be holding off on hiring anyone as a full time employee (FTE) in the foreseeable future. It's time to get a lot smarter about controlling my costs. I *have* to think about every dollar being spent. So. That means the wisest course of action is to purchase as much pre-made game assets as possible. If an asset can't be found, then I contract it out. If an asset is an 80% solution, I buy it and then contract someone to finish the remaining 20%. Let's look at an example. I need to create a 3D book which needs to open up and flip through pages. Each page needs to have an illustration. So, I could contract out an artist to produce the art asset at $25 per hour. The bid for completing the asset is 1 to 4 days, with 8 hours of work per day. Okay, so we're looking at a range of $200-$800 in labor for a custom built book which is rigged and animated. I look online and I see premade book assets for sale for $65. That's equivalent to 2.6 labor hours @ $25/hour. Okay, so purchasing that online asset is faster and cheaper, but it's also an 80% solution which requires some changes to fit my needs. How long would those changes take? About 2-3 hours of labor, which is $50-$75. So, my total cost could be $115-$135 OR it could be $200-$800 and take a week. If I had an FTE, it would almost certainly be a week long project to produce and I'd be burning money I don't need to burn. Okay, what if my artist is upset that I didn't pay them $200-$800? My angry reaction is to say: "They can go fuck themselves, it's not their money being burned!" but the much more tactful response is to say, "I don't want to waste your skills on such mundane work, I want to spend the difference on more worthy art projects." They're still getting paid and its a compliment to their skills and time. Anyways, this sort of lean spending mindset is how I need to think. Same results, but less time and money spent. Make every dollar count.

On VR Indie Growth & Survival:
Eventually, I'm going to have to get more people to join my team. Growth is going to be very tricky to manage correctly -- especially in the VR industry, which is brand new. The biggest danger is that a company gets a short term influx of money and then they use that money to staff up. They have to make payroll every two weeks. Their costs exceed their income. Eventually, they can't make payroll and the studio has to either lay people off or shut their doors. They grew too fast and their cashflow was negative for too long. That's especially dangerous for the VR industry right now because the VR market is so small. The size of the market is growing, but I don't think it's going to be that explosive exponential growth for at least another 2-4 years. The VR industry will be lead almost exclusively by gaming. Everyone else is out solving problems for which there isn't a market yet so it's not going to be profitable for at least 4-6 years. If you don't pace your burn rate with the market growth rate, you're going to either need another influx of cash via investment or you will have to cut labor costs or go out of business. And in the game of business, you have to survive before you can thrive. Investment money is just a scaffolding for your business to prop it up while you build the core business model. Success is not equal to getting funded and looking forward to a life of martinis on the beach, if anything, it should be a kick in the pants to get into high gear. Anyways, back to full time employees: They become a fixed cost which has to be paid on a monthly basis, and the more employees you add, the more your overhead costs rise (hiring support staff). Eventually, I'm going to have to scale the size of my team. Especially if I want to finish this game within this decade and move onto bigger projects. The best "employees" at this point would be business partners who take company equity instead of paychecks. Alternatively, if I was going to hire an employee, the hiring decision would be one of the most important decisions I could make for the company. You can't just hire any schlub who happens to have a modicum of talent. You have to hire people who don't think like employees. The unfortunate thing is that our education system is teaching people how to think like obedient employees happy to punch the clock and go home, rather than go getting self starters. The next person I hire will ideally be a fellow entrepreneur in the game industry who will work along side of me to build games and slowly grow the company. I think when you hire someone, there is an assimilation process where you have to indoctrinate them into your company culture, and the smaller your team is, the longer that assimilation process needs to take. Everyone needs to be on the same page in terms of values, and the values you need to have need to be values which keep the company profitable so that people don't lose their jobs. I think exporting my values and work ethic is going to be my biggest challenge in the future, and I still have lots of room for improvement in a lot of areas. Ideally, I can find a partner who is just as competent and complements my weaknesses. So, going to local game dev meetups is actually a valuable exercise because it helps me scout out talent and figure out who I'd eventually like to work together with. I don't need to interview unknown candidates if I do it right.

On my Role:
I ruminated for a bit about what exactly my vision is for my game and myself. I myself am quite unimportant. I'm just the catalyst / vessel which accepts money and produces content as output... right? Or, is there more to it? If I'm an unimportant nothing, and the work I produce is a reflection of myself, then by extension, my game would also be an unimportant nothing, right? But, what if the game is a magical form of expression and is really a manifestation of a part of me? Then I can't be a nobody, and I have to become an interesting character. I am going to build a cultural icon, and to do that, I must become one. (note: I loathe narcissism, ego, self inflation, delusion etc. so this will be challenging). This was sort of an epiphany this month on where I need to take this game. It will eventually be one of those games people think back to with nostalgia and fondness and want to share with others because it is such a great series of stories. People will dress up and act as characters within the game. And they'll be memorable. And fun. And every time you visit the VR world, it's like going to disneyland to interact with your favorite characters again and again. The game may not be that today, but one day... one day, it will get there! I just have to have faith that it will become what I envisioned and work really hard at it every day. Anyways, if the world of fantasy I intend to create is an amazing and interesting place which is in part an extension of me, then I myself need to become a role model and a fountain of inspiration. This is the vision, values and guideline I'm aiming for. I have such an amazing opportunity to create something beautiful and world changing in VR, I just can't let myself squander it. It would be a sin.

On the convergence of AI and VR:
And it doesn't all have to be slinging fireballs and hungry zombies either. What if the most amazing part of this game had an experience where you sit on a veranda on a summer afternoon and you're sitting across the table from a beautiful elven woman, sipping tea together, engaging in some small conversation for a few minutes? What if the microphone is enabled and you can actually talk to each other? What if the character at the other end would sometimes be a human being? You have a natural language processor which interprets what you're saying and then the character you're possessing speaks your words in their voice rather than your own, so you could be a man speaking with a womans voice, or a woman speaking with a mans voice? And what if, the AI system is also listening and learning about how real people have conversations and learning how to be passably conversational? Enough to pass the Turing test? Just think, every day you go through the summer tea time experience with a favorite character, it's different. Who needs disneyland anymore when you can have something so much better? I'm obviously getting ahead of myself here, but this would be the perfect convergence of artificial intelligence and virtual reality. When you are in a virtual world and you aren't certain whether the character at the other end is artificial or human, it makes for quite a powerful experience. Granted, it would take a *lot* of AI programming to really sell it, but if you could pull it off, it would be incredible.

2017 Predictions:
Anyways, 2017 is right around the corner. There are going to be a lot of big, life altering changes next year. My co working space is moving to a new office space in March and I'm planning on going with them. My girlfriend and I are going to be moving to a large shared rental house instead of a small apartment, so that will be a big change. We may or may not resume operating our ranch, depending on finances this spring and summer. Regardless, I'm going to plant 4,000 sunflowers and create the "Valley of Sunflowers". There will be game cross over here :) I have a feeling that something very exciting is going to happen with this game in the next year, but I don't know what it's going to be yet. VR is NOT going to become mainstream in 2017, but it will quicken its pace. Maybe 2018 or 2019 will be the year, but in 2017, VR is going to stop crawling and learn how to stand.

I'm excited. Next year is going to be great.


The month of November has been another hard month to get through. December will be harder and I can't afford presents this year.

I have been making mediocre progress on integrating Oculus Rift + Oculus Touch with my game. I wish my pace of development was faster, but life happened and this was a high hurdle for me to overcome. Here is a short video of a prototype working:



So, what you're looking at is my new way of controlling characters. In the first second or two of the video, you are a disembodied floating head / entity in VR. You have the default VR controls, so you can be an invisible spectator in the game world. The next few seconds, the screen fades to black and then fades back in, and now you're controlling a wizard. You are still the same disembodied head, but now you're mounted on the shoulders of a character and able to control it. You don't control the creature directly however, you are more like a puppeteer and the controlled creature is your puppet. This is important because some of the inputs you might give to the controlled character might be invalid -- such as putting your hand through a solid object. The beauty of this layer of abstraction is that I can control any character through one VR interface, and adding additional hardware support only has to be done in the VR interface instead of every controlled character. This means less maintenance and human error, and a consistent play experience. I've gotten the game to the point where I can swap out my Oculus with my Vive, and with no additional reconfiguration, I'm ready to play. In terms of business, this is fantastic because it means that consumers of both hardware platforms will be able to play Spellbound and get a very similar experience, and that also means my total addressable market doubles. So, if I currently average one sale per day on Steam, if my game goes on Oculus Store, I'll average a total of two sales a day! Whooo! That's enough to buy myself both lunch *and* dinner!

I discovered that the oculus touch also has capacitive touch on its buttons. This is really cool, and now I understand why they call it the oculus "touch". Based on whether someone is touching a button, I can play different hand gestures (see: video). I wanted to be careful to implement the fingers so that it's not necessarily hardware specific. I plan to add support for the Leap Motion, so I don't want to paint myself into a corner with my implementation and force myself to refactor the code later. I also kept in mind the really early prototypes of the Valve controllers which were debuted during Steam Dev Days and architected my implementation to easily support it when I eventually get my hands on their hardware. Adding support for new hand input hardware will be super fast and easy now. The end result is that you've got wizard hands which somewhat mimic your own hand positions on the motion controller and it feels great. This helps increase immersion and presence a teensy bit more.

Then life happened. My girlfriend went to the hospital to get surgery for her tennis elbow (minor stuff). That pretty much put her out of commission for 10 days, so I needed to take the time off of work to take care of her and nurse her back to health. Zero game development was done during this time period. It's a negative impact on business, but it's a higher priority to take care of loved ones. It's not too hard to pickup where I left off. I hope I remember this in the future when any future employees need time off.

Last weekend, a horse died at our ranch. It just had a sudden seizure in front of a couple people and then it fell dead. We put a tarp over it and buried it the next day. Its belly got super bloated and looked like a balloon which is ready to pop. Since it died in the field, we had to tie it to a truck and drag the carcass down a dirt road to its grave. I was worried that the belly would pop on the gravel and make a big mess, but instead, it popped right when it fell into the grave. I didn't see it happen, but supposedly, there was guts everywhere and it was one of the most putrid smells you could imagine. I think that the grass the horse ate was still being digested, and a part of the digestion process is to generate lots of gas. If that gas isn't let out, the belly swells up. So... farting is actually really important!

I got back to work this week and have been focusing on reintegrating my VR interface controller with character controls. I made a huge breakthrough today: I have updated the way that I calculate the orientation of the player torso so that it feels a lot more accurate. Previously, I had something like a 20 degree margin of error. Now I've got it down to about 5 degrees. But, the huge improvement is that you can now turn your head and look over your shoulder while running forward. So if you're running away from something scary or dangerous, you can turn your head and see how far away it is without changing course. I don't think this is possible with traditional FPS games, because usually torso orientation is set by mouse look and movement is done with keys. I suspect that I may be the first person in the world to implement this feature. I'll be curious to see if anyone ever notices or comments on it in the future. It's pretty easy to overlook or take for granted.

In other news, OSVR is going to send me their VR headset :) Now, I'll see if my VR interface is really as robust as I think it is. Regardless, I'll make sure that Spellbound supports their hardware too. Their HMD's are sort of forgotten or overlooked, but making sure that their hardware has compatible content is always good for the VR industry.

The Oculus Touch launches to consumers on December 6th. I wanted to hit that deadline and have my game available on the oculus store on launch day, but I suspect I'm going to miss it by a week or two. I think the vetting process to get a good build on the oculus store is going to be pretty strenuous. I heard a rumor that if you drop below 90 FPS even once, you fail validation. Oh well, nothing to do but try my best and start the ball rolling on this process. I'll get there eventually.

My immediate short term goal is to get this big update out the door asap. The second goal is to get the game up on Oculus Store. The third goal is to localize the game into chinese and then launch it on the Viveport (China is a huge market for VR). The fourth goal is to add more content so that the game play is more compelling and interesting. Then, it's nothing but pushing out more content, content, content, followed by marketing, advertising, and marketing. Eventually... I'll sell more than one copy a day. When that happens, I can breathe a sigh of relief and slowly start paying down these IOU's and debts. I predict that the next two to three years of VR is going to be slow growth (based on hardware adoption rates). What this means is that I need to very carefully manage my company growth to stay under my income. I predict a lot of current VR companies are going to grow too fast, not make enough money to sustain themselves, and then they'll burn out and fail. Two to three years of meager revenue will kill a lot of companies if they don't continuously get cash infusions from investors or keep their burn rates low. Eventually, the VR industry growth will accelerate, and I intend to still be around to ride the wave upwards. I personally think a lot of current companies and investors are making the mistake of targeting non-gaming applications for VR before the market is ready for it. The reality is that gaming is the tip of the spear when it comes to pushing innovation and demanding hardware performance (just ask NVidia and Intel). Gamers are the early adopters. They're slow to adopt because the barrier for entry is still pretty high and there isn't enough compelling VR content to make the hardware purchase a good value. THat will gradually change though. Once the gaming market has been saturated with VR hardware, the secondary business use cases can start to become more relevant. But nobody is going to say, "Hey, I need to visualize this spreadsheet in virtual reality because it helps the business make more money faster.". Today, I would be nervous about investing in any VR company not involved in VR gaming somehow. Anyways, Christmas is right around the corner and I think a lot of people are going to be getting a VR surprise under the tree. We'll see how that impacts the industry and subsequent sales.

P.S. posting about my game on reddit, twitter and facebook had zero impact on my sales.


Yesterday I received my first payment from Valve for sales in the first month: $4,354.89

I debated whether or not to post the actual amount I received. Normally, I'd not want to share this (and I generally won't), but I think there is a bigger, more important conversation about game development financing and revenues which people in and out of the game industry need to have and understand, and that requires some of us to be open in order to start that conversation. If you're going into game dev (particularly VR) as an indie developer, you need to have very tempered expectations about how much money you're actually going to make on your game.

Let me explain this number a bit more.
I have done next to ZERO marketing or advertising (aside from this dev blog). I made a facebook and twitter post about my game release. One person requested a Steam Key so that he could make a youtube video, which I granted. What I haven't done is spam Reddit with posts about my game release. I have not reached out to game industry press with an announcement. I haven't done any outreach. I haven't done any external marketing or advertising.
"What's wrong with you, Eric? Do you hate money?" you might ask.

The biggest problem is that I think the game isn't ready for advertising and promotion...yet. It needs more content. I believe you only have one shot at making a grand announcement and getting people to check out your game, and when you make that announcement, the game had better live up to the hype. It's gotta be the greatest surprise experience. It's gotta be an undiscovered gem. I feel I'm not quite there yet. Where does the game need to be? It needs more content. It needs to support both Oculus Rift and HTC Vive. It needs to be widely available on multiple distribution channels.

What's interesting about this sales figure is that it is 100% about your first initial release bump, followed by 100% discovery. When you release a game on Steam, your game is listed in a "new releases" category, and that's about the only exposure you'll get. After that, future customers will have to find the game by either stumbling on it or intentionally looking for it. So, for the last week or so, I've averaged about one sale per day. It might as well be zero. I think I can say with a high degree of confidence that this is my baseline. Now, this is where things get kind of interesting. With an established baseline, I can start conducting various scientific experiments to see what moves my baseline. If I release a content update, how many additional sales does that generate? If I do a targeted advertising campaign, how many sales does that generate? If someone creates a reddit post, how many sales does that generate? If someone publishes an article on an industry publication, how many sales does that generate? If the game has a unique feature, does that impact sales? What about online streaming on channels such as twitch? How many additional sales does a youtuber generate? How much does word of mouth impact sales? How much does a steam discount drive sales?

Again, I believe that the key to sales is having quality content. I'll say it again: Content, content, content. Why? Let's say you get 1,000 impressions. That's 1,000 people that look at the game and are deciding whether to buy or not. We could do something tricky and slimy by creating a really compelling sales pitch and promise things the game doesn't do yet. This could increase the number of sales we get, but ultimately, those sales numbers are false because people will just put in a refund. The numbers won't stick. We'd just be fooling ourselves. Of the 1,000 impressions, we'd get a 10% conversion rate and make 100 initial sales, but 50% of those would refund, and we'd be left with 50 sales and a lot of angry customers. That's not a desirable position to be in because it hurts long term prospects. On the other hand, we could create great content and be truthful and honest every step of the way. We want people to say, "Wow, I can't believe I got this for only $20! What a great value!" Of the 1,000 impressions, we'd probably still get 10% conversion rate and get 100 initial sales, but 1% would refund and we'd be left with 99 happy customers, who would then be happy to recommend the game or write good reviews, which in turn leads to more sales. We also wouldn't have to compromise our integrity, which means we become a more trustworthy source of information, and the long term effect of that is happy people all around.

The right time to do advertising is when you know that anyone who buys your product is guaranteed to be satisfied with it, and for every $1 you spend on advertising creates more than $1 in sales. I'm not there yet.


The income was not as much as I had hoped, but it was enough to relieve some financial pressure. As of right now, I owe other people a total of $14,892.99 and this first payment will help me start chipping away at it. It'll also help me buy lunches again, so hopefully my health will improve a bit more. Today I also went on a spending spree on the online market place and purchased about $300 worth of game assets which fit the theme I'm aiming for and suit my game requirements. This is a reinvestment of my income to improve the product. Now, there are fewer things holding me back from creating better content! I still have to contract out some art work which needs custom work though, and that's going to be tough with the debts I have. With the lack of sales for the month of October, I'm not expecting much money in the next payment. This is going to make it more difficult to pay off my outstanding debts. But it also means I need to kick ass and make more content, and get it ready for promotion. The lack of income is also going to mean that I can't hire on any additional employees anytime soon, or contract out extra help. Heh, those exclusive funding deals are looking pretty attractive right about now.

The month of October has been full of "distractions" (November will be better). There are a couple noteworthy events.

I was asked to be a guest lecturer at the University of Washington to speak about VR game design to a class of design students. I spent a weekend preparing for it, and then gave a huge, coffee fueled talk for an hour. I was worried that I wouldn't have enough material to cover, so I over prepared. I taught the students about the software development life cycle, compared various SDLC's and their strengths and weaknesses, and talked about how design fits into the whole process of product development and its context to the business environment, and talked a lot about the considerations I've made for designing VR content. The talk was supposed to last for 35-45 minutes, but I went a little over time -- which was no problem. If you think this blog is long... this is nothing. She said that I pretty much taught her whole course curriculum in an hour (which was flattering) and she asked me to come again in the spring. Afterwards, we had a short Q&A session and the professor thanked me for taking the time to come. Overall, it was an honor to share my knowledge. My closing statement was "Don't be afraid to stand on the shoulders of giants. Don't reinvent the wheel. Use their work. In the process of your work, leave footprints behind for others to follow in."

This sentiment is a large part of why I am writing and maintaining this journal.

My girlfriend went to China for two weeks to inspect her factories and to look at products at the Canton Fair in Hong Kong. This meant that I needed to take care of our ranch business and dog sitting business and make sure that things run smoothly while she's gone. Her trip was good and worthwhile though, so the short term cost in time and money will lead to long term profit. The Canton Fair is the biggest fair in the world, with booths which go for miles. MILES!!! It's so big, some people drive cars and bikes down the thoroughfare. One thing that struck me is that she is looking at "items", which are just physical things out on display in a booth. They're not products until she makes them into a product. It's not a product until it has a name, packaging, has a pitch, and is designed to sell. You don't sell items, you sell products. Everything on a retail shelf is a product, not an item. I've been to many fairs with her and stood behind a booth and helped her sell product. I made some interesting observations. Most people absolutely suck at selling anything. I include myself in that category. I've also realized that I'm also a bad gauge of whether something will sell or not. My personal metric is, "Would I buy it?" and the answer 99% of the time is "Hell no, this is garbage or would just collect dust." (I tend to be a minimalist). The uncomfortable truth is that the average consumer will buy the dumbest shit. Millions of people have bought fuzzy worms, slinkies, bop-its, slap wraps, fruit choppers, lint rollers, etc. The item they buy doesn't matter, the way the product is presented is everything. After they take it home, you just hope that they get value out of the product. I can't over emphasize the value of good sales and marketing for a product.

Okay, so let's turn our gaze to advertising and promoting a virtual reality video game such as mine, and look at the opportunities and challenges. How do you sell this thing? I'm going to list out some facts I believe to be true (my premises):
1) Most people in the VR industry have no clue on how to market a VR product.
2) 99% of consumers don't have a VR headset (evidence: look at steam hardware survey).
3) High end VR hardware costs $800 out of the box, and requires a powerful PC to support it. This is a financial barrier for entry for many people.
4) Traditional forms of advertising (2D film) is not representative of the experience people get from VR. You really have to play the game in VR to understand the experience.
5) My game is hard to discover. Nobody knows about Spellbound, so the only way people find it is if they stumble upon it on Steam or hear about it somewhere.
6) My four biggest markets are as follows: North America, Europe, China, Austrailia
7) It's ALL about quality content. The game should be fun and compelling, sell itself, create excitement / inspire the imagination, and be highly replayable.
8) If I do zero promotion and marketing (current), then I average about one sale per day. That's enough to buy my lunch every day. This means I need more than zero marketing. I have negative $15,000 dollars, so my marketing budget has to be low, as in zero. That means my promotion efforts can't cost me anything, which means I need to look at free online promotion.
9) Multiplayer is hot. But, the VR market is small, so the hottest multiplayer VR games have at most 50 concurrent players.
10) VR is extremely new. It launched six months ago to consumers. The market size will grow in time, so patience is needed.
11) There's a catch 22: VR hardware needs content in order for the hardware to sell, and VR content needs everyone to have the hardware. There needs to be an alliance between VR content creators and hardware producers.
12) VR is absolutely perfect for demonstration. Once you try the hardware with the right content, you will want it. VR hardware sales should be coupled with capable computer hardware so that it can be sold as a whole package unit. This would be a perfect product for in-store demo's with a skilled pitchman. Don't just setup a demo station and call it good.
13) 2,000+ people have my game on their wishlist. Interesting. What are they waiting for?
14) A majority of VR content feels like a demo.
15) A majority of VR content is also lower in quality.

An interesting technique I'd like to try is to go to various meetups and events and actually try to sell copies of my game. I would essentially be selling Steam keys printed on cards for $20 each. The objective isn't to actually sell the game and make money off of the sales, but to learn how to sell the game. What's the sales pitch? What interests people enough to put money down right then and there? What doesn't interest people? What common objections do people have? What are my counters to their objections? What modifications can I make to the game to help it sell better? What do people need to see before they buy? In essence, I need to understand my customer better than they understand themselves. With all this in mind, what's the best path forward towards market success?

I'll get to that in a moment. First, let's talk about Steam Dev Days.

I went to Steam Dev Days. It was my first time. A good 60% of the talks were focused on Virtual Reality, though I felt that the subject matter was generally way below my experience level. Most people are VR novices or haven't even touched VR development, so this was a good entry point for the game dev community. Despite my shyness and general awkwardness, I had the privilege of meeting several game developers from around the world. The really cool thing about Steam Dev Days is that everyone I talked to was a game developer. Like... I could walk up to anyone and talk to them about game development and share my best practices and they would know exactly what I'm talking about and share valuable insights. I only wish there was more time to mingle and find interesting people.

There were two talks which I felt had some particularly salient take away points.

The first is in regards to your game trailer on steam. The average person will look at your game trailer for 5-10 seconds. So, let us say that you have 5-10 seconds to pitch your game. If the first 5-10 seconds of the pitch is good, people will watch longer. How much longer? 30 seconds? 2 minutes? 8 minutes? So, how does that change the way you think about the production and sequencing of your game trailer? Your hook has to grab someones attention in 5-10 seconds. Also! Keep in mind, steam auto plays videos without sound! Does your game play trailer communicate the same message without audio? If not, fix it! This part wasn't in the talk, but my personal pet peeve with game trailers is that they are cut with white text on a black background which tells you about a feature of the game. Fucking stop doing that! Show, don't tell. Use those extra three seconds to show me this feature in action! Do you have too many features?! Fine, pick the three best ones and show those. Under promise and over deliver! (end rant) Anyways, I believe the importance of a good game play trailer cannot be over stated. It is often the only exposure people have to your game, so do it right and let the trailer represent the quality and production values of your game. If you get 1,000 impressions, they are going to be based off of the sales pitch presented by your trailer.

With that in mind, my current game play trailer sucks. I need to redo it. More on this in a moment.

The second really good talk at Steam Dev Days was about Communication. This is an area I need to work on a lot more. I have this bias that people can read my mind, know what I'm talking about, and know what I'm looking for in deliverables. I've slowly come to understand this is not true, and people will do their best to satisfy the requirements I give them. I have to blame myself if something isn't done the way I wanted it. Does this mean I have to micromanage everything? No. If I do that, then I don't give people room for being creative in my constraints. Communication is really an art which requires practice and experience to get good at it -- and it's a two way street. You say something, and then someone interprets what you say. The interpretation may be different from what you intended to say, so take your time to verify that their interpretation and your intention match. It may take an extra two minutes for this, but it's a lot cheaper and less frustrating than a wasted two hours. So, the thing to do is to try to distill what you're looking for to the root intent/expectation, then communicate this to your worker. If you don't know what you're looking for, you're not ready to communicate and you have some thinking to do. Some of this thinking might be good to involve others in via a discussion. Anyway, very little of this was covered in the talk, but it was my take away.

So, thinking about game play trailers and communication, it seems that they're very related. The game play trailer is both marketing and communication at the same time. The challenge is to correctly communicate the content of the game in such a way that it is compelling enough for people to spend money on it and to be happy with the product they bought. Like I said, my game play trailer sucks because it is not communicating the right message. It's well produced though and my film guy did a good job on it, and that's to his great credit.

In terms of game development, I've spent most of the month of October working on getting a patch out the door. I upgraded unreal engine to version 4.13, and that seems to have broken my room scale locomotion. At the same time, Oculus was kind and generous enough to send me their consumer version of the Oculus Rift and Touch controllers. I needed to fix this room scale locomotion problem before I released a patch. Or so I thought.

I learned something really valuable about backups. When you release a build of your game, make a backup of that build. You'll also want to maintain two branches of your game: A developer branch and a release branch. When you're developing your game before you release, you only need and use a developer branch. If you break this build, no big deal. Nobody is waiting. Once you release your game, there will always be bugs. Things which annoy the player are counted as bugs. The bug fixes may be small and simple. So, if you are working on an update to the game which breaks your dev build (as I did), then you have to finish the update before you can send out those small fixes. You could be looking at a timeline up to a month or two ("It'll only take me a week" = two months). You don't want to keep your customers waiting for two months for a hotfix while you are developing a major change. So, apply the hotfix to the release build and release that asap. If something can't be done quickly (~10 minutes), it doesn't get added to the release build. I thank my friend Russel for this tip.

The UE4 update broke my room scale locomotion movement ratio. It was no longer 1:1 and instead became 2:1. You move one foot, your character moves two. I don't know why. Nothing in the camera code changed between engine versions. So, I decided I needed to refactor this. I decided it was time to do this "right" this time. I have an upcoming requirement where I need to be able to support VR spectators. I also want to setup the game to support controlling multiple characters. The VR control interface should be consistent across each character, so switching from playing as a wizard to playing as a zombie should be consistent. I also have to support the Oculus Rift hardware platform. I spent a lot of time wrestling with the various changes in coordinate spaces between hardware platforms. By default, Oculus sets the play space origin at your starting eye level. The default for the Vive origin is at floor level. When you start asking questions like, "How tall is the player?", deriving the answer is going to be dependent on the origin location. I also want to go back and add in support for Leap Motion. Oh, and I need to support monitor, keyboard and mouse. And game pads. So many possible hardware configurations! So many ways to create the same interactions! I have five different hardware configurations I need to support:
HTC Vive + Motion Controllers
Oculus Rift + XBox controller
Oculus Rift + Touch controllers
Oculus / Vive + Leap Motion
Monitor + Keyboard + Mouse

My current "wrong" approach was to just hard code in the hardware specific interactions into the wizard character the player was controlling. Why is this wrong? What happens if I want to let players control additional characters? Let's say I have ten player controllable characters. If I copy the hardware specific implementations on a per character basis, then I will be maintaining and updating the same logic multiplied by the number of characters. What happens if I want to add in more hardware support? Then I have to go through all ten characters and update them all. This becomes tedious very quickly and creates room for human error. The right approach is to create a hardware abstraction layer and put it all into one object. All of the Human-Computer Interaction happens with this one hardware interface. That hardware then sends out interface calls to the character being controlled. As long as the character implements the interface call, it can handle the input. Now, adding in an additional hardware platform is just a matter of capturing the hardware specific input and translating it into an interface call which can be sent out to a controlled character! With this setup, it would be a walk in the park to eventually add in support for the PSVR or any new motion controllers or VR hardware platforms. I also realized that really what a player is is just a view into the game world and an interface to change this game world through interactions. A player which doesn't interact directly with the game world to change its state would just be a passive observer. And a passive observer is just what I need in order to support mixed reality video capture and to support VR streaming...

I visited the HTC North America headquarters here in Seattle this month and met with one of their film guys. I plan to create a mixed reality game play trailer for Spellbound. Unfortunately, Unreal Engine 4.13 doesn't support Mixed Reality yet. So, if I want to do MR, I have to get really clever and will probably have to modify the engine myself to add support for it. This means I'm probably going to have to push my video production timeline out by at least 3-4 months. My grand plan is to add multiplayer and streaming support. I want to enable players to easily setup a recording session of themselves playing the game in VR. I also want other players to be able to spectate a game in progress. At any moment, a spectator could stop being a passive observer and become an active participant by possessing the body of an AI controlled character. If I design my AI correctly and design the characters correctly, a player controlled character and an AI controlled character would be close to indistinguishable. The mixed reality shoot of my game would require that I build out the multiplayer observer capabilities. This means I need to go through every variable in the game and decide if it needs to be replicated to all connected clients so that the game state is universally consistent. This is going to take a lot of work. But, if I do it now while the game is still relatively small and simple, it'll be a lot less painful now than a year down the road.

The other interesting dimension to this is that if players can stream themselves playing, or play with other players, this opens up a potential secondary cosmetics and accessories market for me. Players have a full body avatar of a fully dressed wizard. Players will want to customize their appearance. What if the way to do this in VR is to go to your dresser or closet, select the wardrobe you want to wear, and then look at yourself wearing it in a mirror? Since I'm tracking most of the players body, wearing the clothes yourself would feel a lot more "real" than anything else. What kinds of secondary licensing opportunities would become available with this tech? Would something like this also change the online retail clothing store experience? This could put a dressing room in everyone's living room, and you wouldn't even have to take your own clothes off to try on other clothes. Anyways, there could be two categories of apparel that people get. The first one is clothing you acquire through playing the game and accomplishing certain feats. The second category is exclusive clothing acquired through micro transactions. Here's where things can get really interesting however... Let's say you bought a digital wizard hat and you really like it. For an extra $25, you can order the real hat and have it shipped to your house. Now, when you're doing your VR online stream, you can wear the real hat and wizard robes. What if... there's something you can do in the game which makes you eligible for a free clothing item...? This would be like a starter clothing item. And, if people go to events and want to cosplay a character from my game, they've already got an official outfit ready to go. The interesting (and difficult) part about this is that to do this right, I'd have to enlist the help of a fashion designer to design the clothing product lines and they'd have to work together with an artist who creates the digital version of the clothing, and at the same time, the game designer would have to make work with the fashion designer to make sure that everything is functional in game and in real world. Talk about a "Mixed Reality"! This could be really cool. This would also mean that all of my game characters should eventually be gender interchangeable. The red wizard is currently a male, but I should also do a female red wizard. Heh, this would quickly be a game which looks like it's about throwing fireballs at zombies, but really its a shopping game for clothes and social VR. I have fashion design and modeling connections and getting the clothing sourced from China wouldn't be too difficult, so this is actually a feasible option to consider.

Speaking of Social VR, this has some fascinating applications as well. Why not have a wizard academy where all of the worlds wizard congregate and meet? This could be like a multiplayer lobby. Players wear their custom wizard robes and talk to other wizards in VR. It could be like a fashion gala, where you meet and talk with new people. The robes you wear are symbolic of your accomplishments as a player, so your clothing is equal to status. At any time, they could decide to go together on a wizard dispatch mission. Maybe they start a co-op game where they have to use their wizardry to protect the villagers from a horde of zombies? Or perhaps they can help a bunch of farmers have a good harvest? Through these mini side quests, people acquire new wardrobe items and the side quests are really just facilitators to socializing with other people in VR. And maybe, players can also build and design their own wizard tower and invite their friends to come visit? The wizard tower could be an extension of their personality, so the moral decisions you make in the games influence what items you can use to decorate your tower with (with a nod to Black & White). All of what makes social VR so compelling is the social proof which comes with it, and that the game is just a medium for people to meet over, do shared activities with other people, and to share your creations and status with others. This will be an interesting direction to investigate. Aside from the technical hurdles to implement it, the biggest challenge will be figuring out a way to moderate people and prevent them from harassing others and ruining their experiences. In real life, we have police and laws. Maybe that model is a good launching point? So, if you break a law in the game, you are put in jail for a period of time? Every time you log in to the social world, you just log back into a jail cell until the period of your sentence has passed. Okay, what about moderator abuse? Maybe we can even have a small mock trial with a judge and jury? Or would this be a distraction and waste of time? Okay, someone gets sentenced to VR jail. Why not just leave the game connected while you're sleeping? Counter: Maybe your sentence time counts down only when you're logged into the jail cell, and it counts only if the HMD and motion controllers move every minute? And maybe I have a loud speaker in the dungeon which repeats the game rules of conduct once every five minutes? ie "Sexual harassment is unacceptable behavior. Sit here and contemplate how your actions make others feel." The ultimate goal here is to discourage people from ruining the game for other people, handing out consequences for the rule breakers, to give victims a sense of justice, however slight it may be, and to design a system which can't be abused to abuse others.

Anyways, this is totally feature creep stuff and looking way into the future, but would also make the game into something truly magical and have a viable business model to sustain it. One thing at a time though. Today, I need to finish adding support for the Oculus Touch. I need to get this game to sell and make it as widely available as possible. As I gradually get there, the other aspects will become much more viable. This might even be something an investor would eventually be interested in.

For the month of November, my development focus will be centered around adding support for the Oculus Rift and Oculus Touch so that my game can be ready to go by December 6th, when the Touch is launched. I want to get my game onto the Oculus Store in Early Access mode as well, but I'm very worried that their vetting process is going to take a very long time and result in a few rejections before I finally get a build up. I'm also going to be turning my attention towards Viveport and getting my game localized for the Chinese market. Whoever ends up doing my localization will have to have a strong ongoing relationship with me, because there will be lots of additional work required to support content updates. Ultimately, I'd like to eventually have an international academy of wizardry in VR for all VR hardware platforms. You join the game, find new friends from around the world, form a party, go do a story quest together, role play your character, finish the quest, return to the academy, and collect a reward which you can display / use.


September Recap

Whew! That last entry was a long one and I was almost wondering if there's anything to add to the month of September. As it turns out, there is always lots to talk about :)

So, I launched my game. That was pretty cool. It's a first, and I feel happy and proud about it. I hold my head a teensy bit higher now. But, let's not kid ourselves. The game is far from finished and there's a TON of work left to do. I mean, I released it in "Early Access". There's at least another two years worth of work for me to continue on, so there's no time to rest or slack off.

Right after launching, I sent Oculus a message to see if they'd be kind enough to send me an Oculus Touch and a CV1. To my surprise and delight, they agreed! The Oculus Rift arrived on Monday and I've been spending the whole week working with it and adding in support for it. I am not allowed to write any details about the Oculus Touch however, so I can't say much other than I'm working with it. I'm eager to add full support for the Rift however, and I hope that some day Spellbound will have a presence on the Oculus Store.

I want to talk about the Oculus "experience" for a moment though. From the moment I opened up the shipped package to the moment I was inside VR, I had a very smooth, crisp installation experience. I was pleasantly surprised by just how well engineered everything was. It's incredible. *This* type of experience is what VR needs in order to succeed and win in the market. The oculus store is another excellent experience refined to perfection. The *only* thing I would complain about the oculus store at the moment is the lack of a review system for the content, and ways for early access developers to interact with their customers & community. I suspect that these features are upcoming, but there are still some VR engineering challenges for oculus to get through. Their store experience is designed to be a virtual reality store, so text input will be a stumbling block for people who are not touch typists. I think that they also have a unique opportunity to demo the VR products in a way unlike what any other storefront can offer: Use VR to your advantage! Let's stop thinking in 2D. Let's create game play trailers in VR, to be viewed in VR. Nobody has done this before, and the first VR storefront to do it will set the bar for every other VR storefront to meet.

After I released my game, I started working on a patch to fix some issues people identified and to add requested features. One of those feature requests ended up requiring me to update the game to the latest version of Unreal Engine 4, and that update caused a significant bug in my room scale locomotion setup. The problem is that I am using a customized camera setup for VR. If the player walks forward 1ft in their play area, I move the camera forward 1ft as well. Then the engine moves the camera forward 1ft again. So, there's now a 1:2 ratio of movement. When it comes to intelligence, I'm just average, so it took me longer to figure out exactly what was happening than what it would take most people (a couple days). So, you might ask, "Why not just let the engine move the camera?". Fair question, but the problem is that the engine doesn't do any collision checking with the camera, so you can easily put your head through a wall in VR. So, *I* have to control the camera position at all times.

That brings up an interesting VR design principle: Who controls the first person camera? The player or the game? The intuitive answer would be "The player!" but that is actually the wrong answer. The game controls the camera position and orientation at all times, but it responds to input *requests* from the player. It's up to the game to decide whether to accept those input requests. 99% of the time, they pass through and are accepted. However, there will be some very special times when you'll want to control the camera position or orientation. What if the player tries to put their head through a virtual wall? The wall should block that movement, and the only way to block that is to stop the game camera from accepting the movement request of the player. In the real world, we're physically blocked from putting our heads through walls by the wall itself, but in VR, there is no physical restraint. Likewise with hand movement controls. If you have a hand and you pass your controller through a virtual table, you should sweep the virtual hand through the world until it gets blocked by a colliding object. The really tricky design problem becomes, "What happens to the virtual hand position after the physical hand controller is in an unblocked state?"

Now that I'm adding support for multiple hardware input devices, I've had to come up with a new way to support the differences in hardware. I decided that there should be one common interface that the hardware works with, and one common interface that controlled characters interact with. I came up with this weird principle of disembodied control. Instead of directly controlling a character, you are a in control of a "head" game object. The head game object is the interface for working with all VR and input hardware. It is responsible for converting the various coordinate spaces into a unified common coordinate space, applying the appropriate vector offsets for each hardware platform, and generating the common input commands all characters would have to respond to. The head also contains a skeletal mesh which can be swapped out to match the character being controlled, so you're literally plopping a head onto the shoulders of a headless character. What's interesting and important about disconnecting the head from the rest of the body is that the player who controls the head should never render the head for themselves (or else you see the insides of the head mesh), but anyone else seeing the player should see the head. The head mesh should be attached to the body at all times and it shouldn't be apparent to the player that they're different objects. On a slightly more abstract conceptual level, the head is like a puppeteer, and the body they're on is the puppet being controlled. Your inputs are like pulling the puppet strings, but sometimes the puppet can't do what you're telling it to do (like clip through colliding objects). This creates some interesting new game play opportunities. There is no reason why a player now couldn't control a zombie, much in the same way they control a wizard. So, in a future multiplayer game mode, players could play as zombies against a wizard. Because the heads are also disembodied, they can very easily become spectators in VR -- just don't give them a body and don't render the head mesh, and they're now invisible observers!

This also introduces some interesting new design considerations. What happens if the player is really short (such as a kid)? What happens if the monster you're controlling has their head in a different position relative to the rest of their body (such as a crawler zombie)? Is your locomotion system still valid if players are controlling zombies (ie, no teleporting)? What information do you give the player playing as a zombie to make their play style indistinguishable from the AI?

Anyways, the huge win with this design is that it creates a layer of abstraction between the hardware implementation and the creature control, so I only have to add support for a single interface and all creatures which respond to that interface are automatically supported. Adding extra hardware platform support becomes a lot faster and easier, and its a lot easier to work with characters which have no idea whether they're being controlled by AI or VR interfaces. I don't know if this is common, but if you're doing VR, you should consider this extra layer of abstraction.

On the financial front, I'm still broke. Any proceeds from sales I made in the month of September won't be received until the end of the following month. Aside from this dev blog, I've done zero advertising for my game. Despite that, I've gotten some reasonable sales, relatively speaking :) Thank you to anyone here that purchased my game. I'm still 5 months late on my office rent and I'm getting pressured to pay up. I went to the bank today to apply for a personal line of credit to pay my office $800, but the bank rejected my application. I haven't had income for the last three years, and I have no credit history because I've never owned a credit card in my life. It's weird to think that I have to pay myself, but I guess that makes sense. Being "self-employed" still means I'm employed, and you have to pay your employees. Still, it's like having a conversation with yourself where you're like, "Here yourself, have some of your own money!". But I guess when you do that, you generate a paper trail... and get taxed for giving yourself your own money. It's time to ask friends and family to lend me money for a month to get by. Some day, I'll have enough money to be fully self-sustained by my work, and then I can truly call myself a "professional", though maybe I may not necessarily always act like one ;)

I had this interesting dilemma the other day in regards to communicating with my community of fans, and I'm still a bit perplexed by it. I know there are bugs and issues I need to fix with my game. I've fixed them in the latest build, but thanks to my most recent overhaul of the character control scheme, it's going to take a few weeks to finish and test before I launch. I want to tell people "I fixed all these things, but it's not ready yet!". But when I start writing a list of all the things I fixed, I find myself wondering: What's the point of telling people what I fixed weeks before releasing the build with the fixes? Wouldn't that just cause more confusion? Shouldn't this just be included as patch notes to go along with the update?

Another interesting observation: I have TONS of people who have my game on their steam wishlists. The question is, "What are they waiting for?" And there could be multiple answers:
-Support for different VR hardware platforms
-Steam sales
-Full game release
-Content updates
-More compelling sales pitch?
It would be interesting to know what they're waiting for and how they discovered my game (despite no advertising).

Last note:
I'll be at the Steam Dev Days in Seattle on 12 October 2016. It's just a short walk from my work place :) Let me know if you are going and want to go get a beer or chat about game development.


Long launch reflections

So... I launched my game about a week and a half ago. Finally.

I remember the day I decided I wanted to make games. I was playing Commander Keen, as I always did when I was about 14 years old, and it dawned on me that *someone* had built this game in this universe. Someone had drawn these cute little aliens which I was jumping on with my pogo stick. This was someones job! Then I started looking at the game with a different set of eyes: Someone chose to place a pixel here of this color, for a particular reason, and the end result is this game I love. ... I wonder if I could do that too?! What would it take? I bet it would take a lot of work, but it would also be a lot of fun. I think I was in about 7th grade when I decided I wanted to be a programmer so that I could make games. I tried to learn programming at that age, but I sucked. I tried to teach myself QBasic. Back then, we didn't have the internet. So, learning QBasic was a matter of reading the help files and hoping to be able to build a program. I began to understand what a variable was. Coincidentally, this helped demystify algebra a bit. I could pretty much print text to the screen and play solid sound tones off of the PC speaker. I realized how much I sucked. I needed to get better as a programmer if I was going to have any reasonable shot at making games.

In high school, I was extremely eager to take programming classes. I wanted to learn how to program games!!! Nothing else mattered. "Make games, no matter what it takes!" This would become my motto in life.

The first programming class was visual basic 6. Driven by my passion to make games, I threw myself into learning programming. I learned very quickly. I learned how to design user interfaces with buttons and interact with button press events. I made a tic tac toe game! Then, I wanted to play tic tac toe against the computer, so I tried to create AI. All I knew at the time were if statements and sub routines, so I struggled to get any sort of AI working. I never did get it. The next programming class was a C++ class. At the time, the language syntax of C++ intimidated me. It looked way harder than visual basic! I took the C++ class... and I got a C. I realized just how little I actually knew about programming. I learned about loops, structs, classes, arrays, and never understood pointers or functions. Every time I would write a rudimentary C++ program, I'd forget a semi-colon somewhere and get 100+ errors. I was often very frustrated. Why am I suddenly so bad at this stuff? So, after I got a C in the intro to C++ class, I had to decide whether I'd retake the class or move onto the advanced C++ class. Do I move forward without understanding pointers or functions, or retake the class and get a better foundation of the basics? I decided to advance: I would just have to work a lot harder to makeup for my stupid. The first week of class, I went home and decided to sit on my home computer and spend the rest of the day figuring out functions, and nothing else. They gave me a lot of trouble, so if I could figure them out, it would be one less problem. So, I did. I spent the whole day practicing trial and error. I learned to take somewhat of an exhaustive scientific approach. I would write down what worked and what didn't work and trying to formulate why something worked and something else didn't work (ie, what does it mean to pass by reference vs. pass by value?). Oddly enough, my after school efforts paid off! I learned functions and they were no longer a mystery to me. What if... I did this with everything that gave me trouble? I'm not smart enough to pick things up quickly like everyone else is, so I just have to go home and make up for it by working extra hard. This became my secret weapon. I learned advanced C++ and... instead of failing as I expected, I got a C. The next programming class was an advanced programming class, sort of more an "independent study" type of class. Students would use what they learned to make GAMES. Holy crap, that's what I want to do!!! And these are LEGIT games because they're full screen and they have moving graphics! If there's anything I do in my life, it's taking these classes and making a full screen game! We got this book called "Game Programming for Dummies", which went through the steps to setup direct draw to make a sprite based 2D game. It was great! I built my first game! It was super crappy, but I had a foundation to build upon! I started realizing that a lot of the things I do to program games are repeated, so I started creating a very simple "library" of common functions. During summer vacation, I spent a good two months of the summer building this 2D space ship game I called "star fighter". It was a two player hot seat game which played like asteroids, but you fought your space ships against each other. I was still a terrible programmer and I was terrible at mathematics. One of the toughest problems I faced was trying to get my space ships to fly around in circles. I knew nothing about trigonometry. So, the approach I had was something like: If you're flying up, you move along the Y axis by 3 units and the X is 0 units. If you're flying down, you move at -3 units and 0 units. If you fly right, its +3 on X, 0 on y. and left is -3, 0. But, what if you're flying at a 45 degree angle? I did some approximations. If you fly up and to the left, you'd move at Y += 2; X += 2; What about 60 degrees and 30 degrees? I tried to eyeball it. As you can guess, I had some strange bugs. The space ship would sometimes move faster or slower depending on the angle it was flying at. And then, I also had to have images which represented the angle the ship was flying in. I was a terrible artist, but I drew my space ships in MS paint and a pirate copy of adobe photoshop 6, and then applied 22.5 degree rotations to the image. I created this single image atlas, and I would move a source rectangle around on the image to select the right image to draw for the space ship. It took me a good two months to build all of this, and I finally had a crappy, but full screen space ship fighter game. Damn, I was so excited! I couldn't wait for school to start so I could show all my class mates what I had built over the summer! I was gonna be like, "Who's the best programmer now, bitches?!"

So, my friend Russell looked at my game and liked it. He wanted to try to make the same game. He used my sprite sheet, and recreated my game in a week. One week! and to solve the rotation problem, he asked a math teacher to give him some advice, and got to learn about sine and cosine. What the hell is this black magic?! And he was using these things called pointers, which was sort of like the forbidden knowledge for me, like, "You will never understand pointers! It's black magic which novices like you are not permitted to understand!". I was quickly humbled. I wasn't the best programmer, not by a long shot. Then this other kid, Chris, was a year younger than me and he had already started building 3D game worlds. He had a working landscape using grayscale height maps and had some weird floaty wizard character with sparkles on it. God damn, how am I ever going to compete with that?! I got a bit discouraged and wasted a lot of time in class surfing the internet instead of learning, and everyone else either caught up or passed me.

Later on in life, I went to community college and continued taking programming classes. They were much, much harder. I took another C++ class and we immediately started covering pointers. The forbidden knowledge which I shall never know! Oh great, I'm not going to do well in this class... I gave up. And then I had to retake it. It was around this time that I joined Gamedev.net (2001). I had also started a website development business with a friend from high school. The plan was to start making websites so that I can raise funds to start a game company. I was 18-19 years old. I got my first client, and made about $1,500 from a website. I slowly learned more about website programming, particularly PHP and MySQL with Apache. In a totally uncharacteristic move, I then joined the United States Marine Corps, just for fun. I didn't want to be active duty, but being a reservist could be fun. I wanted to do computers in the military, so the recruiter put me in an artillery unit and I would operate a computer which calculated firing ballistics. Not quite what I had in mind, but it's once a month, so who cares? At the time, my justification for joining was "Oh, our country hasn't been at war since the persian gulf war, and that was a war that lasted 100 hours. I don't see us going to war, so I'll just roll the dice and join. It'll be a good adventure!"

Ah, yeah. So, I shipped off to Marine Corps Bootcamp in San Diego in the first week of June 2001. Philosophically, I was a pacifist. I was a super smart computer guy. So, why the hell am I standing here in this chow line, with my nuts in the butt of the guy in front of me?! I was a skinny, weak computer guy who had a pacifist leaning, screwing around in marine corps boot camp. I knew this would be one of the toughest things I ever did. And it was. It was 13 weeks of miserable hell. I was considered the worst recruit in my platoon of 85 shitbags. I always got in trouble for screwing up. Whenever you get in trouble, you get IT'd on the quarter deck, which means "intensive training" and lots of screaming by drill instructors. Basically, you do push ups, mountain climbers, jumping jacks, crunches, as fast and rapidly as possible, to the point of collapse, and then switch to another exercise, and you do it for about 30-45 minutes straight or until the drill instructor gets bored. I did a lot of this, and I was often in a puddle of my own sweat. I got pretty good at it, and stopped getting tired. I was a shitbag who did dumb shit, like forgetting my hat, or losing my wallet, or laughing in formation, or messing with other recruits to get them in trouble with me, or feeding the fat kid my cake so he'd get fatter even though he was on a diet. Well, all the fun and games stopped on September 11th, 2001. I'll never forget that morning. We were lining up to go to an early morning class. A drill instructor whispered to another one, "Did you hear what happened at the world trade center? An airplane flew into the building. Nobody knows what's going on." I overheard this, and I remembered reading this article in the readers digest a while back about a 1993 truck bombing of the world trade center, perpetrated by this guy named osama bin laden, and an ominous warning that he'd try it again some time in the future. Immediately, I knew it wasn't just an airplane accident. This was a terrorist attack by osama bin laden, trying to fix the failed attack of 1993. We finished the class on marine history, and at the end of it, the captain made an announcement about what was happening in the news, nobody knows what's going on, and he'd keep us all updated as they learn more. Not many people knew we were under attack, but I had a pretty strong suspicion at the time of what was happening. Then the second airplane slammed into the second WTC tower. Yup, we're under attack. This isn't an accident, it's all intentional. Shit's going down. The world went crazy. Marine Corps Boot camp in San Diego is right next to the airport runway. We were used to hearing airplanes roaring down the runway, making insane amounts of noise. That day, all air traffic stopped. It was eerily silent. I'll never forget the night of 9/11/2001, as we were getting ready to go to bed. Our drill instructors pulled us together that night and said, "Our country is under attack. The pentagon has been hit. We don't know who is next. This base has been put on force con delta, which is the highest defense level. Nobody is getting in or out tonight. We've got snipers posted on every roof top, so if any of you knuckleheads have ever had any ideas about running off naked into the night, tonight is not the night to do it. The snipers will shoot first and ask questions later." There was a lot of shock and disbelief on what was happening in the world.

The following Sunday, we get a 3 hour break. I read the headline of the news paper. Big bold letters: "America declares war on Afghanistan." I'm ten days away from graduating marine corps boot camp. What the hell did I get myself into? I think for a moment and conclude, "Whatever, I'm a reservist. After this is over, I pretty much go home and resume civilian life. And if I get sent to war, so what? I signed up for it knowing it was a possibility, so I'll honor that if it comes down to it." Graduating boot camp was something I was REALLY looking forward to, because it would finally mark the end of 13 weeks of miserable hardship. The week of 9/11, the graduation ceremony was extremely small because all of the US airspace was shut down. My bootcamp graduation was Sept 21st, 2001, exactly ten days after 9/11/2001. We have this really long parade deck with bleachers which span half of it. Usually, those bleachers are half full during graduations. But for our graduation ceremony, it was absolutely spectacular. The stands were completely packed, there were news cameras everywhere, and families from around the country flew in to watch their young sons marching proudly to graduate from boot camp in a time of peril and uncertainty. I never felt much in life, but at that moment, marching down the parade deck, I dare say that I felt quite a welling of pride. I was extremely surprised that even my parents had flew down, because I was totally not expecting them to make such a trip. We got a two week break, and during that time, every single freakin' car in San Diego had a brand new american flag sticker pasted on it to show support and solidarity for our country. I was very touched. The terrorists thought that by taking down our world trade center buildings, they'd deliver a crushing economic blow to the west and American's would be too soft to react in any meaningful way, and we would bicker and cower. Instead, their plan backfired as completely as a plan can backfire. Rather than dividing us, they united us in a way nobody else ever could, and not only did America stand as one against their atrocities, the whole world stood with us.

I finished the rest of my training and became a reservist. I resumed my schooling at community college, and paid for it with the meager earnings I made during boot camp. Reservists don't get much in terms of financial aid for education. Anyways, 2002 rolls around. George Bush is on a war rampage. Iraq is continuing to play games with UN weapons inspectors, thinking they can continue getting away with the same games they played with Clinton. That was a fatal miscalculation. Bush was on the war path and he was looking for any reason to declare war on more countries. I could see this inevitable war machine slowly rolling forward like a steam roller, squashing anything in its path. We're going to go to war with Iraq, now it's just time to come up with a pretext for justifying it. And it happened. A flimsy pretext was invented. In 2003, America declares war on Iraq. Now, that's two countries we're at war with. At that moment, I realize that it's no longer a matter of "IF" I'll go to war, but a matter of "WHEN" and "WHERE" I'll go to war. Reserve units are being activated all over the country. What does this mean for me and my education? My goal of making a game?

The Iraq War rolls around. I'm standing in line at the grocery store, and I see the cover of Time Magazine next to the check out stand. There is a picture of a bloodied marine being carried out of an LAV by two other marines. His face is covered in blood and dirt. I squint at the picture. It can't be... I know that guy! He's the dick guide I went to bootcamp with! Velasquez or something from Vancouver! What the hell is he doing out in Iraq? Is he okay? I saw that smug little fucker every day in boot camp, and now he's on the cover of time magazine. Wow. Life is strange. I wonder how many other people I knew from boot camp are out in Iraq right now getting shot up like him? It struck me that we are all someone and we can all make some difference in life.

In the summer of 2003, I volunteered to participate in a war gaming exercise on a US command ship off the coast of south korea. It's a joint exercise to simulate a response to an attack by the North Koreans. Details are classified, so I can't say much more. But, I did bring my computer skills to the table and it was noticed by high ranking officers. I went back home and I got a job as a junior network admin at a post dot com company at $10/hour. The company was nearly broke, but I did such a good job that they gave me a raise to $15/hour within the first two weeks. FINALLY, I have gotten my foot in the door of the IT industry! This is what I've been waiting for! Now, it's a matter of growing my skill set and becoming a professional. In December 2003, I got a phone call from an officer from my unit who worked with me on the command ship in korea. He was going out to Iraq as a part of a civil affairs unit. They needed a webmaster and I was the first person he thought of. He said I'd be worth my weight in gold. What do I do? I just got this new job doing IT, and now he wants me to come to Iraq with him? Fallujah, no less? A month or two ago, 40 Iraqi police officers were brutally murdered in Fallujah and the police headquarters was razed. It was one of the most dangerous cities in the country. And he wants me to go there of all places to build websites? I told him I'd need a day to think it over. I was on the fence. I eventually decided to go. My reasoning was that an opportunity like this happens only once in a while, but I can always come back and get my foot back in the door of the civilian IT industry. This was a chance for me to make a difference where it really matters. I was joining a civil affairs unit, and this is perfect for someone who has pacifist leanings and just wants to make the world a better place. If I can move the needle even a little bit, it's worth the sacrifice. So, in January I told my boss that I'm leaving the job and going to Iraq. He said I could have my job back when I return. I didn't enroll for winter quarter classes.

I was a Lance Corporal, which is the third lowest enlisted rank in the Marine Corps. I was 21 years old. I was on a flight to Kuwait, and then from there, we would spend two days driving a convoy to Fallujah. My truck had all of the ammunition in it, so it was the most dangerous truck to drive in the convoy. I had my M-16A2 rifle, an M-203 grenade launcher with six grenades, and an M-9 barretta strapped to my right thigh. I had a kevlar helmet, a flak jacket with SAPI plate inserts. I was probably the most heavily armed web developer in the whole world, going to the most dangerous city in the whole world : Fallujah. We were replacing the Army 82nd Airborne Division. Our base was a commandeered base previously occupied by Saddams Republican Guard, and it was about two miles from downtown Fallujah. You can see it today on google satellite maps if you look for it. The barracks room I slept in every night was a room formerly occupied by the republican guard. Every single evening, insurgents would shoot rockets and mortars at us from town, right around dinner time. You never forget the sound of incoming fire, as the sound of exploding mortars has a very distinct "ka-runch" type of explosion as you dive for cover. Unlike most people, I coped very well with this. I had played a LOT of battlefield 1942 and I was also an artillery fire directions control man, so I knew a TON about how to properly shoot indirect fire. These guys were just aiming in our general direction and hoping to get lucky. So, when rounds would land, I didn't give a fuck and I'd just keep doing whatever I was doing. If its my time to go, then it's my time to go and I can't do anything about it. Besides, you never hear the round that gets you anyways.

So, I spent the summer of 2004 sweating away in a tent outside of Fallujah, writing HTML and PHP code while people are shooting at me (I hand carried my personal desktop computer out to Iraq). Being a part of civil affairs, I spent my time writing a web based application which managed all of the reconstruction projects out in western Iraq. It was an INSANE crunch time. I wrote 20,000 lines of PHP code in three months, working 18 hours a day, 7 days a week, stopping only to eat and sleep. I felt that every minute I waste is a minute I'm cheating out of an Iraqi, impatiently waiting for life to get better. How many lives would be lost if I stopped working? I had no idea, so I wanted to make sure that nobody could attribute a death to my laziness. One thing I was not though, and that is incompetent. I built and launched this app from the ground up, and within 7 months, I had over a billion dollars worth of reconstruction projects being managed by my system. It was the achievement of a lifetime for me. Who else can say that? It was such a success, that it attracted interest in the US Embassy in the Baghdad green zone. I was requested to come over there and build a similar application to help them manage the flow of logistical supplies into the country, from all around the world, through all modes of transport, through all modes of entry, etc. It sounds more complicated than it is, because they really just gave me an excel spreadsheet and said that they'd like a web application built with some business logic behind it. I designed and built a database and then coded a CRUD interface and sprinkled some business logic with it. I did that in about three weeks, and had another billion dollars worth of goods flowing through it. Not bad for a 21 year old lance corporal, eh? One of the staff officers said that I was the man of the hour back at the pentagon, whatever that means. I'm still not sure if I really believe that. Anyways, one thing that DID happen is that our officer briefing General Conway had asked me to give the general a five minute brief on the projects I'd built. I was nervous as hell and not the best public speaker. So, I kinda rambled about my project for five minutes and asked him what he thought about it. He said it was very interesting and wanted the projects to keep going. Later on, one of his battle staff officers comes up to me and says, "That is the first time in five years that I have seen a Lance Corporal briefing a three star general. Well done!"

Then, my tour ended and I went home. I had earned $28,000 for my work. One day, I'm in a hot desert getting shot at, and the next day I'm back home in Seattle, and life is "normal" again. I came back to civilian life. It was surreal. I needed time and space. I couldn't live at home in my parents basement anymore (my pride wouldn't allow it), and they didn't really want me living with them anymore anyways, so I quickly found a new place to live and moved out. I got a lot more serious. I was a lot more jumpy. Loud noises made me think for a fraction of a moment that I was under attack. Especially slamming doors. I went to my old boss and told him my story and asked for my job back. Not only did I not get my job back, but the company was going bankrupt. So much for that. What now? I became very, very isolated and spent a lot of time in my room, avoiding room mates and either playing video games, doing homework, or watching anime and drinking tea. It became harder to relate to people, especially class mates. War had changed me a bit. I felt a bit depressed. I mean, one day you're on top of the world, at the pinnacle of your abilities, flourishing and doing real things to make the world a better place for people to live in, and the next day, you're just some random, nameless schmuck sitting in the back of a classroom trying to understand the double angle formula. I vowed to myself that what I accomplished in Iraq would not be the highest height I reached in life. I wasn't going to let myself be a "has been", that accomplishment was only going to be the first of many, greater things I end up doing in life. There's no resting on laurels for me. You either keep moving forward, or you wait to die.

When it comes to schooling, I had to retake a lot of classes. I had forgotten a lot about mathematics. I needed to retake my algorithms and data structures programming class. Going to war had set me back academically by about six months. A year and a half passes. Then the unit I went to war in Iraq with is going to war again. Those fuckers can't go to war without me, god damn it! So, I volunteer to join them on their deployment. This time, I decide to join ranks with the Information Management Office. I wanted to do more app building, more of the same stuff I did last time, and the IMO would be the best suited fit for me. Fortunately, my reputation preceded me and they heartily welcomed me with open arms. A few weeks later, I'm back in Fallujah. It was a familiar haunting ground for me now. It was like a second home I had returned to. The familiar "ka-runch" of incoming mortars welcomed me back to the war zone, as if it had missed me (technically, they always did which is why I'm still alive). Now, it was time to shine again. Oddly enough, I was STILL a lance corporal. I had never gotten promoted, regardless of what I had done. Why? Because my occupational specialty was locked out -- too many corporals in field artillery. I didn't even DO anything related to my MOS, so why did it matter? No meritorious promotions for me... I was turning into an old salty lance coolie. Again, I did great things. I pretty much ran the IMO shop. I oversaw the virtualization of our whole server room, and we moved 28 physical servers onto 4 servers running VMWare. This was back in 2006, when virtualization was still very new, so this was a lot of cutting edge stuff in unexplored territory. The server room was a beast to work in and I got to learn a LOT about disaster recovery. Backups man, those are your life raft. And just because your server is on an UPS doesn't mean it's not gonna go down when the power goes out. We had FOUR air conditioners running at full blast to keep the server room cool. Keep in mind, we're in a desert in Iraq. The walls of the server room are 12 inches thick and made of brick and plaster, but are hot to the touch, thanks to the summer sun beating down on us. Dust storms will come through every week or so in the summer, and you'll get a nice coat of reddish brown dust in your server room, thanks to the AC units. I hope you're blowing it off of the CPU heat sinks... If the power goes out, the AC stops, but the servers don't shut off thanks to UPS. What this means is that in less than 5 minutes, the server room is going to become a cozy 150F if you don't move to shut everything down gracefully, and then processors will overheat, possibly melt, and then you've got REAL problems on your hand. You can't just drive out to Fry's Electronics to pickup a new intel chip...

Anyways, I did that for a year. I remember coming home again. You get off the plane, board a white bus which takes you to Camp Pendleton, and all the families are there waiting for their loved ones to get off the bus. That is, if you had a family there in town. Me? I had nobody waiting, so I just got off the bus and quietly slinked away unnoticed to the barracks. I felt a little bad, but tried not to care. In a week, I'd be on another plane back to Seattle, ready to resume normal life. This time, I had $35,000 saved up in my bank account, ready to pay for more school. I was a bit pissed off that I had spent just as much time in a war zone as any active duty marine, but I didn't get anything for a GI bill. At most, I'd get maybe $100/month, which is enough to pay for books, but involves a monthly check-in and red tape to continue getting. Yet, I'd put in just as much time and sacrifice as any active duty marine. What gives?

Again, I had to retake classes. Particularly math classes. I sucked at math, but thanks to war and the habit of hard work, I finally had the necessary work habits to succeed. I was accepted to and transferred to the University of Washington and enrolled in their CSS program. It's computer science and software engineering rolled into one. I had gotten pretty good at programming by this point. I felt that I was mostly going through this academic program to prove to the world that I knew what I was doing, and the degree was just a formality check-the-box kind of thing. But, I was exposed to some really cool stuff which I had never been exposed to before, such as network programming (grid computing), logic circuits and hardware programming, ray tracers, and operating systems programming (night class taught by a windows kernel architect). I had also developed a strong love for philosophy. I loved it and wanted to minor in it, so I took a bunch of extra classes at the UW Seattle campus. My favorite branches were the philosophy of science, logic, and moral theory. I'm very interested in gaining deeper insights into the human condition. I mean, I've been to war. People have shot at me. War is a place where some people rise to great heights through heroic action and sacrifice, and others stoop to unfathomable lows with dehumanizing atrocities. Why is that? How can we all become better human beings who flourish into exemplary form? Or are we all the same, equally capable of both great goodness and great evil?

Fortunately, the University of Washington had a program for veterans where they offer a 50% tuition discount. All the war money I made, paid for my living expenses and tuition, but I still needed to take out a student loan to cover the costs. I loved my classes, and I quickly gained a reputation for going WAY overboard on projects. My goal was to push myself and the limits of my capabilities to their furthest extent. I believed that if you don't try your hardest and do your absolute best, then you can't possibly improve. Any feedback you get from professors would just be to improve in the areas you didn't push yourself in. True growth comes from pushing yourself to your limits and exploring new areas which are unfamiliar to you, and trying new things. That belief, coupled with my war experience, drove me bonkers. You want me to create a distributed file system? Okay, I'll reinvent the BitTorrent protocol because I'm concerned about disaster recovery and fault tolerance. You want me to create a simple bouncing ball game? Well, I'm going to give it thrusters and put in a parallax scrolling background too -- but it'll bounce as well. You want me to ray trace something interesting? Okay, I'm going to ray trace a rainbow and show you a scientifically accurate light spectrum by redefining a light source to be a composition of its excited chemical elements. Towards the end of my academic career, a fellow classmate asked me why I work so hard and go overboard with what I do. I couldn't really give him a straight answer at the time, but now I would say that a big part of it has to do with my personal history of being a programmer in a war zone and never wanting to be the weakest link responsible for the deaths of others. You sweat in peace time so that you don't bleed in war, and if you're not sweating, you're not trying hard enough. Little did I know at the time, that I would be returning to a war zone a few years later.

I finally graduated. It took me eight years to get a four year degree. However, when I graduated I felt the opposite of happiness. I felt a foreboding sense of doom and despair. What the hell am I going to do with my life now? There's no war to go back to, and no more classes to take, so what now? Every job I applied for on craigslist was either shit or I wasn't qualified for, and the few interviews I did get, I messed up. Who is gonna hire me?! I want to work in the game industry as a game programmer, but... why would anyone want to hire a programmer who has very little experience making games? I mean, I made a game in high school, and a game in university, but they're shitty games. There's nothing to really prove to a potential employer that I have what it takes to professionally make games, so why the hell would anyone care to hire me on? Nothing I did in Iraq is really relevant. So... I had a dwindling bank account and no job. I lived in complete isolation again, probably speaking to a live human being about once a week. Some days, I couldn't afford to eat for several days at a time so I went hungry. I could count every rib and my face was gaunt. "Why am I so lost?" I sometimes wondered to myself. "Why am I so bad?" My routine became very bad. Every day, my intention was to build a game in C# with XNA. Every day, I would start, and say, "Today is the day I really do it! The day I really work hard and make a game! ... but first, I need to... watch this youtube video, or play a couple rounds of starcraft 2, or check a couple things on facebook." and hours would slip by, and I would realize what happened, beat myself up over being such a lazy slacker, feel bad, give up, play some more, then go to sleep at 5am while cursing the morning birds for being awake at a sane hour. I could easily waste away like this for months. Many people do, and I did.

One day, I was rescued. A contractor friend called me up and offered me a job working for General Dynamics. Another contractor friend had told me back in Iraq that he's worked for many companies in the past, but GD is one of the best companies he's ever worked for. If I could get a job with GD... that would be the greatest thing that ever happened to me because it was a good company to work for. My foot would be in the door of the IT industry once again. They flew me out to Arizona for an interview. My resume was strong. The job was easy, I was vouched for, and my military experience was great. To my delight, I was hired and got offered $61,000 / year. FINALLY, I could start making some income to pay off those student loans! A year or so after I graduated, I finally had a job, worthy of a 'career'. It was an alright job, too! Every morning, I would have to wake up, drive an hour to the military base, do some work on computers, sometimes I'd get to travel to different parts of the country to assist units in their IT prep for a deployment to Afghanistan, and sometimes our contractors would do short six months stints in Afghanistan as well. Six months into the job, I was a rising star. You only have to show me something once, and I'm all over it. Being a programmer, one of my personal goals was to start writing a powershell script to fully automate the deployment of an enterprise server stack. I mostly got it working! Just push a button, come back 30 minutes later, and you've got a working domain controller, exchange server, webserver, etc. ready to go. Then, my program manager said I should go to Afghanistan because their knowledge management office needed a senior developer. So, I went. It was supposed to be for six months. I hated it in Afghanistan. I was used to getting shot at, so that was no big deal for me, but working 12 hours a day, 7 days a week, sitting in a corner, living out of a plywood shack, with little extra money to show for it, was very mundane. I didn't want to stay there any more than six months. But... one of the other contractors there was getting treated really nicely by his company. His manager would show up once a week and check in with him and see how he's doing. Meanwhile, I hadn't talked with anyone from my company in months. The corporation I worked for just saw me as a butt in a seat, keeping customers happy while making them money, doing who knows what. The US Army really liked my work and wanted to keep me if they could. So, I negotiated a position at the other company and got a really nice pay raise and committed myself to working in Afghanistan for another 12 months. I'd be in Afghanistan for a total of 18 months, working 12 hour days, 7 days / week, overseeing three different unit rotations. Guess what "burn out" is? It's being worked to the point of uselessness. That happened to me. Again, I started to feel depressed because I wasn't able to work up to snuff anymore. Suddenly, I became very passionate about managing burn out. I absolutely had to quit my job and let myself recover. But now, my bank account had been healthily replenished and I could afford to! If I lived very frugally, I could probably live for ten years without getting another job. If I wanted to, I could screw around and play games all day, every day. But... is that what I *really* want out of life? To waste away and be a "has been"?

Here's an interesting thought experiment I put myself through: Imagine you have a billion dollars in your bank account. Not a million, but a billion. It's so much money, that any material purchases you might have could be done with a couple million dollars at most. And now, you'd still have $995 million dollars left. Money will never, ever be a problem or a motivating factor for you again. Now, what do you do with the rest of your life? How do you spend your days? Do you take up painting? Sitting in a lawn chair watching the grass grow while drinking martinis? Sitting on a yacht? Travelling the world? Setting up charities for some philanthropic endeavor?

My answer was that I'd like to start and run a company which makes video games. Nobody will hire me, so I'll hire myself. It's been a lifelong passion that I've worked towards for well over a decade. I've put my life at risk to get to where I am. Making games is more than just a profession and a job for me, it's a lifelong dream and a creative outlet which lets me share stories with the world and worlds around the rich imagination I have. I'm a story teller (albeit, probably not too good, but that comes with practice). This company, the culture, and the games, are a manifestation of who I am. This is what I would do if I had a billion dollars.

So, the follow up question is this: You don't have a billion dollars, but you now know what you'd do if you had a billion dollars. Your dream doesn't cost a billion dollars, so the question is this: what are you doing today to take steps towards making your dream a reality? The wrong answer is always "Nothing", or some flimsy excuse.

After I got back from Afghanistan, I took a one month break. Then I started working on a game (you can read about my progress, mistakes, highs and lows, in prior journal entries). Every day, I got up to take steps towards making my dream a reality. Every day, I would commit myself to making strong progress. Every day I slack, people aren't dying, but I am cheating and robbing myself of my future, and I should never accept that, and I should never, ever, ever give up. There will be days that are dark and low, and there will be days when not much seems to get done, and you can feel bad about that, but so long as you start each day fresh and keep putting one foot in front of the other and making steady progress, you are taking the vital steps it takes to make your dream a reality, whether its making games or saving the world.

So, last Monday was the launch of my first ever, commercially accessible video game. I fucking did it. I really did. It took me twenty years to do it, from that fourteen year old kid with a dream to the thirty four year old me of today writing this. I went through a lot to get here. If fourteen year old me could have known that later on in life he'd be building a virtual reality game about magic and wizards, and having even a tiny hand in shaping the direction of this industry, he never would have believed it and probably would have been overwhelmed by what it would take.

But... this doesn't mark the end of anything by any stretch of the imagination, this is just the very beginning. There's no time to rest on laurels and get complacent. Complacency kills. There's a whole industry waiting to be shaped, a whole suite of fantastic games waiting for the brush strokes of a creator, a whole cadre of future team mates waiting to be hired and given a chance at the same dreams, a whole generation of future gamers waiting to be inspired as I was, and humanity as a whole hungers for enlightenment through the insight of arts and entertainment. It's time to keep going, pushing harder than ever.

In the immediate future, my focus will be to continue building out the core content and functionality of my game, to add in hardware support for the Oculus Rift and touch controllers, to update the support of the Leap Motion hardware device, and to localize the game for international markets and place it on multiple online store fronts. That means there is lots of work to do, and the hard part is just beginning. I'm sure you'll hear about this stuff in future journal posts. Before you can thrive, you have to survive, and in order to survive, you have to make money to be self-sustaining. If you can be self-sustaining, you can work to improve and develop your product and business, and then its just a matter of hard work and time to become a flourishing business. I can do it. I know it. And I will. Just watch.

For now, thank you everyone for reading my journal and your support. I didn't get here by myself, I got here through the help, support and guidance of the communities I'm a part of.


It's 10:15PM on Monday Night. I just launched Spellbound on Steam for the HTC Vive VR headset. This is not only the first game I've ever launched, it's a VR game. Pure craziness. I'm feeling a bit emotional about it right now because it marks the accomplishment of a lifelong dream, which has been something I've wanted to do for more than half my life. 18 years later, and I did it. Wow. Even if I get no sales or a ton of bad reviews, I'm kind of okay with that. I now have what it takes. I'm in the industry. I'm a game developer... **tears**

Anyways, it's time to go drink a beer in celebration tonight, and then get to work tomorrow fixing an expected slew of bugs tomorrow. Here's the link for anyone that's interested:


I'll have to write a longer thought out reflection post later.


Alright. Spellbound is now up on steam. The release date is slated for September 5th, 2016. The game is being released in Early Access.

I'm nervous. The worst thing that could happen is that I release the game, get a ton of bad reviews, angry customers, and I make about 20 sales, which might as well be none. The second worst thing that could happen is that a bunch of people buy the game and then have no idea what to do or how to play it. Or, people buy the game, realize they paid $20 for 20 minutes of content, and then ask for a refund. They would probably get it too, because steam requires refunds to be within 2 hours of game play or two weeks of ownership. Of course, there's a lot more content coming, and I can tell people that, but it won't stop people from asking for a refund. Then, there are bugs and interfaces which could be smoothed out. The bottom line is that I'm releasing a game which I know isn't 100% perfect, and that makes me nervous. I know that if I had infinite money, I'd continue working on the game for at least another 6 months before releasing. Maybe I'd work on it forever and never release?

The other fear I had was my price point. Initially, I was planning on selling the game for $25. I justified the price based on the high quality of the content, the polished game play, and the promise of hours of additional content, and the novelty of VR. I balked. I looked at the price point of comparative games, their level of production quality, length of game play, etc. and decided to drop my price by $5. I can always raise the price later as the value proposition increases, right? Maybe strategically, it's more important to get more sales and less money in order to get more players acquainted with the game, so that later on I can sell DLC to a wider audience? Nobody buys DLC for a game they don't own.

I didn't get into PAX this year. I submitted an application to get into the indie mega booth way back in April. I didn't hear back from them until mid august, and they rejected my application. I felt disappointed. I asked a fellow indie if he got in, and he was rejected as well. He's got a high quality game, so I know it wasn't just me. What's annoying is that I got rejected a few weeks before the event even happens, so if I had been making plans to be running a booth, I would have had to do everything very last minute. That's never ideal. I think next year, I'll get my own booth or partner with a bigger company. However, it's kind of a mixed blessing in disguise. I was very worried about the logistics and manning of the booth. If I have a room scale virtual reality game and I only have one workstation, and a play session takes about 10-15 minutes, then I'd be cycling about 4-6 people through my game per hour. If PAX attendees see I have a VR booth, they'd line up very quickly and people could be standing in line for hours just waiting to play, and that would suck for them. I also have no money, so I can't hire people to help me with my booth, so I'd pretty much be tied to one area for 12 hours straight, for 4 days. Getting food would be very difficult, and making sure my computer doesn't walk away would be challenging. And I wouldn't be able to actually attend PAX and see what other companies and studios have been working on. Anyways, my dear girlfriend has been able to secure three PAX tickets for Friday, so I can just be a carefree attendee.

On a slightly different topic, my former artist is unemployeed and I still owe him about $9,000 which I don't have, and he's pressuring me for it. I'm also behind on my office rent by 3 months. My $20 / month photoshop subscription has lapsed. My company website is also down due to lack of payment. The bank refused to give me a line of credit due to lack of credit history (I have never had a credit card). Once I start making sales (which I expect to be very modest), I'll pay everyone as I can, and then buy a new pair of shoes, jeans, and clean socks. Then, I will continue financing the development of my game. One thing I will do differently: avoid hiring full time employees. Contract that work out. The appropriate time to hire a full time employee is when you have revenue and you can't do the work yourself.

In a totally different topic: My girlfriend and I have been running our bed and breakfast near Mt. Rainier for 3 months now and it has been prospering. Every weekend, we've been booked solid. I kind of expect this for the summer season. We've got 240 acres of forested property which has been used as a farm for 120 years. We're going with a combined theme of farm tourism and an outdoor camping experience. We have 3 pigs, 3 goats, a baby cow, a missing peacock, and 10 horses (several which are rescues). We make money by renting out rooms & teepees, and by offering horse trail rides for $49/hour per person. Last weekend I had to go work the farm and do a bunch of very different jobs: supervising hired help; catching & saddling horses; repairing the farm house; cleaning rooms; checking in guests; taking care of animals; fixing fences; catching escaped animals; giving trail rides; building campfires; etc. By the end of the weekend, I was absolutely tired. My back was sore from lifting saddles and working. My hands were thrashed, blistered and bloody. My nose was very bruised from a horse smashing its head into it. My face is browned from the sunshine. But, I did get a moment of great fun when I took one of the horses off the beaten path and went exploring around the property. I even trotted it through the creek :) The first night at 1:15am, there was a coyote making all sorts of noise near the horses and it wouldn't shut up. So, I had to get out of bed, put my clothes back on, and walk down the dirt road to find the coyote. By the time I got halfway down the road, it disappeared and I never heard it again. The only light I got was from the thousands of stars, so it was very dark. The odd thing about that farm is how cold it gets in the summer nights. The temperature drops below 45F during the night, and goes above 80F during the day. Just to show off, here's a couple cool camera phone pics I took:

Anyways, one thing that kind of struck me is that I draw on a lot of these diverse life experiences to design my games.

Ninja Edit / Update: I'm excited to announce that someone created spellbounds first youtube "let's play" video! Check it out here:



Lots of exciting news for this month!

HTC Meeting:
Last week I walked down to the HTC office for North America and tried to get a meeting with their VR people so that I could give them a demo of my game. On Monday, I had that meeting and it went very well.

Before going to the meeting, I sat down and had some coffee with my girlfriend and we talked about some possibilities. She is also a marketer (one of the best! <3) and has the staff and resources to promote major products, primarily through "direct response" and events. She has an international team of people who can put on live demonstrations in large retailers such as Costco, Sears, Sams Club, Walmart, etc. has the connections, and has a solid track record. Virtual Reality is new and exciting, and she's tried it out (of course!) and wants to send her sales teams around the world and sell it. Currently, I'm guessing there are about 50,000 HTC Vive units out in the wild and they are selling very well. What this means for me is that there are 50,000 potential customers who would be capable of playing my game when it's ready. In order for me to increase my sales, I need to increase the size of my market. I sincerely believe that if you give people a live demo of the HTC Vive VR headset and they play my game, they will want to buy both the hardware and my content. The amount of effort to pitch the product will be much lower because the products pretty much sell themselves. Combine that with masterful salesmen, and you're probably looking at easily moving 100,000 units. There are a few things I might worry about: Would HTC's sourcing be able to keep up with the demand? Could they build 100k VR headsets? From the consumer standpoint, does the average consumer have a computer capable of playing high quality VR content? Grandma's computer just isn't going to cut it, so the sales teams will have to make sure that customers have the necessary hardware to run the VR device as its meant to be run. That creates an interesting partnership opportunity with computer manufacturers as well -- we could create a complete package where consumers purchase a high end computer, VR HMD, and a content bundle which includes my game and a few other select VR games. There's a huge opportunity to bring VR to the masses and I want to be one of the people who helps make that happen. Anyways, I'm probably getting ahead of myself. The key thing to note is that as just a programmer / VR content producer, I play a small but important piece in the puzzle of the whole picture and I need to make sure that what I'm building is perfectly in alignment with the rest of the pieces. I can't let myself have tunnel vision on just code and design problems, I need to make sure that what I'm creating is aligned with the visions and objectives of all my potential partners, that it's something consumers love and want, and everyone who works with me, wins and succeeds.

Anyways, I met with the senior producer at HTC and showed him my VR game this morning. He loved it. I had this terrible bug which caused the AI in the packaged build to not move, although it works perfectly in my preview builds. I was in the office until 3am trying to fix it, but couldn't get it fixed in time. Despite that, I showed HTC my VR game. The locomotion system I came up with is unique and they said that they had never seen anything like it before and were surprised by how well it worked and were surprised by the lack of motion sickness. The spell casting system felt perfect as well and they loved it. This is really encouraging. A lot of indies bring them stuff which isn't very good and the quality bar is too low to get excited about. I hope I'm the exception. I still have a lot of work to do on my game to get it to be perfect, but I'm totally on the right track despite the bugs and need for polish. They said that their biggest markets are going to be Taiwan and China, which isn't surprising since HTC is a Taiwanese company, so what that means for me is that I absolutely need to make sure that my game is localized for those markets. One interesting localization bit about China is that their authorities don't want to see red blood... so what do you do? Make it green instead!

I fixed the path finding bug for my creature AI in the packaged build. It took almost two days because it costs about 30 minutes to package and test. After I got that taken care of, I pretty much had a decently playable build of Spellbound. It's time to put this thing up on Steam and start getting people to play it and give me feedback! So, that's what I've been doing the rest of this week. I have *never* launched a game before. I have never done anything on the backend side of steam. So, there was a lot of "uhm... am I doing this right?". The good news is that I got my first build up! I downloaded it, played it, and it works! I can't stress how big of a milestone this is for me and this project -- what this means is that people around the world will soon be able to play my game, give me feedback, and I can push out updates. I have finally created a closed iteration loop on product development and customer feedback. Check this out!!


Before I can officially launch, I'm going to have to create a polished game play video which demonstrates what it's like to play this game in VR. That's going to be a bit tough. I'm going to try to create a "mixed reality" video with green screens. One interesting challenge is that the player is represented by a full body avatar within the game, so when I composite the game into the video, how will that work with the avatar? Would it be interesting if the player wore an entirely green outfit so that it gets masked out and all you see is their skin? Then it would look like the player is actually wearing the wizard clothing... but would that be a problem for "representational purposes" for actual game play? I'm not sure.

Anyways, there is going to be a TON of work remaining to do in regards to bug fixing, polish, voice acting, and publicity, marketing, etc. I certainly won't be able to rest on any laurels for at least nine more months, or however long it takes me to finish building the rest of the content while this game is in early access. It'll be a relief to start getting some income though. I've been struggling financially. I still owe my former artist something like $8,000. I owe my office space $1,600; My webhost is about to shut down my websites for lack of payment. The "Employee Security Department" in my state is charging me something like $500 for unemployment insurance and fines. I need to be able to pay my share for food and rent. I have zero dollars in the bank, and probably about fifty cents in change in my pockets. If not for the financial support of my girlfriend, I would have had to go to the bank and try to get a loan, or lay off my artist a few months early. This has been healthy for me though. 100% of my focus has been "shut up and ship!" and "don't release garbage!". I really hope that I can at least sell enough copies of my game to pay all of my current debts and have enough to get by on a monthly basis. If I can become financially self-sustained, it means I can continue producing VR content. If I can't, then the reality is that I'm going to have to give it up and do my best to go get a job elsewhere, which would be a crushing disappointment. I'm literally a hungry entrepreneur and starving artist, and I'm finding there's nothing glorious about it... I have an optimistic feeling though that the lack of money will only be a temporary problem and a very good teaching moment for me. My new mantra is "gotta survive before you can thrive!"

Anyways, I have set a public release date for July 8th, 2016 for the Early Access release of Spellbound. I'm afraid that date is going to be very slippery due to the lack of a good game play video. Before I can release, it also has to pass a validation check from Valve. But if I do launch on the 8th, it's going to be worth celebrating. I won't get any income or revenue for at least two months after launching though, so I'll have to continue to scrape by for a while. When and if I actually launch publicly, I'll make a special post about it here.

note: Gamedev.net is being a bit finicky tonight.


I created a 10 minute game play video of Spellbound this afternoon and thought I'd share with everyone. This is played in a room scale environment on the HTC Vive and features a locomotion system I invented. Have a look :)




I think for this month, I'm going to do something different and spend less time chatting about backend details and more time showing off some of my work in progress screen shots. Enjoy!

Sunset. It probably won't make the final cut, but I like the colors and tone this creates.

Water Puzzle: Players have a room with a chasm of water which needs to be crossed. At the far end is a wraith lobbing death at you.

Night in the dark forest: This is the first thing you see in the prelude.

Boss Arena: This is the prelude boss monster arena. He's the protector for the book at the center.

Boss Arena 2: This is the same boss monster arena, viewed from a different angle.

All of this is a 'work in progress' and doesn't represent the final product. I still have to add in decorative bits and give these environments more of a 'lived in' look. They look too sanitary right now.

I'll launch this on steam early access soon. I'll make an announcement here when I do.


April Update

I'm feeling depressed. This is what happens when you run out of money and your project still demands more from you. This is a hard entry to write because there is so much struggle right now.

Last month I ran out of money. I had less than $1,000 in my bank account, and my monthly costs to stay in business are around $8,000. The expenses are as follows:
$4,000 - artist wages (+/- 100 depending on the days in month)
$800 - office rent ($400 / desk)
$2,500 - my living expenses (which are my wages paid to self)
$300 - misc bills

In order to pay the bills, I've been relying on my girlfriend to help with the finances. We've been getting income from watching dogs in my apartment. This... has been really annoying and rough. At one point, we had twelve dogs in there. We've been watching dogs for around 10 months in her old apartment, but in order to save money, we moved in together, so the dogs now stay in my apartment. Each dog brings in about $45 per day, so with 12 dogs, we were making about $540 / day before taxes. Let me tell you something about dogs... they bark. They shit. They have to be taken out to go poop and pee every few hours, or they will relieve themselves inside... which happens a lot anyways. They're hairy mongrel beasts which shed everywhere. They get into everything, especially garbage. They damage walls and claw at doors. They chew things up and shred furniture. If they're puppies, they have super high energy. The absolute WORST dogs to watch are black labs which are 1-3 years old. The barking and whining not only keeps me awake at 4am, but it also bothers the neighbors. Just a few days ago, I got a 10 day notice on my door from the apartment manager saying that we're not allowed to have dogs anymore or run a business from there, and if we continue to do so, we'll get evicted. Great.

My girlfriend also operates a bed and breakfast ranch an hour outside of Seattle. We've been renting out 60 acres near a river for almost a year. We began in August 2015, which was kind of bad timing in terms of seasons. So, my girlfriend wanted to staff the ranch with inn keepers to take care of the daily operations of it and she would do the management of it. Her friend from Portland was getting evicted and needed help, so we offered them a place to stay for free and a job with a revenue share agreement. I was completely against the idea because I didn't like her friend and her family. This was a family with two children who were about as skeezy as you get. They were a pair of Portland hippie tweakers / druggies. So, they moved all of their junk from Portland to the ranch house an hour east of Seattle, nestled in the cascade mountain range. We started running three separate operations simultaneously. First, was the bed and breakfast. We have 5 different bedrooms which are fully furnished in a large, beautiful ranch style house. Second, we host dogs as a part of the dog sitting side business. The dogs can run around in the fenced in area and play all day. Third, my girlfriend is passionate about horses and operates a horse rescue and trail riding business. I'm against this because of the financial burden, but it doesn't seem to matter. As I predicted, the inn keepers were terrible. They did nothing but complain and bicker and were a nightmare to deal with. A few months in, we discovered that they were doing meth and there were several incidences of domestic violence and knife stand offs. I immediately came in and fired them on the spot, but... you can't just throw a family out on the spot. This was in early November, so winter was setting in. They begged for a second chance, and Christmas was right around the corner, so I relented and gave them a probationary period. We had no staff and needed to have someone running the place. They both complained that they were broke and over worked, and despite the house being a dream property, they said it was no place to raise a family. Their biggest gripe was the amount of work they were both putting in to care for dogs and take care of guests, saying they were putting in 14 hour days, 7 days per week. Based on other accounts from temp workers, they were actually spending 12 hours per day fighting and arguing with each other, and maybe two hours working. It would literally take two hours to argue about who would take out the trash, which is a two minute job. Everyone looked to me to be the stoic, respected leader to arbitrate these petty squabbles, but I wanted as little to do with this as possible. I just don't have the time or the interest to get involved, I've got a game to build. Yet, I had to step in and be the force to be reckoned with. Immediately after Christmas, there were more incidents and reports of meth and pills being used, so I finally stepped in and fired them and meant it this time. A day later, I had a moving truck ready for them, paid them $4,000 for their time (after much arguing), and sent them back to Portland. They can go back to working for Walmart, collecting welfare, and living off of food stamps. As a consequence of working at our ranch, we received many bad reviews which hurt the business. At the same time, we found a young girl to replace these two nut jobs. I interviewed her and immediately liked her and pretty much hired her on the spot. The bar was set super low: Do you do meth? do you argue all day? do you hate working? no, no, and no? great! you're hired! really though, she was presentable to customers, looked capable and willing, and was eager to get started. She was living with her mother but the mothers landlord said she couldn't stay there, so we invited her to live at the ranch. She has been a dream employee. We both love her. Me and my girlfriend want to take care of her like she's family.

However, the neighbors of the ranch have complained because they have nothing else to do. They are perpetual complainers who find fault with anything and anyone. They run a diary farm with something like a hundred cattle. From what we can tell, the source of the ire is from the wife. She makes life miserable for her husband and adult son, and they take it out on everyone else. Regardless, they put in a complaint with the county and said that our horses are starving, miserable, and uncared for. And the dog business is "illegal". More annoyance. My girlfriend went and spoke with animal control, who came and inspected the ranch. Seeing as how we were running a horse rescue, saving abused and neglected horses from being sent to a slaughterhouse and being turned into dog food, we would take in horses which were severely neglected and unhealthy. The worst horse was this eighteen year old white horse with a liver problem. You could literally count every one of his ribs when he came in. We've since nursed him back to health and he's made a full recovery. We have seven horses which are being taken care of and used for trail rides (to pay for their care taking). The dog business was a different story. We discovered that the county is full of red tape and bureaucrats. If the dogs even set foot on the porch, we have to submit a "certificate of occupancy" and that requires the fire Marshall to certify the building. And for some technicality, they weren't going to do this. So, we looked into building dog houses. But, that too requires a separate permit and each shelter needs to be certified by the fire marshall, and would need sprinkler systems and fire alarms... in dog houses... located in a yard... At the same time, we discovered that the zoning for the property was an agricultural zoning, so running a commercial enterprise was not in compliance with the zoning laws. And you can't just easily rezone something. If a county rezones an area, it is legally obligated to provide zone specific services for that zone, such as paved roads, plumbing, sewage, etc. which costs the county a lot of money. So, if you want to watch a few dogs on a ranch, the county doesn't want to let you do that because they would have to pave a road. How does any of this make any sense?! Dogs don't care if a road is paved! They just want to run in the grass and play all day!

On top of that, the land is in a flood zone. In the winter time, the river floods and two thirds of the sixty acres is under water. The land is also a designated wetlands. And our landlord for the ranch runs an asphalt and paving company and stores his equipment in a barn. There are a lot of legal and permit based problems, and what he's doing is probably illegal, so he absolutely doesn't want any county officials nosing around his property, lest he gets discovered. So, he hates that we have horses and dogs on in an agriculturally zoned property. Last week, he decided that he doesn't want to renew our lease, which expires in August. Probably due to the recent attention by county officials. So, that means we have four months to find another suitable ranch. We have to find a place to store seven horses and a fenced in enclosure for dogs, and find enough space for nice trail rides and a house nice enough to host guests from around the world. In four months. It's nuts. It's a huge source of new stress. How are we going to find a good home for these horses, with everything we need? Here's a lesson I learned from this: Do NOT rent land from someone and try to operate a business off of it. Your business operations are dependent on you having a place to operate your business from. If you're renting with a one year lease, you're at the mercy of your landlord. If you invest any money, time or effort into developing your business, it can legally be ripped away from you by simply not renewing the lease. And, if your landlord is a two faced liar, you have no legal recourse. ANY promises made should be written down, signed and dated. Don't do ANYTHING without a written agreement which can be used in court. A paper trail is your best friend. I can't stress enough how important it is to identify potential risks and look at the mitigation steps and their feasibility. It's much better to perform a risk analysis before making any sort of commitment because it is much easier to turn back and say "no thanks".

A few weeks ago, I went on a trail ride with one of the horses. We went out into the woods and along the river. The whole time, I could tell that the horse just wanted to stretch its legs out and run. We got to a large field, and I gave the horse a light kick. That was all the 'go ahead' it needed and I could feel the surge of pure joy as it just bolted at a full run. Normally when you sit in a saddle, you're sitting nice and comfortable. When the horse is running as fast as it was, you are bouncing out of the saddle with each gallop. I had to stand in the stirrups and lean forward in order to not fall off. I'm generally a pretty reserved and stoic person, but I couldn't help but grin from ear to ear. I've only ridden a horse about six times in my life and never been on top of a beast running at 35mph, so it was one of the most exhilarating and scary experiences I've done lately. I still want to do it again.

I was talking about the horse trail rides with my girlfriend. We realize that riding horses is kinda fun, but we need a bigger "draw" to make it compelling for people. The first iteration of our idea was to not offer "horse" rides, but to offer "unicorn" rides. Anyone can say they road a horse, but who can say they rode a unicorn? That's something interesting to talk about, right? I thought about it for a bit longer and thought it was a bit gimmicky. Then I had an epiphany. I'm a virtual reality game developer. I create experiences. Why not combine virtual reality with horse riding? What if we could develop an augmented reality horse riding experience? You sit on the back of a horse, go on a trail ride through the forest, and you're wearing AR goggles. When you look at your horse, you see a unicorn. When you look around the forest, you see mythical forest creatures such as fairies, elves, dryads, and nymphs. Some of them may come and interact with you as you ride through the forest. When you look at the foliage, you can identify the plant and read about it and learn about nature. If we do it right, it can be the most magical experience in the world. It would be something that people from around the world would want to come and try, and it would be an experience of a life time. I'm super inspired by this idea, but realistically, I can't make this happen any time soon so I have to keep it on the back burner. I need to finish my current VR game and build up my team and talent before we tackle anything bigger and harder. If we got investment or sponsorship, we could make this happen faster, but that's unlikely.

Last weekend, my girlfriend and I went to Astoria, Oregon to work a booth at the crab and wine festival. We've been going to fairs and selling these hair combs with beads. This was probably my tenth fair. I can say that manning a booth and selling this product has been a huge, huge learning experience for me and reinforced the importance of sales. I was working as the "closer", which means I take everyone's money and try to upsell them on a better offer. "You're getting two hair clips for $20? For another ten dollars, you could get two more! Would you like to do that?" I suck at upselling, but I have no problem taking and counting money from people. My girlfriend is the sales opener, and can sell product to about 80% of people who stop by. My conversion rate is about 5%. Yes, I really suck at sales. I'd love to be better at it. I learned that to be a good sales person, you are pretty much acting for people. You put on a persona, you entertain, you woo, you draw people in, you get them interested, you show them your product and tell them how amazing it is, all while being as truthful as you can, you make them want it, then you take their money and give it to them. This is what you do in sales. I realized it doesn't matter whether you're selling hair clips, bottle openers, or video games, selling is a universal skill which works the same for every product but requires a knack for understanding people. I'm a programmer, and traditionally, programmers and sales people don't get along (which is stupid!). But damn, what if you got the sales people and programmers to have a super cozy relationship to build exactly what people need and want? How can I use the principles of sales to maximize the selling potential of my games? If my girlfriend can sell product to 80% of the people she exposes it to, how can I get the same sales rates and how do I maximize the exposure of my pitch? Is there a systematic way to do this on a massive scale? Is the "social media" angle right, or are there better channels?

Overall though, we didn't do very well. While we sold around $1,500 in hair clips, our profits were eaten up by the costs. $675 for a booth fee. $300 for lodging. $150 for food. $80 for gas. $300 for product costs. We barely broke even, despite selling so much. Was it worth it? Could I have been more productive if I spent the weekend working on my game instead? I'm not sure. But, that does get me thinking a bit about fairs, festivals, and events in general. Translate this to the game industry and think about PAX, E3 and CES or any other game related expo. Running a booth costs money. Lots of money. Somehow, you have to get your money back, or else you lose money. And, if you keep losing money without making it back... well, good luck staying in business. That means you need to think very carefully about where and why you are setting up a booth and what you're trying to get out of it. Are you trying to do marketing and create brand awareness? Are you trying to get press coverage? Get player feedback on a game prototype? Woo possible investors? Make a name for yourself in the industry? Whatever it is, at the end of the day it has to translate into increasing your bank account. When the sales don't happen immediately after a pitch, it's hard to measure the effectiveness of your effort. I suspect that 95% of the time, people will completely forget about your product the moment they walk away. Yay, 5% sales rate, just like with me and the hair clips. A battle is won in the planning phase, so if this is a risk I anticipate, then I need to plan for it and account for it. Remember the ranch fiasco I wrote about above? If we are going to run a booth at a gaming expo, we want to at least break even with the costs of operating the booth by coming up with a plan to do so and somehow measure the effectiveness of it. Plan, plan, plan, then plan some more. While battles are all chaotic and plans quickly fall apart, it's better to enter into battle with a plan than no plan at all. At least you know what your strategic objectives are and you can loosely achieve them and recognize the moments of opportunity and seize them.

This summer, I plan to show our game at PAX Prime. Probably at the indie mega booth, with whatever money I can scrape together with my girlfriend by selling hair clips. The sales experiences I've had with hair clips helps to think about how I want to sell my own product during PAX. The question is, how do you get people to come and see your booth, get excited about your product, and buy it? Obviously, the longer the time period between sales pitch and purchase, the lower the chances are of getting a purchase. I'd rather do "buy it right now!" vs. "hey, go home and remember to buy it tonight or next week". How do you do that with digital purchases? How does that work with VR? What if your product isn't available for purchase? I have no idea.

Anyways, finances are going to be very tough for a while. I can't have dogs in my apartment (which is a relief), our ranch lease is not being renewed in three months, my game isn't ready for sale yet. From the comments other people left in my last post, I think I'm going to reconsider doing early access for our game and will aim to have an early access version of the game online. It's the beginning of May. I think I can have a pretty playable version of the game available for purchase by the end of May. If I put my game up by May 30th, I can get paid by the end of July, which is two months later. If I wait until June 1st, I get paid at the end of August instead. Jesus, is this okay?! What if game sales absolutely suck? What if I only sell 100 copies? What if nobody wants to be an investor? What if no bank wants to give me a business loan? What if nothing works out? Fuck... I have to believe in myself, that's all I got. If I don't believe in myself, nobody else will either. I have to work hard. I have to make this work. Nobody else is going to do this. If I give up... well, then my fate is sealed and nobody cares about the "coulda-shoulda-woulda" types of people. If I give up, there is no future, no great company or great product. I can't rob the future of my contributions to it by giving up today.

My artist is planning on quitting now that he's not getting paid. That's a disappointment to me. I don't know if that's good or bad. He hasn't been coming to work for almost a week now. I've been thinking about this quite a bit lately. We're a two person team. I've been a bad boss because I'm not acting like a boss. Early on, I decided to take the "Valve" approach to management where I don't manage at all and just trust that people work hard and diligently. I've learned that it doesn't work very well with everyone. My artist likes to chat and hang out with other freelancers in the office for an hour or so every day. I don't like this. The fact that I rarely come down on him for it is proof that I'm a bad boss. I just want to say, "why the fuck aren't you working right now? I'm not paying you to shoot the shit with people." It needs to be said, but if I say that, then I'm a mean boss, but I suppose I have to be a mean boss or else people will take advantage of me. God damn, I just want to write code and make games with people, not babysit them. Anyways, my artist is actively looking for work elsewhere now. The downside to losing him is that I lose out on the investment of time and nurturing of his talent over two years. But, is that an assumption I'm making to justify in retaining him as an employee? It seems that an artist is somewhat of a fungible asset, where I can replace an artist with another, so long as they're decent and maintain the art style/direction. I was looking on the unreal asset store and it has really filled out lately. There are LOTS of high quality art assets I can purchase. I had my artist create and animate a skeleton for me. That took him about two weeks. If I pay him $24/hour and he worked 80 hours to create a skeleton, then I paid 80 * 24 = $1,920 for the skeleton model. I found a skeleton as a part of a fantasy character package online for $39.99. Wow, I paid so much more for a skeleton than I should have!! So, I've wasted a lot of money I didn't have to waste. To be fair to myself though, the art asset wasn't available on the asset store when I asked him to model it, and the requirements I had are a bit unique. But anyways, the point is that in the practical sense, even if I purchase a $100 asset package and can only use one or two assets from it, That is equivalent to four artist hours, which would be a minimum of what it takes to produce those same assets anyways, so spending $100 is much cheaper than having an employee. My girlfriend tells me that I should contract out any unique art requirements as well, so... yeah, I'm dumb and a bad boss. If my artist does quit however, my production costs sink from $6,000 per month to about $400/month, and that is equal to selling 20 hair clips, which can be done in about an hour at a decent fair. That would mean that operating my business would become very sustainable because my operating costs are so low. However, I would still have to spend money on things like voice actors, contracted talent, and miscellaneous expenses such as booth fees and asset purchases. When I explained this to my girlfriend, she said "Now you're thinking lean!".

So, I have to reconcile with the fact that in all likelihood, my artist is going to quit. That's going to suck and will be a bit of a blow to the project and my morale, but I have to bounce back and keep going. Nothing but a good attitude and positive thinking can help with this. I tend to seek the silver lining in everything and look for the opportunities in even the worst situations. It makes things a lot more palatable and, rather than wallowing in woe about past mistakes, I can look forward to the exciting opportunities which lie ahead and keep charging forward. So, my artist quits. Bummer. What's the positive side of this? My costs drop to nearly nothing. Even though I lose out on his developed skill set, I also have to recognize that *I* am the most irreplaceable person on this project. The project can go on without him, but not without me, and I'm not abandoning the project. Ever. So long as I'm working on this project and working hard on it every day, it will eventually get done. I am the one who moves this project forward. If it eventually starts to become profitable, I can hire more people to join my team and together we can make this game even better for our customers. I've always thought that it was really important to develop the skillset and talent of the team, but recognizing that the talent of an artist is somewhat fungible is important. When it comes to VR, the talent which is much harder to replace and more worthy of development & investment is the designer & programmers talent. Going forward, if I had to hire a new employee / partner, I'd bring on someone with strong programming skills with a keen sense for design. We can just shop out the art requirements to the market place or contractors. When the art requirements start becoming too unique and we're contracting too much out, it might be worth looking at hiring a full time artist.

One last thought -- While I was eating dinner in Astoria, I had an epiphany on the future of what I want for my company. This is influenced by my experiences with running the ranch as well as running my game company. The critical question to think about is how you look at and see the people who are working for you. I see people who are making sacrifices to help build our dream. To build something which we want to do for the rest of our lives, to do something which we enjoy. It's as much their dream as it is ours, right? I think of every employee as a person under my personal care, who I have to do my best to take care of as I would a family member. In a way, a company should be like a second family. Losing your job should feel horrible, like getting a divorce, if your company is doing business right. And firing someone should not be taken lightly, with all things considered. These days, I think companies expect loyalty out of their employees, but companies are not willing to show loyalty to their employees. As a result, employees are happy to hop from job to job and companies are happy to churn and burn through hundreds of employees per month. Nobody wins. If you think of a company as an institution of stability and providing for its members, then how can you have stability without a stable membership? You build stable, long lasting companies by treating employees right and creating an environment which they would want to spend 20-30 years at as an employee. You don't look towards profits as the end goal, you look at creating a flourishing company as the end goal and the profits are a means to that end. Profit would just be a natural side effect of running a business institution properly. I think... investors are going to have a problem with this view, especially if they're looking for short term profits. But hey, those are the types of investors you don't want to have as investors anyways. No, in this modern era of companies and employees, a proper company should bend over backwards to show loyalty to their employees in order to distinguish itself from the chaff of other horrible companies. A worthy company should be able to say to a new employee, "Welcome to our family, we will take care of you and we expect that you will be a great new addition to our prestigious membership.". I recently spoke with a recruiter for Amazon, and she said that Amazon spends TONS of time, effort and money to bring on new employees (about $40,000 per hire). Yet, the average employee retention rate is about 12 months. That blows my mind. Why do you spend so much time and effort finding the perfect fit for your hard to fill position, and then treat the staff like garbage so that they quit in less than a year?

Anyways, my artist is quitting and I will do everything in my limited power to make sure that he's well taken care of and lands on his feet at a new and rewarding job. It's okay, I'll survive and this game will get done. Some day, I'll look back on this, smile and think, "wow, what a defining moment that was."


I'm close friends with the fellow game dev team upstairs on the 14th floor. Every time either of our teams has something to celebrate, we invite each other. We share in each others happinesses and struggles. We have a good camaraderie.

Today, I learned that Doug passed away.
He was so young. He was about my age.
He was the smileyest guy on their team.
He went to have heart surgery last Monday and died on Friday from complications.
How fucked up is that? That you could be talking to someone one day, and they're dead and gone the next? Forever! I know the reaper comes for all of us, but it's a lot harder when it is so unexpected and sudden.
How do you deal with that? On one hand, you've got the grief. That's the hardest. Then you've got the team members who are also grieving. Then you've got the game project. To say, "The show must go on!" is what must eventually happen. To do that, you've got to do a transition of responsibilities. Shit. They were a four man team, now they're down to three. He was their coding heavy weight. The guy who could do it all. You can't just farm that out evenly to the rest of the team. They're also pretty much broke, so you can't hire replacements. How do you pick up the pieces and make the show go on? How weird will it be to look at his source code and see his comments? In a way, it's a part of him. And eventually as the code evolves, you're going to have to delete some of those comments? In a way, we all have threads of evidence which suggested we existed. One by one, those threads are erased over time. But you owe it to Doug to see the project through to the end.
Well, Doug worked on this game for the last few years. He wanted to "make something fun". He got to see the beta launch of the game he worked so hard on. He did what he dreamed of doing -- and when it comes to life and dreams, that's kind of rare... Things like this make us think, "what if I'm next?" and hopefully compel us examine our own life closely.

I know I'll be drinking a coffee in Doug's memory today. Damn, I wish I never had to write something like this.


Well, I've officially run out of money. (long pause for reflection)

This seems to be a common struggle and problem with indie game developers, and I'm not any different... Do I blame myself? Who else and what else is there to blame other than myself? Of course it's my fault.

I had about $500,000 at my high point. Today, I have no more than $1,200. What happened? Well, about five years ago (has it been that long?!) I went to Afghanistan as a military contractor working for the US Army as a senior software developer at the headquarters. I was initially paid $61,000 per year to work for General Dynamics as a junior field technician, but my project manager knew I was a developer so he sent me out to fill a much needed gap. I worked for GD in Afghanistan for about six months. One of my co workers worked for another contracting company called "Trace Systems". He was paid very well and his manager worked in the building and came by every week to check up on him and make sure he was well taken care of. My manager on the other hand, had no idea who I was or what I was doing. I never, ever heard from him. My initial contract was going to be six months and I had no intention of staying there, but the officers liked my work and saw my value, so they wanted to keep me on staff if possible. I told them I'd stay on for a year if I can get paid better. So, they made it happen. I quit General Dynamics and switched to Trace Systems, who paid me $240,000 per year to work in Afghanistan. For that kind of money, I can do that for another year. Afghanistan sucks. The mountains are brown, the air is dirty, the ground is brown, there are very few trees, it's just brown dirt and rocks everywhere you look. And the sky is filled with brown smog. I lived in a plywood shack with a quarter inch of wood between myself and the elements. We got shot at by rockets and mortars. The closest one landed no more than 200 feet away from me one night. You're never safe. My day to day life was pretty much, eat, sleep, work. I worked seven days a week, twelve hours a day. I oversaw three unit rotations. Winters were freezing, summers were roasting hot.

Towards the end of my 18 months, I was very burned out. I was tired of it all and became pretty useless. Even though my contract said I had to work 12 hours a day, I effectively only got about 2 hours of work done at best because I was so spent. It depressed me. I honestly wanted to keep working hard and pushing myself to fulfill my contractual obligations, but I felt like I was at the end of a marathon and I was trying to sprint for another mile. Nothing but a long break would fix that. It was time to go home. The whole time though, I was taking all of the money I earned and I put it into an investment account. I invested ALL of my money into Tesla Motors when they were at $55 / share. A few weeks later, they jumped to $92/share and I had made a couple hundred thousand dollars for doing nothing. I thought to myself, "Why do I work so hard to make a few thousand dollars a month when I can invest and make a couple hundred thousand?". Well, it turns out that I just got lucky with that particular stock pick. I invested all of my money into a solar power company and saw myself losing and gaining tens of thousands of dollars. It became an obsession to track the stock ticker symbols and read the news about these companies to try to figure out why the stock price went up or down.

My intention was to leave Afghanistan with $200,000 in the bank which I could use to fund my game development company. Instead, I left with about $350,000. That was a stroke of luck. I continued investing when I got home, and gradually raised my capital up to $550,000 at the highest point. I believed that, based off of the money my stocks were earning, I could afford to hire an artist to work for me. I was generous with his pay because I could afford to be. The plan was going to be to continue growing my financial portfolio and use a portion of the proceeds to pay my artist. Some days, I'd make a couple thousand dollars and think to myself, "Well, I just raised the money to pay his wages for a month." Ideally, that would have been great if it worked that way forever. However, all it takes is for one or two bad stock picks to demolish your savings. That happened. I invested in Fannie Mae, thinking they'd bottomed out at around $3.50/share. They went all the way up to $6/share and then crashed to around $2/share. I lost over a hundred thousand dollars in one day. Damn. But I can make that back, right?

The expenses of running a business with zero income will eventually drain all of your money. Every month, I had to spend about $8,000 to keep things running. My artists monthly wages were in the range of $4,000 per month. My office rent is $800 per month. My own apartment rent is about $2,000 per month. Then I've got bills, food, insurance, and a few other costs. I also spent money on computer hardware and computer software. I wanted to do everything right and legally, so I paid for all the software we use. Zero piracy. Everything is licensed. Zero risk of lawsuits in that regard. So, my stock portfolio would go up and down over the years, but it trended downward more often than it trended upward. I realize now that my investment strategy was very shitty and I should have invested in an index fund. On top of that, my investment portfolio had to give up $8,000 per month in order to keep my business afloat. Some days, I would see a months worth of savings evaporate. Those were bad days and I experienced a spike of adrenaline as my anxiety rose. Doubts became more frequent. What if I can't make it? My business focus was to keep my burn rate as low as possible and make my money last as long as possible. I saw my business as another investment vehicle. Unlike with stocks, where the value goes up or down at random, I myself can directly control the value of my business. That, combined with my belief in myself and my abilities as a developer, make it a pretty good investment, right? Maybe.

At about the $175,000 mark, I started looking for other investors who would be interested in sponsoring our game company. That turned out to be a huge waste of time and money because nobody was interested in investing. Nobody gives a shit about us or what we're doing. Investing in a game company is like playing roulette. No wallets opened up. I would spend several days creating and refining a pitch, practicing it, and looking at our financials. Most of it is just speculative bullshit, as with any other start up company trying to raise funds. Why would anyone believe in us? Or in me? It's not enough that I believe in it or have put all of my own money into it. Generally, nobody touches game companies. I kind of gave up on investors. But that's okay, right? I don't know, maybe I'm just an idiot. Maybe I should have spent 80% of my effort trying to court stingy investors instead of trying to build our product? One thing I have kind of learned though is that investors don't want to hear the cold hard truth. I have a really hard time lying or sugar coating things. I think everyone has a right to know the truth, whatever it is, so that they can react the best way they can.

Anyways, I initially worked on a real time strategy game where you controlled a wizard who could cast spells on a battle field. Think of Total War meets Magic the Gathering. I think the concept is great, and with a lot of work, it could be really fun. I had planned to build the game in XNA using my own game engine. A month after I returned from Afghanistan, I began working on my own game engine. I poured about 12 months of effort into it. It was HARD. But I got a rough 3D engine working with moving troops, AI, spells, and a decent user interface system. My software engineer instincts were throwing up red flags all over the place though. The biggest one was saying, "You're a victim of the 'not invented here' syndrome." and "You can never ship with this." and "Want a new feature? That's gonna cost a month of engine development time! That's $8,000. Is it worth it if you can't ship it?". Yes folks, I spent 12 months on this. I'll be the first to officially say that I'm an idiot and I should have realized my mistake a lot faster. Eventually, I was convinced by the following argument: You are ONE man. No matter how talented you are as a programmer, you will NEVER create an engine which is anywhere near the quality of the existing engines. They've got engineering teams with dozens, if not hundreds of talented engineers putting in effort to build the underlying infrastructure for making games. Stop reinventing the wheel unnecessarily and use an engine. Any engine is better than your own -- it makes sense from a business perspective. Divorce your baby and do the right thing. So I did. I picked up Unreal Engine 4. At the time, using it costed $20/month. That is SO cheap compared to spending $8,000 / month in operations costs creating my shitty XNA engine, which should never be shipped. At this point, I had about $275,000 in the bank, so not all was lost.

A little over a year ago, Virtual Reality started becoming a thing. I went to a UE4 meetup and I tried out an Oculus DK2 for the first time. I played an early version of "Technolust", where you just walk around a spaceship room with an android who is constantly looking at you. I did this in the back of a noisy bar, but once I put on the headphones and head set, I almost forgot I was still in a bar. My critical side looked at the experience and art assets. Undoubtedly, it was pretty well done. But I thought I could do WAY better, if I tried. I decided to think about it long and hard before diving in. I don't necessarily want to just abandon a project I'd been working on and spending money on for over a year simply because something new and shiny comes out. I wasn't keen on repeating my mistake with the game engines again. I'm not exactly sure when it happened, but Facebook bought out Oculus for $2 billion. The hardware was workable. A big company just made a big bet on it. The hardware and experience was transformational. It changes things. I decided that I would just buy an Oculus DK2 for myself and try it out and see for myself whether it's worth developing anything for. I mean, it only costs $450. Compared to my monthly expenses of $8,000, that's a drop in the bucket, so why not? I figured that if VR is going to be done right, it also needs to use hands. I had learned about the Leap Motion device when I was in Afghanistan. I put in a request to get the early developer kit version sent out to me out there, but that was totally ignored. I was a nobody (still am). But, VR done properly needs hands, so I bought a leap motion to go with my VR headset. I'd figure out how to make it work, no matter what it takes. If I can build my own fucking engine from scratch, surely I can figure out how to make hands work. In comparison, it should be trivial.

So, the DK2 came in March 2015. I hooked it up. I tried out some demos over the week. They were all mostly "meh...not impressed". Someone posted online that they spent a weekend making a VR game using leap motion, where you can throw fireballs at barrels, and it was the most fun they ever had.. That intrigued me. I couldn't find it anywhere online. I figured that I'd spend a weekend and build my own. No problem, right? And hey, throwing fireballs at barrels is kinda interesting, but also would get boring kinda fast. What if... there was something that moved towards you slowly and you had to destroy it with the fireball before it got to you? It would create a bit more tension and keep things interesting, right? And what creature behaves like this? A zombie! So I bought a zombie asset from the UE4 online asset store and created my fireball throwing game in a weekend. It was pretty cool! I showed it to my artist, and he was disappointed that I didn't include him in it. I wanted to ship it, but it was rough. I decided that I could afford to spend a week polishing the game and then shipping it, and I could include my artist to make it look pretty. But... the game needed more work. More than a weeks worth of work. Maybe two weeks? Maybe three at most? We could afford to waste a few weeks on a fun side project, right? And if we released it, we'd kinda be more important. Well, that was the initial plan anyways. Enter, feature creep!

We were looking at a month. Then it turned to three months. The game progressively got better and better. We borrowed a lot of assets from our other game. We went to a VR meetup group here in Seattle put on my "Chronos VR", and gave our first public demo. The game play worked, but it was still shitty. It needed more work. But seeing the player responses to a working VR game which I hatched out of my own imagination was super encouraging. People fucking loved it. But I could do better. So, we put in another three months worth of work into the game. Then PAX came to Seattle. I really wanted to have a booth at PAX to show our indie game to people, but alas, I missed the deadline to submit a build in May (I was in Las Vegas with my girlfriend visiting her family). But hey, we're like... three blocks away from the PAX convention center, and right across the street from Benaroya hall, so why not put a bunch of sandwich boards on the sidewalks to advertise our game to PAX players walking by? VR was becoming HOT, and people were willing to stand in line for hours to try it out, so I imagined we'd have a line out the door too. Well, that was a very wrong assumption to make. I had built three sandwich boards out of plywood and created a bunch of laminated posters to glue onto the wood. The total cost was $300 for three signs, and quotes from professional sign builders were double that. I also pulled in my girlfriend to help with the logistics and marketing of all this. She is really good at sales. She can sell ice to an eskimo. She stood out on the street and pulled people to come up to our office. When she was working, she'd bring in about 10-15 people at a time. When she stopped, we'd get about 1-2 per hour. Obviously, the sandwich boards failed to do their job. Nobody gives a shit about what is written on a sandwich board. They just ignore it and walk right by. Interesting. Over the course of the weekend, we had 150 people try out our latest build of the game. It was still kind of shitty by my standards, but the response was great and showed me a lot of problem areas I needed to focus on and improve. Watching people play your game is the best user feedback you can get. I wrote a bunch of stuff down and spent another few months refining and improving the game. Money is getting more tight. We were getting below $100,000 in savings now. It's time to either shit or get off the pot. Ship this damned game or fail.

As you know, we're still not ready to ship and we're broke.

A few months ago, we ran a steam greenlight campaign for our game. We were greenlit in ten days. While a big part of that is due to the novelty of being a VR game, the rest of the appeal was from the game concept itself and our high production values. We accelerated through the ranks and hit #31. We were on track to hit rank 15. That was a very encouraging indicator of our chances in the market, once we released. Still, no funding. Valve was kind enough to finally send us an HTC Vive Pre for free. The moment it came, I hooked it up and started developing support for it. Room scale support is an entirely new can of worms to develop for. There are problems I faced in design and concept I've never had to deal with before. Like, measuring the height of the player suddenly becomes game play relevant. Figuring out how to prevent players from physically walking through obstacles in VR was tough, but I got it. Then there's the whole locomotion problem. If your world is large and expansive, but the play space is the size of a living room, how do players move around in a large open world by walking around in their living room? Without teleporting! I solved that too. If I can write a game engine from scratch, solving these problems shouldn't be any harder. Still, nobody cares. The proof is in the pudding. You can talk about this stuff till you're blue in the face, but what really, really matters is shipping a product. Show, don't tell.

Adding room scale support and solving these really tough problems has caused us to take a few steps back in order to take a step forward. Why support the Vive? Why not just launch for the Oculus and add Vive support later? I wonder that myself, but really... the answer is simple: because hurling fireballs from behind your back in a room scale environment is fucking cool. And if the VR market is going to be 50% Vive and 50% Rift, then we would want to support both. Why turn away potential sales? Well, that has also costed me about a month ($8,000). The game doesn't work yet. Now I have no money. Damn.

This week I had to have a hard conversation with my artist. I told him I'm broke and it would be hard for me to pay him going forward, but that I'd make every effort to pay him for his work. How? My dear gracious girlfriend is going to be helping with the finances. She is bending over backwards to raise money to fund our development by going to fairs around the pacific northwest and selling hair products. We're also watching a half dozen dogs in my apartment every day (piss, shit, barking, everywhere... ugh). And we co-operate a ranch bed and breakfast which barely breaks even. We also moved in together to cut costs by sharing them. She tells me she's not going to let me give up on my dream simply because I ran out of money. That's a fixable problem, right?

Currently, as it stands now, the game still needs about 3-5 months of development work. Maybe more? It's impossible to accurately predict these things. We have to finish this thing and ship it. If we sell it for $25 per unit, we need to sell 61,150 units to break even. That seems like an impossible number to reach. We've recently come up with a long term plan for the game as well. I decided that our "game" is more of a story telling platform and that there would be many different stories being told on it. Each story is released as a series of three chapters, and we release one chapter at a time. The proceeds from sales would fund the production of the next chapter. And each series is sold separately. $25 for first game, maybe $15 per additional story? or maybe a bundle deal? Each of the stories would be very different, but seen from the vantage point of a different character. And they would be intertwined. VR is beyond just a head set, beyond just adding hands and input, beyond just telling a single story, it is a way to experience first hand, the amazing stories and lives of interesting characters. This is part of our vision for the future of VR -- we just have to shut up and finish building it. Right now, nothing is more important than shipping a quality product I'd be proud to put my name to. We'll get there.

I had a bit of mentorship from another CEO a while back. He told me that I should expect to "waste" 50% of my funds. It's not avoidable and it doesn't mean I'm a bad manager of money, it happens to everyone starting a company. You waste money going down dead ends in order to find out that they're dead ends. I didn't really believe him, though looking back now I admit that he was right. We spent a lot of time and money finding our way to the final product we're going to ship. In that process, I built a game engine from scratch. Mistake. I invested money I now realize I couldn't afford to lose. Mistake? I started building a game, which we then abandoned. Failure. Now we're finally building the product which we believe will work. There will be more mistakes and failures in the future. But that's okay. These are all a part of the required process to move forward.

Anyways, just because I ran out of money doesn't mean the adventure is over yet. The show must go on! Once we ship and start making sales, I'm going to be very wary about growing. You don't want to outgrow your earnings, no matter how financially safe you think you feel. I need to learn how to make our business financially self sustaining. We have to survive before we can thrive.

I know its a long shot, but if you know any rich saudi prince who wants to invest or sponsor us, let me know.


On Software Patents

I feel that I may have invented/discovered something novel which nobody else has discovered/invented yet. It pertains to VR and the field is fresh. I believe that it's pretty significant and I want to share it with the world. However, I am really worried about patents. The worst thing that could happen is someone sees what I came up with, discovers it is unpatented, submits and receives a patent for my invention, and then blocks everyone else from using it, including myself. They would have an exclusive right to this invention for a minimum of 20 years. Then the patent trolls would sue anyone who replicates the invention. It would do nothing but stifle innovation.

Innovation is like stacking blocks. Someone has to place the first block, then the next person stands on the placed block and places their block one increment higher, and it repeats infinitely. I step on the shoulders of engineers who came before me to raise the ceiling of progress. Those who come after me will stand on my shoulders and push the boundaries even higher. A litigious patent troll would effectively stop the pace of progress for 20+ years.

So, my thought is this: I need to start looking at my IP for unique and original patents, and then patent them. The reason to patent is not to exclude anyone from using my invention, but to safeguard the invention from being excluded from the world by litigious patent trolls. After I have secured the patent, I would be more than happy to share the implementation details with the rest of the world and give full blanket license to make use of it for any purpose whatsoever. I would probably have to make sure there is a grandfather clause so that if my company gets bought out, people don't lose their right to use and access the owned patent from the purchasing company.

Anyways, the next step is to probably start talking to a patent lawyer to look at the merit of what I've come up with and start pushing paperwork.


Many huge announcements!

Great news, everyone! Our game has been successfully greenlit! Thank you to everyone who voted and helped make this happen for us. Valve reached out to us by email and said that they're also going to send us a free HTC Vive Pre. Wow. Wow, wow wow. Our friends Ryan and Vic went to the VR Vision Summit earlier this month and got two Vives. Yesterday they decided to donate their old one to us, and I've been spending the afternoon trying to get it up and running. After we got the good news, we invited our fellow devs from upstairs to come down and celebrate with us with cupcakes and champagne!

I suppose that since I'm making announcements right now, we also had a really big development last week. Nothing has been finalized, but we're going to have a partnership with Leap Motion. They love our game and want to try it out asap, and they're looking to put together an indie game bundle which has high quality titles featuring their hardware -- and they want to put our game into that bundle! Again, nothing has been finalized on either side, but this is also a big deal for us. Once we sign contracts for partnership and make things formal, I'll make a much more formal announcement and send out a press release.

This is a moment for us to celebrate, but there's going to be a lot of hard work coming in the next month. There's going to be a lot of late nights in the office to get this done on time and to a high degree of quality and polish. People are going to expect this game to be great, so we can't let anyone down!

Greenlight Stats:
Our greenlight campaign began about a week ago on Friday afternoon and was in greenlight status for about 10 days. Within those ten days, we had 6,352 unique visitors to our greenlight page, 2,712 "yes" votes (59%), 1,594 "no" votes (35%), and were ranked #31 out of 2,150 games in greenlight. Our game also received 109 comments, (about 5 were mine). A huge majority of the comments were positive, but there were also some negative ones, and some with constructive criticism. Overall, we did very well! A huge majority of the credit goes to the hard work Dan, Peter, Cody and Ruben put in. I'm very happy with our outcome, but am still wary about our future prospects. What's really going to matter is our sales figures after release, which will be dependent on our marketing efforts, discoverability, and quality & replayability of our game. The plan is to use any money we get to pay our bills, grow our staff (very slowly), and let us continue making great VR games.

Screwing with software pirates?
I also had an interesting idea in the shower this morning in regards to piracy. I know there are some people who are going to pirate our game. That's inevitable. Some other game devs have actually released builds to the pirate community which seem playable but have a severe draw back which you only discover later in the game. Game Dev Tycoon had an interesting approach, where the games the player releases don't make any money because people pirate your game instead. I love the irony. I was thinking that along those same lines, we'd have a "pirate build", where we put a black eye patch over the characters head and black out one of the eye lenses in the VR headset. On top of that, we'd play "pirate music" and a chorus of "arrrr matey!" and "shiver me timbers!" every time the player does something, and we'd introduce some game breaking bugs (you're not throwing fireballs, you're throwing rum barrels!). If a player complains about this in the forums, we'd just point them to the store purchase page and tell them to buy the actual game. Then, we just release a bunch of bullshit broken variations of the game on the pirate channels to saturate search results, so when people do a search for our game on bittorrent, they don't know if they're downloading a legit version or a bullshit version, and we just keep saturating the pirate channels with our bullshit so that pirates don't know which versions to trust.



Sorry for the shitpost, but I'm super SUPER excited. I could barely sleep last night. I've made a REALLY awesome discovery in VR which... kind of changes everything. I don't quite know how to describe it, but I know its effects already. I can't stop thinking about it. I'm obsessed. I'm excited. I know what it's going to be, and it I can't wait. If VR is a drug, I think, I've effectively doubled the potency of my formula. If I'm a generally reserved personality and I'm this excited, I can only imagine how other people will react.

"Well, okay! what is it?!?" you ask.

It's this fricken bird! He is like... your companion, your magical familiar. He sits on your shoulders, similar to a pirate captains parrot. You're new to this VR world, but he's here to guide you through the world. But, he's also an intelligent being and has his own little birdy desires. He does more than just sit on your shoulder like a static character would, he'll actually fly next to something of interest and tell you about it. But that's not all, and here's the coolest part... you can extend your left arm out and he'll fly and perch on your forearm, and then you can use your right hand to magically conjur some bird seeds and feed him, or you can use your hand to pet him and he'll make little birdy warbling sounds of happiness. Since this is also VR, he can make direct eye contact with you when you look at him or if he's talking to you. I know this doesn't sound very interesting or compelling when you're experiencing it by reading about it on a dev blog, but trust me. It's magical unlike anything else I've ever experienced in my life long gaming habit. Magical is the best word to describe it. VR itself is 'pretty cool' when you try it. Using your hands to throw fireballs is also a bit more than just 'pretty cool'. But to use your hands to play with an intelligent, virtual creature who reacts to what you do... WOW!!! I had Dan, my artist, try it out. When I told him my idea a few weeks back, he wasn't very keen on it. But now, he's so sold that he wants to make our game about crow caretaking. EEEEEK! This is going to be the coolest thing in the world! I think if we nail this, we will lead the industry -- no shit!


These are BOTH of my hands and I'm doing this in VR. How did I take a screenshot?! I had to create a timer which takes screen shots every five seconds.

This particular crow is very tame, but the wild crows in the game will behave a lot more like crows. They'll sit in trees and caw at you, and if you get too close, you'll frighten them away and they'll fly to another nearby perch and caw angrily at you. If you kill a zombie though, the crows will fly from their perches and come feast on the corpse. Nom! Nom! Nom! Also, if one of your spells enters their 'fright' zone, they'll get scared off and fly away. So, the end effect is you walking through a forest and birds flying out of the trees as you approach them.

This bird incorporates good sound effects, hand gesture response, good visuals for VR, pretty good AI, acknowledges player presence, and has good animations. He's still a work in progress though... you can tell the foot IK's haven't been done yet ;)


Double post day!!!

I rushed ahead of myself and just published Spellbound on steam greenlight. Yikes. I wanted to do a 2 minute game play trailer video, but I suddenly decided that the 8 minute reactions video is sufficient. The first 30 seconds of the video are sufficient to generate curiosity, the middle portion of the video shows the game play and the excitement, and the last part of the video is genuinely compelling testimony from the people who played the game. My better sense of judgement says that people have a 2 minute attention span so I should aim for an equivalent video length, but this gameplay and reaction video was just too good to pass up.

I'm feeling both nervous and excited at the same time. The game isn't 100% complete. There are some bugs, and you can see them if you look for them in the video (they've been fixed). But, my calculations indicate that if it takes me two months to get greenlit (assuming I succeed), and my release date needs to be in two months, then I absolutely have to start my green light campaign as soon as possible. There is no more waiting longer to grease the wheels.

I'll let you guys know how everything goes. But for the time being, fingers crossed!