Categories
Game Development Personal Development

Thousander Club Update: February 25th

For this week’s Thousander Club update:

Game Hours: 409.25(previous two years) + 8.25 (current year) = 417.5 / 1000
Game Ideas: 710 (previous two years) + 15 (current year) = 725 / 1000

I’ve been journaling about an appropriate EULA for the game. While the source code could be licensed under the GPL, the actual game data doesn’t need to be. An example of a game that uses a different license for its data from its source code is the well-known Dangerous Rooms of Death: Journey to Rooted Hold. It is obvious that it can be done, but at this point I’m not sure if I even want to keep the data proprietary. The art and sound effects were quickly put together to be placeholders so I could work on the game mechanics. I was planning on replacing them with better assets, probably outsourced or otherwise not made by me.

Since this game has taken me so much longer to make than it probably should have, I just want to release it and move on. Still, I could retain the rights to the data, requiring that if you want to redistribute my game, you would need my permission to do so unless you replaced the data with your own. In the future, I may need to release a game with proprietary data, and having the experience now can only help. Even if I only release the game for free, having the data licensed separately from the code leaves me with more options. Besides, releasing the data under the GPL or a similar license really doesn’t make sense.

I’ve been thinking more about the process I’ve been following to make a game, and it’s not going to work out. Essentially I’ve come up with an idea and then worked toward implementing it. Maw!Soft’s humorous Thousander Club Update from November of 2006 documented a list of prototypes done throughout the year. Since then, I’ve been reading a lot about the benefits of creating quick throw-away prototypes. Gamasutra documented the prototypes developed by the creators of Tower of Goo, and back in 2005 I’ve written about the interview with James Gwertzman of PopCap in which he claims that the development process is “extremely prototype-heavy”.

I still want to get to v1.0 with Killer Kittens to have a finished game under my belt. I was thinking about going back to work on Oracle’s Eye afterwards, but I think my time would be better put towards prototyping ideas. Oracle’s Eye is not exactly a well-formed idea, so I could just prototype with it, but the point is that I want to make a good game next, and it is clear that creating prototypes is the best way to figure out if an idea is a winner. I mean, it works for PopCap, and not doing it clearly doesn’t work for major publishers. I don’t know about you, but I don’t have billions of dollars to invest in a project for three years before finding out that the game won’t sell enough to recoup its costs.

[tags]game design, productivity, personal development, video game development, indie[/tags]

Categories
Game Development Personal Development

Thousander Club Update: February 18th

For this week’s Thousander Club update:

Game Hours: 409.25(previous two years) + 8.25 (current year) = 417.5 / 1000
Game Ideas: 710 (previous two years) + 0 (current year) = 710 / 1000

It’s not that I haven’t been coming up with ideas. I just haven’t transferred them from my notebook to my computer, and until they are in the master list, I don’t count them.

I finished working on fixing my build scripts. In less than 10 minutes, I can now go from a freshly pulled-down-from-Subversion project directory to a distributable tar.gz file that lets the player untar and play in any directory.

My next step was to fix the menu system. When I last worked on this project, I wanted to replace the menu elements with a library of existing code, such as Guichan, but since I would like to hit v1.0 sooner rather than later, I decided to work with what I have for now. It’s better to get something out there now and improve it later. Frankly, the only really bad thing is the volume control slider in the options menu. I tried to write a general purpose slider, but I do not have enough experience in writing GUI code to do it well. Since it has been months since I last looked at this code, I am not sure if I should be impressed or disgusted with what I managed to hack together.

Ignoring how badly I want to replace all of it, my main concern was that each time the player brought up the options menu, it would assume that the volume was set to the highest level. On startup, this is true, but if the player lowers the level, exits the options menu, and then returns to it, the slider will be reset to the highest position even though the audio level itself hasn’t changed. This is partly because the slider’s position is not coupled to the volume, and partly because my code to load the options menu was hardcoded to use the highest volume setting as the value to associate with the slider upon startup. It was a simple fix to get the options menu to load and pass in the current volume setting to the menu slider control when it is created.

Ok, great. That problem is solved, but while I’m messing with the volume slider, I should fix another problem. What if the player wants to mute the sound? Well, you could move the slider all the way to the left. You could, but up until now, because it was so decoupled, you wouldn’t get the volume muted. It would just be very low, which means you could still hear the sound effects. Another small change in the code fixed that problem, too.

What’s next? I would like to ad a credits page to my menu system, specifically to thank people who have helped me as well as give credit to font creators as per their license. I would also need to make a final decision on how the content of the game is going to be licensed. Once those two tasks are completed, I will have a v1.0 to distribute.

