Posts

Showing posts from January, 2023

UI Polish

Image
 Author: Yashwant Patel The main thing that our game was missing in the last week was polish on certain things. One of the largest thing that we were missing was replacing the placeholder with final UI assets. This would make the game feel more complete and the player would appreciate the game with a finished UI. Since I was working on UI I had an advantage, because I didn't have to go around searching for UI packs since finding assets that you exactly want can be hard. Instead I mostly made everything from scratch with the exception of some elements that I got from freepik.com  and modified them to what we needed. The main challenge I faced with the UI was getting everything how I liked. I didn't really use Unreal's tools for UI before in terms of properly structuring the hierarchy for UI elements and properly wrapping everything to have it behave how you want it to, so this took a day to get used to. Another thing that needed to be done was reprogram the UI since the old ...

Polish Everything

Image
 By: Matthew Steinhardt The Problem As it came down to the wire, there was so much left to do. It seemed overwhelming, however I decided to take it one task at a time. The list of things to do was vast and we continued to find bugs during our final build process. It soon became apparent that we were not going to address everything that needed to be fixed before submitting the archive build of our game. The Solution The first thing I did was try and mentally categorize the importance of different problems. I made three categories for things that needed addressing: Critical, Annoyances, and Feel-Goods.  Critical problems were for those that needed to be fixed. One critical issue we ran into was a bug where the player would seemingly randomly be unable to move indefinitely. Chris made an amazing discovery and noticed that the bug only seemed to happen when the player jumped before sprinting. This immediately led us to determine what exactly about jumping and sprinting could cause...

Playing Sounds

Image
 When applying sounds to the towers, I ran into a few issues. One issue is that there is no falloff or "fade" as you move away from a .wav being played at a location. Another issue is for sounds that play consecutively tend to sound echoed or overlapped, so to avoid this I needed to be able to play a random sound for our spike shooter spike mine.   I found that getting all the wave player sounds I wanted to play and connecting them to a random node inside a cue allows for a random sound to be picked and played when the cue is called to be played. The problem now is, our random sound will play, but it will not have any sound falloff when we move away from the source. A fix for that is to create a sound attenuation that the towers can use for adjusting the range and falloff of the sound.     Now that we have our sound cue and attenuation, the randomly selected sound will play from the cue at the location given with the falloff from the attenuation

Legacy Code Strikes Again...

Image
By: Matthew Steinhardt  As we come down to the wire to get everything implemented, the mouseover UI for the tower information was still being developed. After the implementation was pushed to the main project, it was apparent there was a problem. Oddly, enough the overlay system didn't seem to work when the player mouses over towers that were loaded in from a save state. Upon further investigation, it became apparent that a mysterious "TowerData" structure was not being saved/populated properly on towers loaded from a save state.  This was rather perplexing as this TowerData structure wasn't used in any other tower system. I tracked down used references in Unreal Engine and found out that it was a legacy system put in during the first weeks of development while trying to figure out a way to pass some simple data between the Tower Bar UI and the icons. Unfortunately, this system was largely abandoned in place of our better Data Asset implementation.  It turned out that...

Tower Polish

 Author: Yashwant Patel Problem All the mechanics for the towers have been updated and they work correctly, but one of the things that is lacking is PFI. While all towers had basic or placeholder visual effects they needed to be updated to make it feel like a game. The rocket tower had a cylinder for it's rocket, the gas dispenser had an expanding sphere (although it was a cool shader), and the freeze tower had an expanding cube for it's effect. Not to mention the rocket tower itself was a cylinder. So it was time to update these effects and get the freeze tower it's model. Solution The effects that I had in mind were going to be hard to find a 1 for 1 tutorial, so it was time to find videos that could be used as a basis for the effects. I knew the freeze tower was going to cause the most trouble since it needed some type of effect that would persist over a duration and the visual had to look like it would hit all enemies of any size. This means a simple beam wouldn't d...

Balancing... Just About Everything

  Author: Christopher Solomon      To make sure that everything is ready for the final build of our project, I have continued to work on balancing the various features of our game. Last week I primarily focused on balancing the enemies, since they were outdated in the current state of the game. This week, however, the process extends beyond just the enemies and into our tower, currency, and upgrade systems. Through testing our game, I was able to figure out which features were lacking in comparison to others. One tower that I found to be lacking was the Freeze tower, since it did low damage and inflicted a very short-lived slowdown effect. It only took a comparison to the Gas Dispenser, which did more damage and had the incredibly useful ability to turn enemies around on the track, to see that it was underpowered. In terms of upgrades, it is important to make sure that certain abilities don't become so powerful that they break the game. One such upgrade tre...

