With only two weeks left of our beta sprint we are working hard to get as much in the game as possible before our feature lock! Check out what the team has been up to this week.
A few people that play our game on a regular basis complained almost every play test that you couldn’t melee. Finally we have got around to implementing it! Melee works on enemies, crates, the mine cart and the track switchers.
We’ve got a brand new 1v1 dueling game mode. Dueling is a round based mode where being the last man standing wins you one round. The first player to win three rounds is declared the winner! The current duel map is just a rough greybox so stay tuned to see some screenshots when it is a bit more up to scratch.
We kept on getting asked if the grapple hook could pull things toward you when people play tested for us. We want the game to be as intuitive as possible so it if someone feels like they should be able to do something we want to enable them to do it. So naturally, pulling with the grappling hook is now a thing!
Work has begun on tracking stats from in game so that we can implement a leveling system for players. At the moment it is only tracking basic stats like kills, deaths and wins. Next week we should have these stats uploading to a server so that we can get them in the menus to allow players to view their game stats.
Up until this week our mine cart map had only been created by one of our programmers so it was long over due for an artist’s touch. Now we’ve got a bunch of new assets and we’re working hard to differentiate it from our Free for All map.
The shotgun is looking flashy and new now that it has been fully textured using substance painter.
From the Artists
Having closed the door on the texturing problems I had been having with the shotgun, I started working on the full texturing in substance painter. Alongside this I exported some of the other maps from Substance painter for a side project. The curve map is really good for masking edges so I want to use this to create the super crate effect on the player’s weapon and grapple. The majority of the week was spent creating the particles for the weapons. What I learned was how flat hand drawn particles can look when displayed on a single particle. Adding in randomly spawned particles into the mix helps to also break up particles.
I mainly played around with textures this week, spending more time with the first person arms and trying to differentiate the weapon textures from one another whilst staying in the boundaries of the materials that would have been available. It was great to see everything come together this week with the new assets implemented with animations, this made it easier to make adjustments based on how the weapons looked in action. We ran into some issues with the normals importing with odd smoothing issues but were able to figure it out relatively quickly. I also used substance painter to update the tileable textures that we use to vertex paint our larger rock formations. At the end of the week I got started on the medals that pop up when the player performs certain tasks during the game (double kills, comebacks etc).
Most of my week was taken up by environment assets and the minecart map. Populating the map to make it look and feel more appropriate with environmental storytelling and variation took some time, yet it could still do with more to further differentiate sides on top of additional assets and polish. I have started to feel the limitations of building a map out of a set of rocks and scaffolds, having to get creative to break up repetition yet not succeeding in many areas. It can start to feel messy with seams and gaps between the pieces, which I have tried to mitigate by covering with assets or using vertex painting. The map is very large compared to the previous one which adds to the challenge and time required.
Earlier in the week i was finishing up animations before putting them into the game. They are finished and in the process of having sound and particles developed for them by other members. We may still need to have another look at their implementation during the polish phase to figure out offsets in the arms to give a more natural look.
From the Programmers
This week was very busy, with many features that were long overdue to be put in the game. I’m pleased that I managed to complete all of the tasks that I planned to tackle this week. I started out the week by adding a melee attack to the game. This uses animations that Nathan had created and fills a vital gap in the gameplay, when you are out of ammo and need to finish off an enemy. I then added a new super version of the teleporter that teleports enemies to where you were if they happen to be caught in the effect. This still needs a lot of visual and audio feedback before I’ll know for sure if it’s useful and balanced. I also re-implemented the pull-hook (previously called the lasso) but with some important tweaks. Firstly, the pull-hook is now always available as a secondary fire of the grapple hook. This was based on feedback that the old lasso, while useful, was not as desirable as the other abilities. Secondly, the pull-hook doesn’t stun enemies, it only applies an impulse to them. This too was based on feedback that the lasso was jarring to be hit by.
Another large and important change made this week was to the game modes. FFA is now based on getting the most kills, rather than staying alive until the end. This will hopefully create more engagement and make winning FFA more deliberate. I also created the Duel game mode, which is based on lives but is limited to two players. Duel is based on rounds, and a single super crate will always spawn at the beginning of a round. Finally, I reimplemented the damage indicator to the HUD, and fixed some bugs.
I learned more about systems in Unreal Engine that I’m unfamiliar with, like animations (for melee), creating new game modes and connecting them to the rest of the game.
I started the week by applying a depth buffer material I’d made in an older project to the minecart so it could be seen through walls, as knowing the position of the cart at all times is a must have. I gave the cart and impulse to players to prevent players from either blending through the cart or being pushed aside from it, and it gives us a nice mechanic in the form of using the Cart as a weapon. The Cart bases were still doing a lot of logic in Blueprint, so to speed things up I transferred it over to C++ and hopefully this will give us a small performance increase.
My biggest features from this week were the Kill Tracking and Feedback for all game modes, and User Implementation. As we had decided to change the FFA mode to Kill based rather than Lives based, robust (yet simple at this stage) Kill tracking had to be implemented to make this a possibility. While doing this, I created Feedback for players in the form of Announcements and a Kill Feed, so players know when someone dies and if they were killed, and who by. By recreating the scoreboard it made the implementation of this feedback easier. The User Implementation was the more complicated part from this week. We wanted to store player data such as statistics and levels in a database and have Sky Noon access this on request. Using the Http module in Unreal, I was able to send data to a php file that would run sql queries and send the database data back to the game to present to users. In future this will be made more efficient, but for now it works a charm. There was little documentation on this topic so I will likely write a tutorial on this at some point so that it can be recreated by others.
I began the week by looking into how I could save in game stats externally on a server of some description. Talking to Chris from Meta41 I found that he had used a blueprint plugin VaRest which is used to link php scripts with UE4 to connect to a MySQL server. I wasted about a day looking in to what I needed to do but having never touched php or SQL before I swallowed my pride and asked Craig for help. He took over the task and instead put me in charge of creating a stat manager much like the one in Unreal Tournament that can track things like wins/losses, shots fired/shots hit and kills/deaths. I managed to get the tracking to work and at the end of a game save into an FUserData struct that Craig will use to send to the server. I’ve also started work on the medal system that will give players in game pop ups when they get double kills and things like that. I ran into some trouble with the UImage in a user widget as when you declare it in c++ you cannot resize it in the blueprint subclass despite being able to see it in editor. I’m hoping to have the medal system finished on Monday and will need to work on adding audio to it as well.