Categories
Game Development

Part 2 of Results of June’s Game in a Day

Click below to track my June 2005 GID development progress:
Part 1
Part 2
Part 3

10:11 AM

Cans of Mountain Dew: 4
Subversion Revision: 20

AH! I slept for FOUR hours! Whoops! Well, it turns out that people tend to assume that breaks that last less than an hour count in the 24 hours, but breaks longer than an hour don’t. So if I continue to work through 7PM until 11PM, my project is still considered a GID.

12:24 PM

Cans of Mountain Dew: 5
Subversion Revision: 23

Just finished wrestling with a problem due to my lack of understanding of Kyra. It turns out that Kyra’s Vault, which holds all of the resources in the engine, only handles one data file at a time. I was seeing two player sprites when I should have seen one player sprite and one enemy sprite. Once I combined the two sprites into the same data file, similar to how the Kyra demos handle it, it was able to create both sprites.

12:55 PM

Cans of Mountain Dew: 5
Subversion Revision: 24

Added diagonal movement for player. I was already seeing that it would be frustrating to be restricted to moving in only four directions. I don’t think I want to spend time updating the graphics for four directions though as I only have hours left.

1:50 PM

Cans of Mountain Dew: 6
Subversion Revision: 28

Blast! B-)

It’s getting there!

3:07 PM

Cans of Mountain Dew: 6
Subversion Revision: 29

Now I have blasts freezing upon impact with other blasts and enemies. I had some complications because I wanted to kill off enemies by removing them from the C++ std::vector, but vectors aren’t great for it, and I wasn’t sure how to replace it with something else without causing headaches. I’ve decided to work around it by making use of the alive variable in Enemy.

I’ve also noticed that Player, Enemy, and Blast are so similar they probably could have been derived from a common base class, making it easier for me to add new objects. I suppose I could go ahead and refactor, but it is GID, and I’d rather try to get gameplay working.

3:48 PM

Cans of Mountain Dew: 6
Subversion Revision: 32

Now blasts and enemies disappear upon impact, and blasts will actually explode after a few seconds and the explosions disappear after a few more. They act more like bombs than gun shots, but I can see it being kind of like Bomberman in that sense. Sometimes games evolve that way. I just wish it was a conscious decision. It was more of an accident.

4:31 PM

Cans of Mountain Dew: 6
Subversion Revision: 34

Levels end when no more enemies are detected. I now need to make an elegant way to transition back to playing again. Right now, it just brings up the main menu, which is itself not very usable as it still only brings up three menu entries that are all the same, and you can’t choose between them. Priorities. B-)

Check it out so far:

Categories
Game Development

Part 1 of Results of June’s Game in a Day

Click below to track my June 2005 GID development progress:
Part 1
Part 2
Part 3

This blog post and the next one will act as my .plan and document the implementation of my game design for June’s Game in a Day.

While it is supposed to be between Saturday and Sunday, Sunday is my sister’s gradution party. Instead, GID for me was from June 10th through June 11th. After I bought a 24-pack of Mountain Dew, got home from work, and had dinner, I set to work.
I already put six cans of Mountain Dew in the fridge to prepare for the night. It should be a good boost, especially since I don’t drink caffeine often. I also cleared my desk and made sure I had the right books, notebooks, and other tools available.

June 10th

7:00 PM

Cans of Mountain Dew: 0
Subversion Revision: 0

Logged into #gameinaday and ready for coding action!

I set WorkRave to give me 20 second breaks every 10 minutes. It isn’t very disruptive and lets me rest my eyes. At the end of 4 hours, it will force me to take a 10 minute exercise break.

I already setup my Subversion repository for the project and created the normal directories: source, documentation, and resources. The first two are self-explanatory. Resources are things like music, sound effects, images, and other data.

I started by trying to create a basic finite state machine as described by Tony’s Game Programming Tutorial. I didn’t want to just copy the files and use them as my own, since I didn’t like the naming scheme and the C code strewn throughout. I wanted to use Kyra instead of straight SDL. Besides, I will learn a lot more about how the FSM works by writing it out than by copying and pasting.

7:45 PM

Cans of Mountain Dew: 0
Subversion Revision: 6

I’ve written a few source files but it is mostly for infrastructure rather than game code. TomB warned me that I can get stuck trying to build the framework, especially since I am basically doing this from scratch.

Even though I asked people to leave me undisturbed, I still must do some laundry.

