Interim Report

Progress

Functional Minimum

  • Simple level without any obstacles
  • Players can move, use their weapons
  • Only one type of enemy constantly spawns and attacks (no waves)
  • Only one weapon, no upgrades
  • Enemies have only simple ai

Low Target

  • Multiple types of enemies
  • Level with obstacles(cubicle, watercooler, etc)
  • Enemies appear in bigger and bigger waves
  • Random events
  • Simple sound effects, background music
  • More advanced horde-ai

Conclusion:

Level: Levels are loaded from XML-files. Static objects are already supported, but dynamic objects like destroyable water-coolers aren't.

Enemies: The only enemy type yet is simply moving towards the player and cannot attack.

Weapons: Only one weapon (single shot).

So the functional minimum has been barely met, but we still have some things to do to reach low target. The main reasons for this delay are described below.

Implementation Problems

Collision Detection

We ran into problems with collision detection and spent a reasonable amount of time with it:

At first we used the BoundingSheres that are automatically created by XNA's content pipeline. However, this heavily depends on the model and the degree the model is segmented into individual meshes. We used those Spheres to create a two-layer bounding volume hierarchy, but soon discarded it because it turned out to be too coarse for collision detecytion. In a next step we implemented a Boundding Volume Hierarchy from scratch which makes use of spheres, AABBs and OBBs. This approach was later discarded in favor of BEPUphysics internal collision detection, which is far more advanced that anything else we had a look at before. This even has the advantage that we can enable physics later if we feel that we need it.

As good as BEPUphysics may be, it's documentation is not very comprehensive, it took a reasonable amount of time to integrate is in a way we could use it for our purposes.

Modelling/Animation

Most of us didn't have much experience with modelling. We still aren't up to the level where we can model animated sophisticated humanoid models. Although we made progress with learning Blender, we weren't able to create our final models yet. However, we expect that we are able to do this very shortly.

A huge problem was also the importing from Blender. We now have the import for FBX files with multiple animations set up. It works pretty well with the newest beta of Blender, but the regular Blender had too many glitches with animations to get it working.

But we also realized, that we need a lot more work for animations. For example we want to combine different animations for walking while shooting.

Design

Particles

For the different types of projectiles, we are using the Particle Library DPSF.

Models, Animation

We use the SkinnedModel pipeline from the example by Microsoft.

Level Import

The XML files are parsed directly into a data-structure by the content processor. This is not very flexible, but requires little coding.

Physics

Collision Detection is handled by the BEPU Physics engine.
I Attachment History Action SizeSorted ascending Date Who Comment
PNGpng ClassDiagram1.png r1 manage 165.5 K 2011-04-11 - 17:54 MichaelBrunoMorandi UML
PNGpng OO2.png r1 manage 1182.2 K 2011-04-11 - 16:56 MichaelBrunoMorandi  
PNGpng OO3.png r1 manage 1240.4 K 2011-04-11 - 16:56 MichaelBrunoMorandi  
PNGpng OO1.png r1 manage 1243.2 K 2011-04-11 - 16:56 MichaelBrunoMorandi  

Page URL: https://twiki.graphics.ethz.ch/bin/view/GameClass/Team7InterimReport
2025-08-03
© 2025 Eidgenössische Technische Hochschule Zürich