Categories
Game Development Linux Game Development Personal Development

Thousander Club Update: May 21st

For this week’s Thousander Club update:

Game Hours: 262.25 (previous year) + 110.5 (current year) = 372.75 / 1000
Game Ideas: 616 (previous year) + 44 (current year) = 660 / 1000

I spent a good portion of this week reducing the dependencies Killer Kittens has. I followed the advice of Troy Hepfner, owner of My Game Company and creator of Dirk Dash. He outlined what to do in the article Game Developer’s Corner: Linux Game Development: Distributable Binaries which members of the Association of Shareware Professionals would have seen in the May 2007 issue of the ASPects newsletter. If you’re not currently a member of the ASP, you can join and obtain access to the back issues in the archive.

If you install a game, it should install any dependencies if you don’t have them. On Windows, you’ll see games that try to install the latest DirectX drivers, although there is room for improvement. If I already have a later version of DirectX, don’t offer to install an older one!

Anyway, ideally the game should be as easy as extract-and-run. I shouldn’t need to tell someone that they need libSDL-1.2 and libSDL_image-1.2. If someone doesn’t have the required libraries on his/her system, the game should supply its own version of the libraries.

But I don’t want to provide hundreds of libraries. Besides bloating the download size of my game to possibly tens or hundreds of megabytes, making it less likely someone would want to download it and increasing bandwidth costs, it would be a hassle for me to deal with!

My game currently depends upon libSDL and libSDL_image. Using Troy’s helpful information, I was able to reduce libSDL’s dependencies dramatically by creating a custom version. I built the Kyra Sprite Engine as a dynamic library according to the instructions in this post.

Unfortunately, I had problems getting Kyra to build using my custom SDL libraries. Also documented in that post, I found that building the Kyra Sprite Engine actually builds two libraries: libkyra and libengine.

I ran configure with the following arguments: –prefix=/home/gberardi/wc_KillerKittens/KillerKittens/lib –with-sdl-prefix=/home/gberardi/wc_KillerKittens/KillerKittens/lib/ –with-sdl-exec-prefix=/home/gberardi/wc_KillerKittens/KillerKittens/lib/

If I run ldd libkyra.so, I find that it uses the libraries in the KillerKittens/lib directory. If I run ldd libengine.so, however, I find that it uses the system-installed libraries, which also brings in all of their dependencies.

If I can get libengine to build using the same libraries as libkyra, I can get my dependencies down to a handful. I believe the problem lies with a faulty implementation of autotools and libtool, but those tools seem incredibly difficult to work with. As a (possibly half-serious) joke, it is said that most people don’t actually know how to use autotools and simply copy and paste configuration files from one project to the next.

I’ve asked for assistance on the The Linux Game Tome game dev forums as well as the Linux Game Development Center mailing list. While I wait for any response, I’m still hunting through the configure, configure.in, ltmain.sh, and various Makefile files, trying to determine why one library builds with the options I pass to it while the other does not.

On a different note, if you are going to be in Chicago on May 24th, you can come see the game development tech talk I will be giving for the DePaul Linux Community.

Categories
Game Development Marketing/Business

Runescape Founder Speaks

Gamasutra had an interview with popular MMO developer and Jagex founder Andrew Gower in Q&A: Behind RuneScape’s 1 Million Subscriber Success. If you don’t know, the largest MMO isn’t World of Warcraft but Runescape. Although WoW makes much more money in subscriptions. Runescape has many more people playing.

The developer created Runescape as a personal project. It was basically a MUD with graphics. It slowly evolved into the freely available MMO with subscription-exclusive content that you see today.

When asked about the demographics of the players, Gower said that Jagex doesn’t collect such information.

We’re actually more focused on our product than marketing

It’s counter-intuitive to think that an incredibly successful MMO was made without focusing on the marketing. If you have a business, you’re supposed to think about marketing before you make the game.

