Playstation4 Development! - Dodgeball

In my final semester before receiving a degree in Game Design & Development, I am fortunate enough to work with some Playstation 4 dev kits. I am excited for a couple reasons. Firstly, Playstation4 dev kits! I mean really, it is just cool to have VIP access to a secretive room filled with these beastly machines. On a more serious note, I have been dying to practice C++ game programming, since I have been coddled by Unity's engine, and this course has given me the tools to really dig deep and practice my C++ programming finesse before graduation.

Dodgeball was our first main project. I developed it with one other classmate. The requirements for this one were to create a game with menus, physics, and some lose condition. Simple as it may seem, we did not have the luxury of Googling our worries away. Since Sony prefers to keep things secretive, there are next to no online resources for Playstation 4 development. So the process was left up to our willingness to read documentation provided by Sony about their API. 

We used one of Sony's  example projects to get an idea of where to start, and began programming our own classes and systems from there. 

The point of the game is to see who among the players can survive the longest. Each time a ball hits a player, they grow in size. The player can grow in size twice, and the third time they are hit they will pop and die. Overtime, balls are added to the game to increase difficulty. As balls bounce around and hit each other, momentum is transferred to the balls adding or removing from their velocities in a semi-unpredictable way. If a ball gets close enough to the player, time will slow mildly to give the player an extra split second to react.

We are going to continue working on this game for our next deliverable. I am looking forward to posting more progress on this as we continue development!

I contributed the following items to this project:

  • User Management
    • -Handling multiple users in the game at once.
  • Controller Input
    • -Flashing the controller light bar.
    • -Vibrating the controller on certain collision events.
    • -Moving the player with the left and right analog sticks.
  • Ball (enemy) movement
    • -Balls bouncing on the boundaries of the screen and off of other balls.
  • Particle System
    • -Sprite manipulaton
    • -Various shaped emitters (Circle, Cone, Ring, Point)
    • -Various emission styles (Directional, Scatter)
    • -Various emission options (Gravity, Color Over Time, Size Over Time, Velocity Over Time)
  • Menu System
    • -Management of all sprites on a page
    • -Page state management
    • -Page fade transitions
  • Art
    • -Player, Enemies, Menus, Splash Screen, Particles

My teammate handled:

  • Game State Management
    • -Splash, Title, Play, Pause, Game Over States
  • Audio Management
    • -Loading sound and music files
    • -Playing, pausing, and looping music 
  • Time Management
    • -Tracking delta time, FPS, and total elapsed running time
    • -Time scale for slow motion, fast-forward or reverse effects
  • Sprite Class
    • -Rendering image files to the screen
    • -Scaling sprites