Categories
Game Development Personal Development

Thousander Club Update: July 23rd

For this week’s Thousander Club update:

Game Hours: 262.25 (previous year) + 143.75 (current year) = 406 / 1000
Game Ideas: 616 (previous year) + 83 (current year) = 691 / 1000

I tore through “Harry Potter and the Deathly Hollows” in order to get it completely out of the way. I read it in three sessions (darn a need to clean and sleep getting in the way!). Now I don’t have to worry about deciding between working on my game and reading a book. B-)

I managed to fix my build. I can now check it out into an arbitrary directory and build it. Previous it assumed I had a certain directory structure in my home directory. It was similar to having hard-coded constants in my code, only I couldn’t figure out why turning them into variables still resulted in the same constants being used some of the time.

With the build fixed, I spent the rest of my time figuring out how to incorporate Guichan into my code. I already have a separate MenuManager class, so the rest of my game might be untouched as I add and change code.

Categories
Game Development Linux Game Development Personal Development

Thousander Club Update: July 16th

For this week’s Thousander Club update:

Game Hours: 262.25 (previous year) + 141.25 (current year) = 403.5 / 1000
Game Ideas: 616 (previous year) + 60 (current year) = 676 / 1000

Ok, so there wasn’t as much productivity as I would have liked. I was using my laptop when I realized that I needed a newer version of a piece of software and so decided to upgrade. I had heard that upgrading to Ubuntu Edgy was fraught with peril and that Feisty was safe.

Yeah, apparently not. After the upgrade, I rebooted the machine, and at the Ubuntu splash, the progress bar didn’t move. After some time, I get the following:

Check root= bootarg cat /proc/cmdline
or missing modules, devices: cat /proc/modules ls /dev
ALERT! /dev/disk/by-uuid/38ede6ac-6b2f-44d7-a635-deab88ae9381 does not exist. Dropping to a shell!

I am thrown into Busybox, and then I have to depend on Google and bug reports to figure out why I am not looking at a new Feisty install.

I learned that instead of having nice device names such as /dev/sda5, I now have a unique UUID for each partition. It sounds cool because apparently IDE drives and SCSI drives won’t be handled separately. Unfortunately, my kernel doesn’t seem to know what the heck any of the devices are. I even tried using my older kernel, and I still had the same error.

Also unfortunately, I’ve been so busy that I haven’t had much time to troubleshoot the laptop, and I definitely didn’t have much time to work on Killer Kittens. The work I did do? It’s stuck on the laptop because I was a bone-head and didn’t think that checking in my changes would be needed before doing a major upgrade from one version of Ubuntu to another.

