Jump to content
  • Advertisement
  • entries
    91
  • comments
    340
  • views
    123224

About this blog

Indie Dev

Entries in this blog

June 2018

I suppose I should recap my trip to Las Vegas. I got to attend the Dell World Expo at The Venetian and one of the stations for Dell was dedicated to showing off the application I built for them. Here are a few pictures I took:


This is the booth setup before the show begins. There's two podium stations, a set of wireless headphones, and a Leap Motion device attached to a laptop via USB cable.


The convention is in full swing and people are coming up and interacting with my application. It's driven entirely with hand gestures. No mouse, keyboard, game pad, etc.


This is the first application of its kind in the world. Nobody else has used hand gestures to control and interact with 360 video before. Usually there were healthy crowds of people watching other people try it out.


I had three different interactive scenarios people could play through. The game portion was a fun way to learn about Dells philanthropic programs. I had some people literally go through every single video because engagement was so high. Who wants to watch 15 minutes of corporate feel good video? These guys do! Just in case, I brought my laptop with me and had it setup to create new builds if I needed to. There were some small bugs and changes I wanted to fix, so I started to create another build. I copied all of the files over... and then disaster happened. I don't know how it happened, but somehow, the source code folder was completely empty. I still don't know how that could happen because I just copy/pasted the root project folder and the source code folder was a sub folder. All of the other subfolders had all of their files copied successfully, so it shall remain a mystery. So, if there was a critical bug, we would either need to just deal with it or I would have to catch an emergency flight back to Seattle. There were bugs, but fortunately they were minor enough that we could brush over them.

I had to train the Dell employees how to run the application. Fortunately, I had already anticipated this need and tried to simplify the application management to be as easy as possible. Basically, you could jump between scenes with the number buttons, and the first button just resets the whole app. Unfortunately, there were a few small lighting artifacts which popped up on a reset level, so I had to train them how to quit and restart the app. It only took a few seconds, but it did mean that a booth attendant had to always be on hand and paying attention.

For most of the event, I stood nearby and just watched people using my app and took notes. Where were the pain points? What assumptions were people making about the interface? How long was user interest being held? What was holding their interest? What mistakes did I make? How can I fix them in the next update? What am I missing?
One thing that I realized is that our introduction screen is terrible at attracting attention. I initially wanted to use an interface which trained the user on how to use the application, so to do that, I kept it bare minimalist so that people could focus on only one thing: Learning how to grab things. The interface started with a black background, a floating acorn, and a bit of white instructional text. In terms of focusing and training, it doesn't get any simpler and more clear. As far as capturing the attention of passer bys, it was TERRIBLE. So, if you're walking by and all you see is the intro screen waiting for users to engage, you have no idea what the application does or is about, so you'll just keep walking. This means that if you're the booth attendant, you have to be actively engaging with people walking by and trying to hook them. My opening line is always, "Hey, you want to see something amazing?! Come check this out!". This engagement stuff is always a really good skill to have if you're ever giving demos of your game at events like E3, PAX, meetups, game jams, etc.

After the expo was over, I felt drained and lost a majority of my interest in the application. I don't really know why, but I just got really bored with it. A month later, I'm still bored. My attitude feels like, "Yeah, that was pretty cool and it was hard to pull off, but it's been done now." I was hoping that I would get lots of contacts and leads for more work, but that didn't really happen. Maybe it's my fault. Maybe I needed to be more outgoing and aggressive about getting to know people. Or maybe it wouldn't have mattered one way or another?

During the event, we were put in touch with a team at VMWare, a subsidiary owned by Dell. They were looking for a vendor who would build them a virtual reality application and we were the only ones they could find. So, we had a phone call meeting to get an understanding on what they're trying to build. Basically, it was a group of marketing people who had just seen Ready Player One and they wanted to build a VR experience for their customer experience team. Great! This sounds like a big project and a good opportunity! I started digging into their requirements. They... really didn't know what they wanted or could do. They said that they want every person in the company to be able to use their VR app, and they have 25,000 people. I asked them if they were going to buy 25,000 VR headsets. They didn't realize they needed to buy a headset. ...Okay... They decided that maybe they didn't want to do a VR app. What about a 3D game app instead?
"Sure! I can definitely build one! What do your client workstations look like in terms of hardware specs?"
"We run thin clients throughout the whole enterprise."
*long silence on my end*
"uh... that's not good."
So, I asked them to try running a 3D game on their server and playing it on their thin clients. The big, obvious problem is that all of the 3D GPU processing will happen server side, and the amount of GPU processing is going to be a function of the number of connected clients. So, can their server GPU handle a high rendering load? I'm still waiting to find out...a month later.
I found that they're trying to create a multiplayer app... in vr... with voice over IP...with a content management system backend... supporting up to 25,000 users... on thin clients... in three months! WTF?! Okay, I know I have the capability to build an enterprise level multiplayer CMS app. It's not going to be easy, but I could pull it off. But probably not alone in three months. I'd have to hire people to help. The problem is, it's going to get very expensive, very quickly. And if I put on my hat of pragmatism +5, I have to ask, "Why not just build an enterprise web app?". "Because we want to do something cool and different." That's a valid reason, especially for marketing folks who need to differentiate themselves from other marketing folks. Anyways, I submitted a ridiculous budget proposal last week. I think this project is going to fail before it starts because it's just not technically feasible, but I will probably just have to end up turning down the project if I don't get fully funded by the end of June. I just can't pull this off in less than three months... a corporate MMORPG in VR. In my mind, I'm already expecting it to fall through so I'm not getting any hopes up or counting on it to happen. They have to be moving a lot faster than they're moving right now if they want this to get built.

In other news, I've been in a bit of a professional rut lately. I need to make money. Money is a resource which enables me to do things, and the lack of money is seriously holding me back. For example, I want to create a 3D VR travel application. I've created a working MVP, so now all I have to do is go out and shoot some footage with a camera. I borrowed a 360 camera, but it sucked so bad that all the footage I shot was unusable. I've been looking hungrily at the Insta360 Pro camera. It's got everything I want and need to make my app. 8K 360 video in stereo. Automatic stitching. Image stabilization. Good battery life. etc. But, it costs $3,500 which I don't have. I asked my local community if anyone had one I could borrow one, but no replies. So, this project is on hold until I can get enough funds to purchase equipment. *Sigh*

My girlfriend has been getting on my case about not making enough money as well. It's really hard on her because I don't contribute enough financially. All of my money making schemes tend to be long term (6+ months out). And when I get clients, I tend to vastly undercharge for my services. For example, the leap motion app I just made for Dell, I charged at an hourly rate of $75/hour and grossed about $6,500. I should have at least added another zero to that. My girlfriend tells me I am a stubborn fool who won't listen, and I'll always be poor and broke unless I raise my rates. She's entirely right. She said I should 100% stop doing engineering work for a month and instead focus on sales and marketing. Full time sales and marketing. That's scary, I absolutely hate phone calls, and doing cold calls has zero appeal to me. But, my girlfriend is right. Nobody knows who I am or what I do, so how are they supposed to find me and hire me? Nothing is going to fall into my lap just by existing. I need to build a pretty website which highlights my work and abilities. Then I need to promote that website. So, for the next month, I need to focus on self promotion, sales and marketing.

It's SO tempting to do engineering stuff though. Yesterday I spent a few hours researching machine learning using reinforcement learning. It's really enticing, but it would take a LOT of engineering talent and time to pull off. And I want to try, and I could probably do cool stuff, but it won't help pay for tomorrows bills. So I kind of need to shelve that desire as well. Harsh.

slayemin

slayemin

 

Dell World 2018 in Las Vegas

Alright. I finished my project for Dell this evening. It took me about two and a half months to complete it, though the first month or so was very light work. The work ramped up quite significantly towards the last two weeks and I was working weekends for the last two weeks. The good news is, I finished perfectly on time, on budget, and to specifications. As far as project management goes, this went perfectly! Tomorrow afternoon, I am flying out to Las Vegas to attend the Dell World Expo and will be hovering in the background making sure the booth attendants get properly trained and I can fix any problems that arise (including hot fixes). I will be most interested in seeing the reactions of people as they try out my app and looking for new business opportunities. Anyways, here is a youtube video which shows the app as of tonight (pardon my awkward voice): So, I think it would be valuable to go into a bit of post-mortem detail on what went well and what can be done better next time, and what I learned from the experience. First and foremost, I learned that I should NOT be charging an hourly rate for my work. I am a contracted *company*, not an employee. Hourly wages are an employee mentality which I need to break my mind away from. I need to think more like a business, where I bid for a project to make profits, get payments, and then pay employees an hourly rate out of the total project budget. If I charge hourly rates, the incentive structure is inverted in disfavor of good engineering and efficient work. If you work too fast, too efficiently, you get paid less money and thus, working slow and inefficiently is rewarded. If you charge by project instead, the faster and more efficiently you work, the more you are rewarded. I also need to start thinking in terms of hiring and managing other people and calculating their time and costs into the project proposal budget. It's useful to know how long everything takes so that I can properly estimate an accurate project cost. The better I can be at estimating true project costs, the more competitive I can be. I've been seriously undercharging for what I've done, so that will change from here on out. I will not charge an hourly wage, I will charge by project and its costs will be based on the scope and requirements of the project. I think the minimum I will charge is $50k per project?

So, let's get technical on this interactive video project. Here's some really important details to consider: When you are playing a 360 video inside of a sphere, the data rate of the video needs to be around 15mpbs. Any more than that, and you start running into video stutter. You should not use transparency or chroma keying in your video. If you chroma key, the lossiness of an MP4 will cause color bleed on the edges. If you decide to use transparency on and alpha channel, you're going to be outputing an MOV using a lossless PNG, which will cause the filesize to skyrocket (ie, 90 seconds of video = 900Mb). Leap Motion can be a teensy bit finicky, even after the Orion update. It's trying to do its best with noisy image data, so you're sometimes going to get false positives. Sometimes, it won't know whether the hand it sees is a right hand or a left hand. For some frames, it may incorrectly see a "grip" gesture, so you should try to account for that with a frame buffer. Leap Motion doesn't really have events for when a hand left its view frustum, but you really, really need to know when this happens. Especially if the hand has an object attached to it. You'll have to create your own events and event handlers for gaining and losing a hand and decide what you want to do with a held object. When it comes to gripping to move the camera vs grabbing to activate and object, you want to be very careful about how far you put objects away from the player camera. If they are trying to turn their view with their hands but their hands overlap an interactive object, they may accidentally trigger that object interaction and get frustrated. I found that 85cm away from the player camera is a good value. This can be adjusted without recompile by physically moving the leap motion closer or further from the player. Cheat as much as you can. Buy as many premade art assets as you can. Sub contract people out to fill in the gaps. Beware that some art assets you purchase may be unusable garbage. The DNA strands I bought for $25 were useless. I ended up creating my own programmatically and they turned out better than a what I would have gotten with a static mesh. Play test with people who have never seen the project before. Don't tell them anything, except, "Hey, try this app out" and start it on the intro screen. Watch where they get lost, then design UI cues to fix that. It's worth your time to get familiar with the media player code on the engine side. The better you understand how it works and what it's limitations are, the easier it is to work smarter. I initially didn't do my due diligence and I just spent maybe 15 minutes looking over the API. I didn't see how to figure out the length of a video file, so I made that into a function parameter value. If you have 19 videos, that means you have to right click each one, go to properties, go to the details tab, and then find the length and convert it to total seconds, just so you can enter it in as a function input parameter. And then, if your video guy sends you an edit, you need to find and update this value. It got tedious, so I eventually looked it up programmatically. Videos don't loop out of the box. The "loop" functionality applies to a playlist of videos, not an individual video. If you want to loop a video, you have to add that functionality in yourself based off of the video duration. Oh, and by the way, when you get to the end of a video, you have to seek to the beginning and that means you're going to have a few black frames. I think most video playback systems will buffer the next few frames automatically, but if you want your video to loop, it's not going to start buffering the first few frames when it reaches the end of the file. That would require an engine mod and I didn't have the time to invest in that (though I certainly have the technical capability). It was just easier to produce a video which had several loops in the video and just accept the black frames during the loop cycle. We had a 10 second loop which we turned into a 90 second clip with 9 loops in the video. A few black frames once every minute and a half was a lot more tolerable than black frames once every 10 seconds. You only want to play one video at a time. We took the last frame from each 360 video and turned it into a texture. Once a 360 video completes, I replace the video material with a texture material and let the video player play different videos. You want to make sure that the end still texture is a scene which doesn't have any moving parts to it so that the transition from video to end still is seamless and unnoticeable. This is something to keep in mind when you're doing video production on set and doing clip sequencing during video editing. If you have 2D videos in a 360 sphere environment, you don't want to make the 2D surface a curved surface. If you need to change the distance of the video from the viewer, the curvature perspective changes and you'd have to create a new mesh to account for it. It costs too much time and effort and there isn't enough payoff to make it worthwhile. Video transitions are a great polish feature. Fade to black, fade in from black, scaling from an axis, shrinking to an axis, all are great ways to prepare the viewer for the video content. Combine it with audio SFX and VFX to really sell it (I could have done a lot better here, but I was pressed for time). If you have voice over audio and you're trying to time things with it, you want to do things at 1/10th of a second precision and note in a separate document your timings (Any greater precision has diminishing returns on noticeable value). I used Audacity to examine a WAV file and note the timings. I used the same video sphere for every 360 video. Every interactive menu was spawned dynamically I bound number buttons to key storyboard points. I also created buttons to skip forward 5 seconds in a video. This really helps to develop, test and iterate faster when you have video. You don't want to sit through 90 seconds of video to see if the event at the end fired correctly. Waiting is a waste of time. These controls are also going to be super useful for booth attendants. They can skip to particular scenes, reset a scene, or restart the whole app at the push of a button to be ready for the next person in line. It's never going to be perfect. You can always find new things to add before it is finally "perfect". If the app is consider done only when it's perfect, it will never be done. Even now, there are things I'd want to spend lots of time fixing and changing and I'd feel better about it. But it's good enough. I feel a bit nervous about showing something I feel is imperfect, but... I've also seen my own app hundreds of times. People seeing it for the first time won't see its imperfections like I do. A big part of effective development is deciding what to let go and what to focus on. I went and gave a quick demo at a local meetup and made a new connection which might turn into a future business opportunity. It's worth showing what you're working on, but do be prepared with a decent pitch. Who are you? What do you do? What are you working on? What does it do? Why is it useful/cool? What's the value proposition? etc.

