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

LD24: Breakfast the First! #LD48

OJ and a mixed cereal. One cereal has a lot of protein and fiber. The other has a lot of B6, B12, and iron.

OJ and cereal

My wife suggested the idea of “Evolving Doors”, which I think is brilliant because (1) it suggests a game play mechanic of choosing to go through doors to evolve and (2) it makes for an excellent play on words.

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

LD24: Slept On It #LD48

Before I went to bed, I started working on getting a skeleton project up and running.

I know. I know. It’s supposed to be one of my pre-compo checklist items: “Is your build environment working? I’m using CMake, and I should probably prepare an LD24 project beforehand so I’m not wasting time trying to get the build scripts to work when I could have a buildable project with a blank window from the start.”

Well, I didn’t. So I spent the first few hours getting a window up. Basically, I took existing scaffolding code (a basic Game class, Command/Event interfaces, stuff like that) and slapped it together as minimally as possible until it could build successfully and leave me with a window that shows a title screen and can exit properly.

LD24 TitleScreen

The title is…evolving.

But the actual game design? Still only ideas right now.

I figured that a lot of people might try to make a Spore clone. I’ve seen quite a few screenshots with little primordial oozes as playable characters, and presumably you gain abilities, appendages, and interact with other units that might be more or less evolved than you. While I’m excited to play some of these games, I’m not sure Yet-Another-Variation would be interesting to work on.

I like the idea of an evolving landscape. A tile-based world that starts out with only one kind of tile with certain attributes, but as you explore it, you come across evolved tiles which might have new attributes or changes to existing ones that might impact movement, health, sight, sound, etc. And if I do it right, no two play sessions will be the same.

In terms of engineering, experimenting with neural networks might be fun. Maybe let the player pick a trait, and then have the system go through a few iterations to find out how healthy it is compared to others. On the other hand, that sounds like a lot of uncertainty and an unfinished compo entry.

Anyway, I’ll think about it some more over breakfast.

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

LD24: Evolution Actually Made it! #LD48

So, the theme was announced, and it’s Evolution.

Now, Evolution is the theme that was the Susan Lucci of Ludum Dare themes. It always made it to the final round of theme voting and always lost out.

Until today.

And somehow, I’m unprepared for it. Out of all of this LD’s themes, Evolution was the one I hadn’t given much thought to. And I even voted for it!

I’m a little worried about this compo. This morning, I woke up with pain in my hip and back. Walking is awkward, standing is difficult, and sitting seems to make it worse. I don’t know how much time I will be able to dedicate this weekend if I can’t be in front of the computer.

But I’m sure as the weekend evolvess (see what I did there?), things will come together. I’m going to spend the first few moments just thinking about potential design approaches.

Good luck, Ludum Dare participants!

Categories
Game Design Game Development Marketing/Business

See Me At ISVCon Next Month, Plus Registration Discount

ISVCon July 13-15, 2012, in Reno, NV

From July 13-15 I’ll be in Reno, Nevada, attending ISVCon, a conference for independent software developers and vendors. It’s actually a reboot of the Software Industry Conference (SIC), which the Association of Software Professionals (of which I am currently President) purchased and is hosting for the first time.

I’m not only attending, but I’m also going to be part of a panel of game developers talking about how games are different from other types of software. I’ll be joined by Gregg Seelhoff of Digital Gamecraft and Christopher Williamson of DreamQuest Games. Each of them also have their own talks about quality assurance and mobile app development, respectively.

In 2008, I attended SIC for the first time, and I met a lot of great people there. A lot of those people I still interact with regularly today, and I find these kinds of connections well worth the cost alone.

This year’s conference reboot looks to have a fantastic set of sessions for independent software developers, including talks on marketing basics, social media marketing, best practices in freelance and outsourcing, Cloud-related technologies to help your business, mobile platforms, Software as a Service (SaaS), and more. Learning about trends and best practices from experts in all of these domains in one place is hugely valuable.

If you can make it, I’d encourage you to register at http://isvcon.org. I’d love to meet up with you. In fact, as a thank you for being a reader of my blog, you can sign up with coupon code “GB2012” and get 10% off of the registration price.

There is a discounted room rate in the ISVCon hotel block at the Atlantis Casino Resort Spa, which is where the conference is being held, and the deadline for getting a room in that block is June 28th. You can get your room rates at $69 (weekday) and $99 (weekend) a night, plus you get the $12 per night resort fee waived, instead of paying up to $150 a night with a $12 resort fee (per night!) added on top.

Also, besides saving on hotel rates, the cost for registering for ISVCon bumps up on July 1st, so there’s two good reasons to sign up today instead of waiting until the last minute.

I’m really looking forward to ISVCon. Will I see you there?

