Categories
Game Development Games Marketing/Business Politics/Government

You’re Playing CPG

Why We Need a Corporation for Public Gaming argues that we need a publicly funded organization dedicated to making high-quality, educational games for the public good.

The author, David Rejeski, made comparisons with the television industry, noting that noncommercial programming did not do very well without government involvement. A Corporation for Public Gaming would fund the educational games that aren’t as commercially viable as another FPS.

…The interactive nature of games, their ability to present complex and dynamic information, and, increasingly, to allow thousands of people to meet in sophisticated virtual environments means games can accomplish what TV never could in terms of addressing educational and social challenges.

However, serious games, like serious TV, are likely to remain a sidebar in the history of mass media. Non-commercial television floundered, despite millions of dollars of investment by the Ford Foundation, until the government stepped in and created a viable and long-lasting alternative. With similar vision and foresight, and a relatively small amount of funding, this could happen with video and computer games.

Some people complain that public television holds a political agenda, and so people might worry that games will be made that also express certain political viewpoints. “Not with my tax dollars!” is the cry. I haven’t really looked too much into public television’s supposed problems, but I believe that unpopular viewpoints need to be expressed. Unpopular pretty much means that it wouldn’t have funding from anyone.

If the industry is going to go where the money goes, then it isn’t likely that many serious games will get the funding they need. The CPG would also be an interesting development because it would also raise awareness in the general public about the nature of video games. Most people still believe that video games are just for kids, for example.

Categories
Game Development Personal Development

Thousander Club Update: April 10th

For this week’s Thousander Club update:

Game Hours: 63.50 / 1000
Game Ideas: 221 / 1000

Target: 231

I only did a few hours of work this week, and I fell behind in game ideas again. While this week was packed with errands and projects that were not related to game development, I think a big part of the problem is that I haven’t been waking up as early. I used to wake up around 5:30AM, which gave me time to work on game development before going to my day job. In the past two weeks I have been getting up late. Sometimes I didn’t get up until 7:30AM, which is when I usually finish getting ready and start coding.

I think it is because I haven’t been going to sleep as early, either. When I wake up late, I always feel that I need to make up for the development time in the evening, which means I might not go to sleep right away. It’s a terrible cycle, and it is one that I intend to break.

Categories
Game Development

Indie Game Podcasts

Action decided to be a party-pooper and do something beneficial for April 1st instead of playing pranks. He’s renamed it April Enlightenment Day. He started the first April Enlightenment Day with a new podcast show: Indie Game Developer’s Podcast.

The first podcast was with Tom Robertson of Aggressivegames.com. It’s a 16MB download and a little over 30 minutes long.

In this podcast, Tom talked about the obstacles that faced him when choosing to leave the mainstream game industry and go indie. I liked hearing his opinion on the difference between “revolutionary” and “innovative”.

I’m sure I’m not the only one looking forward to more indie game podcasts! Thanks, Action!

Categories
Game Development Personal Development

Thousander Club Update: April 3rd

For this week’s Thousander Club update:

Game Hours: 60.75 / 1000
Game Ideas: 212 / 1000

Target: 210

I didn’t get much work done this week, but it wasn’t as if I slacked off. I just didn’t get much time on the computer this week in general, let alone time to work on game development. I helped a friend move this weekend, which was when I was originally planning on making up for the week. Oh, well. I still made 6%. B-)

Categories
Game Development

New Game Design: Yellow Graphics

So I’m working on a new game design. I found that a lot of the most popular games in the casual game portals are making use of the color yellow at some point. I’ve decided that I will make a Yellow-based game.

Yellow-based gaming is apparently all the rage, and I want to make sure I get in on the action before it becomes a saturated market, such as underwater-themed puzzle games. There’s a lot of money to be made in yellow-based games. In fact, I’ve been doing so much research on it that I will be giving a talk at the next GDC entitled “Being Yellow Ain’t Cowardly”.

It’s exciting to be on the bleeding edge of game development.

Categories
Game Development Games Marketing/Business Personal Development

Independence, Money, and Great Games

Joe Indie referred to Dan McDonald’s Sustaining Independence at Game Tunnel. Previously, McDonald had written on the topic of independence, stating that financial pursuits necessarily makes a developer less independent. His latest article continues this line of thinking:

An independent developer that wishes to sustain their independence must pursue their own interests in game design and development and give them preeminence over their interests in business and profit.