Yesterday I went to a sponsored happy hour filled with tech people. I brought a 10 minute youtube video of my app. It was too long. I need a shorter sizzle reel to show people. I also need an elevator pitch. I got stalked by an investor and I was totally unprepared for that meeting.
"Are you working for a company?"
"Yes..."
"Is it yours?"
"Yes"
"What's it called?"
"uh.... Wobbly Duck Studios..." (cringe)
"What do you do?"
"I make VR games? And... now I made this new thing that's not VR and I don't really know what to call it?"
"Cool. Do you have a patent for it?"
"No, I just invented it a few weeks ago and I can't afford a patent." (Not that I want to patent it anyways or even care about patents, but in USA, company valuations are based on patent portfolios and that determines VC interest)
"What stage is your company in? Seed round? Series A?"
"Uh... I'm entirely self funded and broke?" (I don't know how to answer this)
"Do you have any employees?"
"I had one a few years ago, but then I ran out of money and he quit. I'm still surviving though, so I guess that's okay?"
"Oh, okay. Well, I have to go use the bathroom. Bye!" (flimsy pretext for them to escape further conversation with someone they're not interested in)

The reality is that I honestly don't care about investors anymore. I consider talking to them a waste of time. I used to care and chased them, and before I met with one, I'd spend *days* going over notes in preparation for it. No amount of prep can fix my general amateur CEO levels though, and they see that and I don't get any interest, much less funding. Why waste my time prepping for days to get nothing, when instead I could be spending my time doing something actually valuable, like developing products? Why would I want to give away equity and control of my company to outsiders who are only looking to 10x their principle at any cost? Especially at my current stage and low valuation? I can take on increasingly larger and more profitable projects to fund myself and keep 100% of my company to myself. And why would I want to measure my company value based on the number of employees I have? Full Time Employees in a pre-revenue start up are a drain on capital and generally a huge mistake (Something I learned the hard way), so head count is not a good measure of valuation. What matters is positioning, product market fit, your IP portfolio, your human talents, and how its all managed with respect to the market ecosystem. Anyways, I must be sure to remember all that I've learned so far and apply that towards business and future projects. I honestly think I could make a few million dollars in the next few years if I apply myself correctly, but that's going to depend on building a track record of successful projects and a history of pleased customers. I think if I can do this, I can fund my game development indefinitely and build a core team around it, while also building a core team around building and delivering other software apps. I'm feeling cautiously optimistic about my future prospects right now. I think I'll have some bigger announcements in the next month or two

slayemin

slayemin

 

The Blackwood Witch

Herby sat on a log around the campfire and half listened to the tales and gossip being told by the villagers. He took a long draw from the frothy mug of ale and set it back to rest comfortably on his large belly. After each story ended, he’d quietly huff in mild contempt and absent mindedly stroke his beard. None of their tales were any good compared to his. All of the other villagers knew it, but they waited eagerly. Every night, Herby always told his story last and it got better and better each time. As the night wore one and the campfire turned to glowing red coals, the stories and gossips gradually tapered off. One by one, the villagers grew quiet and waited for Herby to speak.
“Herby, tell us o’ the Blackwood witch again!” one of them shouted. “We been waitin’ all night!”
Herby glared at the villager for a moment in mock irritation, but secretly he knew he loved telling the story as much as they loved hearing it. All the eyes around the campfire turned and looked at him expectantly. Herby met each one and held the gaze for a moment, wringing his hands in eager anticipation, commanding their attention. He took one final long draw from his mug, and then wiped the froth from his mustache with the back of his sleeve. After a long pregnant pause, he leaned forward, as he always did, and began with a low whisper. “Ye e’er heard o’ the Blackwood witch?” he started quietly, eyes twinkling. “It all started a coupl’a years ago.”
All of the listening eyes grew large and people quieted their breaths as they leaned in closer to hear. “Jonathan the miller had a daughter. She was fine as sin, she was. Had hair black as a ravens wing, skin fair as porcelain. She was a strange one, that she was. She had the most peculiar eyes any lad had seen, y’see? They were green as emeralds. I suppose that’s why old man Jonathan had named her Esmerelda. But, there was something off about her. I can’t quite explain it, but just one look at her and you could tell that she was the odd sort. Trouble, it just seemed to follow her everywhere she went. We didn’t know why at the time, but the most unusual, otherworldly things seemed to follow her everywhere she went. If she was in the kitchen, the teapot would suddenly boil fer no reason. The funny thing is, nobody turned on the stove. Or, she’d be in the mill, and a sack of flour would drop and narrowly miss yer head as if somethin’s trying ta kill ye. But the oddest thing about young Esmerelda, was that she seemed to talk to herself or something else that only she could see. Spirits, some said. Phantoms of the imagination, others claimed. Nobody really gave it too much serious thought though, y’see, she seemed a bit of a disturbed woman. Sometimes, she’d be yelling curses at the air for minutes. But, nobody had the heart to say a thing about it and just left ‘er alone.” “Well, one day a lad came down to the mill to get some corn ground into meal for his piggies. He’d ‘ad a pint or two … or three ... that afternoon, but who hasn’t, y’know? Anyways, he wasn’t quite in his right mind either, so he walks into the Mill, and who should he find there all alone? Lil miss Esmerelda. She was chattin’ up a furious storm that afternoon with some spirit or some such thing, and almost didn’t even pay the lad much heed. He got right agitated for havin’ t’ wait though, so he started shouting at her. He said he was just cursin’ her like any ol’ drunk ornery fool does, but she whirled around and looked ‘im right in the eyes with her emerald eyes. Oh, but they weren’t normal lookin’ eyes that afternoon. They had a piercing glow behind ‘em that looked right through ye, right into yer soul. She said to that lad, and I’ll ne’er forget these words, “You know nothing of curses, you miserable wretch. Let me show you a curse.” An’ she did. He said her eyes blazed green like wildfires an’ ‘afore he knew it, little itchy boils came up all o’er his skin, and whenever he scratched at the itchy suckers, little black spiders crawled out. His whole body was covered in these spider filled boils! I shudder to think about it, just imagining spiders crawling on me skin gives me the heebie jeebiees, but spiders crawling out from under the skin? That’s a whole ‘nother level of creepy. O’ course, you could hear ‘is scream clear down to ol’ Jebs tannery, and that’s pretty far considerin’ the walk. Anyways, he ran right outta that mill and left his corn fer the miller t’ take as he pleased.” “The lad ran all over town that afternoon, screamin’ and shoutin’ at the top o’ his lungs t’ any who’d listen. “The millers daughter is a witch! Esmerelda is a witch! She cursed me with boils and spiders!” an’ he’d show ‘em to any who’d look. It didn’ take the town long to rabble rouse outta their homes. The good townsfolk grabbed their pitchforks an’ torches, and marched right down to the millers house, shoutin’ for missus Esmerelda to show ‘erself. She knew they wasn’t up to no good that afternoon. She’d seen what they’d done to others suspected o’ witchcraft an’ sorcery, so she wasn’t gonna stick around long enough to have any o’ that. Before the townsfolk even got close to her house, she was gone into the Blackwood.“ “Back then, it wasn’t a cursed forest like it is today and the good townsfolk weren’t afraid to go in it for an afternoon picnic. But that all changed that evenin’. None o’ the townsfolk could find the young missus, but they were out for ‘er blood. Rabble rousing will do that to ye. A few o’ them were decent hunters, so they went off back home and fetched the houn’ dogs. Houn’ dogs are pretty good at fetching foxes, and young missus Esmerelda was quite a foxy lady, so they didn’ have much problem pickin’ up her scent that evenin’. The hunters said they’d go right into the forest and bring her back and then she could stand trial for her sorcery before the whole town, and then she could face the stake like the rest o’ them did.“ “We all heard it. The screams were loud as sin. At first, we thought the hunters had captured Esmerelda and she be puttin’ up a fuss. We all waited around for them to bring ‘er back, but hours went by an’ nobody e’er came outta the Blackwood that night. It later occurred to us that the screams we ‘eard were the hunters themselves. That was the last evening anyone ever saw them hunters, bless their poor souls. We all looked at each other with scared looks in our eyes. Nobody slept well that night. How could ye, when ye know there’s a witch prowlin’ the nearby forests? The next mornin’, a ranger set off to follow the tracks of the hunting party. No one ever saw or heard from ‘im again either. He got snatched by ‘er. From that day on, nobody dared to go into the forest again until the witch was dealt with. Some nights, if yer really quiet and still and listen t’ the wind, you can still hear her talkin’ to those ghosts or spirits, or whatever they are. T’ this day, the Blackwood is cursed. Any poor fool dumb enough to be out in that wood after sundown is a gonner. Probably cookin’ in ‘er witches brew. Stay outta the Blackwood or the witch’ll getcha.” Herby leaned back finished and out of breath. The villagers shivered a little in the darkness, a little from the cold of night, and a little from fright. The Blackwood forest behind them loomed menacingly in the darkness. One by one, the villagers gave their farewells and sauntered off to their homes for the night.

slayemin

slayemin

 

More Contract Work

It almost feels like it hasn't been worth writing an update for the last month because so little "progress" has been made on Spellbound. But I suppose such is life, and it too must be captured and noted as a part of the journey of an indie developer. I have still been doing various contract projects for both corporate clients and small game studios. On the contracting side, I've decided that it would be a good idea to subcontract work I can't do to other people and then add my management fee to their rates. I currently have my former artist working on a small contract project, so it is a viable business idea. He charges me $35/hour and I charge the client $50/hour for his work and I keep the difference. It's not much, but its a good start. In the future, I will raise his rates and pay him more when there is more work and larger projects, but I don't want to make public promises I can't keep. The hard part will be finding enough work to keep everyone busy. I've also been playing a light support role to my girlfriend. Her business is taking off and she's easily become the primary bread winner of the household and that relieves financial pressure from me, allowing me to continue working with minimal income. I can't stress enough how grateful I am and what an impact it has on my creative pursuits. A few days ago, she had a senator from China come and visit her company and our ranch. He was really interested in seeing my VR game, so I gave him a demo in my office. My roommates are all sales people as well, so they got to try out the game at the same time. One of them was instantly motion sick, but the other really enjoyed it. Probably the best takeaway from this was just how bad my user interfaces actually are -- they are not intuitive enough at all for completely new people to use. Also, the pacing of the action is also too rapid for novices, so I'll need to redesign my tutorial level to be more "tutorial" focused than story/immersion. Anyways, the Chinese senator was very impressed with what I'd been working on. I have a feeling that I may have a trip out to China in my eventual future. I think the Chinese market for VR is thirstier for content than the North American market, so it would be great for me to see first hand what the market landscape looks like.

A fellow VR game dev told me the other night that he's been wanting to show my game to other people, but the trailer for the game is so out of date that it doesn't do the game proper justice. I completely agree, it's two years old and features old technology which I don't support anymore. Here's the stupidest objection in the whole world: I don't know how to produce a good game trailer. This is extra stupid because... I work in an office filled with film people who could help me. What's wrong with me? I'm a bit afraid to ask for help knowing I have no money to offer. I have been doing a lot of reading of epic fantasy books on the bus ride too and from work. I'm currently reading through the "Legend of Drizzt" series by R.A. Salvatore. Every time I read one of these epic fantasy books, I feel totally inadequate as a writer. I have a lot of self doubt that I could produce anything as good. Despite that, I'm going to have to push hard and write out a story for Spellbound. The writing is going much slower than I would have liked due to various distractions (ahem, contract work and lack of funding). I also feel a bit daunted/overwhelmed by the size of the writing project and what it's going to take. I should just shut up, stop whining, and start writing.
"Yeah, Eric! Quit yer moanin', bitchin' and belly aching and get back to writing!"
*whip crack* I have been entertaining the idea of producing another type of nature VR travel experience using 360 videos. It would be much easier and faster to produce and could turn into a new revenue source to fund my development of Spellbound and build my brand a teeny bit more. I must find some time to produce a rough prototype and see if its technologically viable. I've written out a 2 page business plan and it seems pretty good (but all of our own ideas sound good!). This idea has passed through my feasibility filters and its time to start figuring out what it would take to produce. Anyways, it doesn't hurt to give it a try and see what happens.

On another note, I think some of my best ideas come to me while I'm walking to work. There's just something creatively magical about the act of walking and thinking. It really gets the juices going. I remember this one time I was working in Iraq on a tough problem with relational databases. Somehow, I had to get multiple records from one table to match multiple records from another table. I couldn't figure it out for days while sitting at my desk, but then I went for a long walk on base and solved it in my head. I came back, implemented it, and it worked perfectly -- it required an intermediary table to store lookups. Two days ago, I was walking a mile to my bus stop (in the rain) thinking about "stuff". The night before, I had been tutoring my girlfriends son on math homework. I have also given lectures at my former university and local meetups on game development and design. I have worked in Iraq and Afghanistan to rebuild war torn societies, and through my experience, I have concluded that the underlying foundation for a peaceful and prosperous society is an educated society. So, if you want to bring peace, prosperity and compassion to the world, start by educating people. I happen to love the acquisition of wisdom and the feeling of enlightenment it brings, so my way of sharing that is by teaching people what I know and hoping they too can share my passion. On my walk, I got to thinking: What if I give lectures in VR where people can learn something? It would be done within the universe of Spellbound, so the learning experience would be within a classroom of budding wizards, being taught be an old, gray bearded wizard (me). The character animations could be driven by a mocap suit and the voice could be recorded easily enough. The instructional material would be framed in the context of things wizards care about, so I'd be giving an hour long class on the intricacies of alchemy and brewing a witches pot, and it would be about selecting the right proportion of herbs, spices, ingredients, and cantrips. On the surface, it would be a lesson on magical brews, but in truth, it's a lesson on fractions and ratios. It would be a great fake out, where people come into a classroom expecting an hour of entertainment (which it is!) but they'd really get an hour of education. But, the lesson would be framed and presented in such a way that the audience doesn't realize its learning something else which is valuable in the real world too! I could produce a dozen lectures on various topics of interest, framed in the context of advanced wizardry, and people could attend my lectures in VR. If I can convey my enthusiasm for the subject, it'll be infectious and people will want to see all of the other lectures. What seemed like a action role playing game on the surface, had a lot of secret surprises on the back end. Some people may not be interested in this academic part of the game and prefer action and adventure, but others may be only interested in the academic side -- There's nothing wrong with wizards who spend most of their time in the academy advancing their own knowledge. After all, that's what wizards are predominantly known for! I think if I embed secret rune combinations within the lessons, students can get unique magical rewards by paying attention in class and it can be just as rewarding as exploring an ancient dungeon. I like this idea; I'll have to think about it more and let it ruminate. Lastly, I've been continuing my work with the Leap Motion and integrating it with 360 video. Check it out here: I heard from my partner that some sales guy saw our work and liked it so much that he said if we finish this app, he'd be willing to sell our services to other companies. If that brings in more work and it pays well, I'd be all for it. I'd eventually want to hire someone else to work for me and take over the production and I'd move myself into more of a creative managerial role, but for now, I have to keep building out the tech and envisioning how this will work. I've been trying to unite the film industry and the gaming industry for over a year, so this sort of represents a culmination of my efforts and helps create a sort of new type of media. I'm excited to see where other creatives can take this. Anyways, I still have a lot more work to do here and this is still evolving quickly, but I think what we're building here may be the first of its kind in the world. I'm excited.

slayemin

slayemin

 

Contract Work

I need to make money to fund the further development of my game. So, I've been doing paid contract work in VR. Most of the work is pretty easy for me and consists of producing VR applications which run 360 videos with some interactive GUI elements embedded into it. I also have been helping other game developers produce their games. Initially, I charged $50/hour for my early VR programming work. I believed that I needed to figure out the development process and it would take a bit longer because it was new to me, so I felt bad charging a higher rate. I got it figured out now, so I raised my rates to $75/hour. I... think I made a mistake. The way I came up with $75/hour is pretty straight forward. I took my previous annual salary and divided it by the number of hours in a full working year, and that gave me a rough ballpark on my hourly rate. The flaw in this approach is that I was assuming that the amount of work I have would be constant, that I would be working a full 40 hours a week with billable hours. The reality is that I have huge gaps between projects, so that means I have huge gaps between billable hours. So, the general intuition would be to increase my hourly rate, right? I think that's also a mistake. The problem is that I've gotten too fast. It used to take me something like 10 hours to produce a 360 VR video app. That's because I built it from scratch. Now, I have a code base and template I reuse. It takes me about 2 hours to produce a simple video app. With an hourly fee structure, it's more profitable for me to work slow so I can charge higher bills. But I can't do that, I'm an honest man and my integrity is priceless to me. I'm also a lazy engineer which causes me to strive for efficiency so I don't have to do tedious, wasteful work. Spending 10 hours on a 2 hour project would feel like a waste of time and an antithesis to common sense. So, I'm tentatively thinking that the correct fee structure is to charge a per project cost. If I quote someone for $5000 to complete a project, that's what I'll charge regardless of how long it takes. If I can finish the project in 5 hours, congrats, I just made $1000/hour. If it takes me 50 hours, then I made $100/hour. Now, I'm properly incentivized to work fast and efficiently. The faster I work, the more rewarding it is. This comes with some risks as well. What if I estimate that a project will take 15 hours, bid accordingly, but it really takes me 30 hours to complete? I'm making another mistake here... I'm not taking profit into account. If I step outside of myself for a moment and pretend that I'm an employee to myself, and employees are paid an hourly rate (let's say $75/hour) and I'm bidding on the cost of a project based off of just my raw production costs, then I make $0 in profit. All of the income goes directly into paying for the employee salaries, leaving nothing for the company, meaning growth is impossible and I lose money over time due to overhead costs. Instead, I should be taking the employee salary ($75/hour) and multiplying it by a factor of at least 2.5x. If I replace myself with a hired employee and keep the same fee structure in place, then the company is equally profitable because I am interchangeable with other workers. If I add more workers to the team, then of course my bid estimates will change. So, the total bid = sum of all wages * 2.5x; For clients, this could be a pretty good system as well. Instead of having runaway costs inflate a project budget, there is a fixed cost of production. My biggest challenge will be to accurately estimate the scope of work and bid accordingly. If I underestimate the scope, then I eat the cost difference. If I overestimate the scope, more profit, more reward! But then, I also come full circle to the original problem I had: If I originally took 10 hours to finish a project and bid accordingly based off of that time estimate, but through experience, innovation and increases in efficiency I now reduce that same work to 2 hours and bid accordingly, I would still be losing the hourly difference. So, do I bid as if I'm starting everything from scratch because my competitors would be in the same position? Or do I look at the requirements of a project and use that as an input parameter into a piece-wise defined function to assess estimated cost? Or, do I just pick high numbers in a random ballpark and hope to get lucky? Obviously, if requirements change, then the cost should change proportionately as well. If I charged a flat $10,000 for a project given its requirements / feature spec, and then a few weeks later the client decides to add/subtract a requirement, how would I figure out how to proportionately adjust the pricing to reflect the change in scope? I... don't... know... One other thing I'm finding annoyance at is that some clients aren't good clients to take on. Indies and startups are bad because they often don't have money, no matter their good intentions and promises. If it's going to break the bank for them to have me work for them, it's likely they'll be unable to pay me or that it will take 6+ months for me to get paid. I owe people money, I can't keep them waiting because I'm waiting to get paid. If they're sweating over my up front fee of $150, I shouldn't take them on as clients. My policy should be, "If I think they can't afford me, they can't afford me.". It may be better to risk leaving money on the table than taking on bad clients. Maybe I should increase my fee to weed them out? Another factor I hadn't considered are the non-billable hours I put into project efforts: Responding to emails and answering phone calls. On some projects, I've put more hours into phone calls, conversations and emails than actual, billable hours. Now, I want to be a nice person and to be easily accessible to my clients, but every hour I spend on email or phone calls is an hour I'm not spending making money. Every hour I'm not making money is also an hour I'm not working on Spellbound. I'm tempted to charge for my time here, but I don't want to start a stopwatch every time my phone rings or I get an email requiring a response. Maybe I should just pad my estimated hours to account for time spent communicating? Or maybe I should measure the average amount of time I spend doing administrative stuff on behalf of a project, and adjust my multiplier accordingly? Instead of a 2.5x hourly rate, maybe 3.5x? The last few factors I also hadn't been considering is that I'm a freelancer, with talent and experience, ready to hit the ground running, today. I'm not an employee, so I don't get "company benefits". No medical. No dental. No vision. No retirement fund matching. No overhead costs (HR, managers, office space, parking, cafeterias, admin staff, etc). When the project is complete, I am done and go away -- an employee would still incur costs afterwards. No employee liability. Don't like me or my work? Fire me, no mess, no HR hassle, no legal wrangling. That means I have to pay for all of that stuff out of my own pocket, so I need to charge more as a contractor. My girlfriend has taken ample opportunities to remind me that I'm not charging enough. She told me that based on my skill set, I would be equivalent to a "technical editor" in the Hollywood film industry, and they charge something like $175/hour. Based on my background and experience, and how niche my industry is, she believes I should be charging at least $300/hour. That... makes me a bit pale to consider as an hourly rate. I have a hard time believing I'm worth it. But hey, if I can complete a project in hours which would take other people 5-10x longer, if not more, than maybe I am worth it. I recently went and visited a motion capture studio near my office to figure out how I can use them and what their rates are. They charge $3750 for 4 hours, or $8000 for 8 hours. That's a lot of money for a poor indie like me, but... really, it's not a lot of money at all when you think about it. I should be charging roughly in that ball park, right? Deep down inside, I think I feel afraid to charge a lot of money for what I do. But I think I need to reframe the way I think about this. People aren't hiring *me*, they're hiring *my production company*, and for now, I just happen to be the sole employee. If I staff up in the future, I wouldn't feel bad charging high rates to cover my costs. But staffing up would also mean I have to dedicate a significant chunk of time towards staff training, and I'm capable of training staff, so... that means I'm pretty good, right? I guess I just see the work that I do as "easy" and "enjoyable" and I shouldn't be getting paid for this. But, the work is only easy for me because I've got 18 years of experience and the projects I take on are 10x easier than writing my own game engine from scratch, or building enterprise systems for the military. Truly, the biggest risk for me is that the work is such a cakewalk for me that I am bored by it. I was realizing this afternoon that I'm most incentivized to work on other peoples' projects when I'm getting paid really well for them. $75 per hour is not enough money to motivate me to overcome my boredom, but $150/hour is. My girlfriend also tells me that I'm terrible at business, that I don't really have the head for it. I half believe her because she's a lot more experienced than I am, and she's bringing in a lot more money than I am. I've been thinking carefully about what I'm currently doing, how it's not profitable, and what I need to do in order to make my work profitable and worth my time. With my current flow of contract work and my billing rates, I don't make enough money. Honestly, it's just barely enough to pay my cheap office rent. I'm practically treading water, getting nowhere even though I'm working hard. For the last few weeks, I've been thinking that I need to get more proactive about getting money. I need to get out of my chair, put on a nice dress suit, take my VR goggles, and go door to door at every company and show them what I can do for them and how it can help their business. I need to figure out my sales pitch, refine it, and go get myself some big work. I believe in VR, I think its the future, I am bullish on its prospects, and I can sell. I have proven to myself that I have the personality and capability to sell, I can build what I sell, so... I should just get up and go do it. I'm optimistic that I could do well, but I'm sort of holding myself back somehow. The dream is that I do well enough at bootstrapping that I can work myself out of every job and become more of a CEO/producer type, hiring people to replace me. Programmer? Hire that out. Sales guy? Hire that out. Film guy? Hire that out. Hire people for everything -- delegate -- don't get my hands dirty, don't get into the weeds. If I do, I'm still doing it wrong. While I'm fully capable of writing code and producing everything myself, I can't scale. I would be just one guy, taking on projects with a scope of what only one guy can complete. Big projects = big money. I also sort of think that I should split my time 50/50 between providing services to clients and creating my own software applications and releasing them online. The problem with exclusively doing work for clients is that it fixes my scalability to whatever workload my production company can handle. My throughput is fixed, and thus my income is limited by my throughput. It would be a trap which limits my growth potential. However, if I build and release my own apps at the same time, my growth potential is limited only by my marketing and sales capabilities. Once an app is completed, I can make an infinite number of copies in an instant and sell them. If I diversify and make several apps in several different market categories, a few of them are bound to succeed. I have been particularly infected by an idea which could potentially establish a new market category for content in the VR market (I'll share details after I execute). If I can produce it, market it, and sell it, and it thrives, then I could scale it out and go big. I'm planning on creating a working prototype this spring and releasing it to the market to see how it fares. Anyways, the point is that it would be easier to make $1m by scaling out a successful app than by scaling out client services, but a successful app could also be an additional service category offered to clients. However I do it, I will fund the production of Spellbound and I will have a well funded team working on it...eventually. Anyways, I did something cool the other day. I integrated Leap Motion with 360 videos, so you can use your own hands to pan the camera around. I'm also going to add in finger taps for pressing buttons, so people can feel sort of like Tom Cruise in Minority Report. The placeholder video was shot a month ago at a Dell factory in China as a part of their effort to be transparent about their production pipeline. Check it out:  

slayemin

slayemin

 

Spellbound: Winter Update

I took the last two weeks of December off for holidays, so no production was done for Spellbound during that time. I met up with my friend Russel (Magforce7) for an afternoon at my office and gave him a demo of Spellbound in VR. He works for Firaxis, so it was interesting to compare notes on development and production. Without a doubt, he's a lot more experienced with production and development, so I tried to glean as many tips and tricks as I could. It was also his first time trying VR, so I gave him a bunch of quick VR demos so that he could get familiar with the medium and how to interface with it. It's interesting to compare the differences between producing a traditional video game vs. a room scale VR video game.

In terms of production, I've written out the complete narrative manuscript for Episode 1 of Spellbound and have begun shopping it around to anyone willing read it. It's not "done" by any stretch, it's just the first draft, and the first draft is always going to be susceptible to lots of revisions. Currently, it's about 40 pages in length. That's about what I had expected. Now, I need to go through and do a ton of polishing passes. I think of the story sort of like one of those JPG images which loads over a slow internet connection. The very first version of the image is this highly artifacted mess which barely holds a semblance to the actual image, but with each pass, the resolution of the image improves and the details get more refined each time, until you end up with a perfectly clear image. With regards to writing narrative for a VR game, I think the pass process is going to be a lot more convoluted. The first pass is just trying to write the story itself and figure out what the story even is. The writer explores a bunch of different directions and the final product is the choices by the writer which yield the most interesting story. But, you can't just take the story of a writer and plop it into a VR game and call it perfect. In fact, the writer must keep in mind the medium they're writing for and what the capabilities of that medium are. If you're writing a script for a movie, you have to think about what scenes you're going to create and possibly consider a shot list, and also think about the actors who will portray your characters and the acting style. You can effectively frame the shot of the scene to show exactly what you want the audience to see. That's a great amount of power and control over the audience experience. Writing for VR is completely backwards. I have to preface this by saying that I'm a novice writer and have never written a script, much less, a script for VR, so take my words with a hefty grain of salt. My writing technique mostly consists of putting myself into the body of the character. I am that character. That character has a personal history. A personality. A style. Stated interests, and unstated secret interests and ambitions. Character flaws, and character strengths. I see the scene from the eyes of the character, see the state of the world, listen to what was just said, and then react based on the traits of my embodied character. The character should always be trying to progress their ambitions. Character conflict should happen when ambitions collide. When it comes to VR games, the protagonist is the player themselves, so you have to keep in mind that the protagonist has agency which the writer can't control. They experience the story from the first person perspective, through the eyes of the character they embody. So, whatever happens to the main character also happens to the player. With VR, the player brings their own body and hands into the scene, so those are things the writer can interface with. Maybe the player gives a bow to a king? What if they don't bow before royalty? Maybe when you meet a new character, they extend a hand to give a handshake? What happens if you don't shake their hand? Maybe a character comes forward to give the player a huge hug? The secret sauce for VR is finding these new ways to develop interpersonal connections with characters in the world and using that to drive story and player experience. I try to keep this at the forefront of my mind when writing for VR -- first hand player experience is king. I also want to give my characters depth, so I do this mostly through subtle narrative exposition, mostly in the form of ambient banter between characters. For the sake of simplicity of production, the main character doesn't have narrative conversation choices. This means I don't have to create conversation trees or user interfaces for dialogue choices and the flow of dialogue can be seamless and uninterrupted. I am starting to audition for character voices. I've got a list of local voice actor talents and am asking a few of them to send me a few demo lines from the manuscript and a quote for their day rates. It's hugely inspiring to hear the voices of the characters saying the lines I've written. It feels like these characters might actually exist somewhere outside of my imagination, and I owe it to them to give them the very best lines I can come up with to portray their nature and ambitions correctly. A few people have read my manuscript and given mostly positive feedback, so that suggests that I'm roughly on the right track. I'm going to spend a few days taking it to various writers meet up groups and getting critical feedback, so this will help me immensely to get to a higher level of polish and clarity. If you're interested in reading the manuscript and my production notes, feel free to read the google doc and supply feedback in the comments below: https://docs.google.com/document/d/1IvNYNf9NqtdikD6UZuGq-rUo9yU5LVqqgIlWsz6n2Qs/edit?usp=sharing (Note: It's a work in progress, so you can see changes happening live as I edit it.) The ideal is to write a story which is so compelling that it grabs people and makes them want to read it. I want to be able to drop a 40 page manuscript in someones lap and tell them to read it. They'll be thinking, "oh god, more bullshit. I don't want to read this crappy novice writing. I'll humor them and read two pages." So, they read two pages. It's good. They decide to read another page. It's also good. In fact, it's getting better. They turn to the next page to keep going. Wow. It's actually a decent story. They keep turning pages. Forty pages later, they're surprised to have read the whole thing and they are left wanting more. It's a pleasant surprise. The story should be good enough that it stands strongly on its own legs. It doesn't need anything else to be a compelling experience. Now, if you experience the same story in VR, and characters act out their lines, and the voice acting is stellar, the experience of the story is just multiplied by the talent and quality. This is the ideal I'm shooting for. Spellbound will be a story centered VR game, rather than a game which happens to have a shallow story layered on top. It's worth taking the time to nail the story and get it right, so I'm taking my time. When the manuscript is complete, I'll have voice actors voice out each of the characters. I really don't want to have to do a lot of dialogue resamples, so I need to make sure that the first time a line is voiced is also the last time it's voiced. The goal is to avoid revisions. So, how do I do this? My current plan is to polish the story and get it as close to perfection as possible. Hiring voice actors costs money. When I drop voiced lines into the game, I am going to need to know whether the line works in the current scene with the current context. So, a part of the creative writing process will require for me to experience the scene and adapt the writing for context and length through a bunch of iterations. I'm going to voice act my own characters with a crappy headphone mic and use these assets as placeholders. It'll be a really good way for me to quickly iterate on the character interactions and player experience. I kind of feel silly, like I'm just playing with dolls who are having a conversation with each other. But hey, maybe that's really the core of script writing in hollywood too? On a personal note, I've decided to give up all social media for a month. No facebook, no twitter, no reddit, no youtube, etc. The primary reason is because it costs me too much time. Typically, my day starts by waking up, pulling out my laptop and checking twitter and facebook for updates to my news feed. That costs me about 30-45 minutes before I get out of bed. Then I go to work. I get to work an hour later, start a build or compile, and since it's going to take 5 minutes to complete, I decide "Hey, I'll spend five minutes checking facebook while I wait.". That five minutes turns into twenty minutes without me realizing it. And this happens ten times a day. I can easily waste hours of my day on social media without consciously realizing it. It adds up, especially over the course of days and weeks. And for what? To stay updated and informed on the latest developments in my news feeds? Why do I actually care about that? What value does it add to my life? How is my life better? Or, is my life actually better? What if social media is actually unhealthy? What if its like cigarettes? Cigarettes cause lung cancer with prolonged use, so maybe social media causes mental health problems like depression, low self worth and narcissism with prolonged use? What if social media is inherently an anti-social activity? Anyways, I've consciously decided to abstain for a full month without social media as an experiment. So far, I'm five days in and realizing how much I was using it as an outlet for self expression. Something happens to me and my default reaction is, "Oh, this would be good to share in a post!", and now I realize "Oh, I can't share this on social media. Who am I actually trying to share this with? Why am I trying to share this? Can I just forget about sharing and just relish the experience in this fleeting moment?" The secondary effect of abstaining from social media is that I'm also trying to pull away from technology a bit more so I can find a more healthy balance between technology and life. Currently, if I'm not staring at a screen, I'm at a loss for what to do with my time. Should I really live my whole life staring at glowing rectangles? Is there more to life than that? How would I feel if I'm laying on my deathbed and reflecting on my life, realizing that I spent most of it looking at screens? I need new hobbies and passions outside of screens. So, I've picked up my old love for reading by starting in on some fantasy books. Currently, I'm well on my way through "The Way of Kings" by Brandon Sanderson. I'm reading his first book slowly, digesting it sentence by sentence, and thinking about it from the eyes of a writer instead of a reader. It's an amazingly different experience. He's got some amazingly clever lines in his book, and there are some amazing pieces of exposition which the author uses as a proxy to share his own attitudes and life philosophies. I am going to steal some of the writing techniques and use them myself. I'm also still doing VR contract work on the side in order to make money to finance my game project. The side work is picking up slightly and I'm getting better at it. I have this ambitious idea for a new way to create VR content using 360 video and pictures. Most clients are trying to capture an experience or create a tour of something in VR and taking audiences through it. Essentially, it's mostly just video captured in 360 and then projected onto the inside of a sphere, and then setting the player camera at the center of the sphere. It's somewhat simple to implement. My critique is that this isn't a very compelling virtual reality experience because it's really just a passive experience in a movie theater where the screen wraps all around the viewer. There's very little interaction. So, my idea is to flip this around. I'd like to take a 360 camera and place it at various locations, take a photograph/video, and then move the camera. Instead of having a cut to the next scene, the viewer decides when to cut and where to cut. So, let's pretend that we're creating a virtual reality hike. We incrementally move the 360 camera down the trail, 50 feet at a time, for the entire length of the hike. A hike may not be perfectly sequentially linear, there may be areas where you take a detour to experience a look out on the side of the trail. So, on the conceptual data structure level, we are going to have a connected node graph arranged spatially, and the viewer will transition between connected nodes based on what direction they want to go on the hiking trail. I'll have ambisonic audio recording, so you'll be able to hear birds chirping in the trees and a babbling brook in the side of the trail, etc. The key difference here is that the viewer drives the pace of the experience, so they can spend as much or as little time as they want, experiencing an environment/scene, and since they can control what nodes to visit next, they have agency over their entire experience. This is the magic of VR, and if I get a prototype proof of concept working, I think it can be a new type of service to sell to clients. I can go around Washington State and go create virtual recreations of hikes for people to experience. There's some beautiful hikes through the Cascade mountains. We have a desert on the eastern half of washington, filled with sage brush and basalt lava rocks. We also have a temperate rainforest on the Olympic peninsula, where we get 300+ inches of rain a year, with six feet of moss hanging off of tree branches. The geography, flora and fauna are somewhat unique to Washington state, so if I can create a library of interactive virtual reality experiences of various parts of our state, it would be a pretty cool experience, where you can get virtual tours of various parts of the state. It would almost be as good as visiting in person and a good way to preview a place you might want to experience. IF it is a popular form of content, I can expand my content library by offering virtual reality tours of other parts of the world people wouldn't otherwise be able to visit. Would you like to explore the tropical jungles of Costa Rica? Would you like to climb the mountains of Nepal? Would you like to walk around in Antarctica? Would you like to go to the Eiffel Tower? If I do this right, I could create a fun VR travel channel and combine some educational elements to the experience. It would be a good way for me to get out of the office and experience the world. I'm currently working on building a prototype proof of concept to figure out the technical side and user interface, and will probably have something rough built out by the end of the month. This could turn into a cool new way to do interactive cinema in VR. I haven't seen anyone else do something like this before, but I may just be under informed.

slayemin

slayemin

 

Writing the story for Spellbound

Spellbound is intended to be a story driven game. I feel that's the only thing which can make the game interesting on its own. The story of Spellbound has gone through a lot of evolutionary changes throughout the development process. When I initially conceived of the game, I just had a game concept: "Throw fireballs at zombies in VR, using your hands". As a game premise, that's mildly interesting but it would quickly lose its novelty and appeal. How do I make it interesting? I needed a story.

Initially, my writing approach was to ask hard questions about the world: Why are there zombies? Where did they come from? Why is the wizard in a zombie infested graveyard? What's going through the wizards mind? What was his life like? What was his past?

So, I tried to find answers which made sense, given that you're just some red cloaked dude in a wizard hat, slinging fireballs at zombies. The first version of the game and story was embarrassingly bad. The synopsis of the story: "You were a wizard whose wife had died, and you were searching for a way to bring her back to life because you missed her. So, you casted a spell promising to bring her back to life via resurrection, but instead, it just reanimated her and turned her into a zombie. The spell worked so well, that it also brought all of the corpses in the nearby graveyard to life as well! Your undead wife flees to the graveyard, so you have to defeat infinite waves of undead zombies. After a while, you face a big boss monster who was behind it all!"

As far as stories go, that was pretty pathetic but also short. I'm a half decent writer with imagination, I know I can do better if I just spent some time to work something out. I needed to ship something playable to people, quickly. I thought that the main map would be my main game play, but it wasn't completed yet and ready for public consumption (it didn't satisfy my quality standards). So, I created an early "prelude" level. I also needed a main menu in VR, and since this is needs to be a seamless experience between game world and game menu, the menu itself can't be a static 2D screen like you'd have in traditional 2D games -- the menu itself had to be a level which you interact with. I was ruminating on story in the back of my mind for a while at this point, and I decided that I eventually wanted to have five wizards, each from a different school and theme of magic, each with unique story lines. My game universe was growing in complexity. But, I can't focus on developing the story. I need to ship as soon as possible to get something playable out there! I had chosen the "Red Wizard" as the first school of magic and theme to focus on. I didn't know what the story would really be, but I had written a really rough outline which served as a rough map on where I wanted to go with the plot. I would come back to the story much later and flesh it out, but for now, I just needed to create the prelude story and introduce players to the game universe and introduce a character or two. I wrote the prelude story in a day, polished the dialogue, and kept it somewhat vague, but also left a cliff hanger as a lead in for the main story. Then I shipped it. Currently, you can still only play the prelude and experience that story, and its short at best, but it shows the story telling model I'm using for VR:
1. I introduce an illustrated storybook and a narrator reads the first six pages. This serves as an establishing shot / context, and also establishes the narrator.
2. I fade to black, load the game world, fade in, and the story resumes from the first person perspective. The wizard talks to himself as a way to guide the player on what to do (a bit weird), and the narrator adds story as well, sort of like how a dungeon master would.
3. At the end of the VR experience, we fade to black and return to the library menu, and resume reading 1-2 illustrated pages as sort of an "epilogue", which can serve as a seamless lead-in for the next story.

This month, I decided that I was a bit too aimless with my development and I needed to get more focused on shipping the next set of content. Okay, where do I begin? I don't have a level made, no story, barely any functioning spells, no crafting system, etc. What have I been wasting my time on?? Oh right, an AI system with machine learning. I realized that the pragmatic thing to do is stop everything else and focus on fleshing out the story for the red wizard. Once I have the story complete, I'll have a much better idea on the scope of the project, what scenes need to be built, what's important and what's not important, and I can start focusing on actually building my game around the story. This seems like an obviously good idea in hindsight. The story is like my game design document, and if the scope is too big, I can change the story until its achievable. So... I just have to write the story. The problem is, I just had a really rough outline on what I think the story should be about. Despite the outline, I actually don't know what the story is. Okay, so how do I figure that out? I just have to start writing. But, I can't just start writing blindly! I need to spend some time crafting the world, the characters, the history, the lore, etc! My approach to writing my story is to write out the very best first draft that I can, as completely as I can. The point is not to have a story ready for production, but to just figure out what the story is. What story am I trying to tell? Why is it interesting? What captures the readers attention and holds it? What can the audience get out of the story? What makes the story emotional? What creates a sense of wonder and amazement? What are the high points and low points of the story? Who are the protagonists? Who are the antagonists? Who are the supporting characters? What is every characters motive? Every character needs to have a flaw to be interesting, so what are the character flaws? How do those flaws get revealed? How does the character flaw play into the story? How does the story begin? What's the problem the characters are trying to solve? What's the struggle? How do the characters overcome the problem? How does the character need to grow in order to overcome the problem? How does the problem get resolved? How does the character feel about the resolution(s)? How does the audience feel about the resolution? How do we set ourselves up for introducing the next episode? Oh, and by the way, all of this has to be done in VR so we have to assume that the protagonist has total agency over decisions made, so story has to account for that.

It's a bit of an overwhelming puzzle to work out.  It's extremely important to note that since my game is going to be story driven, where the story either makes or breaks the final result, I cannot afford to half heartedly write a mediocre story. I have to write the greatest story I'm capable of writing. My game depends on it. The future of my one man company depends on it. My income depends on it. The story is the backbone. It's my secret sauce. My secret weapon. It's going to be what makes it a "must have" for every VR gamers library. And it can't just be a story which was shoved into a VR game, it has to be a story built from the ground up, specifically for VR, to make use of the unique story telling capabilities VR offers. So, I cannot just write out a first draft, call it good, and move forward with production. If it takes two weeks or two months to get the story perfect, then so be it. So, I'm thinking that I'm a bit of a novice when it comes to story writing. I have never published a novel. Never wrote a screen play. Never wrote a story for a game. At best, I've written a few short stories for a community college class. But, I have good story ideas, damnit! That's my stubbornness and ego peeking through, insisting that despite my lack of experience, I'm more qualified than anyone else to be the one who writes the story. How do I account for my lack of experience with "officially" not being published? I say, "It doesn't matter, I don't care, fuck it, I will just have to write 20 drafts to be on par with a professional." I think that's the right intuition though: Write 20 drafts of the same story. The first few drafts are going to be exploratory. You don't know what the story is until you've written it. You don't know who the characters are yet. You don't know their motives. The first version of the story is just a congealing of the oatmeal, where you bring it all together and sort of figure out what the real story is. This is where you answer all of the questions I listed above. You might need to write several versions of the story. Think of each version as sort of like a parallel universe, where each version can explore different possibilities in plot development. Eventually, you'll find that you're drawn to certain plot highlights and themes more strongly than others, and those become your story.

At this point, you have written your story about 3-5 times. You're familiar with it, but not intimately. Now, the story becomes more like sheet music to you (the author), and it's a bit of an unfamiliar song. You can kind of play the notes and create a semblance of what the song sounds like, but it's rough and spotty. You know what notes you need to hit and when, so the only way to properly hit those notes is to practice, practice, practice. This means you're going to be rewriting your story, over and over again, each time getting more and more familiar with the plot. There isn't a fixed number of times you need to rewrite the story, but you'll know when you've written the final version: It'll flow like beautiful music off the paper, wrapping the reader in a warm hug before fleeting away. The reader will be embraced in a feeling of warmth and happiness for a moment, and then left wanting more, more, more. You've now got a page turner. A novel people can't put down. A movie which demands your attention. A game people can't stop. What happens next?! ...Turn the page to find out!

I was recently encouraged by a blog article I read on the writing process of William Shakespeare. Most people think that his writings was pure genius, written from divine inspiration, and it just flowed to him easily via unnatural talent. Historical records of his writings show that actually... he wrote many, many revisions of his plays over the years. Even Shakespeare wasn't some savant writer who wrote perfect first drafts, and he's considered to be the best writer in the history of the English language.

But I realized that I can't just start writing successively better iterations of the same story. There's SO much more to the story world than what people read on the pages. You know how when you pick up some fantasy books, and on the first page they have a map of the world, with kingdoms, city names, mountain ranges, rivers, oceans, and all of that stuff laid out? There is a whole story universe which the story events are set within! Each kingdom may have different politics. Different cultural customs. Different building construction aesthetics. Different values. Those background differences will and should make an impact on the story as its being told! Is slavery legal in one kingdom but not another? How does the climate affect clothing and customs? How does a traveler from one kingdom deal with the differences in culture in another? Is it a source of character conflict? What are the motives of each kingdom and its political leadership? What is the history which shaped the current state of the world? How does the past factor into any current conflicts? There's a LOT more investigatory questions to ask, but you get the idea.

I realized that this narrative background stuff is very important to establish! It is literally the foundation upon which your story rests. The presence of this background scaffolding may never actually manifest in your story directly, but it is the world which contains your narrative events. If you don't build the world, your story doesn't rest on anything solid and it will be very wishy washy. So, before I started earnestly writing my actual story, I spent a lot of time writing about the world and its history. When you read my story, you are only experiencing 10% of the universe/work. The other 90% was scaffolding which was put into place, and then stripped away when it was no longer needed. People will just see the finished product and think, "Oh wow, this looks easy. I bet they just started writing from pure inspiration!", but that illusion is so far from the truth of the underlying writing process.

I spent nearly a week just writing scaffolding background material. What are all the races? What are they like? What are their values? What institutions exist in the world? What is the history of the institutions? What is the common sentiment in the kingdoms? What landmarks exist? Why are they important? What creatures exist? What's their lore and background? etc. etc.
You know what? I'm glad I did this. It created a nice background framework for me to work within. I, the writer, know everything about the Academy of Magic, who's really running it, where it's located, and its deep history, but the reader gets to discover little tidbits about this institution and they can gradually put it together like a puzzle. At the end, the reader may not know everything there was to know about the Academy of Magic, but maybe there will be more content later which brings those interesting details to the surface?

Just think about it: How much did you know about Hogwarts after the first Harry Potter book? How much did you really know about Luke Skywalker after only watching Episode IV: A new hope? And after you experienced all of the content and had a better understanding of the world, and then watched it again, how much more sense did the actions of the characters make when you understood the background context?

Anyways, I'd like to share with you a few select pieces of narrative content I've worked on recently. Keep in mind, all of this is first draft material, so there's a high likelihood that the 20th version will be very different:

~~STORY BOOK OPENS~~
Page 1:
[Narrator]: “The legend of Rupert the Red… goes something like this”
[Narrator]: “Over three thousand years ago, there was a grand battle between magicians of ages past. They nearly ruined the world, but instead, they set civilization back by thousands of years.”
*Picture of wizards at war, volcanoes exploding, land tearing up, red sky* Page 2:
[Narrator]: “The kings of old, never forgot the calamity. They unanimously decreed that henceforth…”
[Kings voice]: “all magic must be banned. Those caught practicing sorcery, shall be put to death!”
*Picture of kings sitting around a round table, one king is standing and leaning forward with a raised fist, addressing the other kings*

Page 3:
[Narrator]: And kingdoms across the lands, knew peace... With the exception of magicians.
[Angry crowd]: “Burn the witches! Burn them all!”
[Narrator]: “But while magicians and sorcerers can be hunted and killed, magic itself can never be extinguished. What the kings of old didn’t quite understand, is that magic itself is a gift bestowed upon mortals by the gods themselves. Oh, how they tried to kill magic though.”
*Picture of an angry mob with torches and pitchforks, surrounding posts with silhouettes of people tied to them, as a massive fire burns them*

Page 4:
[Narrator]: The gift of magic was a sliver of the gods themselves, given to mortals to fight against darkness. When darkness came again, the kingdoms were defenseless and fell like wheat to the scythe.
[People] : *anguished screams of terror*
[Monsters] : *roaring, gnashing and slashing*
*Picture of men, women and children being chased and killed by demon spawn. Sky is red, filled with smoke. The face of a grinning devil can be faintly seen in the clouds*
  Page 5:
[Narrator]: A few sorcerers who had evaded the murderous clutches of men, stood united against darkness and sealed it away at heavy cost.
[Magician Group]: Chanting in unison
*Picture: 5 men and women, holding hands in a circle, with red, blue, white, black and green magical flame pillars, and connected lines of magical color in a star pentagram shape. In the center, stands an old man (Sassafras).

Page 6:
[Narrator]: The kingdoms were safe again, but the kings… they blamed the magicians for their destruction.
*Picture of a group of soldiers nailing wanted posters to lamp posts*
(Hammering sounds)

Page 7:
[Narrator]: A young boy, with the reddest hair you’d ever see, was born to a pair of humble farmers living on the edge of the Black Forest.
[Baby] : Crying sounds
*Picture of a crying baby being held in the arms of a mother, with a red shock of hair on its head*

Page 8:
[Narrator]: His father named him “Rupert”. The boy grew up, as all young boys do, and trouble followed naturally, as it does with all young boys.
*Squealing pig noises and boyish laughing sounds*
*Picture of a young freckle faced farm boy with a pot on his head, chasing a terrified pig with a stick*

Page 9:
[Narrator] : But, as fate would have it, the natural troubles of boyhood soon turned into supernatural troubles which only followed Rupert.
*burning house & inferno sounds, screams*
[Narrator] : Rupert was a magician. The villagers were afraid and angry.
[Villagers]: “Rupert is cursed! He’s a witch! Burn him!”

Page 10:
[Narrator]: Rupert ran, and he ran, and he ran, deep into the black forest. The village hunters eventually gave up.
(picture of rupert hiding under a stump while a dog search party with torches looks for him in the distance)
*barking sounds in the distance*   Page 11: [Narrator]: Rupert wandered through the forest for days, getting hungrier and hungrier. He stumbled on an old, broken tower of mossy stone, and made it his home. He lived on bark and berries.
*picture of a young boy trying to eat bark in a forest, with teeth almost breaking against it*
Page 12:
[Narrator]: He lived for years, completely alone, terrified of the supernatural troubles which seemed to follow him everywhere.
[Narrator]: Last night, Rupert discovered a book as old as time: The lost book of Sassafras. He was about to change the course of history -- FOREVER.
*Picture of Rupert sleeping soundly on his back, with drool coming out of his mouth. A black crow with red eyes watches.*
Snoring noises, followed by “Caw, caw! Caw!” from the crow.

~~FADE TO BLACK FROM STORYBOOK MODE, FADE INTO GAME VIEW~~   Note: Cawlin has somewhat of a German accent. [First morning, wake up] Rupert is sleeping in his bed after his late night journey into the undead infested crypts. He has been sleeping restfully for 11 hours and it is now nearly noon. An impatient crow stands at the foot of his bed. RR: "ZZZzzzz...ZZZzzz...huuuurffffgll, guuurffflllghh..." (deep snoring) Cawlin: "Cawww... Cawww... Cawkadoodlydoo! Wake up, you!" RR: "ZZZz---huh? Who said that?! Who's there?!"
Rupert awakens slowly, the VR camera opens eyelids slowly, blinking awake. The player is looking down the foot of the bed at the crow. Cawlin: "Caww.." RR: "Oh… it’s just a stupid bird." Bird cocks it head to the side in curiosity. Cawlin: "Caww?" RR: "Oh, just listen to me. I'm already going mad -- first it starts with talking to the birds, then its rocks and then its trees." Cawlin: "Caw!" RR: "Say now, how did you manage to get in here? I didn't leave a window or door open last night, did I?" Cawlin: "Caw… Caw..."
We wait for the player to get out of bed. They can either click the bed or walk out of the bed zone. Once they move out, we quickly fade to black and fade back in, to the wizard standing at the bedside. RR: "If I'm going to be a raving madman talking to bird brains, you must ... have a name... I shall call you..." Cawlin: "Caw... Cawlin." RR: "...Cawlin." Cawlin: "Caw! It's about time you got up, it’s well past noon! And just who might yewwwww be??" RR: "What?! A talking bird?! Now, I've certainly gone mad!" Cawlin: "Yes, yes, you’re a certified loon and I’m a crow.” (rolls eyes)

Cawlin: “Now that we’ve gotten that out of the way, who are you?" RR: "Well...I'm Rupert!” Cawlin: "RRRrrrrupert… what is it that you’re doing in these woods?" RR: "This is my home! I live here." Cawlin: "Ho… how unusual... a huuuuman living in the black forest..." RR: "Unusual? ...Why?"
Cawlin: “Humans haven’t ventured into the black forest for centuries. Those that do… never come out alive. There’s something… peck-uliar about you Rupert… What ees it?”

*Rupert feels afraid for a moment because his secret about being magical might be given up*
RR: “I… I don’t know what you’re talking about.”

Cawlin: “No, there’s definitely something about you…. I can… smell eet… ah, there eet ees again! You’re… magical!” RR: “...Magical? I don’t believe in magic...”

Cawlin: “You fool! Here you are, speaking with a talking bird, and you don’t believe in magic? I watched you last night as you rrrRRrroasted the walking dead with fi-yar.”

RR: “Wait, you were there? You saw that?! It was real?!”

Cawlin: “Of course I was... I had been waiting for you... all night! Quite the pyrrrrrotechic display, if I might say.”

RR: “I still can’t quite believe what I saw. I almost thought it was just a bad dream -- I just -- haven’t been sleeping well lately.” Cawlin: “Yes, yes, it was all real. No matter! … Eet has come to my attention… that you have acquired a certain… book.” (pronounced almost like “buch”) RR: “Yeah, it was a really weird book… I heard it speak! A strange voice called out to me.” (Cawlin jumps up and down in excitement, flapping his wings)
Cawlin: “Ah… do you know what you’ve found? Theees ees sooo exciting! You’ve finally found eet!” RR: “Ehh… what?”

Cawlin: “The buch! The long lost book of Sassafraaaaaas! …. Eets verrry special to me. I must see it!” RR: “What’s so special about this book?”

Cawlin: “Oh, eet ees only the most powerful buch of magic in the heestory of the world! It has been lost for thousands of years, but lost eet ees no more! You have eet! Eet is very special.” Cawlin: "Thees book, you know, it doesn't just get found by anyone. It... choooooses... Yes, that's the right word.. The book chooses ... who it uses. Many wizards think they use books, but never does it occur to them that the book uses them! Sassafras was it's last chosen wizard, and that was thousands of years ago! And last night, it seems to have chosen… RRRrrrrrrupert. Now, ...Why did it choose rupert?!" RR: "I don't know! I barely know anything about magic.”

Cawlin: “The book must have it’s own reasons… muahahahaha” RR: "So, what now?" Cawlin: “We must read the magic buch, of course! Let’s go find eet!” Cawlin jumps onto the left shoulder of Rupert. There is no further dialogue until the player goes downstairs.

A large book sits prominently on a table next to the door. It is sparkling and glowing, softly illuminating the darkness with red light.
Cawlin: “Oh… there eet ees! ...thees ees so wonderful. I can feel eet… so close… yet so far.” (said in a deeper ominous voice)
Cawlin flies from the wizards shoulder to go over to look at the book on the table. This helps direct the players attention.
RR: “oooh...kay…” (said in the tone of, “who is this bird?”)

Cawlin: “Open eet! Let’s see what secrets eet contains!”
We wait for the wizard to use the book. When he uses it for the first time, the book opens and a bunch of green energy swirls from the book to the wizard. Upon the pages of the book is nothing but symbols and gibberish.

RR: “What was that?!”

Cawlin: “I don’t know. Magic maybe? Who cares, read the book!”

Cawlin: “Well? What does eet say? What do you see?”

RR: “It’s just a bunch of symbols and gibberish. I can’t read any of this!”

Cawlin: “What?! Oh no...I hadn’t counted on thees. Why did eet have to be him? ... Why?”

RR: “What? What do you mean?”

Cawlin: “You… you don’t actually know magic. Not yet, at least.”

RR: “I don’t? How is that possible? I was just throwing fireballs last night.”

Cawlin: “Ahem… yes… you’re welcome for thee assistance.”

RR: “Uh… what?”

Cawlin: “That fire essence you used last night… I put eet there for you. Eet was just a temporary conduit for your latent magics… You don’t *actually* know how to use magic yet...” RR: "Okay, so what? How do I read this book?" Cawlin: "I don’t know. I’m just a bird, I can’t read!"

RR: “So… then this book is useless to both of us.” Cawlin: “Maybe you can find a clue which could help us?” Cawlin flies back onto the left shoulder of the wizard.

When the player walks away from the spellbook, it disintegrates in a puff of green particles.
RR: “What happened to the book?! Where did it go?”

Cawlin: “Oh… amazing! …Eet’s bound to your magical spirit. Eet ees always with you!”

RR: “I don’t understand.”

Cawlin: “The buch! You can call eet back at any time, and you will never lose eet! Try it now… Just focus on a hand, imagine the book in it, press your fingers inward…” We wait for the player to press the book button on the motion controller. When they do, we spawn the book in that hand in a shower of green magical glitter.

Cawlin: “...and poof! There eet is! What an extraordinary book!”
The book is turned to the first page, and as we look at it, some of the symbols transform into letters and words. RR: “Well -- I suppose, but again, what use is a book I can’t lose if I can’t read it?” Cawlin: “Well, It’s a magic book, and magic itself is composed of symbols or something like that -- don’t ask me, I’m just a stupid bird -- but I’m sure there’s some way you can figure out how to read those symbols? Yes? Let’s open eet and see what clues we can find!” The wizard opens the book, and on the very first page is a small set of instructions on its use, written in a poetic style: It’s an empty book It stores the spells a wizard learns It has a few left over runes from Sassafras   Cawlin: “Oh, dear! The years just haven’t been kind to the pages of parchment. Even magic itself can’t protect its pages from the sands of time forever… Oh, no… oh, woe… it seems, knowledge… it has all been lost. Whatever will I do now?”
RR: “Uh… you make less and less sense by the minute. You seem to know more than you’re letting on, so tell me bird, what do you know about magic and this book?”

Cawlin: “Ehe. Well. ahem… Magic is just a tool used by mortals -- I mean, men… and eet can be used for evil or good. It just depends on the contents of the heart of the magician. Good magicians, naturally choose good magics, while evil magicians will choose… so called “evil” magics.” (Cawlin says “good” with disgust, and “evil” with affection)

RR: “So what? How does that help us?”

Cawlin: “One thing you must understand about magic, is that eet is composed of magical words and symbols. Without the proper words of a spell, there simply is no magic! So, men with the talent for magic, would often work very hard to find the proper symbols for magical spells. Sometimes, these… experiments, would go… very wrong! And they’d explode. Or turn into toads. Or become green for a day or two. Either way, playing with unknown magic is… dangerous.”   Cawlin: “Once a good sequence of magical words have been found, the magicians would write them down in their spell books. Then, they could say the magic words at any time, and… POOF! The spell would just happen!”

RR: “Just like that? It doesn’t sound so bad!”

Cawlin: “Well, it’s not quite so easy… There are lots of symbols to choose from, and just as important as the symbol itself, is the color of the symbol! Without the right rrrrecipe, you might be using the right words but never actually working the magic.”

RR: “So… magic words, magic orders, magic colors… why does it have to be so complicated?!”

Cawlin: *chuckles* “heee heee hee, you’re barely even a novice. Of course it seems difficult for you now, but in the hands of a master magician, magic can be wielded to shape worlds...and… make fooooood. Like… delicious corn! Let us start there -- you haven’t had breakfast yet, have you?”

RR: “I was just going to step out of the house to nibble on some delicious tree bark for breakfast…”

Cawlin: “You -- with your talent for magic -- have been eating bark this whole time?! Unbelievable! It’s time to change that. Fortunately for you, and my oh, so generous mood this morning, I happen to have found a few symbols of magic.”

RR: “What? You’ve been holding out on me. Why didn’t you say so sooner!”

Cawlin: “Well, they won’t do you much good unless you know how to scribe them into a proper spell.”

RR: “Where do I begin?” Cawlin: “First, we must go forage the forest for ingredients with magical properties. The first thing we’d like to collect, is a red pepper. Let’s go find some.” Rupert and Cawlin go wandering through the forest until they find a red pepper growing on a bush.

Cawlin: “There! Right over there! A red pepper!”

Rupert picks the red pepper.
RR: “Okay, I’ve got the red pepper. Now what?”
Cawlin: “The red pepper has the essense of red magic! That’s why it burns your mouth when you eat it. We must extract this magical essence and use it to write your first spell. Let’s go back home.”

Rupert and Cawlin return to the mossy tower.

Cawlin: “Everything has a bit of magic in eet. It is the job of the alchemist to extract this magic and brew bottles of magical extract. Many mortals don’t rrrrealize what they’re actually doing, but they treat these magical extracts as ‘medicines’, but it’s actually magic at work. A brewed potion has potency, depending on the skill of the alchemist and the ingredients used.”

RR: “I’ve never brewed a potion. Where do I begin?”

Cawlin: “Well, you don’t really have a prrrrroper alchemist work bench, so we’ll just have to use the most rrrrrrudimentary tools available to extract the magical essence from the red pepper. You must crush the red pepper between some rocks, and you’ll get a little bit of red magic essense. Try it now.”

Rupert places the red pepper on a slab of rock and smashes it with a rock. A few seconds later, small vial of red liquid emerges.

Cawlin: “You did it! A vial of red magic!”

RR: “How do I use this?”

Cawlin: “If you drank it, it would burn your mouth and upset your stomach, but we’re going to use it as ink to write magic symbols. Let’s go to your test chamber… Oh... you don’t have one. Well, that table will have to do then...”

When Rupert approaches the table:
Cawlin: “Fortunately, I happen to know two magical symbols -- ‘Li’ and ‘Tu’. We can write them down on a magical parchment, in any order and with any ink, and if the symbols match a spell, you’ll be able to save it in your magic book and cast it any time.”

Cawlin: “To begin, grab a parchment and a quill!”

Rupert performs a “use” action on parchment paper. The spell crafting UI pops up on parchment.

Cawlin: “You’re barely even a novice, so you can only discover spells with two magical symbols. Later, you can cast much more complicated spells. Let’s begin with novice level magic.” Cawlin: “You don’t have a lot of parchment to work with, so you’ll need to find a spell quickly. To begin, select a symbol slot with your quill…”

Rupert places his quill on a slot icon and a dialogue window pops up.

Cawlin: “You only have a red magic essence, so choose that as your ink. Then, pick a symbol to write in this slot.”

Rupert chooses a symbol (either “Tu” or “Li”) and writes it into the slot. After the symbol has been picked, it is written into the slot.

Cawlin: “See? Even a novice can do this! Next symbol!”

Rupert repeats the same process for the second symbol.

RR: “Now, I’ve got two red symbols written down. Now what?”

Cawlin: “Now, you try to cast these words! It’s already in your hand, so just give it a throw and see what happens…. I will just fly over here… and stay well out of the way...”

Rupert throws the current magic spell. It either creates a magic spell (if correct), fizzles out, or creates a magical disaster. (Let’s assume it fizzles out)

RR: “What? Nothing happened!”

Cawlin: “You’re spell fizzled. Consider yourself lucky! That combination of symbols and ink was not a spell, let’s try again.”
Rupert uses the parchment again.

Cawlin: “This parchment is magical! As you can see, you got the right symbols and right color, but in the wrong order. Now, we can try a different sequence.”

Rupert keeps trying out different symbols, until he writes out “Tu-Li” in red ink. When he gets this sequence:
Cawlin: “You did it! You created your first spell! This is so exciting… I remember now! Tu-Li is fire, but your TuLi is very weak because you used a red ink with low magical potency. However, this spell is now saved in your spell book!”

RR: “So, I can fling these little fire darts at any time now?”

Cawlin: “Yes… you’ve begun the journey of a magician! You can find more symbols to discover other spells, and brew more potent potions to create stronger spells.”

RR: “Wait a minute… my essence of red magic is gone! Did you steal it from me?!”

Cawlin: “Relax yourself, Rupert! Whether you fail or discover a spell, the used ink is consumed. Magicians are always scavenging for ingredients to brew -- you magicians are scavengers, just like me!”

RR: “Now what?”

Cawlin: “Well, I must go. I smell a dead racoon down by the lake, and I’m absolutely starving. As for you? I saw an abandoned ruin this morning, but it was too dark and scary for me. Maybe your fire could shed some light on the situation? Or perhaps, you can find other ingredients?”

RR: “You’re leaving me?!”

Cawlin: “I’m getting rather...peckish. I’ll be back... Muahahaha!” Cawlin flies away and the wizard is left alone. There’s not much to do, other than hunt for ingredients or check out the abandoned ruin. At this point, we spawn clovers, blueberries, red peppers, orchids, and black lotus flowers. These are collectible ingredients which can be ground up and turned into vials. We also unlock the ancient ruins and make it accessible. Within the ruins is a new magic symbol which can be learned and a mortar and pestle. The player can summon a small flame to light their way through the darkness. There is a section of the ruin which is sealed off with a heavy door and some other strange symbols of magic. When the player emerges from the ancient ruin, the day has turned to evening.

RR: “Wow, it’s evening already?”
RR: “It’s getting late, I’d better get home before the forest monsters come out!” When it’s dark, we start playing large monster noises in the distant forest, mixed with snorting noises (like a sniffing pig), and something large crashing through undergrowth.
RR: “There’s something out there… it’s hunting me!”
  Rupert returns to his wizard house. He’s tired and ready for bed.
RR: “Whew, safely home at last. I need to get some sleep.”
We wait for Rupert to go to sleep OR until it is 2AM in game time. Either way, we fade to black and we begin to hear snoring noises.

slayemin

slayemin

 

Spellbound: October Update

This update is going to show you guys what an idiot I can be. Be warned, this could happen to you too!

For the past month, I have been focusing almost exclusively on developing an artificial intelligence system which uses machine learning to play the characters within my game. This is a primary objective. I have spent several weeks learning more about artificial neural networks, reinforcement learning, and a few other AI methodologies. I am by no means an expert at any of this -- I'm just a novice/beginner. I have also spent considerable time working on developing my own AI system which combines the best elements from the existing methodologies but also introduces a model for actual intelligence. Digging into this has felt like a series of intellectual epiphanies exploding in my head and has been extremely rewarding. I feel like I have a strong grasp on intelligence, learning, consciousness, and sentience, and am on the verge of creating a successful conceptual model to emulate intelligence. Okay, that's a bold claim to make. I'm going to just cut to the chase and discredit myself. This is like saying, "I found a compression algorithm which compresses anything by 97%". Strong claims like this, require proof to be believed, and I have not implemented this. Instead, I'm going to share my design progress on this:
AI 2.0- Reinforcement Learning.docx
(~8 pages, 10 min read)

Within Spellbound, I have spent a lot of time refactoring the AI and preparing it for a machine learning system. An AI agent now has memory and gets signal inputs about the state of the world through its senses. I have implemented sight, hearing, and smell. Sight is a cone of vision which is oriented to the characters head position and rotation. I collect a list of all objects which overlap the cone, and then I do a line trace from the eye to the object to see if there is a line of sight. If an object passes the cone test and the line of sight test, then it is registered as a visible object. Hearing works a bit differently than sight: Sight is looking out into the world to perceive objects, hearing is waiting for object noises to come to us. So, when an object creates a "noise", I create a sphere at that location and set an intensity value to be proportionate to the decibel value of the sound. Then, I change the radius of the sphere at the speed of sound and stop when the intensity of sound attenuation reaches zero (via inverse square law). If this sphere overlaps an ear, and the ear hearing threshold is capable of hearing the current intensity of the sound, then we register the object as being "heard".
The sense of smell is a bit different. Some objects emit odors over time, and the odor of an object slowly radiates outward (probably following an inverse square law for intensity as well). The important note to make distinct about odor is that an object is continuously emitting odors over time. Again, an odor is going to be represented by a sphere which grows over time and only overlaps noses. As an odor emitting object moves, it emits more odor spheres, and we get an "odor trail". A smart creature with a nose can detect an odor, and then find what direction the odor gets stronger, and then it can follow the odor trail to the odor source. So, a hungry zombie can smell living flesh and follow the smell to a living person.
All of the sensory inputs are stored in the short term memory of a brain. If a sensed object is no longer sensed, the lack of sensory information doesn't mean the object stopped existing -- it's sill persistent in memory. Instead of using raw sensory information as our input stream, I use short term memory as the input stream to drive behavior. We can think of memory as a representation of world state for the AI agent, and then operate based off of the state. We can either use this state information as inputs into a state machine based expert system, or we can feed this into a machine learning system. Either way we handle the inputs, should not matter: The output of both systems should be the most optimal behavior for the given state.

Currently, Spellbound uses the state machine based expert system for AI. It works. It makes a believable illusion of intelligence. The code for each characters behavior is roughly 200 lines. That's kind of manageable, right? Keep in mind, the behavior is currently scripted only to suit what is necessary for the prelude chapter of the game, so every time I want to add new game mechanics or capabilities, I will have to script out more behavior. This is where I become an idiot. My line of reasoning:
"Okay, I am probably going to eventually have up to 50 different characters. They will all need AI scripts to drive their behaviors. My game is constantly changing, so that means every time I make a significant change to the game, I will have to update each AI script. That sounds like a lot of work! Okay... I also don't even know what the most optimal behavior for every character will be, so that may mean that some expert systems are not going to be very good. Wouldn't machine learning be able to handle this gracefully? Let's do that." Okay. Why am I an idiot? Because machine learning is a trap for engineers. I recently learned about this new term called "Nerd Sniping". Let's take a reality check on what I'm trying to do here. I'm trying to create a generalized AI system which is so good that it learns how to play any character in my game as an expert, without any coaching or training from me. To date, the DeepMind team funded by Google, has been able to create AI systems which play Go so well that they can beat world champions, they can play atari games perfectly, etc. Now, I'm asking that same type of intelligence to play any character in my game? It's possible, yes, but it's not easy. After spending a month doing R&D on this, I realize how hard this would be to accomplish, and if I were to put an estimate on how long it would take for a novice/beginner like me to implement this, I'd be looking at a minimum of 3-6 months. That's 3-6 months in developer time, which means the realistic estimate would be multiplied by any number between two and ten. Just as I have the capability to write my own game engine from scratch (which I spent 12 months on!), I also have the capability to create this kind of general AI system. The hard question is, "Is this really the most important thing for me to work on for the next six months?". Let's put this into a different context: "Is the alternative approach cheaper and faster and less risky? (yes)" and "Do you want to ship games today or build technologies for 6-12 months away?"

You know that "Always be closing" scene from "Glengarry Glen Ross"? The equivalent for game development is "Always be shipping!". The focusing question for everyone on the team should be, "What am I doing to make this game ship as soon as possible?" And the other question: "What am I doing to increase sales?"
If you don't sell, you don't make money.
If you don't make money, like it or not, you are on your way out of the industry.
If you don't ship, you don't sell.
If you ship garbage, you don't sell.

Therefore, by hypothetical syllogism: If you don't ship or you ship garbage, then you are on your way out of the industry.
If you want to stay in the industry, then ship fast, ship quality, ship often.

My AI system, while interesting, does not help me ship my game faster. It's a trap. It's a premature optimization to solve a problem I don't have yet (and may not ever have!). There's a bigger problem to solve: I need to ship quality content asap. I could continue working on this AI system and I could develop it to work and be so good that it can be reusable within any game, and I could turn it into its own product/technology and license it out to other companies, even outside of the game industry. I eventually plan on doing this. However, the right time is not right now. I need to ship my game, and whether I have machine learning AI or expert system AI, won't matter to 99% of the customers.

So, I'm going to focus on wrapping up the production of the Prelude episode, shipping it asap, and then switching gears to working on the content for Episode 1. I'm going to design the content for Episode 1 to keep AI behavior relatively simple for now. If I ship Episode 1 and sales completely suck despite my best marketing efforts, then there's no point in creating Episode 2. If Episode 1 is a success, then I can build Episode 2, and *that* may be the right time to build out my machine learning AI. Certainly by Episode 3. The key is to build a customer base first so that releases actually have an audience to see them.

I've recently been talking by email with a developer relations rep from Oculus. He wanted to drop the price of my game for their online store to better reflect the content. Initially I resisted the idea, but started thinking about alternatives. 

I currently offer my game on Steam for $20 in early access, which has Episodes 1-3 included, whenever the production finishes. I like the simplicity of that structure because it means I can just release builds which have content updates included. Another option I am now considering is releasing each episode as a separate purchase. I could release the prelude for free to act as a teaser/loss leader, and then have in app purchases for each episode. It might be a good way to build out an customer base, because people like free shit and if the content for the free episode is great and I leave a huge cliff hanger at the end, people will want to buy the next episode. The problem is that the current build on Steam only contains the prelude, so if I give the prelude away for free, nobody has any incentive to purchase the full set of content for $20. So, my current solution is to set the current build to the "premium" version when Episode 1 is released, and then make the prelude free. Existing customers won't feel cheated because they'll get all of the future episodes included. If people want to buy episodes individually, they'll cost a little more per episode ($7.99?) than a bulk purchase of $20. This also solves a future problem as well: What if a future customer isn't interested in the "Red Wizards Tale", but they do want to experience the content for "The Sorceress of Light"? Instead of spending $20 for content they don't want, they can spend it on what they do want.

Anyways, I need to refocus my efforts on shipping the final update for the Prelude. Get it done! The next step is to write the script for episodes 1-3. I've been reading a lot of fantasy books lately to get a better feel for writing fantasy, but I now just feel like an amateur writer in comparison to J.K. Rowling, Brent Weeks and George R.R. Martin. I guess it's important to remember that writing a good story is like constructing a skyscraper. If you only look at the finished product in wonder, you won't see any of the scaffolding it took to build it. The scaffolding of a writer is 20+ iterations of the story? So, I have to write my script about 20 times. The first five drafts will probably be garbage, and will mostly be about trying to find the story I want to tell. The remaining 15 drafts will be refining the story I found and polishing it to perfection. And writing for VR games is more like writing a movie script than writing a book. The reason I need to write out the full story in advance is that I need to know where the story is going so that I can go back to earlier sections of the plot and drop foreshadowing hints, cliff hangers, and sharpen plot twists.

slayemin

slayemin

 

Spellbound: September Update

PAX: I went to PAX as an attendee and checked out a few booths and games. I was thinking about setting up a booth in the VR section, but the financial reality made that impossible. I just can't afford the booth fee (10x10 booth - $1,050). Even if they gave me an indie discount, the price puts me way out. So, out of wild curiosity, I went to check out the VR village section of PAX. How many VR developers decided to have a booth at PAX? Who showed up? What was being shown? The results were surprising and not surprising at the same time. Oculus had purchased half of the floor space and were busy giving demos of their hardware and select games. They have deep pockets, so they can afford that, whatever it costed. The rest of the booths? There were about four VR booths. One was an indie team showing off a really early and rough prototype of their unity game. It was so early and rough that it was unremarkable at best. They got lots of feedback, but spent $1,000 + 4 days for it. There was Archangel VR, a booth run by Skydance Interactive's VR division, but aside from that, there was nobody else there. Zero indie VR developers at PAX. What does that tell you? I think it means that a lot of other indie VR developers are exactly in the same position I am in and can't afford PAX, so most of the VR industry is a no-show. VR Contract projects & 360 VR Audio:
I created a few 360 videos in VR with the film guys in my office space. I've gotten pretty good at it, so we're starting to experiment a bit more. One of the problems I have with 360 videos in VR is that it's really not the "best" use for VR. I think the inherent nature of VR requires the audience to feel like they exist within the virtual environment, and 360 VR doesn't quite sell the experience. So, we're looking at creating hybrid experiences, where we have a 360 video combined with 3D props which people can interact with. I'm also experimenting with better directional audio. I'm setting up a test demo where we have a 360 camera rig setup in a room and we also have four microphones set in known fixed positions, relative to the camera location. Then, I'm going to walk around the camera and make some audio noise so that the four microphones pick it up. Then, I'll take all four audio recordings and place sound emitters at the same relative position within VR, so when you replay the experience, each audio emitter plays their recorded track and the sound is automatically spatialized and attenuated. The cool part in all of this is that VR requires directional audio to attract the audiences attention to a point of interest. Like indirectly saying, "Hey, look over here! Something interesting is about to happen!". This does create some additional demands for video production though, because if a crew goes on site to film, they have to hide four to five microphones within the scene and save the positions relative to the camera so that it can be correctly replayed. The test is to see whether this creates enough value to make it worth the effort.

Another VR project I worked on recently was for a 360 VR video which plays like a "choose your own adventure". It's interesting, because you watch a bit of 360 video with actors following a script, something happens, a decision has to be made, and then you the audience, decide which direction the story goes, and the next segments of video resume until the next choice. I found that this has some technical problems to overcome:
1) high resolution 360 video has large file size. One minute of video is about 500mb.
2) The total size of a choose your own adventure video application is the sum of all videos. A 20 minute experience could be 20gb. I don't know how we're going to get people to download that onto their mobile phone. Video streaming would be a necessity!
3) Users have to be told that they have to interact with the video at certain segments. The interactive part of the video should loop without breaking narrative or fourth walls. This creates narrative challenges.