Categories
Game Design Game Development Geek / Technical

A New Direction for “Stop That Hero!”

As much as Stop That Hero! has
provided me with a great opportunity and learning experience,
recent events have led me to seriously invest time
in a much needed redesign. As a casual strategy game, the game
left players with a fun and exciting way to be evil and have
fun at the same time. Still, I’ve received feedback
over the months that have led me to question some of the
original design decisions I’ve made, some of which might be
leaving money on the table, so to speak.

So, the good news is that I’m taking all of the great stuff I’ve
done so far, and I’m going to recreate “Stop That Hero!” as an FPS.
As a strategy game, I find the game enjoyable, but the masses seem to
yearn for something a bit more visceral.

“Stop That Hero!: Reloaded!” puts you in the role of the hero,
fighting off the minions of an evil villain bent on taking over
the world. With the roles reversed in this new design, I think it
can be much more enjoyable and easier for fans to relate to the characters.

It will feature multiple weapons, urban and jungle environments, an
innovative cover system, and customizable uniforms for you and
members of your elite squad of minion-hunting friends (multiplayer content,
including special hats, exclusively available as DLC).

I don’t want to give too much away, but I am excited about this
new direction for “Stop That Hero!” For now, I’ll leave you with this
mock-up to give you a taste of what to expect:

STH: Reloaded
STH: Reloaded mock up. I had to use my niece's toy since I didn't have a gun or banana handy.
Categories
Game Design Game Development Marketing/Business

Filling a No-longer-served Niche

Jeff Vogel of Spiderweb Software wrote about being an indie game bottom feeder. He breaks it down into a few principles.

Stop worrying about piracy and worry about being a person your customers want to support

He talks about coming to terms with the fact that piracy happens. Interestingly, he finds the best way to “combat piracy” isn’t to pass onerous laws such as SOPA but to be a decent person that your games’ players would feel good supporting.

Price appropriately

If you are creating an ultra-casual, appeals-to-everyone kind of game, you can get away with charging less than a dollar or even releasing the game for free and using ads or selling add-ons. But if you’re appealing to an underserved niche, you must charge more for your game. Having 5,000 customers pay you only $1 means you won’t last long. The good news is that your customers are willing to pay for it.

Find the customers who are looking for what is no longer being made

Most small business advice out there says that you should find a niche, Vogel’s advice is similar, except he points out that there are plenty of game genres that used to be wildly popular and are no longer of interest to the larger companies in the game industry. Those are now underserved niches. While the popularity of these now-niches has dropped below the point where EA or Activision would find it worth their time, there are enough people who still want to play those kinds of games to make it profitible for an indie.

Vogel mentions the Atari 2600, which was my first game console. I remember playing games such as Frog n’ Flies, Yar’s Revenge, Solar Fox, and even E.T for hours on end.

And the Atari 2600 is still fun. It’s just not fun enough. The art of game design has progressed far beyond it, and Pitfall doesn’t have what it takes to compete anymore. But you know something? All of those old games can be updated. All of those old genres have tons of fans out there. They just don’t know they’re fans yet.

So does this mean you should clone old games and expect to make tons of money so long as you’re not a jerk?

No, and not just because the clones have been done already.

You can take inspiration from old games that are otherwise still fun today. Take the original Mario Bros for example. It was a platformer with a static level design, and you could collect coins and hit enemies from below before knocking them out. Now look at Super Crate Box, a platformer with a static level design in which you collect crates and use a variety of weapons to fight off enemies. Tell me where you think it partly takes its inspiration from. Yet, it plays very differently. The developers didn’t create a Mario Bros clone. They did something very different.

I think Vogel’s approach sounds similar to Dan Cook’s “reinventing the genre from the root” approach.

It occurred to me that game design, like any evolutionary process, is sensitive to initial conditions. If you want to stand out, you need to head back in time to the very dawn of a genre, strike out in a different direction and then watch your alternate evolutionary path unfurl.

Perhaps having kept my Atari 2600 all these years was a much better idea than I thought.

Categories
Game Design Game Development Geek / Technical Marketing/Business Personal Development

An Online Conference You Can Attend #AltDevConf

If you’re not familiar with AltDevBlogADay, you should be. Each day, a game developer posts on a variety of game development topics. There’s a huge backlog of content there now, and while the recent redesign has made it difficult to find the category you want (you have to click on a post to see only some of the tags available as of this writing), it’s great getting regular, up-to-date, state-of-the-art tips and tricks from the people in the trenches. Authors can be mainstream game programmers, indie developers, academics, or anyone who has something valuable to share.

AltDevConf

It seems to be such a successful site that they’ve decided to host an online conference. AltDevConf will be held on February 11th and 12th (that’s this coming weekend), featuring three tracks: education, programming, and design & production.