At first I was inclined to disagree. How can you expect all people to starve for their art? Can’t people be considered indie while simultaneously earning an income from their work?

Of course, how you define an indie is important. Many would argue that indie simply means you are not financially dependent on a publisher or other entity. If you extrapolate this definition, technically most people who call themselves “indie” are in fact financially dependent on their customers.

What is your goal? Are you simply trying to make money? If so, game development is just one of many activities to achieve those goals. “The pursuit of money is inherently an ambition devoid of any value or meaning. If the only value one derives from an activity is monetary, then the activity itself is of very little consequence.” You could replace game development with database programming or bartending or painting or blogging, and in the end you’ll still have your money. What’s game development to you other than a job? Whether it is for someone else or for yourself, its a job, and creative control is in some way not completely yours. Change something about your game for the sake of pleasing the customer, and you’ve given up some control over the direction of your game development.

McDonald’s indie, on the other hand, would have a goal of perfecting his/her craft. Game development for the sake of game development. Making games to learn how to make better games.

A lot of business gurus will tell you that to be successful, you have to realize that making money is not only good, but it is the main goal. It makes sense. How can you hope to make a living from your business if you don’t accept the idea that you should be making a living from it? You can’t make a million dollars until you accept that it is a possibility. Most people don’t think they can. Some people do. Who is more likely to actually make the money? The purpose of a business is to make money.

The purpose of an indie, on the other hand, is to be independent. An indie experiments with making great games. An indie can make money, of course, but making money was never the main goal. His/Her overriding goal was never about making more money so much as making better games.

Are the business and the indie in perpetual conflict? How can an indie survive? If trying to make money taints the notion of independence, are all indies doomed to working odd jobs or doing other things to make a living? Are most indie’s forced to relegate game development to a hobby? I’d like to say no. Making better games, you will undoubtedly hit upon something that other people also like. Making better games, you will create a world that other people believe in enough to pay money for the right to participate in it.

Is it wrong to try to make money from your game? No. I also don’t think that the general definition of “indie” will change to exclude those developers who make games on their own for the purposes of making a living. Is it possible that a game created for the purpose of making money can also be a great game? Perhaps, but if your main goal is to make great games, wouldn’t you be more likely to actually make one? And if the game is truly great, won’t a lot of other people want to play it?

Categories
Game Design Game Development

Object-Oriented Game Design

Hi, you’ve probably come here from some of the sites that link to this article. This post is an old one, though, and I’ve written a more up-to-date post called State of the Art Game Objects that you probably want to check out that has a lot more research links and info.

I’ve mentioned Object-Oriented Game Design by Britt L. Hannah before, but I wanted to write a bit more about it.

The article is not named very well. Game Design and Software Engineering are two different things entirely. The article isn’t actually about object-oriented game design, whatever that means, so much as object-oriented software development for games. It doesn’t make the information any less valid, however.

It basically discusses a component-based design for game objects. In a recent issue of Game Developer magazine, Mick West wrote “Evolve Your Hierarchy” which gives an overview of the topic. Some references listed in the article:

To summarize, there is a tendency to use object-oriented languages to create deep hiearchies. Scott Bila’s slides #7 and #8 show how inflexible and unwieldy these hierarchies can be. So if you can’t just have objects inherit from Drawable, Collidable, Shootable, or similar abstractions, what can you do?

You give an entity states in the form of objects. But rather than give a class private members to hold state like you usually would, you create a separate class for each state you would like to store. So instead of the following:


class Ship
{
int hitPoints;
string name;
}

you would do:


class Ship
{
State hitPoints;
State name;
}

What’s the difference? What happens if you need a new type of ship? Or an asteroid? Or a base? Or an alien? It is conceivable that you might have different types of entities that need to track the state of their hit points or names. It is also conceivable that those entities might not need to inherit the behaviors of a ship. So the states are placed into their own objects and assigned to Entity objects. You don’t really need to create a Ship class since a Ship is really nothing more than an entity that has the states that belong to a Ship.

Now the part that was a real eye-opener to me. It is very intuitive to create classes for things we think of as objects. In computer science class, we’re taught that classes have state and functions to manipulate that state. A class is created for a noun, and the functions in the class are the verbs.

Well, it turns out that the verbs can be encapsulated in classes. If we use the first example of a Ship above, actions would be functions defined in Ship:

class Ship
{
void setName( string);
string getName( );
void setHitPoints( int );
void adjustHitPoints( int );
int getHitPoints( );
}

