On Fortress — A Postmortem

Fortress was a failure. That’s not necessarily a bad thing, but it was a failure. Let us acknowledge at least that, and get to learning some lessons.

First, in the interest of proper postmortem formatting: Fortress is a turn-based strategy card game designed to be played with a standard deck of cards. Each player receives one King and half of the remaining cards above 7 (including the two remaining Kings). Each of these cards represent a soldier with an Attack and Defense rating based on its face value, suit, and whether its suit matches the player’s King or the opponent’s King. Players use these soldiers to attack each other’s fortresses and try to destroy each other’s Kings. Cards valued Ace through 6 are set aside and used in place of a six-sided die during attacks.

Fortress was developed primarily by one developer (me), with art and music assets contributed by two contractors, both rookies at game development like myself. These individuals began the project under contract for shares, which I eventually bought back for various reasons. Overall, everyone got along well, with some friction I’ll expound on below.

The game was targeted from day one for iPhone OS (now simply iOS). All coding was done in Xcode, using the cocos2d package for graphics and audio.

What Went Right

1 – Based on a well-honed card game: Fortress had existed as a card game for over four years before I began making the video game version. Because of that, the gameplay was already tried and tested. The card game essentially served as a paper prototype.

2 – Early beta: I didn’t hesitate to put the game in front of people. The beta began well before the game was even remotely stable, and had dozens of eyes on it from the beginning. Feedback came early and often, and a lot of poor design decisions got backed out before they could do any lasting harm as a result.

3 – Cohesive art direction: Both contractors took direction extremely well while making their own contributions to the game’s creative vision. The graphic artist in particular had to adapt to my cartooning style, and successfully combined it with his own methods to create a silly, lighthearted motif that I hope will influence all of my future projects.

4 – Robust audio: The same goes for the musician’s work. I’m a mediocre composer, myself, but Ryan was able to take my meandering whistles and doot doot doots and transmute them into something with some meaty weight while still fitting into the upbeat feel of the visuals.

5 – Ambiance: I have to be fair. This part didn’t get done before the axe fell. But it would have been awesome. The game was meant to be accompanied by quiet ambient noises punctuating the unbearable silence of a long siege, with a slow day/night cycle gradually fading the play field from sunrise to sunset and back again. Chirping birds, nervous men clanking as they adjust their armor, crickets, lapping water. I’m really sore that I never got this done, actually.

What Went Wrong

1 – Friction within due to differing styles of time management: I’m more right-of-center when it comes to deadlines, while the artist leans more to the left. I prefer to have set milestones that I can count on being hit on time, Parker prefers to let things flow and not get stressed (and I can’t say I disagree). This caused a bit of friction in the beginning, but we hugged it out early and I agreed to loosen up on deadlines on the condition that Parker come through in a timely manner. I still prefer to hit milestones where possible, especially when there are dependancies on assets that are holding up a project, but in this case, the compromise led to less stress and better productivity in the end.

2 – Early beta: I went to beta way too early. A lot (maybe most) of the feedback during the first two or three beta versions ended up being about stuff I was already planning to fix for subsequent pushes. Lots of time wasted as a result. Guys! Stop Pressing Buttons! absolutely will not go to beta until it is feature-and-asset complete, so the focus can be on bugs and balance where it belongs.

3 – Tutorial: The tutorial was an unmitigated catastrofuck. Text text text text text. Boring boring boring boring boring. Nobody had the patience to sit through it, and so no one understood the inner workings of the game. For G!SPB!, tutorials will use as much pantomime as possible. I may even go all the way to making the entire tutorial text free.

4 – No prototyping led to poor architecture: The game’s code base was unsound from day one. I ran with a “just make it work” mentality from the moment my fingers first touched the keyboard, and almost every line of the resulting mess ended up being the foundation for the entire game model. I was also still coding like a college kid, which means the game is saddled by layers upon layers of inheritance. To be fair, the game is heavily state-based and event-driven and probably wouldn’t have benefited in any world-changing magnitude from a more component-based architecture. Regardless, these sloppy coding decisions should have been part of a prototype, not the finished product.

