Categories
Game Development Marketing/Business

The Great Gatsby Was a Flop; How’s Your Game?

Yesterday while listening to an audiobook, I learned that F. Scott Fitzgerald died thinking that his greatest work was a failure.

He earned just $2,000 from The Great Gatsby. In today’s money, it represents a bit more, and he was in the top 1% of income earners in his time, but this was his major novel. He put a lot of blood, sweat, and tears into it, but he got paid the same as or less than he did for his short stories. How depressing!

Now, there are different definitions of success, and financial success isn’t everything. But Fitzgerald expected Gatsby to be a huge financial success and was disappointed.

Today, the work is taught in schools, which is how I became familiar with it. I had to write a paper on the novel as part of my high school English class, and I remember someone saying, “Hah, good luck! That’s the teacher’s favorite book.”

So I made sure to do my research well. I even read the book twice before writing my paper early enough to be able to edit it instead of trying to get it all done on the last day. I got an A, and I found I quite enjoyed the book as well.

Incidentally, I learned that The Great Gatsby is still not in the public domain, despite the author having been dead for three-quarters of a century.

The audiobook mentioned a number of Fitzgerald’s peers who are widely recognized today as geniuses as well, but when they actively published, they experienced modest financial success. The very financially successful literature was apparently kind of terrible and written by authors who are all but forgotten, but people couldn’t get enough of them.

So what’s the lesson here as an indie game developer?

No one has it easy. Fitzgerald was a popular figure, and his greatest work still couldn’t find traction with the public in his lifetime, despite the praise he got from fellow writers.

Most people look to the great successes for inspiration. What was Howard Schultz’s secret to success for Starbucks? How did Mark Zuckerberg make Facebook the juggernaut it is? See what Notch did with Minecraft?

They are all human. They all failed somewhere. Some found great financial success, while others didn’t.

We don’t often hear about the failures of successful people. We forget about the struggle and look for the glamorous.

Then we look at our own results and worry we don’t measure up. We think we’ll never be great ourselves, because we don’t recognize that our failures are exactly the same kinds of failures that the successful people had.

When you publish a game, it’s entirely possible that no one will find out about it. You pour your heart and soul into a game for months or years, and it could flop. Meanwhile, you see other games take over the world and hear that the developers made them in a few weeks in their spare time.

You see huge and successful indie games, games that get all the press and sales, and you compare your efforts to what you perceive as someone’s effortless genius. It can be heartbreaking and frustrating.

Some of us stop bothering to try.

But failure is part of the process of succeeding.

Ideally, you get to success while you can still enjoy it. You just need to make the attempt and get past the failure first.

Categories
Game Design Game Development Geek / Technical Personal Development

How to Find Indies in Iowa

When I started out as an indie game developer, I found a home on the Internet. It was a set of forums dedicated not just to game development but also to making a living from it.

And while daily online communication, or maybe just procrastination, was helpful, it was nothing compared to the monthly face-to-face meetups we had in Chicago. We met either downtown at a Dave & Buster’s or at a Starbuck’s in Schaumburg.

It was kind of a loose mastermind group, in which we tried to set goals for the next meeting and held each other accountable to them. We had a range of completely newbies to experienced and successful business owners, and we all met, tried out each other’s games, and gave feedback.

So when I moved to Des Moines, Iowa, I immediately wondered where a similar collection of indies were.

They’re hard to find, so I decided to put a summary on this page in the hopes that it will be easier for everyone to connect with groups they might not have otherwise known existed.

The Iowa Game Dev Friendship Club has a mailing list at https://groups.google.com/forum/#!forum/igdf. It’s made up of indies and enthusiasts from all across the state of Iowa, especially out of Ames and Iowa City which is where our major universities are.

There is now an associated Iowa Game Dev Friendship Club Facebook group.

Sometimes a good number of members show up at a game jam, but otherwise they don’t try to organize massive face-to-face meetings. There have been Des Moines-area meetups in the past, such as the Midwest Mingle.

If you’re in Ames or Iowa City, your local university has a game developer organization. Iowa State has the Iowa State Game Development Club, which has an enthusiastic Twitter account at @isu_gdc and a ISU Game Dev Club Facebook page.