For part of this week the day job is sending me to Las Vegas for a prototype. If I get some time during the weekend, I should be able to squeeze some of my own development in, but otherwise I don’t expect to accomplish much. Then again, I could doodle on the plane and during downtime. I can mock up some screens for an improved Killer Kittens after v1.0 or for some future project.

[tags]game design, productivity, personal development, video game development, indie[/tags]

Categories
Game Development Personal Development

Thousander Club Update: February 11th

For this week’s Thousander Club update:

Game Hours: 409.25(previous two years) + 6 (current year) = 415.25 / 1000
Game Ideas: 710 (previous two years) + 0 (current year) = 710 / 1000

I found that my build scripts were broken for the game. You know how if you leave a Nintendo controller out long enough that the cable somehow gets itself tangled? I always wondered how it happened. Now I wonder how the heck my code stopped working since it isn’t as if I changed anything to break it. Whatever. I set to work fixing it.

To build my game, I am building custom versions of libraries, such as libSDL and Kyra. Rather than use my system’s installed libraries, I want to be able to distribute my game without the player needing to worry about dependencies. To make the download size smaller, I was building the libraries so that only what I needed for my game was compiled. For instance, libSDL didn’t need to load BMP or TGA files since I was only using PNGs. To build these libraries and make sure they installed into my project’s subdirectory instead of into my system, I had to pass the install path name into the configure script.

It turned out that the build scripts were hardcoded to pathnames on my desktop. Now, we all know hardcoding things is bad, so why did I do it? Well, it turns out that you can’t pass relative paths into a configure script. They had to be absolute paths. I needed to pass “/home/gberardi/Projects/foo/lib” instead of “../../lib”.

So since I was just trying to build my game as quickly as I could, hardcoding it was fine. Since I started building it on my laptop, however, the directories I kept my projects in were different, and I had problems.

In a few hours, I learned more about using GNU Make, specifically how to pass around variables from one makefile to another. Now I can get the absolute pathname of the project, and using that, I can pass it around to subdirectory makefiles, which can then specify other subdirectories. Also, if I use any machine to build the project, it should work without a hitch.

Now I just need to get the game to build. Kyra is a real pain to deal with because the original maintainer did not keep the build scripts working for it. You cannot configure && make && make install. Or at least you couldn’t, until I learned about autoconf and automake enough to get it to work last year. Unfortunately, it turns out that I’ll need to jump into it again because it copies over most header files into the install directory, but not all of them. I’m sure it won’t take much to change the build to copy those files, too, but it might take me some time to figure out how to do it. In a pinch, I can hack a small script to copy those files separately from Kyra’s build, but it would be nice to have the library act self-sufficiently.

Kyra is just a tool, of course, and as nice as it has been, it may be best to switch to a much better supported tool, such as Allegro. Once I finish v1.0 of Killer Kittens from Katis Minor, I’ll make an effort to switch libraries. For now, I just need to get to 1.0.

EDIT: Oh, it turned out to be easier than I thought. Makefile.am just needed to be edited to tell it how to create the files, then automake needed to run to generate the Makefile.in. Simple. Now my game builds and runs just fine, which means my real work can begin in earnest.

Categories
Game Development Personal Development

The Thousander Club in 2008

The last time I updated the Thousander Club entries, I had the following data:

Game Hours: 262.25 (previous year) + 146 (current year) = 409.25 / 1000
Game Ideas: 616 (previous year) + 103 (current year) = 710 / 1000

That was September 24th. Somehow throughout the rest of the year, I did not work on my game development again. I’ve had a few more ideas since then, but not significantly more.

It is now February, and I am just now getting back to game development. It’s been a long break, and while I think it has been way too long, the best I can do is move forward.

It’s a new year, and these are my new starting stats:

Game Hours: 409.25 hours out of 1000
Game Ideas: 710 ideas out of 1000

Two years and I still haven’t gotten to 1,000 ideas? I should be able to fix that soon. Adding hours in game development might still be more difficult, but I hope I can make significant progress this year. I’m due for some time off at the day job, and I hope I can take advantage of it.

Ready, set, go.

Categories
Game Development Games Geek / Technical

My Knighthood Story So Far

