Categories
Game Development Geek / Technical Personal Development

POTM for February: Countdown Clock Extension for Firefox

The general idea of the Project of the Month is to donate some money to an open source project and write a blog post about it. Everyone knows about the major open source projects, such as the Linux kernel or Firefox, but there are plenty of examples of open source projects that impact you in some way that might not appear on most people’s radars.

For this month’s POTM entry, I decided to go with the Countdown Clock extension for Firefox.

Whenever I install Firefox on a new computer, I always make sure to install a few extensions, and Countdown Clock is one of them. Basically, you use it as a timer to countdown to some future time. You can countdown to a specific date and time, or you could set it to be relative to the current time. I don’t normally use it for long term countdowns, such as to my birthday or a hot date, but I do use it to timebox. Timeboxing is when you give yourself a set time, say 30 minutes, to do as much as you can at a specific task. For example, when I program, I sometimes have trouble getting motivated to do anything, and after three hours, I might have nothing accomplished. With Countdown Clock, I set it for 45 minutes, and it is almost like I am in college again, working on a paper at the last minute. All of a sudden, I’m focused, and sometimes I’m in The Zone. I can get a lot accomplished in that 45 minutes, knowing that I can take a small break once that time is up. I can also reset the timer again, getting two or more sessions of 45 minutes in an evening.

45 minutes also happens to correspond with how often I have to change a load of laundry, so I can work on game development and still know when to head to the laundry room. Timeboxing and clean clothes: a winning combination.

You can set Countdown Clock to popup an announcement, but I chose not to have the popup. The message still appears in the bottom corner of Firefox when the coutndown is finished, and I find that having a .wav file play is good enough for me. I chose to use a long screaming laugh from Gir of Invader Zim. You just can’t mistake it for some music or sound effect from an application I happen to be running at the time.

One of the side-effects of running Countdown Clock is that the bottom of the browser has the last message you asked it to say. It’s weird when it says something like “Get laundry!” or “Time to eat lunch!”, especially when the message makes no sense, but I like to set it to something inspirational. Currently I use “Don’t ruin your mind” to remind me not to idle away at pointless websites when I could be doing something on purpose.

Thanks go to the developer, Frederic Mercille, for making a wonderful extension.

Categories
Game Development Personal Development

Thousander Club Update: February 26th

For this week’s Thousander Club update:

Game Hours: 262.25 (previous year) + 38.5 (current year) = 300.75 / 1000
Game Ideas: 616 (previous year) + 5 (current year) = 621 / 1000

30% of 1,000 hours!

I’ve spent more time finalizing what should go into v1.0 and what should wait for a later version. Still, I decided that I needed some tangible results, and I swapped out the plain green font with a more appropriate one.

New font in Space Invaders project

I found that working with fonts you find online can be tricky, especially when you find licenses that are vague. You can use the font in whatever way you want, including commercial purposes, but you can’t sell the font? Huh? I am sure that I can convert a font into SFont format and then use the Kyra encoder to convert it into a .dat file that Kyra can use, but I would still like clarification on the terms of use. I am waiting for a response to my email asking the author what I can and cannot do with a font. I am sure everything will be fine.

Categories
Game Development Personal Development

Thousander Club Update: February 19th

For this week’s Thousander Club update:

Game Hours: 262.25 (previous year) + 30.75 (current year) = 293 / 1000
Game Ideas: 616 (previous year) + 0 (current year) = 616 / 1000

I have been spending part of the week figuring out what I should call v1.0 of my Space Invaders clone. I want to finish it as soon as possible so that I can release it and immediately start working upon new features and variations. While I could continue to work on it, I would rather be able to point to a finished game and claim it is mine, no matter how derivative, than to continue to explain that I have not finished a game yet.

I had a friend try the game out yesterday, and there were no complaints about speed or controls. When I had first started, it was apparent that the aliens moved too fast, especially for someone who hasn’t been developing the game for hours. At the very least, I now know that I have a playable demo that people seem to have no problem picking up and playing.

Categories
General Personal Development

Don’t Blog Angry

Don’t Publish Blog Entries When You Are Really Angry documents the frustration Juuso recently had with software. It’s never a good situation to be in when your computer shuts down suddenly only to tell you that it seems to have misplaced your email.

I don’t know if it’s Microsoft’s fault or Mozilla’s fault (or my fault), but that really doesn’t matter. What matters is how the heck I’m going to find those emails again. I have backups, but they are few days old.

Lessons are: backup your emails, and and don’t write your blog when you are angry. I think I managed the second part quite well, it’s the first part I need to practise more.

I picked up a different lesson from his post.

Recently I got upset about unanticipated obstacles to game development I recently experienced and wrote a blog post about it. I railed against inconsiderate SUV drivers and my problems with finding parking after a snow storm.

But did I write about any lessons I learned from the experience? Is it useful to anyone other than as a slightly amusing story about one man’s struggle against the elements and latte-drinking, cell phone-using, yuppie tank commanders?