7:58 PM

Cans of Mountain Dew: 1
Subversion Revision: 6

First can of Mountain Dew opened.

Still writing the FSM…

8:45 PM

Cans of Mountain Dew: 1
Subversion Revision: 8

The basic FSM game engine is written. Now onto making individual states.

8:54 PM

Cans of Mountain Dew: 1
Subversion Revision: 9

It compiles and builds cleanly for the first time! A window appears and then promptly seg faults since I don’t have any states yet.

9:18 PM

Cans of Mountain Dew: 2
Subversion Revision: 9

Hit my first snag. Everything compiles, but it won’t link. Spent almost an hour before finding that I didn’t declare a static member in the implementation file before using it. Doh!

11:22 PM

Cans of Mountain Dew: 3
Subversion Revision: 10

Oh boy. I’m hitting a wall. I’m not sure how to proceed. A KrEngine is declared within GameEngine, but none of the states know about GameEngine. I ended up making GameEngine a Singleton and having everything accessed through it, which took quite a bit of refactoring.

The result:

Blank Triangle on Black Window

I’ve been working on this project for about five hours now and I don’t have much to show for it. But I can’t get discouraged. After all, I have more done than I did five hours ago.

June 11th

12:48 AM

Cans of Mountain Dew: 3
Subversion Revision: 14

Now I have a splash screen. Yes, it is programmer “art”.

Sprayed on brush metal???

3:18 AM

Cans of Mountain Dew: 4
Subversion Revision: 15

Ok, I’m learning. Virtual destructors and static members are parts of C++ that I am not terribly familiar with, so I am glad I get the chance to fight with them now. Still, I would love to be further along than I am. From splash screen to menu screen. No gameplay yet.

Play the game already!

I’m also getting sleepy. Should I rest or push forward? Push forward!!!

..after a quick bathroom break.

5:27 AM

Cans of Mountain Dew: 4 (-1 bathroom relief modifier)
Subversion Revision: 17

I’ve finally gotten to the point where I can write the PlayState, where the actual game takes place!

I’m used the Gimp to draw up a few images of the main Player. I decided to make a crude alien. The Player class was easy to make since it just has to encapsulate KrSprite and some data about the Player. I can probably get it playable fairly quickly. Even if you can’t do anything else, you should be able to move around and possibly shoot something.

A green alien

For now, I can detect the arrow keys and change the action of the Player. The screenshot doesn’t show it, but his eyes move depending on the direction you press.

5:55 AM

Cans of Mountain Dew: 4
Subversion Revision: 20

About 10 hours later, I finally have the main character moving about the screen according to the arrow keys. He only moves in four directions, but I’m not going to draw up more images for diagonal movement this late in the GID. I’d rather spend my time getting the fusion part of the game going.

I will try to take a nap now, but check out the 1.6MB project (mostly due to the raw images in FuseGB/resources/) so far:

Categories
Game Development

June’s Game in a Day Theme: Fusion

For June’s Game in a Day, the theme is fusion:

fu·sion (fyzhn) n.

1. The act or procedure of liquefying or melting by the application of heat.
2. The liquid or melted state induced by heat.
3.
1. The merging of different elements into a union: the fusion of copper and zinc to form brass; the difficult fusion of conflicting political factions.
2. A union resulting from fusing: A fusion of religion and politics emerged.
4. Physics. A nuclear reaction in which nuclei combine to form more massive nuclei with the simultaneous release of energy.
5. Music that blends jazz elements and the heavy repetitive rhythms of rock. Also called jazz-fusion, jazz-rock.
6. A style of cooking that combines ingredients and techniques from very different cultures or countries.

A lot of potential. I keep thinking of the episode of Invader Zim where the aliens try to fuse things together with duct tape. “Let’s feee-yuuuze him with this juicebox!”

I’ve been trying to come up with some ideas for this GID. I thought of one where blob-like organizms would combine together to form larger ones. Another one featured a Fuse Ray/Gun that would lock two items together: two enemies, an enemy and another object, etc. A third involves the main player riding around in a tank that would fuse to nearby objects that act as weapons or armor. Another ideas was a game where you have to mend pipes that are about to burst by fusing the cracks shut.

That tank idea apparently has already been done. TUMIKI Fighters is kind of like combining Katamari Damacy and a sidescrolling shooter.

