Week 02 - Flynn


Hello my name is Flynn and I am one of the programmers on this project. A lot has been done in the past two weeks so lets break it down into chunks. I did three main categories of programming: Player, UI, and Backend (or Managers).

Player

  • Movement
  • Primitive Shooting
  • Health

Players now have the ability to move. We have simple WASD movement + sprint and jump with mouse look, very standard first person player controller.  In addition, players have primitive shooting. Bullets spawn from the middle of the camera and continue until it hits something or until it's lifespan runs out. If a bullet runs into an enemy it does damage. I say primitive shooting because it needs to later be synced up to the player animations with the gun, but it works functionally right now. Finally, the player also has health, and can be damaged by enemies (given the enemies have the functionality to damage the player).

UI

  • Main Menu
  • Laptop
  • RexHunt Main Menu, HUD, Pause

Our main menu is set up, with pretty minimalistic UI. The buttons are all connected (Settings panel to be set up later) with Play sending you straight into the apartment scene.

Then we have our laptop scene. Included is a Task Bar (Start button and Real Time Clock), Start Menu with navigation to settings, title, and fast quit out of the game, and finally we have our shortcuts to our mini games, RexHunt and Rogue Asphalt: Blazing Pursuit! All buttons are functional (minus RABP and Settings) and clicking on the desktop hides the start menu.

Finally we have RexHunt, which is fully fleshed out with a Main Menu, a HUD, and a pause menu.

The mini-map works by using a second camera to render an image of the map scaled up to the map size placed underneath the map. The camera (and a sphere parented under it) follows the X and Z position of the player to move along the map. There is also a camera rendering only the compass and the compass's rotation matches the negative of the player's rotation so it always points to the north. Both of these are rendered to a render texture and displayed on the canvas. Because these cameras only render the "UI" layer, they aren't affected by the fog.

Backend

  • Scene MNR
  • Input MNR
  • Player MNR
  • Bullet MNR

Our team has decided to utilize unity's additive loading system, which requires a lot of upfront programming but bears a lot of benefits. For one our player is never unloaded so we don't have to load in preferences between scene loads. We can use scenes as if they're empty levels and swap them in and out while keeping our primary scene, System, loaded in. System carries all of our important data and our global manager scripts. Such as our scene manager. SceneMNR is one of our primary ways we support our additive loading, as it unloads all scenes that aren't System and loads in any requested scenes, making the appropriate checks before and after loading. Because our player is never unloaded, we have to control when player input is allowed and which input maps are enabled after the load. SceneMNR works in tandem with our InputMNR and our PlayerMNR, which manages input maps and player states. Scripts that require input reference the InputMNR for the Input Asset to subscribe to, so when the maps are swapped, all scripts are affected. Lastly, the BulletMNR acts as our object pooler for our bullets spawned by player shooting. This keeps performance under control when spawning a ton of bullets very quickly.

This was a very eventful two weeks, and I suspect it will continue to be eventful in the next 8. Excited to see what comes next.

Leave a comment

Log in with itch.io to leave a comment.