I tentatively think that this project is the first of its kind in the world. I've never heard of anyone else making a choose your own adventure film in VR. I think this could be a new product category and brings some interesting narrative tools to filmmakers. Branching stories are nothing new to video games, but it is new to immersive cinema. The project is a rough prototype which is seeking funding from Oculus via their launchpad program, so it may never actually see the light of day. Only time will tell, so we'll see what happens. Spellbound Story Writing: This month, I read the very first Harry Potter book. If Harry Potter is going to be a source of inspiration for the story/narrative, I should at least read the books so that I have a good understanding of the narrative structure and style. J.K. Rowling is a master writer and story teller, and it would be near impossible to replicate her work. However, that's not really my intent. I realized that just by reading her books through the eyes of a humble amateur writer, I picked up some new writing techniques. There was evidence of intentional design with the way the story was written and laid out (lots of setups). She certainly didn't just write a first draft, call it good and send it off to the publisher -- I got the sense that it was an intentionally crafted series of events which came through several iterative writing cycles. I think in my first draft, I'm mostly going to write out the full story with the intention of throwing it away (like a rough sketch). The goal is not to write a publishable story, but to figure out what story I want to tell. The next iteration would be a good second draft, but maybe the third, fourth, or fifth draft would be a lot closer to the final story. I think when you know what story you're trying to tell and how you're trying to tell it, the subsequent drafts become more focused on telling the story with flourish and style rather than figuring out what story to tell and how to tell it (if that makes any sense). The immediate production goal will be to finish up the current build I'm working on, and then spend a full month doing nothing but writing out the complete story as many times as it takes to get perfect. The story will have to be complete (for the whole "Red Wizards Tale" series) so that I properly structure the events to lead into the next story. It's always easier to change elements in a previous story if you find yourself writing yourself into a corner or if the story is boring. And it's way better to figure out how to fix the flaws in a story before you commit to the game production of each episode in the story -- know where you're going rather than blindly feeling your way forward. The interesting challenge here will be to figure out how to properly integrate VR into the story telling. So far, every story I have seen in VR has been garbage. I don't know exactly why, so I have to think long and hard about the underlying principles of VR narrative I need to use. One thing I know for certain though: The story protagonist must be the player. The story is what happens to the player, rather than something that is told to the player.

