Game Programmer - Technical Game Designer

Elemental Encounters is an elemental themed turn-based strategy game published on the Windows platform.
Each level is presented in a top-down camera perspective, with a goal to defeat all enemies.
Elemental Encounters combines the mechanics of rock-paper-scissors with chess, with elements having dynamics with each other (e.g. Water counters Fire, Fire counters Wind, so on etc.).
Contributed to All Programming Areas, and Technical Art Tasks such as (VFX, Animation, Post Processing, and Shaders). Implemented a system that allows game designers to create winding paths on the grid, not just squares. Creating an AI Shortest Path Movement Logic Without using Navmesh
After hearing about the significant improvement achieved by using C++ over Blueprint at some point, I decided to use Blueprint for prototyping. Later on, the low-level programming would be converted to C++, while taking the opportunity to improve upon a previous project. In the end, I noticed a considerable performance increase. Unfortunately, towards the project's conclusion, we encountered issues with using Git LFS together with C++. Due to the tight development schedule, we made the decision to revert the C++ code back to Blueprint.In this project, I learned to combine the use of both C++ and blueprints in Unreal Engine. and i also learned about managing Git LFS.
Specifications
- 7 Days (8h/day)
- Developed in Unreal Engine
- Strategy Game
- 3D Environment
- Grid System
Project Goals
- Creating a modular grid system for game designers, including a grid that can twist and turn.
- Learning C++ and Blueprint Combination to Optimize the Code
- Completing the game according to the target game design document on time for submission to a competition.
Because the art will be done later, and we don't know the spacing between the grids yet, so we can't generate their vector locations. On the other hand, we want the grid to be bendable and to store the characters occupying it, so we decided to create a class for each grid.

Because Unreal's TArray does not support equal to or greater than a 2D array, I initially had to combine the X and Y parameters on Tiles into a 1D array using that formula. The Grid System is used by placing the "Grid" class in the world so that the Grid Manager can easily obtain information from references, such as the grid's location, whether it is occupied or not, whether there is a grid to its left, and many other things automatically.

So, we opted to develop the function in C++ and invoke it within the blueprint in order to decrease the response time.


This allows the Level Designer to easily specify the tile size, assign the grid class to each grid, and set their X and Y positions without the need for manual referencing one by one.



Here is the blueprint for the enemy AI. It includes checking the grid to be targeted for the presence of other characters, checking the player's position, and the logic for surrounding the player.


With just these parameters, the Enemy will dynamically transform at the start of the game according to the specified parameters (Enemy type parameter). This includes AnimBP, SkeletalMesh, and other stats.