When I was younger, I loved the challenge of sneaking around the house during the holidays to find my Christmas presents before Christmas Day.
I like I think I was pretty good about it, too. I would sometimes find the already-wrapped boxes above the china cabinet or in my parents’ dresser.
Once I located the packages, I would slowly peel back the tape, being careful not to rip the wrapping paper. Then I would peek at what was inside, and after seeing the picture on a box or a name in big, bold letters, my curiosity would be satisfied. I’d replace the tape, and no one would be the wiser. Or at least I thought so. Maybe I believed I was sneakier than I really was.
One year, however, I went a little far. Well, ok, a lot far.
I didn’t preorder it, so I didn’t get the cool gold cartridge, but I knew my mother had gotten me the game for Christmas.
But who could wait that long?
So I found the box, peeled back the gift wrapping on one end, sliced through the shrink wrap, opened the box, took out the game, and replaced it with another to ensure that the weight of the gift felt the same. I believe I used Body Harvest since I wasn’t playing that much at the time.
I think I played the game for two weeks before Christmas, and as far as I know, no one noticed that I was playing a game that I wasn’t supposed to have yet. When I opened my gift on Christmas day, I showed a lot of gratitude, and when no one was looking, I put Body Harvest back in my collection of games and continued playing Ocarina of Time from my last save point.
At some point, my family started double-wrapping my presents, which meant that I could no longer carefully peel back the tape and wrapping to see what I was going to get. I would just see more wrapping paper, and I wasn’t going to risk ripping it and giving away the fact that I had found the presents.
Today, my own home is preparing for the holiday. As of this writing, the stockings are stuffed, including the ones for the cats.
Hopefully Diego and Gizmo don’t sneak a catnip toy before the morning.
May you enjoy sharing tales with loved ones of the glories of Christmases long, long ago. Merry Christmas, and happy holidays!
There’s been a meme going around in which indie game developers have posted photos of themselves today juxtaposed with photos of themselves from 10 years ago.
It took me forever to find a 2006 picture of myself.
Let’s go back in time.
10 years ago, states were passing laws to ban the sale of video games to minors. It was after Bush was elected and everyone was falling all over themselves to prove they had “family values”, so a lot of governors were posing with moms and demonizing the great scourge of video games. In the end, each state had its law struck down as unconstitutional (which is to be expected when you base your law on versions from the other states that had been declared unconstitutional already), and it cost the states a lot of money.
Roger Ebert was claiming that games could never be art. Again. And some high profile people in the game industry were arguing the same. I gave my thoughts back then in What Are Games Good For?.
Games were projected to double in revenue by 2011 driven by online and mobile gaming. Keep in mind that the iPhone wasn’t introduced until the next year, and so everyone was thinking mobile meant Java and Brew or Palm Pilots.
Digital Rights Management was in the news, whether it was about computer hardware, games, or things like the Broadcast Flag. I made my opinion known about how annoyed I was that people were so cavalier about it.
Steve Pavlina’s Dexterity.com shut down that year as he completed his transition from the game industry to the personal development industry. His game developer forums eventually became the IndieGamer forums, and his old game development articles turned up either on his site or elsewhere.
The World Cup was in Europe, and the United States had one of their most epic matches against Italy, with both sides losing players before the final whistle. The US was defeated by Ghana to be eliminated in the group stages. Super disappointing. It took two more tries before they would beat them.
Back then, I was living with a girlfriend in an apartment in Chicago. I was working as a paid intern at the Chicago Mercantile Exchange in the UNIX group, and shortly after I formed my company, I got a software development job at WMS. It was across the street from Midway Games, and I worked on slot machines.
My cats, Diego and Gizmo, entered my life that summer. Before them, I never even had so much as a goldfish as a pet, unless you count the rooster my father brought home one time which I later realized was the dinner my mother prepared the next day.
During crunch time, I would get home feeling dead, and the next thing I knew I would have both cats curled up on me as I lay on the couch. I hated crunch time, but I loved those moments with my cats.
As someone interested in becoming a better indie game developer, I joined the Thousander Club. Back then, everyone was recently introduced to the idea that it takes 10,000 hours of practice to become an expert at something. Seriously, everyone who was blogging was blogging about it. If you work on your craft for a few hours a day, over the course of a year you would do about 1,000 hours, well on your way to becoming an expert in 10 years.
The Thousander Club was a way of tracking my hours and publicly holding myself accountable. Aside from the person who originally started it, I don’t remember too many people joining this club, but I would keep it up for a few years, although I never spent that much time in a given year on it. By the end of 2006, I had only 262.25 hours, only a little more than 25% of the goal.
I was working on a game I codenamed Oracle’s Eye, and I can’t remember what the game was about at this point. I remember a ball that could be bounced around the level by the player.
It was a stick figure in 2005. I actually like the look of the tiles. Eventually I created a business man sprite.
Since I was writing the game from scratch using libSDL, I encountered and had to solve issues most kids these days get for free with their Unity3Ds and their GameMakers. I had to solve my own hit detection issues, such as the ball or the player entering and getting stuck in walls. I spent time learning the wrong and better ways to write code to make objects move around. Thanks to those early efforts, today I recognize certain issues before they become issues. That’s experience.
But I was bad at finishing my projects then. I had plans to submit a game to the Independent Games Festival that year, but I eventually started over with Oracle’s Eye Prime, which I also don’t have much of a recollection of. It was one of those “I’ve learned so much! This time I’ll do it better!” kinds of restarts. I never finished it, and I never ended up getting a game submitted to the festival. I was super frustrated with myself about that failure.
I switched to creating a Pong clone (I should write another one just to see how much faster I could do it today), and later a Space Invaders clone.
I created this desktop image to inspire me to finish my project.
Note the orange “ship” which was originally blue.
I was just starting to learn about Agile software development and wondering how to apply it to my own efforts to make me more effective.
I joined the Association of Software Professionals the year prior and wanted to become more involved so I could get more out of my membership. A lot of indies joined back then, and many of them let their memberships lapse, which was too bad. I attended the Grand Rapids Schmooze and met a bunch of great people I’m still friends with. Eventually I became a board member and then president of the organization, something I didn’t really anticipate back then.
The next year’s resolutions included the goal of selling my first game, but I woefully underestimated how much I still had to learn about making games, let alone selling them.
And today?
Since then, I had saved up a chunk of money, quit my job, moved from Chicago to Des Moines, Iowa, all to go full-time indie and live the dream. I got quite a bit of feedback from people in the industry which I promptly ignored, then ran out of money and got a day job again after about two years. So, GBGames is back to a part-time effort for me.
So four years as an employee at a company making slot machines, two years being a full-time independent game developer, and now another four years as an employee, only now I don’t work on slot machines and the devices are quieter.
I went to GDC in 2011, so I could check that off my list. I met a lot of people I’ve only ever known through the Internet, including a bunch of people from Ludum Dare or the IndieGamer forums.
These days when I learn that someone’s kid is really into Minecraft, I find that half the time they get super impressed when I say, “You know, I met Notch once.” The other half of the time they say, “Who?” That meeting, by the way? We talked about our Ludum Dare projects before he had to go handle some email emergency.
Shortly after GDC, I proposed to my girlfriend on the balcony of a castle in Europe. We got married. I still have two cats. I’m a home-owner now.
My four years working on slot machines taught me a lot about working on big projects, but my experience working on Stop That Hero!, writing and designing everything from scratch, turned me into a pretty good software developer. I leverage the knowledge and expertise I gained from game development at my current day job, which pays me well.
I spent way too long working on this project, but I’m still very proud of what I was able to accomplish with it. It’s currently on the backburner indefinitely.
So, in general, I’m doing great. I’m fairly healthy. I’m getting paid very well to apply my skills and training daily. I’m fortunate to be married to a wonderful and incredible woman. I am living in a comfortable and spacious home. And again, I have cats.
And yet…
But my business isn’t doing well at all.
Part-time efforts means that things run slowly. What I thought would take me a matter of weeks ends up taking many months. And being slow in this industry is death when there are dozens of games being released daily. I learned about the importance of speed at GDC in 2011, so I knew this fact even before the market got flooded.
I once went to a talk by an entrepreneur who said working part-time on a business just isn’t sustainable because by the time you put something out there, others with more resources and time on their hands might have gotten there first. He said there’s a reason why many entrepreneurs end up divorced.
Well, that sucks. My priorities put being a good husband above my business, and I know other people make different choices in this regard, but I love my wife and can’t see ever deciding that my Limited Liability Company is more important than our partnership.
When I was single and younger, I could work a full-time job, then work for hours on my game development without too many worries. I was just undisciplined and unfocused then, so I didn’t take advantage of it as much as I should have.
Today, I’m better disciplined and more able to focus, but now my time is split quite a bit. I’ve learned that I can’t work on my business too much before I start getting rubberbanded back towards other responsibilities or my health starts forcing me to pull back.
The year prior to 2006, I assessed my ability to create at a very low value and identified it as my major weakness. It’s why I joined the Thousander Club, and I wish I put more time into it back then.
In 2006, I did 262.25 hours of game development. That’s about 1.4 hours a day, which isn’t much, but it can work. It didn’t really result in much that year, though.
This past year? I only did 259.5 hours of game development so far, although that number doesn’t include the 40+ hours of writing and 40+ hours of business planning and marketing I’ve put in. Yet, I had a plan, and I managed to publish. 10 years on, and I am still taking too long to work on a game, but at least I finish my games now.
My three month project that took me 10 months to publish. I think it’s a pretty good business strategy game, and I’m REALLY proud of finishing this one.
Yes, it was meant to be finished in three months and took about 10, and even though I spent a lot more time on game design and balance as opposed to infrastructure and technical details, I still felt very frustrated with how slow this project went.
My wife pointed out that had I worked on it full-time, I easily could have done the almost 260 hours within three months.
Fair enough. I felt better. A little. It’s easy to get frustrated when you compare your struggles and efforts with the successes that other people publicize, or with the future possibilities. Saying things like “I’m a failure because I spent a year making a dinky game while this highly polished mobile game is making millions” is a good way to get yourself stressed. I went through that with my previous project.
You need to measure your progress looking back at where you came from. And compared to how I was in 2006, I’m way more capable as a game developer, as a software developer, as a partner in a relationship, as a business owner, and as a leader. I mean, I know terms like “the Dunning-Kruger effect” now.
10 years goes by quickly
But in 10 years, I’ve only published less than a handful of games commercially? Oof. I still haven’t submitted a game to the IGF. It’s not that I haven’t worked on games, but unless I take my Ludum Dare or One Game a Month projects and polish them up for release, they kind of don’t count except as ways I’ve gained experience with making games.
But again, when I think about what I have accomplished since 2006, it adds up to a few commercial attempts and over 20 different published projects that are more or less playable. Each Ludum Dare game jam or experiment adds to my expertise. Each finished project makes the next one that much easier.
So, I’ve grown quite a bit. And I did it my own way. And doing it my own way was part of the appeal of going indie in the first place.
I don’t know too much about what my life will be like in another 10 years. My wife and I will be middle-aged then. My cats are getting old and may not be there with us, which makes me sad when I think about it. I’m getting old, and I worry that I’ll fall behind in terms of my technical expertise with artificial intelligence and automation threatening once-secure jobs. I worry about continuing to miss out on opportunities. I feel out of touch with the game industry as it is. I worry about becoming a sad old man who refuses to acknowledge the futility of what he’s doing.
Frankly, I don’t have an exit plan. I don’t have an idea of a situation or point in time when I say, “Well, that’s it. I’ve hit the limit of what I will accomplish in game development for my lifetime.”
Ever since I went back on “corporate welfare”, I’ve been working slowly and trying to build up my business, with the expectation that it will all come together. I don’t mean getting lucky with a hit game, but that the business will eventually become sustainable as my full-time employment.
I have been aiming to build up streams of income, rather than hope for a big jackpot. But for a few years now I’ve been worried that the premise isn’t workable, that it’s not possible to do what I’m doing and expect great things eventually. I’d hate to think I’m limiting myself to mediocrity.
But I chose my current approach because there are certain things in my life that I value as more important. I’m trying to be the tortoise and shouldn’t get frustrated when the hares around me are sprinting by, often off cliffs.
Many of the game developers and blogs I followed back in 2006 are no longer around. Some retired. Some switched industries. Some gave up.
I’m still here, though.
And I expect to be here for another 10 years. In order to have more to show for it by then, I’m making plans to do more rapid and focused learning and hard work now to get me there. Part of that is rereading some of the advice people gave me in the last 10 years and reconsidering what I’ve ignored or misunderstood then.
If I love anything more than a good game, it’s people writing about their experiences with a good game.
The stories we tell about games are often more fascinating than the stories made for games.
I’m thinking of Fansy the Famous Bard of EverQuest, or a riveting story I can’t find now about a player in EVE Online who decided to go straight to nullsec space with nothing but the cheapest ship and see how long he could survive (if anyone knows which story this is, let me know. I’d love to find it and reread it again).
And now my friend Jim Boyd has created the Midlandia Internet Gazette, “an online news feed for the SimCity 4 region Midlandia, established in 2015.”
Midlandia as of December 2016 is comprised of 23 interconnected cities, with an overall population of 881,000. Among its highlights are an international airport, two Major League baseball teams, several universities, two movie studios, three television stations, and numerous radio outlets. Midlandia is a growing region, and is looking to break 1,000,000 in population by the beginning of 2017.
There are only a few posts as of this writing, but I look forward to reading about the development of Apia and the rest of Midlandia.
I just learned about the book Independent by Design by Stace Harman and John Robertson.
And now I want it.
Independent By Design is a celebration of indie games and independent videogame creation, presented through a deluxe hardback book that chronicles the experiences and vivid design of over twenty of the world’s most revered and renowned indie game developers.
Each chapter tells the story of an indie game development studio, such as Vlambeer or Frictional Games, and the book looks gorgeous.
In fact, there’s two different books. One is the basic, “core” book, which you can get signed by the authors for a little extra cost.
The other is the Transcript Edition, which features “written transcripts of the dozens of hours of interviews we’ve undertaken with independent developers and videogame industry figures.” It’s quite a bit more expensive, but it sounds like a great way to get into the heads of multiple indie game developers without having to do your own set of interviews.
My mom did ask me what I wanted for Christmas recently…
Available now in the Google Play store, the leaf raking business simulation game Toytles: Leaf Raking puts you in the role of a budding entrepreneur looking to earn enough money to buy yourself the Ultimate Item(tm)!
During the 90 days before winter, you’ll:
Seek out neighbors who need your services and turn them into paying clients.
Make key purchasing decisions, such as which types of rakes to buy and how many yard bags to keep in your inventory.
Balance your energy and your time as you seek to keep your clients happy without overextending yourself.
Visit the kitchen to ask your parents for their advice and wisdom.
Learn about personal responsibility and the importance of keeping your promises.
Pay attention to the weather forecast! You can plan your work around rainy weather and windy days, taking advantages of lulls to catch up on yard work for your clients.
Seek out clients in your neighborhood, and keep them happy! After all, they’re paying you to clear the leaves from their yards.
While your basic rake will get the job done, you’ll want to upgrade to tackle heavier leaf coverage more efficiently.
Earn enough money to buy the supplies and rakes you need to keep your business going. You’ll visit the store regularly.
Explore your neighborhood, but keep an eye on the time! You’ll need those hours to get your work done.
Make plans and use strategy to earn enough money to buy the Ultimate Item(tm) and win.
NO ADS, NO IN-APP PURCHASES, AND NO VIOLENCE
Have peace of mind with an ad-free, safe game that may inspire your own entrepreneur.
Get your copy of Toytles: Leaf Raking today, and see if you have what it takes to run your own leaf raking business!
After over nine months of development, I finally had a game I felt good about brave enough to release to the world.
My major goal was to release the app on the Google Play store first to get a sense of what the process is like and to get direct knowledge about the customers there.
I clicked Publish late in the evening of Saturday, October 22nd. Whew! A big step!
But now I’m in “Pending publication”, and while many unofficial resources mentioned waiting mere minutes to a few hours, I learned that Google changed its policy in 2015 to manually check apps. It still doesn’t take two weeks like it might on Apple’s App store, but it might take a little longer than it used to.
The status switched from “Pending publication” to “Published” the morning of Monday, October 24th. Woo hoo!
Er, wait. Sorta.
For an entire day, and even now the next morning, October 25th, I still see “We’re sorry, the requested URL was not found on this server” when I click on the “View in Play store” link.
I keep finding all sorts of unofficial explanations about caching and how long it can be expected to take for listings to propagate through the system, but the only hint that it might take much time at all is in the Developer Console help article “Issues publishing apps” which asks if it “has been over 24 hours since published”, but then goes on to talk about search algorithm changes and reasons why apps might get filtered out on certain devices.
It doesn’t address a published app not actually being available anywhere.
It’s kind of difficult to feel good about finally publishing my project when I can’t point out any evidence to anyone. As a first-time publisher on Google Play, this experience is confusing and leaves a bad taste in my mouth.
According to someone on IRC, they had emailed earlier in the day and learned that there were some technical difficulties on Google’s end:
“Typically apps can take up to 24 hours to appear on the Play Store, however we are currently experiencing longer than usual delays across a large portion of our system. Our technical team is actively working on a solution and hope to have this issue fixed by the end of the day.”
So, we wait.
I find it confusing because when I self-publish on my own site, I don’t consider the game published until someone else can actually see it.
But this experience is teaching me about the process way more than reading about it ever would.
Flash game developers may remember Flixel, the open source game dev library created by Adam “Atomic” Saltsman.
HaxeFlixel is the Haxe-based port that eventually became its own full-featured, mature library that allows for deployment across not only Flash but many other platforms.
The five-year-old project is an open source project using the MIT License. That license, unlike the GPL, does not require code changes to be released to the public.
While the MIT License is appealing to developers who want to leverage freely available code for their own projects, there is nothing to encourage contributions to the source code of a project that is under that license.
The terms of the GPL requires any modifications to be released, so it solves the problem of people taking advantage of the code but not contributing back. But if a project’s developers don’t want to make that requirement, would prefer to have the MIT License applied instead, and still have people contribute to the project, whether in monetary terms or source code, what can be done?
How We Paid Our Open Source Taxes documents how the HaxeFlixel project was able to “collect its open source taxes with smiles on all sides.”
In this case, the core contributors realized that the project founder lives in an area where the cost of living is much, much less than it would be in, say, San Francisco. Just $6,000 would be enough.
So rather than having a vague fundraiser and hoping to make a bunch of money to meter out as needed, they were able to make a hyper-focused plea with their IndieGoGo campaign to get enough money to gain a full-time developer rather than require the project to continue to be supported by an all-volunteer base of contributors.
It’s kind of like when you talk to people about how much money they wish they had in life. Some people talk about “a million dollars” as if it is a lot of money that they’ll never see in reality, and other people realize that they can get penthouse apartments complete with maid service in some exotic countries for less than the cost of a New York apartment, such as what Tim Ferriss described in The 4-Hour Workweek.
The trick is learning what’s really possible.
HaxeFlixel’s story gives some insight into not only how an open source project operates but also teaches the lesson that if you know exactly what you need, it’s a lot easier to ask for it.
While I don’t disagree with many of his points, I don’t think it ever really lands home the argument that games are somehow “SuperArt,” beyond mere art and evolved into something that is somehow more.
I love literature and theatre. I love great movies. Yet, I can’t remember any work of art, no matter how good, that consumed and drained me as much as the Cyberdemon in DOOM.
You could make the same argument about sex, which is also not something that someone would argue is art in the first place.
Arguing that games are financially doing well, incredibly culturally relevant, and published in great numbers is somehow arguing that games are doing great and don’t need to be forced to grow up and become art…as if someone is making this argument?
Artistic accomplishment? Creativity? Look up any Best Games list from 2014 or 2015. Video games are breaking new barriers in craftsmanship and artistic expression every year and turning profits while they do it.
Game of the Year 2014: Alien Isolation, so basically Metal Gear Solid with horror? EGM’s quote according to the Wikipedia article: “”succeeds as a genuine effort to capture the spirit of the film franchise in playable form.” So a SuperArt form that is oddly derivative of the art it is supposedly beyond.
Best Singleplayer: Dragon Age: Inquisition, a sequel. It may be an awesome sequel, and perhaps they did some innovative work there, but it’s a sequel.
And 2015’s version of these awards went to Metal Gear Solid V and The Witcher 3. More sequels.
Sometimes I go to movies to see sequels, as well, but when gaming’s top offerings for the last decade boil down to space marines (to the point that Ubisoft publishes a game called “Space Marine”), World War II first-person shooters, and sequels to successful franchises, sports or otherwise, it’s hard to argue about how creative the game industry is. Even Minecraft, which don’t get me wrong, is incredible and not only offers a lot of ways to BE creative, but also involved quite a bit of creativity to implement, was originally based off of Infiniminer, and steals (and gives back) from Dwarf Fortress, among other games.
But then, Microsoft always liked to claim innovation with the caveat “for the first time on Windows…”
Listen, I don’t think anyone looks at certain popular films or novels as high art. Some of them are just candy, and candy sells well. So I don’t look to best of lists for innovation. I look to them for popularity. What’s everyone playing? Quite frankly, most everyone is playing sequels to games they already liked, overlooking some of the truly innovative work that is out there. That’s popularity for you.
No, I don’t think poorly of the game industry. I think what we do is amazing, and I have also argued against people like Roger Ebert who thought games can’t be art.
But when film was new, people thought it was a poorer form of theatre. Theatre was ART. Film? It was never going to live up to theatre’s ability to be art.
Then film came into its own. I’m sure people argued that film’s capabilities were so beyond theatre’s that art no longer was an appropriate term to describe it. Speculation on the future of film in its infancy leads to such flights of fancy.
Games are interactive. They pull you into an experience in an active way, which can be considered superior to the passive way a movie or book does it. Games can be elegantly well-designed. Games can do more than film, writing, sculpture, painting, or any number of art forms…in certain kinds of experiences.
But not all. It’s why people still buy books and watch films and go to museums. The fact that more people play games and more money is spent on games changes nothing.
When I write a game, I try to make you feel like you have power. Then I try to make you feel the awesome, terrifying responsibility of having power. When I force you to make a tough decision, for a brief moment, I can reprogram your brain and take your thoughts somewhere they’ve never been before. This is amazing.
It IS amazing.
It’s also not unlike art, which can take you out of your comfort zone and make you rethink your outlook on life. People cry at performance art. People have changed their careers and lives based on books they’ve read. And games have also changed people’s lives in meaningful ways beyond sweating and dopamine hits.
We haven’t begun to come to terms with the power we’ve unleashed with these toys, these addiction machines.
Oh, ok. We’re beyond art, but we’re nothing more than a drug?
It’s one thing to argue that games don’t need to worry about denigrating themselves by calling themselves art and being associated with the lower mediums.
It’s another to make that argument and then kick the legs out from that same argument by making it sound like the people behind games are nothing more than drug pushers looking to exploit those looking for their next high. “Video games are popular to the point of global invasion. Find me a human, and I will find a game that can addict them.” So, games are just an opium for the masses?
I hate it when a good game is described as “addicting.” Call it compelling. Call it irresistible. Call it riveting, spellbinding, or anything else your thesaurus can throw at it.
But don’t compare games to mere drugs. While some games might aim that low, many more don’t.
And as awesome as our medium is, art is art. We’re not “beyond art.” We’re just a different form of art. An awesome form of art, to be sure, but I’m still going to call it art.
There are a lot of conflicting thoughts in my head about how I want to approach my efforts at creating games. Some of these conflicts are from seemingly contradictory pieces of advice I’ve received over the years, and some are just related to fear, uncertainty, and doubt due to inexperience.
I want to quickly get a minimum viable product out there in the hands of customers, get their feedback, and similarly very quickly make an informed decision to either tweak the existing game or abandon it for a completely different project. If I can do this quickly enough, I have more chances to earn enough money to make these efforts sustainable.
On the other hand, I don’t want to put out junk. I don’t want to release half-finished ideas, non-workable games, or projects that aren’t anywhere near ready. I want the projects to have a chance, and in order to be proud of what I put out, I need to finish my games.
But on the third hand, I don’t want to work on my project forever, constantly tweaking, adding, and removing inconsequential features. You might call it “feature creep,” but I don’t think that name really describes the issue I’m worried about. It’s more like being so afraid of pulling the trigger that you distract yourself into thinking there’s more development work to do to avoid thinking about the hard work of actually releasing the game to the public.
There’s always unimplemented features and more balancing work that could be done in a game, right? As a developer, I KNOW how to do that kind of stuff. It’s easy to stay in the comfort zone of being the technician.
And when you work by yourself, it’s easy to forget to take off your Developer’s hat, put on your Producer’s hat, and think about deadlines and what work is optional versus what work is core to what your game needs. You need to ship.
On the fourth hand, I will become a better game developer if I work on more games more often. There’s that story from Art & Fear by David Bayles and Ted Orland about the ceramics teacher who split his class into two groups. One group was graded on the quality of a single pot on the last day of class, and the other group was graded on the quantity of pots produced by the last day of class.
It turned out that the group that produced the higher quality pots was the group graded on quantity, mainly because the experience of creating each pot also gave them insights into how to make the next pot better. Meanwhile the quality group spent more time merely thinking about how to make a quality piece of pottery, and when it came time to actually put in the work, they were not necessarily up to the task.
So, if I focus on making more games more often, I’ll make better and better games.
Of course, on the fifth hand, I don’t want to make throwaway entertainment that people pay little or no money for and pay little or no attention to. I want my games to have meat on their bones. I want my games to be the kinds of games I’d play.
On the sixth hand, I am not my customers, and I need to make sure I create games with a target audience in mind. I should find out what THEY want to play.
On the seventh hand, I’m creating these games, and the message these games put out reflects what I want to see in the world. I own my art, and they’re not “just games.”
On the eighth hand, I’m not working on games in a vacuum. There are other games being made by other developers, and I should make sure to spend some time playing those games.
I should research other implementations, see what other developers have tried, learn what works and what doesn’t, all without spending the effort myself.
I should listen to podcasts, watch presentations online, and read blogs more regularly.
I can leverage the experience of other people.
On the ninth hand, I’m a part-time indie game developer. There’s only so many hours in a day that I dedicate to being a game developer, and if I spend it playing other people’s games and watching other people talk about how they do their work, I won’t have time to do my own work and put out my own games. I barely participate in online forums anymore, and I finally understand all of those people who complained about the lack of time to participate in forums. Where does anyone in my position find the time?
There’s a difference between doing and learning how to do, and there is always more to learn.
There’s also always more to do, and doing is the hard part.
On the tenth hand, I hate that I’m ill-informed about what’s going on in the world of games and their development. I was blown away to learn that multiple people were making virtual reality games for the most recent Ludum Dare 48-hour game development competition, as it sounds like the kind of thing that still requires a huge upfront investment. Clearly I’m out of the loop.
On the eleventh hand, I’m an indie game developer, which means I define my own rules of engagement.
It’s not a race, despite the realities of opportunity costs and trends, and despite the realities of impending life events that change everything.
Success isn’t defined by money but by accomplishing goals, despite the fact that earning a significant income from this effort would be a great side-effect of those goals being accomplished, one that could help me set and achieve bigger and better goals. Money isn’t a goal, but it can be a measure of progress. But it also doesn’t have to be.
When you’re starting out, you look to people who already know what they are doing to provide some guidance. And they are often more than willing and able to share what they think works.
But in the end, it’s easy to get stressed out about meeting someone else’s expectations if you don’t take care to set your own expectations.
I’ve had people tell me what I should do and what I shouldn’t do. I’ve had people question decisions I made and ask why I didn’t make a better decision on a choice I didn’t know I had.
There is no wrong or right way to go about this process, though.
Some people swear by putting out prototypes daily. Others like to work in secret for months or years at a time.
Some people like to explore one game mechanic fully, and others like to experiment with lots of different concepts.
Some people like to put out fully formed games to be consumed, and others like to release early development builds for people to nibble on.
Some people throw spaghetti at a wall to see what sticks, and other people like to plan out an entire evening with a multiple course gourmet meal.
If I use the same criteria for the spaghetti-thrower’s efforts that EA uses for their heavily-invested and marketed blockbusters, it’s going to look like a lot of failures and flops are being thrown at a wall. That’s not the way to make a blockbuster hit!
But the spaghetti-thrower has different goals entirely. They’re not trying to put out blockbuster hits. They might not even be trying to make something commercially. They’re trying to gauge interest in prototypes, seeing if there is a significant amount of interest in something before putting a lot of time, effort, blood, sweat, and tears into a more substantial work.
Following EA’s playbook is probably not going to help them achieve their goal. They’ll probably stress out way too much to be useful if they somehow get it in their head that EA has the truth about How Games Are Made(tm) and that they are not following it.
While other people might have great advice for their own expectations of how things work, it’s a lot less stressful (although still pretty stressful) if you politely ignore them and create your own expectations. You have enough to worry about without second-guessing if you didn’t make games similar enough to how some celebrity game developer did.
It’s fine to seek out and get advice, and it can all be really great advice, but don’t forget to make your own path.
This time, I’ll address the issues I’m seeing on Android and Windows platforms.
Android: manual code signing
Quite frankly, between running the game on my phone and on my tablet, I haven’t seen any issues since I first tried to get my game built and installed on this platform. The main issue I had was figuring out which directory to save to, and I solved that issue.
Oh, and code signing was another solved issue. I can build and deploy debug builds by turning on developer mode on my devices, but the release build needed to be signed. As I am not using amazing IDEs that have one-touch buttons that do all sorts of fanciness, I had to figure it out myself from the documentation.
Luckily, the Android developer documentation for signing manually was fairly straightforward in this regard. In my CMakeLists.txt, I added a custom target called sign, which requires the location of my keystore and its alias. I created a few environment variables that I pass into my build, and the following is basically what’s needed as per the documentation:
Otherwise, I found porting to Android be very straightforward thanks to using the NDK and libSDL2-based libraries. If anything, I worry about scaling to different screen resolutions and device-specific compatibility problems due to the lack of devices I have to test on.
I’ve already signed up for the Google Play developer program, so the main piece to worry about is actually submitting my app to their store. How hard could it be?
Windows: persistence and font rendering
While GNU/Linux and Android are more or less the same, Windows is the odd duck.
I can easily cross-compile to create a Win32 build, and with my limited testing I found that the 32-bit version runs smoothly on a 64-bit system, so that’s good.
Since I don’t need to use a lot of memory, there’s no real advantage I can see to building a 64-bit version of my Windows port. The main downside would be an inability to support people on 32-bit systems, requiring that I provide both 32-bit and 64-bit binaries as I might need to do for the Linux-based package.
However, I did have to fix a few issues this past week that I didn’t know were there until someone tested it for me. Thanks, Rick!
I knew of an issue with using MinGW to cross-compile to Windows in which using std::cout would result in a crash. I never looked too hard into it because I only used cout for my own logging in order to find out what is happening, so I just commented them out when I released for Windows, usually for a Ludum Dare game.
Well, it turns out that there was still a crash, and I found that if I commented out the code that saved the current game state to a file, it would run just fine.
Was the known issue applicable to file stream operations, too? Luckily, gdb can be downloaded and run as a standalone applications on Windows, so I ran my game on Windows through gdb and read through the stack trace. It pointed to yaml-cpp.
I use yaml-cpp to save and load my game data, and it works very well. But why does it crash on Windows?
I found this thread on GitHub that mentioned a similar stack trace: Crashy shared object
It was closed without really being addressed, as the original poster gave up after seeing the issue disappear when using a later version of gcc.
Luckily, someone else found a different solution involving a change to a few lines in yaml-cpp’s code, although they said more tests are needed. I tried it, and it seemed to solve the problem for me, although I am a bit wary about not knowing what the change does or how it solves it. B-(
The other issue I found on Windows was that resizing the window results in the text looking completely wrong:
All the other graphics look fine. Under the hood I am using SDL2_ttf, but using it directly isn’t showing this problem. I am using NFont, which does some caching, and I wonder if it is somehow being corrupted. I need to do some more tests, but this issue does not occur on my Ubuntu system, and Android doesn’t allow you to resize the screen dynamically at runtime, so it’s a Windows-specific issue so far.
I’ll continue looking into it, but updating to the latest version of NFont didn’t help. I tried updating my SDL2-related libaries next since some Windows 10-specific updates were made between the initial Windows runtime binaries and the latest release.
NFont’s creator Jonathan Dearborn has been running test apps I’ve sent him and sending back updates to try, and so far it seems we’re nearing a solution. Thanks for being so responsive, Jonny D!
The main major issue is signing my game’s binary. Windows 10’s SmartScreen puts up a warning about how they have protected your PC because they prevented the app from starting. It shows the binary as coming from Unknown Publisher.
That’s scary. I need to look into how to make it less scary. Does it require buying a code signing certificate, or is it similar to how Android’s code signing works? I don’t know yet, but I’m looking into it.
The other issue with Windows is that saving the game is sloooooow. In my game, I persist changes each time the player makes a major decision. Basically, if you click a button that switches to a different screen or causes something to happen in-game, I save so that if you shut the game down and reload it, it takes you back to where you were.
My Linux-based and Android-based builds are zippy. I can click, click, click, and any changes are instant. As a result, the game has been feeling very responsive despite the lack of a real-time need for it.
My Linux-based system does not have an SSD drive, and my wife’s Surface Pro does, and yet her system takes forever to save a file.
So on Windows, it feels less like click, click, click and more like click, wait, see screen update, then click. Because of the delay, sound effects are playing too early as well. It’s a lesser experience on Windows.
I haven’t ever needed to do multithreaded programming before as a single thread was usually plenty for the work I’ve ever done, but now I am wondering if I should spin of a thread specifically for writing to a file due to this issue that seems to be Windows-specific.
How Much Longer?
Ok, so there’s some technical issues, and some are easily surmountable, and some require some more investigation, and it’s possible there are some I haven’t run into yet.
Since Android seems the simplest to release, perhaps it goes into the Google Play store first, and I worry about the Linux and Windows versions later.
But I do not want this three month project to get to the ninth month before its first release.
The good news is that the next project will have a much clearer release plan, and many of these issues will be already solved. B-)