I haven’t played Runescape in a long time, but I do remember spending quite a few evenings developing my mining and cooking skills. Adventuring with friends was fun. And perhaps it is that network effect that makes it so successful. Once those friends stopped playing, I stopped playing. When your customers are enjoying themselves, they’ll call their friends to get them to join. You don’t have to spend your time telling people about the game if they are already finding out about it. If no one played Runescape and the developers still wanted to commercialize it, they’d probably spend more time on marketing than they do now.

Categories
Game Development Personal Development

Thousander Club Update: May 14th

For this week’s Thousander Club update:

Game Hours: 262.25 (previous year) + 101 (current year) = 363.25 / 1000
Game Ideas: 616 (previous year) + 33 (current year) = 649 / 1000

Last year, I was at only 85 hours. I know I could have done better this year, but at least my current hours show an improvement from last year’s effort. Hitting 100 hours in mid-May is better than hitting that same milestone in mid-June. Still, it would be nice to be two months ahead. Last year I hit 200 hours in October. Perhaps I can hit 200 hours in August instead. July would be even better. B-)

Categories
Game Development Personal Development

Thousander Club Update: May 7th

For this week’s Thousander Club update:

Game Hours: 262.25 (previous year) + 96.75 (current year) = 359 / 1000
Game Ideas: 616 (previous year) + 33 (current year) = 649 / 1000

Monday and Tuesday: I took the time to look through my code and figure out the best way to implement temporary invulnerability. It was great because Tuesday morning I spent about 30 minutes actually coding the feature. I did it simply by hiding and showing the sprite. Later I implemented a way to earn an extra ship every 10,000 points.

I also threw in a cheat that lets me immediately destroy all of the aliens in a wave at once, earning all of the points for the kills. It is a lot easier to test that I can earn an extra ship if I didn’t have to play through four levels every time.

Wednesday: I tweaked a few variables to see if I can improve the feeling of the game a bit. I’ll have to do more experimentation here. I also added some string to the yarn balls to make it more obvious what they are. I added a difficulty menu, which was tougher to do than I thought. I need to overhaul the menu code.

Thursday: Added the different difficulty settings. I may have to change what actually makes one setting different from another, but at least someone can choose something easier or harder if they want.

That night, I transferred the game to my laptop so I can show off the new features to the people at the local LUG. I found out that temporary invulnerability didn’t look right. It must have something to do with either the LCD display or the refresh rate or the fact that the laptop is dual core. Whatever was the cause, the ship was either completely hidden or completely visible during the temporary invulnerability state, so it was definitely wrong. After a quick change to the code, the ship slowly fades back into view when invulnerable. Not only does it work on all machines, it looks much cooler! A similar problem was occurring with the yarn balls. They didn’t seem to rotate properly, and the trailing strings didn’t seem to flow. Friday night I attempted to fix it by not updating the animations as often.

The good news is that people were starting to recognize the yarn balls as yarn balls. B-)

I did get a few of the same < title="Do You Listen to Feature Requests: Previous Post" href="https://www.gbgames.com/blog/?p=621">requests, such as power-ups and shielding. I didn’t think it made too much sense to have shielding, but I thought of something better and funnier: flying fish. Fish with pilot hats. They fly across the screen, and when they get hit, maybe you have to catch them to get a power-up.

Friday morning I experimented with rapid fire. I just increased the speed of the player’s shot to see how well it played. It made the levels much easier, but it also seemed to make it more responsive. When the kittens are near the top of the screen, it just takes longer to shoot them, and so the action seems really slow. I don’t think I can make it a permanent change, but I can see providing a rapid fire power-up. Now I have a new decision to make: is rapid fire a temporary power-up, or do you get to keep it until you lose a ship? I suppose if I make it last until you lose a ship, I would need some other power-ups in the game as well.

At this point, I’m starting to think that these features can always go into v2.0. I could spend another few months just getting all of these features working properly, but I could have released the game and gotten a lot more feedback in those months.

Categories
Game Development General Marketing/Business

