Zombie Dodgeball

Return to Main Page

For roughly one year I worked on an XNA game written in C# for the PC/360 that was cleverly titled "Zombie Dodgeball".   The game was one part sports game, one part RPG, one part fighting game, and zero parts survival-horror.   Apparently a zombie with a dodgeball does not qualify with the ESRB  as "Threatening".  The code for the program was done to completion, however there still remained a large quantity of art assets that were needed to "finish".  At this time several dodgeball games were announced from established developers like EA, Blazing Lizard, and the grand daddy of them all, and so it was decided to take all the lessons learned from Zombie Dodgeball and roll them into the next project.

While there is some disapointment about not being able to see this project to completion, spending another six months to develop the art assets and then release it after the competition is simply not a viable business option.  Roughtly  95% of the code can be carried over to my next project, so there is minimal loss in the transition.  

 

 8/21/07

Fear not, true believers.  While Zombie Dodgeball as we know it is no more, the fire lives on on the next project's page! 

8/20/07

Last week a press release came across my desk from a group of guys calling themselves "Los Lagartos Fuego!", aka Blazing Lizard.  APPARENTLY my dodgeball game wasn't as unique as I had dreamed, and here were a bunch of guys with barrels more experience coming to the table with Pirate AND Ninja Dodgeball.  I only had zombies, so right off the bat they had twice as much awesometude as I had.  So there ya go folks, that does it for me.  Time to take down my shingle, and return to corporate skullduggery.    Thanks for all the support over the last couple months, and thanks for reading!

......

Ok, that didn't take.  Lets try again.   Time to give up, and ...  farm?  

So I'm not quitting.  It ain't in mah blood!   BUT you should see some changes around here.  I might move on to a new project, but I am definetely going to keep working on a game.  Since im a paranoid freak and I try to make my code as flexible as possible, 99.3% percent of my code is moving over, and hopefully some of the art, too.  As for what I move on to...well, I do have my uber-game in the back of my head, so I might even move on to that a bit early.  My initial plan was to make something marketable (aka Zombie Dodgeball!) and use that to bankroll a bigger project (with what people in the industry call  "real artists"), and I would still like to stick with that plan, but if all else fails I might just have to get a start on the big 'un. 

As for Blazing Lizard - After spending countless hours on dodgeball, I now OWE IT TO THE WORLD to make sure all my random thoughts on the subject are conveyed to Blazing Lizard to ensure that the best possible game is made.  Pity them for having to deal with it all and sort through it.  

Unsolicited Advice for Blazing Lizard

 

8/17/07

Yesterday was tiring, but a GOOD tiring.   Like if you rode a bike up a really steep hill.  Then, at the top, they gave you a snow cone.  And inside the snow cone you found the original copy of the Magna Carta.  And then you and Nick Cage go on a zany adventure to make sure that the Magna Carta doesnt fall into the hands of evil.  THAT kind of tiring. 

