Progress update #2.1 - Testing, Bug Fixing, Refactoring - Xmas 2017
It turns out our game concept, a networked multiplayer game with VR concepts, is quite a pain in the a** to test and debug.
To test the networking now, one needs multiple instances of the game running, before we added in VR this could be done on one machine by starting multiple instances of the built game. The problem is that SteamVR (and probably any other VR API for that matter) needs to be accessed exclusively by one application. So when we want to test VR networking, starting a new instance of the game will automatically close the other one. As a consequence we can only run one instance of the game (either editor or build) on one machine at once. Making matters worse, Unity networking seems to be pretty fragile when it comes to local differences between two client versions, differences that both Git and Collab seem to ignore, so in practice master networking testing will often be handled by building the game and sharing the build over network or portable storage with the other tester. The fact that thanks to fancy lightmaps and assets the builds can be almost a gigabyte now doesn't really make it easier on us either. But enough whining already.
Most of December then was spent implementing the missing features for the low target (more on that in the next update) before sliding into our (well deserved?) Christmas break. :3
Progress update #2.2 - Baby Steps - Jan 9, 2018
Dev Update - Paul
Visuals have changed considerably since the last demo, plus a selection of changes to the UI and smaller fixes
Good old Kleinvieh
Among the progress on smaller issues was the addition of VR pointing, currently only used to return to the lobby after a match has ended. This required setting up a 3D pointer as a Unity GUI compatible pointing device.
The crawler camera got a small offset to achieve a sort of "over-the-shoulder" look, as well as a crosshair so players actually know where they're shooting.
What's on the menu?
One of my bigger additions besides the core mechanics that aids in making the game feel more "complete" is a main menu that extends beyond just a lobby. This main menu is relatively simple but brings all core items a player can expect. There is a main screen from which the user can pick the three different panels: lobby, settings, controls. The lobby panel is the previous lobby as it was before. The settings panel offers the player a small selection of visual settings to change if they want better visuals or better performance, including resolution and quality preset. The controls panel simply shows the control mappings for all three supported input methods: mouse and keyboard for crawlers, Rift or Vive for master.
One issue we kept seeing while playing as crawlers was the lack of visual feedback when hitting an enemy or getting hit by one. To mitigate this to a degree, visual hit effects were added, simple particle effects that visualize where an entity was hit, as well as screenshake. The screenshake does exactly what the name implies, making the camera shake whenever an "event" like a shot or explosion happens close enough to the crawler. While another layer of visual feedback on the UI would be very helpful, the two additions already give a much better idea of when and why the player is losing health.
Props to the level... Well, visuals in general
Visuals were another big change for the feeling of the game. The interim demo still only had the level without any surroundings, unrefined materials and simple lighting. For the alpha, I added a more sophisticated backdrop. For one in functional nature: the backdrop would be the same for any level, so integrating it directly into the actively played level would be a waste of memory, mapping times and storage. Instead, Unity supports so-called additive loading as well as "object persistence". The idea was to load an arbitrary game scene and then additively load the backdrop scene. Turns out that additive loading breaks lightmap assignment and completely nukes lighting of the backdrop. But object persistence doesn't, so now the system is a bit more clumsy and less optimized, but works the same on a high level and lighting remains functional.
Another core component to the visual style is post-processing. Using the Unity post FX stack, I added tweaked bloom, lens effects, AO, HDR mapping, filmic tonemapping, screenspace reflections and depth of field. This went a very long way in conveying a fitting look for neon signs, fire, and other bright effects as well as enhancing contrast to give a stronger darker look to the game.
Room prefabs for random map generation - inb4 wreck
To elevate the random map generation from a prototype to a usable tool, we needed prefabs for the modules that the generator uses. Rooms, corridors and junctions. The next issue that presented itself was that these rooms would need to be filled with props: furniture, lights, decorations etc. Manually placing these would be a chore, especially if we want some variety, so instead of doing that, I introduced a Random Object Instancer. It's a gameobject to be placed in a room, a certain maximum boundary volume is specified and a list of allowed objects is added. Then as an editor tool, an arbitrary number of these ROI can be selected and at the press of a button they place a random object from their assigned lists into the scene. This way the designer only needs to specify the basic layout of items in a room but visual variety can be changed with a single click. Some of the individual props for the ROI were taken from the asset store, some simpler ones were created manually.
Unfortunately, it turned out that the prefab rooms and the map generation tool in its current state are not quite compatible, and couldn't be fixed in time.
Some changes to gameplay balancing were introduced, such as a significantly higher movement speed and somewhat higher attack rate to make crawlers feel more agile and better equipped to evade enemies if necessary, as well as increasing the level of excitement a player experiences. To mitigate the fire rate somewhat, damage numbers for the crawler weapons were tweaked. ((Artjom:)) Additionally, more enemies and a second enemy type were added so the average player would actually need the help of his fellows and the master. On top of that, the level now contains a boss with more health and more range.
Dev Update - Jonas - "They grow so quickly!"
The master has come a far way from my first concept mockups, he now is even prettier, can show crawlers de wey and burn enemies or heal the crawlers' deep wounds.
VR MASTER - NOW IN RGB!
Instead of the old additive particle material, the master now has a bunch of glossy emissive material for each usable ability that he will smoothly interpolate between.
With a new, carefully selected colour palette for abilities, this gives both the crawlers and the master an intuitive visual feedback and it looks extra sweet with Paul's new post processing effects in place. In addition, buff and debuff have been enhanced with cute little particle systems and some more smaller visual tweaks have been applied to the master. For some reason the new systems cause weird flashes when the master blinks sometimes.
DU YU NOW DE WEY????
Initially, we planned to give the the master a pair of rigged hands, that allow him to perform different gestures and postures like pointing at certain targets or flipping the bird (here at Pick One we believe in flaming).
This idea was abandoned for multiple reasons though. First and foremost, nicely rigged, low poly hand-only models that are suitable for VR are pretty hard to get your hands on (pun intended), the good ones are in the asset store with double-digit price tags and everything you can find for free is pretty much useless. With the limited artistic skills in our team, modelling and skinning a pretty hand mesh and animating nice gestures in postures was also not feasible. On the other hand, we only really need to point at stuff, hence most other postures and gestures would pretty much only be nice and funny gimmicks. In addition, the concern arose that humanoid hands would not quite fit the boxy/digital cuteness of our master. Therefore the decision was made to implement a simpler and more robust solution: A 3D ARROW!
The idea is to use this minimalist concept to make crawler-master communication both simple and exciting.
The big master feature for the low target was throwable abilities, more specifically fire balls and heal orbs. The idea was to give the master powerful area effects that are limited in their usefulness by low precision and the fact that they affect crawlers and enemies equally. In practice this means, fire balls will also damage crawlers and heal orbs will heal enemies. The master therefore has to decide strategically when to use these abilities and be extra careful when throwing.
The strength of the effect on an entity is dependent on three different factors: the aforementioned charge of the throwable, the distance to the detonation and finally the velocity of the throwable. The latter was introduced to encourage masters to throw the abilities properly instead of just dropping them right next to where they are needed. In addition to the applied effect and a badass explosion there is now some immersive screen shake thanks to Paul.
With the alpha realease this week and about one month of developement left, focus from now on will be more on polishing and bug fixing rather than adding a bulk of new unfinished features/abilities, ending up somewhere around the desired target.
For me this means that I want to end the infinite spam of abilities for the master by adding an automatically recharging resource for buff and debuff and pick-up based resources for the throwables. Limiting the enemies' visibility for the master also seems like a doable and gameplay-relevant task. In addition, a simple off-hand-touch-pad-based teleportation solution might become important for larger dungeons. The idea is to have a less overpowered master that makes gameplay a bit more challenging for both crawlers and the master.
Dev Update - Inshal
A new player class was added to the game. Do you feel those enemies are too tough? Do you want extra health to be able to tank some hits for your friends as they run away and abandon you? Do you want to be able to erupt in anger and their lack of anger? INtroducing, the Sumo. The primary gameplay purpose of the Sumo is to act as the vanguard of the group and keep his allies from harm by attracting attention of the enemies. His primary attributes are:
We added several features on top of this simple algorithm such as chance for the algorithm to simply drop the exit and make the room a possible dead-end.
Dev Update - Artem
Inshal already told you about the sumo class, I would tell about the rest. Remember, we had adrenaline soldier class in our interim? So, now it is split in two separate classes with different roles: soldier class and adrenaline class.
So, along with sumo and infiltrator, we now have four fully implemented and playable classes.
Another thing necessary for a complete game is enemies. We already had a dummy enemy with a simple AI for our interim, but now we have four of them, with two unique animated models.
Finally, there are scorpion-boss. Defeating the boss is the main objective of every level. It has 3 times more damage and enormous amount of health. Just look at the pic:
We have working collectibles; however, we haven't tested and balanced them properly yet, and they won't come in the alpha version.