Knight Corvus sent me an invitation to join him in his army, and I could not refuse. I joined him as a squire, intent on moving up through the ranks of Knighthood. Of course, I had my own castle to run, and soon enough, I had built up a formidable army of my own. The market was healthy, the workshop was busy upgrading my defenses, and the walls, palisades, and watchtowers kept it all safe. As a knight, I served as a strong arm for Knight Corvus. Once I gained the title of Baron, however, I knew it was time to leave my liege and strike out on my own.

I was sovereign now, but I was attacked by more than a few people attempting raids on my treasury. More and more of my friends joined my army at my invitation, and my castle was much more secure due to their help. Still, the raids kept coming.

Looking at the numbers, I knew that if I didn’t find a way to add more bodies to my castle, my army would be weak in comparison to other armies, especially in the face of alliances. I was continually attacked, occasionally losing money, but thankfully I never lost a vassal. I realized I needed to seize my own vassals if I was to stay ahead.

My first attempts were unsuccessful. Perhaps I was new to the kidnapping game, but I could not capture my first target. After multiple attacks on my part, I gave up. My next attempts were more fruitful. I pressed the attack on Knight Ajdin’s capital until I was to emerge victorious: Knight Chris was now my vassal. Though he is still loyal to Knight Ajdin, he has become a very productive member of my workshop. Perhaps by the end of the next day, he shall give no second thought to swearing fealty to his new liege.

Soon to join Knight Chris was Lady Lainey, formerly of Knight David’s service, and Knight Moti, who I am sure Knight Art shall miss. Then again, perhaps not. No attempts to save these vassals have come.

Knight Geoff has been somewhat more concerned about his former vassals. Knight Carl and Knight Tim are spending the next couple of days in my newly built Tower. Knight Geoff has attacked me multiple times in the past day, and though my defenses hold strong, I do not want to take any chances. There have been random attacks by other armies as well, and if fortune goes to Knight Geoff, he may find that my army has weakened before he arrives with fresh attackers.

My strategy seems to be working so far. I have not lost so much as a single piece of gold to a raiding army, and as I gain more and more vassals, I’m sure I will be able to continue to support my fortifications while also expanding my capital. Still, I fear that all of my efforts will be for naught. I do not have the heart to dedicate all of my waking hours to my castle, and in the face of strong alliances, I do not see how I can hope to become the highest ranking knight in all of the kingdoms.

For now, however, I will enjoy sleeping, knowing that Knight Geoff’s cries of anger are echoing in his streets. I left him his best knight, though, and I wish he would show a bit more gratitude at my generosity. Perhaps if our paths cross again, I will allow him to join my army as a reward for amusing me with his persistence.

Categories
Game Development Games Geek / Technical

SimCity Source Is Now Under the GPL!

Found through TIGSource, which found it through Fear and Loathing:

This is the binary and source code for Micropolis (A.K.A. “S*mC*ty”: see the GPL License and additional terms, below), which is released under the GPL.

The One Laptop Per Child laptop is going to have an official and original SimCity game available for it. Don Hopkins has cleaned up the code and removed references to the SimCity trademark. Now the source to the original SimCity is available for everyone to study, play with, and change!

The key thing here is to peek inside the mind of the original Maxis programmers when they built it. Remember, this was back in the day when games had to fit inside of 640k so some “creative” programming techniques were employed. SimCity has been long a model used for urban planning and while it’s just a game, there are a lot of business rules, ecosystem modeling, social dependencies, and other cool stuff going on in this codebase. It may not be pretty code but it’s content sure is interesting to see.

Categories
Game Development General Personal Development

Oh, and Happy New Year!

It’s been a week since January 1st, and I just moved into a new apartment. Yes, I know I was supposed to move in August, and I did, but then there were problems with that place, so now I moved again. I’ve been in crunch at the day job as well. All of this conspired to slow down my blog posting and my game development.

I’m still unpacking, but hopefully I won’t have to move again any time soon. The Thousander Club got derailed for some time, as well as my Killer Kittens game, but I hope to get back on track towards 1000 game dev hours and 1000 game ideas soon.

Categories
Game Development Games Geek / Technical General Personal Development

Catching Up On Life

Since moving into my current apartment in August, I’ve let things get a bit out of control in my life. My last Thousander Club post was in September. My inbox has been looking like a huge chore to get through. My blog comments were an even worse chore, but I hope I fixed that problem (more later). November is National Novel Writing Month, and I had entered NaNoWriMo, only to write a little over 2,000 words out of the goal of 50,000. It’s not that I haven’t had the time. With not working on Killer Kittens or writing blog posts, I had plenty of time. Without going into details, things in my life have been fairly hectic these past couple of months. Frankly, my business, blog, and side projects like novel-writing had to be put on the back burner. That I managed to finish reading a book throughout all of this is an accomplishment.