I’ve decided to go with the Fuse Gun idea. I imagine it would be funny to see characters getting fused with objects and trying to move about. Two really quick characters might struggle to move together, resulting in a slow moving composite. Some objects might actually make them stronger, though. Fusing a metal bucket to a small creature would result in a living tank.

I’ve decided to use C++, Kyra, and SDL for this project. I think most GIDs seem to use Garage Game‘s Torque engine, but there is no rule about what you can use.

I’ve been warned by TomB in #gameinaday on irc.maxgaming.net that I really should pick something simple for my first GID. The fact that I feel I need a design means that it is too complicated. Perhaps he’s right, but we’ll see how I do.

The Design

Fuse Gun Blast, or FuseGB, is a game where the player can use a gun to fuse enemies and the environment together. I am thinking of making it an overhead game like The Legend of Zelda, and the player can move in 8 directions.

Fusing
When the player shoots the fuse gun, a charged bullet will continue until it hits a wall and disappears or hits an enemy/object. If it hits an enemy, the enemy is frozen and charged for a few seconds, and the player can shoot a second enemy or an object. The two will then fuse together, and their abilities and movements will be changed.

Enemies can be fused to existing fused groups. For example, if there are three enemies, you can fuse two of them together, then fuse the remaining enemy with the group. Objects, such as buckets, can be fused to these “enemy farms”.

For simplicity, two objects cannot be fused together, and nothing can get fused to the walls. If a fuse blast hits an already charged enemy, the enemy is simply stunned for a time, but takes no damage.

Levels
Each level is made up of a room filled with objects, walls, and enemies. Destroy all enemies to complete the level. The less ammo you use to destroy enemies, the more points you get. Fused enemies share the same life force, so fusing them together allows you to use less bullets to kill all of them at once. Objects such as dynamite and bombs obviously allow you to destroy larger enemies easily.

I’ll likely only have one level at the end of this GID.

Enemies
They can move about in 8 directions as well. Some are quicker than others. Some are bigger than others. If they touch the player, the player takes damage and/or dies. When fused with another enemy, their stats are kind of averaged out. Enemies with 1HP and 3HP in a fused enemy farm will have 2HP combined, for example. They will try to move independently, but obviously can’t. On the other hand, if they try to move in the same direction, the farm will move faster than either normally would.

Items
Some items will be explosives. Other items will be speed reducers, but they can also act as armor and add protection. I am thinking that some items can be fused to enemies, turning them into friends instead. But that might add too much complexity to an already complex design.

I’ll leave it at this for now. I’ll document the development process as I go and post a blog entry at the end. Hopefully, I’ll have a working game to show for my effort, but even if I don’t, it should be fun and I should learn a great deal.

Click below to track my June 2005 GID development progress:
Part 1
Part 2
Part 3

Categories
Game Development Games Geek / Technical

Difficult Questions About Video Games

I recently bought Difficult Questions About Videogames from PublicBeta. They are giving it away “free”, saying that it is £100 off and I only had to pay shipping…yet the book arrived with a price on the back cover of a little over £14. Not sure what that’s about…

Anyway, I actually like it. It asks questions like “What is a videogame?” and “What is gameplay?” These are terms that get thrown about in game reviews and general conversation, and yet no one has a definitive idea about what they actually mean. Also, they use videgame as a valid word, but some of the responses they received questioned its validity since it should be “video game” much like rap music instead of rapmusic.

And it is amazing how different everyone’s opinions are! Some people make a distinction between video games and computer games, claiming that the former involve dedicated proprietary machines whereas the latter makes use of general purpose computers and software. Others make some incredibly arbitrary definitions in my opinion (usually played with thumbs? Seriously?). My favorite was: “Pass.”

It is clear that the language of video games isn’t very clear. Everyone knows what a video game is, and yet everyone disagrees about the exact definition. We apparently can feel good gameplay, yet can’t say what be improved for something that has “bad” gameplay.

It’s hard to believe that with video games being as popular, profitable, and important as they are, we still don’t know how to talk about them so that everyone understands what we mean. At first “what is a videogame” sounds like a simple question, but if you try to define it exactly, you can quickly see that it is a difficult undertaking. Difficult Questions About Videogames is definitely a good read for game developers and players alike.

Categories
Game Development Games Geek / Technical

Will Wright’s Spore

I finally had a chance to sit and watch Will Wright’s Spore presentation at the GDC. Yes, I’m probably the last to do so, but I found out through from Game Girl Advance that even though I missed GDC, I still could see the presentation.

