Archive for the ‘Personal Projects’ Category

I’m working on a new zombie survival themed game, inspired by roguelikes and my work on Liberal Crime Squad. It’s a flash game playable in the browser, and I’m doing weekly updates. I’ve been remiss about sharing these weekly updates on my own blog, so I’ll go ahead post the last three weeks’ updates. Each Friday, I’ll post another update.

January 20th, 2012 – This week I fixed a couple of bugs, then got started on the next core gameplay element — melee attacks and zombies hitting you. This went pretty quickly because I’d already implemented it in the earlier build, seen in the latest preview video, so it finished up fairly early, including a completely new weapon (the knife). Once player death was in the game, I added a reset button and tweaked some numbers to play with balance and feel for the game, such as making zombies handle difficult terrain much more slowly than humans, making zombies sturdier, and slowing down your move speed.

I then enabled door opening, and added door closing by holding shift when bumping into the door. I’m not sure if that’s the best way to handle it; maybe clicking the door, or having shift be a global interaction-on-bump key, complete with icons over things you can interact with while holding it (push/pull icon over a piece of furniture, open/close icons over doors, etc). I have to think about that some more. I moved on to flashing the player and zombies when they take damage, which I think is a small thing that really helps the feel of the game. The videos showed zombies flickering briefly when hit, but I prefer this. I then added a minimap in the bottom of the screen, which shows a scrolling view of the local area of the city you’re in, and remembers what tiles you have explored, so you can start filling out your map of the area. The underlying map used by the minimap can later be used in a larger map too.

After serious consideration, I think that point-and-shoot isn’t very compatible with the way I’m physically presenting the world, and the very tile-based gameplay I’m going for, so I started to think about other ways to target enemies of your choice. The last thing I did for the game was put the ability to click a zombie and force all attacks to go for that target. The lock-on is only lost if the zombie dies or drops out of range or view; you can shoot past other zombies to target one in the back.

January 13th, 2012 – I started the week by working to optimize the lighting and field of view calculations, substituting a faster but more restrictive algorithm. Performance gains seem to be good, but I’m still testing on a relatively fast machine, and will need to hear how the game is running on other computers as well. I added zombies, zombie movement and hunting, window breaking, and shooting. I needed a break from just re-implementing old features, so I also added a crosshair that shows on the currently targeted zombie if the attack button is being held.

The previous overlay for bullet trails actually used a map-sized bitmap in memory that was written to and erased from on a frame-by-frame basis, which was forgivably clunky on a small map, but proved completely unfeasible on the huge map I’m currently using. The new tracer fire looks almost the same, but should run much faster — the only major difference is that the layering has the gunshots drawing on top of the player and the zombies, rather than the characters drawing over the gunshots. I liked the other way more, but I’ll need to change how the characters are drawn to support moving them off the map layer.

Of the things in the preview video that aren’t yet re-implemented, the major remaining features are melee attacks, blood, door opening, and items. Weapons are only half-made — they can shoot, and track ammo, but aren’t in the world and don’t interact with the HUD properly.

January 6th, 2012 – I’m in the middle of extending the new engine to support the large open world of the previous engine and integrate the city-generator for the first time. The game is partially disassembled and I’m going through it slowly putting features back in — I’ve done this twice now, because my inexperience with engine architecture keeps catching up with me. Many things, such as enemy AI, combat, and opening doors, are currently inoperable, but can be re-added fairly easily. The city generator is now integrated for the first time, and one sample building is being loaded in. I’m not satisfied with the way the buildings are interacting with the street layout, and have been thinking of different ways to arrange buildings around streets.

Friday Alpha Build – January 20th, 2012
– Click the screen to give it keyboard focus. Click enemies to mark them as a preferred target.
– Use WASD, number pad, or arrow keys to move.
– F to toggle flashlight. No flashlight makes you super stealthy.
– Hold shift when moving into an open doorway to close the door instead.
– Hold space to attack, or bump into enemies to melee them. 1-3 to switch your primary weapon.
– Press escape to reset the game if you die.


Read Full Post »

Politician Paul

My first game done for school at DigiPen, Politician Paul, was a top-down space shooter with a single level and a sharp difficulty curve. The game is set in the far future in which politics has become such a spectator sport, and the public so disinterested and disgusted with it, that it has degenerated into violent one-day space battles between candidates. You play a home-town hero, Politician Paul, who has to prove to the public that you have what it takes to replace the ruthless and corrupt Senator Radcliffe, by defeating him in live ship-to-ship combat.

This story of a political analogy for the space shooter combat was not just padding fluff around the game; it informed the game’s unusual mechanics. As with a real political campaign, your basic goal early in the level is to budget your primary resource (money) to the greatest effect and earn as much popularity as possible, in order to build momentum. Money was required to heal your ship and to fire any of various secondary weapons. Popularity was earned by hitting enemy ships and avoiding damage yourself. Your popularity level determined your passive income; you would bring in more money per second in donations when you had more of it, which in turn means you’re able to heal more and fire better weapons more often.