Oh, and it’s crunch at the day job. B-(

Categories
Game Development Personal Development

Thousander Club Update: July 9th

For this week’s Thousander Club update:

Game Hours: 262.25 (previous year) + 140 (current year) = 402.25 / 1000
Game Ideas: 616 (previous year) + 60 (current year) = 676 / 1000

Well, it’s been a quiet couple of weeks. I came back from Ohio on Wednesday, but my girlfriend’s nephew was in town. We went to a museum, saw a couple of movies (is there a reason why they decided that characters in Transformers had to swear?), and generally found ways to make sure that I wasn’t working on Killer Kittens. On the one hand, I didn’t like that I worked even less than I already do, but on the other hand, I had a real vacation from any work. I feel refreshed and thought of a number of things I could do in terms of game development, marketing, and business models.

I did manage to do a little bit of development, but in doing so, I broke my build. I changed my build scripts to take into account the Guichan library, but forgot to actually add the Guichan library. Somehow my build scripts got so confused that they kept repeating the same steps. I set the project to build, only to forget about it until the morning. I saw my CPU meter was constantly at around 100%, and I found my build was still going. When I realized that libSDL was being built a second and then a third time, I realized something was very wrong. I had to watch the build carefully, and then I found the error message that guichan.tar.gz didn’t exist. Once I added it to my project, everything worked fine again. Luckily it only took a few moments to figure out because I cannot afford one of those annoying, time-consuming bugs.

Here’s to a productive week!

Categories
Game Development Personal Development

Thousander Club Update: July 2nd

For this week’s Thousander Club update:

Game Hours: 262.25 (previous year) + 139.75 (current year) = 402 / 1000
Game Ideas: 616 (previous year) + 57 (current year) = 673 / 1000

Last Friday, I left for Ohio and will out of town for most of this week. I have my laptop with me, so hopefully I’m working hard when not visiting with friends and family.

I’ve spent some time looking through the Guichan library. Even if I don’t decide to use it in my projects, and I see enough in it that encourages me to incorporate it, I can still get a good idea how to deal with a GUI.

I’ve also been thinking about getting Joel Spolsky’s User Interface Design for Programmers:

UI is important because it affects the feelings, the emotions, and the mood of your users. If the UI is wrong and the user feels like they can’t control your software, they literally won’t be happy and they’ll blame it on your software. If the UI is smart and things work the way the user expected them to work, they will be cheerful as they manage to accomplish small goals.

Now I know why I have been feeling like the UI is important enough to spend so much time on it. If I don’t get it right, it will be a huge problem. Getting it right would mean that people won’t notice it. At first, it sounds bad, but people shouldn’t notice the UI. It should just be. If they notice it, something is wrong.

I don’t want to keep my implementation of a slider. It works, so I’m happy that I have the functionality, but it’s not very useful outside of this project, and ideally I should be able to take everything I learned from this project and move it to another. Unless I find something better, I am going to incorporate Guichan into Killer Kittens.

Hopefully I’ll have something good to show off when I get back from Ohio.

Categories
Game Development Personal Development

Thousander Club Update: June 25th

For this week’s Thousander Club update:

Game Hours: 262.25 (previous year) + 136.75 (current year) = 399 / 1000
Game Ideas: 616 (previous year) + 57 (current year) = 673 / 1000

I have managed to implement a slider control. I wasn’t too happy that I was reinventing the wheel, but the idea of incorporating any of the third-party GUI libraries I found into my existing project just to allow the player to use a slider for the audio seemed like too much effort at this point. In fact, at one point I was thinking about doing a major overhaul on my event system in order to accommodate this one feature more easily. I may still end up doing so since it will greatly improve the way my game handles any event. If I am going to go that far, though, I might as well try to incorporate something like Guichan. And then I’m back to thinking that it is too much work for a small feature, and Killer Kittens is already way past the original date I thought I would finish it.

On the other hand, maybe spending more time on this project means that I will go through the pain up front so that later games don’t suffer as much. I already have a one-button build that will work well with later projects, so getting my UI elements working better might be a good use of my time.

In any case, I have a working volume control so that a player won’t have to worry about the sound effects overpowering the music he/she may want to play, and this feature is what I wanted to finish this past week.

Categories
Marketing/Business Personal Development

Do I Need a Business Checking Account?

If you’re just starting a company and sweating about decisions such as “Do I need a checking account for my business?”, I know how you feel. I went through this same decision, concerned about doing the right thing. Actually, I was concerned about accidentally doing the wrong thing and messing up somehow. Are there legal concerns that essentially require that I have a separate account? Could I lose my limited liability simply because I used my personal funds to pay for my business’ web hosting? In the end, I found that I didn’t have much to worry about, but these concerns were very real (and scary!) to me. Starting a new business is scary enough. Worrying about doing things right to avoid violating some unknown law just seemed like wasted effort, and it can be incredibly distracting when you’re trying to earn some income.

I formed GBGames LLC last year, and a month later I received my Employer ID Number. Other than renewing the LLC and dealing with taxes this past April, I haven’t done much of anything related to business or accounting. On my list of things to do, I have “Get a business checking account”, and it has been there for a long time. I decided to get it completed and off of my list as soon as possible. First things first: do I even need a business checking account?

Having a separate checking account for the business seems to makes sense to me. It should be easier to keep my personal and business finances separate if I have a separate account for each. But then again, does this mean I need a separate business credit card? Most of my purchases are through one of my credit cards. I pay the balance each month and get the advantage of building credit. Occasionally, I receive a gift card to use at a local bookstore. Having a separate card means I won’t receive the benefits I do from using one card. I’ll have to remember to use the business card for business purchases, and if I forget, I’ll have to reconcile my numbers with my personal finances. Currently, I only have one set of finances to deal with, which seems much easier.

If I do get a separate account, I will need to deposit some money into it. Business accounts aren’t likely to make as much in interest as my current personal account at ING Direct, which is 4.5% right now. Any money I take out of it will make less money for me. Then again, the money invested in my business will hopefully be netting me bigger gains than the most generous bank. Still, what’s the point of having a separate account? It seems like having one would just be one more thing to keep track of, and more complexity isn’t really necessary or desirable for someone running a part-time business.

Since I run a single-member LLC, and I have not elected to be taxed as a corporation, the government taxes my company as a sole-proprietorship. My business is just an extension of my personal taxes. I don’t make many purchases for my business yet, and any purchases I do make are made in my name. Yes, I have to keep my receipts and separate personal expenses from business expenses, but since I do not make too many pruchases, these expenses are easy to keep track of. Last year, I bought a laptop and paid IGDA and ASP membership dues. I also paid to attend the Grand Rapids Schmooze meetup, including hotel expenses and transportation. My accountant took this information and figured out how much of it could be deducted from my taxes. Having a separate checking account wouldn’t have made this process much easier.

Basically, don’t attempt to pass off your family’s grocery bill as a business expense. If I buy a video game as a birthday present for a friend, it’s a personal expense. If I buy a video game as research for my business, it’s a business expense. I bought my girlfriend a computer for Christmas. I bought myself a laptop to allow me to do work. The former was a personal expense. The latter was a business expense. So long as I keep such expenses separate, I will be fine.

I’ve decided that I do not need a separate bank account for my business, at least for now. Maybe when I start earning more from my business, it could make sense, but there is no urgency in getting one. I can concentrate my efforts on the work of my business rather than the overhead of my business. If one day I find a need for a separate checking account, I’ll get one then.

If you decide that you do need a business checking account, this article on choosing a bank for your business will probably come in handy: Choosing Banks

Categories
Game Development Linux Game Development Personal Development

Thousander Club Update: June 18th

For this week’s Thousander Club update:

Game Hours: 262.25 (previous year) + 128.25 (current year) = 390.5 / 1000
Game Ideas: 616 (previous year) + 57 (current year) = 673 / 1000

I still have a 10-minute build process, which means I go from checking out the Killer Kittens project to a distributable tar.gz file in about 10 minutes. I spent this past week continuing the work of refactoring the menu system. I had plenty of opportunities for refactoring as there was a lot of code duplication in the menus. I still want to get rid of the individual menu classes since the only difference between them is the creation of different MenuOptions. For instance, MainMenu offers the options “PLAY A NEW GAME” and “EXIT”, while PauseMenu offers the options “RESUME GAME” and “RETURN TO MAIN MENU”. Instead of individual classes deriving from a Menu class, I should be able to load these menus from config files.

Of course, reducing these menus into config files would be nice, but what I currently have is a huge improvement over what I had last week. I was able to add a couple of new menus easily. Previously, adding a menu would be a big ordeal. I’d have to touch code in maybe four different files and then test the game multiple times to verify that my input handling worked as expected. I used to have problems with hitting ESC to pause the game, only to have the menu system think that the pause menu should be closed again. It thought I had hit ESC twice since I had to indicate that the button was being pressed BEFORE the menu system’s input handler was working. Since I had code duplication, I had code changes in some classes and not in others. Now, the input system works no matter what, and each menu is handled consistently. A new menu will be handled the same exact way every other menu is handled.

While I may be spending too much time on this system, I feel that the player will appreciate not feeling like the game is buggy or broken. Hitting ESC at any menu has a default option now. If you hit ESC at the MainMenu, it will open up the new VerifyMenu that asks if you are sure you want to exit. Hitting ESC at this menu will bring you back to the MainMenu. The best part is that my next project won’t have to reinvent a menu system, or if I do rewrite one, I will have enough experience to know what kinds of things I need.

It should be much easier for me to create an instructions screen now since it is basically just a menu with a background of instructions and a single option: “Play the Game”. It should also be easier to add a new feature to the menu system. I want a slider to allow the player to change the sound volume. Since the menu system’s code is much cleaner and easier to manage, implementing new features means I have less to worry about going wrong. I still need to think about creating a EULA for my game data, and I would like to get my main build system setup to build both a Gnu/Linux distributable and a Win32 distributable. Perhaps more important is updating the graphics. Maybe one day I will make a game themed on programmer art, but I need something better than a blue background with a green bar at the bottom to represent the sky and the ground. B-)