But I’m finally getting back on track. I’m remembering how to write lists to focus my actions. I’m itching to work on Killer Kittens again. I want to write about games and their development again. But first, I need to work on my backlog of tasks I’ve been neglecting.

I finally reduced my email inbox at the day job to 0, and I have been maintaining it for the past couple of days easily. I still need to tackle my GBGames email. I just installed Akismet, and I should have done so a long time ago. Today I deleted another few hundred spam comments, and a couple of days ago I had over 1,000 spam comments. I didn’t even bother going through it to see if a legit message was in there, so if you had posted a comment that didn’t automatically get posted for being a loyal commenter, you may need to repost.

My physical inbox at home is still a pile of mail, notes, and papers, but at least I finally entered all of the receipts on my desk into GnuCash. My bills are paid. All the urgent and important things are taken care of on this front. I can tackle the rest either all at once or in chunks.

I need to renew my domain names, renew my just lapsed membership to the IGDA, and renew my ASP membership.

And all the while, I need to remember to make lists of Next Actions and Projects.

Oh, and I want a TV. Nothing sucks more than having six different consoles of as many generations without a television to connect them to. Still, I have a computer and a decent network connection, so while I can’t watch Heroes, Chuck, and Pushing Daisies, I can watch Irving Renquist, Ghost Hunter and random cats and elite Starcraft matches on YouTube. Wait, I can watch Heroes and Chuck online, but it’s just not the same.

Anyway, I’m hoping to get back into regularly updating my blog. I might not have a post each day, but hopefully I will have something interesting to contribute more often than not. Tonight I think I will update the books I’ve read and games I’ve played list. Quake 4 is actually fun, by the way.

Categories
Game Development Personal Development

Thousander Club Update: September 24th

For this week’s Thousander Club update:

Game Hours: 262.25 (previous year) + 146 (current year) = 409.25 / 1000
Game Ideas: 616 (previous year) + 103 (current year) = 710 / 1000

I don’t have too much to report. I didn’t do much with Killer Kittens as I was having trouble motivating myself to work on it while so many other things were happening in my life. Now that I’ve been away from the project for so long, perhaps it will be easy to look at it again. B-)

Categories
Game Design Game Development Games Politics/Government

Cloning is Ok? Absolutely!

GameSetWatch reposted an article by Dr. Colin Anderson of Denki, creator of Denki Blocks. The article appeared on Gamasutra first. Opinion: Denki’s Anderson On Why Casual Game Cloning Makes Sense argues exactly the opposite of what many indie developers would claim: that allowing games to be legally cloned actually fosters innovation and is good for the industry.

And after reading his arguments, I agree.

I have yet to publish my own game, so if you think that my opinion doesn’t matter, then feel free to ignore the rest of this post. Considering that I will be publishing a game (hopefully soon) and probably many more afterwards, I am planning on entering a business environment in which you may already sit. I also know that I am not alone in thinking this way.

Anyway, I want you to think back to 2000 when Hasbro was going crazy with lawsuits. GameDev.net had posted news item after news item about lawsuits by Hasbro against game developers. Diana Gruber wrote an article titled Why the Hasbro Lawsuit Should Terrify Game Developers And what we can do about it. It’s a short read, but a good one. Unfortunately the news item it links to is down, but good ol’ Archive.org saves us again.

Filed this morning at the US District Court in Boston, MA, the complaint seeks to require the defendants to cease production and distribution of, and to recall and destroy, the following games: Intergalactic Exterminator, 3D Astro Blaster, TetriMania, TetriMania Master, 3D Maze Man, Tunnel Blaster, UnderWorld, XTRIS, Patriot Command, HemiRoids, Bricklayer, 3D TetriMadness, Mac-Man, 3D Munch Man and 3D Munch Man II. Hasbro Interactive is also seeking damages.

So Hasbro, having obtained the rights to a number of classic games from Atari, decided to protect their copyrights. No biggie, right? How dare companies try to make games based off of Pac-man, Tetris, and other licensed properties. “Consumers should be aware that the companies named in this suit are making games based on properties they don’t own or control.”

What was the first game you created? Was it a clone of Tetris? Pac-man? Space Invaders? It was a learning experience, right? Did you know that it was copyright infringement? Did you know that even if you didn’t try to sell it like the defendants in the lawsuit, who were definitely making games for commercial gain, that you were still committing copyright infringement? If you need a refresher course on copyright (and considering how complicated it is, who doesn’t?), you can read through my article on copyright law and come back to this article. Now think about how copyright law, if enforced the way Hasbro wanted it enforced, would harm the game industry in terms of educating new developers.

