Download this game here.

The Incredible Game 11
(Now with Particles!)

Controls:

  • Esc – Exit.
  • Shift – Toggle object’s geometry.
  • Backspace – Toggle between controlled camera/object.
  • Arrow Keys – Move camera/object.
  1. Goals
    • For this second sprint, I was looking to finish off the particle system’s movement and develop a human-readable file format for my users to create custom emitters.
    • To prepare for different types of emitters, I have been researching different things I can do to increase the use cases of this system.
  2. Changes & Additions
    • Removed the emitterSize variable from my cEmitter class.
      • This simplifies the interface as well as the , since my particles won’t be colliding with anything else in the scene.
    • Removed the identifiers array from the cEmitter class.
      • This lessens the amount of data saver per particle, and although it will reduce the ability for gameplay engineers to keep track of an individual particle, this will simplify calculations.
    • Added PickUnitSpherePoint to cEmitter class.
      • Uniformly distributes on the unit sphere for velocity and acceleration, and returns an sVector of length one.
      • Removed cEmitter.
        • Replaced it with cEmitterPoint, an emitter that’s source is a singular point in space.
        • Replaced it with cEmitterPlane, an emitter that’s source is a defined bounds within the xy plane.
      • Added IEmitter abstract class.
        • This will allow for different types of emitters to be used.
        • Holds minCount, maxCount, particleLifetime, minVel, maxVel, minAcc, maxAcc, minRot, maxRot, body, and transforms as public members of the interface.
        • Has Predict and ParticleCount as public functions.
        • Has Update as a virtual function.
          • This allows the particles to be managed by the type of particle system that is being run.
      • Added EmitterBuilder project to Tools.
        • This project will create the binary files to use in the game.
  3. How I Did It
    • By creating an interface for the emitter class, I hope to provide the users of this system a better range of uses.
      • Later into the process, I have been considering if it would be easier to go back to one class that can handle different cases, perhaps according to an enum.
        • This would make the binary file processing easier and avoid confusion about what types to use.
    • Looking at what might be crowding my class, I hope to make it easier to use in the future.
  4. Up Next
    1. Develop binary particle files and reading ability.
    2. Develop human-readable file format.
    3. Add more functionality.
  5. Future Plans
    1. Simplify the emitter further, to make it easier for the game creators and make it better for usage.
Demonstrating Particles Being Drawn
The IEmitter Abstract Interface
The cPointEmitter Class
The cPlaneEmitter Class
(in progress)