5 – Mental health: By a wide margin, this is the big one. Everyone who’s read my blog before knows I have to wrestle with my brain to get it to cooperate. I’m getting better at it now! But during most of this game’s development, I spent more time depressed and procrastinating than I did working. I’m optimistic that this will be less of a problem in the future, but it’s still a long road ahead. I’m going to have to work really hard to fix these issues.

The End

Fortress was a big learning experience, and I think that’s all I ever really needed it to be. I failed to get my wings in the end, but I put myself in a good position to make a successful second flight. Guys! Stop Pressing Buttons! will get done, and if it doesn’t, I will simply choose a new career.

That sounded a lot more melancholy than I intended. I’m excited about moving on! I swear!

Developers: 1 (me)
Contractors:  2, an artist and a composer
Budget: $1500 – I bought out Parker’s (artist) share for $1000, and Ryan’s (composer) for $500. I’m not counting the cost of hardware or the Apple Developer fee, since I use those for other things outside of this project.
Length of development: 2 or 6 years, depending on how you’re counting
Release date: Heh
Platforms: All iOS devices
Development hardware: A MacBook Pro and a standing desk
Development software: Xcode
Final SLOC count: 12,054 lines of code! WAY too many!

Posted in Fortress, Guys! Stop Pressing Buttons!, iDevBlogADay, Portmortem | 2 Comments

On Shelving

I’ve got good news and I’ve got bad news!

The bad news is: I’m putting Fortress on hold indefinitely.

The good news is: I’m putting Fortress on hold indefinitely!

As you can tell, this has been a simultaneously difficult and exhilarating decision. Let me tell you why in 250 words or less. Fewer, rather.

On one hand, Fortress has been Project Numero Uno for the last two-ish years. I’ve put a lot of work into it, enough for the sunk cost fallacy to kick in every time thoughts of frustration with the project enter my mind. This game is saddled by poor early-stage decisions that make it unbearable to work on, and I’m at the point now where I don’t feel like I can produce a game that I will be proud of without ripping out its guts and starting over.

Which I should really point out I will do eventually! Just not right now. Indefinitely != Forever.

SO THE OTHER HAND: Y’ever have the experience of going around with a 100 kg platinum brick hanging from your neck for years and then it suddenly occurs to you that you could just take it off and everything will feel better? That is how I felt at the moment I decided to put this thing on a shelf.

MAN.

So as of today, I’m moving on to my next game.

And that’s all there is to it!

:D <3 :D <3 :D

Posted in Fortress, Guys! Stop Pressing Buttons!, News | Leave a comment

On Cowboys

Game developers are famous for working longer hours for less pay than software developers in other industries. We like to complain that this is because our industry is run by people who don’t understand the work we do, which makes sense on the surface. It’s the owner’s fault for imposing mandatory overtime! It’s the publisher’s fault for thinking what we do is magic! It’s the manager’s fault for not knowing how to plan out a project such that it has a reasonable schedule paired with an adequate budget!

No.

It’s our fault for being such a bunch of prick-waving cowboys.

Do you like game jams? Of course you do! The camaraderie! The focus! The creativity! The collaboration! A whole weekend where the only thing you do is the thing you love the most!

What’s the first thing you sacrifice during a game jam? Sleep. Over two days, maybe you rest for, I don’t know, a couple hours in total? Why sleep, anyway, right? Sleep is for the weak! I’ll sleep when I’m dead! Sound familiar? Not only do you devalue sleep, you ridicule it! Worse yet, it leaves you exhausted before the week ahead has even begun. If you’re lucky, you’ll have made up that sleep debt by Friday. If you’re average, you’ll be groggy for two weeks.

Good thing we have caffeinated beverages, though! Who needs sleep when you’ve got a pallet of free Bawls courtesy of your gracious local sponsor? So what if you’re already obese from drinking so much sugar?

Or maybe you aren’t obese. Maybe you’re too skinny, can’t seem to build any muscle to save your life. Did you know most men build most of their muscle mass while they sleep? Same goes for women, more in terms of tone than mass. The less sleep you get, the weaker your body becomes.

