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

LD20: How to Lose 40 Minutes During a Ludum Dare Compo

CMake, how I love it when you just work.

CMake, how I hate it when you don’t work.

I should have prepared for this compo by having a basic, buildable project ready to go.

In trying to create the barest project for LD20, I’ve copied the directory structure and CMake build scripts from my LD18 game, which still builds just fine by the way, and changed references from LD18 to LD20.

And for some reason, with a basic main function and a bare-bones Game class that does nothing, I get a build error.

I notice that for some reason, even though I tell it to build the files in my source/game directory, it seems to be ignoring it. It doesn’t ignore it in my LD18 project, though.

First, for posterity (and my sanity), the command to get debug output is “make VERBOSE=1”. I always forget it and have to do searches online to find it, and sometimes CMake searches aren’t easy to do. I need to keep these notes somewhere handy for the future.

Next, I saw that it wasn’t finding my project library. Basically, my game has a main.cpp, and it links to the library created by the game subdirectory. What’s nice about having the game built as a library is that I can also build a test binary if I was using unit tests by linking to that same game library instead of building the object files twice.

After looking at the CMakeLists.txt files and comparing them to the ones in my LD18 project multiple times, I finally saw the culprit:

TARGET_LINK_LIBRARIES (gbgames-ld20-bin gbgamesld20-lib ....

It should link to gbgames-ld20-lib. It was missing a frickin’ dash. Looking closely at the error message, I would have seen the missing dash there as well, but…GAH!

And this is how you lose about 40 minutes during a Ludum Dare compo. B-(

Luckily, I finally got the project building and running, so now I can get some lunch.

1 day, seven and a half hours left. Eat fast.

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

LD20: Prototyped Game Play

I used my trusty graph paper and my handy-dandy game design prototype toolbox to see if the game rules I came up with could be any fun.

Prototyping!

In this image, the hearts represent pedestrians walking across the plaza. They are oriented in the direction they are going, a nice characteristic of heart tokens as opposed to circles or stars.

The star represents the person you need to deliver the package to. The package is represented by the red gem, which is held by one of the three couriers represented by the Mans. The barrels represent the agents trying to stop the couriers.

Playing with the game in this way, I realized there were questions that needed answering:

  • If two pedestrians try to walk into the same empty tile, what should happen?
  • Should pedestrians always try to go to the opposite wall they start on, or should they just go forward until they are forced to turn?
  • Should shoving be a second phase after moving your couriers, or should it be a result of moving into an occupied tile?
  • Should couriers be faster than agents? Than pedestrians? Slower?
  • Would randomness involved in the creation of pedestrians (where they spawn, what type they are, etc) be enough to prevent making the game mathematically solvable and therefore boring?

And finally, what is in that package that seems to be so important to the agents in the first place? B-)

I played around with various solutions, and I was able to get a feel for what made the game more complex/confusing versus what made it simple and straightforward, especially from the player’s perspective. Part of the game is being able to quickly read the status of the board and making moves with predictable results, so complicated shoving mechanics might not serve my goals. For example, if you shove an eastbound pedestrian north into a westbound pedestrian, should the westbound pedestrian get pushed east by the eastbound pedestrian? And if the westbound pedestrian is shoved into an southbound pedestrian, and if your couriers can be shoved back, it means that the end result is the eastbound pedestrian is in the same position it started from! The chain of shoves can get windy and interesting, but maybe it would be more straightforward and intuitive to force all shoves in one direction, so a chain is really just moving all pedestrians in a line.

There is one day, 9 hours left in the compo. I don’t think I need to solve all of these problems. I can always play with them as the game is developed. I have enough to start breaking ground on the code. Let’s get to work!

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

LD20: Good morning! And Design Thoughts

I woke up this morning, and unfortunately my dreams didn’t help me come up with a cool game concept.

I started the day with a typical breakfast.

Start the day right.

After my shower, I put on my custom Ludum Dare t-shirt.

I'm wearing my custom LD shirt

I wore that shirt at the Ludum Dare Meetup at GDC 2011. And as I type this, it has been covered in white cat hair. Thanks, Diego. B-(

Throughout my morning, I’ve been thinking about game mechanics that wouldn’t require a full AI engine or physics or anything else complex. At first I was keen on getting rid of any entities besides the player’s avatar. After all, you’re alone, right?

But then I realized that I could make other entities follow simple rules. There doesn’t have to be decision-making or goal-driven actions or complex evaluations. Enemies or hazards can simply follow basic rules, so any decision-making is in the code when I write it.

And more and more, I’ve liked my Hot Potato idea that I mentioned last time. So here’s what I’ve come up with so far:

Your crack team of couriers have to delivery a very important package to a very important man who works for a very important organization. This man is standing in a busy plaza in the hopes of blending in with the crowd to avoid detection from secret agents who hope to intercept the package.

The plaza will be tile-based grid.
The play will be turn-based.
And hopefully the AI will be quite simple and dumb, yet effective. B-)

Some basic rules:

  • Entities can move into adjacent tiles if they are free.
  • Entities can also shove other entities into other tiles.
  • A shoved entity pushed into an occupied tile will shove the other entity in the direction he/she is facing.
  • Secret agents can’t be shoved.
  • The very important package can be passed along to a teammate directly.
  • Alternatively, if the package handler shoves a chain of people who end up shoving a teammate, the package can be passed through the chain.
  • The very important man can only receive the package from the package handler directly. No chain can be used.
  • If an agent gets the package instead, it’s game over.
  • If the agents shove the package handler, it’s game over.

I think it can be an compelling game. My intent is to design the game so that if you try to deliver the package using only one courier, the agents will easily stop you, so you must rely on passing off the package to get it past the agents. The crowd may or may not grow/shrink in size as the game progresses. I don’t know how it will turn out, but I’ll have to do some paper prototyping to see if it has a chance of succeeding. BRB.

Off to go prototype, brb

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

LD20: I Was Not Expecting This Theme

So the theme for Ludum Dare 20 is “It’s Dangerous To Go Alone! Take this!”

I’m not really sure about it. I was really hoping for “Traps”, but you play the hand you’re dealt.

I haven’t thought too much about the theme yet (I was busy play Jeopardy! for the Wii with friends when the compo started), but here are some first draft game concepts:

  • Your Guardian Pet: Think Ico, only you’re the helpless one, and you have to leave your protective dog sometimes to find a way to get it into areas you need to go.
  • Shove Off!: You’re among a crowd of prey (sheep?), and there are predators (wolves?) circling. You need to maneuver yourself into position to push, kick, or shove the other prey out of the crowd so the predators eat someone other than you. It’s more like “Take THIS!”
  • Hot Potato: There is a very important item, and your team needs to deliver it, but there are agents trying to stop you. If a team member gets isolated while holding the item, you lose, so try to pass off the item to someone else before the agents can corner you.

One thing I want to try to do is avoid complexity, and while I’m more familiar with artificial intelligence, I’d rather not have to code up pathfinding or goal-driven agents. I’ll try to focus more on player-controlled mechanics and system interaction than on building a living, breathing world.

For now, I’m going to sleep on the problem, and in the morning, I’ll start prototyping some ideas. Good night, Ludum Dare!

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

April Update. Also, Ludum Dare 20 is here! #LD48

I haven’t updated my blog in the last month. Let me explain.

First, last month I wasn’t in the country. My blog posts in March were scheduled to be published while I was traveling through Europe for 18 days.

One highlight: in a moment of certainty and confidence, I proposed to my girlfriend on the balcony of Neuschwanstein Castle in Germany.

She said yes.

So now I’m engaged, and there’s wedding planning to do, which is apparently a lot of work and full of stress.

Second, after 24 hours of flights to get back home, I spent the first week or so feeling sick. I wasn’t doing much in the way of productivity. Heck, I don’t think I felt well enough to play “Minecraft” either. It was a miserable time, but I did get to catch up on what I call “Movies No One Wants to Watch With Me.” Have you seen Arena, the 1989 sci-fi film featuring a who’s who of Star Trek and Babylon 5? It’s kind of bad and cheesy, but I enjoyed it.

Third, upon recovery, I was dealing with tax preparation. Having a CPA do the work for you and answer questions is great for peace of mind.

Fourth, I’ve been a lot more active in the Association of Software Professionals this year. As a board member, I had a lot of catching up to do when I got back from Europe, and there have been some big decisions recently. There are some exciting plans in the works, and I don’t know how much I can say publicly here. If you’re an indie game developer and are not a member of this professional trade organization, I’d urge you to join to learn how to make your games more marketable and sell more effectively by joining the ASP today.

Fifth, I’ve been hard at work on Stop That Hero!. My goal was to have a friends-and-family playable (not for public consumption) version of the game ready by the end of this month. I’ll be short of that goal before Ludum Dare starts, but I’m quite happy with the progress I have been able to make in the last two weeks. I’ll write more about it in another post next week.

Sixth, Ludum Dare 20 starts tonight! If this blog has been quiet this past month, it will be the exact opposite this weekend. As usual, I will be live-blogging my participation in the 48-hour game development competition. Consider this post a warning that you’ll see a flood of updates soon.

Ludum Dare 20 will be a nice break from working on STH!. I’m hoping that the theme “Traps” wins, but there are some other good ones in the running, too.

The keynote is already live, and I think Sos did a great job on it! It’s like a call to arms for game developers!

While I didn’t submit my own video to it (I’ve been busy, as I’ve mentioned above), let it be known that I’m in.

Are you participating in Ludum Dare 20?

Categories
Game Design Game Development Marketing/Business Personal Development

The Importance of Speed

At GDC, I heard a lot of conflicting advice.

Dan Cook suggested a broad portfolio to reduce risk, for instance, while other developers talked about focusing your energies on a single project or genre.

Whatever any one indie said, the one thing everyone seemed to agree upon was the importance of speed.

Dan Cook has written about the importance of quick iterations to “find the fun” as quick as possible.

Andy Schatz talked about the development of Monaco when he was almost about to throw in the towel on being an indie, and he advocated working on something exciting every day.

Use two hour game jams to explore game mechanics or designs.

Play-test early and often.

Create an MMO every day.

With Stop That Hero!, I already knew that things were going much more slowly than I would have liked, but the importance of speed really hit home during the Ludum Dare Jam at the Noisebridge hacker space on the last day of GDC.

My goal: create one simple, quick game every hour during the jam. I knew it was ambitious, but I wanted to try out this focus on speed.

In the end, I spent hours just trying to cobble together some decent code to use as a base for my first project, and I didn’t manage to finish it.

That’s not agile. That’s not speed. And that’s not good.

I struggle with my major project partly because I don’t have a base of code to leverage. Every time I need technology to support game play, I have to figure out how to implement it and fit it into my existing code. I never spent any time working with something like Game Maker or a game engine such as Quake or Torque, and since I do my development on GNU/Linux and want to be able to port to multiple platforms, there aren’t really any 2D engines available for me to work with. If I need some tech, I more often than not have to figure out the best way to architect it myself. My current pathfinding and navigation code is difficult to work with, for example, and I’m sure there is a better way.

Stop That Hero! might just be too much for me right now, and I might be better served by stepping back to work on smaller projects that don’t require AI, UI, or any other technology I don’t currently have. Also, I could probably do well to dedicate time to studying existing source code.

While part of me wants to muscle through and not leave my first major project unfinished, another part of me thinks I would do better building up my tech by creating smaller games around individual pieces. For instance, if I created an entire game around clicking buttons, I would have created my UI code AND have a finished game to show for it. On the other hand, I’d probably run into a lot of the same issues trying to finish a smaller game anyway, so why not continue working on the same project?

I really want to see Stop That Hero! get finished, but the ship date keeps getting pushed back, and the problem isn’t necessarily a matter of features that can be cut. The basic game requires a lot of moving parts which still aren’t created, so it’s not as if I have scope to reduce.

If I want to work and ship faster, I need to change something about what I’m doing. Either I need a improved technology base, which I obviously haven’t been able to create quickly, or I need to temporarily switch to a smaller, simpler set of projects.

How would you approach this problem? Would you try to use smaller projects as stepping stones to the larger project, or would you continue to work on the larger project, figuring that you would end up hitting the same obstacles and solving the same problems anyway?

This post was scheduled to be published at a time when I will not be able to access the computer. I’ll respond to comments when I return at the end of the month.

Categories
Marketing/Business Personal Development

Happy Anniversary, GBGames!

It’s been five years since I first formed an LLC. Last year’s anniversary post mentioned that I was not happy with the previous four years of part-time progress and hinted at what I planned to do about it.

A few months later, I was a full-time indie game developer.

And I wish I had something exciting to post on this five year anniversary of GBGames, LLC, but being full-time and focusing so much more of my time and energy towards my business has taught me a lot, including how much I don’t know about making games.

But since going full-time, I’ve attended my first Game Developers Conference, broke ground on my first major project, and learned first-hand about the trials and tribulations of running my business.

When I was running GBGames part-time, I had “corporate welfare” keeping me going if I wasn’t able to produce much. Now, if I don’t produce, I have a dwindling savings account to look at. In other words, there’s a bit more urgency when I work.

As stressful as it might be, this last year has been my best one yet. I’m doing what I want, dedicating as much time as I want to it, and having a more fulfilling and fun life. And frankly, having a window in my office beats a cool screensaver in a cube any day. B-)