When I first read the articles about it, I remember getting very excited. Now that I’ve seen it, my only request is that it be available for Gnu/Linux. B-) If anyone knows anyone at Maxis/EA, can you please pass that request along? Thanks.

Anyway, there is almost always talk about how stagnant the video game industry is. Most of the highly anticipated games are sequels, and usually just better looking ones at that. Nothing truly innovative about them. People say that we don’t want more of the same, but if you look at the big sellers, we do. Games like SimCity and Katamari Damacy occasionally come along and are new, fun, and easy to get into, but most innovative titles tend to get great reviews but poor sales. I have yet to play Prince of Persia: Sands of Time, but I heard that it was an amazing step forward for games of its kind. Sales figures, however, say that most gamers didn’t care. Then the sequel, Warrior Within, was released. Apparently the developers of this title decided to play it safe and go with what worked in the past. Sales were great.

Was Warrior Within a good game? I haven’t played it, but I heard it was. Just not as great as Sands of Time. Half-Life 2, Doom 3, Unreal Tournament 2004…all of them sequels, all of them basically first-person shooters. Vehicles, shadows, and gravity guns are their claim to fame. The next Unreal Tournament looks awesome, but then, you could compare it to Half-Life 2.

That’s not to say that I think these games are bad. Far from it. I’ve always felt that people tend to put too much importance on innovation. Sometimes a good game is just a game that is fun to play. Imagine if there was only one copy of every game type. Would it be better if Wolfenstein 3D was the last FPS? No way! The ability to actually aim in three dimensions is a nice feature to have these days. Better user interfaces make for better games, even if you are playing what is basically the same game. At the same time, if you are only going to play games that invent new genres, you will miss out on a lot of quality games while you wait.

Will Wright’s Spore, on the other hand, shows that huge leaps in innovation are possible, and it also demonstrates that you can mix genres with great results. Granted, the game isn’t out yet. All I’ve seen is the presentation he gave. But the capability to make the kind of game he is talking about is definitely there. And you don’t have to be Will Wright to do it, either. He said that his biggest bottleneck was convincing himself that it could be done.

Most new game developers learn that they should never undertake a huge project when they don’t know how to do anything but come up with an idea. Start smaller. It’s good advice, but at some point, when the developer has more experience, that good idea has to be brought back out into the light. Everyone had that RPG they wanted to make. Everyone had that cool game mechanic they thought would make Super Mario Bros 3 so much better. After all, there had to be something that made you want to make games in the first place. You didn’t want to just make puzzle and Pac-man clones all your life, right?

…Right.

Looking at the project ideas I’ve come up with, I can see that they are impotent in comparison to Spore. I could console myself with knowing that Will Wright and Spore put a lot of game developers to shame; however, I’d rather push myself to do better. I can come up with much better ideas than what I have now. Yes, ideas are a dime a dozen, but that just means I can afford to come up with a few hundred or a few thousand. One of them is bound to be the beginnings of a great game.

So I’m optimistic about the games of tomorrow. Spore shows people that they can do much better. I’m sure others will make fun games that are innovative. And I’m also confident that I can be one of those developers.

For now, I still need to finish my first project, even if it is based on a clone.

Categories
Game Development Geek / Technical Politics/Government

Software Patents? No Thanks!

I just read an article on Gamasutra titled It’s Just a Game, Right? Top Mythconceptions on Patent Protection of Video Games. I am interested in news and articles on software patents, and I’ve always been against them. While I believe patents can cover a physical invention, like a better mousetrap or printing press, I don’t believe patents should cover things like mathematics or intangible ideas.

You want to protect your software? Copyright covers your needs. It’s cheaper, and it’s faster. Trademark will protect anything from logos to specific characters. But patents? Way too expensive. They also bring the software industry to a standstill rather than push its progress along as claimed. Patents are supposed to be granted for non-obvious inventions. Most software patents are for obvious ideas. Anatomy of a Trivial Patent shows how easy it is to make something obvious sound incredibly complex and inventive.

When I read this article, I was hoping to receive information that either supports my view or gives convincing arguments for the opposing view. What I read, however, was lame B.S. about the “merits” of software patents. I will now go through each of these myths getting “busted” throughout the article.