No, I just wrote while I was angry. It wasn’t very fruitful at all. Calling them yuppie tank commanders wasn’t called for either. Maybe I felt better immediately after clicking the Publish button in WordPress, but how would it help anyone else reading it? How does it help me when I read through the archives?

Why have a blog if I’m just going to post knee-jerk reactions as if I was a newbie on a web forum? I can do better.

In the original post, what I should have been writing about was the futility of complaining about circumstances and situations outside of your control. I lost an extra 15 minutes of development time due to outside circumstances delaying my ability to get home sooner? So what? The really interesting questions: what was I going to do to gain it back? What will I need to do differently in the coming days to prevent a loss of what precious little productivity I have? Those lines of thought are what you should have read.

The real lesson is that things will happen that are outside of your control, but you, as a human being, have the ability to THINK before you act. You can also anticipate that things can and will go wrong, and you can take action to mitigate those problems. Create a backup system and use it. Create a policy of only publishing your blog posts the next day and follow it. Make your plans revolve around the FACT that it will take longer to get where you have to go due to the weather.

But no matter what, don’t blog angry. You’ll be more coherent, relevant, and useful if you write with a cool head.

Categories
Game Development Personal Development

Thousander Club Update: February 12th

For this week’s Thousander Club update:

Game Hours: 262.25 (previous year) + 25.75 (current year) = 288 / 1000
Game Ideas: 616 (previous year) + 0 (current year) = 616 / 1000

On Thursday, I found The Ultimate Space Invaders Shrine which provided a lot of useful information about how the original game was implemented. I haven’t played the original game in a long time, and any games I do play are clones which may or may not be faithful ports. The Shrine had a tips section that gave me a lot of information about how the original game played. I know that the aliens had three different kinds of missiles, that the various aliens were worth different amounts of points, and that the aliens started at a lower point on the screen every level for 10 levels before starting over from the top.

My clone currently mimics the original in that the player can only shoot one missile at a time and the aliens can only shoot three missiles at once. I have not implemented shelters nor have I added a bonus ship flying across the top of the screen at random times. The aliens only have one type of missile, and the player’s missiles can’t hit it. All of the aliens are currently worth the same amount of points. The aliens can’t land yet, so if you manage to let them get past your ship, they will continue until the offset of the sprite hits some limit, and then the game will crash.

I’ve added HUD elements so that you can see how many points you have as well as the number of ships you have in reserve. If you pause the game, “PAUSED” shows up in the middle of the screen. If you shoot down all of the aliens, the message “PREPARE FOR THE NEXT WAVE!” is displayed. If you lose your last reserve ship, it says “GAME OVER”.

I am not sure if I want to make the game exactly the same as the original, and I was planning on doing a few things differently. I would prefer to have some originality in this game. For instance, instead of just starting the aliens lower on the screen and making them a little faster at the start of a new level, I could increase the number of missiles they fire as well as the speed. Maybe I might even let the blast radius matter, so if a missile collides with the ground, you still have to make sure that your ship is far enough away to be safe. Perhaps I might add new alien types with different abilities.

These are important design decisions, so I can’t just add them willy-nilly. I have to think about how I want this game to feel when someone else plays it. In the meantime, I am pleased with how well it is turning out.

Space Invaders: Now with HUD elements!

Categories
Game Development Personal Development

Thousander Club Update: January 29th

For this week’s Thousander Club update:

Game Hours: 262.25 (previous year) + 13.25 (current year) = 275.5 / 1000
Game Ideas: 616 (previous year) + 0 (current year) = 616 / 1000

This past week I managed to add a few more features to my Space Invaders clone. One feature is an explosion effect that occurs whenever the bullets in the game hit some object. The animation is simple as it is just a white ball that gets bigger before shrinking down again. I used a combination of the GIMP and ImageMagick to create the image.

Originally I spent some time trying to generalize an effect system. I was going to try to create an effect processor, as well as an Effect class that all effects would inherit from. It didn’t take me long to realize that I was going about this problem the wrong way. I knew I wanted an explosion effect, and I also knew that I will likely have other kinds of effects that would be handled the same way. Of course, I didn’t have a current NEED for handling generic effects, and to try to write code for a hypothetical need is what I am trying to avoid with this project.

When I attempted to write the component-based game engine, the entire project was an exercise in trying to guess future needs. I just didn’t know what was needed or how I would address it, and the entire project stagnated.

With this Space Invaders project, I am making actual progress by only implementing what I need when I need it. Maybe it is hacked together, and maybe it has things hardcoded that might be better off in a data file. I can always fix it later if it becomes an actual problem.

The other feature I added was a time delay for restoring the player’s ship. Previously if you lost a ship and the game wasn’t over, a new ship would appear instantly. In fact, it was so quick that if your ship was anywhere near the middle, it might not look like you lost it at all. As I don’t currently have anything to indicate the number of ships in reserve, you can easily get confused if the game was over and you thought your ship only got shot once. Now there is a timer that waits about three seconds before restoring the ship, and I think it makes it much easier to know that your ship was lost.

