Skip navigation

Monthly Archives: January 2009

Class playtests have shown the definitive issues with Panzer (the tank game I proposed earlier):

  1. Panzer sits at a crossroads: it either needs to be more or less complex. I decided to stick to the original assignment and scale back the complexity.
  2. Some rules were ambiguous and confusing, most of them will be removed to decrease complexity as well as speed up gameplay.
  3. Tank statistics made gameplay last too long.
  4. Tank statistics were redundant and unnecessarily complex.

 

It has also been brought up that this game has a lot of potential, warranting the addition of “advanced” rules that incorporate all of the features that I wanted to put in, but didn’t because of time and complexity constraints. First I will list the simple rules. Following I will post the advanced rules.

  1. Each player starts with one of each type of tank. Players start by placing their tanks along the grid rows closest to them, just as before.
  2. Players roll off to determine first turn.
  3. Players then alternate turns, running through movement and then attack phases.
  4. Movement Phase: Tanks may move in any direction a number of grid spaces equal to it’s Speed score.
  5. Attack Phase: Tanks may only shoot in one of the eight cardinal directions, at targets a number of spaces away equal to the attacker’s Range score. If the target tank is in range, the attacker rolls 3d6. If the result of the roll is higher than (or equal to for faster games) the target’s Evasion score, the attack was a successful hit. Upon a successful hit, the attacker rolls 1d6 and adds the attacker’s Power score. The resulting number is the amount of damage dealt to the target’s Integrity.
  6. If the attack roll results in a 17 or 18, the attack is a critical hit dealing an extra 3 points of damage.
  7. When a tank’s Integrity score reaches zero or lower, the tank is destroyed and removed from the play field.
  8. The game ends when all of one player’s tanks have been destroyed.

 

Tank statistics for Simple rules are as such:

Heavy Tank

  • Evasion – 9
  • Integrity – 13
  • Speed – 2
  • Range – 3
  • Power – 3

Medium Tank

  • Evasion – 11
  • Integrity – 9
  • Speed – 3
  • Range – 3
  • Power – 1

Light Tank

  • Evasion – 14
  • Integrity – 5
  • Speed – 4
  • Range – 4
  • Power – 0

 

Advanced rules build off of the original rules for Panzer with some significantly more complex additions (keep in mind, these are untested.  Feel free to let me know how they play and any suggestions you might have):

  1. Players start with a pool of 10 points.  They may purchase tanks using these points according to the following Heavy: 5, Medium: 3, Light: 2.
  2. The Falloff statistic reduces the attack roll by the given amount for every grid space the target is closer or further away from the Range statistic for the attacking tank.  For example: a Heavy tank attacks a Light tank two spaces in front of it.  The attacker would suffer a -1 penalty, because the Heavy tank’s Range is 3, and it’s Falloff is 1 ((3 – 2) x -1).
  3. Obstacles can be placed on the map.  If an obstacle is within the firing range of an attacking tank, it’s attack is made at a -1 penalty.  Tanks cannot fire through obstacles.
  4. Turning costs 1 movement.
  5. A tank that has moved it’s full movement during it’s player’s Movement Phase receives a +1 bonus to Evasion until the player’s next turn, but also suffers a -1 penalty to Attack rolls until the player’s next turn.
  6. Damage is 2d6 instead of 1d6.
  7. Directional damage is applied as such:  A hit from behind is always treated as a critical hit, dealing +3 damage.  A hit from the side deals an extra +1 damage.  Attacks to the front of the tank deal normal damage.  If there is any dispute about hit location, default to the side that deals the most damage.

 

Advanced Tank Statistics:

Heavy Tank:

  • Evasion – 9
  • Armor – 3
  • Integrity – 17
  • Speed – 2
  • Range – 3
  • Falloff – 1
  • Power – 3

Medium Tank

  • Evasion – 11
  • Armor – 3
  • Integrity – 12
  • Speed – 3
  • Range – 3
  • Falloff – 1
  • Power – 1

Light Tank

  • Evasion – 14
  • Armor – 2
  • Integrity – 9
  • Speed – 4
  • Range – 5
  • Falloff – 2
  • Power – 0

The Simple game is meant to last 5-10 minutes, the normal rules run 10-20, and the Advanced rules should last anywhere from 20-35 minutes.  Enjoy!

Don’t believe the (anit-) hype about Mirror’s Edge:

Mirror’s Edge

Platform: PS3 – PC – XB360    Rating: T    Genre: FPS/Platformer

What it is:

Innovative, thrilling, and gorgeous.  By combining the Prince of Persia style navigation with first person perspective, they have rolled my two favorite game types into one simple package.  It is also sadly linear and predicable, but the beautiful visuals ease that pain at times.

 

What it isn’t:

Varied, forgiving, or deep.  Most of the areas you encounter are nearly indistinguishable from other rooftops and building innards and puzzle variation and difficulty changes only slightly during the course of the game.  The added pressure of a circling helicopter and bullets flying past your face does not slow the constant crushing failure in this game.  It’s only credit in this case is how quickly the level reloads so that you can fail again.  Also, Mirror’s Edge has a story with the depth of a pail, leaving you wanting (much) more at the end.

 

Pros:

Unique free-running experience that allows for some truly cool moments while leaping from rooftop to rooftop.  Gorgeous cityscapes and camera effects that help to pull you into the game.  Well built levels and challenges as well as a fleshed-out cast of characters.

 

Cons:

Little variation in level aesthetics and mechanics usage.  Unforgiving failure system and combat situations make frustration a common issue.  After the first run through, there is little reason to play through again.  Limited control scheme that occasionally gets in the way of tasks.

 

Rating:

– Apathetic:

Rent it if you have the opportunity, it’s definitely worth the $10.  But if you skip Mirror’s Edge, you really won’t be missing anything amazing.

I’ve been sitting in front of my computer trying to get some work done and have run into serious writer’s block.  So, I decided to give my hand at game reviews.  The first one on the chopping block is

Resistance 2

Platform: PS3      Rating: M    Genre: FPS

What it is:

Competent and epic.  Resistance 2 is certainly a highly polished, well rounded shooter with balanced weapons, vicious enemies, and unique characters and locations.

 

What it isn’t:

Friendly, easy, or forgiving.  There were many occasions in Resistance 2 that had me pulling my hair out from the frustrating impossibility of the situation.  For example, fighting off three Titans (giant monsters with tank cannons) with little cover and almost no ammo.

 

Pros:

Resistance 2 has a strong history on the PS3, Resistance 1 being one of it’s first games.  Two has upped the ante on graphics to say the least (then again, it’s a next-gen game, so no surprise there).  Resistance 2 also has many of the same driving factors that 1 did: unique weapons, aggressive AI, sprawling combat areas, and gorgeous scenery.  Another plus in my opinion is the complete omission of vehicle sections in Resistance 2, which were fun in the original but became tedious and frustrating after a short while.

 

Cons:

Resistance 2 seemed to lack a plot almost entirely.  Something about one dude doing something and then I have to jump in and save the day, or something.  It is also relentless.  Two’s pacing is all sorts of screwed up.  At the end of each level there is a (maybe) three to four minute cutscene and then you’re back into the thick of things.  Even when things look quiet and slow, they never last for very long. Finally, the AI only targets you, and unleashes an entire wall of ammo in your direction the second you leave cover.  So while, yes, this forces the player to use cover more tactically and capitalize on the unique capabilities of the weapons they have, it’s still quite frustrating to have an enemy bullrush your position (walking right past all of your allies) only to knock you out of cover.

 

Rating

– Recommended:

If you have a PS3, check out Resistance 2.  If you don’t own one, this is not the game that will make you need one.

Success! I have **FINALLY** gotten point sprites working correctly. After much struggling, frustration, and a slew of websites that offered little to no help whatsoever here is my answer:

To use textures with point sprites you need to do the following:

  1. Find out the limits of your point sprite implementation by using the glGetFloatv( GL_ALIASED_POINT_SIZE_RANGE, <float[2]>) call. This will populate your <float[2]> with the upper and lower limits for your texture sizes (generally, but not always, 1 and 64).
  2. Load in your texture, enable it’s type (I believe that it MUST be GL_TEXTURE_2D), and bind the texture.
  3. Enable GL_POINT_SPRITE_ARB and set attenuation, fade thresholds, and pass in the min and max sizes.
  4. Set texture coordinate replacement parameters using glTexEnvi( GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE).
  5. Specify your point size, using glPointSize(<float>) and (optionally, mostly for particle systems) turn off the depth mask.
  6. Call glBegin( GL_POINTS ), specify 3d vertices, and then glEnd.

Here is the exact code I am using. The loadPoTTextureFromImageNamed: call returns a texture containing GLuint data and a GL_TEXTURE_2D type. Other than that, it’s all pretty self explanatory. Let me know if you find something out of whack. Hope it helps!

 