Myth 1:
The first Myth being “busted” here is that you can’t patent computer programs. The truth is, you can patent specific ideas that are used in video games, but the author decides to argue this myth by first pointing out that you can patent the computer/console hardware. Huh? He then gets to the software portion:

  1. “Scoring based on goals achieved and subjective elements” sounds awfully familiar. Oh yeah, it is because most games with scores give you points for doing certain tasks, and the idea that you can get points for doing things in a cool way isn’t all that innovative, is it?
  2. A patent on the use of a machine? Again, not the same argument here.
  3. Sega’s patent on making characters run out of the way of an oncoming vehicle. Something that happens in CARTOONS and real life all the time!
  4. Battlefield strength and morale in a strategy game. Aren’t board games using this mechanic? Couldn’t I just as easily call these elements something else, like “popularity” or “happiness points”?

He also talks about how you can patent the distinct way a logo appears on the screen. These are actually the also-controversial “design patents”. I think trademark would do just fine here. In fact, that’s what trademarks are perfectly suited for because that’s what they were made to protect! Let’s look at the entry in the US Patent database: D487,574 has a list of other design patents that say essentially the same exact thing:
“The ornamental design for an icon for a display screen, as shown and described.”
“The ornamental design for an interface for a display screen for an electronic device, as shown and described.”
“Surface ornamentation for a handheld computer or a computer-generated icon for a handheld computer.”
“Icon for a display screen.”

Aren’t patents supposed to be granted for inventions? What’s so inventive about each of these that the others don’t already have prior art on?

And in any case, at no point is the “myth” that you can’t patent computer programs actually busted. You can patent techniques and algorithms, not whole programs. Nice try, author.

Myth 2:
The argument being made here is that even if you make a clone of a game, you have to have something unique about it, right? Patent that unique thing!

I create a power-up that makes the entire screen turn upside-down. Is that really going to be considered patentable?

Myth 3:
This argument says that while a patent might take a long time, you can get provisional rights, giving your application power even if your patent isn’t approved yet. Also, there is this quote:

Additionally, this may be another example of selling yourself short. Many inventions are broader in scope than the particular embodiment first produced by the inventor, and a good patent attorney can help an inventor identify the true, full scope of the idea that has been invented.

No, a good patent attorney can help an inventor identify the wording to make an otherwise specific “invention” cover a broad range of other “inventions”. You can patent “a mechanism for keeping point totals in order” and now you control the Top 10 List, but if you patent “a mechanism for displaying data in an arbitrary order” you have now patented not only the Top 10 List, but also end-game statistics for all kinds of games. Essentially, the author here is trying to convince you that there is a lot of money to be made by making your “invention” as broad as possible to cover as many possibilities as possible.

Myth 4:
Suing is expensive. The author ignores that point by arguing that patents are used for more than simply suing. Fine. But this line:

A patent portfolio is also a good defensive tool. Competitors, who will no doubt take advantage of the patent process for themselves, will think twice about suing you if there’s a threat of you suing them back (i.e., a countersuit).

Yeah, I’m sorry. No. If IBM, Microsoft, or probably even EA decides to sue you, your single, measly patent isn’t going to do anything. These companies will likely claim that your patent is actually making use of one of their patents. Imagine coming into a water-balloon fight with a pack of balloons, and the opponent holds the only water hose to fill them. That’s what it is like. IBM has argued that its huge patent portfolio is a great set of assets not because they receive licensing revenue, but because IBM can write whatever software it wants. NO ONE can go to IBM and say, “Hey, you’ve infringed on my patent, so give me money!” because IBM will return with, “YOUR patent makes use of any number of the thousands of patents we have. You can go away now. Oh, and you’ll also let us license your patent at no real cost to us. Have a nice day.”

Myth 5:

The “spirit of innovation” works best when there is a free market of ideas, and consumers are better off if video games are not patented.A classic argument among those who feel that the entire patent system should be abolished. You might want to make that argument to your representative in Congress, because unless the Constitution is amended to do away with patents, they’re here to stay.

The quote above is one of the examples that really showed that this article wasn’t meant to be informative so much as to persuade through deceit. One, people aren’t arguing to abolish the entire patent system. People are arguing that certain types of patents, specifically software patents, shouldn’t exist. The second statement implies that the Constitution already mentions patents, when it doesn’t. The Constitution grants the power to create ways to reward people for progress, but doesn’t create any specific power, like copyright or patents.