University of Iowa in Iowa City has EPX Video Game and Animation Studio, formerly known as Animation and Interaction at the University of Iowa. You can find them at their weekly meetings and at their EPX Facebook group.

UPDATED 2016: The International Game Developers Association has a Des Moines chapter. You can find them on Twitter (@igdadsm) and Facebook (https://www.facebook.com/groups/227434834257939/.

Did I miss anyone? Is there an Iowa indie game developer meetup you’re hosting that I don’t know about? Let me know, and I’ll update this list.

Categories
Game Development Personal Development

Setting Effort-based Goals vs Outcome-based Goals

Since I am a part-time indie game developer, I am highly aware that the time I spend on game development tends to be a very significant function of my output.

If my other responsibilities are great, and I don’t consciously make an effort, maybe I’ll only get a couple of hours of work in. No matter how efficient I could use that time, two hours a week isn’t going to let me accomplish much. I can’t prototype or play test much, nor can I really get much implemented.

So all year I’ve been setting goals to increase this amount in a sustainable way. That is, I make sure I can handle my day job, my family, and my home responsibilities while also ensuring I get enough sleep. Stealing time from my sleep, for instance, allows me to temporarily use that time productively, but it always catches up with me and I end up paying for it in the end. What usually happens is I get slower and less efficient, and then I start sleeping in, which takes away my precious mornings that I dedicate to game development.

Recently I’ve been rereading Steve Pavlina’s book Personal Development for Smart People: The Conscious Pursuit of Personal Growth, and in the chapter on Power, he talks about personal quotas.

The idea is that to increase your performance in an area of your life, you can set minimum daily quotas to reach. Some authors set a daily word count. No matter how long it takes, they must write 250 words. Or maybe they do what I’ve been trying to do and set a minimum number of hours since word count might not represent the effort of writing very well if they spend a lot of their working time researching or editing, actions that don’t necessarily increase their word count but still contribute to the finished project.

Pavlina said he used to dedicate a few hours to writing, but he found that the end results weren’t ideal because his focus was on putting in the time instead of finishing. So he focuses on outcomes. Instead of writing for two hours, he writes until he finishes an article.

In a way, this reminds me of the Theory of Constraints and the story told in The Goal: A Process of Ongoing Improvement. Eliyahu M. Goldratt’s protagonist is put in charge of a failing manufacturing plant.

This plant has very expensive machines, and so the company insisted that to be the most efficient, those machines should be running as close to 24/7 as possible. Downtime meant lost efficiency and wasted opportunities to make back the investment in those machines.

Here, they were focusing on effort.

What they forgot was that the effort should serve a purpose.

People weren’t buying what was being made, either because they produced too much, or it wasn’t the right product for their needs, or the finished product couldn’t be made because there were bottlenecks in the manufacturing process in which some parts were ready while others needed to wait to be made. No matter how efficient the plant was in utilizing their resources, all they ended up with was a warehouse storing the unsold and unneeded parts they were creating.

Once they started to focus on the finished product, the outcomes, they rearranged priorities, ensuring that what was being built at any given time was shortening the time of the entire process, not just making any one part more efficiently.

I just spent the last couple of months implementing what was supposed to be a “simple” physics model for a game I’m working on. It turns out, physics isn’t simple, and there are plenty of solved problems in this domain, as well as many available 3rd-party libraries such as Box2D. But no, I insisted on implementing my own. I don’t need an entire physics engine. I just need something that looks good enough. How hard can it be?

In terms of my personal education, I gained a lot. I consulted a number of resources, such as the Impulse Engine by Randy Gaul and Chris Hecker’s Physics articles for Game Developer Magazine. I had a refresher from my high school and college physics classes, plus I learned about ways in which physics engines in games have historically fallen on their faces.

But in terms of outcomes, that’s two months I spent implementing and tweaking a small part of my overall game project. I focused on spending time on development, and I just kept working on what I was working on because I didn’t ever feel I had a good stopping point. It’s easy to want to spend a lot of time fiddling with coefficients and parameters to see if I can get the feel just right.

If, instead, I really focused on outcomes, such as getting the physics implemented in a week, maybe I would have seen that I was running out of time and so decide to use a 3rd-party library.

It doesn’t matter if I wrote the code myself. It matters that I am a step closer to having customers play the game.

Some game developers keep a simple list of tasks in front of them, and they work on whatever seems interesting, adding and removing tasks as they go. Others have a full project plan.

Now, as a part-time indie game developer, time still means results. If I spend 10 hours in a week, I am able to focus more than if I spend two hours in a week. It can mean the difference between getting meaningful accomplished in a given development session versus starting and stopping over the course of weeks to get something equivalent done.

So time still has a huge effect on output.

But I can do a better job of ensuring that the time I do spend on game development isn’t open-ended. There’s always more work to do, so just putting in time to work isn’t necessarily going to result in all of the work getting done so much as just a portion of the work getting done really, really well.

Categories
Game Design Game Development Personal Development

Anyone Can Create, and They Do: Your Design Choices Matter

I used to have a QBasic game review site, which meant I was part of a small group of sites dedicated to playing and reviewing games made by a small community on the relatively young Internet.

Surprisingly that effort translated into a little bit of paying work when I found out that Game Tunnel was looking for reviewers. I got a little bit of money each time I wrote up what I thought about a specific independent game, plus I usually got the game for free. It wasn’t enough to quit my job and live off of it, but it was enjoyable.

Over all that time, I saw a number of review sites come and go, and every so often one of them would get the idea to do a special write-up on “the worst games of [insert year here]”. Anyone could publish a review site,and sometimes that meant anyone did, and they decided it would be fun to write insults for laughs.

Now, I get it. In many creative industries, there’s always a “best of” list, and there are awards shows dedicated to highlighting the top efforts. So why not a “worst of” list? Why not highlight the terrible? People love to hate on things.

In fact, I didn’t know this, but the Razzies, which highlight the worst in film, have been around since 1981. It’s all in good fun, and it’s actually gotten relatively popular, with a few celebrities coming to accept their Golden Raspberry award in person.

If you search on YouTube, you’ll easily find lists of the worst games.

Worst Games Lists On YouTube

That’s unfortunate ad placement, huh?

People love to hate on E.T. for the Atari 2600, or John Romero’s Daikatana, or any number of games based on movies.

Ok, so people love to hear about failure. The popularity of reality television already tells you this fact.

I personally think this kind of tear-down is the stuff of tabloids. It’s never something you’ll find at the Academy Awards or The Academy of Interactive Arts and Sciences. And this isn’t a complaint about high-brow vs low-brow. I’m not above a good slapstick comedy or the occasional mindless action game.

It’s about ease.

In the modern age of citizen publishing media, with blogs, videos, and social network posts, anyone can write about how much they hated the latest stinker at the box office or a terribly-written-yet-popular novel or a disappointing offering from a major game publisher.

And many do.

But what a terrible way to spend your time! Dwelling on the negative, insulting people you don’t know, and kicking them when they are down? Ick.

It’s also easy. Someone could spend months or years writing and rewriting a novel only to find an online mob ready to hate it upon publication. One cleverly-worded Tweet of criticism, and it can start an avalanche of hate. Because of groupthink, these “Yeah, gee, it’s so awful!” comments can even come from people who have never read the work in the first place (again, see E.T. for the Atari 2600).

It’s one thing to critically analyze what makes something bad. You can comment on the inconsistent plot, or the dated graphics, or question the message. You can say it is derivative and unimaginative and compare it to earlier efforts, such as when my friend Ian Simmons wrote his review of Pacific Rim and compared it to Independence Day. It takes effort and experience to understand why something is bad and to be able to communicate it, and it comes from a desire for improvement. It’s a teacher giving a low grade on a creative writing assignment with the note, “I expected more from you.”

But it’s another thing entirely to slam something without giving much thought to it. At best, it’s a drive-by insult. At it’s worst, it’s bullying. It’s more about the humor of a good put-down than about seeking improvement. It’s the teacher who hates teaching because he despises the students and has to insult them to feel better about his miserable life.

When everyone has the ability to create, you are going to see a lot of terrible creations, and the ease of publishing means some of these creations get front-page status.

That top 10 worst games video on YouTube got over 2 million views. There was a choice made about what to focus on, and the creator of the video decided, “Yeah, let’s go for negativity.”

That’s 2 million people who got the subtle message that criticism is the same as complaining, who think that it’s normal to highlight what’s wrong with something, who shed at least one point of resistance to expressing an insult about someone or their creation because, hey, look at all those other people having fun at his/her expense.

I’ve been focusing on reviewers and critics, but the original purpose of this post was to focus on the act of creation itself, and specifically about game development.

With the wide availability of high-quality tools and resources, anyone can make a game, and many do.

Some people make great games, some people make mediocre games, and a lot of people make clones.

But some people make games with questionable designs. There was a choice about what to include in a game, and the creator decided that gratuitous violence, casual misogyny, and even downright hate was the way to go.

It’s one thing to make a game about shooting everything in sight when everything in sight is out to get you, like in Space Invaders or Doom.

It’s another to make a game in which the only motivation is death and destruction for its own sake. Here you’re just putting together game mechanics with perversity, and not in a good way.

You could simulate complex interpersonal relationships, or you could go the easy route of hypersexualization, stereotypes, and power fantasy.

There are legitimate arguments and positions to take, and there are careless (or careful) non-positions that do in fact take a position.

For instance, making a game about doing nothing but shooting civilians “just for fun” says something about your worldview and the worldview of your game’s fans, at least in what’s considered “fun”.

It’s a choice.

And with the increased availability of tools and publishing platforms, anyone can make these kinds of choices.

And many do. Sometimes without realizing that they are making important choices.

And some of these choices get front-page status, which means a lot of people get the subtle message that these choices are normal.

It’s why I prefer highlighting the best and get uncomfortable when it comes to tearing down the worst.

Because focusing on the worst is easy. Anyone can do it, and anyone can make horrible stuff so there is always fodder, but more importantly, it sends a message that focusing on the worst is a good use of time, that it’s innocent and fun to dogpile on someone after they dared to put themselves out there.

It can be petty and mean, and I like to think the wider community can do better.

And focusing on the best means that the creators of purposefully bad creations don’t get rewarded for being horrible or lazy. It means raising something up and saying to everyone, “See what amazing things can be done?”

It means inspiring people to make the choice to aspire to good work, to expect more from themselves.

Categories
Game Development Geek / Technical

How Supreme Commander Handled Rendering

I found this neat exploration of the insides of Supreme Commander, the spiritual successor to one of my favorite games, Total Annihilation.

Specifically, in Supreme Commander – Graphics Study, Adrian Courrèges takes you through a tour of the rendering of a single frame of the game.

Animations show each step in the process, making it easy to see how you can go from culling a subset of the terrain to adding shadows to rendering meshes and particles to overlaying the UI.

Categories
Game Development Marketing/Business Personal Development

We’re Over Halfway Through 2015. How’s Your Scoreboard?

Did you notice that the year is half over?

That we’re in the 3rd quarter of the year, and also that the first week of it is already over?

Most people have long forgotten their New Year’s resolutions. Others have solid goals they’ve kept in front of them on a daily basis.

For some, the passage of time is terrifying. It’s a reminder of how much older we’re getting. Some people wait until the last minute to work on something important, cramming it all in at the end, and I’m sure it’s true on a larger scale as well.

For others, the passage of time is merely a constraint. They knew there would be a point in time when 2015 would be halfway over. The question was what they might accomplish by then. What would they learn? How healthy will they be? What kind of individuals will they be?

I’ve struggled with keeping an awareness of my goals in the past. I would set goals, and I would even be specific about them. I wanted to lose 20 lbs, or I wanted to earn a set amount of income from my business in a year.

And then it would be the end of the year, and I would find myself thinking about setting goals, which reminds me that I’ve already set goals.

I just forgot about them.

One problem is I didn’t make plans to accomplish those goals. A goal without an plan? It’s like saying “I’d like a million dollars” and never caring one way or another if I get it.

Even if I did make plans, they would be vague and easy to forget. No matter how detailed or lightweight a business plan is, it does you no good if you keep it in a drawer and never look at it.

Another problem is that the goals weren’t very inspiring on their own. They lacked context. Losing weight is OK, but it sounds like loss and pain. Being healthy and fit sounds exciting and inspiring. What could I do if I was fit enough to play a soccer game like I did when I was in high school? Or even better, if I could keep up with my nieces when we played together?

Making money from my business is OK, but I had no reason to expect the money. Why would people pay me? How can I even expect the rate of sales that it would require? Setting goals about the value I provide to players, on the other hand, is something that I can control. It keeps me customer-focused.

But I found that making the goal a daily part of my life was key to keeping my awareness up.

I have goals for my business. I have a few metrics I care about, and I used to have the same problem of forgetting about the goals I had set.

For instance, my higher level goals involve the number of games published and the number of new customers I find.

It doesn’t matter what number I set if I then go about my day to day ignoring them. Then if I do remember to check my status one day, I’ll find that nothing has changed.

So I made a rudimentary scoreboard out of a corkboard and some index cards.

My Scoreboard

It’s on the wall across from my desk so I can look up and always see what my goals are and how I’m doing. I have a spreadsheet on my computer with similar data, but it requires me to open it and specifically look at it. This scoreboard, however, is easy to see at all times, which keeps my mind focused.

I have a day job, so finding time to work on my business is an important consideration, which is why I have a goal for the number of hours I spend doing game development, and I have another goal for time spent doing business development. If I don’t pay attention to my time, it’s easy for me to let opportunities to work on my business slip.

But just spending time on game development isn’t an end in itself. It’s meant to lead to the bigger goals, which are marked with a crude drawing of my logo.

I want to publish a game this year, and I want to gain at least one new customer from it. Why only one customer instead of a thousand? Because that first customer will be a major accomplishment, and I will move the goal posts once I do accomplish it.

I see my blog as a key part of my marketing, and so I have content goals for it, too. In the last two quarters I ignored my blog so I could focus on game development. I figured a post a month would be decent.

But for the next quarter, I want daily posts. My reason for the massive increase, which requires me to take precious time from game development?

It’s another way to keep my goals in front of me. I’ll write about my business, about my vision, mission, and purpose, on a daily basis, which means I’m consciously putting these things in front of me.

I used to do so by making a short post on my Google+ profile, but I thought, “Why am I giving my words to Google? Why not own the content myself?”

I don’t want half of the year to pass without me realizing it and without any change in my goals. My goals aren’t mere wishes. I know they require conscious effort to accomplish, which requires me to keep them in front of me, no matter how hard it gets or how many distractions there are.

I’ll adjust my scoreboard throughout the year. Each day is geared towards the week’s accomplishments, which are geared towards the monthly goals, which are in support of my quarterly goals. If I decide my goals need tweaking, such as the number of game development hours I spend, I’ll set a new target, and I’ll make plans accordingly.

For instance, last quarter I dedicated two evenings to game development in an effort to get to 100+ hours, but I found it was difficult to keep those evenings dedicated with a lawn that needed to be mowed and various other urgencies cropping up.

So I’ve scaled back to 60 hours because I believe it is doable while also giving me a reason to stretch. My productivity is very low compared to where I want to be, and even though 60 hours in a quarter isn’t very much at all, it’s more than I have been demonstrating. Last quarter I did about 48.5 hours, and the quarter before that was 43.25 hours.

It’s hard to accomplish much with so few hours. I’m aware that some people spend hours daily on their part-time businesses. For me, 5 hours a week would actually be an improvement, so that’s what I’m aiming for these days.

But if I didn’t keep these goals in front of me, it would be easy for my actual time spent to be near 0 hours a week because I wouldn’t realize the time was passing. I wouldn’t realize that half of the year had passed without much to show for it.

Instead, I’m able to look back and see what I accomplished in the last six months.

So how’s your scoreboard? Are your goals top of mind?

Categories
Game Development Marketing/Business

Treating Indie Game Development as a Business Isn’t News, Is It?

A couple of days ago, Mike “PoV” Kasprzak announced his retirement from game development.

He will still be working on Ludum Dare and isn’t going away, but he’s no longer going to try to make games for a living.

Part of the reason is because he’s not feeling any younger and is looking to settle down. So I won’t post that potentially embarrassing picture of him eating at the Ludum Dare meetup for GDC 2011.

But part of the reason is because he’s concerned about a lack of opportunity in game development:

…my point is that it’s no longer about just making games. It’s not about games that look good, games that play well, games that have a message, games that are different, games in a popular genre or theme; No, instead it’s all about games that stand out, and games people want. You can’t advertise or market your way to success. Those things help, but only if the game itself has that potential. Almost every successful indie you know has put multiple years in to their projects. And for every indie you know, there are hundreds you don’t. It’s not practical to just make games and hope to make a living.

This news came shortly after Tale of Tales announced they were giving up on commercial games:

We really did our best with Sunset, our very best. And we failed. So that’s one thing we never need to do again. Creativity still burns wildly in our hearts but we don’t think we will be making videogames after this. And if we do, definitely not commercial ones.

There was this excellent article on Destructoid the other day claiming that game development is getting crowded.

And the problem is that just making a good game is no longer enough. The job of the modern indie developer is to make a good game & put it in front of millions of people.

And I think that means that we need to change how we think of indie game developers. From basement coders to people who understand marketing & business. After all, what we’re doing is running small businesses.

It sounds like the easy days are behind us, and it is going to take real work from now on to not only make a good game but also to do the ugly, messy things that it takes to run a business, such as marketing and sales.

But wait…hasn’t this always been the case?

I remember reading about the swelling of the supply in games on the Indie Gamer forums ten years ago. Someone was nice enough to keep track of the releases from week to week, as well as the top games, and eventually a conclusion was reached: if so many games are getting released every day, and it takes you anywhere from months to years to make a game, that’s a lot of competition you have to wade through to get noticed, and that’s only if you don’t count the many games released AFTER you’ve released yours.

So marketing and promotion were seen as key differentiators. People dedicated to these roles popped up because there was a big opportunity. Game developers wanted to work on games and outsource their marketing.

And this was back during the popularity of Flash portals, before the modern mobile era.

Here’s an article in 1999 responding to a post about why game development sucks:

Talin says there are lots of reasons for failed products. Crappy products, crappy marketing, crappy distribution, crappy placement at the stores etc.

But, ultimately it usually comes down to the fact that not enough people wanted to play your game. Especially in this day and age when you can put your game up just by uploading it to some file website. If your game is truly something tons of people get addicted to it will spread around this new wired world. If on the other hand people don’t want your game nothing is going to make them want it.

People were still using shareware to market their games back then.

So, yes, the tools to make games today are easier to access than ever, which means anyone can make games, which means anyone is making games.

It’s crowded, and it is hard to stand out.

But it has always been a business, and most of the serious indie game developers knew this fact. It isn’t some new revelation. The tactics might change, but the understanding that you needed to do market research and get people to know your game even exists was always there.

I don’t like cliché, but “If you build it, they will come” isn’t a viable, sustainable strategy for a game developer. It hasn’t been one in a very, very long time. Maybe when the first personal computers were being released, and your competition was almost no one, then sure, just having the only game in town might work.

And if you are only interested in making games as a hobby, then go to town. Make the games you want to make and see if people might enjoy them. Maybe you’ll make some pizza and beer money as a bonus!

But if you are interested in a sustainable living making games on your own, it’s hard because you aren’t just making games anymore. You’re doing market research. You’re doing product management, which is different from product development, which is different from project management. You’re doing contract negotiation, hiring, firing, accounting, accounts receivable, accounts payable, and more.

And if you are doing it by yourself, you still wear all of those hats even if you neglect a number of them.

But none of this is really new. It’s just an awkward truth that has to be learned by each generation.

Categories
Game Development Geek / Technical

Fun with Game Physics Bugs

I was working on a game involving leaf raking, and I tried adding physics code to it. I researched a lot until I came across Randy Gual’s Custom 2d Physics Engine tutorials.

My own implementation leaves a lot to be desired so far, as can be seen in this YouTube video I uploaded of leaves ricocheting when I turned off damping to see what was happening:

Somehow they seem to pick up more speed after some hits but not always. I’m sure it has something to do with how I calculate the velocity along the normal of the collision.

Categories
Game Development Personal Development

Learning from Game Development

Over a decade ago, while I was still in college, I went to my first indie game developer meetup. It was in a suburb of Chicago at a Starbucks, and it involved mainly people who participated in Dexterity Software’s game development forums, which are now the Indie Gamer forums. My first meeting’s minutes are still online: Indie Game Dev Meeting Summary December 2004

It was kind of a mastermind group. We showed off what we were making. Or rather, they did. I never had anything to demonstrate. I played their games and gave feedback, and we talked shop and set goals for the next month’s meeting.

Some people traveled from downstate to make it out to these meetings, which alternated between that Schaumburg Starbucks and the Dave & Buster’s in downtown Chicago.

I remember while packing up to leave one meeting I asked everyone, “How do I get better at programming?” At the time, I felt like I wasn’t making a lot of forward progress and it was mostly due to my lack of experience and knowledge.

I remember getting a few looks, there was a pause, and then someone said to nods of agreement, “Just…do it.”

It didn’t feel like very helpful advice, but I chalked it up to the idea that no one actually knows how they get good at something. When you are good at it, you don’t remember how you got there because your goalposts are always moving, and if you aren’t good at it, you don’t know how to change that fact.

Unless you ask, of course, and “just do it” actually is fantastic advice.

I learned C++ in college, but it was Visual C++ 6.0, and it wasn’t consistent with the C++ Standard, and I think I was taught wrong. I remember reading code online and not understanding why people were needlessly using “advanced data structures” such as vectors and sets. I taught myself BASIC on the Apple II c+, but programming in C++ was not fun or enjoyable.

But then I found some advice in the GameDev.net forums to read Accelerated C++: Practical Programming by Example. I bought the book, forced myself to read it from the beginning and do the exercises, and wouldn’t you know it, it turned out that C++ wasn’t so bad. What were considered advanced topics in college were introduced in the first few chapters.

I was still struggling to be productive with programming. I was challenged to find tools and libraries to make my job easier, and it is how I learned about a sprite engine, which I blogged about extensively.

I learned how to use libSDL. I succeeded at my first game jam when I attempted to work on Game in a Day, which was hosted by people at Garage Games. Kinda. I made something playable. It just wasn’t what I wanted to make originally.

And I learned a ton participating, including the first time I had an overwhelming sense of fear that I had no idea what I was doing and should stop, even though I had no rational reason for listening to this fear. I pressed on somehow, but I was shocked at how that experience challenged me. I didn’t expect it.

I had that almost tangible anxiety a second time, probably during my first Ludum Dare compo, but it was less powerful and I recognized it and pushed through it, and I haven’t felt it since.

I started finishing games. I built confidence in my abilities. When I read my old blog entries, I read about someone who struggled with focus and time management, someone who felt like he wasn’t putting in enough effort to learn and work on games.

But over the years, chipping away at ignorance made a difference. Today I’m seen as not only an expert in C++ but also in software development in general. I still find myself surprised by C++ today, though. For instance, sometime in the last couple of months I learned that I could forward declare more often than I thought I could.

A decade ago I couldn’t code my way out of a wet paper bag. Today, I could rearchitect a complete game halfway through its development without so much as a flinch.

Most of my experience and knowledge of software development came about due to my persistence with working on my own game projects. I did research on best practices. I sought answers to the problems I ran into. I wrote code outside of class and outside of my day jobs.

I just did it.

And while I might not have felt I was making a lot of progress on any given day, over a decade of such days resulted in a ton of growth.

It could be argued that a more focused effort with a lot more time dedicated to it would have been better, that I could have gotten to the same point years earlier.

But the advice would still be the same. You want to learn how to be a better programmer, artist, game developer, mathematician, engineer, or designer?

Just do what they do, and push through the “I suck” phase until you get the hang of it, push through the fear where you feel like you might choke and give up. Just do it, and even if you don’t figure it out today, tomorrow you’ll know how.

Categories
Game Design Game Development Geek / Technical Linux Game Development Personal Development

LD#32: A Giant Weapon Development Time Lapse #LDJam

I created a time lapse video of my development of “A Giant Weapon”:

Once again, you can find the game, albeit incomplete, at http://ludumdare.com/compo/ludum-dare-32/?action=preview&uid=251.