top of page

Bow & Arrow Juggling System

A bow & arrow combat system that tries to integrate a mid-ranged launch ability into it's primary gameplay loop. 

Development Time: 4 weeks full time - First Time Learning Technical Animation

Team Size: Solo                                     Role: Gameplay & Technical Design

Tech: Unreal Engine 5, Blueprints (Visual Scripting)

Game Overview

Carving wooden bows with my uncle was once a favorite pastime of mine. Since then, I've been a huge fan of bow & arrow combat design, specifically in games like 'Horizon Zero Dawn' & 'The Last of Us'. This first year summer project was my attempt at constructing my own. My understanding of technical implementation & programming practices has improved a lot since then, but I'm happy with how the user experience of it turned out.

-  Have 2 combat states to support differently paced playstyles. 1 fast & 1 slow. Balance their DPS.

​

-  Use input buffering to make the system feel more reliable and allow players to 'preload' the next arrow.

-  Add 'sticky aim' to subtly improve the usability & accuracy of a bow for players.

​

-  Implement an ability launching enemies, to then juggle them with the bow.

Gamepad / Keyboard Controls

Character Movement = Left Stick / WASD,  Aim = Right Stick / Move Mouse

Roll = Right Face Button / R-Key, Bow Aim = LT / R-Mouse

Bow Charge = RT Down / L-Mouse Down, Bow Fire = RT Release / L-Mouse Release

Ability Aim = LB / Ctrl + R-Mouse, Ability Fire = RB / L-Mouse Release

States Of Using A Bow

Looking back on this project, there's a lot to improve, but the states hold up.

 

Charging - the "drawing" of the bow, animation charges until at an end pose.

​

Charged - The pose held at the end of the charge, full range & damage potential.

​

Uncharging - If minimum charge time wasn't met, undraw the bow without firing.

​

Firing - When the charge is released after meeting a minimum charge time.

​

Aiming In - The process of pulling the bow up & changing the camera view.

​

Aiming Out - Swapping out of the combat aim state and into normal locomotion.

Aiming In & Out

Slower Charging Combat State

This is what the alternate firing mode looked like, it being slower and more deliberate gave it a significantly different feel. Shots did more damage and if developed further, I would have liked to give it a more unique gameplay purpose or differentiator from the quick firing method.

Minimum Charge Times

This is something I would've changed. At the time, I kept slowly making things faster and faster, falling victim to my own human aversion to delayed gratification. Currently, I now think this went against the player fantasy I had intended. Although I wanted the combat to be quick in it's pace, there still should have been a higher minimum draw time to increase the satisfaction players got from firing. A fraction more time invested in an interaction can make it much more meaningful. 

Other Successfully Implemented Design Features

- Sticky aim (aim sensitivity slows making things easier when over a valid target)

- Basic wandering & patrolling AI targets

- Evade Roll & Dodge while aiming (temporarily disrupts aim & charge)

- Directional Hit Reactions (Uses rotator yaw to split & select animation montages)

Input Buffering

Being my first attempt at input buffering, I do like that I used the notify method, but the supporting logic in the character blueprint should have been further decoupled than it was.

InputBufferAnimMontage.JPG

Draw / Charge Logic

I've taken a lot of classes on programming since this, so no doubt it's not perfect. Yet, it does function. The input buffer calls could be done more elegantly I think.

bottom of page