The patent system changes. So does copyright. It isn’t a far stretch to think that some changes are better than others, and some changes are just plain bad. The ability to patent software is one such change.

In the last paragraph for this “myth buster”, he talks about Ralph Baer, who supposedly gets credit as the father of video games. Don’t most people believe that Nolan Bushnell did it first? In fact, the author mentions Pong, which is technically Bushnell’s game. Bushnell opted out of a patent infringement suit by Magnavox because Pong was based on Baer’s more complex Ping-Pong game. Other companies lost lawsuits, and Magnavox made a lot of money. The author then mentions that Spacewar was created by Steve Russell.

Unfortunately for him, Russell did not seek patent protection on his concept, and did not document his development efforts as well as Baer. We will never know how history may have been rewritten had Russell sought patent protection on Spacewar. The moral of the story is simple: you should act to protect your inventions.

It sure sounds like it. Baer makes millions, and Russell failed. No, wait. Let’s remember who Russell was. A programmer at MIT. He made the first game that would be distributed with the computers being used at the time, which were mainframes. Trading programs wasn’t called piracy back then. It was called sharing. And you did so with tape, not disks. No one downloaded anything over p2p networks.

Russell was a student, and he hacked just for fun on the new DEC PDP-1. No one at the time thought to make money by selling software, let alone games. So Russell wasn’t trying to make money off of his game. Once again, the author is trying to convince you that software patents are great by offering up hints of ideas that you will hopefully turn into facts in your mind. I know the story, and so I knew that this comparison was horribly contrived and the language implied something that isn’t true. How many people know about Steve Russell and Spacewar? How many people reading this article would think that Russell “failed” with his game while Baer succeeded with “his” Pong?

If that specific paragraph in the author’s article doesn’t convince you that this author is trying to sell you something, I don’t know what will.

Myth 6:
Patents are expensive. The research prior to filing may be cheaper than ever, but the filing of a patent costs serious money. Maybe EA can afford to pay the thousands just to patent games, but indie developer budgets can easily double or triple due to filing costs. Don’t forget that if you have to sue or defend yourself, your lawyers will cost money too. Not everyone will make millions by suing people who make card games.

In the end:

Video game innovations will play a large role in determining who shares in the ever-growing multi-billion-dollar video game industry. As more and more companies enter the market, and spend more and more resources developing those innovations, protecting those innovations will become even more critical.

Whoa, whoa, whoa! Back up a bit here. If the Constitution grants the power to create things like copyright and patent laws to promote innovation, and more companies are entering the market and creating things, do we need MORE protection? Doesn’t this just contradict everything the author himself was saying? Patents allow for progress. There is more progress. Therefore, we need to “protect” progress? From who or what are we protecting our “inventions”? The author doesn’t say. The implication, of course, is that other people will take your “invention” and start making money from it, and you need to protect yourself.

We don’t need software patents to make software. Software patents don’t promote progress. They stifle it. Most software patents are being used defensively. Microsoft, IBM, and others trade licenses, and no real lawsuit gets completed anymore. “You can make use of our XOR patent if we get the right to use your patent on computer animation with color.” Not everyone is Microsoft or IBM, and so not everyone would benefit from software patents. The only real reason given in the article is to do it because everyone else is doing it. Get them before they get you.

Software innovation happens in spite of software patents, not because of it. If everyone who wrote software had to do a lengthy patent search before writing code or releasing projects, how many projects would be dead due to IBM alone? As the author explains, ANYTHING can be patented, so it isn’t like software patents are documenting actual inventions.

Software patents don’t protect anyone but large companies. They are expensive. They cover ideas, algorithms, and mathematics when patents are supposed to cover actual inventions. And even more important, the author was clearly trying to deceive rather than provide actual information. Can someone give REAL arguments for software patents? It doesn’t seem so. Most arguments “for software patents” tend to sidestep the issue and claim that patents are doing what they always do. Such arguments ignore the fact that software development is not like building vehicles, and they ignore the actual question: should software patents exist?

I believe they shouldn’t.

Some links:
League for Programming Freedom
Paper arguing that software patents would actually reduce innovation and progress (PDF format)

Categories
Game Development Games Geek / Technical

Out of Touch with Games

I’ve been meaning to post about how I am out of the loop when it comes to mainstream games these days. Wario Ware? I still haven’t seen it, but apparently it is huge. I didn’t see the Nintendo DS in action until a few weeks ago. In fact, I haven’t seen the PSP. Lumines? Wipeout? I haven’t seen the Game Boy Advance SP except in other people’s hands.