Yesterday, you see, was "collision cleanup" day.   I finally added cells to my collision detection, which saved like, i dunno, 3 gallons of CPU (thats 87 litres to my metric buddies, and 3 1/2 cups of tea to my english mates).   The basic idea here is that i break the world into cells, then if an object hits the world, i only check for colision against the triangles that are inside the cells that the object is in.  I also seperated out the collision mesh from the draw mesh (giving "high coupling" a big ol' middle finger and then breaking them up like my name was Yoko (too soon?(more parenthesis!))).

On a nastoligic note, that was kinda a big deal for me, adding the collision cells.  It was one of the last things that I had in my college capstone project, but had never made it into this new project yet.  But now I am pretty much done mining tech from the old program, a bit sad, really.  Oh well.  Maybe I can sell it at a garage sale for 50 cents.  What?  You are gonna haggle?  On 50 freakin' cents?  What the hell is wrong with you, man?  FINE, 40 cents, just take it and leave before I change my mind.   NO I won't throw in a toaster. 

 

8/14/07

Screenages!  And for the record, I have the AI set to "hard", so those little guys were ESPECIALLY unforgiving.  PLUS, I was taking screen grabs at the time, my heart wasn't in the game!

As an explanation, the last screen is for a game mode called "clone".  Guess what THAT means.


8/13/07

FINALLY finished the AI routines.  WHOO!   Now I gots me 3 variables I can tweak to turn someone from a brilliant aggressive demon-child to a dumb passive drone.  WHY YOU ASK?  Scaling!  Now level 1 enemies can be dumb aggressive, level 10 enemies can be smart aggressive.  AND THE PASSIVE, BEN, WHY THE PASSIVE!  Thats for your own team.  Unless you want your own team being super aggressive and stealing all the glory.  But where is the fun in THAT. 

I am tempted to add another key to the gamepad that lets you adjust your teammates on the fly so that they can be aggressive, then fall back and be passive, buttttt that might clutter the gamepad, I think I am using too many buttons as is.

 

8/8/07

I almost forgot, but I finally uploaded some screenshots of my college "Interactive Environment" capstone onto this site.  It gives a really high overview of the project and some of the stuff I researched while making it.  But the BEST part is seeing screenshots of my horrible, horrible character model.  Ugh.  Just....ugh.  You could cut yourself on some off those polygons.  Robot Ben be scary, yo.

I am totally cheating and writing this on 8/7.   Don't tell.  

 

8/7/07

Finally, finally, FINALLY last night I finished the opening story comic!  Well, the first page of it.   First of four, actually.  Yeah, thanks for bringing up that I still have a ton left to go.  Jerkface. 

What really threw me off, oddly enough, was the dimension size of what I was working with.  In my head when I think comic book I have the image of the quintessential comic book shape in my head.  So I pull out my sketch pad, doodle doodle doodle, bamph, we have a comic.  But then when I scanned it in, I hit the roadblock of my own stupidity.  My game right now is set up for widescreen.  A piece of paper is anti-widescreen.   They fight.   Screen wins.  I can’t see half of my goddamn picture with the top cropped, and I have a ton of dead space to the left and right.  So I ended up having to go back and draw one of the panels “widescreen”.  Lesson learned, I spose, but it still ate up a good couple hours.  And now I am going waste ANOTHER couple hours trying to figure out how humans evolved to use height-heavy mediums for providing information when a widescreen format seems so much better suited for our eye placement.  


 

8/6/07

Finished Tomb Raider Legends on 360 this weekend.  It was....it was fantastic.  I am still stunned.  The last few in the series were jokes in the industry, then Crystal Dynamics comes along with this and floors me.  It was perfectly executed -intuitive UI, great controls, and interactive cut scenes really integrated me as a player into the experience.   Definetely recommended.  

Lesson Learned from Tomb Raider Legends: Make sure the player feels like they are the ones in control.

I also finished drawing the first page of the story, but I think I am going to go back and clean up some of the lines on it and...maybe have to completely redraw it.  booooo.  hisssss.  I really like how the first four panels turned out, but the big panel at the end of the page just looks like it was drawn by a 5 year old.  With finger paint.  That he ate a lot of.   And I am pretty sure it was lead based.  On a positive note, I WAS able to lock down the text for the first page, so thats better than the placeholder ramblings I was using.

 

8/3/07

Fun facts!

Lines o' Code written thus far:  13,027
Source Files:  68

Wreck-your-face-with-Math:
Single spacing @ 46 font 12 lines per page:  283 pages
Double spacing @ 23 font 12 lines per page:  566 pages

 

8/2/07

After vomiting random UI thoughts up on the site I found a couple other links that touch on that topic, both general UI and game-specific.  I COULD just steal a few of their bits, butttttt that would be disrespectful and not give credit where its due!  That or I'm too lazy.

http://www.useit.com/papers/heuristic/heuristic_list.html 
http://royalpat.googlepages.com/videogames

In programming news -I was playing around with checking code execution times (thrilling, isnt it!)  and noticed that DateTime doesn't poll often enough to be of ANY use.  I did find a slick kernel call that can be used as a shortcut to get more acurate time:

http://support.microsoft.com/?kbid=306979

This let me find some wasted CPU, soooo another tool to help clean up some code.  Bah, speakin of, I do think its about time I start looking into cleaning up some of the collision detection and adding cells.  I have the code from one of my previous projects, its just a matter of c-sharpening it.

 

7/31/07

10 UI Commandments (in no particular order)

1)  The first time you play a game, "new" should be the first option.  The second time you play a game, "resume" should be the first option.
2)  All cut scenes should be pause-able
3)  All cut scenes should be skipable
4)  All splash screens during loading of data (ie controller layouts, backstory) must require a key press before moving to the action, thus avoiding action starting while you are away from the controller and also avoiding the screen disappearing before the user is done reading. 
5)  Hud can only be used for information that can't be shown on the character/world itself. 
6)  Animation in huds should be kept to a minimum to avoid distraction
7)  All objectives must be provided in text (speech is optional).
8)  All objectives must be able to be referenced after the initial information is provided.
9)  Each player on screen must be uniquely identifiable at all times.