And don’t forget the damage you’re doing to your immune system. Healing requires rest. No rest, no healing.

Ah, but the healthy air of competition! Really gets those juices flowing! You may not be conscious of it, but any psychologist would be able to see the tribal behaviors that go on between working groups at a really frothy game jam. Is it any wonder you hardly see any women at these events? Women want to cooperate with their community, not compete with it. As if we don’t have diversity issues enough already!

So let’s go through the list: We don’t value sleep, we don’t value our health, and we don’t value inclusiveness, all for the opportunity to work too hard. Do you think owners and publishers and managers don’t see the cowboyism in our working culture? No wonder our industry has problems!

You’ve perpetuated the perception amongst employers that all we want to do is crank out product at the expense of the rest of our lives. And for some, maybe that’s true. Maybe it’s due to depression or some other mental health issue. Maybe you don’t have a life outside of work or do anything to help yourself because you don’t want to. I would encourage you to change that mentality, because the rest of us, I would submit the majority of us, want a better life in this industry, not just for ourselves but for you, the depressed recluse, as well, and we work just as hard at achieving it as we do at our “work” work.

Let’s keep encouraging focus and creativity and collaboration, but ditch the stress and caffeine abuse and exclusion and all of that other complete fucking cowboy horseshit that we’ve told our bosses we want in our lives.

Posted in iDevBlogADay, Mental Health, Opinion, Work-Job Balance | 3 Comments

On Vegetarian Cheesesteak

I’d like to get a little off topic with you now.

I’m not a vegetarian, and I don’t think I ever could be one. However, I like to eat as little meat as possible, for a variety of reasons: Vegetables are cheaper, I think they’re delicious, they’re usually better for you, they make pooping easier, etc. I also love to cook, and sometimes when I get stuck on ideas for new recipes, it helps to introduce some constraint to the process, which, for me, usually means forcing myself to cook without meat.

For this recipe, I took on one of my biggest challenges ever: To replicate the classic Philly cheesesteak without using meat.

The way I see it, a good cheesesteak needs to fit these criteria:

  • It has to be greasy
  • It has to be gooey with melted cheese
  • It has to be fatty
  • It has to come in a thick bun that quickly soaks through with said fat, grease, and cheese
  • It has to force you to wash your hands thoroughly afterward before you touch anything that means anything to you
  • It has to be loaded with onions, peppers, and ketchup (my personal preference)
  • It has to have a mix of textures including chewy (meat), mushy (bread), and crisp (onions and peppers)
  • It has to provide a satisfyingly disgusting mouth sound

With these parameters in mind, here is how I tackled the problem.

Ingredients
(Note: I’m listing what I used, but feel free to make substitutions for everything but the squash and tofu, and those two are the base of the sandwich filling.)

1 spaghetti squash
1 package firm or extra firm tofu, cut into 1 cm pieces
2 red bell peppers, sliced
2 medium onions, sliced
1/2 lb peppadew white cheddar (or other easily melted cheese), broken into 1/2″ pieces
3 tbsp butter
2 tbsp olive oil
6 tbsp balsamic vinegar
Salt and pepper to taste
4 hoagie rolls

Directions

There are several steps that take considerable time and are best done simultaneously. I’ll list these steps as sub-bullets of the same step.