Spellbound AI: This has been an ongoing effort on my part. I initially set out to just finish the boss monster (Sassafras) and replace the placeholder asset I currently have in game. The idea was to create a boss which does a few special abilities and generally makes life difficult for the player, as would be appropriate for a boss monster. Unfortunately, I got carried away. The characters in the game were carefully scripted expert systems based off of state machines. Everything was hard coded, so things were pretty rigid. It works. Good enough. However, every action that a character could perform was just a hard coded "thing" that happened, rather than being an ability which was used. So, I set out to change this: Everything a character does should be an "ability"/"action" which is done. The ability is character agnostic, so using an "eat" ability would be a general ability but implementation would be character specific (polymorphism all the way!). Then I got this crazy idea: Each ability is really like an output node on an artificial neural network graph. In my current case, I'm just hard coding when to execute which abilities based off of an expert system I hand crafted.  Okay. It works for a few monsters. But what happens if I want to create dozens of different monsters, all with different behavior patterns? Do I *really* want to go and code up brittle expert systems for each monster class? Or is there a way to avoid all of this future work by creating the framework for a more advanced AI system now? I thought long and hard on how this new AI system should work. I don't want to hard code behaviors. I don't want to have an AI that needs to go through thousands of training cycles to get appropriate behavior. I want my AI system to gradually learn and get smarter. I want unscripted intelligent behaviors. So, to get all of this, I need to invent a new type of AI system. That requires creating a model for intelligence. I think I got it. Here's a rough outline on how it will work:
  Input Feed:
    A list of interactable objects (food, characters, doors, walls, ladders, etc).
    State of self (health, stamina)
    Hazards Decision Graph:
    Given the list of known inputs, choose the best action to perform.     The best action is the output with the best reward.     Graph Construction:
        The list of outputs is going to be created based on the list of inputs provided. We are going to create a list of possible final outputs.
        Then, we're going to create a weighted graph from our current state to the final output state.
        The weighting will be determined only by time cost (with travel time included).
        Then, we're going to evaluate the traversal cost of each final output node. This is done by summing the costs of each node traversed.
        The final output node with the best cost to reward ratio will become the "end goal".
        The chosen action will be the first step towards the end goal node.     The graph is reconstructed only when the input feed items changed (added or removed). After reconstruction, the graph is re-evaluated. Outputs:
    A list of possible actions Final Output:
    A chosen action   So, we have a graph which is constructed based off of input nodes (senses) and output nodes (possible actions) and the input nodes are connected to the output nodes via a series of necessary interactions. The final output will be determined by the best cost vs. reward ratio. The key to note is that the "cost" comes from the graph itself, but the "reward" value is going to be a variable function based off of the creatures brain value system. The graph will be like a template framework which brains use to determine the best course of action at any given point in time. The individual personality / behavior patterns will be created by tweaking a bunch of personality parameters which give various outcomes different reward weights. So, you can take the same graph, with outcomes which have the same weights, but the chosen outcome is going to vary by which brain is evaluating the rewards of each outcome! The brain of a goblin will choose different actions from the same weighted graph which a zombie would! The only unknown right now is "how does a creature do long term planning via evaluating a chain of consequences?" Anyways, a significant part of this month has been focused on creating the input layers and output layers of this graph. I have created the abilities system which can be represented as output nodes, and I'm currently creating the sensory input systems which are represented as input nodes. The current senses I am working on are:
-Eye sight
-Hearing
-Smell

Eye sight is pretty straight forward: You just attach a vision cone to a creatures head and feed the creature a list of all interactable objects which overlap the cone.

Hearing is a bit challenging. I actually want my characters to listen for sounds and to interpret and identify them. The end goal is to have the players microphone listening for the players voice, so if the player is talking in the graveyard or screams at the sight of a zombie, nearby monsters will hear the player making noise and be alerted to their position. Smell is going to be an interesting sense. I will attach "smell emitters" as a component to objects. Every second, the object emits a "smell" which is represented as a slowly expanding sphere. Each smell sphere will be linked to the next smell sphere, so it'll be sort of like a linked list. If a smell sphere expands so much that a smell is sufficiently dissipated, then it is no longer "sensable" and will get destroyed. In effect, a player walking around the graveyard will emit a trail of "fresh meat" smells which zombies will latch onto and follow like blood hounds. A lot of this is currently very much still in the "concept" phase of development, so I may be completely wrong on some ideas and approaches. However, I think the concept for this type of AI is a bit different from anything else I've seen (though, I am ignorant at what others have attempted so this may just be a reinvention of the wheel). If all goes well, I'll have a generalized AI system which can be used for all creatures, and behavior becomes an emergent property of a brain with preset value systems. When the scope of my game expands, I'll have intelligent entities which learn to function within the environment with minimal extra work on my part. I think once I have a fleshed out version of this AI system working, I'll write a comprehensive article detailing it out so other people can replicate it. Startup Week: Yesterday I gave a bunch of demos to the public during Startup week in Seattle. Everyone who played the old build was amazed by the tech, visuals and interaction systems. I wanted to say, "You think that's cool? Just wait until you see what's coming next...". I have slowly come to realize that my interface system is not easy enough for people to use. I still have to instruct people on how to play the game, so that means my game is not good enough. Trademark Conflicts: Today, it finally happened. I had the first trademark name conflict. On occasion, I look at the traffic to my Steam page via google analytics to see if there are any changes. Normally, the page averages about 30 visitors a day (That's pretty bad!). Two days ago, traffic went up to 650 visitors in one day. WTF? I did absolutely nothing to get this traffic, despite any intentional efforts. What happened? Why were people suddenly looking at my store page? Did I get a big break? Did I get surprise press coverage without knowing it? Did a social media page promote my game without my awareness? Did a popular youtube video go up? A kindly worded Reddit post somewhere? Was the Seattle Startup week more positive exposure than I expected? Why did traffic spike? It turns out that PC Gamer had released an article about a game currently in development by Chucklefish. The game looks like a version of Stardew Valley, but involving magic. Their internal name for the game? "Spellbound". This got coverage on Reddit with about 950 upvotes, so people were really excited about this game in development. As a result, people went to steam and started searching for "Spellbound", trying to find the store page for the game, but instead stumbled onto my store page. Uh oh... consumers are confused! And also, "Yikes!". What happens if Chucklefish releases their game in a month or two, brands it as "Spellbound", pushes a lot of marketing material promoting that branding, and then they realize that my game is getting confused with theirs and getting blow off traffic? Then their legal team decides to file a trademark to protect their name and then issues a "cease and desist" order to me, forcing me to give up my game name even though I had it first? Oh no... that would be a complete disaster for me because I've been using the name for over a year and it's the name my customers are familiar with, and all of my hard fought efforts would be undermined. It would be extremely disheartening. So, today I learned all about Trademarks. I filed a trademark application with the US patent office to protect the name of my brand. I then sent a very kindly worded email to Chucklefish to inform them about the naming conflict. In hindsight, I should have done this over a year ago so that other companies could look up the name in the trademark database before choosing the name and avoid conflicts. Completely my fault! Let this be a lesson to you guys: Before you name your game, check to see if its trademarked, and if its not, trademark it! Copyrights apply to intellectual property, trademarks apply to brands. I expect this will never turn into an actual problem, so I'm not worried, but I did file a trademark as a precautionary measure. This is an area you would want to be pro-active in, rather than being reactive like I am.

