Categories
Game Development General

Unanticipated Game Development Obstacle: The Weather

In the past couple of days, I have been putting in more hours than usual. If I could keep it up, I might actually hit 20 hours for the week. I already figured that I couldn’t, what with today being Valentine’s Day (or Singles Awareness Day, or Ferris Wheel Day, or IBM Founding Day, or whatever you would like to celebrate) and Friday and Saturday evenings have me either attending or hosting a party.

What I didn’t anticipate being a problem was the weather. I drove my girlfriend to work today, and it takes an hour to get there and back on a normal day. On top of it all, due to the snowfall that Chicago hasn’t seen in seven years, SUV drivers just can’t seem to figure out why drivers of normal cars don’t want to have to drive off the street in the snow. We just can’t seem to get the wheels to go forward when part of the street actually becomes “off-road”. How about if you would be so nice as to drive your consumer-grade tank in the snow so the rest of us could actually get some traction? Thanks.

Also, parking back at home was tough. Most spots were snow traps, leaving unsuspecting vehicles unable to move. Any good, cleaned spots were taken. I don’t have a shovel as it’s been seven years since we saw any snow that merited having one. It took me over 15 minutes to find a spot even after I got home.

That’s fifteen minutes I could have spent tweaking variables or adding a new feature or even just THINKING about what I need to finish my Space Invaders clone. You would think that the weather would mean that I would have even more time to spend indoors, and now that I mention it, yeah, I would rather not leave home and deal with having to find a parking spot later or deal with a tank rush in my neighborhood.

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
Games Geek / Technical General

If Old Games Were Made Today…

Plenty of people would argue that today’s games are influenced by yesterday’s games. For example, jumping puzzles are not as common as they once were because game developers have learned that jumping puzzles generally suck, something we wouldn’t know if game after game didn’t use such puzzles as filler. Likewise, using the WASD keys to control the game is so pervasive, no one even thinks twice about putting it in a game such as Harry Potter and the Chamber of Secrets, a game that is not targeted to hardcore audiences, the only ones who would expect to use WASD.

But what would happen if old games were made for the first time today? Would they be the same games, or would “conventional wisdom” dictate changes? Below are a few guesses:

  • Donkey Kong, Mario Bros, and Berzerk wouldn’t be considered casual enough. Significant changes would need to take place to make them more acceptable to mainstream audiences. Donkey Kong would need to throw different colored barrels that Jumpman would need to collect and match. Player clicks would dictate where Mario and Luigi should go and in what order to clean the pipes. Robots in Berzerk would be changed to colorful bugs, and the player would control the bouncing smiley face to try to save the flowers that for some reason are growing everywhere.
  • Pac-man, Space Invaders, and Asteroids would provide medals with different shapes, names, and colors. Collect all of the medals, and show off to your friends!
  • Centipede would be made into an RTS based on insects. There would be three factions, each with different abilities. Koreans would watch people play this game in stadiums and on television.
  • Tetris would feature pop music and psychedelic colors flashing to a beat.
  • Defender would be panned as too simplistic as the enemies don’t shoot nearly often enough to provide a real challenge.
  • SimCity would be considered too free form. There should be specific goals, such as destroying as many buildings as possible in three minutes or tearing up the streets to prevent the SimCitizens from getting to work on time. Also, you would need to match three Residential Zones to get the condos, not just two. Eventually politicians would blast it for providing training to terrorists since they could set the city on fire or cause an earthquake on command.
  • Jack Thompson would point to Custer’s Revenge as typical of sex-and-violence training simulators being marketed to children and takes it upon himself to “shutdown Mystique”. Sales of the game would skyrocket due to the publicity.
  • E.T. would have multiplayer modes featuring kids flying through moonlit skies and saving dying flowers. Co-op mode would feature multiple phone components strewn throughout the world. Naturally, it would be a prime candidate for in-game advertising, specifically for The Hershey Company’s Reese’s Pieces. E.T. would still be considered the worst video game ever, and I would probably still be the only person who liked it.

Any other guesses?

Categories
General

Gamedev.net is still down?!?

I sometimes go to GameDev.net for the Unix, “alternative library” (whatever that means), and beginner discussion forums. At the very least, it is a good source of technical knowledge, and I love perusing the archive of articles.

But for the past week, the site has been down. If you go to the website, you will be greeted by some ravenous humans getting ready to devour a subdued and near-sighted rhinocerous, and the following note:

We detected an attempted malicious attack on the site and have decided to take the site offline to assess any impact. GameDev.net will be back online as soon as possible.

How rough an attack could it have been? I know that they use Windows-based servers and ASP-based scripting, but I would think at the most a day or two of downtime would have been enough to fix whatever issues they are encountering. Clearly something more nefarious is going on…

Categories
Games Geek / Technical General

Every NES Game on eBay

A friend of mine sent me this eBay auction for every NES game ever made, including the NES system.

Besides 670 officially licensed NES games and the NES system, you can also win the unlicensed games, ROB the robot, the Power Glove, the Power Pad, and a number of other accessories.

Normally I wouldn’t give much thought to an NES auction, but as of this writing the bidding is at $4,550.00. Eep!

I already have the two Wizardry and Zelda games listed, and so I’m good for now; however, if someone in Chicago wins this auction, I would have no problem hanging out to play any number of the other games.

Categories
General

Thousander Club Update: February 5th

For this week’s Thousander Club update:

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

I finally hit the point where I needed to refactor and abstract some of my code for the Space Invaders clone. When I tried to start with abstractions, I didn’t have the mental agility or experience to tell me what I needed. Now that I have some concrete code, I know what is working well and what needs improvement.

