C#
This page showcases some of the C# projects I've worked on during my time at university, emphasizing various AI behaviours and movement techniques. Additionally, it highlights procedural content generation and the adept use of lists, dictionaries, and arrays for AI organization and management.
​
AI Steering Behaviours...
This video demonstrates fundamental AI steering behaviours, showcasing how agents dynamically navigate their environments using mathematical principles. The behaviours include seeking a target position, fleeing from threats, and random wandering, with variations for more advanced wandering techniques. The "arrival" behaviour allows agents to approach a target without overshooting.
​
The underlying math is crucial for movement calculations. For instance, when seeking a target, the desired velocity is determined by normalizing the vector from the agent's current position to the target and multiplying it by the agent's maximum speed. This gives a direction that is then adjusted by subtracting the current velocity, allowing the agent to smoothly approach the target.
​
Fleeing employs similar math, reversing the vector to calculate movement away from threats. Pursuit requires predictive calculations, where the agent forecasts the target's future position based on its current velocity and direction, allowing for effective interception.
Other behaviours, such as obstacle avoidance, involve assessing the positions of nearby obstacles to dynamically adjust the agent's path. These mathematical foundations enable agents to exhibit emergent behaviours, creating unpredictable and realistic interactions in the simulation.
Cooperative Arbitration...
This video showcases Cooperative Arbitration, demonstrating advanced simulation dynamics with a flock of dynamically spawning and removing chickens. It utilizes cohesion, alignment, and separation principles for realistic flock behaviour. Additionally, the implementation involves programming the chickens to be added to and removed from the list of flock members. You can dynamically change the spawn location by right-clicking, while the flock moves cohesively towards targeted points when you left-click. This highlights the skills I've acquired during my time at university in interactive simulation design and real-time behavioural control, showcasing innovative use of flocking algorithms in game development.
AI Pathfinding...
This video showcases an A* Pathfinding implementation in a tactical simulation where a team of purple soldiers pursues nearby enemies with strategic combat responses. The team’s leader uses A* to locate the nearest enemy, while other members follow using Cooperative Arbitration. If the leader is destroyed, a new leader is assigned to continue the hunt. Soldiers adjust their tactics based on enemy proximity, switching attack styles: melee for close range, shooting at medium distances, and rockets for long-range targets.
Incorporating a dynamic grid, the simulation factors in different terrain types that impact movement speed—soldiers move slowly in water, slightly faster in mud, and at normal speed on grass, with natural obstacles like trees affecting navigation. Rather than strictly avoiding difficult terrain, soldiers may still trudge through mud or cross rivers, reflecting realistic limitations in combat scenarios. Realistic behaviours, like shellshock and formation maintenance, further enrich the experience. This approach emphasizes optimal decision-making compared to other pathfinding methods, like BFS, DFS, and Dijkstra’s, which I explored in my course, showcasing my skills in adaptive AI and interactive pathfinding for game development.
Procedural Content Generation...
[More Details To Come!]
Post Processing...
This video showcases the integration of C# scripting for dynamic post-processing effects in Unity. Using Unity's Post Processing tools, I transformed my scene from greyscale to color by modifying the camera attached to the player. Simultaneously, I implemented a custom C# script to adjust the Saturation value of UI images on my canvas. This ensured a seamless transition from a greyscale cartoon world to a vibrant, colorful environment. This demonstration highlights my proficiency in utilizing C# for real-time visual effects synchronization, enhancing both visual appeal and user experience in game development.