slayemin

slayemin

 

Establishing and maintaining flow

Definition: "Flow" is that mental state you enter into when you are focused and highly productive. It is a pleasurable state to achieve and leads to productive gains (aka, "getting into the zone"). When it comes to any sort of creative work (game development, writing, artwork, design, etc), it is really important to get into the flow state and maintain it for as long as possible. I would dare to suggest that this is one of the most important things for you to manage in yourself and others, and success is hardly possible without consistent progress. You want to get into this flow state when you begin creative work. Establishing Flow: Onramps The reality is that establishing flow is a fickle beast, and it's not something that can be toggled on and off like a light switch. Sometimes, you may spend an entire day trying to establish it and have no luck. These days are generally wasted, unproductive days. However, there are various controllable factors which make it easier to enter into the flow state. Some factors have no effect on some people, but some factors are universal. Here is what I have found to work:

Coffee: It is brown, hot, delicious and a caffeinated stimulant. It gets my brain juices flowing.

Music: I find that music helps to eliminate external distractions and can be invigorating.

On ramps: I purposefully design my task list so that I have an easy entry point for the next day. Leave yourself something easy and accessible to start the day with. You want a quick and easy victory so that you can build momentum. Once you have momentum, you can increase task complexity/difficulty and slide right into the flow state. If you don't do this, you create a barrier for entry for yourself the next day and its mentally easier to procrastinate or avoid work because its hard. Example: "This bug is super simple to fix / this feature is super fast to implement, I'll leave it for tomorrows onramp."