In total, you’ll want to allow about two hours to prepare the filling, but of that time, only about a half hour to an hour will be completely hands-on, depending on how fast you are with a knife (I’m really fast, so you might take my time estimates as too optimistic).

  1. Roast the squash, caramelize the onions, and cook the peppers (do these steps simultaneously, but start them in this order)
    1. Cut the squash in half lengthwise. Place on a lightly oiled baking sheet, skin side up, and roast at 350ºF for 30 minutes. Remove from oven and allow to cool.
    2. Add sliced onions and 1 tbsp butter to a large skillet over medium-high heat. Allow the onions to cook until translucent. Season with salt and pepper. Onions should then begin to brown. Stir the onions occasionally until they are evenly browned. You may need to lower the heat to medium, depending on the power of your stove, to prevent burning. When the onions are fully caramelized, deglaze the pan with 2 tbsp balsamic vinegar.
    3. Add sliced peppers and 1 tbsp butter to a medium skillet over medium-high heat. Season with salt and pepper. Cook until peppers are softened. When the onions are finished caramelizing, add them to the peppers, turn off the heat, and set aside.
  2. Cook the tofu and prep the squash (again, simultaneous, but start in this order)
    1. In the large skillet, combine tofu and the last 1 tbsp butter over high heat and cook while stirring occasionally until the tofu is evenly browned. (Now is a good time to take down the smoke detectors.)
    2. Using a spoon, scoop the seeds out of the spaghetti squash. Then, with a fork, scrape out the roasted strands of squash. The easiest way to do this is to start from the stem end of the fruit and scrape downward.
  3. Lower the heat under the large skillet to medium high. Add the spaghetti squash to the pan and stir until evenly combined. Season with salt and pepper. Allow to cook for a minute or two, then add olive oil and remaining balsamic vinegar. Stir until the mixture is an even brown-ish color.
  4. Add the cheese and allow to melt. Once melted, stir until the cheese is evenly distributed. If it looks disgusting, you’re doing it right.
  5. Add the peppers and onions, making sure to get all of the melted butter with them.
  6. Add to hoagie rolls and nom.

Now I’m not gonna lie to you, Marge, I really wasn’t sure this would work out. You’ll see this, too, if you try it: All the way through the process until the very end, this will look NOTHING like a cheesesteak, but right at the end, once the cheese is melted and swaddled around the tofu chunks and squash strands, something amazing happens. See here:

WHAT

Right? That looks totally horrible for you! Just like a real cheesesteak!

Sure enough, these puppies are comforting and delicious and sit in your stomach like vegetarian lead. Bring a thick pile of napkins to this ride, not to mention a tall beer to wash it all down. This is a vegetarian meal for a true psychopath!

I leave you with the final results. Try this out! It’s a miracle*!

THIS IS GONNA BE AWEZEOM

OH SHIT IT’S BASICALLY A CHEESESTEAK ENTER MY MOUTH NOW

*Only complete fucking idiots believe in miracles

 

Posted in Food, Off Topic | 2 Comments

On the Nude Beach Hypothesis

This past Saturday, I attended GameLoop Boston, the parent conference to GameLoop Philly, which I co-organize in Center City in the spring. GameLoop is an unconference, much like BarCamp, built and run specifically for creators of games. At the beginning of each conference, all of the attendees are corralled into a big room, where they take turns shouting out discussion topics. These topics get put on a big master board and are then voted on by everyone present. Combined with some light curation by the organizers, this results in a conference without a prescribed curriculum, a day where everyone gets to talk and learn about what they want to talk and learn about.

This year, during the opening topic-shoutery, I borrowed a second at the microphone and muttered, “Mental Health”. A quiet chuckle circulated around the room, followed by a moment of hushed discomfort. Amongst the typical talks of tools, IDEs, and methodologies, I had added something very strange indeed.

My talk got five votes from an attendance of 150, but made it onto the schedule nevertheless (for which I must credit a massive thank you to organizers, mentors, and dear friends Darius Kazemi and Scott MacMillan – the latter of which gets extra hearts for affording me the accommodations of his home for the weekend).

The time came for my talk, and to my surprise, over a dozen people showed up, many of whom were individuals I look up to and whose opinions I consider invaluable.

In the unsettled quiet, I opened the session doing what I do best: I talked about myself. From my early adult days wrestling with rage, to my struggles with depression at my old day job, to my eventual diagnosis with bipolar disorder and the new cocktail of medications I now take, I left nothing hidden. The only details I did not share were those of a sexual nature, which would have required the additional consent of my wife, who was not present.

Instantly, something magical happened. People in the room, all stoic professionals who effuse an air of sanity and composure, opened up their brains and exposed all the writhing imperfections therein. Almost everyone had damage, and no one felt the need to hide it.