Categories
Game Development Games Geek / Technical General Personal Development

Feminism and Video Games

In What Do We Do About Video Games?, Roy looks at how women and race are portrayed in one of his favorite pastimes, and he isn’t impressed.

In a previous post, I’ve suggested that girl-friendly games aren’t needed so much as games that appeal to non-gamers. I still believe it, but I think that there can be a problem if you are attracting non-gamers using stereotypes and highly-sexualized imagery.

While I mentioned that women as playable characters seem rare, the problem with most of them is that they are highly sexualized. You have Samus Aran, Princess Morning, and a handful of others. And then you have Lara Croft and the Dead or Alive girls with their realistic boob physics.

Who within the industry is actually concerned about these issues? Should they be concerned? I think so. When most of the industry has no problem with hyper-sexualized female characters in games, what can you expect when games cross over into politics and social discussions?

Add to that the fact that the most vocal critics of video games tend to be people like Jack Thompson or NIMF (the National Institute on Media and the Family) who accuse video games of being murder simulators or promoting cannibalism- and you’ll find that a lot of gamers are particularly hostile towards criticism of gaming, even from fellow gamers. Women and feminists are made unwelcome in many gaming circles, and concerns about sexism and racism in games go unheard, ignored, or mocked.

While I am not a fan of Jack Thompson, he does make a point about the problems of an industry that does not self-regulate. Someone will eventually want to do the regulating for you. We’re already batting down anti-video game legislation right and left like King Kong on a skyscraper, and that legislations is about pornography and violence. What happens when people suggest that the Final Fantasy or Soul Caliber series is little more than pornography for adolescents, simply because of the way that the characters look? Grand Theft Auto is already considered pornography by some.