I wanted to check out Prince of Persia: Sands of Time a few months ago, but it was sold out. I ended up getting Metroid Prime, which is definitely a fun game, but my keyboard/mouse hands can’t remember how I used to play Goldeneye 64 with a passion. I bought Civilization III months ago because it was at impulse-buy range (under $15). I still haven’t pulled the cellophane off of it. I’m only now considering purchasing Unreal Tournament 2004, which got to the top of me and my friends’ want lists because it was available for Linux out of the box (thank you, Epic! I’ll thank you with my dollars soon).

In the meantime, there has been new a Metroid game, a new SimCity(how did THAT escape my attention?!) and an expansion pack for Doom 3. Nintendogs was out. Nintendo was announcing a new game console. All of these things were news to me way after they should have been.

I used to be on top of Nintendo-related news since I had a subscription to Nintendo Power. Last year I realized that I wasn’t playing Nintendo games as much so I gave it up, but now I find myself surprised that other people know about things before I do. I used to be the GOTO guy for Nintendo trivia and knowledge!

And regarding PC games: I just don’t have the time to play all the games I currently have, let alone buy new ones. I loved Homeworld Cataclysm, but I wasn’t going to buy Homeworld 2 since the demo didn’t impress me that much. Dungeon Siege? Sounded cool, but I wasn’t really compelled to play it. Black & White’s expansion didn’t end up in my collection even though I loved the original.

Am I really capable of making good games if I don’t even play many of the existing games? You can’t become a good writer without reading a lot of books, and I think you can’t make good games without playing a lot of games. The good games will inspire, and the bad ones will acts as sign posts, warning the intrepid developer about what not to do and where not to go.

Clearly, I have some improving to do.

Categories
Game Development Personal Development

Goals and Habits: Program for 5 hrs/week

Since I think coding practice should be a higher priority in my life, I’ve scheduled two days out of the week to program. Monday and Tuesday evenings after work, I will spend at least two hours programming. Four hours of the week can easily be accounted for there, and I could always do more on those days and others.

Previously I assumed I could squeeze time out of my week to program, but since I didn’t have any hard rules about it, I never did it. The thinking was that I could always program “tomorrow”, and of course tomorrow always had its own excuses.

Eventually procrastination became a habit. If I did have time in front of my computer, I ended up checking email or configuring something that I didn’t need to configure at that moment. Even now I catch myself getting distracted too easily during my programming time. I find myself trying to check my email or reading blog entries and have to force myself to continue programming.

Breaking old habits is hard, as everyone knows. I recently bought Steve Chandler’s 100 Ways to Motivate Yourself audio book. I listen to it in the car and am amazed at how much education you can get in a 30 minute drive. One of the things he talks about is breaking bad habits. He says we can’t simply drop bad habits. We must replace them with better habits. In my situation, I simply need to get my mind to think that it is time to program whenever I am in front of my computer instead of having it think that it is time for recreational web browsing. He also talks about will power and the need to exercise it. The more we practice control, the stronger our will becomes. The two tips go hand in hand.

Each time I refuse to check my email during my designated programming times, I get that much closer to replacing habitual time wasters like useless email and web browsing with habitual productive activities. Building will power in this way applies elsewhere. For instance, each time I make myself check my calendar before making a committment, the more useful and powerful my calendar becomes. Each time I check my lists when I am deciding on my next action, the more important my lists become to me, which means I’ll use them more.

Creating good habits and getting rid of old ones is great for accomplishing goals. If I make a regular habit of programming each day, I simply have to hit my goal for the week, and therefore I can’t NOT hit my goals for the month. As Chandler says, “It’s mathematical.”

Categories
Game Development

Chicago Indie Gamer Meeting for April

Today was the Chicago Indie Gamer Club meeting for April. I was not able to accomplish my goals for this month before the meeting.

As bad as I may feel for failing, I’m really glad this meeting exists. In the past, I’ve had spurts of game development between periods when I didn’t do anything. Without the deadline this meeting imposes on me each month, I may not even notice that I’ve spent a week or two not working on my projects. I probably would coast into May without realizing how much time has gone by since I last coded.

I know I had setbacks at the beginning of this month. The hardware failures and reinstallation of my main computer required that I take some time to recover to get to the point where the system was usable again. I had a couple of games to review. I was updating my resume. I wrote some scripts to help with automating backups.