I have decided to call this the Nude Beach Hypothesis. When a group of friends takes a trip to a nude beach, there is a long moment of hesitation until the first person, amidst the nervous giggles, takes off their clothes. At that moment, a spell is lifted, and amongst a cacophony of bouncing breasts and dangling scrota, the day can finally begin, thanks to the one brave individual who finally decided modesty has no real place in that tiny, coastal micro-world.

So it is with our mental illnesses. We in the West have grown up propagating a stigma against those with mental health problems, and we with those problems have lived secret lives of torture behind our façades of equilibrium.

No more. For everyone who stands up and says, “This is my vagina and who cares? Also I’m crazy!”, another suffering victim of bad brain chemistry is emboldened to open up and expose themselves, seek diagnosis, and eventually get better.

I could not be more overwhelmed with the response to my session at GameLoop. I’ve had people tell me it was the best game conference session they’ve ever been to, that talks like that are why GameLoop exists. To hear that I’ve outshined even GDC with my simple act of reckless bravery means more to me than I can properly articulate.

Posted in Indie Game Development, Mental Health, Opinion | 4 Comments

On Sabbatical

You’ve probably noticed by now that updates on my progress have gotten thin. There’s a good reason for that!

After leaving my old job, I made plans that afternoon to experience a big, liberating wave of euphoria. Euphoria, the fickle broad, stood me up. I was able to be acceptably productive for a couple of weeks, but it didn’t take long for my depression to get the best of me. I lost the motivation to work.

So that explains that at least!

I realized I was going to have to lick depression before I could transition to working on games full time. My priorities have had to change. I no longer behold myself to getting game work done during the day. If I do work on something, that’s fine, but I don’t have to. The only thing that matters now is fixing my mental health.

I’m basically on sabbatical for at least the next few months, maybe longer. However long it takes to get better! I’ve already made some really good progress. I started taking Celexa (and now Lexapro) a few months ago, and that’s helped.

I’m in therapy, and I also spoke to a clinical psychologist this week, who ultimately determined that my depression is just half the story. He diagnosed me with Bipolar II, which I’ve suspected for a while now. Now that my diagnosis is nailed down, I’ll have a much easier time figuring out how to fight it. We’ll probably add a mood stabilizer (the psychologist recommended Epakote), more CBT, and I’m going to start meditating.

I’ve got a plan for beating my mental problems! Good stuff! Fortress most certainly will not come out this year. Remember when I thought it’d be done by August 2010? But I’m letting myself completely off the hook for the delay. Right now, I’m useless 167 hours out of the week, and then hyperproductive for the remaining 1. I’ll miss those manic bursts, but if the price of becoming normal productive for 30 or 40 hours per week is I have to sacrifice being Captain Amazing for 1, I’ll take it.

So things may get a little philosophical here in the future, even moreso than usual, and that’s pretty much the point, isn’t it? I set out to expose the Real Me of New Jersey on this blog, and that’s exactly what I’m doing right now.

Posted in Fortress, Mental Health, Progress Reports | 2 Comments

(Stay) On Target

I want a space combat sim. Here’s what I want from it.

Being the lone hero who saves the Allied Confederation Union Alliance from the Alien Imperial Storm Axis is old news. I have Wing Commander and X-Wing and Freelancer for that. Likewise, I don’t need to start off in a tiny cargo ship, trade goods, and take repetitive missions as I work my way up to a giant combat beast. I have Elite and X and Freelancer again for that.

Give me something new. This is how.

I want cap ship battles. Massive, imposing laser behemoths lobbing tsunamis of flak and plasma in a grueling war of attrition, the only x-factor being the tiny, fragile star fighters and their daring pilots and gunners making precision strikes against critical enemy ship systems.

I want to catapult from my home ship, protected from blood-boiling vacuum by but a few millimeters of aluminum, and wrestle with Newton as I dodge friendly and hostile weapon discharges alike to make a nigh-hopeless run against a single shield generator on a single cruiser amongst a fleet of dozens of the fucking things.

I want to be the smallest, most helpless part of my fleet, tossed around like a grain of sand in a hurricane as I strain to make any difference I can. I want noise, shock waves, blinding light. I want to marinate in the terror of battle, listening to my friends’ screams as they fry in their cockpit prisons, feeling my frailty but knowing that every weapon hardpoint and hangar deck I disable brings my fleet one step closer to survival.

