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
Game Design Game Development Games

Speaking of Richard Garriott

Since people are blogging about games, specifically the entire series of Ultima games, it seems only appropriate to hear from Richard Garriott, Lord British himself. Richard Garriott: The Escapist Interview reveals all!

Or maybe just a bit. Consider it a complement to your Lord British interview collection.

He refers to the games before Ultima 4 as essentially projects to learn the mechanics of making games. If you find that your first projects are frustratingly simple yet difficult to make, perhaps you’ll feel better to know that it was about par with one of the big names in game development. He spends a good deal of time talking about his philosophy behind his latest MMO, Tabula Rasa. If you missed his preview at GDC, check it out at GameAlmighty.com.

In the Escapist interview, he goes on to talk about his new project in a way that makes me think that he is a believer that games can be art:

The goal is not to evangelize about one side or the other of any of these issues; the goal is to make people sit back and notice the ramifications of these decisions and to provoke thought. I’m a big believer in challenging people’s assumptions.

Categories
Game Design Game Development Games

Indie Game Dev Podcast: Interview with Braid Developer and Experimental Gameplay Workshop Founder

Action has an interview with the founder of the Experimental Gameplay Workshop at GDC and developer of Braid, which won the 2006 IGF prize for Innovation in Game Design and was a finalist for the Slamdance Guerilla Gamemaker competition. Jonathan Blow talks about starting out as an indie fairly young, the difference in what is considered “cutting-edge” in games over the years, and tips on prototyping. He talks about the development of Braid, which I found really interesting, especially the way he took the time travel aspect and applied it differently from other games such as Prince of Persia: Sands of Time.

Near the end, he talks about story in games, specifically saying that games can tell a story without resorting to the methods used in media such as books and movies. He referenced Rod Humble’s games The Marriage and A Walk with Max which featured in this past year’s Experimental Gameplay Workshop.

You can check out Jonathan Blow’s home page and see some of the prototypes he has created.

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 Design Game Development Games

Stories Aren’t That Important…Well, Sorta

Regardless of their credentials, people like to give their opinions on all manner of things. From the best way to pick a password for your email account to what makes a video game good, you will hear a lot of opinions in your lifetime, and not all of them will be good. I once heard someone suggest in all seriousness that the best PIN to use at the ATM was your birthday. Yeah, because reducing your PIN to one of the 365 options is definitely going to make it harder for a crook to figure it out.

Similarly, there will be people who will tell you that the most important aspect of a video game is the graphics, or the interactivity, or the fun you might have, or the story. Graphics aren’t video games, no matter how much you may have liked Myst‘s environments. Interactivity is inherent in video games; otherwise you are left with a movie. Still, interactivity isn’t the only thing you need to make a game. Since serious games have come into their own, and since some games are meant to be art or commentary, fun is no longer inherently important to video games as it once was. That is, if a game isn’t fun, it is not necessarily a bad thing since it might not be the point. Super Columbine Massacre RPG is an example of a game that isn’t meant to be fun.

But what about story? Do all games need a story, even if the story is not explicitly told to the player? RPGs almost always have a story, and I do remember a time when almost everyone could agree that “a good story” was what made an RPG fun. Final Fantasy 7 is usually touted as a good example, but then there are games such as Rogue and NetHack that have the flimsiest of stories and drop you into the game. Yes, you know the goal is to retrieve the amulet, but how many times have you forgotten this goal as you died Yet Another Stupid Death? How much do you pay attention to the short bit of text that introduces your character and his/her god to the world?

Tetris didn’t need a story, although some people seem to enjoy applying their own abstract story to the game. There is no story inherent in Tetris, but Juuso claims that it has a survival aspect in common with Resident Evil 4. Since zombie movies have usually been used to be commentary on Communism, and Tetris was created by a Soviet, maybe there is more to Juuso’s line of thinking…

Still, abstract puzzle games don’t rely on story. Tetris, Bejeweled, Cubis, and Zuma don’t really offer stories. They may be themed, but stories aren’t the reason why you continue to play day after day. And then there is the poem/game hybrid game, game, game, and game again, which claims to rebel against the tyranny of clean design that rules the web. Somehow, I couldn’t help but finish the game even though it seemed like one large mess of random text, strange imagery, and standard video game constructs. Part of the point of the game is to come away with your own interpretation.

Do games need stories? I don’t think that games need stories any more than they need full motion video or real-time pixel shaders. Are stories important? Yes and no.

Yes, stories are important. Stories give you the why, where, and when of the game. You would not think about searching for a person unless you knew that she was the princess and your king has asked you to save her from the dragon in the abandoned castle across the continent. Mario had to travel across the Mushroom Kingdom to save Princess Toadstool, and Link needed to find the different triforce pieces in order to save Princess Zelda. Japan surprised the United States at Pearl Harbor, and the President and your country are depending upon you to fight back and secure the Pacific Theater. The Zerg, Protoss, and Terran have all come together because some higher ups in the Terran ranks thought they could control an entire alien species as a weapon. The Tiger’s Claw is positioned along the front lines of the war against the Kilrathi, and you are a newly-trained recruit.

Stories also give us context for talking about the games. You didn’t just hit a certain set of buttons in a sequence, timing it to some lights on the screen. You hit the afterburners, turned your ship around 180 degrees, and fired all of your missiles into your pursuers. You were down to one health point and nearly hit by Metalman’s gears before you fired off one last shot and defeated him, and then you took his weapon and went after the next of Dr. Wily’s creations. Heck, you even found that the blocks in Tetris were getting too high for your comfort, but you were lucky enough to receive the straight piece and dropped the entire level down to a manageable level. You lived to clear lines another day.

Still, I don’t think stories are what make for a good role-playing game. If I wanted a good story, I’d read a book. I need to play games. Occasionally I feel the need to create my own stories. While some RPGs (and games in other genres) allow a branching storyline, sometimes making things up on my own is fun. Maybe I don’t need or want the developer dictating what will happen every single time I play a game. NetHack is fun in this regard because it always feels like a different game. Everything is interactive, and you sometimes get surprised that a certain action triggered a certain response from the game, even if you’ve been playing for years. SimCity allows me to decide what kind of urban environment I want. Maybe this city is a bustling metropolis in which natural disasters occur often, but this small town by the river is tranquil and acts as a vacation spot for the SimCitizens. The Sims allows me to create a perfect family, or a completely dysfunctional one. Either way, it’s my story that I get to tell. And let’s not forget that Black & White‘s creatures were as fun to talk about as your real life pets. My cats may be adorable, but my ape was trying very hard to learn how to throw a rock, as evidenced by the horses strewn about the beach.

In general, I suppose stories are important for games. I just think that they don’t necessarily have to be dictated from within the game. There is nothing wrong with games that tell a story, but games that do tell stories shouldn’t let the story get in the way of the game. Some people might prefer games that let them figure out their own stories. When I play Flatspace, I like to be a trader, but I like to hunt pirates as well. I don’t have to fight the pirates, but I’m just taking the law into my own hands, hoping to get my hands on the pirate who destroyed my life in my made-up past. There is no actual support for the story in the game, but there isn’t anything that gets in the way of that story, either. I enjoy the act of creation, even if it is only in my mind.

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.