Our goal is twofold: To provide free access to a comprehensive selection of game development topics taught by leading industry experts, and to create a space where bright and innovative voices can also be heard. We are able to do this, because as an online conference we are not subject to the same logistic and economic constrains imposed by the traditional conference model.

As it doesn’t look like I’ll be attending GDC this year (I’m still hoping to win an All Access Pass with my GDC magnets), AltDevConf seems like a high-quality substitute. While it won’t be the same as rubbing elbows with other indies or meeting cool celebrities in the gaming world, I’m excited about it.

Do you plan to attend? Will you be speaking?

Categories
Game Design Game Development Geek / Technical Linux Game Development

Stop That Hero! Development Summary

The last time I wrote about Stop That Hero! development was in July. Here’s a quick summary of the work I’ve done since then:

Fixed memory bugs

I fixed a number of issues in July, specifically with weird corruption issues that seemed to result from the use of std::vector<bool> which is apparently not a real vector of boolean values. I was easily able to discover where memory leaks were occurring with Valgrind.

Recently, I ran into a bizarre unit test failure when adding code to a module that had nothing to do with the unit test, and I discovered that I had introduced a bunch of memory leaks that were finally manifesting in such issues. It wasn’t hard to fix since I once again was able to use Valgrind, but it was tedious work. A lot of it was fixing dumb mistakes, too. I have no idea why I thought I could get away with the code I wrote when I wrote it.

Unless there are corruption problems, memory bugs are not usually a big deal during development. Still, it would be nice if I used tools that made it easier to avoid the problems in the first place. I use UnitTest++, but these memory leak issues would have been caught had I used a tool such as CPPUTest which fails tests if memory leaks.

Added more minions, entities, and projectiles

Once I made combat revolve around projectiles, I added fireball-launching dragons and warlocks. Warlocks will eventually have a magic spell they cast, but they launch fireballs because that was the only projectile I had at the time.

Recently, I added new heroes. Archers shoot arrows, and wizards cast lightning bolts. I eventually want to add villagers and knights and get rid of the generic Hero character.

More Heroes Added

Optimized rendering

I’ve had the same update/rendering code for a long time, and on a whim, I added some logging to my game to find out why I wasn’t able to get 60 FPS even though I didn’t think I was doing much.

It turned out, I wasn’t doing much. All of my code ran within a millisecond, but the actual SDL call that blits to the window took between 30-50 ms to run! The good news is that my own code isn’t slowing me down, but mathematically it’s impossible that SDL MUST render this slow since so many other SDL games run much faster. So I looked to find out what other people did to make it work.

Here’s the code I was using to set the video mode:
m_screen = sdlInstance->SDL_SetVideoMode(m_x, m_y, m_bitDepth, SDL_DOUBLEBUF);

And here’s a much faster version based on a thead at Ubuntu Forums that I apparently did not bookmark:
m_screen = sdlInstance->SDL_SetVideoMode(m_x, m_y, m_bitDepth, SDL_SWSURFACE | SDL_ASYNCBLIT | SDL_DOUBLEBUF | SDL_ANYFORMAT | SDL_SRCALPHA);

So I went from 30-50 ms to 8 ms. The game runs so much more smoothly now, and it didn’t take a lot of work at all.

Switched away from pie menu

Pie menus are great for usability, but only if you can guarantee that the menu can be displayed in its entirety around the mouse cursor. Since one goal with “Stop That Hero!” was to make the interface as simple as possible, I didn’t want a scrolling world. The entire world fits on the screen at once. To use pie menus, I’d have to reduce the world size to provide a border all so that buttons could fit on the screen if a tower was selected near the edges.

So I removed the pie menu and went back to a traditional UI at the top of the screen.

Added resources and minion costs

Before, I was adding minions to the game whenever I wanted. Now there are resource costs, and it takes time to summon a minion from a tower. The player starts with a base set of resources, and the current system adds 1 resource every second. It’s simple, and it works. I can experiment with resource mechanics, such as adding rewards for killing heroes or if certain minions collect items and bring them back to the player’s castle, but the basic system is in place.

Made object creation more generic/data driven

I initially tried to make the game as quickly as possible, so instead of trying to genericize object creation, I created a bunch of separate commands: CreateHeroCommand, CreateDragonCommand, CreateOrcCommand, etc.

While it worked, it was also very limiting. Each time I added a new type of entity or in-game object, I had to create a new command. Maybe that’s fine if I know what entities and objects I want to create up front, but it limits the design. Maybe I want to make weak squires, regular soldiers, and strong knights as variations on each other. The effort to write the code for the separate creation commands would be tedious and slow.

