About the project
In this project I worked with a large team in an office. We went here 3 days a week. I can't provide a github link because this project is private and still in development.
I've worked on various systems in the game. During the sprints there was a lot of time to help each other.
I've learned a lot about code structures and about the workflow in a game studio. For example, I have planned sprints with the team. Together we also gave a time indication to user stories with story points.
In this project I worked on the parts below.
Bounce System
The bounce system is responsible for bouncing on collisions in the game. The system calculates which way the object should bounce. We use a reflect calculation based on the velocity and normal vector. In the bounce settings script it is possible to set how strong objects should bounce.
Data Oriented Technology Stack
I've done extensive research on Unity DOTS. In this new system a lot of performance can be gained by using only data on game objects and the possibility of multithreading. It also is easy to see how much performance specific systems cost. We researched which systems in the game we can convert to DOTS. As an example we have converted the bullets in the game. We also researched how we can keep our current event workflow with this new technology.
Water Shader
I've worked on a 2.5D water shader. The mesh is generated with a script. While creating the shader, we encountered many complex issues, such as the duplication of rendering waves on top of each other. We were able to solve most of this issue with a zwrite. Another challenge was that a line had to be rendered in front of the water. We solved this by defining the position of the line with the vertex color using the mesh. Furthermore, the water shader is well adjustable with many properties to change.
360 Aiming System
With the 360 aiming system it is possible to shoot around in 360 degrees. When the player is near a target, the direction is fixed on the target, so that the player can hit the target more easily. For this I have converted an existing target selector system and added extras, such as an adjustable angle in which the target should be locked. The gray block indicates which way the player is aiming. I use this block because the 3D model of the player was not ready to aim with the arm.
Custom Force Property Drawer
In this project we use our own force system. To make it easier for other developers to understand what properties they can change, I've made a custom property drawer for the force that can hide configurable fields if they can't be used in the combination of settings. For example, if the type is continuous then the duration will no longer be adjustable. In the future, types and modifiers will be explained in the bottom of the window. In addition, this custom property drawer is easy to expand with new combinations or explanation text.