I want scale. I want stress. I want the pyrrhic glory of a narrow victory.

Somebody find me a game developer.

Posted in Steal My Game Idea | 2 Comments

On Something Else

Work on Fortress has brought me to a land of blockage and frustration, so I’m taking this week off from it to learn workflows and techniques I’m going to need for Guys, Stop Pressing Buttons!.

Aesthetically, I want the game to feature my minimalist deadpan character style with bouncy, cutout-style animation similar to MikaMobile’s games. I’m achieving the effect by modeling pseudo-2D characters in Blender, using flat planes for each body part. There aren’t any skeleton rigs involved, the effect could be put together far more easily in Flash, and Blender is one stank beatch to learn, but since I’m moving to Unity after Fortress is done and don’t want to buy Maya, Blender is my best option.

It took me a little over two days, but I managed to get a character modeled and skinned and built a nice looking walk cycle. It’s been a learning experience, that’s for damn sure. I’ve picked up more new skills in the last 48 hours than I have in the last 48 weeks of Fortress work.

Here’s the result:

(Also, I’d never drawn characters in this style below the waist before, so I had to figure that part out, too.)

I’m thrilled with how it came out, obvious imperfections aside. The next step is to figure out how to get this fucker into Unity, which I’ve only barely begun to learn how to use. After two days of beating myself to death with Blender, my skull’s a little too caved in to feel like wading through another ocean of nightmares, but even that’s preferable to banging my head against Fortress. Man do I want that game to be done.

Posted in Art, Fortress, Mental Health, Technical | Leave a comment

On Domestic Responsibilities

Posted in Off Topic | 1 Comment

On Transitioning

I have a weird habit of holding off on big changes for way too long. I’ll find something in my life I’m not happy with, and then tell myself I’ll change it soon, once I’ve done this and this and this and this. Time passes, I slowly get more miserable, the reasons to make the change build up, until finally, I hit the breaking point. Seemingly out of nowhere, the change gets made, and everyone is surprised.

For example, I quit my job last week.

Well, okay, maybe you’re not so surprised about that one.

When I made the switch to part-time status at my day job this year, I made a vague prediction that my job would start depressing me even more than it already was, even though I would only be spending three days out of the week doing it. Fast forward a couple months, and you see me spending an evening thinking about killing myself. Whoops! Understatement much?

It’s no great secret that I never liked working where I worked. For a while, I thought it was because of how dull and uninteresting the job was, but it wasn’t until after I read two posts by Amy Hoy and 37 Signals on the power of process over passion that I realized why the rate at which corporate America digested my mental health increased so quickly this year.

In spending two days each week working for myself, I quickly discovered a routine that works best for me: Get up and work. Work without distractions. Work without interruptions. Work without disrespectful management. Yes, work on something I love, but even if I’m doing something I don’t much care for that day (phone calls, paperwork, er, blog posts sometimes kinda), as long as I’m in an environment where I’m respected and allowed copious independence, I can buckle down to do something tedious and still get it done quickly.

At least I think so. Took me a while to get rolling on this post today.

It’s a long road ahead. This is a big transition for me, and there are going to be issues to work out. My sleep schedule has gone completely out of whack, partially from leaving the job and partially from upping my Celexa dosage. I’ll oscillate between two hours of sleep one night to 16 hours the next. Sleep has always been a hairy subject for me.

I’m going stir crazy at home. I think I need to move to a town with lots of good places within walking distance to work away from the house. I need to be around more people. Working by myself gets lonely fast, even for someone as introverted as me.

I haven’t lifted in over a month. My guns look plushy and depressed.

I’m not productive right now, but I’m excited about the possibilities. I just need to find my routine again. This has been a weird year, and it’s just going to get weirder. It’s going to take a lot of willpower to get comfortable with this new way of life I’m diving into, and I need to do so quickly. I don’t exactly have all the time in the world. I need to bring in those Benjamins, y’all.

Posted in iDevBlogADay, Mental Health, Work-Job Balance | 2 Comments