Posts

Showing posts from December, 2022

Working With Data Assets

Image
  Author: Christopher Solomon     For this week of our capstone project, my main priority was to implement the remaining tower upgrades that were not yet in the game. Last week I was able to implement around half of them so I was determined to finish up the other half in time for our build. Thankfully I succeeded but it was not without headaches.     The main problem I encountered this week had to do with the data assets we use for our towers' attributes. These data assets contain such as the tower's health and how much damage they do to enemies, among other things. All instances of a certain tower share the same data asset, which makes implementing the upgrades more convenient. The first issue I came across was that the utility towers did not have their own data assets yet, only the attack towers did. I was sure to create new ones to better support our upgrade system. Another issue I ran across was that the updated values in the data asset were persistent even ...

Functions After Widget Animations

Image
Patrick Kelly 12/16/2022  A problem I encountered when creating the tutorial widget was getting it to remove itself once it was completed. Since the tutorial widget only shows information for a short period of time, the widget is shown and hidden after its given lifespan. The widget opens with an animation that fades into view and is delayed by the given lifespan before playing a fade-out animation. After all these actions are complete, the widget needs to be hidden. I could have used a delay for the removal, but if we were to change the speed of the closing animation the widget could abruptly remove itself. The solution I found to this issue was a function called Bind to Animation Finished, which allows me to bind an event that fires when the animation has been completed. Thus allowing me to hide the UI after the animation has played. 

Player Health and Core Health Polish

Image
 Author: Yashwant Patel Problem: Since the start of the game we've had placeholder UI for many things including the player and island core health. While this did give player feedback on the player's and core's remaining health it didn't have any polish to it which would make the player feel like this is an uncomplete game. So it was time to rework the UI a little bit. After talking it out with the team and looking at some design mockups from Patrick we decided to have circular health bars/ globes for the health. Solution: First thing to do was create the textures that needed to be used in Photoshop in order to use them in the game and I could get a rough idea of what it would look like in the game. Red circle is player health. Purple circle is island core health. Background is Patrick's mockup With the basic shapes and textures in Photoshop it looked decent, now it was time to import these textures into Unreal and start working on the shader. The first thing to do w...

Widget Blueprints And Our Tutorial UI

Image
 By: Matthew Steinhardt The Problem Creating tutorials for the player that are effective but also not annoying proved to be rather difficult. We knew that we had to give some kind of guidance to new players to show them the controls/objectives of the game. In order to tackle the generic problem of "Show people how to play our game", we would need to come up with some more fine-tuned requirements for what pieces of information we deemed necessary for players to know while playing our game. After talking it over with Yash, we came up with the following: The player should have easy access to a reference of all the controls for our game. The player should be given a clear objective from the moment they press play. The player should have guidance as to where enemies are coming from. The player should be shown how to build towers to defend lanes on their behalf.  The player should be shown how/when to find the ship and purchase upgrades throughout the game.  Tutorial prompts sh...

Round End Cutscene Implementation

Image
 Author: Yashwant Patel Problem: Before the very first round and in between each round the player has access to the upgrade system where they can spend the currency they earn to purchase upgrades. Currently the player has no idea about the upgrades since they aren't told about them. One thing that can help mitigate this problem is to have a "cutscene" at the end of each round that shows a ship arriving with supplies (upgrades). This would help mitigate the main problem and it also solves the mystery of where the upgrades are arriving from. The objective is clear, but how should it be executed? Could use Unreal's level sequencer to make an animation and then render it and play the video once the round ends. Another way would be to have a "dynamic cutscene". Sounds fancy, but what does this mean? Essentially it means that each round end cutscene would be unique. How can that be accomplished and why attempt it in the first place? The main problem with setting u...

Adding Tower Upgrades

Author: Christopher Solomon My priority for this week was adding some tower upgrades into the game. Up to this point a few upgrades that affected the player had been implemented, but the other categories wer

Mouse Targetting

Image
Patrick Kelly 12/9/2022 While creating an tower information overlay and universal healthbar for enemies, I ran into the issue of getting the correct object the player's mouse was pointing at. The universal health bar was simple enough since it is only trying to get the target the player is looking at while in their first person shooter phase. All I had to do for that was fire a raycast from the camera location in the direction the camera is facing. However, using the camera as an origin for the tower information overlay presented an issue. When there was a larger object between the camera and the target the player's mouse was over, the overlay would display the larger tower. The issue with this method was that any object could be between the camera origin and the mouse location in the world, even though the player's camera has a clear view of their desired mouse target. I created an example below showing this scenario. Here you can see how the raycast still manages to hit...

Implementing the Medium Storm Elemental

Image
 Author: Christopher Solomon     During this week the primary focus and bulk of my work was devoted to the implementation of the Medium Storm Elemental. The Medium Storm Elemental has many similarities to the previously implemented Medium Water Elemental. Both are enemy types who's main focus is on attacking and destroying towers but the ways in which they preform these rolls differ. While the Medium Water Elemental shot projectiles at the towers, this new elemental that I was implementing instead creates a 'storm cloud' object that will damage its assigned tower for as long as it exists. Along with creating this storm cloud object, I also had to implement the new model and animations that we obtained from the Unreal Marketplace.      One of the first problems that I encountered this week was related to the  Medium Storm Elemental's hurt animation. Although I set the montage to play in the blueprint, it would not play at all in game. After doing s...

Large Storm Elemental Integrate

Image
By: Matthew Steinhardt Implementing the Storm Elemental (Problems) Once we found a model for the large storm elemental, we had to decide how we were going to implement the following abilities and effects: The elemental has two attacks that it randomly cycles through. The first is a charge-up attack that fires off a beam at the player's location. This attack and be fired from its left or right hand. The second is a lightning cloud effect that shoots lightning bolts down around the player. If the player is hit by any of these lightning effects, they are stunned and take damage. What started out sounding relatively straight-forward turned into a convoluted nightmare very quickly. I knew I had to make some kind of rudimentary state system to keep track of what the large elemental should be doing at any point. This would need to keep track of whether it is attacking, whether the player is nearby to attack, what attack they want to use, etc. In addition, the model we have does not contai...

Player Upgrade Bar Implementation

Image
 Author: Yashwant Patel Problem: We have a nice save system that saves the player's progress between rounds. This is a nice to have since the player can come back to a saved game. Although this brings up a problem for the player which is remembering what they left off with specifically their upgrades. While things like the round, player health, core health, etc. are saved and displayed on the UI the player doesn't have to remember these values when they load up a saved game, but for the upgrades they bought for the player they'd have to remember or keep track of them manually. Sometimes during the playthrough the player might forget which player upgrades they have bought, so this problem needed to be addressed. Solution: One solution probably comes to mind which is just displaying the upgrades on the UI in some form, but the question was how should they be displayed? We could have the player hold down a button and then list out all the player upgrades they have bought or fi...