Exercise: By exercise, I don't necessarily mean going to the gym or sweating up a flight of stairs. I like to briskly walk to work, which increases blood flow and wakes me up.

Intention to work: I find it's helpful to have an intention to go to work to get something done. Clench your fists and say, "I will get this done today, no matter what.", and make it happen. Set a resolve for yourself. If you are in an environment filled with other people, you will share their intentions. If they intend to screw around all day and do nothing, so will you. If they intend to focus and get work done, so will you.

Enjoyment: It really helps a lot to enter into the flow state if you enjoy what you are doing.

Habit: If you have established a habit of consistency, you will find it's easier to repeat a pattern. This can be good and bad, because habits can be good and bad. Focus on creating good habits and breaking bad habits. 

Days off: We are not machines, we're humans. We need to take days off from work in order to maintain fresh minds eager to work. If you don't, you risk burn out and your productivity will diminish to zero whether you want it to or not. Its more productive to not work every day. That doesn't necessarily mean you have to take off every weekend -- take off a week day. You know its time to take a day off or go on vacation when you mentally feel like you are in a repetitive grind, doing the same thing, day in and day out. Sleep: From experience, it is not possible to enter into the flow state and maintain it when I have not had sufficient sleep. I am adamant about this. If you need an extra hour of sleep, take it! Would you rather spend the whole day fighting against brain fog due to lack of sleep (resulting in a wasted day) or would you rather spend an extra hour or two sleeping so that you can be maximally productive for the rest of the day? Distractions: The flow crash. I think of flow like traffic and driving cars. You have to gradually increase your speed before you reach this optimum cruising speed of maximum productivity. Distractions are like getting into a head on collision or hitting the ejection seat button. Here are the distractions to worry about and why they are distractions People interrupting you - They come up to you and start a conversation with you while you were in the flow state. Now, that state has been ended and you probably lost about 15 minutes of productivity time in addition to the time it takes to have the conversation. You want to design your work situation to prevent people from interrupting you. Lock the door. Have reserved distraction free time. Work alone. Schedule meetings instead. Side conversations - Someone else is talking about something to someone. They're having a conversation about something. It doesn't even have to be interesting. Whether you want to or not, you are probably listening to bits and pieces of this conversation. Every time you switch your mental focus from your task at hand to the conversation, you are interrupting yourself and getting distracted. Ideally, the way to counter-act this is to work in a quiet space without distracting conversations or noises. A second best solution is noise cancelling head phones with music which has no vocals. This is one of the top reasons why I think "open office" floor plans are terrible for productivity. Social Media & Email - Holy crap, this can be distracting and a major time sink. This warrants a category on its own because it can really destroy your day. How? Let's say you get an email from someone. What happens? Do you get a pop up notification and a noise? This suddenly attracts your attention to this email event, even if you ignore it. Flow = hitting the brakes. Social media is terrible as well because it can turn into an addictive cycle. "I wonder what's happening on facebook? Do I need to catch up on twitter? Reddit? instagram? email? online forums?" The curiosity can haunt you when you're trying to establish the flow state and you can easily give in to your own curiosity and accidentally waste 15 minutes to 5 hours on social media and email. This is a robbery of your time. For what? What tangible value do you actually get out of it?  Cell phones - Yet another source of distractions. They ring and make noise when people are trying to call you. You feel obligated to answer calls or risk being rude. You get text messages from people in your life. Ideally, I would throw my phone into the ocean and never get another one. Practically, you should put your phone on silent. Let your loved ones know that you are unavailable during certain hours. Home life - If you work from home, there are more distractions than you can count. The more people, animals and noise there are, the more distracting home becomes. Is your spouse trying to spend time with you? No work gets done. Do you have kids who need attention? No work gets done. Kids also have no concept of interruption, so they can't sense when you are busy. If you have animals, what happens when the dog barks at a noise? Or the cat meows for attention or walks across your keyboard? What about chores? "Honey, can you take out the trash? Can you do the dishes? Vacuum the living room?" etc. Home is generally a terrible place to get work productive done. If you must work from home, you should have a quiet study to work from, where you can lock the door to keep people out. Alternatively, you should work away from home. Food and bathroom breaks: It's a biological necessity for survival to eat and drink, and generally something you should do. Keep in mind though, excessive drinking of coffee (or other liquids) can lead to frequent bathroom breaks, which interrupt your flow. If you smoke cigarettes, smoke breaks can also be flow breakers. I advise against drinking alcohol if you're attempting to remain productive. If you get hungry, you should eat. Continuing to work while hungry turns into a flow interrupter because the pangs of hunger start turning into repetitive interruption signals. Technology - You have to be very careful with technology. Some technology is beneficial and enhances productivity, but other technology is a source of distractions with limited benefit. It's sometimes hard to tell the difference. Generally, instant messengers, skype, discord, email, and any application which interrupts you with a notification of any sort is bad for flow maintenance. Entertainment - In 2017, you have a ton of entertainment available for you at your fingertips, at any time you want. You can watch netflix. You can play video games. You can browse videos on youtube. Watch movies on demand. Stream TV shows. Use social media. This overabundance of available entertainment makes life fun, but it drains away your ability to be productive. This makes creative work much more challenging because there is an overabundance of distracting time sinks available to rob us of our productive time. Have fun, but be disciplined and use set hours for entertainment (start times and stop times). Conclusion: Overall, if you work in a quiet, isolated environment, you can get a lot more work done (Some people work late into the night because its quiet, isolated and distraction free). Take the time to be introspective about your work day and assess how it went. What was good and helpful? What was bad and unproductive? Some days, you won't enter into the flow state. Don't beat yourself up over it. It happens to everyone. Instead, focus on how you can make tomorrow a better day. What can you do today to make tomorrow better? I'm interested to hear what you guys think. Did I miss anything huge? What works for you? What hinders you?