Displaying Upgrades

Image
       The problem I ran into this week was implementing the tower upgrade display on the placeable towers build overlay. The issue was that all the information I needed to display the upgrades was not made with the intention of using it outside of the upgrade shop. However, the upgrade shop fires a broadcast that an upgrade has been purchased. Using this broadcast, I bound some events to listen when an upgrade had been purchased and hijacked the information I needed from that event. From there I stored each upgrade as they are only fired once through the playthrough of the level. Using the stored values, after cast checking the current targeted tower, I use the information to populate a upgrade display widget and place it in the upgrade section of the build overlay. And the result is the build overlay showing the upgrade with the icon, name, and description.

Lane Indicators

Image
 Author: Yashwant Patel Problem: As stated in the last blogs one of the problems that players face is not knowing which enemies will spawn from which lanes in the next wave. Currently a lane is unlocked when a boss wave occurs, but a new player won't know which wave elementals will come from. This can cause frustration since the player could build towers in one lane and then be overwhelmed and end up losing and then they have to restart.  Solution: When I originally started working with spline I thought there was no way to render them. That is still true, but with the use of particles you can actually have them travel along a spline which I recently learned, so this was the solution that I going to implement. The first thing to do was create a Niagra Particle scratch pad. Inside of that it accepts a couple of parameters including spline, age, speed. Then some user parameters are created to match the spline and speed variable in the scratchpad. Using the spline the position and...

Making a Landscape Material that Doesn't Suck

Image
By: Matthew Steinhardt The Problem The time had finally come to make a real island that players would sit back and say "wow this looks cool!". Our test map, which we made at the VERY beginning of development (back in ye' old prototyping days), served its purpose beautifully, however it had several glaring gameplay issues. One of them being it didn't really look like a natural island, nor did it have any landscape textures. I set out to create a new map with a modified layout inspired by our test map, but more tuned to the current requirements of our project. The most difficult part turned out to be creating a landscape material that would allow me to paint different textures based on height and other settings.  The Solution At first, I thought I could simply create this material from scratch. However, it quickly became apparent that I was way in over my head. I started searching the internet to find an open-source solution or starting point. Eventually I found an extr...

Balancing The Enemies

Image
  Author: Christopher Solomon     While my main objective for these past few weeks has been working on the various upgrades in our game, I took the time this week to start the balancing process, starting with the elementals. When these elementals were created, they were created with stats that seemed reasonable at the time of creation, but haven't been touched since then. However, our game has changed much since then and thus there needed to be adjustments so the enemies match the current state of the game. Recent changes made to the player's 'pistol shotgun' meant that even the strongest elementals could be defeated with just a few clicks of the player's mouse. My solution to this problem was to massively increase the health of our elementals. The bosses in particular were made much more difficult, with their health values more than quadrupling! I did plenty of in game testing to make sure that these changes were reasonable and overall the game is in a much more en...

Creating Game Icons Using AI

Image
 The Problem A good, polished game needs art! Prototype assets can only get you so far before it's time to implement assets that will really draw players in. Unfortunately, I am not artistically inclined in the slightest. Stick figures are usually my go-to. However, stick figures aren't going to cut it. One of the big art hurdles we ran into was to do with icons for our towers/upgrades. These are relatively specific pieces that are hard to fulfill with good  free , available art. Instead, I set out to find a way to make our own art look good.   The Solution This is where AI has come to the rescue! I had done some research about certain machine learning ventures that are trained to make pictures from text prompts as well as from a reference image. After several hours of messing around with a program called Stable Diffusion and looking up some other videos on people's workflow utilizing the program, I finally came up with my own workflow which produced decent results!...

Boss Intro Cutscenes

Image
 Author: Yashwant Patel Problem: One thing that we are currently working on is implementing tutorials or ways to let the player know of certain mechanics. Currently we didn't have a way to insinuate why enemies only spawn in certain lanes and when they will start spawning in other lanes. As a player this raises questions such as "Why can't enemies spawn here?" or "When will enemies start spawning in this lane?". The easiest thing to do would be to utilize the tutorial system we have in place, but the bosses also spawn during the waves where the lanes get unlocked, so why not knock out two birds with two stones? Solution: Since bosses are introduced and waves are unlocked during the same time a cutscene would do rather nicely to showcase a lane unlocking and a boss being introduced. Ugh cutscenes once again. Will they be dynamic though? Nope, just plain old cutscenes. The first order of business was to have a way to insinuate to the player why enemies can...