Simon's profileSimons XNA Game PagePhotosBlogListsMore Tools Help

Blog


    October 18

    New Website

    I have constructed and published a new website for Zombies Ate My High-School.  I am attempting to create an information game page for those with questions about the game.  The site can be found here.

    As a side note, I plan on publishing a first release of the game this weekend.  It will be alpha, but it should have 1 working level.  From then on, creating the levels should be easy with the editor I created.  All these will be found on my website and codeplex where I maintain the source.
    October 02

    Zombie High Update

    It has been quite some time since I have updated this blog.  But, I haven't been slacking.  In fact, I have been hard at work implementing an editor for Zombies Ate My High-school.  The editor is now complete and will allow me to author levels faster and more consistent than before.

    Also, on the artist front, I have heard from a couple of interested artists.  First off, Shawn McGavin, is a modeler and will be constructing some of the in-game items such as lockers, clocks, spray cans, etc.  He's had a number of years experience using Maya.

    On the the character front, I have had a very interesting response back from Jason Ford.  While scanning Ziggy's site, he came across my request for an artist.  He liked the title, and went ahead and created a splash screen for the game.  The screen looks amazing, and I can't wait to see more from him!  A very talented artist indeed.

    I am creating a new album with screenshots from the editor and a shot of Jason's title splash screen.  Long live the zombies!
    August 29

    Updated Animation Class

    I have revamped the animation classes that were used in the game.  They are far more generic and more powerful.  The animation descriptions are read from an XML file instead of being hardcoded in the game.  Also, the textured quad is no longer responsible for managing the texture coordinates, that task is designated to a helper class.  All in all, these new classes will allow me to freely use them in other projects.  It was a painless transition, and the code is much cleaner.  I should have a complete game soon!
    Feel free to check out the current status of the project at codeplex.
    August 27

    Particle Effects Demo

    As promised, I have still been working on the particle effects.  To try out some ideas, I created a particle effects demo.  It's based off of the article given by Microsoft at the XNA Creators Club site.   I will be incorporating this into the game soon.  It's difficult finding time between finishing a basement programming...  I wish I had 48 hours in a day.
    August 17

    New Particle Effects Soon

    I have worked my way through the particle sample provided by Microsoft.  I must say, it was far easier than I thought.  In fact, it is really quite simple to understand.  I will be incorporating it into the game soon.  There is one consideration that I will have to take into account.  When the particle emitter is not in an allowed distance of the viewing frustrum, then I shouldn't update draw any of the items.  Of course, I will have to draw and update those emitters that are close enough where their particles could potentially be in view.
     
    Also, when the player gets close enough to an emitter, even it most likely won't be drawn, I will be updating the emitters particles so that when the emitter does enter the view frame, it won't look weird.  If I just start updating the emitter when in view, then particles will only be a short distance from the emitter and the image won't look authentic.
     
    Look to CodePlex for updates soon.
    August 09

    CodePlex Source Control

    I have successfully added Zombie High to CodePlex for the world viewing pleasure!
     
     
    Enjoy! 
    July 31

    Zombies Update!!

    I have completed another round of updates to the game.  A lot isn't noticeable, but there are some vast improvements behind the scenes.  First, I have implemented models and collision detection with them.  A players inventory is complete, and the HUD display showing what the player has picked up is also complete.
     
    There are some tweaks needed here and there, but I have a friend of mine (a really good artist) giving me some hints and tips on how to improve the games overall appeal.  For now, here are some new photos of the game. 
    July 25

    Zombie High

    Zombies Ate My High School is coming along really well.  I have made the transition to complete 3D with only minor problems encountered.  I have started writing Vertex and Pixel shaders for the game, and I must say, it's not that bad after all.  All those trigonometric calculations finally pay off! 
     
    I have incorporated DeleD (http://www.delgine.com) as my editor for the game.  Their file format is XML and it's quite easy to incorporate into the game thanks to the .NET framework.
     
    Anyways, I will be posting some more screenshots later. 

    Angry Video Game Nerd

    Recently I have been wathcing something really funny.  The Angry Video Game Nerd over on ScrewAttack hosted by GameTrailers.com
     
    Basically he reviews crappy games from the past, pointing out why they sucked so bad.  He's so hilarious.  Anyways, check him out at the following link.
     
    July 16

    Total ReDesign

    Well it has been quite some time since I have blogged.  I have completely gone and redesigned the game to be fully 3D.  The characters are really textured quads, and the world data is read in from a file created using a 3D editor.  The artwork is constantly being updated, and the game engine worked on (when I find the time).  I feel I am getting close to finishing this game and hopefully in the next couple of weeks it will be done and out there for people to play!
     
    When I get home tonight, I will post somemore screens.
    April 24

    Blur/Bloom Effect in 2D

    Check out this great article by Jamezila on ZiggyWare!  I threw it into my game and it works great!  Check it!


    April 22

    More Work on Zombie High

    Well I spent all day today working on the game.  The first level, and the alpha test is almost ready to be released.  What I threw in today will help me a great deal in pumping out the levels.  First, the whole level is described within an XML file.  It describes things such as, where the enemies are positioned, what background images should be used (and their associated information), where the trigger for the boss is, and the bosses spawning location.
     
    As for the boss, I did something special.  I made an interface called IScriptable and gave it some methods to control an objects movement.  Then, I created an interpreter for an XML file describing the bosses actions.  In the XML, it tells how the boss should move, how long for each action.  In essence, I created a small scripting language based off of the XML.
     
    I threw in some sound effects today as well.  Sounds for walking, attacking, and picking up items.  I also threw in animations, so now everything is animated (minus the boss attack sequence).
     
    I plan on finishing this up by this week so I can get some play testing done.
    April 19

    XML Serialization

    I player around with the XML serialization in C# today and discovered something great.  It's extremely easy to load an XML into a structure and then use the loaded values later on in the program.  I am including the example below.

    First we define our Class that will hold all the specific game values.


       public class Settings
       {
      #region Map Specific Values
      public String MapName;
      public int MapSize;
             #endregion

      #region Player Information
      public struct PlayerInfo
      {
         public int X;
         public int Y;

         public PlayerInfo(int x, int y)
         {
          this.X = x;
          this.Y = y;
         }
      }

      //Some default values
      public PlayerInfo[] Players = new PlayerInfo[]
      {
         new PlayerInfo(0,0),
         new PlayerInfo(100,100),
      };
      #endregion

      /// <summary>
      /// Loads the Settings structure with the values from XML.
      /// </summary>
      /// <param name="filename">Path to the XML file.</param>
      /// <returns></returns>
      public static Settings Load(String filename)
      {
         Stream stream = File.OpenRead(filename);
         XmlSerializer serializer = new XmlSerializer(typeof(Settings));
         return (Settings)serializer.Deserialize(stream);
      }
       }

    This Settings Class must mirror the structure in the XML file.  A static method is provided to load the XML file into the class object.  Below is the XML file used.  It is quite easy to see the correlation between the class and the XML.  Notice that the ROOT node of the XML document has to match the name of the Class to hold the values.  Each Element in the XML also corresponds to either a structure or a field (it's fairly easy to see this)

    <?xml version="1.0" encoding="utf-8" ?>
    <Settings>
      <MapName>Map 1</MapName>
      <MapSize>1024</MapSize>
      <Players>
         <PlayerInfo>
            <X>50</X>
            <Y>50</Y>
         </PlayerInfo>
         <PlayerInfo>
           <X>150</X>
           <Y>150</Y>
         </PlayerInfo>
         <PlayerInfo>
            <X>250</X>
            <Y>250</Y>
         </PlayerInfo>
      </Players>
    </Settings>


    As you can see it's quite easy to see the similarities in the structures.  In order to use this XML file and load it into the Settings class, we simply pass in an instantiated Settings Class object and the path to the XML file.  We are then free to print or do whatever we want with the loaded values.  Below is the example I used to print out the values read from the file.

       public class Reader
       {
      public Reader()
      {
      }

      public void Read(String filename)
      {

         Settings settings = Settings.Load(filename);

         Console.WriteLine("Map Name: " + settings.MapName);
         Console.WriteLine("Map Size: " + settings.MapSize);

         foreach (Settings.PlayerInfo playerinfo in settings.Players)
         {
            Console.WriteLine("Player Info X: " + playerinfo.X + " Y: " + playerinfo.Y);
         }

         Console.ReadKey();

      }
       }


    Should be useful if you want to modify your game without recompiling!
    April 18

    Updates to Zombie High

    I have completed more work on Zombie High.  The game is coming along quite well and I am happy to report that I will be entering Alpha testing soon.  Unfortunately, my artist Louis has more pressing matters in his personal life and as such cannot dedicate time to the game.  So, I have been doing my own artwork to test things out.  The images I will be posting with this blog.
     
    I plan on implementing some interesting ideas into the game.  For example, I will use XML to describe the level details such as enemy positions, object positions, level name, and the background images.  Also, in that XML file, I will be able to describe what boss XML file to use for the level.  The boss XML file will describe the bosses script sequence when first introduced (almost like a minor scripting language).
     
    I have also thought about implementing a minor scripting language as part of the engine design, but don't know if I will be able to get that done before the dream-build-play contest is over.  This may be a possible future enhancement.
     
    Until then, enjoy the images.
    April 04

    Visual Studio Shortcuts

    Cryovat over on the creators club XNA forums posted a very useful link!  Here is a PDF in colour and greyscale for the Visual Studio shortcuts.  Very useful.
     
    April 02

    Zombie State Diagram

    I did some more work on the Zombies Ate My Highschool game this past weekend.  I am now ready to implement the AI.  The thought process of this beast is really simplistic, but should give an overall hunted feeling to the game play.

    There are really only two modes where the player will be threatened.  They are when the Zombie is 'Hunting' the player, or when the Zombie is 'Attacking' the player.  In either case, the Zombie will not rest until the player is dead or vice-versa.
    March 29

    Some UML Design

    I took some time this morning to display the inheritance model I will be using for implementing the player and enemy objects.  Basically I will have a base player object will define some generic properties for the a moveable character in the game.  These will include properties like velocity, position and direction, etc.
     
    A common Enemy class is then derived from that base class to provide yet more functionality, such as AI and the ability to react to the environment.
     
    Every enemy type will then be derived from that common Enemy class to define their own unique attributes.
    March 28

    Test Character Image

    This is the test image that Louis sent me for the main character in the game.
     
    Looks pretty good!
     
     

    Long time no post....

    It has been quite some time since I have posted here.  I haven't been slacking, quite the opposite in fact.  I have been hard at work on the Zombies At My Highschool game.  Louis Ferina has done some art work and I am continuing with the coding aspect of the game in between real life and work.
     
    The physics aspect of the game has gone through a number of iterations.  First off, I tried to do simple collision detection, but that didn't quite pan out.  Next, I took a peek at the inner workings of the Farseer Physics engine and modified my own 3D simple collision detection (mind you there were no kinematics involved).  This worked well, but began to create complexity when there didn't need to be.  Finally, I adapted the 2D tile based collision detection system into the game, and this works as planned.  I don't think I will be tinkering with the physics aspect of the game any further as it keeps putting me behind on my schedule.
     
    The rest of the engine is going well though.  Objects, players and a scene graph were added as well as a game state manager.  Further screenshots to come.
     
    I have posted a link to the 2D tile based collision detection technique I am using in my engine.
    February 27

    The Survivalist

    Announcing a new project: The Survivalist.  I would like to welcome Louis Ferina to the team.  Lou is going to be doing the artwork for the project.  You can check out his site here.  Lou is a professional artist looking to get into the gaming scene.  His work is high quality and should take the game to the next level.
     
    Over the past while we have been hashing out a design document, and I am happy to include some preliminary design drawings for your viewing pleasure (they can be found below).
     
    The game involves a student, zombies and a whole lot of carnage.  I will continue to post on our progress, and later, I will put up the completed design document.