//Make space for particle limits and fill it from OGL call.

GLfloat sizes[2];

glGetFloatv(GL_ALIASED_POINT_SIZE_RANGE, sizes);

//Create the texture we want to use.

BBSTexture* t = [BBSTexture loadPoTTextureFromImageNamed:@”Particle1.png”];

//Enable our texture type (in this case, it must be GL_TEXTURE_2D)

glEnable([t type]);

//Bind the texture data.

glBindTexture([t type], [t data]);

//Enable blending and set for particles

glEnable(GL_BLEND);

glBlendFunc(GL_SRC_ALPHA, GL_ONE);

//Enable point sprites and set params for points.

glEnable(GL_POINT_SPRITE_ARB);

float quadratic[] =  { 1.0f, 0.0f, 0.01f };

glPointParameterfvARB( GL_POINT_DISTANCE_ATTENUATION_ARB, quadratic );

glPointParameterfARB( GL_POINT_FADE_THRESHOLD_SIZE_ARB, 60.0f );

//Tell it the max and min sizes we can use using our pre-filled array.

glPointParameterfARB( GL_POINT_SIZE_MIN_ARB, sizes[0] );

glPointParameterfARB( GL_POINT_SIZE_MAX_ARB, sizes[1] );

//Tell OGL to replace the coordinates upon drawing.

glTexEnvi(GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE);

//Set the size of the points.

glPointSize(32.0f);

//Turn off depth masking so particles in front will not occlude particles behind them.

glDepthMask(GL_FALSE);

//Save the current transform.

glPushMatrix();

//Begin drawing points.

glBegin(GL_POINTS);

//Iterate through our particles, setting the color and specifying their position.

for (Particle* p in particles)

{

glColor4f([[p color] magnitudeX], [[p color] magnitudeY] – [p lifespan], [[p color] magnitudeZ] – ([p lifespan] * 2), [[p color] magnitudeW]);

glVertex3f([p x], [p y], [p z]);

}

glEnd(); //Stop drawing points.

//Return to the previous matrix.

glPopMatrix();

 

You are free to use this code in any manner you see fit.  Have fun with it!

After about three hours of playtesting my ideas with my roommate, I have come to several conclusions.  Firstly, just because we are in college does not mean that we can do math in our heads quickly or accurately.  Secondly, I really like how Tank Wars turned out.  We ran through the first game, which took about 35 minutes, and found that several things were unbalanced and slow.  So here is a list of changes to the game rules:

  1. Players start by lining up their tanks along the closest row of grid spaces to them.  They may be placed in any order and at any orientation.
  2. Tanks may not fire through one another, friendly or otherwise.
  3. If two tanks are lined up in such a manner that a miss from one might hit the other, the attacker may make an attack roll to hit the other tank at a -2 penalty (this stacks with alignment penalties).
  4. On an initial attack roll of 17 or 18, 3 points of extra damage is dealt to the target as a critical hit.
  5. Power – This number is added to 1d6 for damage rolls on a successful hit.
  6. For slower play, Attack/Evasion ties are a miss.  For faster play, Attack/Evasion ties are a hit.
  7. Attacking no longer costs 1 movement.
  8. A turn is made up of a Movement phase, where all tank movements are performed, and an Attack phase, where tanks can no longer move and all attacks take place.

Also, the statistics for the tanks have been changed to better balance them, as such:

Light Tank:

  • Evasion – 13
  • Armor – 2
  • Integrity – 8
  • Speed – 3
  • Range – 4
  • Power – 0

Medium Tank

  • Evasion – 10
  • Armor – 3
  • Integrity – 12
  • Speed – 2
  • Range – 3
  • Power – 1

Heavy Tank

  • Evasion – 8
  • Armor – 3
  • Integrity – 17
  • Speed – 1
  • Range – 3
  • Power – 3

I’m really pleased with how this worked out.  It’s still a bit complex, but it’s simple enough to get rolling in just a few minutes.

I also playtested the other two ideas and they were still quite fun.  Especially 3D Tic-Tac-Toe.  My modifications made it just complex enough to generate some uniquely brilliant tactical moments that were very hard to repeat unintentionally.  However, as I said, I have decided to push forward with Tank Wars and hope to share it soon.

Whew, rough night. I won’t go into gory detail, but it wasn’t all a loss. I had a lot of time to think about my game ideas and I think I’ve made some serious progress. I’ve decided it will come down to the following three in order of preference:

  1. Tank Battles
  2. 3D Tic-Tac-Toe
  3. Categories

