tag:blogger.com,1999:blog-39935250466986498872024-03-12T18:06:58.197-07:00Game Dev Gone RogueMy experience leaving mainstream game development to go indie, and the adventure that ensues.Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comBlogger80125tag:blogger.com,1999:blog-3993525046698649887.post-5649086919816309012013-09-30T11:33:00.000-07:002013-09-30T11:33:48.865-07:00Work-Life Balance, and Finishing a GameIt's been a month since my last post.<br />
<br />
Traditionally, I've been pretty good about keeping a rhythm on this blog. One post, bi-weekly for over two years, save for the occasional vacation. And even then, I was usually quick to make-up for lost time.<br />
<br />
Lately, though, it's been harder to keep up that rhythm. For one thing, it's getting harder to find topics that are both relevant and as-yet uncovered.<br />
<br />
Two years ago, I had seemingly endless questions about becoming an indie developer. How much <a href="http://gamedevgonerogue.blogspot.com/2011/03/indie-develoment-and-money.html" target="_blank">money</a> does it require? What's a <a href="http://gamedevgonerogue.blogspot.com/2011/05/day-one-as-indie.html" target="_blank">day</a> in the <a href="http://gamedevgonerogue.blogspot.com/2011/12/life-as-indie.html" target="_blank">life</a> of an indie like? <a href="http://gamedevgonerogue.blogspot.com/2011/08/motivations-for-becoming-indie-game.html" target="_blank">Why</a> do developers choose to become independent? I tried to dissect each of the events and considerations I faced, in an effort to draw back the curtain for others.<br />
<br />
The bigger issue, though, is psychological. As I make <a href="http://bluebottlegames.com/main/node/2" target="_blank">NEO Scavenger</a>'s final push to completion, I find I'm using every bit of energy I can muster to stay on-task. Despite what I can only describe as a surprising success so far (positive feedback, encouraging sales, acceptance from vendors, and even Greenlight approval), I feel emotionally drained, fearful, stressed, and distracted.<br />
<br />
It turns out that this isn't <a href="http://99u.com/articles/7062/why-cant-i-finish" target="_blank">unusual</a>. I definitely struggle with perfectionism, often putting off finishing something because I'm not completely happy with it. And two (plus) years on the same game/engine/job/problems has dulled that once-sharp edge of excitement and novelty.<br />
<br />
In the aforementioned article, Ms. Saunders's suggestions for dealing with those blocks are helpful, too. Itemized to-do lists are definitely a huge help, particularly when the tasks are smaller and well-defined. The days when I can't stop working are those when my direction seems clear. Conversely, those that are the most grueling are when my task is large and poorly-defined (e.g. "finish NEO Scavenger's plot").<br />
<br />
Recognizing the effort expended vs. the effort remaining is also useful. I'll admit that starting a new game looks enticing, to the point that I could find motivation to work on it in my spare evenings and weekends. But taking a look at how much effort it took to get here, and realizing that I would be here again in two years, helps put things into perspective.<br />
<br />
Prioritization is also key. There are several areas which I try to balance in my life. Listed in order from most to least important:<br />
<br />
<ol>
<li>Maintaining relationships (spouse, family, friends)</li>
<li>Staying healthy (i.e. eating right, getting enough sleep, getting exercise, avoiding crunch)</li>
<li>Running my business, <a href="http://bluebottlegames.com/" target="_blank">Blue Bottle Games</a></li>
<li>Developing my first game, NEO Scavenger</li>
<li>Running this blog</li>
</ol>
<div>
That is to say, if something higher up on the list is threatened, something lower gives. So things like vacation, weddings, and funerals usually trump everything else (even healthy sleeping and eating, as a recent funeral has demonstrated). I'm also pretty rigid about not working on evenings and weekends, and eating at regular times (with a few exceptions).</div>
<div>
<br /></div>
<div>
Numbers 3 and 4 have been more demanding lately, not to mention s summer thick with number 1, so blog posting has admittedly been swept aside. And even then, skipping the blog only frees up a few hours every two weeks (normally), so I shudder to think where else the squeeze has occurred (I'm looking at you, number 2).</div>
<div>
<br /></div>
<div>
All things considered, I think I'm surprisingly still pretty healthy in my balance. I still quit at 6:30pm each day, and don't touch work on weekends, except to deal with occasional emails (less than 1-2 hours per weekend).</div>
<div>
<br /></div>
<div>
It's been hard to focus, though, and stress is at a local peak. I'm gritting my teeth again, clenching my jaw unconsciously, and my mind wanders at any possible opportunity. I had a good day, Friday, when I refused any internet distractions for most of the working day. I got a lot done, and I felt better for it. But it was a slog.</div>
<div>
<br /></div>
<div>
I think this is the way it's going to be until I finish NEO Scavenger and launch it. And even then, the prevailing wisdom is that it just gets more stressful in the subsequent months. The road's getting tough, and the toughest is yet to come.</div>
Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comtag:blogger.com,1999:blog-3993525046698649887.post-8906255322041501252013-08-27T11:39:00.002-07:002013-08-27T11:39:52.386-07:00How I Got Into the Game IndustryLast post, I talked about <a href="http://gamedevgonerogue.blogspot.ca/2013/08/training-to-be-game-developer.html" target="_blank">training to be a game developer</a>. A lot of the discussion centered around where to obtain the skills for entering the field. The sobering, and unsurprising, answer is: practice a lot. Whether via school, at work, or on your own, the more practice you have, the more marketable you are.<br />
<br />
However, that's a fairly theoretical scenario. Real life is rarely as clean-cut and well-planned as sitting down for a few years and coming out the other end ready to go. In order to provide a more concrete example, I want to talk about the path I took. It's not the ideal path, and probably not even a common one. But it shows how much a portfolio and work experience can influence hiring, and how persistence and hard work pay off.<br />
<br />
<b>Education</b><br />
<br />
Let me clear this up first: I didn't enroll in a program designed for the games industry. I studied physics at the <a href="http://www.unh.edu/" target="_blank">University New Hampshire</a>. It was a good school for physics, but terrible for games. It had zero offerings in game-related studies. Not even a computer graphics lab (i.e. no 3DSMax, which was a bit crippling, in retrospect). I'm not even sure I realized I <i>could</i> be a game developer at the time I chose my major.<br />
<div>
<br /></div>
<div>
Basically, I liked science, had an interest in space propulsion and power production technology, and figured I could turn that into a career as a researcher. Low in-state tuition meant I could go there without bankrupting my family and saddling myself with insurmountable debt. And I had some friends going there, too.</div>
<div>
<br /></div>
<div>
I don't think it was until my junior year that I started to realize my heart was really in making games. All my spare time was spent playing games, picking through their data files, modding them, and tinkering with art software (from <a href="http://en.wikipedia.org/wiki/Deluxe_Paint" target="_blank">DPaint</a> and <a href="https://sites.google.com/site/stessential/drawing-tools/degas-elite" target="_blank">Degas Elite</a> to <a href="http://en.wikipedia.org/wiki/TrueSpace" target="_blank">TrueSpace 3</a>). I spent a summer working on a <a href="http://palladium-store.com/1001/Rifts-Categories.html" target="_blank">Rifts</a> total conversion mod for <a href="http://en.wikipedia.org/wiki/Dark_Reign:_The_Future_of_War" target="_blank">Dark Reign</a>. I penned a prodigious amount of role-playing game scenarios, settings, rules, and even designed some new systems.</div>
<div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-xfaiZpcyCII/UhziSOWjE4I/AAAAAAAAAek/SGPSeX9O-GE/s1600/screenshot-2013-08-27.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="202" src="http://4.bp.blogspot.com/-xfaiZpcyCII/UhziSOWjE4I/AAAAAAAAAek/SGPSeX9O-GE/s400/screenshot-2013-08-27.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Sprites from my Rifts total conversion for Dark Reign.</td></tr>
</tbody></table>
In retrospect, I should've seen it sooner. I just didn't think of it as a "real" career. And by the time I started to realize how wrong I was, I was way behind the curve. Spotty art portfolio, barely passable programming experience, one published article about swing dancing in the university magazine...I had a lot of dabbling in all the right areas, but I needed to get my act together.</div>
<div>
<br /></div>
<div>
I did have some things going for me, though. I worked hard to finish my degree, and I took all my courses seriously. I poured my heart into creative writing assignments, and milked the single art class my curriculum was afforded. I designed posters for the local theater troupe, and worked as designer on the school magazine. I got a job in the space science center, scripting tools to work with satellite data. My senior project was working on a Faraday ring ammeter instrument for satellites, which has zero application to video games itself, but sure turns heads on the resume.</div>
<div>
<br /></div>
<div>
I was also an early adopter in the burgeoning field of web development and design. I was fortunate that the campus was quick to adopt site-wide internet access, so I spent a lot of time tinkering with websites. Most of it was tabletop rpg stuff: character sheets, campaign settings, play-by-comment adventures (like play-by-email, but with a webpage thread).<br />
<br />
<b>Post Graduation</b><br />
<br />
When the time came for graduation, I tried applying to a few game studios (among other, more physics-appropriate jobs), but I didn't know what the hell I was doing. It showed, too. I scraped together all the art I could find on my hard drive, but no game studios were interested. I still have my rejection letter from <a href="http://en.wikipedia.org/wiki/Greg_Zeschuk" target="_blank">Greg Zeschuk</a>, politely telling me they didn't need anyone with my skillset at this time at <a href="http://www.bioware.com/" target="_blank">BioWare</a>.</div>
<div>
<br /></div>
<div>
I did, however, know more than your average person about website design and development. And in the late 90's, knowing how to piece together a webpage was a golden ticket to employment.</div>
<div>
<br />
Unlike games (and even physics), finding work as a web and print designer in 1999 was dead-easy. Within a few months of graduating, I had a job at one of the <a href="http://www.bertelsmann.com/" target="_blank">biggest publishing companies in the world</a> as a web developer and designer. What's more, it was my ticket to living in a place I've always wanted to: New York City!<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-bMQpP11IHDc/UhznIg1wyVI/AAAAAAAAAe0/uAhkgV5tlBA/s1600/screenshot-2013-08-27a.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="225" src="http://1.bp.blogspot.com/-bMQpP11IHDc/UhznIg1wyVI/AAAAAAAAAe0/uAhkgV5tlBA/s400/screenshot-2013-08-27a.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Left: My office. Right: My apartment.</td></tr>
</tbody></table>
<br />
<b>First Career</b><br />
<br />
Being a web developer wasn't my first pick for a job, but man, was it an awesome ride. I made friends with folks from all over the world, I worked on a huge range of technologies and design styles, I made great money, and all while living in one of my favorite places.<br />
<br />
What's more, there was so much work to be had that I was approached by a coworker who needed to offload one of his clients. In one of the more significant career-coaching conversations, he told me "you're worth $50/hr with this, and he'll pay it. Don't accept less." Sure enough, the client did test the waters, but I was firm at that rate, and got it.<br />
<br />
What's more, a lot of the tinkering I did with 3D gave me a huge advantage in the web/print design arena, as it was a novel art asset to bring to bear. I had several smaller contracts and jobs going on the side, for wide-ranging amounts of compensation.<br />
<div>
<br /></div>
The extra work was both educational and lucrative. I had my (modest) student loans paid off within two years of graduating, was debt-free, and was able to start saving. I learned how to manage clients, assess requirements, and work without supervision.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-L6Fv2OOE8zA/Uhzpl9QD_4I/AAAAAAAAAfA/QT_D4x8rpRY/s1600/screenshot-2013-08-27b.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="http://3.bp.blogspot.com/-L6Fv2OOE8zA/Uhzpl9QD_4I/AAAAAAAAAfA/QT_D4x8rpRY/s400/screenshot-2013-08-27b.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Lucrative!</td></tr>
</tbody></table>
I also learned how devastating overwork could be to stress levels.<br />
<br />
<b>Career Burn-Out</b><br />
<br />
By this time, my full-time role had evolved from web developer to project manager and lead designer. I had a small team under me, clients to manage, websites to keep running, and development teams to liaise with.<br />
<br />
My freelance life was no less demanding, it just used my free time instead of business hours. I got calls and emails at almost all hours, had many late nights, and pulled at least one mid-week all-nighter.<br />
<br />
And all this time, I had a growing feeling that my heart just wasn't in it. The novelty of my first job, first apartment, and the big city were all wearing off. I still wanted to make <i>games</i>, not publishing and medical journal websites. Even some of the more exciting website IPs, like Elvis, Dr. Seuss, and Playmobil paled in comparison to the possibility of working on the next <a href="http://en.wikipedia.org/wiki/Neverwinter_Nights" target="_blank">Neverwinter Nights</a> or <a href="http://elite.frontier.co.uk/" target="_blank">Elite</a>.<br />
<br />
My employers were good sports, allowing me to add web games to our portfolio of offerings, but our clients needed websites, kiosks, media players, and back-end technology more. My job was simply not the right venue for what I wanted.<br />
<br />
<b>Bootstrapping a Game Portfolio</b><br />
<br />
Realizing that web development wasn't the end-game for me, I redoubled my efforts at building a portfolio in my spare time. I offloaded my lucrative web client to a friend, and started reaching out to game studios and projects.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-NI7ilNqrdP8/UhzqeZh8njI/AAAAAAAAAfI/dwCEEgKh9dM/s1600/screenshot-2013-08-27c.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="377" src="http://1.bp.blogspot.com/-NI7ilNqrdP8/UhzqeZh8njI/AAAAAAAAAfI/dwCEEgKh9dM/s400/screenshot-2013-08-27c.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">My online portfolio, vintage 2004.</td></tr>
</tbody></table>
A buddy of mine, already in the games industry at this time (a then-recent animation grad of <a href="http://www.pratt.edu/" target="_blank">Pratt Institute</a>), helped me to understand the prevalence of 3D Studio in the games industry, so I obtained a copy and taught myself modeling. I also set forth on learning to code. It was a whirlwind of self-education:<br />
<ul>
<li>I bought a Wacom tablet and started teaching myself to paint in Photoshop.</li>
<li>I modeled and textured vehicles and weapons for an <a href="http://forums.epicgames.com/threads/265042-Unreal-Command-need-more-help" target="_blank">Unreal mod</a> (unpaid)</li>
<li>I did sprite work for a side-scrolling computer game (paid $50)</li>
<li>I bought a book detailing the character modeling process, and followed along with my own character.</li>
<li>I did some 3D character prototypes for an action-adventure game (unpaid).</li>
<li>A web-acquaintance and I combined efforts on a <a href="http://www.herzogdrei.com/" target="_blank">Herzog Zwei remake</a>, just for fun. (Sprite and terrain texture work, mainly)</li>
<li>I wrote a side-scroller prototype in <a href="http://alleg.sourceforge.net/" target="_blank">Allegro C</a>. </li>
<li>I wrote an <a href="http://digdan.com/main.php?page=flash_asteroids" target="_blank">asteroids-clone</a>, a <a href="http://digdan.com/main.php?page=prog_physics" target="_blank">particle physics demo</a>, and some funky header procedural animations in Flash.</li>
<li>I made a spaceship model in 3D Studio and wrote a <a href="http://digdan.com/main.php?page=prog_spaceship" target="_blank">DirectX app</a> to fly it around.</li>
<li>I took a traditional animation course at a local art school.</li>
</ul>
All the while, I applied to every job and recruiter I could find, within reason. If the job involved games and looked even remotely applicable to my skills, I applied.<br />
<br />
<b>Fishing for a Job</b><br />
<br />
I had a few nibbles. <a href="http://www.ravensoft.com/" target="_blank">Raven Software</a> got back to me, offering me an art test from none other than childhood hero, <a href="http://artofkevinlong.com/" target="_blank">Kevin Long</a>. They were working on a new iteration of Quake, and asked me to do a 3D model of a muscular arm with cybernetics. I fudged something together, sent it in unfinished, and never heard back. An important lesson here, for any readers that missed it: either do the art test 100%, or not at all. Nobody likes a half-assed job.<br />
<br />
My buddy also tried to pull some strings at his studio, <a href="http://en.wikipedia.org/wiki/Cyberlore_Studios" target="_blank">Cyberlore</a>. Alas, they didn't have room for greenies like me. He did help me quite a bit with polishing my portfolio and website, though. Having someone with a critical eye to say "that one's not worth showing, focus on these, and beef-up this area" was a huge help.<br />
<br />
One bite which went a bit further was a call from <a href="http://www.turbine.com/en/" target="_blank">Turbine</a>. They needed an art intern for their upcoming MMO, Dungeons and Dragons Online. I dressed up in my interview suit, hopped a train to MA, and met my interviewer in the parking lot...wearing shorts, a t-shirt, and body piercings. Employees hushed and whispered as I walked the aisles, and later, I found out folks thought I was their office's lawyer.<br />
<br />
Despite that, the interview went well. I spoke with several team members and managers, and was shown around the project space. However, when it came time for the offer, I was in for a surprise. "I don't think we can give you this internship," he said. The job was unpaid, would end after the summer, and there was no promise of renewing my contract. Despite my willingness to sacrifice my career and relocate for the job, it didn't sit well with them.<br />
<br />
<b>BioWare</b><br />
<br />
In February 2004, I sent my resume to BioWare again. A lot of the positions I applied for so far were either 3D or 2D artist positions, or interface/graphic designer roles. This one was a tech artist position.<br />
<br />
Weeks went by with nothing more than the auto-responder to tell me they received my application. However, almost two months later, I received an invitation to interview by phone! I could barely contain myself over the next several days. Anticipating that call was all I could think of.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-6sM-_Eo-JUk/UhzrqM3JEoI/AAAAAAAAAfU/WDAxQeg1Ehk/s1600/screenshot-2013-08-27d.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="225" src="http://4.bp.blogspot.com/-6sM-_Eo-JUk/UhzrqM3JEoI/AAAAAAAAAfU/WDAxQeg1Ehk/s400/screenshot-2013-08-27d.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">The hallowed halls I yearned to enter.</td></tr>
</tbody></table>
The call itself went well, and I was given an art test to gauge my abilities. My test consisted of modeling, texturing, and lighting a section of sci-fi hallway illustrated in a provided concept sketch. I was given a polygon budget, a texture file size budget, and instructions for sending the materials back when done. It had to be done in 3D Studio Max, and I was told to keep track of my time spent working on it. Color scheme and areas beyond the field of view in the illustration were up to me.<br />
<br />
Unlike the Raven Software test, this time I followed-through. Every part of the test got my best effort, and I made sure not to leave anything unfinished. Some areas were more polished than others, of course, but nothing was left incomplete.<br />
<br />
It was another two weeks before I heard back from them, and this time, it was for an in-house interview. Interviewing is a complex-enough topic that it could warrant its own post (or book, even). However, suffice to say that I was polite, professional, honest, accommodating, and eager. (I again wore the suit.) I was required to relocate away from my favorite city, and my starting salary was a huge pay cut. I'd have to climb the ladder all over again.<br />
<br />
I wanted it, though, and was willing to work for it. I got the job.<br />
<br />
<b>Post Hiring</b><br />
<br />
It'd be tidy to say that that was it. I got hired, and the rest is history. I could sit back and enjoy the spoils of my victory.<br />
<br />
However, I didn't look at it that way. And I still don't. I continued to operate in "interview mode" for pretty much my whole career there. Every single day at BioWare was a chance for me to prove myself worthy of their taking a chance on me. Humility, eagerness, and diligence were my tools of choice, and I credit much of my success there with those traits.<br />
<br />
<b>99% Perspiration</b><br />
<br />
Looking back over this story, that's what made everything possible. Keep working hard. Work honestly. You know when you're putting in 100% and when you're dogging it, so don't cheat yourself. It took me six years of kicking my own ass after I decided in mid-university that games were for me. Six years of part-time portfolio-building for games, mixed with full-time, tangentially-related IT work. And six years of rejection letters (if any response at all).<br />
<br />
And even then, I got the role because I made a good tech artist, not because of my artistic skill. In fact, when I asked point blank whether I could fall-back on an artist job if I wasn't a good tech artist, they told me "no." In retrospect, I'd likely have needed years more practice in art if I wanted to go that route. Tech art just happened to be a growing field at the same time I was (unknowingly) training for it.<br />
<br />
So work hard. Put in the requisite time, and practice. Don't give up. It won't be an easy ride, nor a short one. But if it's what you want, you'll work for it. And employers will notice the applicants that do.</div>
<div>
<ul>
</ul>
</div>
Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comtag:blogger.com,1999:blog-3993525046698649887.post-36615304757004551282013-08-13T09:40:00.002-07:002013-08-13T11:51:09.201-07:00Training to be a Game DeveloperRecently, I posted a <a href="http://en.reddit.com/r/gamedev/comments/1jzeu4/everything_i_know_about_game_development_so_far/" target="_blank">massive brain-dump on /r/gamedev</a>, in an effort to further disseminate some of the info I've collected here. The results were very positive, and I'm thrilled that so many people found useful topics to peruse.<br />
<br />
One <a href="http://en.reddit.com/r/gamedev/comments/1jzeu4/everything_i_know_about_game_development_so_far/cbk6l7d" target="_blank">question</a> came up, however, which involved an underrepresented topic on my blog: training. Further, another developer <a href="http://en.reddit.com/r/gamedev/comments/1jzeu4/everything_i_know_about_game_development_so_far/cbk56p1" target="_blank">pointed out</a> that most of my advice was more applicable to folks who already had skills and experience in game development.<br />
<br />
With that in mind, I thought I might share some of my experience on training and skills in game development, both as an indie and a former decision-maker in hiring at <a href="http://www.bioware.com/" target="_blank">BioWare</a>.<br />
<br />
<b>How to Become a Skilled Game Developer: The TL;DR Version</b><br />
<br />
If I were to summarize this post in one statement, it would be this:<br />
<blockquote class="tr_bq">
<i>Learn and practice your chosen craft full-time for 5 years.</i></blockquote>
There. That's it. That's all you have to do. Figure out what it is you want to do as an indie or game industry employee, and start learning and practicing the craft full-time. That means 8 hours per day, 5 days per week, taking time for holidays and vacation. Do that earnestly, and you'll be a skilled game-maker and master of your chosen craft in about roughly five years.<br />
<br />
Already have a job? Cut the hours per day down, and add an appropriate number of years. E.g. 4 hours per day instead of 8 with 10 years instead of 5, or similar.<br />
<br />
<b>What About School?</b><br />
<br />
That's a good question. What <i>about</i> school?<br />
<br />
Consider [the way we define] a <a href="http://en.wikipedia.org/wiki/Master's_degree" target="_blank">master's degree</a>. In much of the world, a master's degree represents professional-level mastery in a practice or field of study. It is typically about 2 years of advanced study after completing a 4 year bachelor's program.<br />
<br />
According to the <a href="http://en.wikipedia.org/wiki/European_Credit_Transfer_and_Accumulation_System" target="_blank">ECTS standard</a>, that equates to roughly 1500-1800 hours of study per year, over 6 years. By comparison, one year of full-time work represents roughly 2000 hours.<br />
<br />
Masters program = 6 years * (1500 to 1800 hours per year) = 9000 to 10,800 hours.<br />
5 years full-time = 5 years * (2000 hours per year) = 10,000 hours.<br />
<br />
As an aside, Malcom Gladwell has written an <a href="http://www.amazon.ca/Outliers-Story-Success-Malcolm-Gladwell/dp/0316017922" target="_blank">interesting book</a> about several of the world's great success stories. One thing many have in common? 10,000 hours or more of diligent work in their field. It's not the <i>only</i> thing that got them there, mind you, but I tend to agree with him that it's an important component.<br />
<br />
<b>Is School Better Than Self-Training?</b><br />
<br />
That's hard to say, really.<br />
<br />
On one hand, an accredited degree program includes much more than simply study of related topics. It includes experience with different learning methods, socializing in different settings, learning to be independent of one's family, access to contacts in academia and industry (including valuable experts, a.k.a. professors), and access to facilities that would often be beyond the reach of a single person.<br />
<br />
On the other hand, <a href="https://medium.com/i-m-h-o/138c5efd45e9" target="_blank">school isn't always the wise investment it used to be</a>. With tuition rapidly outpacing housing costs, and <a href="http://academicearth.org/" target="_blank">free</a> <a href="https://www.khanacademy.org/" target="_blank">educational</a> <a href="http://forums.tigsource.com/" target="_blank">resources</a> <a href="http://en.reddit.com/r/gamedev" target="_blank">abundant</a> all around us, one could probably have an equal (and sometimes, better) self-directed education.<br />
<br />
<b>Some Degrees Are Better Than Others</b><br />
<br />
If you do choose to attend university, carefully consider the program you're following. Some degrees carry more weight, and are more valuable in the world, than others. The same goes for institutions.<br />
<br />
When I was a hiring manager at BioWare, I looked at a lot of resumes and portfolios. I not only made decisions on hiring for my own team, I sat in as an advisor on decisions for other teams. When deciding on which applicants to invite for an interview, we looked at three things:<br />
<ol>
<li>Their work experience.</li>
<li>Their portfolio.</li>
<li>Their schooling.</li>
</ol>
<div>
Numbers 1 and 2 were, by far, the biggest factor across all hires. We wanted to see what you've done, and if that level of quality was high enough that we wanted you on the team. A killer portfolio of work (art, mods, tech demos, etc.) would almost guarantee an interview. Similarly, a significant role on an awesome game or team would get our attention.</div>
<div>
<br /></div>
<div>
In the absence of those two (or sometimes, despite them), school could sometimes tip the balance. Seeing a programmer graduate of <a href="http://uwaterloo.ca/" target="_blank">University of Waterloo</a> or <a href="http://www.mit.edu/" target="_blank">MIT</a>, or an art student from <a href="http://www.sheridancollege.ca/" target="_blank">Sheridan</a> would usually be a worth a second look.</div>
<div>
<br /></div>
<div>
However, unless the school was reputable as a consistent, quality source of students in the given field, it rarely did more than tell us the applicant had enough diligence and social grace to graduate. Important skills, no doubt, but not exclusively learned in a university, and not enough on their own to warrant an interview.</div>
<div>
<br /></div>
<b>Work Hard, No Matter Which Path You Choose</b><br />
<br />
One thing is certain, though, and that is discipline matters. Whether you enroll in an university program, or decide to teach yourself, take it seriously and work your ass off. Kicking your own ass to learn as much as possible, and putting that into practice, will put you head and shoulders above the sea of applicants around you.<br />
<br />
Whether watching online courses and practicing your craft, or sitting in lecture halls and doing homework, the amount of effort you put into your education will matter more than where/if you enroll.<br />
<div>
<br /></div>
<b>Be Well-Rounded</b><br />
<br />
One thing to be careful of, whether studying in an accredited program or on your own, is to be well-rounded in your curriculum. Skill in your craft is important, but fairly useless if you can't relate it to the rest of the world.<br />
<br />
Learn a bit about history, psychology, art, science, writing, and anything else you can manage. Learn the <a href="http://en.wikipedia.org/wiki/Experiment" target="_blank">scientific method</a> and quantitative analysis. Learn objectivity, various problem-solving methods, how to brainstorm effectively, and how to find info that you need.<br />
<br />
And please, for the love of all that is holy, learn how to work well with others. In fact, <b>make this your top priority</b>. I can tell you with 100% certainty that if you are a douche, your career will be short and painful. You could be brilliant, a virtuoso, or a damned modern-day Leonardo DaVinci. But if you're also a douche, you're out. (Unless you're a rich-enough douche to call the shots, in which case your career will be longer, but probably still painful.)<br />
<br />
Also, a note of caution: some crafts are less employable than others outside the game industry. If you can't think of another industry using your skills besides games, you may want to consider making said craft secondary in your studies. Look for complementary, more in-demand areas to study, and use that as a way into games. You can still specialize in your preferred craft, but you'll have a broader skill to fall back on.<br />
<br />
As an example, I know quite a few game designers who were programmers or quality assurance before they became designers. In contrast, I know very few designers who started out in the industry as a designer. As another example, most of the tech artists I worked with came from programming or art backgrounds. None of them came from a "tech art" degree program.<br />
<br />
<b>What Did I Do?</b><br />
<br />
So how did I get into the game industry? A little bit of everything above, amounting to a mainstream education mixed with lots of self-training in my spare time.<br />
<br />
I started describing that process here, but it was quickly turning into a story of its own. So with that in mind, maybe it's best saved for a separate post.<br />
<div>
<br /></div>
<div>
Stay tuned for part two!</div>
<div>
<ul>
</ul>
</div>
Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comtag:blogger.com,1999:blog-3993525046698649887.post-79060133409862711532013-07-30T10:34:00.000-07:002013-07-30T10:35:59.366-07:00Fake Graphs About Real ThingsI have a tendency to be pretty verbose in my blog posts. My typical topic length has inched ever higher over time, and I think it's starting to impact my comfort level in starting new topics. Each new post, it feels harder to write about something because of the growing number of things I've discussed, and the growing number of words I seem to use each time. And as readers, I'm sure the sight of a wall of text is none too enticing.<br />
<br />
This week, I had an idea for something different: fake graphs about real things. Basically, there are some concepts in game development that seem like they are easily described in graphs. They're not always possible to quantify, but the trends are pretty easy to qualify. Like describing volume as a function of distance from a speaker, or speed as a function of time spent accelerating, we can describe certain things in our industry in relation to other values.<br />
<br />
So, before I accidentally type another paragraph, let's start "graphing!"<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-fQqGdIRWh5U/Ufb3IiH9I3I/AAAAAAAAAas/kcBQxZDeTYg/s1600/screenshot-2013-07-29.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="http://1.bp.blogspot.com/-fQqGdIRWh5U/Ufb3IiH9I3I/AAAAAAAAAas/kcBQxZDeTYg/s400/screenshot-2013-07-29.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fig. 1: Amount of time spent actually working on game over length of project.</td></tr>
</tbody></table>
The above one's pretty easy. Particularly if you're a solo indie, this is what you should plan for. In fact, it's a bit incomplete:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-4MjACZOmtJk/Ufb5nkPicHI/AAAAAAAAAbE/hI6Mp2_oleg/s1600/screenshot-2013-07-29a.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="http://3.bp.blogspot.com/-4MjACZOmtJk/Ufb5nkPicHI/AAAAAAAAAbE/hI6Mp2_oleg/s400/screenshot-2013-07-29a.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fig 1a: Everything else you'll be doing.</td></tr>
</tbody></table>
Oh, and one more thing:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-C5ItXZD5418/Ufb6FrQHtcI/AAAAAAAAAbM/FDjbFbUdm0I/s1600/screenshot-2013-07-29b.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="http://1.bp.blogspot.com/-C5ItXZD5418/Ufb6FrQHtcI/AAAAAAAAAbM/FDjbFbUdm0I/s400/screenshot-2013-07-29b.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fig 1b: It ain't over 'til it's over.</td></tr>
</tbody></table>
Here's another one for those running a game-as-a-service or Minecraft-like beta funding model:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-9vnZCB3H7SY/Ufb8SVytdYI/AAAAAAAAAbc/Pt9GKtopRz0/s1600/screenshot-2013-07-29c.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="http://4.bp.blogspot.com/-9vnZCB3H7SY/Ufb8SVytdYI/AAAAAAAAAbc/Pt9GKtopRz0/s400/screenshot-2013-07-29c.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fig 2: Anxiety as a function of build release schedule.</td></tr>
</tbody></table>
Those with heart conditions shouldn't wait too long between releases! Particularly if:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-vsN7tV7e-JE/Ufb904y-8hI/AAAAAAAAAbo/gHq6TQka4Rc/s1600/screenshot-2013-07-29d.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="http://4.bp.blogspot.com/-vsN7tV7e-JE/Ufb904y-8hI/AAAAAAAAAbo/gHq6TQka4Rc/s400/screenshot-2013-07-29d.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fig 2a: Ohgodohgodohgodohgod!</td></tr>
</tbody></table>
This one, while sobering, is probably no surprise to most:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-9Kvb-oDIMtY/Ufb_HlNe_vI/AAAAAAAAAb0/sad9zjx08ds/s1600/screenshot-2013-07-29e.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="http://4.bp.blogspot.com/-9Kvb-oDIMtY/Ufb_HlNe_vI/AAAAAAAAAb0/sad9zjx08ds/s400/screenshot-2013-07-29e.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fig 3: Game sales over time.</td></tr>
</tbody></table>
"That's not so bad," you might think. But we may be missing some points of reference:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-fSv7qSaea2Q/UfcAbI5pxmI/AAAAAAAAAcA/MEMniREzfDg/s1600/screenshot-2013-07-29f.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="http://4.bp.blogspot.com/-fSv7qSaea2Q/UfcAbI5pxmI/AAAAAAAAAcA/MEMniREzfDg/s400/screenshot-2013-07-29f.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fig 3a: WTB rent-free treehouse with free electricity and internet...</td></tr>
</tbody></table>
There are a few things you can do to help, though:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-E7lA_cD5cAU/UfcEwN-JsoI/AAAAAAAAAcQ/-kZ79Zsyzw4/s1600/screenshot-2013-07-29g.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="http://4.bp.blogspot.com/-E7lA_cD5cAU/UfcEwN-JsoI/AAAAAAAAAcQ/-kZ79Zsyzw4/s400/screenshot-2013-07-29g.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fig 3b: Or this might just be a NASA pulsar graph</td></tr>
</tbody></table>
Each of these peaks will likely have a diminishing effect on the subsequent peaks, as market saturates and relevance decreases over time.<br />
<br />
You could also try adjusting the price of your game:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-omKn6P1O-pw/UfcIt-r_8fI/AAAAAAAAAcg/X_eIB7OgIHw/s1600/screenshot-2013-07-29h.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="http://1.bp.blogspot.com/-omKn6P1O-pw/UfcIt-r_8fI/AAAAAAAAAcg/X_eIB7OgIHw/s400/screenshot-2013-07-29h.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fig 4: Sales as a function of price.</td></tr>
</tbody></table>
$0 is a popular price! Conversely, not many people are into mortgaging their homes to buy a game. Though, as the app store has shown us, there are 8 <a href="http://en.wikipedia.org/wiki/I_Am_Rich" target="_blank">people</a> who will buy your game no matter what (1 of which, accidentally).<br />
<br />
How does this look in terms of actual money? Probably something like this:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-jzLTPyJ84Y8/UfcKxm9AVpI/AAAAAAAAAcw/OFRc_CwvkMI/s1600/screenshot-2013-07-29i.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="http://2.bp.blogspot.com/-jzLTPyJ84Y8/UfcKxm9AVpI/AAAAAAAAAcw/OFRc_CwvkMI/s400/screenshot-2013-07-29i.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fig 4a: Number may not actually be magic.</td></tr>
</tbody></table>
This assumes some minimum price, of course. Most places aren't selling games for $0.000001. If that were the case, the vertical slopes would be more gradual.<br />
<br />
Let's talk about another topic. Phil Fish has recently made the <a href="http://www.penny-arcade.com/report/article/swimming-in-a-sea-of-shit-the-internets-war-against-creatives" target="_blank">news</a> (again), and you might be wondering what you'd do in his shoes. Being criticized can be unpleasant, but not all criticism is created equal:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-6v-a0qgAUGc/UffnPfkKXaI/AAAAAAAAAdA/aOB9wgAFUM4/s1600/screenshot-2013-07-29j.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="http://3.bp.blogspot.com/-6v-a0qgAUGc/UffnPfkKXaI/AAAAAAAAAdA/aOB9wgAFUM4/s400/screenshot-2013-07-29j.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fig 5: Amount of attention paid to criticism vs. how much I respect the critic.</td></tr>
</tbody></table>
Put another way, if someone is the type of person who slings insults at complete strangers over the internet, it's hard to take them seriously. After all, with such a low barrier to lashing out, they probably do it to everyone. I might even feel left out if they <i>didn't</i>.<br />
<br />
Similarly:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-jQ6Qhgl8be8/UffqO4XgPSI/AAAAAAAAAdQ/xc4m0na5A8U/s1600/screenshot-2013-07-29k.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="http://3.bp.blogspot.com/-jQ6Qhgl8be8/UffqO4XgPSI/AAAAAAAAAdQ/xc4m0na5A8U/s400/screenshot-2013-07-29k.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fig 5a: Attention paid as a function of bias.</td></tr>
</tbody></table>
Overly negative (and positive!) commentary isn't very useful, so I tend to pay the most attention to balanced critique and critics. Overly biased feedback is about as helpful as a ruler with all 8s.<br />
<br />
Speaking of usefulness:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-J8GNHMkxUj4/UffuuNNhFDI/AAAAAAAAAdg/QVVHL2Wbjnc/s1600/screenshot-2013-07-29l.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="http://3.bp.blogspot.com/-J8GNHMkxUj4/UffuuNNhFDI/AAAAAAAAAdg/QVVHL2Wbjnc/s400/screenshot-2013-07-29l.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fig 6: Likelihood of reading feedback as a function of its length.</td></tr>
</tbody></table>
If I open up an email or forum thread, this is pretty much how things are going to play out. Don't get me wrong, the following is also true:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-15zdRexkRLc/UffwMSnWrkI/AAAAAAAAAds/e-9VLJbTxFo/s1600/screenshot-2013-07-29m.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="http://1.bp.blogspot.com/-15zdRexkRLc/UffwMSnWrkI/AAAAAAAAAds/e-9VLJbTxFo/s400/screenshot-2013-07-29m.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fig 6a: Wanting and doing are different things, though.</td></tr>
</tbody></table>
But if it's going to take me 30 minutes to read, 15 minutes to digest, another 10 to re-skim, and then an hour to reply...well, I might not. Of course, I tend to dwell in the far right hand side of this graph when writing, so there's some irony/hypocrisy to be had here.<br />
<br />
And while we're on the topic of weaknesses, here's a big one for me:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-WxyEO6vh7lI/UffzwCltHFI/AAAAAAAAAd8/RMgglC3keC8/s1600/screenshot-2013-07-29n.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="http://3.bp.blogspot.com/-WxyEO6vh7lI/UffzwCltHFI/AAAAAAAAAd8/RMgglC3keC8/s400/screenshot-2013-07-29n.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fig 7: Desire to postpone decision as a function of its importance.</td></tr>
</tbody></table>
Decisions can be hard. Big decisions even more so. While it can be healthy to take time to consider options when faced with a decision, it can be unhealthy to postpone for too long:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-Cpl7FLoHDO0/Uff1OdHbhwI/AAAAAAAAAeI/lqpH5J311uw/s1600/screenshot-2013-07-29o.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="266" src="http://3.bp.blogspot.com/-Cpl7FLoHDO0/Uff1OdHbhwI/AAAAAAAAAeI/lqpH5J311uw/s400/screenshot-2013-07-29o.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fig 7a: "Just a little more research..."</td></tr>
</tbody></table>
The important feature of this graph is the peak and subsequent negative slope. For every decision, there is some amount of consideration that is optimal, and beyond that, an ever-increasing opportunity cost. The real-world version of this graph may be bumpy, but the general form is the same.<br />
<br />
There are more, of course, but this is already quite a bit. Let me know if you found this format to be helpful, entertaining, or even erroneous. And enjoy the break from my walls o' text while you can!Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comtag:blogger.com,1999:blog-3993525046698649887.post-18259620977333459392013-07-09T12:09:00.000-07:002013-07-09T14:06:59.059-07:00The Hardest Part of Making GamesI was playing Rock Band the other day. We dug the plastic instruments out of storage, and fired up the 360 to dust off our faux musician skills. And at one point, we played Nine Inch Nails's "<a href="http://www.youtube.com/watch?v=xwhBRJStz7w" target="_blank">The Hand That Feeds</a>."<br />
<br />
As the little, colored notes dropped off the screen, I found myself imagining how cool it must be to make music like that as a career. I love musical instruments, and to be surrounded by synths, sequencers, 1/4" audio cables, humming amps, electric guitars, and mixers would make my day.<br />
<br />
I've dabbled in composition from time-to-time, and I've even had some relatively pleasing results. Sure, they're amateur at best, but creating them was fun. I actually long for the time when I'm simultaneously un-busy enough and motivated to get back into that.<br />
<br />
That last thought brought me back from my daydream, even as the colored notes continued. "I'm too busy and too tired," I thought, "because I already have a cool day job like that." It was as sobering as it was uplifting.<br />
<br />
In reality, Trent Reznor probably doesn't sit in <a href="http://www.wired.com/magazine/2010/05/process_song/" target="_blank">his studio</a>, admiring his collection. He doesn't sit with a cup of tea, trying out all the synth presets on his <a href="http://en.wikipedia.org/wiki/Korg_M1" target="_blank">Korg M1</a>. He doesn't feel the blissful absence of pressure as he surveys his laboratory.<br />
<br />
Mr. Reznor has a business to attend to. He has music to compose, a brand to promote, investments to consider, and relationships to manage. What we picture him doing each day is blissfully ignorant of pressure.<br />
<br />
<b>What's So Hard About Making Games?</b><br />
<br />
Like with music, I think there are many on the outside looking in at game developers. Each has their vision of what goes on in a developer's day, and some are more accurate than others. Some may picture developers coding away in the late night hours, illuminated by a cold monitor. Others might picture long conference tables, half-empty pizza boxes, and colored dry-erase diagrams.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-ZtfaYHgXk6Y/Udxc0Z_KBPI/AAAAAAAAAZ8/HDYPEmUjT9Q/s1600/screenshot-2013-05-28.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="http://3.bp.blogspot.com/-ZtfaYHgXk6Y/Udxc0Z_KBPI/AAAAAAAAAZ8/HDYPEmUjT9Q/s400/screenshot-2013-05-28.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Some people picture...other things.</td></tr>
</tbody></table>
So when it comes to game development in practice vs. imagination, what actually goes on? What are the types of work being done? Are any of them pure enjoyment? Tedium?<br />
<br />
And what is the hardest part?<br />
<br />
As with music, games are complex products, the creation of which involves a wide variety of tasks. How hard or enjoyable each of these tasks is will depend on the person(s), their abilities, and their preferences. It will also depend on the type of game being made, the tools being used, and the project constraints.<br />
<br />
Since <a href="http://bluebottlegames.com/main/node/2" target="_blank">NEO Scavenger</a> and <a href="http://bluebottlegames.com/main/" target="_blank">Blue Bottle Games</a> are primarily a solo project, I wear a pretty good number of hats. I do most of the dev work, content creation, business administration, and I've even collaborated with a few talented individuals.<br />
<br />
What follows, then, is a review of the types of things I've had to do as part of developing NEO Scavenger and running Blue Bottle Games since it started. Along with each, I'll try to call out some of the more enjoyable, challenging, and tedious aspects of each.<br />
<br />
If you're considering getting into game development, maybe this will help illustrate some of the rewards and challenges you'll face. And if you're already there, maybe it'll comfort you to know you're not alone :)<br />
<ul>
<li><b>Game Ideas</b> - It won't surprise you to learn that this is one of the easier, more enjoyable aspects of game development. I love coming up with ideas. I can't <i>not</i> do it, in fact. When I get up from bed to go to the bathroom at 3am, I have new ideas by the time I crawl back into bed. I have journals stacked in a drawer with ideas, a massive folder on my hard drive, another on Google Drive. When I bought my first <a href="http://en.wikipedia.org/wiki/Palm_III" target="_blank">Palm III</a>, it was so I could jot down ideas as I rode the subway to work. I gave up a lucrative job at <a href="http://www.bioware.com/" target="_blank">BioWare</a> so I could make my ideas into games. I've been known to turn down perfectly good ideas in favor of coming up with ideas of my own. Have I mentioned I like coming up with video game ideas?<br /><br />While usually not tedious, there are a few times when it can be frustrating to come up with an idea. Usually, this is because one needs an idea for a specific problem, but none are coming. Ideas pour when they rain, but they're not always what you need when you need them. They're also notorious for derailing otherwise productive work with distraction.</li>
<li><b>Research</b> - This one's a bit like ideas, above. I have to restrain myself from researching things if given the chance. Before I start drawing something, I research it. Writing about something? Research. Start building a new system? Research what other games do.<br /><br />Research can be tedious, of course. Plowing through an academic paper is rarely as instantly gratifying as Wikipedia. And many times, there are conflicting sources that need to be resolved. Vocabulary can also cause research effort to mushroom, as one is confronted with a wall of unfamiliar terminology.<br /><br />And then there's the question of research's value. Some of it is justifiable, as research can reveal useful strategies or opportunities. Most of the time, though, it's a guilty pleasure that gets in the way of real work. The challenge is often keeping that in check.</li>
</ul>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-dtBZTzR-1kQ/UdxZAjzzP0I/AAAAAAAAAZc/VBMXJeyVmno/s1600/screenshot-2013-06-11.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="320" src="http://1.bp.blogspot.com/-dtBZTzR-1kQ/UdxZAjzzP0I/AAAAAAAAAZc/VBMXJeyVmno/s320/screenshot-2013-06-11.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Not the hardest part of making games.</td></tr>
</tbody></table>
<div>
<ul>
<li><b>Pixel Art</b> - Drawing game graphics is moderately hard work, but I enjoy it. It was harder and less enjoyable when I started, as the results were more frustrating. However, with practice, I'm getting better at producing the level of quality that I want, and I enjoy the process more. (The process grows faster, too.) The least enjoyable part of this job is when a piece requires other "infrastructure" art to help it.<br /><br />For example, drawing a new rifle is lots of fun. Drawing that same rifle again and again, once for held, worn, and stored versions, and again for the combat UI, then all of the above again for the strapped version, again for the scoped version, and again for the strapped, scoped version? Tedious. I'd rather draw a new rifle. However, for it to work in the game, it needs all of its requisite art done, not just the fun part.</li>
<li><b>VFX</b> - This one can be a lot of fun, but also very frustrating and complex. The cool thing about it is that subtle changes in code and art can make some really spectacular and interesting things happen. It's almost like a mini game development project within a larger project. (E.g. programming the flying, blinking lights in the Detroit map within NEO Scavenger, below).<br /><br />The hard part comes when the VFX requires complex algorithms, wrangling multiple coordinate spaces, or bypassing limitations in the platform (e.g. alpha blending that doesn't kill performance).</li>
</ul>
</div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/4WlQbcUlf9w?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<br />
<ul>
<li><b>Audio Design, Recording</b> - Audio work is something I am terribly amateur at, but still enjoy immensely. As hinted at in my musings about Trent Reznor, I'd love to sit down with some audio equipment and just noodle for days. And I've even afforded myself a few such days during the course of NEO Scavenger, field recording, cutting and looping effects, and even composing a title screen piece (mercifully replaced by Josh Culler's great soundtrack work).<br /><br />It's not fun all the time, though. Sometimes, it means listening carefully to hours of recorded audio for useful bits, cleaning them up, slice and package them, and labeling them with tags for reference later. And in the worst cases, it can be doing this process over and over until it sounds "right."<br /><br />Frankly, producing good audio is a full-time job of its own, and I haven't given it the love it deserves. It's beyond my capacity right now, as features and bugs eat the lions share of my development time. I still want to, it's just been back-burnered while fish are frying.</li>
<li><b>Programming</b> - This is where a lot of time is spent. If I had to guess, this probably takes the largest share of my time. For just about everything I create in NEO Scavenger, some coding needs to be done to make it appear. Even coding sometimes requires more coding to work (i.e. bugs).<br /><br />As I approach the end of the project, that seems to be changing, though. Most of the early art/writing/design was for new systems that needed to be built. Now, I'm mostly filling in content variety in established categories, so the coding is shifting more towards maintenance and fixes.<br /><br />The difficulty and enjoyment in coding varies pretty wildly. Like with VFX above, coding can sometimes mean big changes from little code. This is also often the case when adding a design feature. At such times, coding is my favorite task.<br /><br />At other times, coding is a tedium that is hard to endure, or impossible to sort through. Rewriting the GUI for NEO Scavenger is one process that was agonizingly boring and involved. And some of the more complex problems can involve abstract and difficult thinking, especially when the system one is building is dependent on one or more systems that also haven't been built (or defined) yet.</li>
<li><b>Writing</b> - Writing may actually trump artwork, in terms of time spent on tasks. NEO Scavenger is pretty heavy on text, so a lot of work goes into planning and creating that text.<br /><br />As with many tasks above, there is fun writing, and there is boring writing. The fun writing comes when my brain is in the right mode, and I have trouble keeping up with it. The story just seems to flow, and I always know what to write next (at least roughly).<br /><br />The tedious part of writing comes when one needs to handle all the peripheral infrastructure. In NEO Scavenger, players can take multiple paths in encounters, and that means those paths have to be written. The tedium is helped a bit by the fact that I try to make each path interesting. However, nothing helps that sinking feeling when I realize, "ugh, they might do <i>that</i>, and that means a whole new string or tree of encounters I need to conjure up."<br /><br />The hard part of writing is rather like what I described in programming, above. When so little has been defined, it might seem like one has lots of freedom. However, that freedom can be paralyzing, as one is constantly second-guessing whether the idea or character is plausible, interesting, or whether it might sabotage the story somehow down the line.</li>
</ul>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-LLKiCdkCxyM/UdxZn3Toz3I/AAAAAAAAAZk/cCUYRJoNdzM/s1600/screenshot-2012-11-16.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="237" src="http://1.bp.blogspot.com/-LLKiCdkCxyM/UdxZn3Toz3I/AAAAAAAAAZk/cCUYRJoNdzM/s400/screenshot-2012-11-16.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">"...and the player will be able to choose ANY action they want!"</td></tr>
</tbody></table>
<div>
<br /></div>
<div>
<ul>
<li><b>Game Design</b> - Design is a bit hard to separate from the above, since it involves almost all of them. On a good day, it means recognizing clever ways of making two systems interact, producing a complexity greater than the sum of its parts. At times like these, one can almost enjoy their own game as if they're a new player, watching systems interact in surprising ways.<br /><br />On other days, there is a design problem that appears to have no good solution. I've spent days on some problems: thinking; starting down a path; recognizing a new issue; erasing; repeating. It can be very disheartening and frustrating. Sometimes, the problems with a new system don't emerge until all the work is done. Then, it becomes a trade-off between spending extensive time fixing, or extensive time rebuilding.<br /><br />And tedium can rear its head here, too. Some systems require reams of data entry and proofreading. Other times, navigating a web of interdependencies to ensure the systems don't undermine each other.</li>
<li><b>Build and Platform Management</b> - This refers to the process of getting the game to run on the platform of choice, whether it be a browser, Windows, Mac, or Linux. It also refers to the process of getting that game into the hands of the person who needs it, be they oneself, a collaborator, or a customer.<br /><br />I'll admit, there's little here that I enjoy. I'm thankful for some of the experiences I've had in making NEO Scavenger cross-platform, but I wouldn't call the work enjoyable. Mostly, it's a mixture of tedious and challenging.<br /><br />The challenge is usually wrestling with the idiosyncrasies of each platform, be they resolution, user input devices, UI conventions, performance, or unexpected bugs. Flash helps with much of this, but as it turns out, causes almost as many problems.<br /><br />The tedium is usually the actual build process for me. Creating each of the platform builds requires a lot of PC-hopping, file uploading, changelog-writing, and form-filling.</li>
</ul>
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-0zkY_fSX5sY/UdxYQPV7MRI/AAAAAAAAAZY/3Fc_mCiVOGo/s1600/screenshot-2012-09-17.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="http://3.bp.blogspot.com/-0zkY_fSX5sY/UdxYQPV7MRI/AAAAAAAAAZY/3Fc_mCiVOGo/s320/screenshot-2012-09-17.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">They LOOK friendly enough...</td></tr>
</tbody></table>
<div>
<ul>
<li><b>PR</b> - Interacting with press and public is a job in itself, and can take as much time as you offer. There will always be more conversations out there about your game than you can handle, so you have to set some limits to leave time for game development.<br /><br />Without a doubt, reading press and player feedback is my favorite part of PR. Praise can be highly motivating, as can constructive criticism. Even knowing that people are simply playing the game can raise one's confidence.<br /><br />I also enjoy learning about the art of promotion, and creating plans for publicity (e.g. special events, giveaways, strategic link placement, game festivals, etc.).<br /><br />I'm terrible at executing those plans, though. I hate asking people for things, so cold-calling press outlets is hard for me to do. I also have a hard time pulling the trigger on a PR event, knowing that "just one more" fix or feature would improve the first impression, perpetually delaying my plans.<br /><br />When it comes to customers, some interactions are easier than others. I love helping people, so if my response can offer something useful to the player, I feel good about it. Conversely, if I don't have anything helpful to offer the player, responding stresses me out.<br /><br />There are critics out there, but they're actually not as stressful as you might imagine. In cases where the criticism is valid and constructive, it's actually welcomed and helpful. And in cases where it's more insult than critique, it's easy to disregard.</li>
<li><b>Team Management</b> - NEO Scavenger may be a solo endeavor, but I have had help along the way. And most of my experience prior to Blue Bottle Games was with large teams.<br /><br />At its best, teamwork is awesome. Being surrounded by talented, creative, and motivated people can make you do amazing things, and create stellar products. Some of my happiest moments (in any career) were when surrounded by a tight team of bright minds with a shared vision.<br /><br />Working with Josh on NEO Scavenger's music, and Cameron on NEO Scavenger's story and design, was equally inspiring. They could see things I missed, and offer ideas I never would have, helping to produce a fuller, more professional game experience.<br /><br />If there's any tedium I experienced, it was due to one major mistake I made: making myself the bottleneck. There's nothing more mitigating to a high-performance machine than forcing it to drive in rush-hour traffic, and that's what I did with Josh and Cameron. I never built the infrastructure for collaborators to contribute directly, and I wanted to own as much of the process as possible. As a result, I slowed down their progress. One could argue that I failed at one of the greater challenges of team management: delegation.<br /><br />Of course, there can also be bad teams. I've been on my share of those as well, and they can cause no end of tedium and frustration (for both the members and managers). Diverging goals and opinions, authority issues, poor communication, and lack of clarity can ruin even the best collections of talent. Bad teams are jobs in themselves, and making games becomes a side project compared to keeping things from melt-down.</li>
<li><b>Business Analysis</b> - As with PR, this is an area I enjoy exploring quite a bit. And that came as a surprise to me.<br /><br />Learning about economics, business strategies, and entrepreneurship can be really addictive. I enjoy looking at the game I want to make, the market it's trying to reach, and hashing out features, pricing, sales channels, and partnerships to make it viable.<br /><br />Running the numbers can be tedious, of course. As can digesting info to keep one's picture of the market up-to-date. However, there's a certain Skinner-like reward to reading news about the industry, and suddenly recognizing an opportunity your product is poised to take advantage of. It's one of those rare moments in life when your "money-making idea" can actually do what it says on the tin.<br /><br />The hard part, here, is often just finding useful information. Nobody is in the business of writing "A Market Analysis Tailored for Dan Fedor." There's a lot of filling in blanks with educated guesses, extrapolating data, and in some cases, blind faith. Will your next game idea be a hit? Nobody knows. Even the AAA analysts are clueless here.</li>
</ul>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-MuoJwALanpo/UdxaYnNRGfI/AAAAAAAAAZs/y_dfh-kUQUk/s1600/screenshot-2012-09-13.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="http://1.bp.blogspot.com/-MuoJwALanpo/UdxaYnNRGfI/AAAAAAAAAZs/y_dfh-kUQUk/s400/screenshot-2012-09-13.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Let's not forget DIY desktop support.</td></tr>
</tbody></table>
</div>
<div>
<ul>
<li><b>Testing and Debugging</b> - When folks say things like, "oh, you just play games all day?" this is probably of what they're thinking. And they're wrong.<br /><br />Just about everyone on a game dev team tests and debugs their work. Or at least, anyone worth their salt does. Fire up the game, navigate to the area where your recent work shows up, and start testing it.<br /><br />This can actually be a pretty fascinating area of work. It rewards good experimental method, note-taking, statistical analysis, and deduction. Sometimes, it can feel like forensics or detective work. And yes, once in a while, you get a chance to play through a section to see how it "feels."<br /><br />Unfortunately, this type of work can also require a lot of patience and persistence. It's not good enough that one tests entering combat and exiting again. One has to test cases where the player initiates combat with AI, AI with player, player with AI already in combat with AI, AI with player vs. AI. What if the player dies instead of leaving? The AI? What if one AI leaves and another stays? What if the player leaves, and more than one AI stays?<br /><br />There can be a combinatorial multitude of scenarios to test, and doing this job right means testing them all. Worse yet, once a change is made to the system, this entire suite of tests needs to be run again. And changes to the system are always happening.<br /><br />Some testing can be quite frustrating, too. A notorious example in NEO Scavenger are the null-pointer bugs that only show up later in a game session. They're frustrating because the cause is unclear, and one must play the game for long periods before the bug <i>might</i> appear. And often, the symptom of the bug varies from game-to-game, making it hard to tell if two bugs are related. If the bug cannot be caused reliably, and requires long periods of play to trigger, imagine trying to fix it. And worse, verifying that the fix <i>works</i>.</li>
<li><b>Project Management</b> - In an ideal world, each developer could just release the game they want, when they want to. In reality, the pressures of time, budget, and manpower impinge on that ideal. Project management is the process of quantifying those needs and constraints, and finding the compromise that balances those forces best.<br /><br />A lot of folks picture project management as <a href="http://en.wikipedia.org/wiki/Gantt_chart" target="_blank">Gantt charts</a>, <a href="http://www.scrum.org/Courses" target="_blank">scrum</a>, status meetings, and spreadsheets. And a lot of project management involves those things.<br /><br />However, all of us do some amount of project management subconsciously when we assess the value of a new feature against our capabilities, schedule, and budget. Whether it's a customer asking for widescreen format support, or a teammate asking for alpha channels in their sprites, we're assessing cost vs. value somehow in our decision-making process.<br /><br />There is little that I enjoy about this process, honestly. Gathering data can be a lot of work, it often involves telling people "no," and the results are based on a lot of guesswork.<br /><br />That said, the process can reveal useful questions and concerns that are missed in more casual assessments. It can also serve as a common reference point for discussions among others. Even as a solo developer, it can be very helpful to have a to-do list that I can sort by effort, value, finished/unfinished, or other criteria.<br /><br />So, for me, it's one of those things I'm glad to have done, but dislike doing.</li>
<li><b>Taxes and Accounting</b> - If you're running your own business, the CRA/IRS wants to know what you earn. And likely, you'll want to know as well.<br /><br />There is nothing enjoyable nor rewarding about doing taxes. It is 100% tedium and challenge, so I'll leave it at that.<br /><br />Accounting can be grueling, but the rewards are there if done right. It's important to know how one's business is performing, in order to make sound decisions. And it can sometimes be an ego boost if sales are good. But it's a lot of careful, detailed work, and it can involve some challenges of data-management and research.</li>
</ul>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-zRp-6I-Wz-Q/UdxdHyTn3CI/AAAAAAAAAaE/RHKvgKcT2l0/s1600/screenshot-2012-07-23.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://1.bp.blogspot.com/-zRp-6I-Wz-Q/UdxdHyTn3CI/AAAAAAAAAaE/RHKvgKcT2l0/s1600/screenshot-2012-07-23.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">More fun than taxes.</td></tr>
</tbody></table>
<div>
<b>Some Additional Hard Parts About Making AAA Games</b></div>
</div>
<br />
There are quite a few other areas that I could discuss, particularly from the point of view of a larger team. NEO Scavenger is a pretty small undertaking compared to AAA efforts, and I don't (yet) have to worry about such things as:<br />
<ul>
<li><b>Animation</b> - Either traditional or 3D rigging, keyframing, motion capture, and the like.</li>
<li><b>3D Modeling</b> - 3D models include characters, environment art, props, etc.</li>
<li><b>Materials</b> - The development of textures, shaders, and other surface material properties for models.</li>
<li><b>Lighting</b> - 3D worlds, and even some 2D worlds, require sources of light to be placed strategically.</li>
<li><b>Cinematics</b> - Positioning cameras, moving them around, as well as managing the content being shown, settings for playback, and related work.</li>
<li><b>Localization</b> - Translating the game for multiple markets.</li>
<li><b>Physics</b> - Assigning volumes and physical properties to items in the game world.</li>
<li><b>Licensing</b> - Negotiating permission to use licensed properties.</li>
<li><b>Other</b> - And everything else I've forgotten about.</li>
</ul>
<b>What is the Hardest Part About Making Games?</b><br />
<br />
So what is the <i>hardest</i> part about making games? You may have noticed a pattern in the list above, having to do with the aspects which I find tedious or difficult. "God is in the detail," as they say, and this is as true in game development as any other field.<br />
<br />
Dabbling in an art or science is fun, but due diligence is work. The hardest part of any task above is when I have to get my hands dirty and follow through with all the details. There's a reason organizations usually have a limited number of leaders with the broad-strokes vision, and an army of workers to do the detail work.<br />
<br />
However, even the tasks listed above are manageable on their own. Many are measured in hours, days, or weeks, and not much worse than school assignments in that respect.<br />
<br />
The hardest, in my opinion, is finishing a <i>game</i>. Spending hours each day, every day, consecutively for over two years. Waking up on day 520 of NEO Scavenger, and finding the motivation to do one more. That's the hard part. I like making games, but even I get tired of making the same game after all that time.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-0rH0eACzOSc/UdxfE-_l2hI/AAAAAAAAAaU/FjyepZPhw3Y/s1600/screenshot-2013-07-09.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="263" src="http://3.bp.blogspot.com/-0rH0eACzOSc/UdxfE-_l2hI/AAAAAAAAAaU/FjyepZPhw3Y/s400/screenshot-2013-07-09.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Don't mind if I do.</td></tr>
</tbody></table>
The hardest part of making a game is <i>finishing</i> it. For all the things I <i>can</i> do on my project, that's the one I still haven't.Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comtag:blogger.com,1999:blog-3993525046698649887.post-22596674765291257312013-06-17T10:54:00.000-07:002013-06-18T06:47:11.473-07:00Game Dev From the Ground UpRecently, some of the players on NEO Scavenger's forums <a href="http://bluebottlegames.com/main/node/1638" target="_blank">posted a request for advice</a> on how to start making games. I've talked quite a bit about bootstrapping indie game development here, but a lot of my focus has been on the business aspects. I do mention tools and techniques here and there, but they've been spread across two years of posts, and are often directed at a somewhat more experienced crowd.<br />
<br />
Today, then, I thought I might take a bit of time to walk newcomers through the field. There's a ton of info out there. And sometimes, that can be just as bad as there being no info out there. How does one know they're following advice or tutorials that will lead anywhere? What if one follows a tutorial, only to find that it dead-ends somewhere down the line?<br />
<br />
As it turns out, there's both good and bad news here. The bad news is that false-starts are common. Even experienced devs are lured into dead-ends. Technology is an ever-shifting field, and games even more so. It's easy to commit time and resources to something that won't pan out, and that's par for the course.<br />
<br />
The good news is that there's usually something to be gained from such failures. This is particularly the case for beginners, where every step is contributing to new skills and perspectives, if not the end product. When one is a complete beginner, there's nowhere to go but up.<br />
<br />
<b>Where to Go for Info</b><br />
<br />
As already mentioned, there are billions of places to get info on developing games. Google searching can be a bit daunting:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-wRQLmb7PegQ/Ub8k9ZXL69I/AAAAAAAAAYg/6so7_DuMTeo/s1600/screenshot-2013-06-17.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="177" src="http://2.bp.blogspot.com/-wRQLmb7PegQ/Ub8k9ZXL69I/AAAAAAAAAYg/6so7_DuMTeo/s400/screenshot-2013-06-17.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Better make some coffee...</td></tr>
</tbody></table>
So how does one know where to start?<br />
<br />
I considered compiling a list of indie development resources, but then I remembered that someone has already gone through the trouble. In fact, many people have:<br />
<br />
<br />
<ol>
<li>Pixel Prospector maintains a gigantic list of indie resources. It's probably one of the most comprehensive lists on indie game development tools, techniques, and wisdom, collected from around the web. <a href="http://www.pixelprospector.com/indie-resources/">http://www.pixelprospector.com/indie-resources/</a></li>
<li>TIGForums is one of the more active independent developer forums. Subforums abound, covering every aspect of development, including <a href="http://forums.tigsource.com/index.php?PHPSESSID=42fa82dc40c5070bbaa1b3a08013be30&board=5.0" target="_blank">creative</a>, <a href="http://forums.tigsource.com/index.php?PHPSESSID=42fa82dc40c5070bbaa1b3a08013be30&board=4.0" target="_blank">technical</a>, <a href="http://forums.tigsource.com/index.php?PHPSESSID=42fa82dc40c5070bbaa1b3a08013be30&board=3.0" target="_blank">business</a>, and <a href="http://forums.tigsource.com/index.php?PHPSESSID=42fa82dc40c5070bbaa1b3a08013be30&board=16.0" target="_blank">tutorials</a>. <a href="http://forums.tigsource.com/">http://forums.tigsource.com/</a></li>
<li>Gamasutra is a major source of all things gaming, with a focus more on the developers than consumers. There is a vast catalog of knowledge here, including news, tutorials, GDC videos, jobs, and op-ed. <a href="http://www.gamasutra.com/">http://www.gamasutra.com/</a></li>
<li>StackExchange is probably one of the most valuable places to know about when trying to find the answer to a technical question. The questions and answers are usually of high quality and value, owed in part to their curation and voting mechanisms. Many of my epic quests for esoteric programming or technical knowledge end here. <a href="http://stackexchange.com/">http://stackexchange.com/</a></li>
<li>Daniel Cook's blog posts are also a good place to read about game design, business, and the craft in general. Aspiring indies who struggle with art may be particularly interested in his article about <a href="http://lostgarden.com/labels/free%20game%20graphics.html" target="_blank">sourcing game graphics</a>. <a href="http://www.lostgarden.com/2008/07/directory-of-posts.html">http://www.lostgarden.com/2008/07/directory-of-posts.html</a></li>
</ol>
<br />
Some folks like sharing what they've learned, which might make this a good time to mention an important lesson I've learned: see if someone's already done the work for you. The internet is a pretty amazing thing, giving us near-instant access to a growing proportion of all human knowledge. When it comes to game development, a lot of the problems (most, in fact) are ones that have been tackled before. It's worth doing a quick search first, just in case someone's already saved you the trouble.<br />
<br />
<b>Which Tools to Use</b><br />
<br />
Choosing a platform, engine, tools, or project management method is like choosing a religion: fanatics are everywhere, and will try to sell you on their favorite. But in the end, just about any of them will teach you something, even if it's that religion isn't for you.<br />
<br />
Again, I'm going to harp on Pixel Prospector. One of the first links they list covers <a href="http://www.pixelprospector.com/the-big-list-of-game-making-tools/" target="_blank">a vast list of tools and engines</a>. Read what people say about them. And more importantly, look up what people are <i>building </i>with them. There's no greater proof of a tool's validity than the thing it was used to create.<br />
<br />
What did I learn on? Well, this:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-u-w8rQAPKzk/Ub9C38_z1wI/AAAAAAAAAY4/0xN1-1PhvPw/s1600/stos_the_game_creator_d7.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="400" src="http://2.bp.blogspot.com/-u-w8rQAPKzk/Ub9C38_z1wI/AAAAAAAAAY4/0xN1-1PhvPw/s400/stos_the_game_creator_d7.png" width="283" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Computers can do ANYTHING</td></tr>
</tbody></table>
I also learned by copying BASIC code from <a href="http://en.wikipedia.org/wiki/Antic_(magazine)" target="_blank">Antic magazine</a> into an Atari 800, and watching the results go. Also, trying to emulate Leisure Suit Larry as a text app in my junior high computer class, using BASIC on an Apple IIe. And taking a "programming for engineering" course at univeristy. And buying 20lb "Learn 2 Program" books from Barnes & Noble, and copying their C-code into engines like <a href="http://en.wikipedia.org/wiki/Allegro_(software)" target="_blank">Allegro</a>. And writing Flash apps for my web development employer. And following Microsoft's XNA banner for a while.<br />
<br />
The point of my telling you this isn't to say that I've had a lot of training. Most of the above was better described as "flailing," or maybe just "failing." And even the things that did succeed became obsolete with time. Technology comes and goes fast, as do platforms.<br />
<br />
The point is to learn something in the process. All of the above taught me bits about how computer programs work, how information is organized, how logic controls data in an application, and how bitmaps work. Sometimes those lessons were learned while modding <a href="https://en.wikipedia.org/wiki/Dark_Reign:_The_Future_of_War" target="_blank">Dark Reign</a>. Other times, I wrote code that put pixels on the screen in a starfield, and I moved them about in sloppy for-loops.<br />
<br />
What's my tool of choice? I'm a fan of Flash's <a href="http://en.wikipedia.org/wiki/ActionScript" target="_blank">Actionscript</a>, and <a href="http://flixel.org/" target="_blank">flixel</a>. Actionscript is a c-style, object-oriented (OO) language, which is a good type of language to learn. Many game-related technologies are c-style, OO languages:<br />
<br />
<ul>
<li>C/C++</li>
<li>C#</li>
<li>Objective C</li>
<li>Flash</li>
<li>Unreal/UnrealScript</li>
<li>Java</li>
<li>HTML5/Javascript</li>
<li>PHP</li>
<li>Perl</li>
<li>Haxe/OpenFL (a.k.a. NME)</li>
</ul>
<br />
Learning one is usually a good head-start in any of the others.<br />
<br />
Flixel is a game engine built on Flash actionscript, and is a good balance of existing systems and free-reign to do what I want.<br />
<br />
Would I build my next game in Flash/Flixel? Probably not. Flash is starting to limit me in some ways, and I'm looking towards <a href="http://haxe.org/" target="_blank">Haxe</a> and <a href="http://www.haxeflixel.com/" target="_blank">HaxeFlixel</a> as a next step. It takes a lot of what I like about Flash and Flixel, adds some powerful abilities to it, and frees it from the clutches of Adobe (and the Apple-Adobe-Android wars).<br />
<br />
That said, building something in Flash/Flixel now should put one in a good position to transition to HaxeFlixel later. They're similar enough that learning one teaches most of the other.<br />
<br />
<b>Hello, World</b><br />
<br />
And once you've chosen your tools of choice, what then? Should you write an epic design doc, plan out all the facets of your game, and start building?<br />
<br />
I'd focus on "Hello, World." If you can get code to compile and display that phrase on the screen, there's nothing stopping you from writing "Health = 100," or "You are standing in an open field west of a white house, with a boarded front door."<br />
<br />
Or simply print some ascii art, and let the arrow keys move it around the page. Or maybe write some text about how much <a href="http://candies.aniwey.net/" target="_blank">candy</a> you have. Or how your <a href="http://www.bay12games.com/dwarves/" target="_blank">dwarves</a> feel.<br />
<br />
The point here is that once you've got something displaying on the screen, the rest is just tweaking and watching the results. NEO Scavenger was originally a sprite of a man, and clicking a button moved that man closer to a dot. Each time he moved, his sleepiness went up. If you clicked another button, he slept, and his sleepiness went down. <a href="http://gamedevgonerogue.blogspot.ca/2013/04/neo-scavengers-humble-beginnings.html" target="_blank">I kid you not</a>.<br />
<br />
So choose a tool, any tool. Search Google for:<br />
<blockquote class="tr_bq">
<span style="font-family: Courier New, Courier, monospace;">tutorial "hello world" <tool name></span></blockquote>
and don't give up!Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comtag:blogger.com,1999:blog-3993525046698649887.post-56041036118605470122013-06-03T11:46:00.000-07:002013-06-03T11:46:31.551-07:00Return from Vacation, and the Road AheadI apologize for the previous gap in updates. Rochelle and I were at the beach with my family for a few weeks, and I made it a point not to do any more work-related stuff than was necessary.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-T2CJfPCLpRU/UazgFhYRr-I/AAAAAAAAAYQ/41aVDOCDleo/s1600/DSC02916.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="http://2.bp.blogspot.com/-T2CJfPCLpRU/UazgFhYRr-I/AAAAAAAAAYQ/41aVDOCDleo/s400/DSC02916.JPG" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">I could get used to these.</td></tr>
</tbody></table>
Unsurprisingly, work still crept in, here and there. I cut down my email and web administration duties to once every other day, but it still took a few hours each time. There isn't really anyone to cover for me in these cases, so I'm on the hook for order issues, spambot surge mitigation, and customer inquiries. One alternative would be to "go dark" for several weeks, but that seems like an irresponsible thing to do when running a business, particularly where customer support is a component.<br />
<br />
As such, vacation wasn't a complete break from the stress. Nothing critical arose during the break, thankfully, but it was still something that was in the back of my head. Work check-in was never more than a day or two away, and more significantly, a giant to-do list awaited me when I returned.<br />
<br />
I think that while previous vacations have taught me that vacations are necessary and healthy, this vacation added the caveat that vacations can be diminished by obligation. Basically, there would either have to be no obligations to fulfill, or someone to fill those obligations for me in order to completely relax, stress-free.<br />
<br />
The former requires that NEO Scavenger be finished and support-free. Admittedly, that goal is pretty far off, if even possible. More than likely, there will be a long tail of support and attention required, no matter how bulletproof I make the game. Platforms evolve, partnerships are formed, and other changes in the business landscape mean that a product is never truly dead (see <a href="http://www.rockpapershotgun.com/2013/04/22/and-homeworld-went-to-gearbox/" target="_blank">Homeworld</a>, <a href="http://wasteland.inxile-entertainment.com/" target="_blank">Wasteland</a>, etc.)<br />
<br />
The latter requires that I expand the team, which is a daunting goal in itself. Questions of trust, availability, motivation, and compensation are each topics that require their own, significant, due diligence. I've long been reluctant to let anyone into the sandbox, and these are some of the big reasons why.<br />
<br />
It's time to "start finishing."<br />
<br />
As such, my current goal is to "level up" NEO Scavenger, and make it newsworthy again. A little more work, and I can at least consider the demo "done," making it ripe for sharing with portal sites like <a href="http://www.kongregate.com/" target="_blank">Kongregate</a> and <a href="http://www.newgrounds.com/" target="_blank">NewGrounds</a>. That should hopefully make new players aware of the game, and if the beta looks like a worthwhile-enough upgrade, drive new sales as well.<br />
<br />
The increased awareness would help with the <a href="http://steamcommunity.com/sharedfiles/filedetails/?id=92934582" target="_blank">Greenlight</a> campaign, which is a bid for more PR and sales in itself. There are some contests I'm considering, as well as some "taste makers" I'd like to finally contact, now that NEO Scavenger is maturing.<br />
<br />
And if things go smoothly, I can see either finishing the home stretch personally (albeit slowly), or maybe investing a little money to speed the remainder of the content work.<br />
<br />
It's a scary moment, one of those crossroads where I endlessly find excuses to avoid taking the next step, but it's time to get into high gear. Whatever happens, I'm already happy with the outcome so far, and I only have more to gain from moving forward.<br />
<br />
Plus, peace and rest waits for me over that next hill, and I never thought that would be such an enticing goal.Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comtag:blogger.com,1999:blog-3993525046698649887.post-34651001349963681542013-04-30T07:09:00.000-07:002013-04-30T07:09:42.951-07:00The Many Faces of Low Morale<br />
<div style="text-align: center;">
<i>And it's one, two, three,</i></div>
<div style="text-align: center;">
<i>What are we fighting for?</i></div>
<div style="text-align: center;">
<i>Don't ask me, I don't give a damn,</i></div>
<div style="text-align: center;">
<i>Next stop is Vietnam.</i></div>
<div style="text-align: center;">
<i>And it's five, six, seven,</i></div>
<div style="text-align: center;">
<i>Open up the pearly gates.</i></div>
<div style="text-align: center;">
<i>Well there ain't no time to wonder why.</i></div>
<div style="text-align: center;">
<i>Whoopee! We're all gonna die.</i><br />
<i><br /></i>
-<a href="http://www.youtube.com/watch?v=Soy3PHV3RiM" style="text-align: start;">Country Joe and the Fish</a></div>
<br />
<span style="font-family: inherit;">I want to talk a bit about morale.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">As game developers, we have good days and bad days. When it's good, it's pretty exhilarating. We're lucky in that our industry is one where many of us do what we love; what we believe in. Most of us approach each day energized, and ready to make something cool.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">When that morale drops, however, even the passion we have for our work can be too weak to stir us. It becomes a chore to start or continue a task; to find inspiration; to be critical of our own work; even to approach others. In a way, much of what makes us good game developers comes and goes with our morale.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">As someone who's worked continuously for the last 14 years, I've been through a few spells of low morale. And as I became more familiar with them, I started noticing certain signature behaviors in myself and others. During one particularly long bout, I decided to catalog my feelings and behaviors as I had them, with the intent of cleaning it up for presentation and review later.</span><br />
<br />
That "later" has finally come, and I've put together the list below. My hope is that it does a few things:<br />
<ol>
<li>Help managers recognize the tangible benefits of high morale by contrasting against what is lost to low morale.</li>
<li>Help employees to understand how low morale can cause a negative feedback loop, worsening the problem.</li>
<li>Help both managers and employees alike to recognize the symptoms when they suffer from them.</li>
</ol>
Low morale has a way of creeping in, so sometimes we're under its influence before we realize it. And in many cases, our natural tendencies are to bunker down and make it worse. Recognizing that it's a problem, and when it happens, are important first steps towards taking corrective actions. Because, as we will see, low morale can have some pretty devastating effects, to individuals, their teams, and projects alike.<br />
<br />
<span style="font-family: inherit;"><b>Motivation to Work</b></span><br />
<span style="font-family: inherit;"><br /></span>
<br />
<span style="font-family: inherit;">Probably the most obvious (and expected) effect of low morale is the lack of motivation to actually <i>do</i> work. I would have difficulty starting new tasks, or getting out of idle slumps. The prospect of coming in to work in the morning, or back from lunch to a task, felt burdensome instead of inviting. </span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">The days quickly devolve into a series of attempts at avoiding work, whether it be checking email, "researching" something on the web, or even making a long, slow trip to get a cup of coffee. I found I'd actually relish the need to use the restroom at times, because it meant I could take a walk away from my desk, even for a few minutes.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Not surprisingly, this type of foot-dragging creates a downward spiral, as tasks get pushed back later and later, piling up and seeming even more insurmountable against the already low, and falling, motivation.</span><br />
<div>
<span style="font-family: inherit;"><br /></span></div>
<span style="font-family: inherit;"><b>Reactive Posture</b></span><br />
<span style="font-family: inherit;"><br /></span>
Another fairly obvious change in my work ethic involved my willingness to seek out work. When succumbed by low morale, it was tempting to just wait for tasks to come to me, rather than seek out what needed doing most. I just didn't have the energy nor motivation to make new work for myself. Instead, I would lay low and hope to be looked over when it came time to task someone with something.<br />
<br />
Unfortunately, that tended to make things worse as well. Invariably, the tasks that <i>did</i> find their way to me were things that others didn't want to do, either. And since I was decidedly <i>un</i>-busy, I was ripe for nomination. Again, tasks would pile up almost as fast as my distaste.<br />
<br />
<b>Indecisiveness/Ambivalence</b><br />
<br />
<span style="font-family: inherit;">One change that was a bit more of a surprise to me was my lowered investment in decision-making. As someone normally pretty engaged in lively debates (and a confessed contrarian), I was surprised to realize I just didn't care one way or the other how things turned out.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">For someone to be this far gone should be concerning. Possibly the only mechanism one has for making things better is to be involved in decisions as they are made. Furthermore, personal investment in a project or organization are only likely to get worse as one sits out important decisions.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><b>Less Feedback</b></span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Related to indecisiveness, above, I found a significant drop in my willingness to volunteer feedback to decisions and announcements. Like above, this only serves to dissociate one from the work or environment to which those decisions and announcements pertain.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><b>Defensive Scheduling</b></span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">My time became a battleground when my morale was at its lowest. I found myself defending personal time against any intrusion. If meetings ran long into my lunchtime, or overtime was called for, I was way more likely to make a "thing" of it. </span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Ironically, for all of the lack of motivation and decisiveness exhibited in all other aspects, this area seemed to be the exact opposite. I had fuel for endless battles when it came to defending my personal time, and it only grew stronger the more I was resisted.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><b>Pigeonholing</b></span><br />
<span style="font-family: inherit;"><br /></span>
<br />
<span style="font-family: inherit;">As with defensive scheduling, above, I also felt a distinct lack of enthusiasm or energy to do things not directly related to my job description. "Not my job" sprung to mind whenever anyone approached me with something I could find an excuse not to do.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">In practice, this rarely plays out as obvious as that. Most people would prefer not to be "that guy," who shirks duties and passes the buck. Whether out of politeness or self preservation, most will quietly, begrudgingly, accept the tasks. However, this attitude can be as damaging just by virtue of the stress and resentment it breeds.</span><br />
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<span style="font-family: inherit;"><b>Distraction</b></span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
I also found it can be easy to become distracted by anxiety when one's future is uncertain. When one is worried about what comes next, their mind is not on the "now," and the work suffers. This is a slightly different facet of low morale, as it can infect even the most diligent employees. This sort of anxiety is often the result of leadership failing to communicate in ways that the employee responds to, failing to follow-through with promises, or not communicating at all.<br />
<br />
To make matters worse, most game developers are able to call upon an extremely powerful imagination when trying to ascertain worst possible outcomes. And fear can be infectious between colleagues.<br />
<br />
<b>Introversion</b><br />
<br />
<span style="font-family: inherit;">Possibly one of the more self-destructive aspects of low morale is the tendency to withdraw into oneself. Some employees actually form stronger coworker bonds during times of low morale, finding unity in the shared suffering. </span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">However, many in the games industry, myself included, are introverts. And introverts often find it easy to abandon social ties when things get tough. Over a period of time, I found myself transitioning away from daily lunch and evenings out with coworkers towards lunches at my desk, and retreating home after work.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">The key behavior to watch for isn't necessarily reclusiveness (which might be normal), but rather a sudden or gradual divestment in social ties.</span><br />
<br />
<span style="font-family: inherit;"><b>Nothing to Lose</b></span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">For all the negative side-effects of low morale, it turns out there was at least one benefit: courage. When things are bad, it can feel like there is little room left to fall. Sometimes this can manifest as a desire to champion change within the workplace. </span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">More often, however, this is the trigger point for employee turnover. Visions of greener grass are all it takes to start vetting other employers, or new careers altogether.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><b>Psychological Impact of Low Morale</b></span><br />
<span style="font-family: inherit;"><br /></span>Many of the above symptoms are not unlike experiencing depression, and maybe that should be no surprise. For many in the game industry, passion is what defines their career, and having that relationship fail can be devastating.<br />
<br />
What are some things we can do to improve morale? A satisfactory discussion of that topic is well beyond the scope of a concluding paragraph. I've heard it said that employee autonomy is a <a href="http://blogs.hbr.org/cs/2013/04/stop_telling_your_employees_wh.html">good place to start</a>. Another area to examine is whether your workplace is fostering the right balance of intrinsic and extrinsic motivators, as having <a href="http://www.youtube.com/watch?v=9j2aTwNor5k">purpose</a> is an important motivator. Or maybe you just need to work on getting everyone on the <a href="http://blog.guykawasaki.com/2006/01/mantras_versus_.html">same page</a>.<br />
<br />
Whatever the case, morale should be one of your organization's top concerns, right up there with finding top talent. Because if your current top talent is suffering any or all of the symptoms above, the aren't really top talent anymore. They're just unhappy warm bodies drawing top talent salaries until they can be inspired again.<br />
<br />
<b>A Note About Low Morale for Indies</b><br />
<br />
Indies are by no means immune to the effects of low morale. It might sound as if many of the above are AAA organizational and leadership issues, but low morale can precipitate out of a one-man show as well. Faith in one's work, skill, or even platform of choice, can be shaken. Indecision can paralyze progress. Distractions become that much harder to combat with nobody nearby to keep you in check.<br />
<br />
And the effects are just as damaging. Low motivation to work can halt progress. Energy for making decisions can come up short, causing a shift to busy work instead of meaningful analysis. And the tendency to withdraw socially can inhibit good customer relations and PR.<br />
<br />
Indies have a fairly serious obligation to keep their personal health and morale in check. We may be blessed by a vast network of internet buddies pulling for us, but our remoteness from the network might mean we're "off the grid" for too long before someone notices.<br />
<br />
Being sensitive to the symptoms of low morale can help alert us to things gone awry. We can recognize self-destructive behavior if we know what we're looking for. And armed with that knowledge, we can make incremental changes to help get ourselves back on track, or seek a friendly ear when it's too much to tackle alone.Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comtag:blogger.com,1999:blog-3993525046698649887.post-64103902832561543262013-04-15T15:42:00.000-07:002013-04-16T16:29:23.461-07:00If You Agree to Crunch, You're Part of the ProblemRecently, Ben Kuchera <a href="http://penny-arcade.com/report/article/lucasarts-eulogy-reminds-us-of-the-inhuman-cost-of-game-development">called to light</a> a <a href="https://www.facebook.com/jesse.harlin/posts/10151866666512575">eulogy for LucasArts</a>, drawing particular attention to the sacrifices made by employees in enduring crunch. In his words, crunch is a "monstrosity" not to be romanticized, and that's actually a pretty good way to put it. For not only is it a wholly destructive force unleashed on those who work in the industry, it also never seems to die, no matter how many times we try to kill it.<br />
<br />
And as developers, it's our fault.<br />
<br />
<b>What is crunch?</b><br />
<div>
<br /></div>
<div>
Before I get into the hows and whys, though, let's quickly establish some definitions.</div>
<div>
<br /></div>
<div>
Overtime, which is a component of crunch, is defined as working more than 8 hours in a day, and more than 40 hours in a week. Some places vary in those numbers (e.g. Alberta, Canada uses <a href="http://humanservices.alberta.ca/working-in-alberta/1470.html">44 hours</a> for their week), but it's roughly in that ballpark for <a href="http://en.wikipedia.org/wiki/Working_time">most of the world</a>.</div>
<div>
<br /></div>
<div>
Crunch is the "sustained" application of overtime. Definitions of what "sustained" means here vary, but I think all will agree "months" qualifies without hesitation. "Weeks" has a pretty good shot of qualifying as well. "Days" is probably arguable, and starts to depend on how often within a month it happens.</div>
<br />
Crunch is, basically, leaning on overtime too heavily to solve problems. And as it turns out, there are some more concrete definitions of how much overtime is "too much."<br />
<br />
<b>Why do we crunch?</b><br />
<br />
What is <i>good</i> about crunch? Why do we do it?<br />
<br />
Ostensibly, crunch is meant to increase productivity of a given set of developers within a given time frame. Evan Robinson actually addresses this question in his <a href="http://www.igda.org/why-crunch-modes-doesnt-work-six-lessons">Why Crunch Mode Doesn't Work: Six Lessons</a>:<br />
<blockquote class="tr_bq">
Management wants to achieve maximal output from employees — they want to produce a (good) product as cheaply as possible. They also want to avoid hiring extra resources that increase the cost of the finished goods unless absolutely necessary. On the surface of it, Crunch Mode looks like the most obvious and logical way to reconcile these two desires.</blockquote>
He also points out that this is often related to a looming project deadline. He then expresses that assumption as a simple, linear function:<br />
<blockquote class="tr_bq">
O = R * t</blockquote>
Where O is the team's total output, R is the team's rate of output per hour, and t is the number of hours worked.<br />
<br />
However, as Evan's extensive research illustrates, R is not constant over time. R actually varies over the course of a normal work day, peaking in the first 4-6 hours. In fact, R approaches and even drops <i>below</i> zero after enough hours, resulting in negative output for workers.<br />
<br />
Effectively, an employee starts damaging the product they work on (bugs, quality issues) if left to work for too long continuously. (For reference, Evan cites 21 as the number of continuous hours of work one needs to reach a mental state equivalent to being legally drunk.) Conversely, working 8-hour days was shown to produce a 16-20% productivity boost over working 9-hour days.<br />
<br />
What's more, prolonged periods of long work days start to produce a cumulative fatigue, reducing the average daily rate R by more each subsequent day. In <a href="http://www.danzpage.com/Construction-Management-Resources/Calculating_Loss_of_Productivity_Due_to_OT_Using_Charts_-_Nov_2001.pdf">The Revay Report</a>, experimenters found that 60-hour weeks boost productivity for a few days, but productivity noticeably dropped after a week, cancelling out the boost at 2 months, and continuing to worsen over time after that. (see figs. 2, 3a, 3b, page 2)<br />
<br />
Evan goes on to point out that every single other industry has spent the past 100 years optimizing this formula, and has arrived at the 8-hour day, 40-hour week. In Evan's words:<br />
<blockquote class="tr_bq">
Any way you look at it, Crunch Mode used as a long-term strategy is economically indefensible. Longer hours do not increase output except in the short term. Crunch does not make the product ship sooner — it makes the product ready <i>later</i> . Crunch does not make the product better — it makes the product <i>worse</i>.</blockquote>
I don't think I could put it any clearer than that, except to point out that this is only how crunch negatively impacts the product. For the other drawbacks, I certainly can't put it any better than those <a href="http://www.polygon.com/2012/11/1/3560318/homefront-kaos-studios-thq">who</a> <a href="http://ea-spouse.livejournal.com/">already</a> <a href="http://www.gamasutra.com/blogs/RockstarSpouse/20100107/4032/Wives_of_Rockstar_San_Diego_employees_have_collected_themselves.php">have</a>. In short, crunch ruins lives, products, and sometimes companies, with no up-side.<br />
<br />
<b>How is this our fault?</b><br />
<br />
So how is crunch our fault? I mean, developers are the victims, aren't they?<br />
<br />
It's true that developers bear the brunt of the pain in crunch. And it might be comforting to imagine that someone "up the pay scale" is responsible for botching things enough to warrant crunch. It's that last phrase, though, that's the problem: "enough to warrant crunch."<br />
<br />
How can a project ever warrant crunch? We've already shown that crunch has a purely negative impact except in the shortest of intervals. So how can we agree to do it? Whether for selfish reasons or love for our product, how can we say it's "ok" to begin working in such a way that damages the product, ourselves, and our coworkers?<br />
<br />
Nothing warrants crunch. As we've just seen, industry has been wrestling with the pros and cons of crunch for a <a href="http://psychclassics.yorku.ca/Munster/Industrial/chap17.htm">century</a> now, and crunch has been shown to be ineffective. Crunch is not a rational option. And our guilt is enabling crunch to happen in the first place.<br />
<br />
If you agree to crunch, you are incrementally making the whole industry worse for everyone, yourself included.<br />
<br />
Take a moment to let that sink in. Everyone is worse off for your agreeing to crunch. You have to work more, and deal with mounting stress and diminishing rest. Your coworkers have to agree or appear unreasonable in the face of your compliance. The lives of those around you and your coworkers are affected. And your company is forced to absorb the drop in product quality, along with a workforce that's losing competence, morale, and loyalty by the day.<br />
<br />
Crunch isn't helping anyone. And by agreeing to it, you're making it easier for crunch to exist.<br />
<br />
<b>What if your manager asks you to crunch?</b><br />
<br />
In short, tell them "no." Be polite about it, of course, but don't let politeness give way to bad business.<br />
<br />
Look at it this way. By asking you to crunch, your manager has simultaneously just done two things:<br />
<ol>
<li>Indicated that they have failed to manage the project appropriately thus far.</li>
<li>Indicated that they have no clue how to continue going forward.</li>
</ol>
Now, if you like this manager, it might be a good time to pull them aside and direct them to this post, or <a href="http://www.igda.org/why-crunch-modes-doesnt-work-six-lessons">Evan's piece</a>, or <a href="http://www.danzpage.com/Construction-Management-Resources/Calculating_Loss_of_Productivity_Due_to_OT_Using_Charts_-_Nov_2001.pdf">any</a> of <a href="http://history.nasa.gov/rogersrep/v2appg.htm">the</a> <a href="http://www.worklessparty.org/timework/ford.htm">research</a> <a href="http://www.worklessparty.org/timework/covenant.htm">sources</a> <a href="http://psychclassics.yorku.ca/Munster/Industrial/chap17.htm">Evan</a> <a href="http://www.worklessparty.org/timework/chapman.htm">used</a>. If they didn't know, fair enough. Now they do.<br />
<br />
If they still insist on crunch after learning about its negative effects, you might want to say "I'll think about it" and speak to <i>their</i> manager. Again, arming yourself with polite concern, and some established research on the topic, hopefully you can impress your point on someone with more experience and reverence for historical data.<br />
<br />
If you find yourself talking to more than 2-3 managers in this way without progress (or run out of managers), you might want to consider another option: finding a new employer. Because any company willing to impose crunch on their employees at that many levels of management has a deep-seated philosophical problem, and it may take more than common sense to fix it.<br />
<br />
<b>What if your manager doesn't ask you directly?</b><br />
<br />
What if you're in a place where crunch is the elephant in the room? I.e. nobody explicitly <i>asks</i> you to crunch, but it's <i>implied</i> that overtime is expected? Perhaps that's just "the way it's always been," and sticking to normal working hours seems like an invitation to be fired.<br />
<br />
Again, this is a topic to be broached with managers. Give them the benefit of the doubt. Bring it up, and see where things go. As above, if you can't make any progress after 2-3 rungs on the company ladder, that may be a sign you're in a place that's unhealthy.<br />
<br />
<b>What if they fire me?</b><br />
<br />
What if they do?<br />
<br />
Ask yourself that, seriously. If the company you work for sees your concern about unhealthy work-life balance as cause for termination, I think you can safely write them off as an employer you want a relationship with any longer.<br />
<br />
You may have heard (or even been <i>told</i> at some creepier companies) that there are 100 others waiting to take your job if you leave, so it's no skin off the company's teeth if you go. That's not true, though.<br />
<br />
Good companies recognize the true cost of finding and training good workers. It takes time and resources to find a good worker, and more to train them in your company's workflow. If your company doesn't recognize this, it's probably not a good company. They'd be doing you a favor by firing you.<br />
<br />
<b>What if I'm compensated for crunch?</b><br />
<br />
In light of the aforementioned effects of crunch, this should be irrelevant. The focus should be on removing crunch entirely, not putting a band-aid on it.<br />
<br />
If employees were compensated for crunch, we might see a change in crunch habits in the industry, but that's just conjecture. As it is, employees are rarely compensated fairly for their crunch, either in dollars or days off.<br />
<br />
California may be the one place where this is addressed by law, promising anyone under $83k annual salary ($39.90/hr) time-and-a-half pay for any and all overtime (<a href="http://www.dir.ca.gov/dlse/LC515-5.pdf">Labor Code Section 515.5(a)(3)</a>). They also define several <a href="http://www.dir.ca.gov/dlse/Glossary.asp?Button1=E#employee%20in%20the%20computer%20software%20field">exceptions and exemptions</a>, which mandate overtime for entry-level or in-training software fields, film and television artists, and writers. How this impacts software development in California remains to be seen, though.<br />
<br />
However, whether you're compensated for extra work or not doesn't address the bigger issue of whether your management knows what they're doing or not.<br />
<div>
<br /></div>
<b>The bottom line</b><br />
<br />
The point to remember here is that a century of industrial research and work hours testing has resulted in the nominal working hours of 8 per day, and 40-44 per week. This combination produces the highest sustainable productivity possible.<br />
<br />
In short bursts, overtime can produce a slight boost in productivity. But the boost wanes after only a few days, and actually cumulatively grows worse each day after that.<br />
<br />
If your employer is suggesting (or fostering) an environment where overtime is sustained longer than a few days, start considering whether they're causing more harm than good. See if you can open a dialogue with managers or HR to address the problem in other ways. And be prepared to say "no."<br />
<br />
If you like your employer, reward them accordingly. Give them diligence, timeliness, hard work, honesty, creativity, accountability, loyalty, and all the other things you're paid for. In exchange, expect them to provide a healthy working environment, tools and support, intelligent planning, and monetary compensation for your efforts.Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comtag:blogger.com,1999:blog-3993525046698649887.post-75948076342925459612013-04-02T13:53:00.002-07:002013-04-02T13:55:26.782-07:00NEO Scavenger's Humble BeginningsI was cleaning up some old files on my laptop this weekend, and I came across some of NEO Scavenger's earliest prototypes and documentation. And let me tell you, they were pretty eye-opening. Even for me. NEO Scavenger has come a long way.<br />
<br />
Since this blog is meant to help newcomers to the indie world, I thought maybe I'd share some of what I found. Not only is it interesting to see how an idea evolves over time, it also might encourage those who are daunted by the finished products they play.<br />
<br />
Few games, if any, spring forth whole like Athena from Zeus. More often, they're ugly, slimy, helpless little buggers, just like you and I were when we were born :)<br />
<br />
<b>A Little History</b><br />
<br />
In <a href="http://gamedevgonerogue.blogspot.ca/2011_04_01_archive.html">April, 2011</a>, I left my job at BioWare to try my hand at making games of my own design. NEO Scavenger was a foggy idea I had kicking around my brain, and was actually quite a different beast back then.<br />
<br />
In fact, NEO Scavenger even had a different name: Post Apocalyptic Oregon Trail (PAOT). Here's a look at it's original design doc (pre-dating the <a href="http://gamedevgonerogue.blogspot.ca/2011/06/game-design-document.html">design doc published in June 2011</a>):<br />
<br />
<br />
<b><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Title</span></b><br />
<span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Post Apocalyptic Oregon Trail (PAOT)</span><br />
<div>
<span style="color: #0b5394; font-family: Courier New, Courier, monospace;"><br /></span></div>
<b><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Category</span></b><br />
<span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Survival/Strategy</span><br />
<span style="color: #0b5394; font-family: Courier New, Courier, monospace;"><br /></span>
<b><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">What Is The One Sentence Story Line?</span></b><br />
<span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Exiled from MegaCity, the player must survive the wild wastes as he travels west in search of paradise.</span><br />
<div>
<span style="color: #0b5394; font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<div>
<b><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">What Is The Game About?</span></b></div>
<div>
<span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Salvage food, shelter, and tools from the wastes to meet daily survival needs, as you travel west to paradise beyond the mountains.</span></div>
</div>
<div>
<span style="color: #0b5394; font-family: Courier New, Courier, monospace;"><br /></span></div>
<div>
<div>
<b><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Game Overview</span></b></div>
<div>
<ul>
<li><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Man against nature</span></li>
<li><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Plot your course west, one day at a time.</span></li>
<li><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Search for food in the wilds and wastes, to stave off hunger.</span></li>
<li><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Find shelter from the elements to stay healthy.</span></li>
<li><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Find and improvise tools to help in your journey.</span></li>
<li><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Balance the provisions you carry against the fatigue of carrying them.</span></li>
<li><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Manage inventory by arranging your belongings in pockets, compartments, and other containers like puzzle pieces.</span></li>
<li><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Find transportation to help you travel faster, at the cost of fuel and maintenance.</span></li>
</ul>
</div>
<div>
<b><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Differentiation Within The Category</span></b></div>
<div>
<ul>
<li><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Focus more on survival through resourcefulness rather than gunplay</span></li>
<li><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Opposition is mainly environmental rather than soldiers, monsters, etc.</span></li>
<li><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Play style is more laid back and pensive than Resident Evil type survival games.</span></li>
</ul>
</div>
</div>
<div>
<div>
<b><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Franchise Strategy</span></b></div>
<div>
<ul>
<li><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Free Flash game, licensed to game hubs</span></li>
<li><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Possible ad revenue through MochiAds</span></li>
<li><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Story establishes IP for POST </span><i>(Note: POST was a working title for a post-apocalyptic setting)</i></li>
</ul>
</div>
<div>
<b><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Similar Titles</span></b></div>
</div>
<div>
<ul>
<li><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Oregon Trail (I, II, Yukon, Amazon, etc.)</span></li>
<li><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Survival Kids (1, 2)</span></li>
<li><span style="color: #0b5394; font-family: Courier New, Courier, monospace;">Lost in Blue (1, 2, 3, Shipwrecked)</span></li>
</ul>
<div>
The game described is actually not too far off from NEO Scavenger, at least in terms of theme and gameplay. The focus on traveling west is different, as is the origin of the character (MegaCity exile). And the transportation bit is admittedly optimistic.</div>
</div>
<div>
<br /></div>
<div>
The "Franchise Strategy" is a completely different story, though. NEO Scavenger as a free, ad-supported game was based on the assumption that I would work on it for a few months, then launch. Little did I know that I'd be working on the same game for years (starkly against my own <a href="http://gamedevgonerogue.blogspot.ca/2011/03/indie-develoment-and-money.html">advice</a>).</div>
<div>
<br /></div>
<div>
Also, revel in how little I knew about the survival genre. Granted, many survival titles have cropped up in the past two years. But I'm pretty sure I was missing several important titles in that market assessment.</div>
<div>
<br /></div>
<div>
<b>NEO Scavenger's First Prototype</b></div>
<div>
<br /></div>
<div>
Perhaps a more telling example of my lack of understanding is NEO Scavenger's first prototype:</div>
<div>
<br /></div>
<div>
<object align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=11,2,0,0" height="360" id="PAOT01" width="500">
<param name="allowScriptAccess" value="sameDomain" />
<param name="allowFullScreen" value="true" />
<param name="allowFullScreenInteractive" value="true" />
<param name="movie" value="http://www.bluebottlegames.com/img/screenshots/PAOT01.swf" /><param name="quality" value="best" /><param name="scale" value="default" /><param name="bgcolor" value="#ffffff" /> <embed src="http://www.bluebottlegames.com/img/screenshots/PAOT01.swf" quality="best" scale="default" bgcolor="#ffffff" width="500" height="360" name="PAOT01" align="middle" allowScriptAccess="sameDomain" allowFullScreen="true" allowFullScreenInteractive="true" FlashVars="" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" />
</object>
</div>
<div>
Press the "I" key to see the map in the prototype.<br />
<br />
Impressive, huh? You can move colored blocks around a grid, and switch to a map view to watch our protagonist travel west from "Elis." There's some random weather variables, tracking of time, hunger, sleep, and distance, and the ability to choose between traveling or sleeping for the next 4 hours.<br />
<br />
The next prototype added a fancy map to the background:<br />
<br />
<br />
<object align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=11,2,0,0" height="360" id="PAOT02" width="500">
<param name="allowScriptAccess" value="sameDomain" />
<param name="allowFullScreen" value="true" />
<param name="allowFullScreenInteractive" value="true" />
<param name="movie" value="http://www.bluebottlegames.com/img/screenshots/PAOT02.swf" /><param name="quality" value="best" /><param name="scale" value="default" /><param name="bgcolor" value="#ffffff" /> <embed src="http://www.bluebottlegames.com/img/screenshots/PAOT02.swf" quality="best" scale="default" bgcolor="#ffffff" width="500" height="360" name="PAOT02" align="middle" allowScriptAccess="sameDomain" allowFullScreen="true" allowFullScreenInteractive="true" FlashVars="" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" />
</object><br />
<br />
Not much more to do, though. I eventually added a more representative item to the inventory screen, and made each location contain two of those items. The player could take the "soup" at a given stop, and the character would automatically eat when hungry:<br />
<br />
<br />
<object align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=11,2,0,0" height="360" id="PAOT03" width="500">
<param name="allowScriptAccess" value="sameDomain" />
<param name="allowFullScreen" value="true" />
<param name="allowFullScreenInteractive" value="true" />
<param name="movie" value="http://www.bluebottlegames.com/img/screenshots/PAOT03.swf" /><param name="quality" value="best" /><param name="scale" value="default" /><param name="bgcolor" value="#ffffff" /> <embed src="http://www.bluebottlegames.com/img/screenshots/PAOT03.swf" quality="best" scale="default" bgcolor="#ffffff" width="500" height="360" name="PAOT03" align="middle" allowScriptAccess="sameDomain" allowFullScreen="true" allowFullScreenInteractive="true" FlashVars="" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" />
</object><br />
<br />
It even featured an end-game! Patient players would be rewarded with green text proclaiming "You Made It!"<br />
<br />
It wasn't very fun, though.<br />
<br />
There were some interesting systems under the hood: weather simulation; tracking hunger and sleep; and item management in a grid. But I found myself clicking the "travel" button thoughtlessly until I needed to recharge "sleep." There wasn't much to the gameplay loop. No strategy. No risk. No fun.<br />
<br />
I started wondering whether it might be more fun to navigate a map rather than a line. What if the player had to choose where to go, and there was no guarantee food or encounters would await them in the direction they chose? What if moving around was more or less costly depending on the terrain? What if visibility was limited by terrain?<br />
<br />
Also, I was hooked on <a href="http://en.wikipedia.org/wiki/Civilization_V">Civ V</a> at the time.<br />
<br />
So I decided to try changing the game to utilize a hex map. And this is how that looked, initially:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-rkuPwy3Mf-s/Tck3gNYI2aI/AAAAAAAAADQ/Qnch8Ho72xg/s1600/screenshot-2011-05-09.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="288" src="http://4.bp.blogspot.com/-rkuPwy3Mf-s/Tck3gNYI2aI/AAAAAAAAADQ/Qnch8Ho72xg/s400/screenshot-2011-05-09.png" width="400" /></a></div>
<br />
Still not much to look at. In fact, almost all of the systems of the above prototypes were stripped away, here, and it was just turn-based movement on an hex map, with date tracking per-turn.<br />
<br />
Visibility, though, was a big difference. Not being able to see the rest of the map, and having to choose which way to go, felt like an improvement over having a linear, prescribed path to follow.<br />
<br />
And within a few days, I had this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-1DSLtmjXS18/Tcvkaa0h1oI/AAAAAAAAADU/EwGhmgcX-Xw/s1600/screenshot-2011-05-12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="290" src="http://1.bp.blogspot.com/-1DSLtmjXS18/Tcvkaa0h1oI/AAAAAAAAADU/EwGhmgcX-Xw/s400/screenshot-2011-05-12.png" width="400" /></a></div>
<br />
Now I was actually starting to enjoy the prototype. Exploring the map kept my interest, as I wanted to see how the world looked, and what landscapes I could reveal. Movement was more strategic, as I weighed visibility vs. movement costs.<br />
<br />
There wasn't any tension nor risk yet, of course, but it was starting to feel like a "toy" rather than a "tech demo."<br />
<br />
A week later, and there was day, night, and weather!<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-c-6jofue_OY/TdbqA7mQFFI/AAAAAAAAADY/vT9qDwBVjG4/s1600/screenshot-2011-05-20.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="222" src="http://4.bp.blogspot.com/-c-6jofue_OY/TdbqA7mQFFI/AAAAAAAAADY/vT9qDwBVjG4/s400/screenshot-2011-05-20.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Day</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-e6Tw9c4wQCM/TdbswweX7QI/AAAAAAAAADg/6o_uA-Vs6gc/s1600/screenshot-2011-05-20b.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="223" src="http://2.bp.blogspot.com/-e6Tw9c4wQCM/TdbswweX7QI/AAAAAAAAADg/6o_uA-Vs6gc/s400/screenshot-2011-05-20b.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Night</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-lY1tWqs96DI/TdbrQ8I_VVI/AAAAAAAAADc/TF1CeNnk20Y/s1600/screenshot-2011-05-20a.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="223" src="http://4.bp.blogspot.com/-lY1tWqs96DI/TdbrQ8I_VVI/AAAAAAAAADc/TF1CeNnk20Y/s400/screenshot-2011-05-20a.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Rain</td></tr>
</tbody></table>
Still no risk vs. reward, but I was starting to get more inspired with each iteration.<br />
<br />
It was at this point that friends were starting to ask more frequently what the point of the game was. And they were right to ask. I needed to take a step back, and come up with a plan.<br />
<br />
I drafted a <a href="http://gamedevgonerogue.blogspot.ca/2011/06/game-design-document.html">new design doc</a>. I started prioritizing features and tasks against that design. And from that blog post onward, you can see the iterations NEO Scavenger passed through to get to where we are today.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-75Mk-D9xC1g/UVtAsqzo7NI/AAAAAAAAAXc/PsaPMT9cde8/s1600/nsScreen05.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="http://4.bp.blogspot.com/-75Mk-D9xC1g/UVtAsqzo7NI/AAAAAAAAAXc/PsaPMT9cde8/s400/nsScreen05.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Rainy nights with stuff to do, and things to fear!</td></tr>
</tbody></table>
<br />
<b>Baby Steps</b><br />
<br />
Getting back to the original point, it's important to remember that making a game is a series of <a href="http://www.youtube.com/watch?v=ncFCdCjBqcE">baby steps</a>. Your game might not start out very good-looking, or even fun. And as you can see from PAOT/NEO Scavenger's history above, it might even involve a false start or two.<br />
<br />
However, determination is key. As an amateur (programmer/artist/designer), I had to keep pushing forward, despite my own shortcomings. I made a ton of mistakes, too. Some more than once.<br />
<br />
Over time, though, the baby steps add up. The thing you're working on gets better each time you add something that's necessary, or take away something unnecessary. Your own progress becomes a thing that motivates you, rather than just hope and optimism.<br />
<br />
And eventually, you enter the phase where you wonder when you should call your project finished. I'll let you know once I discover the secret to learning that lesson!</div>Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comtag:blogger.com,1999:blog-3993525046698649887.post-13875263190244145932013-03-18T18:10:00.004-07:002013-03-18T18:36:14.796-07:00Sometimes, Running a Business StinksThe past 72 hours been a pretty wild ride. And it's highlighted some of the less glamorous aspects of running an online business. I think things are starting to stabilize this afternoon, but I'm pretty exhausted from the experience.<br />
<br />
<b>Things Were Running Smoothly When...</b><br />
<br />
Friday was a pretty normal day. Quiet, even. Most of the day was spent working on plot development for <a href="http://bluebottlegames.com/main/node/2">NEO Scavenger</a>. The day didn't go without it's <a href="http://bluebottlegames.com/main/node/1521">hitches</a>, but as days go, it was nothing unusual. I was happy to finish the day with some plot knots to untie over the weekend, so I wrapped-up, had some dinner, and Rochelle and I went bowling with some friends.<br />
<br />
The next morning, I was pretty excited to see a sudden spike in traffic in my logs. NEO Scavenger was mentioned in a <a href="http://www.reddit.com/r/AskReddit/comments/1ac1sy/if_you_were_suddenly_stripped_of_all_the_comforts/">post apocalyptic survival reddit post</a>, and dozens of folks were popping by the site to check out the game. Cool!<br />
<br />
<b>Site Maintenance</b><br />
<br />
Except, my ISP was doing scheduled maintenance early Saturday morning. It wasn't until I tried loading <a href="http://bluebottlegames.com/">bluebottlegames.com</a> that I realized it was down.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-dhVWsFKnhsQ/UUe37CObIXI/AAAAAAAAAXM/Ogd3chjqz-Q/s1600/screenshot-2013-03-17.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="106" src="http://4.bp.blogspot.com/-dhVWsFKnhsQ/UUe37CObIXI/AAAAAAAAAXM/Ogd3chjqz-Q/s400/screenshot-2013-03-17.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">5-day Site Visitor Graph: Hourly</td></tr>
</tbody></table>
<br />
Well crap. That stinks. Just as a bunch of new folks are drawn to check out my game, the site goes dark. And worse, dark for close to 12 hours.<br />
<br />
"Oh well, " I said. It's a bummer, but nobody's fault, really. I mean, I guess I could blame myself for not having a redundant server or something, but I'm not that high tech (or deep-pocketed). I decided to just live with it. Besides, friendly Reddit server take-downs were nothing new. Folks probably would just figure my little server was flooded temporarily.<br />
<br />
<b>Site Flakiness</b><br />
<br />
Later that day, bluebottlegames.com was back up and running. I did my usual email and forum check, to verify nobody was reporting any issues. And all seemed clear.<br />
<br />
Except for one thing: every other page load seemed to turn up blank. No error message, no content, nothing. Just a blank white screen. Refreshing the page seemed to fix it, so I figured it was a temporal thing. "It'll sort itself out."<br />
<br />
No, it won't. The following day, I was replying to a customer having issues with NEO Scavenger on their Mac, and it was still happening. Happening everywhere. Sometimes it was a content page on the site. Other times it was a forum. Even some of the site admin pages were failing. And as before, usually a reload would fix it. But the reloading was becoming less and less reliable. Sometimes, I had to reload the page 4-5 times to see anything. And if my customers were seeing the same thing, then that was unacceptable.<br />
<br />
<br />
<b>The White Screen of Death</b><br />
<br />
I decided to dig into the issue a bit more. I started searching for related issues on the web, and was initially happy to see others reporting the same issue. Blank screens in Drupal (the content management system I use, v6.28) were pretty common. Maybe finding a solution will be easy?<br />
<br />
However, upon further investigation, I was less happy to discover I had the same problem. This problem, as it was known to the Drupal community, was the "<a href="http://drupal.org/node/158043">White Screen of Death</a>."<br />
<br />
The WSOD is a common issue with Drupal, but it doesn't have a common solution. In fact, there are almost as many causes of the WSOD as there are Drupal installations, and finding the right one for you can be a real quest.<br />
<br />
The link above is probably the biggest authority on the issue, and even there, there are no less than 28 different causes listed in the article, and some 80+ comments detailing other issues customers have had. Basically, Drupal's WSOD is a symptom of practically every Drupal disease. I'm having trouble thinking of a human analogue. Headache? Fever? Common cold?<br />
<br />
I spent hours on Sunday trying to make rhyme or reason of it. None of the remedies I saw seemed to help. I couldn't even get error or log messages. And worse, it was an intermittent problem, so I couldn't even reliably cause it to happen.<br />
<br />
The only things I could verify about it were:<br />
<br />
<ol>
<li>I only get the WSOD on my live server. Migrating the db from live to my localhost didn't duplicate the WSOD issues.</li>
<li>I only started getting the WSOD since my ISP's scheduled maintenance, when the server was (apparently) upgraded/restarted.</li>
<li>I only get a WSOD in Chrome.</li>
<li>Additionally, Chrome seemed to exhibit stylesheet issues when the page <i>did</i> load. Textareas would be too narrow to fit their <div>, or the page would nudge upward when I clicked a link (seemingly to adjust alignment with the Admin Menu module's topnav bar). Something was stalling the css until I clicked a link, upon which it would fix itself, then load a new page with stalled css (or js, or WSOD).</li>
<li>Firefox never exhibits any issues.</li>
<li>IE seems to work too, except for one page partially loading (later determined to be a <a href="http://stackoverflow.com/questions/6346176/youtube-embed-unsafe-javascript-attempt-to-access-frame">known issue with YouTube embedding</a>)</li>
<li>No errors appeared on the page, in Drupal's logs, nor server logs, even with error reporting hard-coded to be on in index.php.</li>
<li>Using Chrome's "Inspect Element" context menu option revealed that the page was entirely missing the <body> tag and contents. It was just an <html> and <head>, and the <head> seemed to be missing some elements. Also, Chrome usually complained of "Failed to load resource" on the page itself, but all css/js/images were loaded ok.</li>
<li>Using "View Source" on Chrome apparently reloaded the page, and showed the correct, full content source.</li>
<li>The WSOD appeared more frequently when js and css optimization was turned on (but still occurred when all Drupal optimization/compression/caching was disabled).</li>
<li>Flushing all caches had no effect.</li>
<li>Running update.php had no effect.</li>
<li>Manually truncating Drupal db tables had no effect.</li>
<li>Using Backup & Restore on Drupal's db had no effect.</li>
<li>Disabling all modules outside of Core and Core Optional had no effect.</li>
<li>Switching from BBG's custom theme to the Garland theme had no effect.</li>
<li>Rebuilding permissions had no effect.</li>
</ol>
<div>
By the time Sunday evening rolled around, bluebottlegames.com was stripped down to core modules, no theme, no caching, and had a rebuilt database. And it was still flaking out.</div>
<div>
<br /></div>
<div>
Worse, the node access modules I disabled caused the permissions table to get out-of-date, which caused all site content to disappear for all users, all the time. Basically, when the WSOD wasn't happening, all of the site's pages were empty blue shells, and the forums all had 0 posts in them.</div>
<div>
<br /></div>
<div>
Even worse <i>still</i>, to rebuild the permissions and fix the empty content, I had to run a script via Drupal. And that script failed with a WSOD whenever I attempted it.</div>
<div>
<br /></div>
<div>
I had totally messed up my site. The "Site Crash" label in the above image refers to the time when I took the site offline to avoid any more users seeing the empty shell of a site.</div>
<div>
<br /></div>
<div>
Fortunately, Firefox was able to run the permission rebuild script without any WSOD. And I was able to at least get the site showing content again.</div>
<div>
<br /></div>
<div>
But as my efforts continued past 10pm, I decided it wasn't going to be solved anytime soon. I started making changes necessary to return the site to the formerly flaky intermittent WSOD. It wasn't ideal, but the occasional user reload was a far cry better than no site at all. If nothing else, I wanted the forums and contact page online for users to report issues, if needed.</div>
<div>
<br /></div>
<div>
I posted a <a href="http://bluebottlegames.com/main/node/1525">news item</a> to the homepage alerting customers to the WSOD issue, and apologized for the inconvenience of the downtime. Then, I went to bed.</div>
<div>
<br /></div>
<div>
<b>Come Monday, It'll Be Alright</b></div>
<div>
<br /></div>
<div>
I was back at the computer at 6:15am. And unsurprisingly, the site hadn't fixed itself. I fired up the usual websites, checked messages, looked for forum posts. Some users <a href="http://bluebottlegames.com/main/node/1526">reported</a> seeing similar WSOD issues. And, bless them, they blamed their internet connection instead of me.</div>
<div>
<br /></div>
<div>
I decided to try a different approach this time. Instead of grasping at straws offered by forums on the net, I decided to debug Drupal. I added print statements to Drupal's index.php, to see if I could trace the value of the content. And when that failed to reveal anything, I started adding traces to Drupal's core code (*.inc files).</div>
<div>
<br /></div>
<div>
I don't like doing this sort of thing, as I'm nervous about screwing things up worse than they are. Plus, doing it in a way that doesn't affect the live site's users is tricky. But in retrospect, it's the only way to really know what's going on.</div>
<div>
<br /></div>
<div>
I found a function in bootstrap.inc which loads various Drupal bits in phases: <i>drupal_bootstrap($phase)</i>. Every page on a Drupal site calls this function first, doing a full bootstrap (all phases). I added a trace inside the while loop that executes for each phase as it loads, and I printed the ID of the phase.Testing on my local site, I could see that my site loads phases 0-8.</div>
<div>
<br /></div>
<div>
When I uploaded the modified bootstrap.inc file to the live server, I saw traces for all phases. Reload. All phases again. Repeat this another dozen times, on different pages where I most often encountered the WSOD. Everything loads normally.</div>
<div>
<br /></div>
<div>
Was the WSOD gone?</div>
<div>
<br /></div>
<div>
Tentatively, I backed out the bootstrap.inc changes, so it was back to normal. Still, the site seemed to be loading ok. I reenabled caching to normal. Still ok. Turned on page compression. Still ok. I stopped short of turning on optimized js and css. Maybe I'll muster the courage for that tomorrow.</div>
<div>
<br /></div>
<div>
<b>A Wizard Did It</b></div>
<div>
<br /></div>
<div>
So what happened? Uploading that file seemed to stop the WSOD, and leave it fixed even after that file is restored. What dark magic is this?</div>
<div>
<br /></div>
<div>
That's actually my first theory: dark magic. But if you pin me down for a more mundane answer, I'm going to guess it was some sort of behind-the-scenes cache. I'm not sure what else would explain a site's complete performance alteration when a single file is uploaded and then un-uploaded again.</div>
<div>
<br /></div>
<div>
That was at about 11am today. As of 5pm, I haven't seen a WSOD. Mercifully, no players have posted in the White Screen tech support thread on my forums, either. I'm hopeful this issue is resolved.</div>
<div>
<br /></div>
<div>
<b>But What About That Mac User?</b></div>
<div>
<br /></div>
<div>
Oh yeah, remember me mentioning way up there that this whole investigation started when trying to help a Mac user with NEO Scavenger? Yeah, <a href="http://bluebottlegames.com/main/node/854">Mac compatibility</a> is an issue in it's own right, concurrent with the site debacle.</div>
<div>
<br /></div>
<div>
I'm not going to detail that issue here, as it's a pretty lengthy topic of it's own. The forum thread linked above has all the details. And what's more, I've partially <a href="http://gamedevgonerogue.blogspot.ca/2012/08/flash-as-native-app.html">touched on it in the past</a>.</div>
<div>
<br /></div>
<div>
The short version is this: Flash is rapidly becoming as much a burden as a boon. For someone trying to develop a stand-alone application, I'm at the point where I am highly reluctant to recommend Flash as a viable option. Issues include:</div>
<div>
<br /></div>
<div>
<ol>
<li>"Create projector" <a href="http://blogs.adobe.com/flashplayer/2012/02/adobe-and-google-partnering-for-flash-player-on-linux.html">no longer supported on Linux</a>, as of v11.2.</li>
<li><a href="http://forums.adobe.com/message/4852313">Flash CS6 no longer supported on OSX 10.8</a>.</li>
<li>Any projectors one <i>does</i> create are going to<a href="http://blog.rustymoyher.com/post/36142106531/signing-apps-without-xcode"> trip security on modern OSes</a>. And in Mac's case, Gatekeeper is a sticky issue for OSX 10.7.3 and 10.7.4.</li>
<li>Digitally signing Flash projectors appears to have <a href="https://knowledge.verisign.com/support/code-signing-support/index?page=content&id=SO10167&actp=LIST">spotty support</a>, unless one uses 3rd party wrappers (which are, in themselves, reportedly unreliable).</li>
<li>Adobe's recommended solution, building AIR apps, is <a href="http://www.defendersquest.com/linux.html">unsupported on Linux</a>. Also, AIR's installation process is <a href="http://www.defendersquest.com/support.html#tech">flawed</a>, at best. Also, AIR has the periodic "Update AIR" nagging dialog.</li>
<li>Flash is no longer officially supported on <a href="http://blogs.adobe.com/flashplayer/2012/06/flash-player-and-android-update.html">Android</a> nor <a href="https://discussions.apple.com/thread/4295264?start=0&tstart=0">iOS</a>.</li>
</ol>
<div>
I was a long adherent to Flash. It served me well. NEO Scavenger wouldn't be if it weren't for Flash's ease of use, and then-universal deployment options.</div>
</div>
<div>
<br /></div>
<div>
So it's unfortunate that this era appears to be in it's winter.</div>
<div>
<br /></div>
<div>
<b>All's Well That Ends Well</b></div>
<div>
<br /></div>
<div>
The good news? At least we're back to normal. The site seems to be running again. Upgrading OSX to 10.7.5 seems to fix Flash projector Gatekeeper woes until I can find another way to certify projectors. I think I may actually be able to return to plot development tomorrow.</div>
<div>
<br /></div>
<div>
Let's just hope that stretch of actual game dev continues for a while!</div>
<br />Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comtag:blogger.com,1999:blog-3993525046698649887.post-16288044576722073712013-03-04T13:54:00.000-08:002013-03-04T13:54:51.564-08:00Cross-PlayRecently, I was contacted by a couple of digital games vendors (<a href="http://shinyloot.com/">ShinyLoot</a> and <a href="http://www.amazon.com/Game-Downloads/b?ie=UTF8&node=979455011">Amazon Digital Games</a>) about the possibility of selling <a href="http://bluebottlegames.com/main/node/2">NEO Scavenger</a> on their services.<br />
<br />
First of all, that's great news! It's encouraging to have folks asking to host NEO Scavenger. And those services each represent good-but-different opportunities to serve a greater market. I look forward to exploring those, and other, options further as NEO Scavenger approaches completion.<br />
<br />
The point of this post, however, is more about the big picture, and how to properly balance NEO Scavenger's sale across multiple vendors. Specifically, I want to muse on the topic of "cross play."<br />
<br />
<b>What Is Cross-Play?</b><br />
<br />
When I say "cross-play," what I'm referring to is the ability to buy a game from one service, and to have that unlock access on other services. I realize there are a <a href="https://support.us.playstation.com/app/answers/detail/a_id/3823/~/ps-vita-cross-platform-play">few</a> <a href="http://en.wikipedia.org/wiki/Crossplay">definitions</a> of "cross-play" out there, but for the purposes of this post, it's about buying the game once, and playing anywhere.<br />
<br />
In the case of NEO Scavenger, buying beta access at <a href="http://bluebottlegames.com/">bluebottlegames.com</a> automatically grants access on <a href="http://www.desura.com/games/publish/neo-scavenger">Desura</a>. Similarly, buying a copy of the game on Desura allows the user to unlock a copy at bluebottlegames.com, using the <a href="http://bluebottlegames.com/main/node/1015">Desura Connect</a> feature.<br />
<br />
When NEO Scavenger was sold in the <a href="http://bluebottlegames.com/main/node/945">Be Mine 5 bundle</a>, Desura keys were given out, so those customers were also eligible for cross-play. Though in retrospect, that was less than fully effective: many customers didn't realize they had Desura keys, and weren't aware how to update, or even that they <i>could</i>. I should probably see about doing keys-only, rather than binaries plus keys, in the future to reduce confusion.<br />
<br />
<b>Why Provide Cross-Play?</b><br />
<br />
One of the biggest reasons to provide cross-play is simply because it makes the customer happy. Customers feel like they're part of something bigger, and dealing with a business that values them more than their dollar. It let's them know that no matter which store they bought your product in, they're <i>your</i> customer, and you appreciate them just the same. And customers who feel appreciated are more likely to return for future business.<br />
<br />
It also helps keep the audience fragmentation to a minimum. If communities were to develop at each storefront, then those communities may diverge over time, making it difficult to satisfy all tastes as they become incompatible. Smoothing out inroads between communities helps everyone stay on the same page, and helps keep the audience united.<br />
<br />
There are also marketing advantages to providing cross-play. Customers who are pleased with the arrangement are more likely to recommend it to friends. And the relative rarity of cross-play may mean the press finds it a newsworthy business practice.<br />
<br />
It can also accelerate sales, in the case of a gradual product roll-out (as is the case with NEO Scavenger). Knowing that one's preferred service will be supported in the future sometimes causes hesitation in customers, as they'd prefer to wait until the game comes out there. However, if purchasing the game now entitles them to a free unlock on their service of choice later, then there's no reason to wait. This was particularly the case with Steam users, as noted by the comments in NEO Scavenger's <a href="http://steamcommunity.com/sharedfiles/filedetails/?id=92934582">Greenlight page</a>.<br />
<br />
Lastly, there's a neat technical benefit to having cross-play enabled for one's game: redundancy. If something fails on one service, there's a way to get affected customers up and running again on a different cross-play service.<br />
<br />
A recent example of this was when a new build was launched on Friday to both bluebottlegames.com and Desura. The new version went live immediately on bluebottlegames.com, but the Desura version was awaiting authorization over the weekend. Customers who wanted access right away simply used the connect feature to get the latest version at bluebottlegames.com instead.<br />
<br />
<b>Why Not?</b><br />
<br />
One of the first reasons most will think of against providing cross-play is that there's a potential hit to sales. This is probably true. Anecdotal evidence abounds for customers buying and re-buying the same game across different services as they become available. Some are accidental (e.g. losing a CD or key), others are intentional (e.g. wanting the game in their Steam library for convenience). In some cases, they're even points of pride for the customer ("I love this game so much I bought it five times!").<br />
<br />
In the first two cases, the customer is repurchasing the game for their own benefit. In the third case, it's primarily benefiting the developer. With cross-play, the customer can still repurchase the game if they want to, so the third situation is unchanged.<br />
<br />
The important thing to remember about the first two cases is that customers who <i>don't</i> want to repurchase the game no longer have to. It might cost the developer the price of a new (or discounted) copy, but it gains the developer some good will. And I'd rather have an existing customer's good will than their additional $10 or less.<br />
<br />
There is the possibility of customers giving cross-play keys to friends, so I suppose that's a consideration. I'm not really one to police pirates, though. And I figure that if they're going to pirate the game, cross-play doesn't greatly change their ability over the DRM-free version I sell now.<br />
<br />
<br />
Technical feasibility may be a bigger reason. So far, cross-play between Desura and bluebottlegames.com has been pretty easy to implement. Desura has a workflow already setup for this, and adding a custom one to my site was entirely up to me. I want to do the same with Steam, though I may only be able to provide one-way unlocks (e.g. bluebottlegames.com customers get Steam keys, but not the other way around) depending on whether Steam has any mechanisms in place for cross-play.<br />
<br />
Furthermore, each new case creates an increasing amount of integration work, and it would likely grow out of hand pretty quickly. There are a lot of services out there. E.g. ShinyLoot, Amazon, Good Old Games, Impulse, Origin, Google, iTunes, Ubuntu Software Center, etc. They all likely have different capabilities.<br />
<br />
As such, it may be the case that my cross-play plans are impossible across 100% of vendors, even if I had the manpower.<br />
<div>
<br /></div>
<br />
<b>Selective Cross-Play</b><br />
<br />
In all likelihood, 100% reciprocal cross-play will not be possible as I offer NEO Scavenger in more places. So I'll need to come up with an acceptable compromise. The alternative would be to ignore sales channels that didn't offer cross-play tools.<br />
<br />
I already suspect Steam is a one-way street in this regard, and cutting out Steam from sales channels would be pretty dumb. In fact, I think <i>most</i> online storefronts lack Desura's "connect" feature, so I may be living in a fantasy land right now.<br />
<br />
One thing I <i>can</i> still do, however, is enable cross-play from bluebottlegames.com some other services. I.e. if they purchase at my site, they can get free keys to Steam, Desura, and maybe another service to two. More than likely, Steam and Desura are all most players care about anyway.<br />
<br />
Plus, offering the one-way cross-play radiating out from bluebottlegames.com makes it somewhat more attractive to buy it there. The customer could still get a version on the service they want, plus elsewhere in the network. And more of the purchase money goes into developing new games. That seems like a nice win-win.<br />
<br />
I'll have to see how this plays out, though. So far, I've been pretty lucky in that my only other vendor, Desura, makes this cross-play easy to do. So I've been treating it as my preferred business practice. But as I start working with new vendors, I'm see that the cross-play option is going to be complex to support.<br />
<br />
Hopefully, I can find a way that is both sustainable and appreciated by my customers!Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comtag:blogger.com,1999:blog-3993525046698649887.post-59265491029660021822013-02-18T14:32:00.001-08:002013-02-18T14:32:17.877-08:00Marketing: From Passive to ActiveTo-date, NEO Scavenger's had a pretty low-key marketing strategy. As a title that's still under development, there haven't been many points where I felt comfortable actually driving folks to the game. I always figured that I should wait until I can put on the best show possible before I pump a lot of resources into marketing. As such, NEO Scavenger's been in a "passive" marketing mode.<br />
<br />
<b>Passive Marketing</b><br />
<br />
Passive marketing mode is "word of mouth" marketing. I.e. the "soft sell." Rather than going out and seizing eyeballs and ears, I'm building something worth experiencing, and letting satisfied customers do the talking for me.<br />
<br />
I'll gladly talk about NEO Scavenger to anyone who asks. I give interviews, give review copies to journalists when requested, and actively participate in fan discussions when I can. But I've only initiated a few marketing initiatives of my own, outside of <a href="http://bluebottlegames.com/">bluebottlegames.com</a>.<br />
<br />
I've read in more than a few places that this is a terrible strategy for indie developers. The "build it and they will come" strategy, while comfortable for introverts like me, is not known for being very effective. And I think there's validity to that argument. Unless it's the right set of circumstances, or something that has an element of virality, word of mouth is a pretty unreliable method of marketing.<br />
<br />
However, the soft sell has its place in a marketing strategy. For one thing, it's a good time to test the waters, and see how your product is received on a small scale before going big. You'll have time to see how the product behaves in the wild, see how people perceive it, assess feedback, and improve the product. Maybe people are excited about different elements than you expected, or your big selling point is still broken?<br />
<br />
Plus, some target audiences are more receptive to a softer sales pitch (or no pitch at all). As a member of the audience my game targets, I can say with some authority that I appreciate a product that doesn't excessively toot its own horn. I like finding a product that is honest in its advertising, and sets appropriate expectations, rather than resorting to fanfare and hyperbole.<br />
<br />
The operative clause above, though, is "<i>before</i> going big." Word of mouth shouldn't be one's only marketing tool. Instead, use it where appropriate, and plan on mixing it with some active strategies when the time is right.<br />
<br />
<b>Active Marketing</b><br />
<br />
Active marketing is pretty familiar to most of us, by definition. From ads to interviews, "<a href="http://en.wikipedia.org/wiki/Let's_Play_(video_gaming)" target="_blank">Let's Plays</a>" to <a href="http://www.reddit.com/r/AMA/" target="_blank">AMAs</a>, it's the messaging with which we get bombarded every waking hour. "<a href="http://www.stanford.edu/group/knowledgebase/cgi-bin/2009/09/15/you-cant-buy-it-if-you-dont-know-it-exists/" target="_blank">You can't buy it if you don't know it exists</a>," as they say, and active marketing is trying to remove that very obstacle.<br />
<br />
I think NEO Scavenger is starting to near a point where active marketing makes more sense. One of the biggest obstacles to enjoying NEO Scavenger has been legibility of its substantial text, and ugly aliasing when trying to play above the native 800x600 resolution. With fixes for those issues imminent, I think it's time for me to start warming up the marketing engine.<br />
<br />
<b>Building a Strategy</b><br />
<br />
Even though NEO Scavenger's been "on the QT" so far, I've actually been building a strategy behind the scenes since day one. Whenever an opportunity for active marketing popped up, I may have passed it up, but I still made a note to myself for later. For example, IGF 2011 would've been pretty premature for NEO Scavenger, since the game was not even playable at that time. However, I made a note to look it up later, when it made more sense. All of these notes are in a text file that I've creatively named "PR.txt."<br />
<br />
Since I'm starting to review this process, I figured I'd share some of my notes with any other readers who may be formulating marketing strategies of their own. In no particular order, here are some ideas to consider:<br />
<br />
<br />
<ul>
<li><b>Press Kit</b> - This is actually pretty useful even during passive marketing. Basically, it's a handy collection of anything a journalist would need to feature your game in their publication. Usually, it includes several screenshots, gameplay videos, company and game logos in some print-ready format (or high enough resolution for print), and any other relevant materials you can offer (such as company info, team member bios, etc.).</li>
<ul>
<li>Rami Ismail has actually put together a <a href="http://dopresskit.com/" target="_blank">DIY press kit</a> that many indies have used with success.</li>
</ul>
<li><b>Website - </b>This should be done as soon as possible, way back in the passive marketing phase, if possible. Having a website is pretty much a requirement these days. You could get by without one, but if you're serious about building a brand and a community, you should consider how folks are going to find more of your work after they discover you. This is a whole topic unto itself, and I've already <a href="http://gamedevgonerogue.blogspot.ca/2012/02/indie-business-administrivia-pre-flight.html" target="_blank">discussed website and business planning a bit</a>.</li>
<li><b>Game Journals</b> - Contacting your preferred game magazine is probably the bread and butter of a game marketing strategy. Gamers each have their journal of choice, so it's a good idea to figure out which ones your audience reads, and see if any journalists there might be interested in doing a piece on you or your game.</li>
<ul>
<li>While a comprehensive listing of game journals and how to contact them is beyond this article's scope, there are <a href="http://www.pixelprospector.com/the-big-list-of-indie-game-marketing/" target="_blank">some really great resources out there on this topic</a>.</li>
</ul>
<li><b>Sales Channels</b> - Whether you think of them as such or not, sales channels are a form of marketing. Players will discover games as they shop for games, so having your game in their store of choice increases the chance your game will be discovered. And while big names like <a href="http://store.steampowered.com/" target="_blank">Steam</a>, <a href="http://www.desura.com/" target="_blank">Desura</a>, and <a href="http://www.gog.com/" target="_blank">GoG</a> may come to mind, don't overlook more niche locations. Often the smaller or newer channels mean the competition is lighter, giving your product a greater chance of being noticed.</li>
<ul>
<li><a href="http://www.gamersgate.com/" target="_blank">GamersGate</a></li>
<li><a href="https://play.google.com/store" target="_blank">Google</a></li>
<li><a href="http://www.apple.com/itunes/" target="_blank">iTunes</a></li>
<li><a href="http://www.impulsedriven.com/" target="_blank">Impulse</a></li>
<li><a href="http://www.ubuntu.com/ubuntu/features/find-more-apps" target="_blank">Ubuntu Software Centre</a></li>
<li><a href="http://www.amazon.com/Game-Downloads/b?ie=UTF8&node=979455011" target="_blank">Amazon</a></li>
<li>etc.</li>
</ul>
<li><b>Festivals </b>- Indie games are fortunate in that they are often celebrated in festivals expressly designed to highlight their unique styles. While not every festival is a good fit for every game, many can be a great way to raise awareness for your title. Plus, many offer prizes to winners!</li>
<ul>
<li><a href="http://www.pixelprospector.com/indie-game-competitions/" target="_blank">Pixel Prospector has already compiled a handy list here</a>.</li>
</ul>
<li><b>Kickstarter </b>- <a href="http://www.kickstarter.com/" target="_blank">Kickstarter</a> is a fund-raising tool, first and foremost. However, that almost always has the side-effect of raising awareness of the product along with the funds (in fact, even if the funding fails). While I don't think Kickstarter is right for NEO Scavenger right now, it might be something you're considering. And if so, it makes sense to use it in synergy with your other marketing efforts.</li>
<li><b>Greenlight</b> - <a href="http://www.gamesindustry.biz/articles/2013-02-07-valves-newell-on-tearing-down-the-steam-dictatorship" target="_blank">Rumors</a> of <a href="http://steamcommunity.com/greenlight/" target="_blank">Greenlight</a>'s demise may or may not be greatly exaggerated. However, for the time being, it still represents an opportunity to raise awareness for one's game. NEO Scavenger garnered some <a href="http://gamedevgonerogue.blogspot.ca/2012/09/the-effects-of-desura-and-steam.html" target="_blank">considerable publicity</a> as a result of Greenlight participation. However, the hints at Greenlight going away, coupled with the $100 entry fee, may mean it's best saved for games which already have some marketing working for them, or are expected to go viral somehow. Based on stats I see for the top 100 games, it appears it's still possible to skyrocket into the top slots with good marketing, but the long, steady climb may not pan-out anytime soon.</li>
<li><b>Bundles</b> - As I discovered last October, <a href="http://gamedevgonerogue.blogspot.ca/2012/10/neo-scavengers-first-bundle.html" target="_blank">bundles can have a pretty significant effect on publicity</a>. Bundles combine the traditional deep discount motivator with cross-promotion between games to produce a strong synergy of sales. There are probably more owners of NEO Scavenger from that one 5-day bundle sale than there are from NEO Scavenger's entire year of sales. <br /><br />The down-side, however, is that these customers have usually paid a small fraction of the asking price for the game. In my case, some 16k customers bought the bundle, but my share of the revenue was only $5400 (before income taxes). So the average sale price for each of those copies was only about $0.30-0.40. That, and some fraction of the game owners weren't interested in NEO Scavenger, but rather bought the bundle for other games.<br /><br />Still, that's a significant number of people who have the game, whereas before they didn't. Getting the game in front of a player is often the hardest part!</li>
<ul>
<li><a href="http://www.indiekings.com/p/bundle-tracker.html">IndieKings.com</a> has a comprehensive list of game bundles.</li>
</ul>
<li><b>Promotions</b> - While bundles combine deep discounts with cross-selling, the discount can be a formidable source of publicity on its own. Steam's holiday sales are nothing short of a media event these days, as are the GoG sales. Putting your game on sale for a limited time can spur renewed interest, as can interesting pricing schemes.</li>
<ul>
<li><b>Piracy</b> - I include piracy as a subheading here because it can be a form of discount promotion. Sean Hogan has creatively <a href="http://torrentfreak.com/pirated-indie-game-devs-get-full-pirate-bay-support-to-crack-steam-120215/">leveraged piracy</a> to this end, offering his game freely in exchange for the increased publicity and Greenlight exposure.</li>
</ul>
<li><b>Demos</b> - Having a demo is a powerful way to increase awareness of your game. Demos let players see if they really enjoy the game. And a good demo may be so engaging that the customer is enticed to buy the game, to access more of the same experience.</li>
<ul>
<li><b>Portals</b> - There are several websites which specialize in hosting game-related files and demos. Like with digital storefronts, having a presence on such a site provides a boost to awareness. Often times, these same demos will be picked up by other sites as well, further increasing your game's spread. This is particularly the case in the Flash demo scene. Just make sure that your demo includes some way for the player to find you should they decide your game is worth their time and money.</li>
</ul>
<li><b>Let's Plays</b> - Quite a few folks like to record playthroughs of games, and publish them with commentary on the web. Sometimes, these are simply fans who want to share, or show various strategies. Other times, these can be widely-known video producers with huge followings. <br /><br />Whether you plan for this or not, it's going to come up. So it's best to decide how you'd like to handle Let's Plays and other videos of your game early. It wasn't long before I was asked for permission, and in some cases, you may be asked to sign paperwork authorizing them to publish videos of your game, depending on the video service.</li>
<ul>
<li>Once again, I have to defer to Pixel Prospector here, as they maintain an excellent <a href="http://youtubers.pixelprospector.com/">list of YouTubers</a>.</li>
</ul>
<li><b>Videos</b> - Let's Plays aren't the only video format that can be useful for promoting your game. Creating videos with gameplay footage, teasers, or backstory can provide yet another a way for customers to explore the world you're creating. Some folks prefer watching a video over playing a demo or reading, so this opens up the game to that demographic. Plus, if the video is hosted on a socially-enabled website, viewers can easily share your video with others, or post it in reviews and other articles. Some places to consider publishing your game videos:</li>
<ul>
<li><b>YouTube</b> - Probably the easiest to do, by far. Offers monetization via ads, though I would tend to stay away from any advertising to avoid branding confusion.</li>
<li><b>Vimeo</b> - Another popular video service with emphasis on creativity and quality, though it's had some run-ins with indies in the past.</li>
<li>Any place your game is sold online (e.g. your website, Desura, Steam)</li>
</ul>
<li><b>Ask Me Anything</b> - AMAs are pretty much what they sound like. You'll find quite a few game devs conducting these on Reddit, or similar. In practice, I find I'm doing a little bit of this every day, in various locations around the net. However, setting one up personally can lend an air of authenticity to the discussion, and help centralize and focus it, which might help it grow to larger proportions.</li>
<li><b>Forums</b> - Discussions tend to pop up all over the net, and I'll often swing by to read comments as they develop. I have my own forums, of course, and they provide the greatest volume and detail of all. However, it doesn't hurt to keep an eye out for discussions elsewhere, as they can often provide useful feedback of their own.</li>
<li><b>Social Tools</b> - It's also worth considering which social channels you plan to use. Every person has their preferred suite of social tools, and every one you support caters to that type of person. A word of caution, though: don't bite off more than you can chew. A stale or abandoned social channel can cause as much harm as good.</li>
<ul>
<li><a href="https://twitter.com/">Twitter</a> - Very popular with indie developers. Provides easy sharing, direct access to fans, and all in bite-sized chunks.</li>
<li><a href="https://www.facebook.com/">Facebook</a> - A lot of indies have setup Facebook pages or sites for their companies and games. Provides a means for fans and developers to communicate directly. Can also be a cheap alternative to a website for burgeoning indies. However, be careful about making Facebook (or any third party service) the official site for your game. If things ever turn sour with the service, they've got your community as a hostage.</li>
<li><a href="http://www.reddit.com/reddits/">Subreddit</a> - Reddit can be a powerful tool for promoting content, if that content proves popular. A number of developers have setup specific subreddits, and often post updates to their projects, or other promotions.</li>
</ul>
<li><b>Conventions</b> - Having a presence at a game convention can mean a couple of things. One option is to rent a booth, and show your game on the expo floor along with other developers. Alternatively, you could try to get a speaking gig, and use it as an opportunity to garner more focused attention. Game conventions each have a different flavor and style, so there's no guarantee a convention will be the right fit for your game. However, if you can find a way to make your game work with the format of the con', it can be useful for meeting fans and other devs alike. And if your presentation or personality are memorable, it can really stick with visitors long after the show is over.</li>
</ul>
<div>
There are others, for sure. Just about anything can be used as a tool for raising awareness, with the application of an appropriate amount of creativity and elbow grease. In particular, see if there are certain strengths you can leverage which set you apart from the crowd. Uniqueness usually more than compensates for volume, and is cheaper!</div>
<div>
<br /></div>
<div>
<b>A Note About Messaging</b></div>
<div>
<br /></div>
<div>
Before closing, it's worth pointing out the importance of messaging. Take some time to get a real handle on what it is about your game that makes you special. Why would customers care about your game? What <i>types</i> of customers would most like your game?</div>
<div>
<br /></div>
<div>
As Tadhg Kelly puts it, <a href="http://www.whatgamesare.com/2011/01/you-need-a-marketing-story-marketing.html">You Need a Marketing Story</a>.</div>
<div>
<br /></div>
<div>
The better you can tailor your messaging to the intended audience, the more effective it will be. Similarly, the more you can narrow your focus, the higher the chance is of getting through. Trying to reach "everyone" puts you in direct competition with AAA marketing. In that arena, money wins more often than merit. And believe me, they can outspend you.</div>
<div>
<br /></div>
<div>
So stay light. Stay nimble. Use <a href="http://en.wikipedia.org/wiki/Guerrilla_marketing">guerilla</a> tactics. And most importantly, be interesting. We're game designers and developers, after all. If anyone is equipped to design an engaging experience, it's gotta be us.</div>
Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comtag:blogger.com,1999:blog-3993525046698649887.post-38743869214473538612013-02-04T14:23:00.001-08:002013-02-04T14:23:08.089-08:00Gameplay Verbs and RatiosThis past holiday season, I decided to pick up a few games on the cheap. Courtesy of the Steam and GOG holiday sales, I picked up a handful of excellent games, two of which are <a href="http://www.elderscrolls.com/morrowind/" target="_blank">Morrowind</a> and <a href="http://www.planetside2.com/" target="_blank">Planetside 2</a>.<br />
<br />
That last one wasn't strictly on sale, since it's free-to-play. However, it's the one that got me thinking a lot about gameplay verbs recently.<br />
<br />
<b>Gameplay Verbs</b><br />
<br />
I think I was first introduced to the idea of gameplay verbs in Jesse Schell's "<a href="http://artofgamedesign.com/" target="_blank">The Art of Game Design: A Series of Lenses</a>." The idea's been around since long before that book, of course, but that book formalized it quite a bit for me.<br />
<br />
In short, a gameplay verb is one of any available actions the player can take in a game. Schell uses checkers as an example, citing its three available verbs: move checker forward, jump an opponent's checker, and move checker backward (kings only).<br />
<br />
Schell goes on to describe what he calls "resultant actions" (as opposed to the "operative actions" listed above). These resultant actions include such things as protecting another checker by moving a checker behind it, or sacrificing a checker to trick one's opponent. They are perhaps more akin to strategies, or verbs with intent.<br />
<br />
Verbs themselves can be entertaining, such as driving a sports car in a racing game. However, most of the staying power for games comes from the strategies; the emergent gameplay. Emergent gameplay includes such activities as trying to beat other drivers to a destination, or trying to jump the furthest off of a cliff. In essence, using simple gameplay verbs in meaningful and creative ways.<br />
<br />
<b>Verbs and Planetside 2</b><br />
<br />
As mentioned above, I recently started thinking about this topic while playing Planetside 2. For those unfamiliar to the game, Planetside 2 (Ps2) is a massively multiplayer online first person shooter. In a given match, players on each of three teams are trying to gain control of the whole map via armed combat and capturing control points. It shares some similarities with games like the Battlefield series and it's conquest mode.<br />
<br />
Players in Ps2 have a wide range of verbs available to them right from the start. They have the usual walking/running movements, jumping, primary and secondary weapons. And all have a special tool associated with their role. A sniper has a cloaking device, an engineer has a repair tool, etc.<br />
<br />
Furthermore, as one plays the game and accumulates points, they can spend those points on upgrades for their character. These upgrades can include new tools, enhancements like higher ammo capacity and faster running speed, and even metagame enhancements, like shorter waiting times for vehicle respawns.<br />
<br />
It didn't take me long to discover that I favored playing the light assault trooper role. They start out fairly out-gunned, having only a short range carbine and pistol, and out-armored, having the least armor of any class. However, they're faster than any other class, and have one thing which, in my mind, is a game-changer: jet packs.<br />
<br />
In a game where all other soldiers are earthbound, I cannot emphasize enough how exciting it is to be able to use the third dimension as a tool against one's opponents. It opens up avenues of approach, evasive maneuvers, hiding places, and generally lets one go where no one else can.<br />
<br />
<b>High Resultant Action Ratios</b><br />
<br />
In Schell's terms, this is a verb with a high ratio of resultant actions to objective actions. It's one action (limited vertical movement) that opens up a raft of new strategies.<br />
<br />
However, it wasn't jet packs that got me thinking about verbs (although it did prolong my interest in the game considerably). I started thinking about verbs when it came time to upgrade my character.<br />
<br />
Faced with a seemingly endless array of upgrades, my first inclination was to simply reinforce the thing that attracted me to the class: upgrade the jet pack to fly further. I was encountering some obstacles that I still couldn't surmount with my pack, so I figured I could bump it up a notch or two.<br />
<br />
As upgrades progressed, though, I quickly reached a point where the pack was "good enough." Additional upgrades just didn't seem very worthwhile, nor exciting. Beyond clearing major obstacles, the pack upgrades were a case of diminishing returns.<br />
<br />
Instead, what I found was that I started gravitating to upgrades that let me do new things. One of my first upgrades was the C4 explosive charge. Suddenly, my plucky gnat of a soldier packed some punch, and made me a threat to armored opponents. To my arsenal of disruptive strategies, I could now add dropping onto vehicles from above, and planting charges. Or, I could set the charges in a choke point, and detonate them as a trap. I could even set them someplace far away from my objective, and use them as a diversion. C4 was a high ratio upgrade.<br />
<br />
What I didn't opt for, however, were upgrades with low ratios.<br />
<br />
<b>Low Resultant Action Ratios</b><br />
<br />
Quite a few of the upgrades in Ps2 are little more than incremental changes to existing verbs. These upgrades include more armor, faster shield recharging, or extended ammo supply. Compared with what I experienced after unlocking C4, these seemed downright boring. Sure, they allow one to last longer in a toe-to-toe fight, or generally out on the field, but that's not really offering me a new strategy. It's more like a higher chance at success with existing strategies.<br />
<br />
As I write this, it occurs to me that this may be one of the reasons I lost interest in <a href="http://www.gaspowered.com/ds2/news.php?preloaded=1" target="_blank">Dungeon Siege II</a> so quickly. It had many of the elements I enjoy in an RPG: fantastic worlds to explore, character creation and customization, party-based combat, and room for strategy.<br />
<br />
However, after playing for a while, it became apparent that I wasn't getting any new verbs to play with. Most of my progression was incremental in nature, offering me progressively better chances to hit, damage rolls, and resistances. Rarely was anything introduced which made new strategies and techniques available.<br />
<br />
In fact, I reached a similar point when playing Ps2. After unlocking most of the high ratio upgrades for my soldier, my interest started to wane. The idea of grinding for hours to get more armor just didn't have any appeal.<br />
<br />
<b>High Verb Count, Low Ratio</b><br />
<br />
Let's take a moment to consider another arrangement: games with a large number of verbs, but introducing chance to determine success. A good example of such a game is Morrowind.<br />
<br />
When one starts a game of Morrowind, one quickly learns to accept failure at nearly every task. Swinging a sword at a mudcrab? Miss. Casting a heal spell? Spell failed. Picking a lock? Lockpick broke. Jumping? Not over that tree stump.<br />
<br />
Usually, several hours of gameplay are required to achieve a level of basic competence in most verbs. Instead of unlocking new verbs over time, Morrowind gives you nearly all the verbs at the start, but lets you unlock incrementally larger chances of success, and larger effects, when performing said verbs.<br />
<br />
However, I think what we start out with in Morrowind are actually false verbs. They purport to do something, but when enacted, have little or no effect. Unskilled jumping doesn't really give me any new strategies, for example, it just has a cosmetic effect until it's leveled-up sufficiently. And the starting fireball spell doesn't really belong under the destruction school as much as illusion. It serves to get a creature's attention, but little more.<br />
<br />
In other words, even though Morrowind starts players with a large number of objective actions, the resultant action ratio is still pretty low, in practice.<br />
<br />
That said, the <i>potential</i> for a high ratio is there. Indeed, the promise of real power is one of the reasons many are willing to endure the slow start in Morrowind. Having a high acrobatics skill can be as liberating as the jet pack was in Ps2. And the upper range of destructive power in magic is nothing short of god-like. In Morrowind, a fully-formed verb is a sight to behold. For kicks, try opening Morrowind's debug console, and typing player->setacrobatics 250. Have fun :)<br />
<br />
<b>Improving Verbs and Ratios in Games</b><br />
<br />
So what can we glean from this discussion to make our games better?<br />
<br />
Adding more verbs seems obvious. However, as we can see in the Morrowind case, verbs alone are not always satisfying.<br />
<br />
Most of the games we enjoy tend to have a high ratio of resultant actions to objective actions. In <a href="http://en.wikipedia.org/wiki/Super_Mario_Bros." target="_blank">Super Mario Bros.</a>, the player's jump not only clears obstacles, but is a means of defeating enemies, getting power-ups out of boxes, and reaching secret areas. In <a href="http://en.wikipedia.org/wiki/Thief:_The_Dark_Project" target="_blank">Thief</a>, the moss arrow can place a blanket of growth on the ground to mask your steps, but it can also push a button silently from a distance, or even temporarily choke NPCs for a quick getaway.<br />
<br />
So designing games where each tool has multiple use-cases is probably more effective than simply adding more single-case verbs.<br />
<br />
Having the high ratio verbs isn't enough, though. The player will also need occasion to use them. I feel like <a href="http://bluebottlegames.com/main/node/2" target="_blank">NEO Scavenger</a>'s biggest shortcoming right now is that the story affords too few chances to use the character's skills and items, along with the player's creativity. Ideally, there would be more opportunities for players to meaningfully use whichever skills they chose and items they found.<br />
<br />
Introducing high ratio verbs gradually is also a useful technique in game design. The <a href="http://www.zelda.com/universe/" target="_blank">Zelda</a> series, for example, is renowned for its gradual bestowing of new tools. The controlled rate of discovery means that new players can focus on broadening their mastery and creativity of one tool at a time, and also gives players something to look forward to.<br />
<br />
Note that gradual doesn't necessarily mean incremental. In the case of Zelda, we get a reliable boomerang, and not a boomerang that only has a chance of stunning enemies, or retrieving objects. In Thief, the water arrow puts out fire reliably, not 25% of the time.<br />
<br />
Morrowind's "training skills via their use" is certainly a realistic approach, and the outcome may also be realistic (i.e. unskilled alchemists might botch the potion recipe). However, long, arduous training probably isn't the element of fantasy we most want to experience. On the contrary, good storytellers usually know when to skip the long, boring parts to arrive at the scene of interesting action or dialogue: the part where the character is creative when faced with an obstacle; bold in the face of danger; or rational in the presence of escalating tempers. We want to vault over the chasm heroically, stare down the bodyguard, or negotiate the ceasefire.<br />
<br />
And in situations where we must have a chance at failure, content creators can try to make those failures more interesting. This is definitely possible in cases where a skill check is done in dialogue, or a similar branching encounter. To do so, the designer ensures that failure cases present new opportunities for creative problem solving, or at least tell interesting stories. It's hard work for the author, to be sure, but as they say, "nothing worth doing is easy."<br />
<br />
Ultimately, game designers are creating systems, not just stories. Stories may be told within our games, but they are not the linear stories one finds in other media. In games, players have agency, which is to say that they have verbs they can apply to objects in the game. And by virtue of their agency, they may not do what the designer intended.<br />
<br />
Rather than curtail players' actions to keep them on a prescribed path, we should endeavor to validate and reward any <a href="http://www.youtube.com/watch?v=DvZhghRwNHo" target="_blank">path they may choose</a>.Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comtag:blogger.com,1999:blog-3993525046698649887.post-15769341679190476392013-01-21T15:53:00.000-08:002013-01-21T15:53:53.705-08:00On Resolution and FontsI wanted to talk a bit about screen resolution and fonts today. A larger resolution and font has been one of the <a href="http://bluebottlegames.com/main/node/16" target="_blank">most requested features</a> in NEO Scavenger, and it has come time to do something about it.<br />
<br />
<b>Where We Are Now</b><br />
<br />
NEO Scavenger currently runs at 800x600 resolution. Back when I was first making the decision on resolution, I chose 1280x800, half my monitor resolution, so I could see full-screen with 2x scaled pixel art. Shortly after that, I switched to 1280x720 (720p), to better align with standard HD.<br />
<br />
However, since NEO Scavenger was originally intended as a portal-sponsored title, I decided to scale it down to 800x600, using 1x scaled pixel art. It was a <a href="http://gamedevgonerogue.blogspot.ca/2011/11/refactor-bonanza.html" target="_blank">tough decision</a> (I liked the 2x scaled look), but it made better business sense at the time. (Portals typically have an upper limit of 800 pixels for game width.)<br />
<br />
Outside of the portals, though, 800x600 is a pretty restrictive resolution. And while NEO Scavenger can be played in resizable windows, the nearest-neighbor scaling can make things pretty ugly. So if players want to see NEO Scavenger in a larger format, what resolution makes the most sense?<br />
<br />
<b>User Statistics</b><br />
<br />
Before deciding on a new resolution, I thought it would be helpful to see what most users have. Unfortunately, that's one statistic the in-game NEO Scavenger metrics don't track.<br />
<br />
However, one benefit of running one's own storefront, and hosting one's own game, is that I have website logs to turn to. It's not as good as tracking that info from within the game, but it's pretty close. So I opened up Google Analytics to take a look:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-M_T1AOfMwQA/UP2c5sls_eI/AAAAAAAAAVo/fb13LopokKg/s1600/screenshot-2013-01-21.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="190" src="http://3.bp.blogspot.com/-M_T1AOfMwQA/UP2c5sls_eI/AAAAAAAAAVo/fb13LopokKg/s400/screenshot-2013-01-21.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Figure 1: Total Visits Sorted by Screen Resolution</td></tr>
</tbody></table>
Hm, that's not as clear-cut as I had hoped. The top 10 resolutions only cover about 57% of all users. Worse still, look at the lower right hand corner. That's right, there are 1336 different screen resolutions used to view <a href="http://bluebottlegames.com/">bluebottlegames.com</a>! (Also, damn! Missed it by one!)<br />
<br />
Ok, so it looks like we'll need to do some data-slicing and bucketing.<br />
<br />
<b>Aspect Ratio</b><br />
<br />
What about aspect ratio? Overall screen size may vary quite a bit, but surely most are either standard (e.g. 4:3) or widescreen (e.g. 16:9), right?<br />
<br />
As it turns out, between the various device types (LCD monitors, laptops, netbooks, tablets, phones, index spiders) and display configurations (portrait vs. landscape, single vs. multiple displays), there are ~400 aspect ratios in the logs.<br />
<br />
Fortunately, this is their distribution:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-oWh-9Cru70c/UP2ysOoPd0I/AAAAAAAAAV4/LW332eccNOY/s1600/screenshot-2013-01-21a.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="163" src="http://2.bp.blogspot.com/-oWh-9Cru70c/UP2ysOoPd0I/AAAAAAAAAV4/LW332eccNOY/s400/screenshot-2013-01-21a.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Figure 2: Histogram of Aspect Ratios</td></tr>
</tbody></table>
In other words, only a handful of aspect ratios are in significant quantity. And if one looks closely at the values along the x-axis, many of these aspect ratios are only marginally different. So I ran some algorithms on the data to group things further.<br />
<br />
First, I grouped identical displays with different orientations, so portrait and landscape orientations were combined (with the largest dimension reported as width). I realize this may not be perfect, since users who prefer their monitors in portrait mode may not be willing to rotate their screen to fit a wide game screen.<br />
<br />
However, since NEO Scavenger is a landscape-oriented game, accommodating portrait mode on most monitors would restrict the game screen considerably. It's current width of 800 pixels would already break the limits on many monitors. Besides, I suspect most gamers will have a landscape orientation, as that's how most games are designed.<br />
<br />
Second, I grouped similar aspect ratios such that there was a +/- 8% tolerance in the final aspect ratio value. For example, 1.7708 and 1.7778 would be in the same group, but 1.6 would not. Doing so reduced the spread considerably:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-H81wd9mx9Lg/UP225PdfvtI/AAAAAAAAAWI/pgE443VhlFM/s1600/screenshot-2013-01-21b.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="http://2.bp.blogspot.com/-H81wd9mx9Lg/UP225PdfvtI/AAAAAAAAAWI/pgE443VhlFM/s400/screenshot-2013-01-21b.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Figure 3: Histogram of Aspect Ratios, 8% Tolerance</td></tr>
</tbody></table>
Now we're starting to see some familiar faces. 16:9 is the <a href="http://en.wikipedia.org/wiki/High-definition_television" target="_blank">HDTV</a> ratio, used with displays that are meant for 720p (1280x720) and 1080p/1080i (1920x1080), as well as many widescreen computers and tablets (e.g. WXGA). 4:3 is the SDTV ratio, which was common in older televisions and desktop computers, such as 1024x768 (XGA), 800x600, 640x480, etc.<br />
<br />
16:10 is also quite common in desktop displays, as well as many tablets. And 5:4 is a common ratio found in many non-widescreen LCD displays.<br />
<br />
Five buckets is a much easier dataset to digest. And fortunately, the answer seems pretty clear: the vast majority of users (~80%) are on a widescreen aspect ratio.<br />
<br />
<b>Screen Size</b><br />
<br />
So what about the actual screen sizes? Assuming I decided on a widescreen format, what size would fit the largest number of users' screens?<br />
<br />
To answer this, I took the most common 16:9, 16:10, and 4:3 resolutions, plus a handful of other common resolutions from the top of the web logs, and calculated what percentage of users could display each size without cropping. Here's what I found:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-RNL3aDPDuHg/UP28Gvsj1XI/AAAAAAAAAWY/s1mlfe5p5V4/s1600/screenshot-2013-01-21c.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="291" src="http://1.bp.blogspot.com/-RNL3aDPDuHg/UP28Gvsj1XI/AAAAAAAAAWY/s1mlfe5p5V4/s400/screenshot-2013-01-21c.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Figure 4: % Users Supported at Various Game Resolutions</td></tr>
</tbody></table>
Again, it looks like we're pretty fortunate. There are 5 screen sizes that would each support 90% or more of my site's visitors.<br />
<br />
480x320 is there because it was one of the top 15 screen sizes, but it's a bit deceptive. It's actually a common smartphone screen size (e.g. iPhone, BlackBerry, etc.), so it's not likely players of the game as much as web surfers. Furthermore, the number of users in this screen size only account for about 1% of all users. They just have a tightly-grouped bucket. Like I said, deceptive.<br />
<br />
That leaves us with 800x600, 1024x768, 1280x720, and 1280x768. I'd really like to do a widescreen format, since the data shows that most users have that aspect ratio. However, both the 1280x720 and 1280x768 formats would leave ~10% of the site visitors with a squashed or cropped screen.<br />
<br />
However, as I'm mulling over these values, a thought occurs to me.<br />
<br />
<b>Steam User Data</b><br />
<br />
Each year, Steam does a hardware survey of its users, and <a href="http://store.steampowered.com/hwsurvey" target="_blank">publishes the results</a>. And with over <a href="http://store.steampowered.com/stats/?snr=1_hwsurvey_4__10" target="_blank">6 million concurrent gamers at peak</a>, that's a lot of useful data.<br />
<br />
So I grabbed their screen size data, did some number crunching, and applied the same filters and sorting as above. Here's what I found:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-hK1egqhVR10/UP3BMvdm9TI/AAAAAAAAAWo/2pgBEPuZCBU/s1600/screenshot-2013-01-21d.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="http://3.bp.blogspot.com/-hK1egqhVR10/UP3BMvdm9TI/AAAAAAAAAWo/2pgBEPuZCBU/s400/screenshot-2013-01-21d.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Figure 5: Histogram of Aspect Ratios, 8% Tolerance (with Steam)</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-10_ujtvs7Nw/UP3BMnbmAXI/AAAAAAAAAWs/P598U8MmcJk/s1600/screenshot-2013-01-21e.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="291" src="http://4.bp.blogspot.com/-10_ujtvs7Nw/UP3BMnbmAXI/AAAAAAAAAWs/P598U8MmcJk/s400/screenshot-2013-01-21e.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Figure 6: % Users Supported at Various Game Resolutions (with Steam)</td></tr>
</tbody></table>
First of all, it's good to see similar numbers. I can't say for sure if my calculations are accurate, but at least they're <a href="http://en.wikipedia.org/wiki/Accuracy_and_precision" target="_blank">precise</a> :)<br />
<br />
Once again, we see that widescreen is a big winner. And in fact, the gap between 16:9 and 16:10 is more pronounced. Perhaps even more heartening is that the top two widescreen resolutions are more widely available to Steam users. Just about 95% for 1280x720, and 94% for 1280x768.<br />
<br />
<b>The "Right" Resolution</b><br />
<br />
So what's the "right" resolution for NEO Scavenger? I'm leaning towards 1280x720. Knowing that widescreen is more widely supported than not, I'd prefer to chose a widescreen format. The question is, which one?<br />
<br />
Of the widescreen formats, it seems 1280x720 (720p) and 1280x768 (WXGA) are the two most viable. 720p is slightly more widely supported than WXGA in both my and Steam's users, so that's one reason to prefer that format. 720p also seems like a more standardized format, since it is <i>the</i> HDTV standard, and many devices are designed to support it for that reason (tablets, consoles, projectors, etc.).<br />
<br />
The main reason to go with 1280x768 would be to get the extra vertical real-estate. However, when looking up screen sizes, it occurred to me that many 16:10 devices are computers, and this extra vertical height might be a design response to the OS taskbar. It's possible that designing software for 16:9 still fits a 16:10 monitor better, since it leaves room for tabs or other OS UI.<br />
<br />
I can also see that 16:9 outstrips 16:10 considerably, in pure aspect ratio terms. It would seem that no matter the reasoning behind 16:10, 16:9 simply has more reasons to choose it.<br />
<br />
So, 720p it is.<br />
<br />
<b>What About the 10%?</b><br />
<br />
Unfortunately, choosing 720p still makes life difficult for 10% of my users (or 5% if you judge by Steam's numbers). What about them?<br />
<br />
And what about the Flash portals? I'm always saying how I'd like to publish NEO Scavenger's demo on portals for broader awareness. Won't this screw that up?<br />
<br />
It does. And to the question prior: I'd like to support them too, if possible. So my current plan is to see if there's some way I can setup the UI to work in both 800x600 and 1280x720 modes. It's a daunting task, since the available real-estate is quite different. And it means storing either two different sets of coordinates and zoom, or else some sort of UI-scaling rules.<br />
<br />
Neither are going to be trivial. But I think it's at least worth trying.<br />
<br />
<b>And What About Fonts?</b><br />
<br />
Right, I mentioned fonts too, didn't I?<br />
<br />
Fonts are another area that needs improvement in NEO Scavenger. More than a few users have complained of eye strain trying to read the tiny pixel font in NEO Scavenger.<br />
<br />
I'd like to just bump up the font size, and be done with it. However, the font I'm using is actually a <a href="http://gamedevgonerogue.blogspot.ca/2011/11/refactor-bonanza.html" target="_blank">custom made one</a>. So simply scaling it up won't make it clearer. It'll still be pixelated, because that's how it was designed.<br />
<br />
I briefly started toying with 3rd party fonts, like Arial, Verdana, etc., but then the question of licensing popped into my head. I did some <a href="http://www.microsoft.com/typography/RedistributionFAQ.mspx" target="_blank">research</a>, and for a moment, thought I was in the clear. Then I saw a <a href="http://forums.adobe.com/message/2302064#2302064" target="_blank">comment</a> that gave me pause.<br />
<br />
So I did some more <a href="http://blogs.adobe.com/typblography/2010/10/web-font-licensing.html" target="_blank">research</a>, and then it seemed like I was in the clear again (search for the string "SWF" in that last adobe.com link). Unfortunately, after an hour-and-a-half of this ping-pong, I was only learning one thing: font licensing is in a state of hell, and I want to have nothing to do with it.<br />
<br />
My current leaning is to just eat the time cost and make my own font again, just for a larger size this time. The only thing that bothers me is that I don't want to "guess and check" a bunch of times if each time means designing a font. They don't take too long to make if you know what you're doing, but I can't afford to make 15 different fonts just to find out each doesn't look right.<br />
<br />
So what I may do is use well-known fonts to gauge the size and style I want, then go make my own in the same style and size.<br />
<br />
<b>Scaling</b><br />
<br />
Lastly, a note about scaling. Whatever screen size I choose, it won't fit everyone's screen. So when the game goes to full screen, it won't always be a perfect fit. So I have some choices to make.<br />
<br />
The first one is whether or not to scale at all. I think this one's a given. Some folks just want to zoom in, and see things bigger. So I plan to make the game scale up to fit the full screen, but maintain the aspect ratio, using black to pad the extra space. I'll probably also add an option to just leave it at 1x zoom with black bars at full screen, for those who want it (should be trivial to add).<br />
<br />
The second is what type of filtering to use. Up until now, it used the default <a href="http://flixel.org/" target="_blank">flixel</a> nearest-neighbor filtering. This type of filtering produces clean, crisp images when zooming in whole increments (e.g. 2x, 3x, 4x). However, fractional zooms (e.g. 1.5, 2.1) produce horrendous artifacts. This is likely the source of many font complaints so far.<br />
<br />
I could switch it to use bicubic (or similar) filtering. This would make things look smoother when scaled, but would also introduce blurring. I opted not to do this originally because it's usually better used on photos than pixel art.<br />
<br />
However, it may be an improvement over nearest-neighbor if I am to allow non-integer scaling of the game (which is likely, given the wide array of screen sizes in use). I think other games, even pixel art games, are doing this nowadays, too.<br />
<br />
And then there's the question of whether to change fonts when scaling. This might be overkill, but it might look better if graphics use one filter, and fonts another. I haven't tested it out yet, though.<br />
<br />
For now, I'm getting things setup for alternate screen sizes in the code, so I can start testing these ideas. I welcome any advice or experience on the matter!Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comtag:blogger.com,1999:blog-3993525046698649887.post-76526418874829043522013-01-07T14:02:00.000-08:002013-01-07T14:02:10.212-08:002012 RetrospectiveWith the ringing of the new year, I thought it might make sense to look over the previous one, to get a sense of where I've been, and what that might imply about where I should go next.<br />
<br />
<b>January 2012</b><br />
<br />
Twelve months ago, I was just becoming a <a href="http://gamedevgonerogue.blogspot.ca/2012/01/2012-broadcasting-from-apocalypse.html" target="_blank">Canadian permanent resident</a>. After months of sitting on my hands, it was time to start making things official. I still had a lot left to do before launch, but I could finally submit paperwork and other requests, and start on the <a href="http://gamedevgonerogue.blogspot.ca/2012/01/2012-broadcasting-from-apocalypse.html" target="_blank">process of making my dream business a reality</a>.<br />
<br />
NEO Scavenger already looked pretty much like how it does today:<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-sqeGJ67zzcU/UOrmQ00P-vI/AAAAAAAAAVI/IdyVgGXbFPY/s1600/screenshot-2013-01-07.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="148" src="http://2.bp.blogspot.com/-sqeGJ67zzcU/UOrmQ00P-vI/AAAAAAAAAVI/IdyVgGXbFPY/s400/screenshot-2013-01-07.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">January 2012 vs. January 2013</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-VbrHhdv15xw/UOrmfnPFCPI/AAAAAAAAAVQ/5nPZObVz6PA/s1600/screenshot-2013-01-07a.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="148" src="http://1.bp.blogspot.com/-VbrHhdv15xw/UOrmfnPFCPI/AAAAAAAAAVQ/5nPZObVz6PA/s400/screenshot-2013-01-07a.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">January 2012 vs. January 2013</td></tr>
</tbody></table>
However, despite the shared map and item graphics, quite a lot changed under the hood. These changes are only hinted at by some of the UI differences shown above.<br />
<br />
NEO Scavenger finally got its <a href="http://gamedevgonerogue.blogspot.ca/2012_01_01_archive.html" target="_blank">logo</a>:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-kNnzsHXtIq0/T1UIuykGuFI/AAAAAAAAAQg/s0mdxrse9Fc/s1600/nsLogo228x128.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="224" src="http://4.bp.blogspot.com/-kNnzsHXtIq0/T1UIuykGuFI/AAAAAAAAAQg/s0mdxrse9Fc/s400/nsLogo228x128.png" width="400" /></a></div>
<br />
And it also received an overhaul to its scavenging mechanic. Prior to 2012, scavenging involved visiting a hex, opening the inventory screen, and hoping there were items on the ground. Not exactly the most engaging mechanic, especially considering it was the namesake for the game.<br />
<br />
Skill selection was finally becoming more like what we see now, instead of this:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-cZPRX1jQDSY/TpRYo42F2vI/AAAAAAAAAKQ/dsYmWoouLIw/s1600/screenshot-2011-10-11a.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="http://2.bp.blogspot.com/-cZPRX1jQDSY/TpRYo42F2vI/AAAAAAAAAKQ/dsYmWoouLIw/s400/screenshot-2011-10-11a.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Nominated for most intuitive UI of 2011.</td></tr>
</tbody></table>
The inventory screen was changed to rely less on ctrl and shift clicking, instead using "modes" triggered by visible buttons. The UI also got hotkeys for the various screens and modes.<br />
<br />
I implemented Playtomic for metrics, which was a partial success. The basic stats are still useful, though the more complex stats I setup are not very usable. A preloader was added, which is still used today. SecureSWF is likewise still pulling its weight as a code obfuscator. And save/load was in its infancy.<br />
<br />
January was also the month when I decided on NEO Scavenger's <a href="http://gamedevgonerogue.blogspot.ca/2012/01/business-and-80s-supervehicles.html" target="_blank">final business model</a>. Until this point, I was expecting it to be launched under the sponsorship model. I also decided on feature voting, as a means to gather measured user feedback.<br />
<br />
The game switched from 1280x800 (arbitrarily chosen as half my monitor's screen resolution) to a more universal 800x600 (palatable for game portals). Finally, I added site-locking as I prepared to put NEO Scavenger out there for people to test.<br />
<br />
<b>February 2012</b><br />
<br />
In February, I began piecing together all the <a href="http://gamedevgonerogue.blogspot.ca/2012/02/indie-business-administrivia-pre-flight.html" target="_blank">necessary components for launching a business on the web</a>. Quite a bit of time was spent on everything from creating a website to setting up a payment provider. It was a month filled with more business work than game, though I still managed to cobble together some new in-game items, new artwork, and a spate of newspaper loot with back-story snippets to read.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-VEjmNutm4qE/T0KUTx3428I/AAAAAAAAAPo/2k03hxBNgNI/s1600/ItmNewspaper.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-VEjmNutm4qE/T0KUTx3428I/AAAAAAAAAPo/2k03hxBNgNI/s1600/ItmNewspaper.png" /></a></div>
<br />
<br />
<b>March 2012</b><br />
<br />
March marked the <a href="http://gamedevgonerogue.blogspot.ca/2012/03/blue-bottle-games-now-launching.html" target="_blank">public launch</a> of both NEO Scavenger and my company, <a href="http://bluebottlegames.com/main/" target="_blank">Blue Bottle Games</a>. 9 months after starting development, NEO Scavenger was available for all to try and pre-purchase.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-7zztSdqezEI/T1UIDnW_M4I/AAAAAAAAAQY/mwG7UGx_HIE/s1600/bbgLogoColor200x247.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-7zztSdqezEI/T1UIDnW_M4I/AAAAAAAAAQY/mwG7UGx_HIE/s1600/bbgLogoColor200x247.png" /></a></div>
<br />
And with that launch came the stresses of running a public-facing service company. I had to quickly adapt my schedule to balance development with PR, and adapt my psyche to the ups and downs of public opinion. Fortunately, most of that opinion was positive. But it was still a bracing experience.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-D_AwjlaLuRk/T3nZQKgxZ9I/AAAAAAAAAQ4/wpGT9JBk_aQ/s1600/screenshot-2012-04-02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="146" src="http://4.bp.blogspot.com/-D_AwjlaLuRk/T3nZQKgxZ9I/AAAAAAAAAQ4/wpGT9JBk_aQ/s320/screenshot-2012-04-02.png" width="320" /></a></div>
<br />
March also marked my first taste of revenue. It started small, then surged wildly with some press coverage, then settled back down to a stream. Fortunately, that stream continues to this day, and even had a few additional, albeit smaller, spikes along the way.<br />
<br />
<b>April 2012</b><br />
<br />
In April, <a href="http://gamedevgonerogue.blogspot.ca/2012/04/sales-metrics-and-doing-right-thing.html" target="_blank">sales settled into their steady state</a>, which was (and continues to be) a little less than cost of living. This shrinking of a major launch spike caused some <a href="http://gamedevgonerogue.blogspot.ca/2012/04/how-soon-is-now.html" target="_blank">existential concern</a>. As it turns out, this question of "when is it 'done'?" never goes away. It just changes circumstances and specifics over time.<br />
<br />
I was also faced with my first major public game design decision: permadeath and save games. I ultimately decided to keep the game more rogue-like in that permadeath means save games are deleted. Months later, I'm glad I did. It was a decision which could have drastically altered NEO Scavenger, and I'm glad that it was altered in a way that keeps it challenging, unique, and with some later tweaking, fun.<br />
<br />
I also started to formalize <a href="http://gamedevgonerogue.blogspot.ca/2012/04/on-public-relations.html" target="_blank">my PR policy</a> by the time April came around. Fortunately, I wasn't faced with too much internet hate, but the hate I did receive forced me to grapple with my rules of engagement. Put succinctly, ignore attacks, and focus on being constructive and responsive to those that are constructive.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://bluebottlegames.com/img/nsScreen07.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="http://bluebottlegames.com/img/nsScreen07.png" width="400" /></a></div>
<br />
In development of the game itself, the <a href="http://bluebottlegames.com/main/node/280" target="_blank">camping and night/lighting features</a> were big items. They were the first major features, in fact. Lots of loading/saving fixes were required as well. And the website and order process had some <a href="http://bluebottlegames.com/main/node/292" target="_blank">growing pains to resolve</a>.<br />
<br />
<b>May 2012</b><br />
<br />
During the month of May, blog posts focused on more meta-topics such as <a href="http://gamedevgonerogue.blogspot.ca/2012/05/importance-of-data.html" target="_blank">tracking data</a> and money-saving tips, to <a href="http://gamedevgonerogue.blogspot.ca/2012/05/frugal-indie.html" target="_blank">keep overhead costs minimized</a>.<br />
<br />
Development of the game, on the other hand, was in full force. As I would soon discover, <a href="http://bluebottlegames.com/main/archive/201205" target="_blank">plot is hard to do</a>. For nearly a month, all that readers saw coming down the wire was "did more plot work today." I don't enjoy phases where there's little to share with fans, but I also don't want to spoil the fun by revealing the story out of order.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-XIJVpp06F_w/Tm4ksdptlrI/AAAAAAAAAHc/Gw9PHTGkIB8/s1600/screenshot-2011-09-12a.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="http://4.bp.blogspot.com/-XIJVpp06F_w/Tm4ksdptlrI/AAAAAAAAAHc/Gw9PHTGkIB8/s400/screenshot-2011-09-12a.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Encounter Editor</td></tr>
</tbody></table>
<br />
Fortunately, there were a few updates sprinkled in to keep folks entertained. One such change was <a href="http://bluebottlegames.com/main/node/386" target="_blank">the chase</a>, which opened up various new gameplay tools for tracking and hiding AI. The oft-requested <a href="http://bluebottlegames.com/main/node/389" target="_blank">pockets</a> were also added.<br />
<br />
And May is also when I started working with <a href="http://bluebottlegames.com/main/node/372" target="_blank">my first collaborator: Cameron Harris</a>. His input to both design and plot has been a real asset, and I believe NEO Scavenger is a better game for it.<br />
<br />
<b>June 2012</b><br />
<br />
I was on the road for part of June, so activity was a bit limited. It did give me a chance to try out <a href="http://gamedevgonerogue.blogspot.ca/2012/06/not-road-ready.html" target="_blank">developing on the road</a>, and to see how poorly I was prepared.<br />
<br />
Still, a lot got done on NEO Scavenger in June. In particular, I made my second major decision: to work on improving combat <a href="http://bluebottlegames.com/main/node/411" target="_blank">ahead of schedule</a>. Combat was pretty poor in early versions of NEO Scavenger. Its dependence on luck made it more frustrating than fun.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://bluebottlegames.com/img/nsScreen08.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="http://bluebottlegames.com/img/nsScreen08.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">New Combat UI</td></tr>
</tbody></table>
By the end of June, combat had a new face, and it was far more tactical and engaging. It also included some improvements to AI.<br />
<br />
<b>July 2012</b><br />
<br />
In July, I started lamenting my <a href="http://gamedevgonerogue.blogspot.ca/2012/07/i-have-problem.html" target="_blank">poor work and exercise habits</a>. While I feel my workaholism has improved (I took 2 weeks off at Christmas, despite the temptation to only take 1), I'm still short on exercise. I made my second, and more serious, dip into the world of <a href="http://gamedevgonerogue.blogspot.ca/2012/07/return-to-accountant-cy.html" target="_blank">business accounting</a>. And I was <a href="http://gamedevgonerogue.blogspot.ca/2012/07/in-news-again-and-desura.html" target="_blank">approached by Desura</a> for inclusion in their service!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.bluebottlegames.com/img/nsDesura.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://www.bluebottlegames.com/img/nsDesura.png" /></a></div>
<br />
With the new <a href="http://bluebottlegames.com/main/node/521" target="_blank">combat system launched</a>, I began work on a <a href="http://bluebottlegames.com/main/node/532" target="_blank">wounding system</a> that would integrate with the extant player conditions, and offer opportunities for resourcefulness and strategy in dealing with wounds. I would argue that this suite of combat and wounding systems was one of the more important changes to NEO Scavenger so far, as it greatly enhanced the game's uniqueness, depth, and fun factor.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.bluebottlegames.com/img/screenshots/screenshot-2012-07-23.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://www.bluebottlegames.com/img/screenshots/screenshot-2012-07-23.png" /></a></div>
<br />
July is also the month where I began working with my second collaborator, <a href="http://bluebottlegames.com/main/node/557" target="_blank">Josh Culler</a>. Josh's music has added a wonderful sense of atmosphere to the game, and has been very effective in promotional trailers as well.<br />
<br />
<b>August 2012</b><br />
<br />
August was the month of getting ready to <a href="http://gamedevgonerogue.blogspot.ca/2012/08/getting-ready-for-relaunch.html" target="_blank">launch NEO Scavenger on Desura</a>. For the first time since March, the <a href="http://bluebottlegames.com/main/node/670" target="_blank">demo gets an update</a> to reflect the new features and content. NEO Scavenger also got its <a href="http://bluebottlegames.com/main/node/695" target="_blank">first trailer</a>. A <a href="http://gamedevgonerogue.blogspot.ca/2012/08/flash-as-native-app.html" target="_blank">lot of research</a> goes into making NEO Scavenger <a href="http://bluebottlegames.com/main/node/692" target="_blank">downloadable</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<object width="320" height="266" class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://i.ytimg.com/vi/_2K3mihtzrA/0.jpg"><param name="movie" value="http://www.youtube.com/v/_2K3mihtzrA?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" /><param name="bgcolor" value="#FFFFFF" /><param name="allowFullScreen" value="true" /><embed width="320" height="266" src="http://www.youtube.com/v/_2K3mihtzrA?version=3&f=user_uploads&c=google-webdrive-0&app=youtube_gdata" type="application/x-shockwave-flash" allowfullscreen="true"></embed></object></div>
<br />
With those fulfilments complete, I began the <a href="http://bluebottlegames.com/main/node/696" target="_blank">Desura application process</a>. Coincidentally, Steam Greenlight launched that same month, and within 24 hours, <a href="http://bluebottlegames.com/main/node/701" target="_blank">NEO Scavenger was added to Greenlight</a>!<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.bluebottlegames.com/img/screenshots/screenshot-2012-08-30a.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="290" src="http://www.bluebottlegames.com/img/screenshots/screenshot-2012-08-30a.png" width="320" /></a></div>
<br />
NEO Scavenger also had combat fleshed out with <a href="http://bluebottlegames.com/main/node/612" target="_blank">new moves</a>, <a href="http://bluebottlegames.com/main/node/572" target="_blank">terrain resources</a> (e.g. water, wood), and a new encounter to allow players to <a href="http://bluebottlegames.com/main/node/668" target="_blank">return to the cryo facility</a> and make a permanent base.<br />
<br />
<b>September 2012</b><br />
<br />
With the Desura and Greenlight launches done, I decided to do a <a href="http://gamedevgonerogue.blogspot.ca/2012/09/the-effects-of-desura-and-steam.html" target="_blank">mini retrospective</a>. In it, I look over some of the sales stats to-date, and how both <a href="http://bluebottlegames.com/main/node/758" target="_blank">launching on Desura</a> and Greenlight affected them.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-BTMqWDhKUp4/UE4pF-NXtAI/AAAAAAAAASM/vzf5gDinljU/s1600/screenshot-2012-09-10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="246" src="http://2.bp.blogspot.com/-BTMqWDhKUp4/UE4pF-NXtAI/AAAAAAAAASM/vzf5gDinljU/s400/screenshot-2012-09-10.png" width="400" /></a></div>
<br />
I also officially enter the Mac and Linux realm with <a href="http://gamedevgonerogue.blogspot.ca/2012/09/the-week-of-hardware-and-sales-follow-up.html" target="_blank">my first Mac hardware</a>. $500 netted me hardware I could create Mac binaries with, as well as dual-boot Linux for that version.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-v_0JMfOxhRY/UGCYDdvOjMI/AAAAAAAAATQ/Ic4w-6gT4bY/s1600/screenshot-2012-09-24.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://4.bp.blogspot.com/-v_0JMfOxhRY/UGCYDdvOjMI/AAAAAAAAATQ/Ic4w-6gT4bY/s320/screenshot-2012-09-24.png" width="320" /></a></div>
<br />
I also had a few hardware failures, which cost some time and money to isolate and fix, but were thankfully minimal in impact otherwise.<br />
<br />
NEO Scavenger gets the ability to <a href="http://bluebottlegames.com/main/node/769" target="_blank">delete items</a>, a <a href="http://bluebottlegames.com/main/node/807" target="_blank">new thank you postcard design</a>, and work begins on <a href="http://bluebottlegames.com/main/node/891" target="_blank">random encounters</a>. Josh's first batch of <a href="http://bluebottlegames.com/main/node/893" target="_blank">in-game music is also added</a>.<br />
<br />
<b>October 2012</b><br />
<br />
NEO Scavenger is featured in its <a href="http://gamedevgonerogue.blogspot.ca/2012/10/neo-scavengers-first-bundle.html" target="_blank">first bundle</a>. While a success by most standards, I decide that I'll probably wait until after v1.0 is done to do another, and turn down subsequent bundle offers accordingly.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/PnTsrBuAsjU?feature=player_embedded' frameborder='0'></iframe></div>
<br />
Player frustration mounts, and the question of game design and permadeath resurfaces. I decide to take a <a href="http://gamedevgonerogue.blogspot.ca/2012/10/thoughts-on-game-design-and-vision.html" target="_blank">long look at the game's design</a>, to see where it might be failing. I still want to keep permadeath and NEO Scavenger's rogue-like qualities, but I also want to offer players the tools they need to overcome adversity. It is likely to be an ongoing balancing act.<br />
<br />
The process of plot work remains <a href="http://bluebottlegames.com/main/node/923" target="_blank">slow and grueling</a>, with little to show while in progress. However, I finally finish entering data for the <a href="http://bluebottlegames.com/main/node/973" target="_blank">random encounters</a>. The Desura website gets the ability to <a href="http://bluebottlegames.com/main/node/934" target="_blank">connect</a> owners there to accounts at <a href="http://bluebottlegames.com/">bluebottlegames.com</a>.<br />
<br />
Work begins on one of the most deceptively difficult bugs in history: <a href="http://bluebottlegames.com/main/node/980" target="_blank">item stacking</a>.<br />
<br />
<b>November 2012</b><br />
<br />
With random encounters increasing the encounter node count above 750, the encounter editor fails to start anymore. I begin <a href="http://gamedevgonerogue.blogspot.ca/2012/11/haxe-nme-first-impressions.html" target="_blank">rebuilding the editor in Haxe NME</a>, partially as a solution to the above performance issue, and partially as a test to see if NEO Scavenger is worth porting to NME. The results are pretty good, but there are <a href="http://gamedevgonerogue.blogspot.ca/2012/11/haxe-nme-follow-up.html" target="_blank">a few stumbling blocks</a>. I decide that NME holds promise, but I might wait a while before porting NEO Scavenger.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-DMMJ99EEm5Y/UKp9LEwGhfI/AAAAAAAAAUs/-cDieaJFFq0/s1600/screenshot-2012-11-16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="237" src="http://1.bp.blogspot.com/-DMMJ99EEm5Y/UKp9LEwGhfI/AAAAAAAAAUs/-cDieaJFFq0/s400/screenshot-2012-11-16.png" width="400" /></a></div>
<br />
The stacking change continues to <a href="http://bluebottlegames.com/main/node/1126" target="_blank">ripple bugs</a> into mid-November, but finally works. The mouse is upgraded to take advantage of new Flash plugin features: <a href="http://bluebottlegames.com/main/node/1101" target="_blank">hardware mouse</a> and <a href="http://bluebottlegames.com/main/node/1108" target="_blank">right clicking</a>. <a href="http://bluebottlegames.com/main/node/1200" target="_blank">Plot work resumes</a> in the new editor.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://www.bluebottlegames.com/img/screenshots/screenshot-2012-11-26.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="290" src="http://www.bluebottlegames.com/img/screenshots/screenshot-2012-11-26.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">DMC City Map v1</td></tr>
</tbody></table>
I also needed to take a step back to revise overall <a href="http://bluebottlegames.com/main/node/1207" target="_blank">plot</a> and <a href="http://bluebottlegames.com/main/node/1210" target="_blank">mythology</a>. And once course-corrections were in place, it was time to start work on <a href="http://bluebottlegames.com/main/node/1214" target="_blank">opening the DMC to players</a>. A lot of the work revolves around the <a href="http://bluebottlegames.com/main/node/1218" target="_blank">map used to represent the city to players</a>.<br />
<br />
<b>December 2012</b><br />
<br />
As work continues on the DMC content, I focus the blog on more business related musings. I take some time to discuss my policy for <a href="http://gamedevgonerogue.blogspot.ca/2012/12/more-customer-relations.html" target="_blank">customer relations</a>, and <a href="http://gamedevgonerogue.blogspot.ca/2012/12/stress-and-release-schedules.html" target="_blank">how to avoid stressing out over release schedules</a>.<br />
<br />
Work on the DMC map continues, adding both detail and animated VFX for interest. Rather than releasing a full screenshot of it, I decide to do a <a href="http://bluebottlegames.com/main/node/1240" target="_blank">teaser</a> with one of Josh's new music pieces for the city.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/4WlQbcUlf9w?feature=player_embedded' frameborder='0'></iframe></div>
<br />
I briefly start thinking about currency, then exercise some discipline and decide to focus on higher priorities: <a href="http://bluebottlegames.com/main/node/1251" target="_blank">city encounters</a>. Finally comfortable admitting the DMC will not be ready for Christmas, I decide to take a player's suggestion to <a href="http://bluebottlegames.com/main/node/1274" target="_blank">release some wallpapers</a> instead.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://bluebottlegames.com/img/wallpapers/nsWallpaper1280x800DMC.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="250" src="http://bluebottlegames.com/img/wallpapers/nsWallpaper1280x800DMC.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Desktop Wallpaper of DMC</td></tr>
</tbody></table>
<br />
<b>Looking Back, and Looking Forward</b><br />
<br />
It was a good year, overall. I had some good successes, made some mistakes, and learned some big lessons. NEO Scavenger earned more than I expected, but less than I hoped. It's poised for success, though, as long as I keep working hard.<br />
<br />
The biggest issue I see, moving forward, is determining when to consider NEO Scavenger finished, and to move on to the next project. I'm resolved to release it this year, and have been telling myself and others that spring is the timeframe. Spanning that last stretch, and finishing with the right suite of features will be a big decision.<br />
<br />
But as I go into 2013, I am more seasoned and confident, and I have optimism for the year to come. I'll no doubt make new mistakes, but also surmount new obstacles and claim new victories. Here's to acknowledging the past, and looking forward with hope!Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comtag:blogger.com,1999:blog-3993525046698649887.post-20951473769741619472012-12-17T13:39:00.000-08:002012-12-17T13:39:34.445-08:00Stress and Release SchedulesI'm a bit of a workaholic. Not a complete one, mind you. I keep <a href="http://gamedevgonerogue.blogspot.ca/2011/12/life-as-indie.html" target="_blank">pretty rigid workday hours</a>, and have no problem walking away from my work at the end of each day. I'm even good at not working weekends or during vacation. However, <a href="http://gamedevgonerogue.blogspot.ca/2012/07/i-have-problem.html" target="_blank">as I've noted before</a>, I seem to have a problem with scheduling time off.<br />
<br />
<b>The Guilt Release Cycle</b><br />
<br />
I think my issue is related to a sense of guilt or obligation. I find that I am happiest when I have just released a new build, with new features or content. I think that during that time, and for a brief while after, I feel like I've fulfilled my obligations, and can relax a bit.<br />
<br />
Gradually, as that new build gets further into the past, my sense of guilt/obligation grows, and I start to get stressed that I haven't released anything recently. That stress increase may vary depending on how much progress I am making towards the next build. It also can be tempered if I'm really confident in what I'm building. But by the time a month has passed since the last build, I feel a self-imposed pressure to get something out soon.<br />
<br />
<b>Vacation and Release Timing</b><br />
<br />
With Christmas coming up, I have plans to take time off. Unfortunately, my last uploaded build was November 8th, which means I'm deep in the emotional trough phase of my release cycle. So I've been feeling a tremendous amount of pressure to get a new build released.<br />
<br />
I was under the illusion that I could have a new one wrapped up last week, before starting vacation this week. However, that seems highly unlikely now. I suppose I could release what I have, but I ultimately decided that I'd be even more stressed if I just released something incomplete or buggy.<br />
<br />
In fact, it's completely counter-intuitive to try and release something before a vacation in order to reduce stress while on vacation. The fresh build would inevitably have issues that need fixing. I'd actually be making my vacation more stressful by having to babysit the new build through its teething period.<br />
<br />
Admitting that the new build wouldn't happen before vacation turned out to be a big stress-relief. I still have some stress about being late, but at least the sense of helpless urgency on top of it is gone. I'm no longer facing down an impossible deadline or the decision about whether to release work I'm not completely confident in.<br />
<br />
<b>Anxiety and Prioritization</b><br />
<br />
What's more, I find that my approach to work shifts with the reduction in stress. During those urgent days before a release, I discard anything that can't be done in a day or less. I'm in "quick win" mode, and can't commit to any significant changes, sometimes even important ones.<br />
<br />
Quick-wins are valuable, but sometimes, they're not the highest priorities. Iterative development teaches us that we should constantly be working on reducing the biggest risk, which is not always the task with the shortest completion time.<br />
<br />
When urgency is relaxed, I find it easier to gauge my work, and focus on things that need doing most, instead of things that can be done quickly. I stop thinking so much about time, and focus more on the question of "what adds the greatest value right now?"<br />
<br />
<b>Vacation as a Business Owner vs. Employee</b><br />
<br />
Something else I've noticed about vacation anxiety is the sharp contrast between going on vacation as a business owner and as an employee.<br />
<br />
As an employee, I can remember looking forward to vacation. Most of the time, I was able to leave work at work, and enjoy my vacation as my time. I did feel a little guilt when taking a vacation while others were working (as opposed to a company holiday, for example). However, I usually didn't feel any urgency while on vacation. I just left work behind.<br />
<br />
As a manager within a company, I think more anxiety was introduced to my vacations. I had a harder time walking away, probably because of a sense of responsibility and ownership. Quite often, I would make excuses not to go on vacation, because I "needed" to be there for something, or to finish something.<br />
<br />
This sense was amplified when I became a business <i>owner</i>. Now that I am in control of everything, and all responsibility rests on my shoulders, I don't feel excited about upcoming vacations. I feel nervous, and stressed.<br />
<br />
Being an internet-based business probably makes that worse, since the business is technically running 24/7, with me as the sole employee. I've had to learn to set hours of <i>un</i>availability, or else I'll constantly be checking messages and forums.<br />
<br />
<b>What To Do About It</b><br />
<br />
I'm still too new to this to have a solid prescription. And I don't have a lot of experience-based data to use as a reference. So I'm still guessing, at this point.<br />
<br />
However, observing the above pattern was a good first step. Now that I know it's an issue, I can start paying attention to my behavior in relation to it.<br />
<br />
And I've decided to take a vacation without releasing anything in advance. That was already implied above, but I'm repeating it just to be clear. I'll have to make that clear to customers as well, but they seem to already be <a href="http://bluebottlegames.com/main/node/1256" target="_blank">pretty understanding</a>.<br />
<br />
I guess most importantly, take a step back, and look at the situation. Look for signs that you might be letting work creep into your personal life. And if it is, make some adjustments. One of the most powerful tools I've discovered for self-regulating my work/life balance is reminding myself that "crunch is detrimental." Overworking oneself is going to lead to lower quality work, and lower quality of life. By telling myself that, I'm able to use my workaholism to my advantage, since I don't want to detract from my precious work.<br />
<br />
And when you do finally take a vacation, make sure the vacation is a vacation. It might not be possible to ignore your business for 168 hours in a row, but at least leave the stress behind, and minimize contact with it. Designate your vacation as a "safe zone," where it's okay not to get work done. Build the week's vacation into your release schedule.<br />
<br />
In the end, this is mostly a self-imposed anxiety. I don't think others hold us to as high a standard as we hold ourselves. And in the case of video games, many of the most-lauded studios are those that err on the side of taking necessary time to do their products right.<br />
<br />
So this is a note to myself as much as anyone else: take some time off. Use it to relax. Step away from the product and producing for a while. You'll come back refreshed, and ready to make your creation even better.Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comtag:blogger.com,1999:blog-3993525046698649887.post-29646300237953187982012-12-03T15:22:00.002-08:002012-12-04T17:34:07.545-08:00More Customer Relations<br />
On several occasions, customers have mentioned how much they appreciated that I was both responsive and kept a regular update schedule with NEO Scavenger. It's nice to be complimented, of course, but I was a bit surprised that folks noticed. Does this mean some other indies <i>aren't</i> keeping their customers up-to-date? Or worse, is that negligence the case for such a majority that good customer relations is praiseworthy?<br />
<br />
I hope not. And thankfully, that doesn't seem to be the case with many indies I know personally. But I'll admit, my pool of indie friends is pretty small. In the spirit of sharing best practices for aspiring indies, maybe it's worth going over some customer relations policies that I adhere to.<br />
<br />
<b>Publish Regular News</b><br />
<br />
I have a pretty <a href="http://gamedevgonerogue.blogspot.ca/2011/12/life-as-indie.html" target="_blank">strict work schedule</a>. I work 9am-6pm (ish), Monday to Friday. I don't work on weekends nor stat holidays. And I give myself 3 weeks of vacation each year. For each day worked, I publish news on my <a href="http://bluebottlegames.com/main/" target="_blank">company website</a> (with RSS, as requested by several customers), at the end of the day .<br />
<br />
<br />
I also post news about my availability. When I'm going to be out of the office, I post news to that effect. Similarly, I announce vacation plans in advance. I think it helps to set the correct expectations if you're going to "go dark" for a period of time.<br />
<div>
<br /></div>
<br />
My company website's news is for customers to see what I'm up to. It's the primary means of reaching customers in an official capacity. If someone wants to see what I'm currently working on, the news will tell them exactly that, to within one business day.<br />
<br />
I think it's easy to forget, as a game developer, what it's like being a fan of a game in development. We may have forgotten the days of poring over every screenshot, interpreting the HUD and UI in previews for hints of unrevealed gameplay, or reading interviews in hopes of glimpsing the creative process. For someone not in the world of game development, even the mundane tasks can be interesting.<br />
<br />
So share! Talk about some of the interesting problems you had to solve that day. Or think out loud if something's got you stumped. If you started using a new tool, talk about your experience with it. When it comes to making games, someone, somewhere, probably wants to know what you're up to, or why you arrived at a decision.<br />
<br />
There's also a marketing advantage to regular news updates: proving that your project hasn't stagnated. Often times, when checking out unfinished software, one of the big questions we ask is, "how likely am I to see this thing finished?" If you're about to commit resources to software, you want to know if your investment is going to be worthwhile. This is true of both monetary and time investment.<br />
<br />
So when you're gauging a project's likelihood of being finished, what's the first thing you do? Well, you probably check to see how frequently it's updated. You read the news, browse changelogs, check the dates, and see if the product is active or dead. If the user sees that your news is only updated semi-annually, there's a good chance they'll assume it's not actively being worked on. So if you're working on the project actively, you may as well let everyone know!<br />
<br />
And what's more, it becomes a tool for you to use as well. Wondering what you were doing last month at this time? Check your news! Having a daily, public journal entry about your work is a great way to keep track of your decisions, solutions, and progress.<br />
<br />
<br />
<b>Open Hailing Frequencies</b><br />
<div>
<br /></div>
<br />
News is a great way to "push" info out to your users, but communication is a two-way street. You should be prepared for customers to contact you, with questions, suggestions, concerns, and praise.<br />
<br />
In the case of Blue Bottle Games (BBG), I have several channels, such as my own <a href="http://bluebottlegames.com/main/forum" target="_blank">forums</a>, <a href="http://bluebottlegames.com/main/node/1221#comment-3675" target="_blank">news comments</a>, <a href="https://twitter.com/dcfedor" target="_blank">Twitter</a>, email, <a href="http://steamcommunity.com/sharedfiles/filedetails/?id=92934582" target="_blank">Steam Greenlight</a>, and <a href="http://www.desura.com/games/neo-scavenger" target="_blank">Desura</a>. Different customers have different channel preferences, so having a variety of channels means most customers can use a method they feel most comfortable with.<br />
<br />
I also keep tabs on a few forum threads around the web, as communities will sometimes spring up in the forum of their choice. Usually, <a href="http://www.google.ca/alerts" target="_blank">Google Alerts</a> is the tool which helps me find these discussions as they appear.<br />
<br />
Maintaining multiple channels does place a burden on a developer, though. It sometimes takes me over an hour each morning to keep up with all of these channels, and quite often, it's impossible to cover them all. As a result, I prioritize them, and doing so consistently helps customers to know where they can go for urgent matters vs. casual ones.<br />
<br />
For example, my email is one of my top priorities as a business owner. Every single email I receive (save occasional spam, like SEO offers) deserves a response, so I'll usually deal with that first. Comments on BBG news items are also a priority. The news is what I'm working on right now, so customer comments on that are highly relevant.<br />
<br />
Tech support is another biggie. I hardly have time to scratch the surface of the BBG forums (particularly suggestions), but tech support is a frequent haunt of mine. If my product is broken or causing trouble, I want to know so I can fix it.<br />
<br />
I have a few customers who reach out to me on Twitter, and I always reply if I see them. However, I find that many journalists also tend to prefer Twitter, so there's a second reason to consider opening that channel, if you haven't already.<br />
<br />
Desura and Greenlight are also official "presences" that I maintain, though they're a bit easier since most messages are consolidated on one page. In retrospect, the Desura forums was probably unnecessary, as the main summary page comments do the trick for feedback.<br />
<br />
There are many others, of course, and it will depend on the community you're building, and the ones you want to interact with. Just make sure you only open as many channels as you can manage. Like news, an unattended channel can reflect poorly on your business, and give the impression that your project is vaporware.<br />
<br />
<b>Be Responsive to Customers</b><br />
<b><br /></b>
So just how responsive is enough for all these channels? As a business owner, you'll have to decide on a timeline that works for you. Generally, I try to respond to customer inquiries within one business day. It gives me some time to consider how I'll respond (and to find an answer, in some cases), but it's a short enough time that most will be understanding.<br />
<br />
One exception is in cases involving order issues and lack of game access. In cases like these, I respond as soon as I am able to, usually immediately.<br />
<br />
As mentioned earlier, though, it's impossible to keep up with all chatter, everywhere, all the time. So I find it works best to stay 100% reliable on primary channels like email, official platform accounts (i.e. Desura), and tech support, and use any remaining time in my PR schedule to address the most relevant concerns I find (forum comments directly related to my current development, Greenlight comments, etc.).<br />
<br />
<b>How to Treat Customers (and Trolls)</b><br />
<br />
In addition to where and when, there's the matter of how one responds to customers. In most cases, politeness and earnestness are the key things to strive for. It's hard to go wrong with being respectful. In my experience, folks are much more willing to discuss things constructively and politely if you lead by example.<br />
<br />
Even some of my harshest critics get a "thank you for your feedback," and I do my best to address their concerns. If they bring a valid argument, it's important to recognize it as such, and let them know they're at least heard, even if you don't agree. Often, in these cases, they simply want something different than what you're building. And making that plain disarms any animosity.<br />
<br />
The one exception to the above is the internet troll. A troll is someone who's primary interest is causing a stir, and getting a reaction out of people. It can sometimes be hard to tell the difference between a frustrated customer and a troll, but be assured there is one.<br />
<br />
Some customers may be insulting, or terse, or misinformed, but they want something better (be it better features, better service, or a better community). A troll is just looking to get attention, at any cost, by any means.<br />
<br />
I've talked a bit about this before in my <a href="http://gamedevgonerogue.blogspot.ca/2012/04/on-public-relations.html" target="_blank">PR policy</a> post, but I'll repeat the summary here: ignore the trolls. Don't use your power of influence to draw attention to them by responding or addressing them. Just pretend they don't exist. If they are particularly disruptive, and your community allows it, you may have to ban or edit their comments. But more often than not, they'll go away in search of more interesting targets if you simply ignore them.<br />
<br />
<b>Frequent Builds</b><br />
<br />
This one will depend a bit on your product and how you're distributing it. In my case, I'm offering a game which is still in development, and distributed digitally. As such, I can update the distribution channels with new builds as I develop them. And this is a powerful tool.<br />
<br />
For one thing, it's a more powerful version of the aforementioned news updates. It's an actual, functional news item that players can try for themselves. If the updates are interesting enough, it can keep the game relevant in the players' minds for a long period of time, instead of the short-burst often seen in retail releases.<br />
<br />
Additionally, adopting a policy of frequent build releases gives the developer a chance to try features and content with customers before committing to it in the final product. And it gives players a real way to influence the game for the better. For example, player feedback was instrumental in making NEO Scavenger's combat orders of magnitude more engaging than the original iteration.<br />
<br />
The one caveat here is to be careful not to lean on your customers too much as a source of quality assurance. They <i>will</i> find bugs, and that's natural. But as a developer, you should not expect them to bug test your software for you. In fact, do everything you can to make sure each build is stable enough to be fun. After all, they're still your customers, not employees.<br />
<br />
<b>Refunds</b><br />
<br />
There's one other topic that I thought might be worth mentioning, and that's dissatisfied customers. No matter what you're selling, there are going to be some folks who experience buyer's remorse. It could be that your product failed in some way, or perhaps they simply expected something different.<br />
<br />
Whatever the case, I think it still pays to be respectful, and I'd probably issue the refund. I can't think of many cases where arguing with a customer over a refund ends well. Even if you keep the money, is it worth the time, bad press, hard feelings, or potentially, the customer disputing the charge with their payment provider?<br />
<br />
There are some exceptions, of course. If the customer had the game for several weeks, and then wanted a refund, I'd wonder why it took that long to seek the refund. But even so, as indie developers, a single refund isn't going to break the bank. There's no need to haggle over a few bucks (nor is it even worth it).<br />
<br />
You'll probably have noticed a pattern in the above suggestions. Basically, treat your customers with respect. Customers are a diverse group, with a range of expectations and skill at communicating. For the most part, though, they mean well. Give them the benefit of the doubt, set a positive example, and they'll return the favor!Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comtag:blogger.com,1999:blog-3993525046698649887.post-83451475120981047482012-11-19T10:56:00.001-08:002012-11-19T10:56:37.816-08:00Haxe NME Follow-upA few weeks ago, I began working on a <a href="http://www.haxenme.org/" target="_blank">Haxe NME</a> version of the <a href="http://bluebottlegames.com/main/" target="_blank">NEO Scavenger</a> encounter editor. I endeavored to share my <a href="http://gamedevgonerogue.blogspot.ca/2012/11/haxe-nme-first-impressions.html" target="_blank">first impressions of NME</a>, but I had two more weeks of experimenting with it, so I wanted to share what I learned. What follows, then, is a brief discussion of each of the highlights from that experiment.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-DMMJ99EEm5Y/UKp9LEwGhfI/AAAAAAAAAUs/-cDieaJFFq0/s1600/screenshot-2012-11-16.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="237" src="http://1.bp.blogspot.com/-DMMJ99EEm5Y/UKp9LEwGhfI/AAAAAAAAAUs/-cDieaJFFq0/s400/screenshot-2012-11-16.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Encounter Editor Screenshot</td></tr>
</tbody></table>
<br />
<br />
<b>Speed</b><div>
<br /></div>
<div>
The main reason I chose to rewrite the NEO Scavenger editor in Haxe NME was because the Flash version had performance issues. The recent increase in data caused loading to timeout and crash. And what's more, even before this loading failure, I was reluctant to use the tool due to its sluggishness. Faced with rewriting lots of code no matter what, I decided to try Haxe NME.</div>
<div>
<br /></div>
<div>
I'm happy to say that Haxe NME showed its strength as a high performance framework. I haven't done any proper comparisons between NME and Flash, but the editor is quite responsive at 2560x1600 resolution. This was while drawing hundreds of boxes, hundreds of bitmaps, and thousands of triangles simultaneously, all with scaling (no bitmap rotations, though). </div>
<div>
<br /></div>
<div>
The Windows target also loaded (SQL/URL-based) data much faster than the old Flash version. Though, the NME Flash target still needed optimization to complete data loading before the 15 second timeout.<br /><b><br /></b></div>
<div>
<b>UI</b></div>
<div>
<br /></div>
<div>
Form fields are still a weakness with NME on Windows targets. I was able to hack together some quick and dirty UI elements as stopgaps for buttons, toggle buttons, and drop-down boxes. But not having Flash's built-in UI elements was an obstacle.</div>
<div>
<br /></div>
<div>
<b>TextFields</b></div>
<div>
<br /></div>
<div>
TextFields work on Windows targets, but are extremely limited. They lack support for getting the current caret position, selected text, and copy/paste. Flash targets work fine, however.</div>
<div>
<br /></div>
<div>
Performance can be an issue, though. I was able to get about 2-3 TextField elements per encounter node (about 2200 total) without any noticeable slow-down on my machine. However, much beyond that, and the framerate seemed to drop. I ultimately opted to hide TextFields on all nodes, and reveal them as-needed to keep framerates high.<br /><b><br /></b></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-f38VeRvfzAk/UKp9mXYIzuI/AAAAAAAAAU0/DZXOq3XNYbw/s1600/screenshot-2012-11-14.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="231" src="http://2.bp.blogspot.com/-f38VeRvfzAk/UKp9mXYIzuI/AAAAAAAAAU0/DZXOq3XNYbw/s400/screenshot-2012-11-14.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">A closer look at some of the editable fields I have in each node/connector.</td></tr>
</tbody></table>
<div>
<b>Copy/Paste</b></div>
<div>
<br /></div>
<div>
Copy/paste, itself, turns out to be a general issue in Windows targets. I wasn't able to get access to the clipboard with vanilla NME, and the <a href="http://lib.haxe.org/p/systools" target="_blank">systools library</a> that I tried wouldn't compile for NME Windows targets. Copy/paste on Flash targets appeared to work fine, though.</div>
<div>
<b><br /></b></div>
<div>
<b>Object/Dynamic Weirdness</b></div>
<div>
<br /></div>
<div>
Haxe uses a type called "Dynamic" to handle generic objects (instead of Flash's Object class). On the Windows target, I was able to use .get() to access dynamically-named properties in a URLVariables object. But when compiling on Flash, the compiler didn't like that method. What's more, the traditional Flash method of Object["propertyName"] threw compiler errors. In the end, I had to use Reflect.getProperty(). Not too much of a pain, just unexpected.<br /><b><br /></b></div>
<div>
<b>URLRequest and 413 Error</b></div>
<div>
<br /></div>
<div>
Using URLRequest on Flash targets worked as expected, but caused errors when tried on Windows targets. I kept receiving 413 "request entity too large" errors when trying to execute the request. As it turned out, I needed to initialize the .data field of the URLRequest object to quell the 413 error. I'm not sure why a null data field would cause a "request entity too large" error, which is why it took me a while to figure out. I ended up finding the solution by looking up libcurl issues of a similar nature, since that's the library used by NME.<br /><b><br /></b></div>
<div>
<b>Key Handling</b></div>
<div>
<br /></div>
<div>
Flash and Windows targets for NME seem to trigger different key codes for ascii characters. I ended up writing special handling code to convert all key codes to uppercase so each platform interpreted results consistently.<br /><b><br /></b></div>
<div>
<b>Mouse Handling</b></div>
<div>
<br /></div>
<div>
I ran into issues getting any mouse scroll wheel events to fire on Windows. I didn't pursue this very far, though, as I could work around it, and had bigger fish to fry.</div>
<div>
<br /></div>
<div>
<b>Extensibility</b></div>
<div>
<br /></div>
<div>
There were one or two instances where I started digging into NME source code itself, to see if I could work around problems I was having (such as enabling unexposed TextField properties). However, I was unable to navigate the matryoshka-doll-like layers of code to the source I needed.</div>
<div>
<br /></div>
<div>
Specifically, I was trying to expose a field in TextField, like caretIndex, so I could hack together a copy/paste stopgap on Windows. I decided to look at how existing fields were exposed, like .numLines. When I dug into the TextField.hx class, I found that Windows targets used the neash.text.TextField implementation.</div>
<div>
<br /></div>
<div>
However, the neash.text.TextField code redirected .numLines to:</div>
<div>
Loader.load("nme_text_field_get_num_lines", 1);</div>
<div>
<br /></div>
<div>
Loader.load uses cpp.Lib on Windows targets, so looking into that, I found that cpp.Lib.load used:</div>
<div>
__global__.__loadprim(lib,prim,nargs);</div>
<div>
<br /></div>
<div>
which was loading a primitive from a DLL. I wasn't clear where to go from here, though. It seemed like there should be some sort of table or Rosetta stone for mapping strings like "nme_text_field_get_num_lines" to a block of code somewhere, but no amount of searching seemed to reveal it.</div>
<div>
<br /></div>
<div>
I was pretty frustrated by my inability to get to the bottom of that question. And ultimately, had to switch targets to Flash to get the TextField behavior I needed. Though, that in itself is a pretty strong endorsement for Haxe NME.</div>
<div>
<br /></div>
<div>
<b>Cross-Platform</b></div>
<div>
<br /></div>
<div>
Being able to change a drop-down from "Windows" to "Flash" was almost all that I needed to do to get around the aforementioned TextField issues. That, and some tweaking in the way I accessed dynamically-named fields of a Dynamic object, had me well on my way to continuing work with almost no interruption. Literally, a couple weeks' worth of development on the Windows target was ported to the Flash target within about two hours. Pretty impressive.</div>
<div>
<b><br /></b></div>
<div>
<b>Updates</b></div>
<div>
<br /></div>
<div>
It's also important to point out that NME is updating fairly frequently. Even in the couple months between the version of NME I first downloaded, and one I recently downloaded, there was significant improvement. In fact, several bugs I was encountering were solved by an update to NME 3,4,4.</div>
<div>
<br /></div>
<div>
<b>Conclusion</b></div>
<div>
<br /></div>
<div>
I'm still pretty impressed with what I'm finding in NME. It has gaps here and there, and it can be tricky to find support. But I was surprised how far I could take it, given it's relative infancy compared to platforms like Flash. I suspect that if I were making a purely game-like app, without the need for text editing, it would do all that I need without issue. I think that the only feature NEO Scavenger uses which I've not yet tested is the audio playback.<br />
Hopefully, some of the info I've shared above helps other intrepid developers in overcoming similar obstacles. And it'd be great if this info was enough to embolden a few new developers to put Haxe NME through its paces. I truly feel that it's a powerful tool, and just a few more concurrent users could be all that's needed to sustain further growth.<br />
<br />
By the way, if you're interested in a more chronological account of my explorations, you can find out more about the editor overhaul in these Blue Bottle Games posts:<br />
<br />
<ul>
<li><a href="http://bluebottlegames.com/main/node/1086" target="_blank">Encounter Editor Overhaul</a></li>
<li><a href="http://bluebottlegames.com/main/node/1135" target="_blank">New Editor Progress</a></li>
<li><a href="http://bluebottlegames.com/main/node/1181" target="_blank">New Editor: UI Widgets</a></li>
<li><a href="http://bluebottlegames.com/main/node/1189" target="_blank">Encounter Editor: UI Almost Ready</a></li>
<li><a href="http://bluebottlegames.com/main/node/1197" target="_blank">It's Alive! (Almost)</a></li>
<li><a href="http://bluebottlegames.com/main/node/1200" target="_blank">Encounter Editor Running, Plot Work Resumed</a></li>
</ul>
<br />
Thanks for reading, and see you next time!</div>
Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comtag:blogger.com,1999:blog-3993525046698649887.post-36143897880055926052012-11-05T13:39:00.001-08:002012-11-05T13:39:30.383-08:00Haxe NME: First ImpressionsI've been talking a lot of business the past few months, so I thought I'd mix things up a bit this time. Today, we'll talk about Haxe NME.<br />
<br />
<b>What is Haxe NME?</b><br />
<br />
Haxe NME is two things, really, so let's start with the first part: Haxe.<br />
<br />
Haxe (<a href="http://haxe.org/doc/intro" target="_blank">officially</a> pronounced "hex," though I tend to pronounce it <a href="http://www.youtube.com/watch?v=wTDUuBWGtpU" target="_blank">differently</a>), is a multi-platform, open source, programming language. Using a syntax similar to Java or Actionscript 3 (AS3), one can compile applications to a wide range of platforms, including:<br />
<br />
<ul>
<li>C++</li>
<li>C#</li>
<li>JavaScript</li>
<li>Flash</li>
<li>PHP</li>
</ul>
<div>
This, in turn, means that one set of source code can ostensibly be made to work on PCs, browser plug-ins, devices running iOS, Android, Windows Mobile, and webOS.</div>
<div>
<br /></div>
<div>
You might be thinking, "big deal. Java and Flash/Air already make that possible." For the most part, that's true. One difference, however, is that Haxe compiles into other <i>languages</i>, including ones required to make <i>native</i> applications. Java and Flash applications, on the other hand, are interpreted through a virtual machine (VM) on their target platforms.</div>
<div>
<br /></div>
<div>
With Haxe, one can write a single set of code for multiple platforms. And in theory, applications developed in Haxe have the ability to run much faster than VM-based applications like Flash, Java, and Air. It also means that Haxe apps can access features unavailable to some VMs, such as local file access and hardware acceleration.</div>
<div>
<br /></div>
<div>
<b>And NME? What's that?</b></div>
<div>
<br /></div>
<div>
NME stands for Neko Media Engine, and is a library/framework for use in Haxe. It provides an API that looks a lot like Flash's (literally, many API calls are just a matter of replacing <i>import flash.display.*</i> with <i>import nme.display.*)</i>, which can be used to deploy native apps to Windows, Linux, Mac, iOS, Android, webOS, BlackBerry, and Flash Player.</div>
<div>
<br /></div>
<div>
Haxe generates C++, which NME then compiles into the desired target platform's native code. The output applications use native components, such as OpenGL, libjpeg, curl, etc, to provide performance and features like what one would expect from writing platform-specific applications.</div>
<div>
<br /></div>
<div>
In a nutshell, it purports to generate blazing fast native apps on nearly every platform, using a familiar, AS3-like code and API. Even the compiling is simplified, requiring only that the user specify "flash," "windows," "ios," or any of the other target keywords to generate the desired native application.</div>
<div>
<br /></div>
<div>
<b>Wait, are you porting NEO Scavenger to Haxe NME?</b></div>
<div>
<br /></div>
<div>
No, not yet. It's true that there would be performance benefits, and it would open up some handy local file access, modding, and other neat features. But switching technology mid-stride would be a pretty big risk. It would be a large undertaking, cause lots of down time, and there's no guarantee it would work.</div>
<div>
<br /></div>
<div>
However, NEO Scavenger's encounter editor is in need of an overhaul. Currently, it's built into the game, so that it can piggyback on various data-loading features already in place. That worked fine for the first couple hundred encounter nodes. It was slow to move things around, but I could mostly edit what I needed to.</div>
<div>
<br /></div>
<div>
With the recent influx of random encounters, though, there are over 750 nodes being displayed. And with each of those having UI elements to display, Flash just can't handle it. In fact, Flash can't even finish loading the data before it times out. I could rewrite the data loader to segment across frames (as I recently did for the save game load method), but I'm pretty sure that even after loading, the editor will be unusably slow.</div>
<div>
<br /></div>
<div>
So the editor is going to require an overhaul, one way or the other. I could do that in Flash, but I'll definitely be limited by rendering speed. Haxe NME should be faster, provided I can port things over. And it'll give me a better idea of whether it's worth building anything else in Haxe NME.</div>
<div>
<br /></div>
<div>
I've given myself a time box of a few days, in order to determine whether it's worth proceeding, or backing off and returning to Flash for the editor changes. So far, I've made enough progress over two days to encourage further work in the Haxe NME direction. Though, it wasn't without it's obstacles.</div>
<div>
<br /></div>
<div>
<b>Transitioning from AS3 to Haxe</b></div>
<div>
<br /></div>
<div>
I'll start with an unqualified success: syntax familiarity. Transitioning from AS3 to Haxe has been trivial. There are <a href="http://www.haxenme.org/developers/documentation/actionscript-developers/" target="_blank">some differences</a>, but by far, the syntax feels very familiar. A large amount of the differences can be done with a search and replace, and the ones that can't weren't hard to figure out.</div>
<div>
<br /></div>
<div>
In fact, if you're using Haxe to target the Flash platform, that's about all you have to worry about. All of the API calls one used in AS3 are pretty much the same in Haxe. I was able to get a project compiling and debugging in FlashDevelop with about the same level of effort as a regular AS3 project.</div>
<div>
<br /></div>
<div>
<b>Write Once, Run Anywhere?</b></div>
<div>
<br /></div>
<div>
Unfortunately, compiling code for non-Flash targets wasn't as easy as advertised.</div>
<div>
<br /></div>
<div>
For really basic applications (ones that use very few API calls outside of flash.display), worked well-enough. My editor used some drawing functions to make arrows and boxes, and these were well-supported. In fact, I was so emboldened by my first test app that I copied the editor's source over from AS3 wholesale, and started porting code. It was when I started delving into non-display libraries that things got ugly.</div>
<div>
<br /></div>
<div>
NME lacks a UI library like Flash's, so that was my first hang-up. There are some UI elements built-in, such as simple buttons. But complex items, such as drop-down boxes, radio buttons, and scrollbars were missing. Some effort has gone into UI libraries for <a href="http://haxe.org/doc/libraries/gui" target="_blank">Haxe</a> and <a href="http://www.joshuagranick.com/blog/2012/01/03/7-useful-utilities-for-your-next-application/" target="_blank">NME</a>, but they're not as smooth to use nor as complete as what AS3 users will be used to.</div>
<div>
<br /></div>
<div>
<a href="http://code.google.com/p/waxe/" target="_blank">Waxe</a> looked like a pretty good place to start, but I quickly became stuck. For one thing, it seemed to be at odds with the NME way of displaying things, so it wasn't clear how to get them to play nice. The documentation was pretty sparse, too.</div>
<div>
<br /></div>
<div>
<a href="http://www.joshuagranick.com/blog/2012/01/03/7-useful-utilities-for-your-next-application/" target="_blank">Joshua Granick's NME GUI library</a> turned out to be a better fit, and covered much of what I'd need. However, it was still (apparently) missing a drop-down box, which was the UI item that I was currently stuck on. I decided I could probably make something work using basic UI building blocks, so put UI on hold while I vetted some other features.</div>
<div>
<br /></div>
<div>
NEO Scavenger uses some Flash URL libraries to request data from a server, and populates some tables in memory for running the game. The editor piggybacks on this code, in order to display encounters, their images, game items that connect them, and some other bits.</div>
<div>
<br /></div>
<div>
Unfortunately, compiling a C++/Windows target didn't seem to work, even though the Flash target did. And this is where we encounter a potential deal-breaker.</div>
<div>
<br /></div>
<div>
<b>IDE Debugger Support</b></div>
<div>
<br /></div>
<div>
While the debugging process was identical to Flash development when deploying a Flash build, this was not so when trying the Windows target. There is no support yet for FlashDevelop IDE debugging a Haxe C++ target. There is a <a href="http://gamehaxe.com/2012/09/14/hxcpp-built-in-debugging/" target="_blank">C++ debugger</a>, but that is a command-line tool. One can set breakpoints in code, and it will pause, but then the user must interact with the debugger through a console.</div>
<div>
<br /></div>
<div>
One could also use on-screen text or trace, but as someone who suffered Maxscript's lack of IDE debugging for nearly seven years, I wasn't happy about the prospect of tracing my way out of bugs.</div>
<div>
<br /></div>
<div>
One thing I haven't yet tried is compiling the C++ output in Visual Studio, and debugging from there. Theoretically, that seems like it should work. The down side, however, is that I'm debugging C++, not the more user-friendly Haxe syntax. And worse, I'm debugging a target, not the source.</div>
<div>
<br /></div>
<div>
I looked around for quite a while, trying to figure out if I was missing something. Maybe another IDE was a better fit? Maybe I just didn't install hxcpp correctly?</div>
<div>
<br /></div>
<div>
In the end, I turned up little information to guide me through this problem. And that may be the other major flaw in Haxe and NME.</div>
<div>
<br /></div>
<div>
<b>Documentation</b></div>
<div>
<br /></div>
<div>
Haxe and NME have documentation, first of all. I don't want to make it sound like you walk away from the Haxe and NME websites with a box of tools and a noose.</div>
<div>
<br /></div>
<div>
In fact, Haxe has <a href="http://haxe.org/doc" target="_blank">pretty extensive documentation</a>, if we're being fair. Quite a few of my questions, particularly about object types, syntax, and language features were all answered there. And there is a <a href="http://gamehaxe.com/" target="_blank">growing</a> <a href="http://www.joshuagranick.com/blog/" target="_blank">amount</a> NME documentation out there, too.</div>
<div>
<br /></div>
<div>
However, if you're a Flash developer, the current state of Haxe NME support is going to be a cold splash of water. Forget about typing a few keywords into Google and getting <a href="http://www.google.ca/search?q=as3+game+tutorial&oq=as3+game+tutorial" target="_blank">reams of documentation and examples</a> to choose from. Worse, if you have a really specific question in mind, there's nowhere near the same chances of finding the answer posted someplace, <a href="http://www.google.ca/#q=as3+mp3+gapless" target="_blank">unlike one does with AS3</a>.</div>
<div>
<br /></div>
<div>
As I struggled with getting the nme.net API to work on the Windows target, I had to turn to a mix of old and new skills to find my answer. </div>
<div>
<br /></div>
<div>
The "old" part involved brushing the dust off my Maxscript debugging skills: tracing output, and displaying debug variables on-screen. It's clunky, and trace often doesn't output anything until the Windows target exits, but at least it's possible to tweak and get some feedback without having to jump between IDEs.</div>
<div>
<br /></div>
<div>
The "new" skill was learning to seek out answers to library and API issues in non-AS3 (non-Haxe, even) sources. When a URL request failed, I could dig up useful help around the web on libcurl, the library NME wraps in a Flash-like API for URL tools. It gave me more insight into why my specific case was failing. I could see, for example, what C++ devs would do to fix their issues, and then adapt those solutions to NME.</div>
<div>
<br /></div>
<div>
Based on the state of C++ debugging and documentation, I was almost ready to give up on Haxe NME, relegating it to the realm of "would be nice if it worked." However, pushing through those issues has given me some new-found courage. Enough to consider continuing my investigation, rather than retreating to AS3.</div>
<div>
<br /></div>
<div>
<b>Haxe NME: The Verdict</b></div>
<div>
<br /></div>
<div>
Is it worth it? Is porting to or building in Haxe NME worth doing? That'll depend a lot on your aversity to risk. If your already using AS3, can handle some uncertainty, and have wiggle room for learning a new system, the benefits of speed, portability, and more features are quite tempting.</div>
<div>
<br /></div>
<div>
If, on the other hand, you need a predictable timeline, or reliable support, you may want to wait. Haxe NME sidesteps much of the cost of learning C++, but its relative youth means you'll be on your own from time-to-time.</div>
<div>
<br /></div>
<div>
For me, I've seen enough potential to warrant further investigation with the editor subset of NEO Scavenger. I was able to overcome the major obstacles so far, so I feel that I will be able to continue progress in the face of future issues. And in the worst case, I only stand to lose whatever time I am willing to devote to it. I can always return to AS3 if all else fails.</div>
<div>
<br /></div>
<div>
I'm interested to see how Haxe NME pans out. Currently, it stands in a sort of middle ground between Flash and Unity3D. On the Flash end of the scale, one has accessibility of development, wide consumer deployment, and cheap-to-free costs, but more limited output paths and performance. On the Unity3D end, one has fast and powerful capabilities on a very wide range of target platforms, but significant costs in terms of software and revenue share.</div>
<div>
<br /></div>
<div>
Haxe NME seems to offer the best of both at no cost, but does not yet have the community support and tools of the other two packages. Fortunately, that situation seems poised only to improve over time. If more people decide, like me, to give it a shot, we may see that community support reach a tipping point.</div>
<div>
<br /></div>
<div>
Interesting times may be ahead!</div>
Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comtag:blogger.com,1999:blog-3993525046698649887.post-50107913048732809472012-10-22T13:44:00.000-07:002012-10-22T13:44:20.116-07:00Thoughts on Game Design and VisionA few players have recently expressed some frustrations with NEO Scavenger, which brought up some questions about core design. In particular, the concerns centered around the combination of permadeath, save games, and randomness.<br />
<br />
<b>Game Design</b><br />
<br />
The frustrations stem from the game ending, irrevocably, as a result of chance in-game hardships. I think most players would agree that investing significant time into an RPG character, and then losing it to a die roll, is a real buzz-kill. Some will sigh and re-roll a character, others will walk away for a while, and still others may rage quit, never to return. Whichever is the case, such an occurrence in-game is poor game design. Instead of the player suffering a penalty due to poor choices, they suffered due to bad luck.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-g1TfZ2jlyMA/UIWEYJaV5CI/AAAAAAAAAUQ/HrTtGzQLPOk/s1600/screenshot-2012-10-22b.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="http://3.bp.blogspot.com/-g1TfZ2jlyMA/UIWEYJaV5CI/AAAAAAAAAUQ/HrTtGzQLPOk/s400/screenshot-2012-10-22b.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">A powerful storytelling tool. Also, sucks when it happens to you.</td></tr>
</tbody></table>
In defining NEO Scavenger, I eventually settled on the idea that I was making a single player computer RPG that could simulate many of the experiences had in a pen and paper RPG session. And many of the game's systems are successes in that regard. For example:<br />
<br />
<ol>
<li>players can customize their character</li>
<li>there are multiple ways to use the player's skills and items meaningfully</li>
<li>there are elements of strategy and tactics</li>
<li>there are setting and plot elements to discover</li>
<li>there are options to role-play moral choices. </li>
</ol>
With the addition of a permadeath save feature, it's even possible to save progress, walk away, and return later: just like one does in a role playing session with friends.<br />
<br />
One thing NEO Scavenger lacks, however, is a game master (GM). A good GM does many things in a session. From creating the story, to arbitrating the outcome of conflict and struggle, the GM is a human element which ensures the game is fun for the players. And when an unlucky die roll threatens to spoil the game, a good GM can find ways to fudge the outcome, or interpret the roll in a way that adds drama, rather than removing the fun.<br />
<br />
Unfortunately, when misfortune strikes in NEO Scavenger, there's no such GM to ensure the player is having fun. And quite often, this misfortune is game-ending. So, what can be done to fix this?<br />
<br />
<b>Save Games</b><br />
<br />
On a few occasions, players have suggested save games as a way to mitigate this problem. With checkpoints and save slots a common feature in many games these days, I can see why. It's an easy way to ensure a player's invested time is not lost. Like an insurance policy, the player can resume where their last save left off, minimizing the amount of time spent replaying existing content.<br />
<br />
However, as <a href="http://gamedevgonerogue.blogspot.ca/2012/04/sales-metrics-and-doing-right-thing.html" target="_blank">I've discussed before</a>, knowing one can just reload the game at any time robs the game of two powerful tools: fear and consequence. Thankfully, most players seem to be on board with this philosophy. They enjoy the game exactly <i>for</i> this hardcore nature, and diminishing that would diminish the game as a whole for them.<br />
<br />
(Incidentally, players who want to can still <a href="http://bluebottlegames.com/main/node/762" target="_blank">circumvent</a> the save-delete by making a copy of the save file, a la Nethack. I'm happy to leave this intact for players who really want it.)<br />
<br />
Ultimately, I want the player to have the convenience of playing when they want, but I don't want to use save games to fix what may be a design flaw in the mechanics. So if save games are just a band-aid, what's the actual problem?<br />
<br />
<b>Randomness</b><br />
<br />
From the outset, NEO Scavenger has leaned pretty hard on randomness. From random map hexes, to random combat outcomes, <span style="color: #3d85c6;">Math</span>.random() was a crutch I used liberally.<br />
<br />
Randomness isn't inherently bad, mind you. It's a pretty valuable tool for making the game interesting more than once. It can provide fresh environments to explore, a seemingly deeper AI, or random bouts of luck or misfortune to tip the scales of drama.<br />
<br />
However, <i>too</i> much randomness can be bad, especially where life and death of a player's character is concerned. If a player feels like their choices don't matter, and that the game will simply reward/punish them at random, then they won't enjoy the game. Or, at least, the type of player I'm building this game for (i.e. me) won't.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-yMlkm8n0PXg/UIWE4j48ZgI/AAAAAAAAAUY/VzHH9k8Rlpg/s1600/screenshot-2012-10-22a.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="http://3.bp.blogspot.com/-yMlkm8n0PXg/UIWE4j48ZgI/AAAAAAAAAUY/VzHH9k8Rlpg/s400/screenshot-2012-10-22a.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Note to self: These are decision-making <i>tools</i>, not decision <i>makers</i>.</td></tr>
</tbody></table>
One of NEO Scavenger's earliest failures was combat. There was a random chance of injury imposed on the player for participating. In many cases, that injury was instantly fatal.<br />
<br />
Players reported feeling that the game would randomly kill them, and felt frustrated because there were no mitigating strategies. One simply hoped for a good outcome each turn. In fact, most simply chose to ignore and avoid combat entirely, instead focusing on more rewarding and enjoyable areas of the game.<br />
<br />
Fortunately, we were able to identify this, and we found ways to make combat more interactive. We gave the player more verbs in combat, and more nouns for them to act upon.<br />
<br />
Instead of a short "overall injury" meter, the player now had multiple wound locations, blood supply, pain, and infections to manage. Instead of deciding whether to "hit" or "run," the combatants now had additional moves they could choose from, like "trip," "tackle," or "lure into trap." And the addition of situational factors, such as terrain, morale, cover, lighting, and stance, meant that the player could opt for different strategies as the battle changed.<br />
<br />
What this did was allow players to see trouble in its early stages, and gave them time to deal with it. There was still randomness, but it was relegated to minor victories and losses. The overall life and death of the player was largely in their hands, and they were left to choose when a reward was worth the sacrifice.<br />
<br />
This is still a weak point for NEO Scavenger, and effort still goes into <a href="http://bluebottlegames.com/main/node/994" target="_blank">finding ways to strengthen it</a>. I think we're on to something, though. In the linked example above, I think we've identified some tangible causes of frustration, and we're discussing in-game solutions that might help. It has a familiar ring to it: games are more fun if the player's choices determine victory or defeat, not random chance.<br />
<br />
<b>Replayability</b><br />
<br />
While randomness is surely a weak point for NEO Scavenger, there's one other area I'm keeping an eye on. That area is the replayability, especially in the early game.<br />
<br />
If a player is afraid of dying, that's a good thing, in my mind. It puts them in the right frame of mind for enjoying this game of survival, and making each decision count. It's what most players cite as their reason for enjoying NEO Scavenger, and it enhances the thrill of the game.<br />
<br />
However, some players have reported feeling turned off when dying, to the point that they do not want to play again. This might point to a separate problem, one which has more to do with the fun factor in the early portion of the game. In other words, it seems that if the early game was lots of fun, players probably wouldn't mind dying as much.<br />
<br />
For example, I'm always willing to start a new game of Civ 4/5 or Galactic Civ II. The early game is one of my favorite parts. There are even times when I'll cut an existing game short so that I can restart.<br />
<br />
Mind you, I still enjoy the mid-late games too. But I never feel disdain as my civilization starts to collapse, because I look forward to the next go.<br />
<br />
In fact, that was often the case for me with pen and paper RPGs, too. Rolling new characters was "half the fun" for me. I loved exploring other strategies, backstories, and those first few struggles to get one's feet.<br />
<br />
I'd like that to be the case for NEO Scavenger, too. So when players say that the Game Over screen gives them pause, I start to wonder if NEO Scavenger's mid-late game is the compelling part, and the start is just a barrier. Is there something really fun happening just before death, that the player is trying to get to as quickly as possible next time? Is the early game too boring or tedious?<br />
<br />
So far, when I've asked about this, the general response is that the early game is ok. And frankly, the game is probably short enough that there's little to no mid-late game anyway. Still, it's on my mind. More something I'm monitoring than actively working on.<br />
<br />
Perhaps addressing the randomness issue will have an effect on the early game? If players feel more enabled, and that their choice caused death, they'll be more engaged in the character building process? Or perhaps the character building process itself is too limited? Perhaps there's not enough encouragement to experiment?<br />
<br />
One thing at a time, I guess. Changing too much at once can muddle the results, so we'll deal with the obvious problem first. Perhaps the way forward will be more obvious after this obstacle is cleared.Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comtag:blogger.com,1999:blog-3993525046698649887.post-44254371840602070642012-10-09T15:08:00.000-07:002012-10-09T15:08:50.595-07:00NEO Scavenger's First BundleI almost forgot to write today! Must be the Thanksgiving leftovers messing with my brain :)<br />
<br />
<b>Selling NEO Scavenger via Bundle</b><br />
<br />
NEO Scavenger was included in it's first bundle last week. The bundle is called <a href="http://groupees.com/bm5" target="_blank">Be Mine 5</a> (BM5), and is put together by <a href="http://groupees.com/" target="_blank">Groupees</a>.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="allowfullscreen" frameborder="0" height="381" src="http://www.youtube.com/embed/PnTsrBuAsjU?rel=0" width="500"></iframe></div>
<br />
The general idea is that customers can buy the following 3 games for any price they want, with a minimum of $1:<br />
<br />
<ol>
<li><a href="http://bluebottlegames.com/main/node/2" target="_blank">NEO Scavenger</a></li>
<li>King's Bounty: The Legend</li>
<li>X-Blades</li>
</ol>
<div>
Spending at least $5 rewards the buyer with the following:</div>
<div>
<ol>
<li>Tropico 3</li>
<li>Oddworld: Stranger's Wrath HD</li>
<li>The Sixth Gun Vol 1 (pdf graphic novel)</li>
<li>Sharknife: Stage First (pdf graphic novel)</li>
<li>Wasteland Vol. 1: Cities in Dust (pdf graphic novel)</li>
</ol>
<div>
Every few days, they announce new goals, such as mp3 albums at 6500, or additional games at 8500 units sold.</div>
</div>
<div>
<br /></div>
<div>
Revenue is split among the developers/writers/musicians, and a 20% cut goes to a charity. In this case, it's <a href="http://www.mercycorps.org/" target="_blank">MercyCorps</a>.</div>
<div>
<br /></div>
<div>
<b>Wait, Isn't NEO Scavenger Still in Beta?</b></div>
<div>
<br /></div>
<div>
Yes, it is. I told myself I'd wait on participating in bundles until later in the dev cycle. Perhaps once it was gold and sales had died down. In fact, I gently turned down the first invite from Groupees (as I did with other bundle providers).</div>
<div>
<br /></div>
<div>
Looking over their <a href="http://groupees.com/archive" target="_blank">previous Be Mine and other bundles</a>, they regularly net about 5k units sold. 10 on more successful runs. Some even quote <a href="http://groupees.com/bemine3" target="_blank">dollar</a> <a href="http://groupees.com/bemine" target="_blank">amounts</a>, which was helpful. I estimated that an average run for them was about 5k units sold, at about $5 per unit.</div>
<div>
<br /></div>
<div>
Given the number of titles per bundle (~5 games, plus 3-8 books and albums), and that 20% goes to charity, I expected the revenue share to be pretty low. And running the numbers, it was probably on the order of a few thousand dollars.</div>
<div>
<br /></div>
<div>
Just to be clear, a few thousand dollars is nothing to shake a stick at. That pays rent, utilities, and groceries for a month or two. But I was afraid of what revenue I'd be giving up selling at pennies on the dollar. What if this saturates my market? Would I be selling myself out of future revenue for a short burst now?</div>
<div>
<br /></div>
<div>
On the other hand, that's potentially 5000 new people playing the game. Potentially 5000 new people talking about it. In exchange for the majority of revenue per copy, I get more copies sold, and more publicity. And as many indies have already figured out, raising awareness is at least half the battle.</div>
<div>
<br /></div>
<div>
"What the hell," I decided. I was pretty sure there were more than 5000 people out there who'd buy NEO Scavenger. In fact, I'd bet there could even be 50,000, judging by some voodoo napkin math when looking at <a href="http://www.playtomic.com/" target="_blank">Playtomic</a> play stats, <a href="http://steamcommunity.com/sharedfiles/filedetails/?id=92934582" target="_blank">Steam Greenlight</a> votes, sales, <a href="http://www.google.com/analytics/" target="_blank">page hits</a>, etc.</div>
<div>
<br /></div>
<div>
When Groupees got back to me, I decided to ask for more info. Their offer was about what I expected, though their sales expectations were much higher. (They originally had some lofty titles in negotiation, which probably skewed those estimates.) A few emails later, I decided to sign the contract.</div>
<div>
<br /></div>
<div>
<b>So? Was It Worth It?</b></div>
<div>
<br /></div>
<div>
As is always the case with data at Game Dev Gone Rogue, things are still developing :) </div>
<div>
<br /></div>
<div>
The BM5 bundle launched last Thursday (Oct. 4th) at midnight. The offer runs for 2 weeks, so we're coming up on the end of week 1. As of this post, the bundle is selling better than my expectations, and more in-line with their other Be Mine bundles:</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-jy2Ol2HtBsQ/UHSRvdXSTJI/AAAAAAAAATs/xem6cgGKc7g/s1600/screenshot-2012-10-09a.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="104" src="http://2.bp.blogspot.com/-jy2Ol2HtBsQ/UHSRvdXSTJI/AAAAAAAAATs/xem6cgGKc7g/s400/screenshot-2012-10-09a.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Figure 1: Not bad!</td></tr>
</tbody></table>
<div>
Of course, units can sell for as little as $1. However, the highest donation so far was $425, and with a bonus offered at $5, I expect we'll see an average price of $4-5 per bundle.</div>
<div>
<br /></div>
<div>
Web traffic also increased. The BM5 promotion roughly doubled visitors over the past few days:</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-UcvLcMPkTiY/UHSS4PRFhmI/AAAAAAAAAT0/pwGKIYdWHds/s1600/screenshot-2012-10-09b.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="123" src="http://2.bp.blogspot.com/-UcvLcMPkTiY/UHSS4PRFhmI/AAAAAAAAAT0/pwGKIYdWHds/s400/screenshot-2012-10-09b.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Figure 2: Also not bad!</td></tr>
</tbody></table>
<div>
Given that the BM5 site doesn't directly link to bluebottlegames.com, that's pretty cool. It means a lot of people are bothering to learn more about NEO Scavenger than usual.</div>
<div>
<br /></div>
<div>
"Wait, BM5 doesn't link to your product page? What gives?"</div>
<div>
<br /></div>
<div>
True, this might seem a bit counter-intuitive. Though readers who have run promotions before won't be too surprised. The point is to sell bundles, and raise money for charity, first and foremost. So it doesn't make sense for them to lead viewers to another purchase option directly. </div>
<div>
<br /></div>
<div>
However, they were good enough to direct-link to my Greenlight page. And the effects were pretty staggering:</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-Z_QuBgae5bs/UHSUplWsjmI/AAAAAAAAAT8/93WR9hrmlA0/s1600/screenshot-2012-10-09.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="http://3.bp.blogspot.com/-Z_QuBgae5bs/UHSUplWsjmI/AAAAAAAAAT8/93WR9hrmlA0/s1600/screenshot-2012-10-09.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Fligure 3: Blowing the average out of the water.</td></tr>
</tbody></table>
<div>
This is what game authors see on their Greenlight dashboard. It's a graph showing voting trends over the past week, compared to what an average top 100 game in Greenlight gets. The tiny green slivers on Wednesday and Thursday are what I'm used to seeing.</div>
<div>
<br /></div>
<div>
Following the BM5 launch, though, NEO Scavenger skyrocketed to four times the top 100 average, and is still holding at several multiples above what it used to be. What's more, NEO Scavenger ascended ranks from #71 to #62 in a matter of days. As a Greenlight promotion tool, BM5 was an unequivocal success.</div>
<div>
<br /></div>
<div>
<b>So What About Sales?</b></div>
<div>
<br /></div>
<div>
What about the thing that scared me? Did the bundle cannibalize sales?</div>
<div>
<br /></div>
<div>
So far, that's a definite "no." In fact, I'm still watching the data to see if it might actually be the reverse. Sales at Desura appear almost unchanged so far. They're the usual spike-and-trough I've been seeing in days previous to BM5.</div>
<div>
<br /></div>
<div>
Sales through bluebottlegames.com, however, have either not changed or increased (depending on the weekend effect). These direct sales fluctuate a lot, even before BM5, so it's hard to pinpoint cause and effect. What I <i>can</i> say is that the days following BM5 have been better than average, but not-quite-media-event big.</div>
<div>
<br /></div>
<div>
<b>Conclusion</b></div>
<div>
<br /></div>
<div>
Am I glad I did it? I am, actually. I won't know for some time whether there were any cannibalizing effects, and what the final tallies are in terms of sales and publicity. But it has definitely helped in the past few days, and might be just the kind of surge needed to level-up NEO Scavenger's success.</div>
<div>
<br /></div>
<div>
Plus, I was treated to some really entertaining mini-reviews of NEO Scavenger in unsuspecting players' hands:</div>
<div>
<br /></div>
<div>
<blockquote class="tr_bq">
<i>MagSlug<br />It's like a Choose Your Own Adventure book combined with the early "explore the world" phase from a Civilization game combined with that one scene from They Live where Keith David and Rowdy Roddy Piper beat each other up in an alley.</i></blockquote>
</div>
<div>
or this pair:<br />
<br />
<blockquote class="tr_bq">
<i>Robert Miller<br />Who cares? As an indie bundle addict with hundreds of steam games I've never touched, I can say that Neo Scavenger is by far my favourite game in this bundle. It's tons of fun, even if it is still in Alpha and incredibly difficult.</i></blockquote>
</div>
<blockquote class="tr_bq">
<i>nickelpat<br />Robert: I feel the same way. I bought it for Stranger's Wrath, but thought "Ah, what the hell, might as well check out this non-Steam piece of crap game." Yeah... still playing it.</i></blockquote>
<div>
Encouragement doesn't pay the bills, but it definitely feeds the soul :)<br />
<br />
Every indie game and studio needs different things, so this isn't a one-size-fits-all case. But it's yet another valuable tool to consider when growing a brand. There's no doubt that bundles are a fast way to ratchet up awareness of your game. And it gets you a small boost in income.</div>
<div>
<br /></div>
<div>
On the flip side, it's sales at a fraction of the revenue you're probably used to. Especially if you sell your game in the double-digit dollar range.</div>
<div>
<br /></div>
<div>
I'll probably shy away from doing more bundles in the near future, at least until NEO Scavenger gets further along. I have a feeling that even in successful cases like this one, I would see diminishing returns from overusing the bundle approach. I'd like to try out some other tools before coming back to bundles.</div>
<div>
<br /></div>
<div>
However, I'll definitely be looking into bundles for later in the NEO Scavenger sales cycle, as well as for future titles.</div>
Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comtag:blogger.com,1999:blog-3993525046698649887.post-84292313797205483182012-09-24T11:50:00.001-07:002012-09-24T11:50:54.501-07:00The Week of Hardware, and Sales Follow-upI bought my first Mac last week.<br />
<br />
<b>Gone Rogue Going Mac</b><br />
<br />
I've been a PC user since the early 90s. Before then, I owned an Atari ST (and an 800, prior to that). My dad occasionally brought home his work IBM, and my friends all had IBMs (or compatibles like the Franklin), so I had some exposure even when I was an Atari owner. And my schools always seemed to have Macs/Apples, so I've had my fair share of Mac exposure as well. But I've leaned in the Windows direction for decades.<br />
<br />
However, once <a href="http://bluebottlegames.com/main/node/21" target="_blank">NEO Scavenger</a> was released on <a href="http://www.desura.com/games/neo-scavenger" target="_blank">Desura</a>, I was on the hook to make good on my multi-platform promises. Flash had served me well to-date, but Desura doesn't sell Flash games. It sells downloadable applications. So it was time to accelerate plans to acquire some Mac hardware.<br />
<br />
Deciding on which Mac to buy took a bit of research. Any old Mac would probably do for creating Flash projectors. However, if I'm going to drop some cash on a Mac, I figure I should look into what else it could do. iOS development, for example, <a href="https://developer.apple.com/support/ios/ios-dev-center.html" target="_blank">requires an Intel-based Mac running OS X Snow Leopard or later</a>. And since my Windows laptop is from 2001, and chugs even when running Lubuntu, maybe I can dual-boot the Mac as my Linux box.<br />
<br />
Ok, so Snow Leopard and up, Intel-based Macs. My search begins.<br />
<br />
First of all, <a href="http://store.apple.com/ca/browse/home/shop_mac" target="_blank">new Macs</a> are expensive. The cheapest new Mac is the Mac mini, starting at $600. And that's without any display nor input devices (I'd need a KVM or similar setup to share my current PC's monitor and inputs). The next cheapest option for a new Mac is $1000+ for a MacBook Air.<br />
<br />
So what about <a href="http://store.apple.com/ca/browse/home/specialdeals/mac" target="_blank">Apple's Certified Refurbished</a> program? Surprisingly, that's not much better. The minimum price there is $700 for a MacBook Air. Granted, that's cheaper than a new Air, but for an indie on a budget, who just needs a beater to generate Mac binaries, that's still too much. I'm thinking sub-$500.<br />
<br />
Off to <a href="http://www.ebay.ca/" target="_blank">eBay</a>, <a href="http://www.kijiji.ca/" target="_blank">kijiji</a>, and <a href="http://www.craigslist.org/about/sites" target="_blank">craiglist</a>. A ha, <a href="http://www.ebay.ca/sch/i.html?&_nkw=macbook&_sacat=0" target="_blank">that's more like it</a>. MacBooks in the sub-$500 ballpark. There are even some Pro models in there. In the end, this is the route I take. And for $500, including shipping, here's what I got:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-v_0JMfOxhRY/UGCYDdvOjMI/AAAAAAAAATQ/Ic4w-6gT4bY/s1600/screenshot-2012-09-24.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="http://4.bp.blogspot.com/-v_0JMfOxhRY/UGCYDdvOjMI/AAAAAAAAATQ/Ic4w-6gT4bY/s400/screenshot-2012-09-24.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Dan's first Mac: a 2008 model MacBook Pro</td></tr>
</tbody></table>
As you can see, it's been around the block once or twice. Maybe even fell onto the curb. But it runs fine. The dent is cosmetic, the "D" key needs re-seating, and apart from some scuff marks and an aging battery, it's in good shape. A few days of finagling later, it even dual-boots OSX and Lubuntu.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
So what do I think? I'm still pretty new to the world of Macs, so it's too soon to be sure. But here are some initial impressions:<br />
<br />
<b>Pros</b><br />
<br />
<ul>
<li><b>Slick Design</b> - Without a doubt, this is a very well-designed piece of hardware. At every turn, I can picture Steve Jobs hovering over the engineer's shoulder, pushing for uncompromising perfectionism. The way it latches shut, the back-lit keys, the machined parts and shape of it...it's an industrial designer's dream.</li>
<li><b>Everything Works</b> - Probably related to the above, it just works. There are no missing drivers, no features that sometimes fall short. Everything you expect it to do, it just does, out of the box.</li>
<li><b>UI</b> - It takes some getting used to, coming from the PC world, but the UI is well-designed. The trackpad scrolling, accessibility options, brightness control...I was impressed at what control I had over these little things.</li>
</ul>
<br />
<b>Cons</b><br />
<br />
<ul>
<li><b>Expensive</b> - One could already guess this from the previous paragraphs. Macs are downright pricey. Even used ones seem to suffer from the inflation of the Mac brand.</li>
<li><b>Closed Ecosystem</b> - I don't like the "closed" feel of the Mac world. They're harder to upgrade, they have proprietary connectors for everything, they can have <a href="http://www.ipodsdirtysecret.com/message.html" target="_blank">unfriendly customer relations</a>, and they seem to have an <a href="http://dottech.org/18890/four-ways-to-access-your-idevices-iphoneipadipod-touch-file-system-from-your-computer/" target="_blank">inordinate fear of users accessing their own data</a>. Did you ever have a friend who's parents were OCD about decorating? You know, like everything was wicker and crochet, tables had doilies on them, and the bathroom towels are not meant to be used? This is what using a Mac feels like to me.</li>
<li><b>UI</b> - As much as I praise the UI above, it has its quirks too. Like the right-click. Ok, I get it. Macs are different. They don't need a right mouse button. Except that's not true. Context menus are everywhere in OSX, and I have to double-finger-tap my trackpad to get at them. Why is this? And what's with the app install process? Is it really more user-friendly to download, then mount an image, then drag an app from the left side of a pop-up to the right, instead of double-clicking a file and following prompts?</li>
</ul>
<div>
Like I said, I have a lot to learn when it comes to Macs. So far, though, I like it overall. It won't replace my PC anytime soon, but I enjoy playing with it. And it finally means I can deploy Mac and Linux builds!</div>
<div>
<br /></div>
<div>
<b>Why You Shouldn't Deploy Mac and Linux Builds</b></div>
<div>
<br /></div>
<div>
Ok, that's not really what I'm saying. But I want to caution indies out there who are gung-ho about multi-platform. </div>
<div>
<br /></div>
<div>
When I was only deploying Flash versions to <a href="http://bluebottlegames.com/main/node/2" target="_blank">bluebottlegames.com</a>, a build was a matter of maybe 30 minutes. It involved changing some compiler constants, switching from debug to release, compiling, uploading, and maybe doing those steps a second time for the demo as well.</div>
<div>
<br /></div>
<div>
Now that I have downloadable versions, the build and upload process takes <b>hours</b>. It's literally most of an afternoon to get all SWF versions compiled (Flash beta, demo, and downloadable beta), then create projectors for all three platforms, then create the Desura MCF versions (their build management system), then upload them all.</div>
<div>
<br /></div>
<div>
So if you're thinking of distributing multi-platform, either be prepared for build headaches, or find a way to build more efficiently than I do.</div>
<div>
<br /></div>
<div>
You could also just wait until later in the dev cycle to release to the public, but I wouldn't. Having NEO Scavenger out there and in the hands of actual players has been an amazing help in shaping the game that we have today. Like the Agile philosophy of always having a working build, this goes a step further to put it in the hands of the end user. Sure, there are sometimes speed bumps along the road, but I wouldn't do it any other way.</div>
<div>
<br /></div>
<div>
<b>Other Hardware Fun</b></div>
<div>
<br /></div>
<div>
Also, within a few days of getting my MacBook Pro, this happened:</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-_shjioF8FJY/UGCX6e6srfI/AAAAAAAAATI/Xy43hDtFdc4/s1600/screenshot-2012-09-13.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="300" src="http://3.bp.blogspot.com/-_shjioF8FJY/UGCX6e6srfI/AAAAAAAAATI/Xy43hDtFdc4/s400/screenshot-2012-09-13.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Bench testing my PC for faults.</td></tr>
</tbody></table>
<div>
My video card went kaput. I got some fuzzy blue dots, then everything froze. Subsequent reboots yielded strange ascii characters in the BIOS, then eventually, nothing.</div>
<div>
<br /></div>
<div>
It took about a full day of testing and research to narrow it down to the video card. It was fairly obvious, based on symptoms, but I wanted to be sure before I made the trip for new parts in town.</div>
<div>
<br /></div>
<div>
And better yet, my primary HDD started clicking within a day of getting the new video card. I spent almost another half day checking backup data, and probing the HDDs for faults. Both checkdisk reports came back ok, and the clicking has since subsided. But I have a new 500GB HDD sitting in anti-static paper on my desk, just in case.</div>
<div>
<br /></div>
<div>
As I said to readers at <a href="http://bluebottlegames.com/main/node/834" target="_blank">bluebottlegames.com</a>, it's like I drew a card in a board game. "Hardware failure! Pay $200."</div>
<div>
<br /></div>
<div>
It was an expensive week, let me tell you. But it's good to have the PC running again, and to know that my target platforms are covered now.</div>
<div>
<br /></div>
<div>
<b>Desura and Greenlight Follow-up</b></div>
<div>
<br /></div>
<div>
Last week, I talked about the <a href="http://gamedevgonerogue.blogspot.ca/2012/09/the-effects-of-desura-and-steam.html" target="_blank">effects of Desura and Greenlight on revenue</a>. Before I depart today, I want to provide some follow-up data. Here's how things are looking, two weeks later:</div>
<div>
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-8GZeH5-sd9o/UGCYEEJf3II/AAAAAAAAATY/GeeayH4zQbQ/s1600/screenshot-2012-09-24a.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="246" src="http://3.bp.blogspot.com/-8GZeH5-sd9o/UGCYEEJf3II/AAAAAAAAATY/GeeayH4zQbQ/s400/screenshot-2012-09-24a.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Daily gross revenue in USD since launch.</td></tr>
</tbody></table>
<div>
The main thing we're looking at here is at the far right. Not surprisingly, the Desura and Greenlight launches produced a short-lived spike. I expected as much, so I'm not too disappointed.</div>
<div>
<br /></div>
<div>
However, the thing I was keen to see was how this spike differed, if at all, from the initial launch spike. Interestingly, I think the spike has about the same width as the March launch spike. It's not as high, but it lasts about the same amount of time: about 2 weeks.</div>
<div>
<br /></div>
<div>
Both spikes have tails beyond 2 weeks, of course, but that's an interesting figure to keep in mind if you're launching or making a big announcement. Expect roughly 2 weeks of activity to result from a PR push.</div>
<div>
<br /></div>
<div>
I'm also interested in seeing how long tail sales are impacted by the additional Desura channel and Greenlight PR. It's a bit soon to tell for sure, but so far, there's an additive effect. It's not quite enough to tread water, financially, but it helps.</div>
<div>
<br /></div>
<div>
That about does it for this post. Maybe someday I can create another sales spike, and do a follow-up with Android/iOS ;)</div>
Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comtag:blogger.com,1999:blog-3993525046698649887.post-50997267398046270172012-09-10T13:30:00.001-07:002012-09-10T13:30:25.226-07:00The Effects of Desura and Steam GreenlightIt's been about 5 months since I last <a href="http://gamedevgonerogue.blogspot.ca/2012/04/sales-metrics-and-doing-right-thing.html" target="_blank">spoke about NEO Scavenger sales</a>. The <a href="http://bluebottlegames.com/main/node/21" target="_blank">playable demo</a> and <a href="http://bluebottlegames.com/main/node/5" target="_blank">beta</a> are both pretty advanced, compared to the game that released in March. And with its recent debut on <a href="http://www.desura.com/games/neo-scavenger" target="_blank">Desura</a> and <a href="http://steamcommunity.com/sharedfiles/filedetails/?id=92934582" target="_blank">Steam Greenlight</a>, it's starting to get a lot more attention.<br />
<br />
Since I've seen some folks discussing the impact of Greenlight on indie games, I thought I might share some (thinly veiled) data to illustrate my experiences.<br />
<br />
<b>How is NEO Scavenger Doing?</b><br />
<br />
First up, how is NEO Scavenger doing? And for that matter, Blue Bottle Games in general?<br />
<br />
NEO Scavenger development started <a href="http://gamedevgonerogue.blogspot.ca/2011/05/day-one-as-indie.html" target="_blank">way back in May 2011</a>. It was almost a year before I was able to <a href="http://gamedevgonerogue.blogspot.ca/2012/03/blue-bottle-games-now-launching.html" target="_blank">launch the beta</a>, opening it up for pre-sale. Here's a snapshot of what that means, in terms of finances:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-MWYpkF59k4A/UE4m2KLfR2I/AAAAAAAAAR8/5Q7LgevX_Ww/s1600/screenshot-2012-09-10a.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="245" src="http://1.bp.blogspot.com/-MWYpkF59k4A/UE4m2KLfR2I/AAAAAAAAAR8/5Q7LgevX_Ww/s400/screenshot-2012-09-10a.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Figure 1: Daily gross revenue in USD since development started.</td></tr>
</tbody></table>
There are some interesting spikes in there, but the large majority of the past year and a half are low-to-zero income. That purple line represents my <a href="http://gamedevgonerogue.blogspot.ca/2012/05/frugal-indie.html">cost of living</a>: paying rent, buying groceries, utilities, etc. It's missing a few spikes of its own, for things like software licenses, service fees, hardware, and such, so the cost is slightly higher than depicted. But it's good enough for comparison.<br />
<br />
How do the peaks and troughs compare?<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-9srOTHblW1M/UE4n8f-gziI/AAAAAAAAASE/YYtgO2q8mtM/s1600/screenshot-2012-09-10b.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="192" src="http://4.bp.blogspot.com/-9srOTHblW1M/UE4n8f-gziI/AAAAAAAAASE/YYtgO2q8mtM/s320/screenshot-2012-09-10b.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Figure 2: Revenue vs. Cost to-date</td></tr>
</tbody></table>
Unfavorably, I guess you'd say. We're still a long way from recovering our investment. However, NEO Scavenger has been selling more than cost of living during the past week. And while it's likely to be a spike similar to the first one (visible in Figure 1, around March 2012), it's possible that the additional sales channel of Desura means the subsequent trough may be closer to break-even cost of living per day.<br />
<br />
<b>Did Greenlight Affect NEO Scavenger Sales?</b><br />
<br />
Yes. However, it's hard to say by how much. Here's a better look at the lead-up to Greenlight launch:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-G9bWEVB2YEI/UE4shO-QHaI/AAAAAAAAASc/9xGy3hUvevo/s1600/screenshot-2012-09-10c.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="246" src="http://3.bp.blogspot.com/-G9bWEVB2YEI/UE4shO-QHaI/AAAAAAAAASc/9xGy3hUvevo/s400/screenshot-2012-09-10c.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Figure 3: Daily gross revenue in USD since August 16, 2012</td></tr>
</tbody></table>
Prior to August 16th, I hadn't done too much to promote NEO Scavenger. I primarily published news on bluebottlegames.com, which folks either followed directly, or read about on their forum of choice (primarily <a href="http://forums.somethingawful.com/showthread.php?threadid=3472816&userid=0&perpage=40&pagenumber=1">Something Awful forums</a>).<br />
<br />
However, on August 16th, I started integrating with <a href="http://www.indiedb.com/games/neo-scavenger">IndieDB</a> and <a href="http://www.moddb.com/games/neo-scavenger">ModDB</a>, and publishing news there as well. Here are some details on the lettered annotations in Figure 3:<br /><br />A - Launched on IndieDB.com/ModDB.com. First news item published, and product page started.<br />B - Launched on Steam Greenlight.<br />
C - Launched on Desura, and offered for sale.<br /><br />
As you can see, the IndieDB news was a pretty subtle effect. There were a few postings in the following days, and it started to create momentum, but it was hard to distinguish from the regular sales behavior.<br />
<br />
Steam Greenlight caused a pretty significant surge, however. Over that whole weekend, awareness increased, and sales with it. It was a welcome financial shot in the arm.<br />
<br />
Desura also caused a boost in awareness and sales. It's hard to tell if it's as great as Greenlight was, but it definitely caused its own spike. And what's more, Desura sales seem to have surpassed my own website's performance.<br />
<br />
<b>What's the Big Picture?</b><br />
<br />
Figure 3 shows us some interesting data points, but what do they mean? Well, look back at Figure 1. Better yet, here's a zoomed-in version of it:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-BTMqWDhKUp4/UE4pF-NXtAI/AAAAAAAAASM/vzf5gDinljU/s1600/screenshot-2012-09-10.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="246" src="http://2.bp.blogspot.com/-BTMqWDhKUp4/UE4pF-NXtAI/AAAAAAAAASM/vzf5gDinljU/s400/screenshot-2012-09-10.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Figure 4: Daily gross revenue in USD since launch.</td></tr>
</tbody></table>
Greenlight was good, but take a look at that spike in March. What was that? Looking over Google Analytics, that month's biggest contributors were:<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-dk2Vk3N_cK4/UE4vUEJRPAI/AAAAAAAAASs/m8Sc4pvcfww/s1600/screenshot-2012-09-10d.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="152" src="http://3.bp.blogspot.com/-dk2Vk3N_cK4/UE4vUEJRPAI/AAAAAAAAASs/m8Sc4pvcfww/s400/screenshot-2012-09-10d.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Figure 5: Top referrers to bluebottlegames.com in March 2012</td></tr>
</tbody></table>
<a href="http://www.rockpapershotgun.com/2012/03/13/scavenging-angels-neo-scavenger/" target="_blank">Rock Paper Shotgun</a> was the leader by far, followed by <a href="http://forums.somethingawful.com/showthread.php?threadid=3472816&userid=0&perpage=40&pagenumber=1" target="_blank">Something Awful forums</a>, <a href="http://www.youtube.com/results?search_query=neo+scavenger" target="_blank">YouTube</a>, and <a href="http://indiegames.com/2012/03/_demo_neo_scavenger_blue_bottl.html">IndieGames.com</a>. Of course, not all of these referrers were definite sales, and as you can see by the gray portion of the pie chart, a large number of folks arrived via no referrer (i.e. direct URL).<br />
<br />
That month was also the world's first taste of NEO Scavenger, so it likely had a larger proportion of visitors who were not yet customers.<br />
<br />
<b>Conclusion</b><br />
<br />
So far, Greenlight has proven to be a valuable marketing tool, if nothing else. It drove a significant number of sales on its own, and the comments on the Greenlight page have served as a welcome ego boost. What's more, calculated approval rates appear to be growing slowly. They're only at 2% now, but it's good to see them grow over time. Perhaps once NEO Scavenger is ready for prime time, the votes will be nearing critical mass.<br />
<br />
One unfortunate downside to Greenlight, however, is the lack of direct linking to my product page. I had to present a link to my demo as plain text in my Greenlight page, which means users must type the link manually to see it. I'm betting a significant number of users are lost to this barrier, despite their interest.<br />
<br />
Additionally, Greenlight is still sorting out discoverability issues. People need to be led directly to my NEO Scavenger page there to know it exists. There are a few brave souls who browse the games, page-by-page, rating them all. But I suspect most are too tired to slog through the hundreds that are presented.<br />
<br />
Desura has also proven to be a valuable partner. As a sales channel, it may even surpass my own website's. No doubt this is due, in large part, to the existing customer base and ease of reaching them/deploying builds. I'm very interested to see how it's sales performance changes over time. Will it prove to be another flash in the pan? Or, fingers crossed, will the additional sales channel help push NEO Scavenger daily revenue up to sustainable levels?<br />
<br />
Finally, don't underestimate traditional coverage. RPS, Something Awful, and the other major players can really help to get the word out. In fact, this most recent surge in traffic is also largely driven by non-Steam sources, such as <a href="http://www.pcgamer.com/2012/09/07/the-free-webgame-round-up/">PC Gamer</a>, <a href="http://www.theindiestone.com/community/" target="_blank">The Indie Stone</a> (Project Zomboid forums), <a href="http://www.reddit.com/search?q=neo+scavenger">Reddit</a>, and <a href="http://www.rpgcodex.net/forums/index.php?threads/neo-scavenger-a-post-apocalyptic-survival-rpg.70141/">RPGCodex</a>. There's definitely a synergy effect going on, too.<br />
<br />
It's a ton of work keeping up with the various sites that mention your game, but it's totally worth it. Show them you appreciate them, and they'll do the same!Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.comtag:blogger.com,1999:blog-3993525046698649887.post-81563058802607324212012-08-27T10:26:00.000-07:002012-08-27T10:26:08.757-07:00Flash as a Native App<i>Just a heads-up: Readers of news at the Blue Bottle Games website will find much of this info to be familiar. It's an expanded version of the post from last Thursday. I wanted to share it here, as it may be useful to readers interested in publishing their game in Flash.</i><br />
<br />
Last week, I mentioned I'd be looking into creating a downloadable version of <a href="http://bluebottlegames.com/main/node/2" target="_blank">NEO Scavenger</a>. It turns out that's a bit more complex than I expected.<br />
<br />
After nearly two full days of research and experimentation, I think I've got a way forward, but it isn't as elegant as I had hoped.<br />
<br />
<b>Why Flash?</b><br />
<br />
Before I get into how, let me briefly speak about the why. Part of the reason I chose Flash as a platform was because <a href="http://www.adobe.com/products/flashruntimes/statistics.html" target="_blank">a lot of people</a> on the web have the Flash plugin. Adobe propaganda aside, it's probably one of the single largest install bases for game platforms in the world. People can just visit <a href="http://www.bluebottlegames.com/">www.bluebottlegames.com</a> and try the demo with little to no effort.<br />
<br />
If I had chosen C++, C#, XNA, or any of the native application types, I'd have to present a "download" link, and people would have to:<br />
<br />
<ol>
<li>Trust me</li>
<li>Download my game</li>
<li>Install/Launch my game</li>
</ol>
<br />
It doesn't sound like much, but those three things cause an enormous drop-off in the number of people willing to try a game. Each of the above is a barrier to entry. The first is a trust barrier, the second a patience barrier, the third a laziness barrier.<br />
<br />
As a rule of thumb, I estimate 50% of interested people just say "screw it" and move on to something else when presented with a barrier. There's some leeway, of course. Clicking a link is a smaller barrier than fishing out a wallet to pay for an app. But I assume I'm losing customers with each step along the way to trying my game (and selling my game). So minimizing that flow is important.<br />
<br />
With Flash, the game just appears in the webpage. Players can pass a link to a friend, and all that friend has to do is click the link to see the game (and potentially wait for it to download).<br />
<br />
Using Flash also means I can deploy the demo to Flash portals, to help spread the word. Plus, there's the unplanned bonus of people being able to <a href="http://www.metafilter.com/114001/Oregon-Trail-meets-Fallout-meets-Nethack#4248016" target="_blank">play NEO Scavenger at their workplace</a>, even in places that prohibit installing apps!<br />
<br />
The down sides? It has a few, to be sure. This week, it's figuring out how to create downloadable versions for distribution on services like <a href="http://www.desura.com/" target="_blank">Desura</a> and <a href="http://store.steampowered.com/" target="_blank">Steam</a>.<br />
<br />
<b>Flash as a Native App</b><br />
<br />
There's a way to make Flash into stand-alone executables. Several, in fact. However, as I'm discovering, each has it's own idiosyncrasies.<br />
<br />
<b>Flash Projector</b><br />
<br />
<br />
The simplest, most straightforward way to get a downloadable version of Flash games is to create a projector. Just fire up the stand alone Flash player, load your swf, and "save as projector." Easy! Or is it?<br />
<br />
<b>Pros:</b><br />
<br />
<ul>
<li><b>Easy</b> - As above, just load the swf in a stand-alone player, and click File->Save as Projector. Voila! Native app created.</li>
<li><b>Cross-platform</b> - The process works on PC, Mac, and Linux.</li>
<li><b>Packaging</b> - The process makes a single executable. Neat and tidy.</li>
<li><b>Proven</b> - Examples include <a href="http://machinarium.net/" target="_blank">Machinarium</a>, <a href="http://thelettervsixtim.es/" target="_blank">VVVVVV</a>, <a href="http://store.steampowered.com/app/113200/" target="_blank">The Binding of Isaac</a>.</li>
</ul>
<br />
<b>Cons:</b><br />
<br />
<ul>
<li><b>Hardware</b> - You need a Mac and a Linux box to create those versions. I only have a PC at the moment. I can probably get Linux running on one of the machines in my house, but Mac is out of my reach for the time being.</li>
<li><b>Sandbox</b> - Save files must use the unintuitive (to a user) Flash SharedObject system, and can be deleted via browser cache/cookie clearing. (It's possible the fscommand() method offers a way around this, but I need to research it more.)</li>
<li><b>Mods</b> - Modding support may be hard to setup in the future, if the projector cannot access local files.</li>
</ul>
<br />
<br />
<b>Adobe AIR Projector</b><br />
<br />
I could also create <a href="http://www.adobe.com/products/air.html" target="_blank">Adobe AIR</a> projectors. AIR is Adobe's solution to cross-platform software. It's designed to allow a developer to create a single .air file which can be presented as a link in a webpage. Clicking that link on any platform launches the appropriate processes to download and install a native executable for the user's platform (including installing AIR, if necessary).<br />
<br />
It also provides a means of creating native apps for each platform, which can be downloaded and installed like most traditional software. This bypasses the need for AIR on the user's machine, but creates a somewhat messy install (see below).<br />
<br />
<b>Pros:</b><br />
<br />
<ul>
<li><b>Fairly Easy</b> - Making an AIR app isn't as easy as making a Flash projector, but it's not too hard, either. Using <a href="http://www.flashdevelop.org/" target="_blank">FlashDevelop</a>, it's possible to setup an AS3 AIR Projector project, import your source code, and follow the auto-generated readme to tweak the batch files needed for publishing. Compile to swf, then run the "packager" batch file to make the app. <a href="http://help.adobe.com/en_US/air/build/WS789ea67d3e73a8b22388411123785d839c-8000.html" target="_blank">Some research</a> into the packager parameters is needed to make .air vs native .exe/.dmg/.deb files, however.</li>
<li><b>Cross-platform</b> - Output works on PC, Mac, and Linux*. In theory, it also supports Android and iOS, though I haven't looked into it much yet.</li>
<li><b>Sandbox</b> - Local file access means save games can be safe from browser flushing.</li>
<li><b>Proven</b> - Proven examples include <a href="http://www.defendersquest.com/" target="_blank">Defender's Quest</a>.</li>
</ul>
<br />
<b>Cons:</b><br />
<br />
<ul>
<li><b>Hardware</b> - While generating an .air file can be done from any platform, and the output works on all destination platforms*, generating native apps still requires native hardware (Mac to generate .dmg, Linux to generate .deb, Windows to generate .exe).</li>
<li><b>*Linux</b> - As of 2011, Linux is no longer supported for the .air path. The native apps approach still works on Linux, but generating a working .air file for Linux involves some <a href="http://superflatgames.com/wordpress/?p=841" target="_blank">heavy tweaking</a> using older AIR versions.</li>
<li><b>Packaging</b> - Both the .air and native app outputs generate an installer which must be executed, and this throws up all kinds of ugly prompts on most machines. Also, both paths will generate a messy collection of support files alongside the application.</li>
<li><b>Licensing</b> - You may <a href="http://www.adobe.com/products/air/runtime-distribution1.html" target="_blank">need permission from Adobe to distribute AIR installer</a>. Looking into this, it may only be the case when including AIR's installer on its own with your download, and the .air and native app approaches may sidestep this. Still, it's a consideration, and that kind of legal complication is an effective deterrent to adoption, if anyone at Adobe's reading this.</li>
</ul>
<div>
<div>
<b>Port NEO Scavenger to HaXe</b></div>
<div>
<br /></div>
<div>
While researching cross-platform distribution, it's impossible to miss <a href="http://haxe.org/" target="_blank">HaXe</a>. Purporting to "write once, deploy anywhere," it may sound a lot like Java. The difference is that HaXe not only compiles directly to multiple platforms, it compiles into other languages, including C++, C#, Flash, JavaScript, and soon, Java.</div>
<div>
<br /></div>
<div>
There's even a framework within HaXe, <a href="http://www.haxenme.org/documentation/about/" target="_blank">NME</a>, which smooths the transition from Flash even further. It's a pretty impressive tool. However, it's a relatively young platform, meaning its community support pales by comparison to AS3. It's also just different enough from AS3 that it would mean a lot of rewriting of code.</div>
<div>
<br /></div>
<div>
<b>Pros:</b></div>
<div>
<ul>
<li><b>Packaging</b> - Produces actual native apps. No virtual machines.</li>
<li><b>Cross-platform</b> - Works on PC, Mac, and Linux (and iOS, and Android, and Flash, and...)</li>
<li><b>Sandbox</b> - Local file access means save games can be safe from browsers, and mods are supported.</li>
</ul>
<div>
<b>Cons:</b></div>
</div>
<div>
<ul>
<li><b>Hardware</b> - Need a Mac and Linux OS to generate native apps for those platforms.</li>
<li><b>Effort</b> - I would have to rewrite huge amounts of code to port to HaXe. As mentioned above, AS3 and HaXe (NME especially) are close, but not close enough.</li>
<li><b>Support</b> - As a young(ish) platform, community support is still pretty small. It can be harder to find answers to questions as compared to AS3/Flash. </li>
</ul>
</div>
</div>
<br />
<br />
<br />
<b>3rd Party Wrappers</b><br />
<br />
There are also some third party wrappers out there (e.g. Zinc, SWF2EXE, mProjector). However, their reputation appears to be mixed. Some claim support is poor, others say the performance is bad, some don't even support all platforms. And then there's the price tag. With many of them costing several hundred dollars, I might as well buy a used, Intel-based Macbook, which not only lets me develop for Mac, but iOS devices as well.<br />
<br />
<b>Conclusion</b><br />
<br />
Is there a conclusion? Not yet. No silver bullet, anyway. My likely approach for now is to actually go with the simplest option: the Flash projector. It generates native .exe files that work <i>right now</i>, and I can probably get Linux running on one of my PCs to do a .deb version. If sales pick up, I can probably justify $500 for an old Macbook to compile Mac versions.<br />
<br />
And since I'm still in beta mode, the downloadable file will be updating with each new version. It's not too hard to swap in an .exe generated via another means when I need to. It's just the easiest working path open right now.<br />
<br />
If you're looking for more info, here are a few links to resources I used in my research:<br />
<br />
<ol>
<li><a href="http://forums.tigsource.com/index.php?topic=10106.0" target="_blank">Making Flash EXEs</a> (Terry Cavanagh's VVVVVV research)</li>
<li><a href="http://forums.tigsource.com/index.php?topic=25423.0" target="_blank">Flash to EXE Projector Help</a> (Leans towards projector)</li>
<li><a href="http://help.adobe.com/en_US/air/build/WS789ea67d3e73a8b22388411123785d839c-8000.html" target="_blank">Packaging a desktop native installer</a> (Adobe AIR documentation)</li>
<li><a href="http://superflatgames.com/wordpress/?p=841" target="_blank">Lone Survivor Linux Woes</a></li>
<li><a href="http://forums.tigsource.com/index.php?topic=19617.0" target="_blank">Flash for Downloadable game. Some tips?</a> (Projector vs. AIR vs. HaXe)</li>
</ol>
<div>
Hope this helps some Flash devs out there. If you have any additional info or corrections to add, post in the comments!</div>
<br />
<br />
Danhttp://www.blogger.com/profile/11257213025201892199noreply@blogger.com