When someone learns how to paint, they usually start with still lives of fruit in bowls. Writers learn how to write doing standard creative writing assignments. Musicians play standard pieces of music. Most everyone in the game industry understands that new game developers will need to work with simple, basic games before moving up to more complicated, original games. Almost everyone suggests that you start out by trying to make Tetris, Pong, or some similarly simple and classic game.

I remember reading the news about Hasbro’s lawsuits and becoming afraid. I made a Pac-man clone once. Will Hasbro come after me next? Maybe I shouldn’t work in the games industry if I don’t have the means to defend myself against a lawsuit.

If Hasbro had its way, the game industry would be made up of a handful of unique games, games in which there isn’t any overlap in gameplay and mechanics…or an industry in which only the owner of existing works can innovate off of those works. Imagine Capcom needing to license the rights to a side-scrolling platformer from Nintendo. Would MegaMan have been made?

Frankly, we don’t need any companies like Hasbro suing developers for copyright infringement simply because their games have the same game mechanics. Musicians don’t sue other musicians for making use of the same chords. Software patents are scary enough. Learning about those made me once again think that I should get out of the game industry. Software patents CAN and HAVE been used to legally prevent games with similar play mechanics from being made or published. Patent lawsuits, however, are expensive, and so they aren’t nearly as scary. Microsoft or IBM might sue someone for patent infringement, but it is unlikely that they will use their patents against indie game developers.

However, more than a few indie game developers hate clones enough that I can see them owning patents on their own games simply so that they can sue a supposed infringer to next Tuesday. Again, patent lawsuits are expensive, so they’ll need to be careful.

Another reason why I think that the ability to clone games isn’t a bad thing: I think copyright lasts too long. Again, see my copyright article. The life of the author plus 70 years? Do you know how many generations of video game consoles you’ll go through before someone can make a derivative work on an existing game? Being able to innovate based on existing games today means we’ll see more innovative games, and sooner.

And yes, that’s right. I think the ability to clone games will lead to innovation. Does it sound contradictory? How can cloning a game lead to innovative gameplay? Wouldn’t everyone be copying everyone else, leading to stagnation? Of course not! If you were making games, would you rather create another me-too product on the Internet shelf space, or would you try to create something that stood out and has a better opportunity of being noticed by customers? And if you’re worried about others cloning your game and stealing any potential sales, you’ll notice that Bejeweled isn’t suffering from having millions of clones available. Everyone knows Bejeweled. No one really knows the name of any of its clones.

If the judgement had gone the other way and the judges had decided that ideas could not be copied, then we’d be in trouble. The floodgates would have been opened for developers, publishers and patent trolls would end up mired in endless lawsuits, fighting over who created what first and what core mechanics, controls or ideas are at the heart of their games.

Instead we can all go out and innovate, polish and create, without having to worry that someone will land a lawsuit on us for using blocks, bricks, colours, tiles, or a similar control method to an existing title.

The comments following the article seem to indicate that people believe innovation will die simply because it is now easier to copy someone else’s successful work. And then there was the developer of Jewel Quest:

Without allowing for clones, the genre may not have had the fertile ground to produced a Puzzle Quest. I think the ruling was the correct decision despite the fact that I personally would never want to make a straight clone of another game and strongly dislike others that do.

Jewel Quest wasn’t simply a clone of Bejeweled, although it may look like it. It uses similar mechanics, but then, my car uses similar mechanics found in other cars. No one will claim that my Ford Contour is a clone of a Mustang or a Ferrari. There is plenty of room for innovation without having to fight over simple game mechanics.

Cloning will be a problem for some individuals, as it always has, but others will find ways to prosper BECAUSE they can innovate off of what came before. I don’t think a single company should be in charge of platformers, but if the ruling went the other way, that situation would be exactly what would happen. I’m sure a lot of people will whine about these rulings, but if they want to succeed, they’ll have to deal with reality. You can’t expect to do well by cloning someone else’s success. Legally barring someone from doing so is silly and dangerous because it adds unnecessary barriers to entry for people doing things slightly (yet significantly) differently from existing games. Imagine if your Sims-with-a-twist or Space Invaders-with-better-AI would land you in court simply because they were similar enough that the owner of the original game could bring about a lawsuit.

Now look back on the history of video games and tell me what it would look like if cloning was completely banned.