So I replaced all of those CreateXYZCommands with CreateObjectFromTemplate. Instead of having coded commands to create an orc, I create a template called Orc, which defines components and data that an orc would have. CreateObjectFromTemplate(“Orc”) then creates the components with the correct data, and an orc appears in the game world.

Templates can be created and changed much more easily than hardcoded commands, which means adding and tweaking minions, heroes, and other in-game objects is easier, which means game design and balancing is easier. It also allows me to data-drive the game a lot more, which means more interesting entities and game situations.

Added timer-based summoning queues

Both heroes and minions take time to appear. Minions are summoned and there is a summoning bar that lets you know how finished the current summon is. By using the same summoning queue code, I now have a Village which pops out heroes over time.

Timers seemed like a special case of general triggers. It would be nice to have dwarves pop out of caves if any entities come near or have other similar scripting in the game, but my initial attempt at general triggers might have been trying to do too much. Maybe for another game.

What’s Next?

The game is still silent, so eventually I would like to add some sound effects and music. Animations and special effects would really punch up the visuals, which need a consistent art direction. It’s all functional programmer art and will get replaced.

But the biggest thing left to do is improve the AI. Dragons can attack from distance, yet they still try to run up to the heroes the way melee fighters do. Also, entities tend to bunch up. 10 orcs attacking a hero tend to look like a single orc attacking the hero, and it is hard to see what’s happening.

My initial attempt at solving these problems resulted in unacceptable slowness last week, but I’ve identified what’s going on and think I have a fix for it.

But hey, this is AI work. I already know I can’t expect that I’ll figure it out in a matter of hours or days. There’s going to be a lot of changes, tweaks, and fixes until it looks right.

And besides game development work, there’s the work of marketing and selling the game. There’s a “Stop That Hero!” Facebook page, and I just sent out a newsletter to my list announcing the upcoming release. I’m hoping to get a pre-alpha release out soon.

Categories
Game Design Game Development Geek / Technical

Meaningful Game Play Game Jam

Josh Larson of God At Play wrote about meaningful game play. Josh’s definition:

Meaningful game: a game that has significance or provides purpose for how one lives life.

He specifically argues that there seems to be a lack of games with deeper meaning, and that there are not enough of them to satisfy the people who want to play deeper, more meaningful games. He identified the difficulty a game designer has when setting out to make a meaningful game. Where does one begin? Have there been attempts before? It’s hard to know what works and what doesn’t without actually doing it yourself because body of work available to build on is scarce.

His suggestion is that there should be game jams dedicated to Meaningful Game Play, where such experiments can be prototyped and critically analyzed. The goal would be to create a resource for game designers who wish to develop deeper, more meaningful games.

The first Meaningful Game Play Game Jam starts today at the BitMethod offices in Des Moines, IA. Details can be found at the newly launched Meaningful Gameplay website.

I’ll be there. Do you plan on attending? Do you want to participate in a Meaningful Game Play Game Jam?

Categories
Game Design Game Development Marketing/Business

Should Indies Make Bigger Games?

I’ve been participating in the Indie Indie Conversation on YouTube with other full-time indie game developers. We upload 3 minute videos at a time (although some are a bit longer) and have a discussion about all sorts of topics related to being an indie, such as technical struggles, the need to explicitly make time for social interaction, and meaningful game play.

Recently, there has been some talk about financial concerns. Andy Moore of Steambirds fame has talked about his recent return to full-time indie status, but his lack of contract work was not his choice, and the lack of a safety net is made worse by the lack of a current project. Mike Hommel chimed in saying that his last project was a flop and lost him money, and he’s going to have to make some games for Flash Game Licensing to make a bit of cash. In the end, he got a new business deal, so good for him, but the turn this conversation took bothered me.

So I made this video:

Now, keep in mind, I write way better than I speak. To clarify, I don’t want to say that Flash games are necessarily dinky little things that get churned out with no soul. My impression of the attitudes of some indies, however, is that spending time on a game to make it great rather than merely good is spending too much time on a single project.

How much value can you really provide your customers if you spent only a few weeks on your game? Chris Hecker’s 2010 GDC rant Please Finish Your Game talks about the idea that a lot of games are prematurely “finished” by indies. That is, they are put out there, and there’s no follow-up or follow-through.

Yes, it is important to get feedback as your game iteratively develops, and releasing early and often is great for getting that feedback and helping you see what direction to take. But it’s not as if indies are putting together epic games and dropping development as soon as they see that there is no audience, or at least that’s not my impression. They just aren’t trying to make bigger games, and apparently they think they’re being rewarded enough for the smaller games.

So are big games inappropriate for developers who aren’t Mojang? Is it too financially risky to make something deeper for players to enjoy, or is it the exact right way that we should be making games? Did you quit your day job to be mediocre, or do you want to meet your potential, even if it is a bit riskier?