But even with those excuses, I clearly failed. I never made programming the priority that it should be. I should not be trying to squeeze in some coding time around the rest of my schedule. Instead, I should dedicate blocks of time to coding and have everything else fall around them. For example, I just reinstalled Kyra on my system this past week. My computer has been operational since the beginning of the month. So why the delay? I wasn’t programming, so I wasn’t using the library. I didn’t need Kyra installed if I wasn’t using it, so I never noticed that it was not installed until recently. So when I was ready to code the other day, I had to spend some time installing a library that should have already been ready to use. I spent the little time I had spared just getting the system ready, and it resulted in lost practice time.

I plan to rectify these issues with the goals I set for next month. Even though I never mentioned them at the meeting, I’ll list them here:

  • Block out time for regularly scheduled programming
  • Continue to practice programming for 5 hours per week
  • Make a simple game by the end of the month
  • Setup an automated build system by the end of the month
  • Setup a cross-complier on my system by the end of the month

The first goal is kind of a metagoal. It is primarily to help me accomplish the next goal. If I have regularly scheduled programming practice, I can’t possibly miss my goal of programming so many hours per week. The third goal is likely going to be worked upon during my practice times. While I could work on anything to satisfy the second goal, I can also be efficient and kill two birds with one stone.

The last two goals are important. The automated build system will make the process of building the project from scratch incredibly easy. I don’t manually compile my code at the moment since I use GNU Make, but I have to manually invoke make each time I want to use it. That option is nice to have, but I can easily miss something in the full build. I don’t want to create a demo download that won’t actually install on a potential customer’s computer because it was missing a file. Automating the builds will help by removing the concern to do testing and builds from my mind. I can discover the results and work from there rather than worry about the correct steps to carry out.

The cross-compiler will make it possible for me to use a single code base on a single system and build for multiple platforms. I can currently compile for Linux-based systems, but I would like to compile my projects as Windows applications as well. Rather than copy the code to a Windows machine and run a Windows-based compiler, I can use a cross-compiler on my Debian machine and make it compile a Win32 binary. I will need to test it to verify that it works obviously, but I would be testing the native binaries as well.

I don’t believe my goals are overly difficult or ambitious, but even if I don’t accomplish everything, I know I can accomplish at least some of them. By the end of May, I hope to have great, tangible results.

Categories
Game Development Personal Development

What Happened to my Productivity?!?

It’s April 19th. The Chicago Indie Game Developer meeting is in less than six days. My goals for this month were to continue programming for 5 hours per week and to complete a simple game. While the month isn’t over yet, I haven’t accomplished these goals at all.

Last month was great. I programmed. I learned how to use Kyra. I learned a lot.

This month, I hit a stumbling block right away when my video card needed to be replaced. I also spent some time updating my resume to look for a full-time job. I have a couple of game reviews to do for Game Tunnel. Still, if I claim that all of these things prevented me from accomplishing my goals, I’d be lying to myself. My computer was back up and running within a few days of the problem. I didn’t spend more than a few hours total over a week on my resume. And I haven’t been playing the games too much either.

So where did my time go? Actually, the more accurate question is, “How did I squander my time?” How did I let an hour or two go by without at least doing something for a few minutes that is related to my goals? Even if it was an overwhelming amount to do, which is certainly not the case, at least ONE thing could get completed, right?

This past week I’ve been in a funk because I feel like I haven’t accomplished anything at all. My game review is overdue, my job search hasn’t really started yet, and I haven’t coded anything since I reinstalled. It doesn’t help at all that I may be getting sick as well. I’m feeling stressed and worried, which wastes my energy, which only serves to make me feel more stressed and worried.

So April is a bust.

Or is it?

While I can’t do anything about the delays at the beginning of the month, I’m allowed to reset my goals. Clearly I failed in programming for the past three weeks, but nothing prevents me from doing so for this week. I haven’t created the game, but nothing prevents me from trying to make a simple game in less than a week. It’s been done before, and I’ve already mentioned my intent to participate in my own Game in a Day. Perhaps I won’t finish the game. But attempting to do so puts me in a better position than where I am currently, so that’s reason enough for me.

Nothing prevents me from accomplishing my goals. Except me.

Look at that. My stress is gone. It’s been replaced with resolve. Fancy that.