Coney3D
Role: Gameplay Programmer
Team Size: 4
Time Frame: 8 Weeks
Engine: Unreal Engine (C++, Blueprint)
Github: TeamAbble/Coney3D
Role: Gameplay Programmer
Team Size: 4
Time Frame: 8 Weeks
Engine: Unreal Engine (C++, Blueprint)
Github: TeamAbble/Coney3D
Coney 3D is a 3D First and Third Person Shooter developed in Unreal. The game began development in September 2024 as a graded assignment at De Montfort University.
The game was a local, split-screen multiplayer game reminiscent of early FPS games such as Halo and Goldeneye 007.
The game was well-received by the University
Coney 3D was my first major project using C++ with Unreal, developed with my university team, Balla Games. The project introduced me to C++ and Blueprint Visual Scripting, teaching me where each method is most applicable. I familiarized myself with the Unreal enhanced input system, including binding actions to multiple players within a scene.
The game was not only my first experience with Unreal, it was also my first multiplayer game, and as such, there was a lot to learn about player possession, and preventing conflicts between the players in regards to control schemes.
Initially the game was designed to use Steam Networked Multiplayer, however due to time constraints surrounding testing, we opted to remove this feature in favour of local multiplayer. However, much of the skills I'd learned for the networked game were transferrable to other projects as well as the local multiplayer present in this project.
The character controller I developed for this game made use of the Unreal Enhanced Input System. This allowed me to bind actions to appropriate functions using delegates, as well as allowing for quick remapping of inputs, and controller support.
As the game was developed for multiplayer, there were extra considerations that were required for the controller. For instance, each player required their own instance of the character controller, and there should be no conflicts between the two. This required me to assign specific devices to specific player controller instances in the gamemode script.
Each player had access to a wide range of abilities:
Walk
Sprint
Jump
Shoot
Dash
Reload
I was responsible for scripting the movement abilities, whilst another developer was responsible for weapon scripting.
I was also tasked with scripting death and respawning, The key problem here was replicating the death for both players, for example, if a player despawned, that would need to replicate for the other player's viewport.
I used Unreal's Blueprint Visual Scripting to program the UI. I chose to use Blueprints as the Menus of the game aren't heavy on resources like the gameplay scene, and so they would require less of the optimization that C++ offers. As such, I chose to use Blueprints as a tool to quickly implement the UI so I could dedicate more time to the gameplay.
I did however, have to integrate C++ and blueprints together when scripting the HUD, as most of the data necessary was continually changing within the player's C++ script. This introduced me to UPROPERTYs and UFUNCTIONs, including appropriate access modifiers.
I was responsible for scripting our C++ Gamemode. This included several features such as player scoring, round time and Game outcomes. This involved transporting information from each player to the gamemode, another consideration that was addressed when developing the game for multiplayer.