In the coming year, I will be releasing my first major commercial games, and I’ll finally get to apply all of those sales and marketing tips I’ve been learning.

Here’s to five more years!

This post was scheduled to be published at a time when I will not be able to access the computer. I’ll respond to comments when I return at the end of the month.

Categories
Game Development Games Politics/Government

Last Day to Vote!

Today is the last day to vote for the 2011 IGDA board! Did you vote yet?

I voted

Check out the 2011 candidates to get your last minute votes in!

This post was scheduled to be published at a time when I will not be able to access the computer. I’ll respond to comments when I return at the end of the month.

Categories
Games Geek / Technical

What Is This Ninja Game?

And why does it look so fun? B-)

I saw some people playing this game earlier during GDC outside of the IGDA booth, and I wish I hadn’t pulled a back muscle recently so I could participate.

I recorded this second session, which was much bigger. I had to stop recording since the Moscone Center was closing for the day and I was not a volunteer, but I tried to capture the thrilling conclusion to this session:

I need to hang out with playful people more often! B-)

EDIT: Ah, it’s an Indiecade thing! Free Ninja

This post was scheduled to be published at a time when I will not be able to access the computer. I’ll respond to comments when I return at the end of the month.

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

The After GDC Glow

Last week I attended my first Game Developers Conference, and I guess the best way to start the recap is to say that I had a blast!