And that’s just the legal aspect of it. What about the gamers? If you think there isn’t a problem with girls playing games, read Monica’s comment on Roy’s post:

I have the double duty of being both a gamer and game designer. My bigges pet peeve is the fact I can’t even play Halo or Unreal online with out virulent harassment. And not only sexual but sexually violent taunts, come-ons, and threats, mostly associated with men and even boys who are virtually emasculated by a girl gamer who has the audacity to win, beat them, or even pick up an item that the male player wanted. After several incidents where I logged off of Halo 2 literally crying, my husband suggest I just stop playing online, and sadly that’s exactly what I had to do.

I love games and gaming. Heck, I’ve devoted my life to it. But I am worried about where this- well, it’s not even sexism, per se…it’s actual hate- comes from. I can’t help but agree that oftentimes my employers and fellow game-buying populace (myself included) are to blame.

Play an online game, and try to avoid encountering 11-year olds taunting you by calling you a “weak bitch” or any number of misogynistic comments. Young boys and men will tell you how “gay” you play. These aren’t a bunch of friends playing on your LAN. These are complete strangers saying hurtful things to taunt you.

Even when things seem nicer, it isn’t so great. If you’re a woman or playing as a woman, you’ll find that people will try to “help” your character because they assume you can’t do well on your own. If helping involves stealing your kills, preventing you from gaining experience, it doesn’t help and actually gets in the way.

Homophobia and misogyny can seem to be the rule when playing online, to the point that people don’t think of them as something that can be changed. Boys will be boys. Just ignore them, and move on. Get a thicker skin. I think it is just an extension of nastiness on the Net, and it isn’t something that should be tolerated.

Even if you ignore the other players online, the games themselves could do better. There is nothing wrong with sexy characters in games. Sexy isn’t the problem. You can have a sexy character that is still a strong female lead. The problem is ambulatory breasts and anthropomorphic sex fantasies as playable characters being the rule rather than the exception.

Categories
Game Development Personal Development

Thousander Club Update: June 11th

For this week’s Thousander Club update:

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

I had a good start on Monday and Tuesday, refactoring my menu code. I wouldn’t have bothered, but I realized that I needed to add yet another menu to my game, and the existing code was just too complex. I’ve reduced some of the code duplication, but as I explored the code, I realized that I may need to change more than I originally thought.

I want to add configurable sound volume, various sound effects, and that darn instructions screen that people unknowingly request when they ask, “So, how do I play?”

Between playing Diablo 2 with friends, watching the United States play in the CONCACAF Gold Cup on television, and the day job, I’m surprised that I was as productive as I was. Perhaps I should make better use of my MythTV box and only watch the soccer games when I am too tired to work.

Categories
Game Development Personal Development

Thousander Club Update: June 4th

For this week’s Thousander Club update:

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

I believe I have succeeded in creating a distributable build of Killer Kittens. Extracted, it is a little over 20MB, mostly due to the libraries included. The compressed file is about 8MB. I’m wondering if I can’t get the libSDL libraries to shrink down any more through configuration options. When I work on future projects, I think I will try to make sure I can get a distributable build as quickly as possible. I am spending too much time on this aspect instead of the actual game.

I’ve also added a new sound effect, and by doing so I realized some pieces of code were useless. For instance, when the game first starts up and brings you to the main menu, you hear the sound effect. It should only play when your ship is fading into existence. I found that I had a function called initializeSprites() that called a function initializeShip(). The problem is that the ship gets initialized when a new game is started, so I don’t need to create the player’s ship on program startup. I was going to try to split up the function so that the sound is played separately, but then I realized that the initializeShip() call in initializeSprites() was pointless.

While I have made some small progress, I can see the light at the end of the tunnel, and I’m getting impatient. More progress! More steam! Hoist the colors! I can’t do these sub-ten hour weeks and expect to get much accomplished.