Download this game here.

Incredible Game 10


  • Esc – Exit.
  • Shift – Toggle object’s geometry.
  • Backspace – Toggle between controlled camera/object.
  • Arrow Keys – Move camera/object.
  1. Goals
    • For this first sprint, I wanted to lay the groundwork for my system and do any designs that I would use for the rest of the project, I determined a few different things that I would strive for in order to create this system.
      • By keeping the particle system as general as possible I hope to make it more usable to others, I decided to not include any visual aspects, and instead focus on the movement.
      • I have decided to make the system depend on sRigidBodyState for individual particle physics, as it is already built into the game engine, and will allow users to specify anything they might want.
        • This might have an impact on performance, so I am open to changing it to a custom implementation in the future.
        • It will also be something that others are accustomed to using, and it seems to be a standard of the engine.
  2. Changes & Additions
    • Added Particles project to Engine.
      • Initialize – starts the particle system.
      • Cleanup – cleans up all resources belonging to the particle system.
      • emitters – list of all cEmitter.
    • Added cEmitter class to Particles project.
      • [minParticles, maxParticles] – range of particles that can exist on this emitter at any time.
      • emitterSize – radius particles can be emitted from.
      • [minVel, maxVel] – possible velocity range of particles.
      • [minAcc, maxAcc] – possible acceleration range of particles.
      • [minRot, maxRot] – possible angular speed range of particles.
      • bodysRigidBodyState center of this emitter.
      • transformscMatrix_transformation[] for emitter’s owned particles.
      • identifiersuint16_t[] that holds each particle’s unique identification.
      • Size – number of particles currently being managed by this emitter.
      • Predict – predicts where the points will be in a certain amount of time.
      • Update – moves the points to their position after a certain amount of time has passed.
      • Struct Particle that is only accessible to cEmitter.
        • identifieruint16_t identification for this particle.
        • sRigidBodyState – position information of this particle.
  3. How I Did It
    • By spending more time than usual plotting how to setup the system, I was able to get right into implementing once I sat down at the computer.
    • Aligning my coding practices with the standards set by the rest of the engine, I am able to determine what course of actions I should take for different design branches.
  4. Up Next
    1. Fully implement particle movement.
    2. Show demo of particle emitter.
    3. Develop human-readable file format.
  5. Future Plans
    1. Create ParticleBuilder project.
    2. Develop binary particle files and reading ability.
    3. Add more functionality.
  6. Credits
    • John-Paul Ownby – Had a productive correspondence about how to handle the Particle system, something I have never had experience with before.
cEmitter Flexible Constructor
Singular Point Particle Struct (Hidden to User)
Familiar Interface for Simulation Time