10)  All games must include the Konami Code

 

7/30/07

I spent some time this weekend getting my art schwerve on, and.......oddly enough......I'm almost to the point that I think I could pull this off.  Don't get me wrong, it would be a LOT more convenient to hook up with some artists on this, and my art does look like rubbish compared to what it could be, but if I need to I really think i could draw it on my own.  Its just going to take a bit longer for me to stumble through it all.   :)  Next up, conquering sound effects and music!   ns-ns-ns-ns  (thats my fat techno beat)

Here is a rough-drafty-sample image from the opening comic.   There is still a dozen pieces of it that I need to tweak (moon..sky...tree........character-grass-tomb- hell, everything), but it makes me less embarassed and ashamed than I thought it might.  Oh, and I guess I should explain the text  is carried over from the previous panel, so if you MUST know he is saying "ughhhhhhhh", not "blahhhhhhhhh" or even "Hoochhhhhhhh"

 

7/28/07 

I finally got a new art pad, so hopefully i can upload some pictures again soon.  MEANWHILE....I added a new "reset" call for most of the classes.  Now with a flick of the wrist i can reset all the default values, useful for "resetting" the world for another round.  The only real issue I had to wrestle myself on were things like start position - should the game remember the start position of all its objects (since the game is the one who told the objects where to start in the first place), or should each object remember its start position.  Should we "reset" a dodgeball to its start position, or should the world have to set the dodgeball's position at a higher level?  Does the dogeball even REMEMBER where it started?  How the hell could a dodgeball know where it started?  The answer is obvious in the end (each object remembers its start position), but its one of those weird instances where Object Orientated Programming kinda implodes. A  "real-world" dodgeball (one that has been picked to live in a house...) has a speed, weight, and mass, but it doesnt "have" a start position.  The world tells it where to start.  So OOP says i should put it in the object class (since its a variable specific to that object), but the real world object doesn't have that same ability.  OBVIOUSLY I thought about this too hard and just made myself more confused in the process.  Dont worry.  It works, and the code is easily understandable.  Thats all that matters. 

  Also, i went ahead and listed chromehounds on ebay, just not for me.  

Lesson Learned from Chromehounds - Provide Easily Understood Objectives 

 

7/26/07

 I'll let you all in on a carefully guarded secret of piss-poor aritsts the world over.  The trick to getting semi-decent-er-ish art is to draw it REALLY FREAKIN BIG and then scaling it down.  This way, when you screw up, the bad parts get shrunk down and they are less noticible.  Word on the street is that Rembrandt drew everything on the side of a building, then took a picture and shrunk it down in photoshop.  Trompe-l'œil took a skyscrapper.    Piet Mondrian only needed a post-it note.   Anti-Modernistic-Abstract-Art-Zing!


7/25/07