Indie Game Dev Podcast: Interview with BlitWise Productions

Action has released another interview, this time with Mike Welch of BlitWise Productions, creator of DX-Ball and Scorched Tanks.

Mike discussed the importance of author recognition, working with Seumas McNally on DX-Ball 2, and developing a community for his games. While he isn’t deeply involved with the game development community, he watches it, usually with amusement.

I enjoyed hearing his opinion on the difference between working with portals and working for yourself, particularly from a recognition point of view. He mentioned some of the unexpected letters he has received from fans of his games, stating that if his games were sold on portals he would never receive such letters or recognition.

Mike definitely sounds like an indie.

Categories
Game Development Personal Development

Thousander Club Update: April 30th

For this week’s Thousander Club update:

Game Hours: 262.25 (previous year) + 86 (current year) = 348.25 / 1000
Game Ideas: 616 (previous year) + 32 (current year) = 648 / 1000

Monday: Increased challenge gradually by adding an extra bomb for the aliens to drop each level. Now level 11 doesn’t look and feel like level 1. I still have to tweak some settings, though. It seems that after a certain level, you can’t really tell that there are extra bombs. I will probably need to increase the rate of fire as well as increasing the maximum number of bombs.

Tuesday: Fixed the game over menu. It now restarts the game if you pick the appropriate selection.

Wednesday: Increased challenge again by increasing the rate of enemy fire. Now when you get to a later level, it doesn’t have nearly as much resemblance to older levels. In a way, it now kind of resembles those shooters in which there is nothing but a shower of bullets to navigate through. I also thought of a few more ideas that might make the game more fun and fair in light of the challenge increase. Adding features this late in the schedule probably isn’t the best thing to do, but as I didn’t have much of a schedule, I suppose I can’t be “off track”.

Thursday: Made some minor changes. For instance, the player’s bullet appeared too far above the actual ship, which wasn’t too noticeable before, but now that you can shoot the bombs, it was frustrating when you miss one that you shouldn’t have.

I spent the past few days watching people play the game.

While I didn’t spend more than a few hours on game development this past week, those hours really made a difference.

Categories
Game Design Game Development

Do You Listen to Feature Requests?

Last night, I loaded up Killer Kittens from Katis Minor on my laptop and brought it to my local LUG meeting. I had almost everyone at the meeting try out the game, and I watched them as they played. I already knew that I should just watch. If they get stuck due to an interface issue, I should make a note of it, but I shouldn’t interfere. Most players won’t have me standing there to guide them, so I should learn what they might encounter as obstacles.

Well, I definitely need to add a screen to the game that explains the controls. B-)

As for the game itself, a number of people actually enjoyed it! It was exhilarating to watch as people hit the “Restart game” menu option after losing all of their reserve ships! People would actually come back for multiple turns at the game, sneaking into the chair after someone got up. Up until this past week, the game was a poor Space Invaders clone. Now it was actually fun!

And then there were the people who obviously didn’t enjoy it. Watching someone get a game over without advancing past the first level, then getting up and politely saying, “That was fun” wasn’t fun. Granted, some of these people don’t play video games in general, but some of them did. Maybe the game is too hard? Maybe the game just doesn’t feel right? Is it too difficult to tell where the bombs are? Does the fire rate of your own bullets need to be increased?

While I did ask people for their opinions after they were finished playing, some of them started asking questions about the game during the play session. One question I received a lot of: “How do you get an extra life?” It’s a missing feature, and while I have always intended to provide it, I did not write it down until now. Another feature request was shielding. I currently do not offer shields or walls as the original Space Invaders did. Some people wanted a way to shoot multiple times. Quite a few wanted power-ups, while others thought the fire rate and speed of the bullet needed to be increased.

Some feature requests are no-brainers. A way to get an extra life? No problem! Temporary invulnerability when a reserve ship is activated? Yeah, absolutely! Changing the number of bullets you can have in the air at one time? Um…Now I’m not so sure.