Until now, my aliens, my bullets, and my ship were all KrSprite objects. In the Kyra Sprite Engine, each sprite holds its own position data as integer coordinates, and so I just used that data to handle movement. It worked fine, except that it wasn’t very precise. If I wanted to move an object by 10 pixels, there was no problem, but if I wanted to move an object 10.1 pixels, I woud lose that precision. The end result was jerky animation and a feeling that there was a lack in the control scheme.

I never liked the idea that my physics code was dependent on the graphical representation, but it worked well enough for me to concentrate on implementing missing features. One of those features is to get the aliens to slow down to a sane speed. To do so, I need to get more accurate updates, which requires a separate set of position variables. It seemed like it was time to create the general-purpose Entity class.

The Entity class that I originally wrote for Oracle’s Eye Prime involved State and Action objects. I didn’t need anything nearly so complicated. An Entity just needs to hold a position and the sprite. In the future, I may abstract it to use a general-purpose Representation, but that’s only because I don’t like the idea of having to include the Kyra header for this class. I’ll abstract it further when I need to do so, but no sooner. I seem to have more success with the iterative changes. B-)

Now that I have this Entity object, I find that the animation and movement can be slower, smoother, and easier to tweak. I can now specify movement speeds in terms of pixels per second instead of using arbitrary numbers that appear to work well.

I started out with updating just the player’s ship. Everything else gets a delta of zero, which is kind of surreal because the aliens still fire bullets at random. The bullets are also frozen in place next to the aliens. Anyway, the player’s ship used to move very quickly between frames, taking a little over a second to travel the width of the screen, but now it takes longer to travel from one side to the other.

I did the same thing with the bullet movement, and finally I applied it to the aliens. Now everything moves at much saner speeds, and I can easily tweak to get the right balance between the ship’s speed, the various bullet speeds, and the alien’s speeds.

Categories
Game Design Game Development Games Geek / Technical Marketing/Business

Measuring What Players Find Most Rewarding in Games

One of the problems game developers have is figuring out what players want. There are various papers, arguments, and forum threads on what constitutes fun and how to engineer it. Entire books may be dedicated to the question of what players like about video games. If we can find out what they like, we can make more of it.

The PENS model suggested in the article Rethinking Carrots: A New Method For Measuring What Players Find Most Rewarding and Motivating About Your Game seems to be a statistically significant predictor of player enjoyment. That is, someone has come up with a model that is incredibly accurate at predicting what a player may enjoy about playing video games.

The article is eight pages long and goes into some detail, but the Player Experience of Need Satisfaction model breaks everything down to three psychological needs:

  • competence
  • autonomy
  • relatedness

Competence suggests that players enjoy activities in which they can feel effective. Getting to the next level, finding the next item, and surviving the next zombie all allow the player to overcome challenges, and the player enjoys becoming better at these activities.

Autonomy simply means that the player feels he/she has a choice. A game that allows the player to choose his/her way through will be more enjoyable than a game that acts as if it is on rails.

Relatedness is about the fact that video game players are social animals. The article suggests this part of the model has only recently become relevant to the mainstream player, but I think that MUDs, BBS, and various multiplayer video games have existed for a long time. I am sure relatedness applied there as well.

What’s interesting about this PENS model is that it seems to be much more accurate at predicting the success and popularity of a game than trying to measure “fun” in other ways. One of the more interesting quotes:

Describing the player experience in terms of genuine need satisfaction, rather than simply as “fun,” gives the industry the deeper language it deserves for communicating what makes games so powerfully unique. It allows us to speak meaningfully about the value games have beyond leisure and diversion, diffuses the political bias against games as empty experiences, and provides an important new lexicon in the Serious Games arena where, as the name implies, fun is not always the primary goal. When we speak of games in terms of their satisfaction of competence, autonomy, and relatedness, we respect that this is both what makes them fun and also what can make them so much more.

Some new words to make it easier to talk about video games? I’ll take them.

Categories
Game Development

Krabbity Interview

Turbo from #gamedevelopers informed me that Gaming Girls interviewed her.

She talked about what made her get into game development in the first place, her favorite games, and how Krabbitworld came to be.

The following is printed out and up in my home office:

Calisto: Any advice you can give anyone trying to get into game development and creation?
krabbity: Persist, persevere, focus and never say can’t. Plug through the tedium. Nothing worthwhile is ever easy. Never let something you do under par discourage you. Let it be the garbage on your way to the gold.

Categories
Game Development Games Geek / Technical General Marketing/Business

Miss Out on GDC Again?

Last year, I had to enjoy the Game Developers Conference remotely, reading the coverage of the event by other indie bloggers.

Yesterday was the last day that I could get a discount to register for the March event. Even discounted, the prices are a bit steep, and I really would have liked to go to attend the keynotes and the tutorials. Since I am not a VIP or giga in any way, I had to settle for the Indie Expo pass. I could manage that price, even without the discount.

Before I registered, I checked to see how much airfare and a hotel room would cost for the week. Ouch.

I don’t want to miss out on GDC again, so I am trying to figure out how I can afford to go. I think if I can find someone to share a hotel room with, it won’t be so bad. Failing that, perhaps I may not be able to stay for the entire week. Maybe I’ll just stay for a few days, timing it so I can attend the Independent Games Festival.

No matter what, I don’t want to miss GDC again.

EDIT: Ok, apparently the pass I was going to purchase is now sold out, which means that the only way I could go is if I use the Expo pass. I don’t think it will be worth the cost for a hotel and the hassle involved if I can’t even go to the Indie Games Summit.

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-)