Here is the logic behind these:

Tank Battles will consist of a sheet of graph paper, 6 origami tanks (don’t ask, high school was REALLY boring), and stats for each tank. Both sides will start with one Heavy tank, one Medium tank, and one Light tank. All of these tanks will have statistics that determines their strengths and weaknesses as follows:

  • Evasion – The opponent must roll higher than this number to hit.
  • Armor – Damage is reduced by this amount upon a successful hit.
  • Integrity – The maximum damage a tank can take.
  • Speed – The number of grid spaces the tank can move in a turn.
  • Range – The maximum range in spaces the tank can attack.
  • Power – Number of d6’s rolled for damage on a successful hit.

At the beginning of the game, both players roll 1d6. The player with the highest result goes first, ties simply re-roll. Players take turns moving their tanks and attacking until all of one player’s tanks have been destroyed. Tanks may only move in straight lines, but they may stop a move to turn before moving again. Turning costs one movement but can be used to turn in any direction. An attack action also costs one movement.

To attack an enemy tank, the player must declare an attack. Next, a line-of-sight is determined. If the enemy tank is not in a cardinal direction (straight out from any adjacent square), the attack is made at a -1. A tank can only fire at other tanks in a 45 degree area from the direction it is already turned. Upon determining line-of-sight, the attacking player adds up their bonuses and penalties for the attack and rolls 3d6. After applying their modifiers, if the resulting number is higher than the defending tank’s Evasion score it is a hit. If a hit is scored, the attacker rolls a d6 for every point in the Power statistic for their attacking tank. This damage is then reduced by the defending tank’s Armor points. If the final result is equal to or less than zero, the defending tank takes no damage. Otherwise, the resulting damage is subtracted from the defending tank’s Integrity score. If the defending tank’s integrity score reaches zero or lower, it is destroyed.

The prelim stats on the tanks are as follows:

Light Tank

  • Evasion – 13
  • Armor – 2
  • Integrity – 8
  • Speed – 3
  • Range – 4
  • Power – 1

Medium Tank

  • Evasion – 10
  • Armor – 4
  • Integrity – 12
  • Speed – 2
  • Range – 4
  • Power – 1

Heavy Tank

  • Evasion – 8
  • Armor – 5
  • Integrity – 15
  • Speed – 1
  • Range – 6
  • Power – 2

Of course, these are subject to change but playtesting will determine how balanced they are. This is my favorite idea so far and the one I am most likely to pursue.

Next up is 3D Tic-tac-toe. Simple in concept, easy implementation, but not very original. Quite simply 3 Tic-tac-toe boards conceptually linked. The winner is the first to connect 3 of their tokens in a row. Introducing the other two grids significantly increases the complexity of the normal concept, making viable as a fun and evolving experience.

Finally, Categories. This concept is also quite simple. Players agree on a category of objects and roll a d6. The players then have ten times the die amount in seconds to name items on that category. Players take turns naming objects and the last player to name an object before time runs out receives a point. If the players run out of objects in the category before time runs out, the last player to name an object receives a point. The first player to 5 points wins.

Our first assignment for VA 306 is reasonably straightforward:

Create a board game that:

  1. Can be played in the span of 15 minutes
  2. Fits on a sheet of paper
  3. Is built for 2 players

I already have some ideas in motion.  They can be found here: https://kroucis.wordpress.com/2009/01/22/assignment-1-brainstorms/.  They are pretty abstract as of now.  Since they are simply the result of a brainstorming session, they have not been culled or fleshed out as of yet.  So, if these ideas are abstract and confusing to you don’t be worried, they’re supposed to be.

I started thinking on game ideas for the first assignment early on and came up with a few ideas off the bat.  I’m probably going to come up with a few more before moving toward prototyping.  Here are the ideas so far:

  1. Line game
  2. Tank battles
  3. Card battles (Can we use cards?)
  4. 3D Tic-Tac-Toe  (I like this one the most, but I would like a more original idea)
  5. Categories

More ideas on their way.  Just gotta…sleep.

The first day of class for VA 306 was eye opening.  Finally, after 5 semesters in college and 3 of those as a GDD/CS major we are moving into actual design.  It’s crazy, I know, but I had imagined this kind of class would have been introduced much earlier on.  But, I digress.  I am really looking forward to this class.  Seeing as I already have some game software up and more on the way, VA 306 should be VERY helpful in getting my portfolio ready to go as well as generating some test game ideas.  Professor Monnens, eat your heart out!