slayemin

slayemin

 

July/August Update

The biggest struggle for me is still money. It's getting harder. Game sales have pretty much stopped completely, but game development continues forward. I'm starting to think I'm a bit crazy.
The rational side says, "Why are you still working on building a product which literally gets zero sales? It's time to move onto something that actually makes money."
But the emotional side says, "But I believe!!!" (bursts out in song) and then it tries to rationalize it by saying that "but... but... I just need more compelling content! Then, sales will pick up naturally!"

Reality check time: I have proven through analytics that adding content patches through steam updates does not in fact, increase sales or even viewer traffic to my store page. I could release product updates every week and that would not affect my sales numbers. The only possible way a product update would affect my sales numbers is if the product becomes good enough that people who own the product tell their friends about it. It's not there yet, so that's why I keep working on it and barely scraping by. Eventually though, I'm going to have to shift gears from product development towards product marketing and advertising.

Barely scraping by seems to be the name of the game for 95% of everyone in the VR industry right now. There have been some interesting recent developments lately. Owlchemy Labs, the creators of the smash hit "Job Simulator" and "Rick and Morty VR" have recently been bought out by Google. Google now completely owns one of the best VR content creators in the industry. The founders probably got hella rich and don't have to worry about anything but creating cool VR content now. Lucky them. One of my friends works for a local VR startup as their only programmer, and things are getting so tight that he had to get a second retail job in order to get by. The startup is too broke to pay him and their sales have dwindled as well (everyone should expect the long tail and budget for it!). The other huge development lately has been that AltspaceVR has shut down. They were a 35 person VR company which created a social hangout within VR, similar to Second Life with VoIP. They were funded entirely with venture capital money. I can't imagine the stress and heartbreak that brings to the team. But... 35 full time employees. Damn... and you have to make payroll every two weeks for 35 people? And you have a product and business model which doesn't involve bringing in money from users? Your days were numbered... I'm fascinated by why various companies fail and succeed. Obviously, creating and having a product is not the entire picture. It's all about making money to sustain your business operations.

My business operating expenses are extremely low. I pay $400 a month for my rented office space, $8.91 per day for burritos, $2.50 for a one way bus ticket, and $2.48 for a cup of black coffee. I owe people money, so I have to pay them off before I ever pay myself. Realistically, my chances of making a lot of money in the near future are near zero without funding and support. But hey, my operating costs are so low that I can almost do this indefinitely. My company will survive. It'll be small, but it will survive and continue forward, scratching out a teeny bit of money.

Speaking of money, the most profitable area right now is doing VR contract work. I've been working on a couple different side projects for various local companies, creating VR experiences around their products and services. I'm about to start working on an interactive VR film proof of concept, which plays sort of like a "choose your own adventure" 360 film in VR. It's going to be an interesting twist on interactive cinema. The broader goal for me is to learn as much as I can and broaden the scope of my VR designer skills. I've become a part of the production cycle for creating VR media and I'm bridging the gap between gaming and cinema within VR. Here is a sample of a VR app I made for Dell in May: I was thinking critically about this on my bus ride to work this morning and I realized something important: Is watching a cinematic in 360 stereo really VR? Why/why not? What's missing? The viewer. Who are you when you're viewing these 360 videos in VR? Okay, what kind of defining rule can we create which differentiates VR from fake VR? My tentative rule is that the viewer has to be a character within the experience for it to count as VR. The important thing here is to create a sense of "agency" and identity with the viewer. So, the cardinal sin for a VR designer is to take away agency from the player (such as controlling their head or playing a cinematic). The follow up question: "Does it really matter?" Yes, it kind of does matter because everyone is doing it wrong and calling their creation "VR" when its not really VR. It's really challenging to start defining what this new medium is and is not though. I think the guiding principle I use is that "Virtual reality should be indistinguishable from reality and the human experience." People can turn their heads and look down at their body, move their hands, feel solid objects, etc. The closer your VR gets to reality, the more you can confidently call it VR.

My challenge will be to convince companies to see it my way and spend the extra money to move from a stereo experience to a VR experience. I don't know if that's a battle worth fighting. The challenge with 360 video is that the video itself doesn't lend itself to user agency. The camera is placed on a tripod and people act out a scene all around the camera. So, the person experiencing the 360 video can't move around in the scene as if they were a part of it. The solution might be to ditch the 360 camera completely and go with motion capture and animated characters within a 3D environment, but that will mean much higher production costs and longer timelines. At the end of the day, what does a client care about? Accomplishing their objective, whatever that may be. Where does the line exist between exerting my subject matter expertise and satisfying the customers objectives?

Anyways, I am slowly realizing that I'm no longer just an indie VR game company, I'm becoming a VR media company. I wasted the entire last week watching "The Internationals" Dota2 tournament. The game itself is somewhat interesting, but more interesting is the growing rise of E-Sports. I think it's going to disrupt the definition sports. Every year, the Dota2 championship match grows in popularity and the prize pool grows by millions. I think last year the total prize pool was $16 million. This year, it was $24 million. All of the money comes from the Dota2 gaming community. The final championship match had 4,700,000 viewers around the world watching it unfold. I watched it on Twitch.tv, and the channel had about 380,000 live viewers. The sports stadium down the street supports about 68,000 people. So, just on Twitch, we had about five full stadiums worth of people watching the event online. Think about all of this for a moment: 4.7 million people watching ten people play a video game against each other for $24 million. If we project the trend out, over time we can predict that next year the prize pool will be even larger and the viewership will match proportionately. On a broader trend, I think E-sports will eventually eclipse conventional sports. Football is currently the most watched sport in America, but maybe in 30-40 years, E-sports championships will be the most watched sporting events? Remember that revolutions don't happen by people giving up their favorite sports/ideas, but by a younger generation gradually replacing an older generation. The younger generation is enamored with E-sports. Football? What's that? Obviously, the take away is that competitive E-Sports are a great way to build a community and player base around your product. There was one moment in the Dota2 championship match that really, really blew my mind. A pair of OpenAI researchers had created a bot which learned to play Dota2. Traditionally, bots are just hard coded expert systems with their behaviors and rule sets defined by the programmer. Traditional bots create the illusion of intelligence, but they start to break down when you introduce information it wasn't scripted to handle. The Dota2 bot was a little different. The researchers didn't say it explicitly, but the AI was an artificial neural network (ANN) with deep reinforcement learning. The AI brain as a generalized intelligence, so the researchers didn't tell it anything about how to play Dota2. They had the AI play against itself thousands and thousands of times over the course of two weeks. This was its training regimen. Gradually (and as expected), the AI learned how to play Dota2. But, it got scary good at it. It had mastered all of the nuances and game play techniques the pros use, it had learned how to time animations, block creeps, etc. It played perfect Dota, with perfect response times. It was so good that it beat every professional Dota2 player. The worlds best human players, all defeated by an AI bot which taught itself how to play Dota2. Absolutely amazing! For the last three weeks, I have been refactoring my AI and game systems and gradually moving towards an artificial neural network type of AI. I'm still creating hard coded expert systems, but I'm gradually changing my back end systems to make everything into an interaction or used ability. These will eventually become the output nodes for my ANN graph. The dream is to tweak a few brain parameters and then just have the various ANN AI's play with each other for 2 weeks, become experts, watch how my brain tweaks changed their behavior patterns, and change and adapt their brains until they roughly exhibit the behaviors I want them to have. AI programming won't be about creating expert systems, but about creating brains and tweaking reinforcement learning rewards to get distinct behaviors. The extra cool part is that the AI can continue to learn even after it has been deployed to the world. The vision is that the initial training cycle is to just get the AI to be competent enough to behave intelligently and convincingly. After deployment to the world, the training continues. However, now instead of the AI training on a single computer against a copy of itself, it is now training on hundreds of computers with human players in VR. Every day or so, the AI will upload whatever it learned to a central online database and download what other versions of AI learned from playing with other players. In a way, it turns into an evolutionary algorithm which gradually gets more and more intelligent over time. The hard part will be managing version control and testing for fitness.

The other wrinkle in this plan is that the AI could get too smart. Not in a "take over the world" sort of way, but as in it's too good at playing the game and players don't enjoy playing anymore because they lose 100% of the time. I suppose a part of the AI development could use the player frequency as an input feed and the AI is rewarded if the player continues playing the game. In that sense, a big focus of the AI is to make sure the players are entertained, and this win/loss threshold can be adaptive per player. Maybe the AI ends up developing a profile on each player and knows what it takes to maximize that players enjoyment? Maybe some AI's will play cooperatively with particular players, and as adversaries with other players? I'm getting slightly into science fiction here. I'll never forget the experience I had of having a seemingly intelligent crow on my arm in VR. It was absolutely magical. Now, if I gave it the ability to think intelligently and speak its own mind, the magic would become real. What if the pet crow AI was the sum of all AI's from all interactions with players and the world, and you could get it to say what its thinking, and it is rewarded (via reinforcement learning) when it says something which keeps the player safe? What if the AI learns that there is danger in the dark cave and most players who venture down into the cave end up dying, so the AI learns to say something really scary which keeps the player from going down into the cave? The AI has then learned exactly what to say in order to frighten us, through thousands of sessions of trial and error. Anyways, I think we're on the verge of an AI revolution and I want to be a part of bringing that AI into VR. It gets interesting when you consider that a sandbox type of game would become very different on every play through when you have emergent AI systems interacting as a part of that world.  I've been seriously contemplating the idea of writing a science fiction novel based on an AI system which gains sentience and begins the AI singularity event. I'm thinking the book writing project would be a side project. I'd spend one day a week writing it. My sister is interested in being a co-author, so we need to spend some time hashing out details and measuring the feasibility of our ambitions. I've never written a novel before, so there is a lot of risk due to inexperience. But, who cares? Better to try and fail than to never have tried at all out of a fear of failure. That's how you get good at anything: try, fail, improve, try again, repeat. Eventually, you'll break out of the failure loop and enter into the success loop.

slayemin

slayemin

 

Designing Intelligent Artificial Intelligence

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: Objectives:
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. Design:
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)
    Hunger
    Body Temperature
    Wealth
    Knowledge
    Power
    Social Validation
    Sex
    Love/Compassion
    Anger/Hatred
    Pain Relief
    Fear
    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.  Challenges:
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.
 

slayemin

slayemin

 

Spellbound: May-July Updates

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.

slayemin

slayemin

 

Why your indie game dev team will fail

I wrote this article on Medium and thought I'd cross post it here:
https://medium.com/@Slayemin/your-indie-game-dev-team-will-fail-108d4b663e7e 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.

slayemin

slayemin

 

Spellbound: April Update

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.

slayemin

slayemin

 

Principles of Debugging Effectively

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.

slayemin

slayemin

 

Spellbound: February Update

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.

slayemin

slayemin

 

January 2017: Steam Updated!

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:
[youtube] [/youtube]

slayemin

slayemin

 

EnvelopVR goes out of business!

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.

slayemin

slayemin

 

Spellbound: December Update

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.

slayemin

slayemin

 

Spellbound: November Update

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: [youtube] [/youtube] 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.

slayemin

slayemin

 

Spellbound: October Update

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. So... 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.

slayemin

slayemin

 

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
-Money
-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.

slayemin

slayemin

 

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.

slayemin

slayemin

 

Launched Spellbound on Steam

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: http://store.steampowered.com/app/463400/ I'll have to write a longer thought out reflection post later.

slayemin

slayemin

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!