This created a very strong positive feedback loop early in the short game. If you are merely surviving, and not getting kills or barely hanging on, the viewers back home aren’t impressed, donations dry up, and you quickly find yourself unable to heal or fire anything other than your primary weapon. On the other hand, if you destroy enemies swiftly and without sweat, viewers are swayed to your side, and you will quickly find yourself flush with resources to take on the next challenge.

In addition to this basic mechanic of forcing consistent basic competency, special rewards were made available for adhering your play to styles that special interest groups respected. The ammo conservation league supported more accuracy with your primary weapon. The technology companies supported you for showcasing and relying upon their extravagant and expensive secondary weapons. And the green space society rewarded you for keeping your health maximized, so as to not pollute space with your smoking (and particle effect spewing) ship. As these groups liked you more, the three power-ups you could pick up from stronger enemies would be upgraded: accuracy let you upgrade your primary weapon further; health let you upgrade your armor further; and special weapon usage gave you bigger lump sum cash infusions.

Mastering the game meant you had to play repeatedly to refine your skills to the point where you could balance the graceful play required for popularity with the skills expected of the special interest groups, while taking on increasingly intense waves of enemies. Only once you mastered the art of maximizing popularity while balancing your play to all these interests could you survive long enough and build your strength to a sufficient degree that you could fight Senator Radcliffe’s boss ship and win the game.

Read Full Post »

Back in spring of this year, I was taking a class on 3D level design that focused its practical work on building a series of levels for Half-Life 2. Our final project was to have the entire class make a campaign of individual levels, with students being divided into teams of three or so people, each team assigned a different level in the campaign. My team was assigned the final level, in which all weapons and enemies were available, and the pumped, final conflict was to take place. It could have been the most exciting level, or easily the most catastrophic failure.

We decided to implement it as a sort of “last stand” level, in which you and many allies would mount a defense of a street intersection against wave after wave of mixed enemy attackers, culminating in an attack of overwhelming force which would segway into the closing cinematic. Hanspeter Ziegler designed the street and building layout such that we had multiple enterable buildings with internal rooms, stairs, and windows to shoot out of, and I set up the positions of friendlies and enemies, laid down the AI node graph, and set up the attack patterns that would let enemy troops sweep from building to building.

Our team worked early, hard, and with intent. We cared about what we were doing and we wanted it to be fun. I spent many hours playing our level, finding bugs in pathfinding or odd geometry, areas of the flow of battle that could be improved. Despite the instructor being concerned if we had too much ahead of us, we kept to schedule and had time to refine the balance, optimize for performance, and add elements of polish.

In the end, we had a level that was a lot of fun. It was open-ended — you had hard points, medics, and weapon caches distributed throughout the level in different buildings, and waves of enemies that could be dealt with using a wide variety of strategies and weapons. Your actions would determine whether NPC allies survived or fell.

I remember mentioning to the instructor that I was really happy with how our level was turning out. I even liked it more than playing the base game of Half-Life 2. She suggested part of that might be pride; I disagreed, because I already knew what it was. Half-Life is an extremely linear, refined game. Our level was an open-ended, arena style level, where every play was new, and you used tactical strategy to learn the terrain and experiment with strategies.

Just today I was watching Jonathan Morin’s talk about predictability in games and how to avoid pre-conceived experiences in game design. He showed a clip from Groundhog Day — a great movie, but the clip showed Phil Conners bored out of his mind as he recited events before they occurred and robbed an armored car without risk of failure, because he knew the exact moments people would turn away and knew his efforts would succeed. Jonathan Morin then talked about the problem of games being just like this with repeated plays — too predictable after the player goes through the same sequence again and again. This sentence resonated very strongly with me:

[Game designers] want to control what the player does, we want to control when he’s going to do it, we want to control why he’s going to do it, how he’s going to do it, and what he is going to feel when he’s doing it.

It was an extremely well-chosen video clip that really captured the problem with highly linear game structures, and that incisive concern seemed to capture at least my personal impression of some of the highly polished, highly refined linear levels such as are found in Half-Life 2. A specific experience, a specific difficulty, a specific set of challenges. This experience might be calibrated to be incredible, but it’s still only one experience. I like these levels… once. And that’s if the designer did a good job. But I prefer a level that lets me play with strategies and tactics, that lets me experiment and decide how I want to play.

Our Half-Life 2 map let you choose if you wanted to snipe from rooftops, shoot from the fire escape on the third floor into the street below, or fight in close quarters to hold a stairwell in a storefront shop with three friendly NPCs and a medic. If one tactic wasn’t working, you could try another. If you ran out of ammo for one weapon, you could switch to a different tactic, or sprint across the street to the hard point across the way and try to hold that one. Our level encouraged intentional, strategic, and improvisational gameplay that changed with every play through.

As a player, I find those experiences more fun the first time, and far more replayable in successive times. As a designer, I find levels and mechanics that create these experiences to be more challenging to create, but far more satisfying.

Jonathan Morin was the lead level designer on Far Cry 2, a game I’m currently playing, and one that epitomizes the kind of dynamic, player-driven gameplay I’ve described here. His blog is the Game Design Cave.

Read Full Post »