Rookie Awards 2024 - Open for Entries!
Mikaela Carino | Game Programming C++ | Unreal Engine
Share  

Mikaela Carino | Game Programming C++ | Unreal Engine

Mikaela Carino
by mikellykels on 16 May 2023 for Rookie Awards 2023

Leveraging C++ & Unreal Engine, Steampunk RPG demonstrates character interactions, attack & inventory systems, HUD, and AI enemies. Utilizing pre-existing assets, I've honed my programming acumen, enhancing my game development insights. Tantrumn further showcases my C++ proficiency, extending CG Spectrum coursework.

19 1753 0
Round of applause for our sponsors

Steampunk-themed RPG

In April 2023, while concurrently enrolled in the Game Programming course at CG Spectrum, I launched an ambitious project: the creation of a steampunk-themed RPG. My dual objectives were to craft an engaging game and simultaneously expand my command of the Unreal Engine and C++ programming.

As the exclusive contributor to the gameplay programming, I took on comprehensive responsibilities. These encompassed the development of a myriad of elements including main and enemy character programming, an attack system, an equipment system, player statistics, in-game interactions, AI, and UI.

In tandem with these pivotal programming components, I broadened my skills into the realms of design and integration. I devised an enthralling level and an intuitive UI, and then meticulously interwove the game's animations and sound effects. This meticulous blending resulted in a cohesive and immersive gaming experience that effectively showcases my growing skills and knowledge acquired during my studies at CG Spectrum.

Gameplay

Process

Connect character with animations

The first part of my process was to setup the main character, and add an animation blueprint to connect some basic animations such as idle, walk, sprint, and jump.

Initial character and player controller setup gist

Interaction, basic attack, HUD, sounds

Next, I introduced an interaction interface system. This was accomplished by utilizing a linetrace technique to detect potential pickup actors within the game environment, further complemented by a prompt advising players to press the "E" key to engage with these items.

To enhance the gameplay experience, I designed a heads-up display (HUD) that incorporated a health bar, a stamina bar, an experience bar, and a visible level indicator. The stamina bar depletes during sprinting actions, adding a realistic touch. For the purpose of testing, the health and experience bars currently decrease or increase upon pressing a specific key. To celebrate player progression, a distinct level-up sound has been integrated.

Immersive elements like footstep sounds were meticulously added to further enrich the gaming experience. Lastly, to portray the severity of character demise, I incorporated a specific death animation and sound, amplifying the realistic and high-stakes nature of the game.

Gist of code at this point:

Inventory system, attack combo, AI

Continuing the development, I incorporated an attack system that featured an attack combo mechanism, leveraging a spheretrace method to precisely identify when an attack successfully made contact with an enemy.

In order to infuse the game with greater challenge and unpredictability, I created an AI enemy character. This character was programmed to patrol its environment and, if the main character came into sight, to initiate a pursuit.

To lend the enemy character more depth and dynamism, I integrated basic animations such as idle and walk movements. I further enhanced the immersive gaming experience by embedding animation montages for hit reactions and character demise, all accompanied by the respective sounds for footsteps and death.

To provide a strategic element to the combat experience, the enemy character was equipped with an HP bar, giving players a visual gauge of their progress during battles.

Finally, in a bid to offer players more control and customization over their gameplay, I implemented an Inventory/Equipment system. This feature allows players to view their current items in the inventory and equip their character as they see fit, adding another layer of strategy and personalization to the game.

Inventory UI

Inventory system, attack system, and enemy AI gist:

Weapons gist:

Level design

Ultimately, I channeled my efforts into integrating the gameplay elements I had developed thus far into an actual level, utilizing the DieselPunk kit from KitBash3D. My goal was to breathe life into these characters by placing them in a contextual environment, enabling me to better envision their interaction within the game world. Consequently, I assembled a preliminary level to amalgamate the components I had created up to this point.

While there's still a considerable amount of content to incorporate and numerous refinements to be made, the progress I have achieved so far has been an enlightening journey, rich with learning experiences. I look forward to building upon this foundation and further evolving the project in the coming stages.

Credits for the assets in the game:

- DieselPunk (buildings/props/environment): KitBash3D

- Steampunk character collection: Crazy Vertex on UE Marketplace

- Sounds and music: Various from freesound

- Icons: KatGrabowska on UE Marketplace and Piontek on UE Marketplace

- Icon generator: AleeZL on UE Marketplace

Steampunk RPG GitHub Repo

Repo with current code can be found here.

Tantrumn

This project materialized over the span of 12 intensive weeks at CG Spectrum, as part of the Game Programming course. We delved into a plethora of topics, encompassing the addition of a throw feature, designing a game loop, an introduction to AI, subsequent expansion on AI, understanding interfaces and data tables, incorporating multiplayer functionality, online play, and further AI implementation.

While the curriculum provided foundational topics, I took the initiative to explore beyond the prescribed boundaries. I customized the existing codebase to accommodate my additional features, enabling a more tailored and advanced understanding of game programming.

Playground

Initially, I developed a "playground" - a controlled environment for testing newly implemented features and assessing the foundational mechanics such as sprinting, jumping, and crouching. This space allowed me to experiment with character capabilities, such as the distance and height achievable with a jump or the variety of angles at which the character can maneuver.

Supplementing the coursework, I integrated an interaction system that enabled the character to engage with various objects within the game. An intuitive interaction interface was developed that displayed an "E" prompt to guide players towards potential interactions.

To further enrich the gameplay, I introduced a projectile component to my character. A specialized testing area was established to observe interactions with objects of varying weights, enabling me to fine-tune the projectile dynamics based on these outcomes.

Pause and Resume Menu/Functionality

A component of the coursework involved integrating a game menu that would appear upon completion of a level. I sought to enhance this feature by including a Pause menu with an additional Resume option. In the context of a multiplayer split-screen setting, this menu is designed to only manifest for the player who activated it. While the game would pause for all participants, the power to resume the game is exclusively given to the initiating player, further enhancing the strategic and cooperative aspects of the gameplay experience.

Pause and Resume gist:

Power-ups

Also as a component of the coursework, we developed power-ups in tandem with the throw feature. By default, if a player threw a ball at another character, it would momentarily stun the latter. However, if the player chose to use the ball on themselves, they would receive a beneficial buff.

While the course outline specified the integration of a sprint buff, I ventured beyond these parameters and introduced a jump and throw buff. The jump buff significantly enhanced the player's jumping height, whereas the throw buff augmented the ball's speed when thrown.

To augment user interaction, I implemented a UI that displayed the name of the currently equipped ball. When the player used the ball on themselves, the UI would then show the name of the corresponding buff for its active duration, adding a layer of strategy and immersion to the gameplay.

Power-ups gist:

Power-ups UI gist:

Split Screen Gameplay

Here's a gameplay showcase on a straightforward map, demonstrating the engaging dynamics of the split-screen multiplayer mode. Players can engage in a thrilling race to the finish line, vying for the title of the fastest, adding a competitive element to the game.

Race vs. AI Gameplay

Here's an additional gameplay demonstration featuring the race map, but in this instance, the player is pitted against AI. This offers a different layer of challenge, presenting the thrill of racing against an AI opponent.

Credits for the assets in the game:

- All assets from: Unreal Learning Kit on UE Marketplace

Tantrumn GitHub Repo

Repo with current code can be found here.


Comments (0)

This project doesn't have any comments yet.