I'm dogsitting el perro de mis padres, which resulted in  my laptop getting bounced around a bit every time I tried to sit down and be productive, sooooo I gave myself the night off and finally beat Prey.  I love Human Head, and their earlier game Rune is probably in my top 25, but I had one complaint on Prey- the story was fantastic in the first scene, and really good in the last quarter of the game, but in the middle.....nothin'.   Just running.  And shooting.  It made me realize just how concscious of story progression I have to be as I work on my projects - finding a way to advance the story evenly throughout the entire experience instead of just an opening and closing. (This is probably in reference to my project AFTER zombie dodgeball. Zombie plots don't have to be overly complicated)

2 bonus points go to Human Head for their main character tho, his quips gave him a ton of personality that you just dont get in games with a silent-gordo-freeman heroe.  Interesting distinction (more fuel to disprove Roger Ebert), but there is definetely two mindsets, an obvious line being drawn down the middle of story telling in games.  Total immersion verses structured story telling.  Naturally its easier to tell a story with the latter - the player doesnt have to worry about what to think, we can tell them what the main character is thinking with a sound byte.  But now that i think about it, is it hack to tell the player what to think?  Is this the equivalent to using a voice over in film telling us the thoughts of the character?  Emotion in film can be shown in faces, but in a first person game you don't have access to that...

 I like to learn from any success or failure, so I am going to start adding a new section to this bloggery, Lesson Learned.  Basically, everytime a game screws up or is awesome, I write down why, and in THEORY I can impliment features in my game accordingly.

 Lesson Learned from Prey -  Even story flow

 

7/24/07

Its kind of funny, I have been putting off writing the code to navigate the comic book panels that tell the story, mostly because I hadn't gotten around to designing how it would flow.  Then today I sat down for about 20 minutes and ended up with some code that works like a charm and, if i may be so bold, is pretty damn elegant.  Purty even.

Now I just gotta get off my ass and work on the comic panels.  I am a bit torn on what would be fastest - photoshopping a bunch of the art I already have drawn OR drawing and scanning fresh art OR just hiring some freakin' artists.  I like the last idea.  I want to get back to code.

 

7/23/07

With shaders on the back burner, I decided to put some of my spare energy to use updating the weapons class.   The new functionality I am working on is the ability to charge up a weapon before you attack with it.  Basically, a "fully charged" dodgeball will move faster and be harder to catch.  The big hurdle was "how do I show the weapon is charging".   My first idea was another bar in the hud that filled up the longer you had the dodgeball cocked back, but I don't like the idea of using the hud too much.  I'd rather keep the player's eye on the center of the screen where the action is instead of darting back and forth between the action and the corner.   In the end I am pretty happy with my resolution - make the dodgeball itself glow.  Now, as the ball charges, it starts to shine, so you know you have a full charged dodgeball when it looks like a tiny little sun in your hands.  Bamph. 

 

7/22/07

So one big problem with my game is that its visuals are really flat, so what I'm spending a lot of my time working on is adding some tricks to show off some depth, like shadows, grass, lighting techniques, etc.  Well this weekend I decided to look into "depth of field blur".   I read up on it for a few days, then Saturday I started coding.  I only hit one big hiccup- vertex shaders, apparently, expect position to be 4 numbers, even though you are only supposed to send 3 numbers.  so whats the fourth number of position?  is my pixel shader entering into the 4th dimension?   Is that time? space?  monkeys?  Rod Sterling couldn't make sense of this crap.   Anyway, tonight while watching Die Hard 2, it started to click into place, and I was getting the fuzzies on my background objects!   While I am pretty excited to get it working, I am not sure if the end result is worth the sacrifice to CPU.  Hell, if i wanted to, i could even make my distant graphics fuzzy before they are even loaded into the engine.  I am going to try to clean up all my pixel and vertex shaders and see if i can squeeze some extra cpu, we shall see. 

 

7/19/07

Finally put some of the finishing touches on the user select screen.  Basically a bunch of zombie portraits.  Enjoys. (I promise later posts will try to be a bit more "trials and tribulations of development" and less "look at my crappy draw-rings".)


 The gray images are unchosen teammates.  The colored images are the chosen ones. 

Fun Facts about this page:

a) Four fancy zombie types to choose from:  Undead, Alien Controlled, Radiation, and....Skeleton.  Is that a type? It should be.
b)  There is an impostor non-zombie hanging out in the bottom row trying to show off.  Unimpressive.
c) Its hard to tell when a skeleton is in color, but its easy to tell just how buff a skeleton is.  Who said this game didn't have any guns!


 

7/16/07

This little project from the last couple months is starting to shape up nicely, so lets start this off with a screen shot of a game just getting started.  See that big "go" sign?  I assure you, things are about to get gone going gone, Zombie Dodgeball Style!  Or something.

Why yes, that IS three zombies about to school 3 preschoolers.  I'm glad you asked.  I'd hate for there to be any vagueness about that scenario.