Valorant 2D

View Project
Project Alpha Screenshot 1
Project Alpha Screenshot 1

About

This game is essentially a 2D version of Valorant, focused solely on Deathmatch and Team Deathmatch modes, with no character abilities included.

I started working on this project during the quarantine, mainly because I wanted something fun to play with my friends on a low-spec PC. I still update it whenever I get the time, and I’m planning to add more features in the future.

Project Alpha Screenshot 1
Project Alpha Screenshot 2
Project Alpha Screenshot 3
Project Alpha Screenshot 4
Project Alpha Screenshot 5
Project Alpha Screenshot 6
Project Alpha Screenshot 7
Project Alpha Screenshot 8

Features

Challenges

Field Of View

I wanted to implement a Field of View (FOV) effect to make the game more challenging and fun. While exploring ways to add FOV in Unity 2D, I came across a tutorial by Code Monkey titled Field of View Effect in Unity. It demonstrated how Unity's Render Features can be combined with custom runtime meshes and shaders to create a FOV effect. This method worked quite well, but I wasn’t satisfied with the performance and complexity of runtime mesh generation, so I started searching for a more optimal approach.

Later, I discovered that Unity's 2D Light could be used to simulate FOV by modifying its shader logic. This idea was inspired by another tutorial: Recreating Darkwood's Vision Effect in Unity.

FOV Effect

This solution was perfect for my use case, but at the time, I didn’t have a solid understanding of shaders.While pursuing my Master’s degree, I gained a deeper understanding of shader programming. With this new knowledge, I revisited the idea and implemented the FOV system using Unity 2D Lights. To my surprise, it turned out to be much simpler and more efficient than I initially expected.

Weapon's and Loadout

Implementing the weapon system and loadout was crucial to keep the project manageable and scalable for future updates, especially when adding more weapons.

To achieve this, I used Unity's Scriptable Objects in combination with the Prefab System. I created a WeaponData struct that holds all the necessary properties, such as weapon stats and prefab references.

A Scriptable Object contains an array of these weapon data structs, and the loadout system uses this data to instantiate weapons at runtime. This setup made it much easier to manage weapons and expand the system without needing to modify core gameplay code.

Weapon Data Weapon Data

Future Work

I continue to update this game whenever I get the time, and I’d love to add more content in the future.

Some of the features I’m planning to work on include: new maps, weapons, skins, characters, and additional game modes. I also aim to upgrade the networking framework to improve performance and ensure a smoother online experience.