Neither one of these features actually changes the gameplay significantly, but they both go a long way towards a completed, professional quality project. It is almost as if the game without the explosion effect and the game with the explosion effect are completely different in quality. Now if I add sound effects, it will probably make a world of difference. B-)

Categories
Game Development Personal Development

Thousander Club Update: January 22nd

For this week’s Thousander Club update:

Game Hours: 262.25 (previous year) + 7.75 (current year) = 270 / 1000
Game Ideas: 616 (previous year) + 0 (current year) = 616 / 1000

I am coming up on 300 total hours, but I am not pleased at the rate I am getting there. My routine has been disrupted this past week, but I believe I did prove that I can dedicate myself to some task for many hours. If I can just focus on doing the things a game developer would do, I could make some real progress.

I’m still optimistic about this year. I just haven’t been putting forth the effort I need.

Categories
Game Development Personal Development

Thousander Club Update: January 15th

For this week’s Thousander Club update:

Game Hours: 262.25 (previous year) + 4.5 (current year) = 266.75 / 1000
Game Ideas: 616 (previous year) + 0 (current year) = 616 / 1000

Another slow week of development. I spent the little time I did work on figuring out how to handle the explosion effects. I studied a few bits of source code, and I am now rolling my own set of effect classes. It’s not as complicated as I may make it sound, but it isn’t trivial either.

The main reason why I am not working so hard on game development is because I am spending way too much time trying to get MythTV installed using Knoppmyth. So far, I have narrowed it down to a weird-hardware-configuration problem when booting after the install. Basically, it could be anything that a newbie MythTV installer like me would think should just work.

Categories
Game Development Personal Development

Becoming a Game Developer

Steve Pavlina recently wrote about becoming a millionaire by thinking like one. One of the things he mentions is the identity shift needed, which ties into the topic of his recent podcast on faster goal achievement.

When I first heard the podcast, I realized that I am not going to finish making games so long as I continue on the poor results I’ve been posting. I need to change how I act. I need to act more like an actual game developer and less like someone who is hoping to make games in the spare time I can squeeze. I need to be a game developer if I am going to do game development.

In the Thousander Club, I have managed to pull together over 250 hours of spare-time game development. If I was actually acting like a game developer in the past year, though, I imagine that I would have put up stronger results. I shouldn’t be satisfied with only 25% of my goal for the year, and practically speaking, I shouldn’t be satisfied with not having an actual, complete, professional-quality game in all that time. And if I am honest with myself, I know that I am not satisfied.

Maybe a year or two ago, 250 hours working on an ambitious-yet-unfinished component-based game engine, a poorly designed-and-unfinished puzzle game, and a mostly-finished Pong clone would have been fine, but I can’t be satisfied with similar results at the end of this year. It’s not like I don’t appreciate the real-life experience that the past year has given me. I just want to be serious about being a game developer, and I realized that I was being half-hearted about my efforts.

Bottom line: if I want to change anything, I have to change how I identify myself.

It’s going to be hard changing my habits. Even though I’ve identified this problem before, I am still treating game development as a lower priority task, and it is usually the first thing I put on the back-burner when my schedule gets disrupted. How can I expect to make games for a living if I can’t even consider them important enough to make in the first place?
When people ask me what I do, I tell them about my day job, and I sometimes mention that I started my own shareware video game business. I mention my blog, I mention that I reviewed games for Game Tunnel, and I might say that I am slowly programming some simple games. How can I expect to make GBGames into a success when I won’t even acknowledge what I want to do? Did DaVinci say, “Oh, by the way, I also sort of paint”? Did Einstein say, “I work at a patent office. Oh, and sometimes I like to think about physics”?

I am a game developer. Once I can think like one, I can act like one.

Categories
Game Development Personal Development

Thousander Club Update: January 8th

For this week’s Thousander Club update:

Game Hours: 262.25 + 1 = 263.25 / 1000
Game Ideas: 616 + 0 = 616 / 1000

On Wednesday, I wrote down an entry in my todo list: Create 384 game ideas.

Months ago, I entered into crunch mode at my day job and neglected a number of things in the rest of my life. I had a ritual of coming up with three game ideas per day, but once I hit crunch, my routine was destroyed, and I never did get back into it.

I thought I could catch up before December was through. After all, coming up with ideas is fairly easy, especially since my game ideas are just one-liners that indicate a concept or theme. It is not as if I am coming up with 500+ page game design documents or anything. In one sitting, I threw together over 100 ideas at once. I figure if I do it a few times this week, I can hit my 1,000 ideas goal and be done with it. Actually, I could probably dedicate an entire afternoon to creating all 384 ideas. Afterwards, I can post the entire list, along with the 161 ideas I had before I started the Thousander Club last year.