Not listening to customers is bad. Completely listening to your customers is also bad. Well, it isn’t bad to listen to your customers, but I don’t want to implement something just because my girlfriend and a couple of other people requested it. Yes, they are playing the game and identified what they would like to see, but just because they want it, it doesn’t mean it would be good to put in the game.

I had a few people request power-ups. Some people requested multi-shot, rapid-fire, area-effect explosions, and a bonus ship to shoot down. Watching the people play, I realized that I needed to provide multiple difficulty levels. I also found a bug involving the pause menu coming up during the game over menu. Some of these things I plan to add or change. Some of them I plan to ignore, partly because they would require major overhauls of code and partly because I am not sure that it wouldn’t hurt the game.

Even though I am not sure about some of these feature requests, I think I can only help this game get better by trying those features out. If the game becomes more fun because you can shoot more than one bullet, then I can keep it. If not, I’ll throw it away.

The best part is that I have something that is considered fun right now. People played my game and actually liked it! I can use the current game as a control as I experiment with different features. I can always release the game with its current feature set, get even more feedback from the world, and use that feedback when making a potential sequel or upgrade.

In any case, I’m still pretty happy that people enjoyed the game, even with its poor graphics and audio work. B-)

Categories
Game Development Personal Development

Programming Yourself

Steve Healy wrote Programming Your Mind to Think About Programming, which gave me a few more ideas on how to convince myself to work even when I don’t feel like working.

He mentions feeling motivated while listening to certain songs, reading select articles, or watching a certain television show. I know that whenever I hear certain video game remixes (especially Contra and Mega Man 2) or techno, I can’t help but want to type semicolons.

I would like to develop rituals to get me in the mood to think creatively. For instance, I want to immediately pull out a pen and notebook whenever I am waiting for something. In line at the grocery store? Take some notes on my next game project. Waiting for something major to compile? Write down a few game ideas.

It is sometimes too easy to just let time go by without any results. If you can program yourself to do things automatically, things will get done as time passes.

Categories
Game Development Personal Development

Thousander Club Update: April 23rd

For this week’s Thousander Club update:

Game Hours: 262.25 (previous year) + 83.5 (current year) = 345.75 / 1000
Game Ideas: 616 (previous year) + 24 (current year) = 630 / 1000

I managed to get some time in this past week despite the day job. I picked a title for my Space Invaders clone as well as a theme. It’s now called Killer Kittens from Katis Minor. The theme is pretty much the same thing as Space Invaders, only now there are killer kittens instead of generic aliens. Instead of dropping generic bombs, the kittens drop exploding yarn balls.

While this theme is pretty much a cosmetic change, I have managed to add a few minor features as well. Also, killer kittens are funnier than generic aliens. If I can focus on this project in the coming week, I might be able to finish enough to release it before the end of April.

Categories
Game Development Personal Development

Thousander Club Update: April 16th

For this week’s Thousander Club update:

Game Hours: 262.25 (previous year) + 76 (current year) = 338.25 / 1000
Game Ideas: 616 (previous year) + 24 (current year) = 630 / 1000

Crunch time at the day job is still taking its toll, but I think I’ve learned a few things about increasing my productivity in general. Or maybe I am just putting into practice what I’ve already learned. Either way, I have some new habits that seem to translate into progress, and I can’t wait to have free time to spend on GBGames again. In fact, I figure that I can still dedicate 15 minutes a day , which should translate into almost two hours a week. No matter what, I should work for 15 minutes on my own project before going to the day job. I think the toughest part will be stopping after the 15 minutes are up. B-)

In the meantime, I have been doing a halfway decent job of coming up with some game ideas during the few breaks I’ve given myself. When I used to be on track for the Thousander Club, I would come up with at least three game ideas per day. I haven’t been doing so since I hit the previous crunches last year. I want to try to catch up with the ideas as quickly as I can, but if I can’t, I should at least try to get back into the habit of coming up with three ideas each day.