Each time you add some state to a class, you need to add functionality to access such state. It can get really messy, really fast.

If you separate State into its own classes, however, then you can create Action objects to interact between entities. In the second Ship example, you can create an Action called AdjustHitPoints:

class Action
{
void doAction( ) = 0;
}


class AdjustHitPoints : public Action
{
void doAction() { entity.hasState( HIT_POINTS)->hp += amount; }
}

An Entity needs some way for the Action objects to grab state, so hasState() fills that role. Action objects have a function called doAction() that manipuates the states from an Entity.

Can you see how powerful this design is? Instead of hard-coding state into entity classes, you can construct entities at run-time. Instead of giving individual entities the methods to manipulate the state, you separate the events into their own classes. You can add a bunch of Actions to an Entity’s queue. The Entity can then pop the Actions off one-by-one and run doAction(). You don’t call adjustHitPoints(). You just activate the AdjustHitPoints Action object for the entity.

Normally if you have an abstract class called Human, you might derive Man and Woman classes from it. Let’s say you have a pointer to a Human, human, and it points to a PoliceOfficer object. You can’t say human->catchCriminal() because a Human doesn’t have the functionality of a PoliceOfficer. It is sometimes difficult and/or dangerous to dynamic_cast to the proper object type, so it seems overly difficult to get a PoliceOfficer to catch a crook since you don’t know who the PoliceOfficer is. If you change the code so that you know who the PoliceOfficer is, what was the point of needing to use a pointer to Human? Or inheritance, for that matter?

However, if you use the separate components to handle state, you can say human->activateAction( CATCH_CRIMINAL ). If it isn’t a PoliceOfficer, then it won’t have that Action. Nothing happens, just as we would expect. A PoliceOfficer, on the other hand, will have that Action object in its repertoire, and so the CatchCriminal Action will be activated. Eventually some code will run when the PoliceOfficer object updates that will look something like:

action->doActions();

Even better than the above example is that you could create a different type of Human-derived object: a Deputy. A Deputy isn’t a PoliceOfficer, but it should also have the ability to catch criminals. There’s no need to duplicate code. You just give it its own instance of the Action.

Separating state into components and encapsulating events into their own objects allows for more flexibility in your game code. I’ve already found that this design was both easy to implement and fun to use. I have been writing a text-based board game, and I was surprised with how easy it was to construct entities. I sometimes find myself writing code that resembles the deep game entity hierarchy, but whenever I do it is a source of pain. Refactoring the code so that it resembles the component-based model has always made it easier to work with.

Categories
Game Development Personal Development

Thousander Club Update: March 27th

For this week’s Thousander Club update:

Game Hours: 59.5 / 1000
Game Ideas: 172 / 1000

Target: 189

Almost made it to 6%! I’m still behind in game ideas, but I’ll be sure to fix that today. If I sit down for 20 minutes, I’m sure I can come up with the remaining 17 ideas for this past week plus the 3 ideas for today.

Categories
Game Development Games Geek / Technical

IGF 2006 Awards

I can’t find too much information on it yet, but Gamasutra reported the winners of the Independent Games Festival for 2006.

Darwinia received awards for Technical Excellence and Innovation In Visual Arts as well as the Seumas McNally Grand Prize. Congratulations to the people at Introversion Software as well as all of the winners for each category!

Joe Indie has some pics of the event. I want a small, green Darwinian. Anyone at GDC from the Chicagoland area manage to get one of those?

Categories
Game Design Game Development Games

Not at the GDC Again

While a number of people will be writing their coming blog posts from the Game Developers Conference, I will be reporting the action from Chicago. Again.

I would love to see Will Wright talk about what’s next in game design, but I’ll have to be content with seeing it on GDCTV when they release it later in the year. It would also be great to be there when they announce the winners of the Independent Games Festival, but I’ll just have to read about it at Game Tunnel.

Since I’m not going, I can treat this week as any other. I’ll work on game development and might get more accomplished since I won’t have as many blogs to distract me. B-) Since the GDC is generally about sharing what we know, this week I’ll try to post about what I have been doing with game development and design.

To everyone at the GDC, have fun, and good luck to the IGF finalists! My favorites for the Seumas McNally Grand Prize are Professor Fizzwizzle, Darwinia, and Weird Worlds, but I haven’t played Dofus or Wildlife Tycoon: Venture Africa yet.