top of page

NECROCORE (PROGRAMMING)

NECROCORE (Programming)

GAME INFO

  • Genre: First Person Shooter

  • Engine: Unreal Engine (Blueprints)

  • Team Size: 1 - 2

  • Development Time: 5 Months

CONTRIBUTIONS

  • Player controller

  • Gun & Ability System

  • Enemy AI

  • Game feel and polish

PROGRAMMING GOALS

  • Create a system for creating and managing all the weapons in the game.

  • Create a variety of different AI with unique behaviors between each.

  • Polish the game by providing more game feel and feedback.

Screenshot (1).png
Screenshot (14).png

PLAYER CONTROLLER

  • Creating the player controller was amongst the easiest aspects of development. From the get go I knew what I wanted the player controller to do and because Unreal Engine's pawns come with player movement I already had a strong base to start off with.

  • I only had to make a couple personal adjustments such as altering the player's speed, acceleration, friction, and air control as well as giving the player a direction dash.

  • Adding the dash was probably the trickiest aspect of this since it was based on applying force to the player but how far the player would go would greatly be determined by their friction, velocity, and whether or not the player was in the air. What I ended up doing was lifting the player upward just a little, locking the player's Z axis, and setting their velocity to zero after a certain amount of time.

WEAPON SYSTEM

  • My first big challenge I had was trying to figure out the backbone for gun-play. What I decided to go with was a system where one weapon acts as a parent reference where the other ones are children actors of the parent.

  • This allows me to script most of the functionality in one parent actor and the children are able to replicate whatever code I had already made in the parent. The children actors could even be expanded upon to have their own unique functionalities.

  • Child actors of the weapon parent could be broken down into different categories based on the intended behavior of each weapon, additionally this made it easier to ensure that all weapons would work the same on the backend. This system would go on to save me tons of time and keep the blueprints cleaner.

Untitled-1.png
Screenshot (5).png
Screenshot (10).png

ENEMIES

  • One of the most difficult aspects of developing the game was trying to figure out how I wanted the AI to behave for the various enemies. Often I found myself reworking the path-finding of the AI. I wanted variety in the different behaviors of the various enemies.

  • I found myself using a mixture of pawn-sensing and behavior trees depending on what i needed from each different enemy type. Melee enemies were the only AI I allowed to be very direct in their approach towards the player (essentially they would charge towards the player), ranged enemies use the behavior tree to find a location within range of the player without a wall or cover between them and their target.

  • The more difficult AI to program was the flying enemies. Because nav meshes don't work for enemies that aren't grounded, I had to create my own movement system that would create the illusion of a hovering enemy. What I came up with for the AI was to fly relative to a certain point in front of the player in which they are randomly choosing to go up, down, left, or right every couple frames.  The healer enemy would choose an enemy to hide behind providing themselves cover, and allowing them to stay close to their comrades.

POLISH AND GAME FEEL

  • The last task was to focus on a lot of the polish and feedback in the project. A lot of this came down to implementing particles, triggering audio, creating dynamic crosshairs, and lastly a whole bunch of UI work. I did my best to make all these elements feel as lively as possible.

  • The element I was most proud of was the UI. My favorite part is the way the helmet UI in the first person perspective sways in the direction the player is moving their mouse, creating the sensation that the player is turning their head in the world as they turn.

  • For the dynamic crosshairs I decided to buy a tool that would draw the cross hairs on screen, and tinkering with this tool I was able to create unique cross hairs for specific weapons and make them adjust dynamically as the player shoots.

Screenshot (6).png

CONCLUSION

  • From a technical perspective I'm very proud of the way the project came out. It was a great opportunity to learn visual scripting and unreal engine 4. This was also the first project where I had set a good amount of time specifically just focus on the polish side of a project.

Contact

If you'd like to get in contact email me at Mikeygamedev@Outlook.com

Untitled-1.png
bottom of page