The Independent Games Summit was full of different groups of indies. Some knew each other from TIGSource. Others have been around forever. And since we’re all indies, we each had our own unique story and reason for being there. Even so, it felt as if everyone knew each other and were fairly supportive. It was like a very odd yet loving family.

I only had a Summit & Tutorials pass since it seemed to be in the sweet spot between the too-expensive All Access Pass and the “let’s hang out with people who want to find a job at the Career Pavilion” Expo pass. While I couldn’t attend a lot of the cool talks and panels in the later half of the week, I was still able to attend any of the summits.

At one point, I skipped out on the IGS summit for an AI summit talk on pathfinding. James Anhalt of Blizzard talked about the pathfinding problems of StarCraft 2, Alexander Kring of Nihilistic focused on Heroes on the Move, and Nathan Sturtevant from the University of Denver worked on Dragon’s Age: Origins. They each gave a glimpse into the tech behind the games, and the Q&A session at the end made me laugh because it was almost all complaints about StarCraft.

If I would have attended the Google Android Day tutorials, I apparently could have received a free Google device. I didn’t, but I got to see the long line for the tutorials that morning. It’s kind of the same, right?

On the other hand, I did sign up for an Intel AppUp event with Mike “PoV” Kasprzak and Phil “philhassey” Hassey and received this baby:

My New Intel-provided, Meebo-based Tablet

It’s a Meebo-based EXOPC Slate! I finally got a cool consumer electronics device!

The best part of GDC was meeting everyone I’ve only ever spoken to on IRC or on web forums. Whether I was having lunch, standing in line, or walking to a session, there was always someone’s name to call out to and say “Hey! I recognize you from your online avatar!”

I briefly met Leigh Alexander, Drew Sikora, Ian Schreiber, Noah Falstein, and Derek Yu. I met game developers I’ve talked to on the Indie Gamer forums and in the #ludumdare IRC channel. I met game developers I’ve only heard about in passing.

The IGDA booth with Corvus Elrod and company!

And I got to hug Corvus Elrod of Zakelro! Don’t forget to vote for the 2011 IGDA board!

The Ludum Dare meetup was fun and had a good turnout:

Ludum Dare meetup

Ludum Dare meetupLudum Dare meetupLudum Dare meetup

There were so many of us, we needed multiple tables!

And here’s a link to a bunch of us wearing LD48 shirts.

And one action shot of PoV eating:

PoV eats!

I was finally able to attend the Independent Games Festival and the Game Developers Choice Awards.

The IGF/GDCA at GDC

Congratulations to Mojang for winning five awards between the two events, including the Seamus McNally Grand Prize in the IGF!

At the end of the week, we had the Ludum Dare Jam at Noisebridge, a really cool hacker space.

Ludum Dare Jam at NoisebridgeLudum Dare Jam at Noisebridge

And an action video of Phil Hassey sleeping:

I had to leave the jam early and get on a plane the next morning, but I definitely want to do GDC next year! Heck, two days into it, I half wanted GDC to be over so I could get back home and make games sooner!

In the meantime, what was your favorite part of GDC?

This post was scheduled to be published at a time when I will not be able to access the computer. I’ll respond to comments when I return at the end of the month.