In the last post we added in a vertical traversal mechanic. Although I actually did have a mana meter in Cloak I didn’t figure out a way to refuel the mana, partially because I was initially thinking of using mana potions and making them very scarce so a player would have to use their powers very sparingly. This is at odds with the improvisational design philosophy I wanted to adopt. One flaw that I felt Dishonored had (and to some extent Dishonored 2) was that powers were the core driver of the emergent gameplay but those powers were inherently finite because of the mana bar. And using the single most useful skill (which is blink) could eventually lead to cutting yourselves from entire sections of a level if you did not use it sparingly. Then I thought, what if the main character has something inherent in the level design that fuels their powers? I asked my partner, and we brainstormed some ideas. My partner suggested that the player be able to suck the life force from the enemies in the level and use that to refuel the mana bar. I liked the idea but I eventually came to reject it because it was very similar to the high chaos/low chaos dichotomy of Dishonored. But not in a beneficial way. One of the criticisms of Dishonored 1 is the high chaos swashbuckling playthrough is more fun for most people than a low chaos playthrough because it makes more use of the robust combat mechanics and emergent systems. In addition for the theme of my game, which is more about a heist than an assassination, a mechanic that encourages killing would be detrimental to the roguish aesthetic. I wanted a game with a dichotomy of sneaking and fleeing instead of sneaking and killing. This led to me thinking about a round table discussion with Warren Spector and Doug Church where they were describing their philosophies regarding immersive sims.
In it, Doug Church said something that surprised me at the time. He described a game of Thief as a game of stealing and losing territory. That the player is navigating territory that belongs to the individual AIs patrolling it both claiming it and surrendering it as they move through it. I didn’t understand it at the time because I was retroactively viewing Thief through late-period immersive sims which tend to feature far less dynamic lighting. A lighting system that I brought into Cloak. And then it hit me. Doug Church was describing not only the line of sight or knocking out enemies, but rather was primarily talking about the dynamic lighting, with the player’s territory mostly being the shadows and the NPCs territory being the light. And this prompted the creation of a system that directly incentivizes interacting with this territory game. And the fastest way to do this is to create a resource incentive. Essentially the player has a power that they can use to dim the lights in a room, siphoning the energy to fill their mana bar. This temporarily gives the player control over the “territory” while giving them more options to use their powers, encouraging both the core game mechanics of sneaking AND enabling improvisation. It also creates an interesting choice involving the complete extinguishment of light sources as they are all tied to power sources. If you cut that power source, you are taking the associated territory permanently but losing access to restoring your resource pool. Moreover, the player will almost always be able to find a light source to dim, meaning that their improvisational abilities are almost never too far from a fuel source as long as the player is strategic and isn’t overly greedy with light extinguishing. The player thus is making a choice between enabling easier sneaking or leaving means of improvisational escape. I implemented the changes to the lighting system and the power resource management system and I’m very satisfied with the results.
0 Comments
So when I started the process I finally broke down and added in a mechanic that most Arkane fans know as blink (Emily’s Far-Reach, Daud’s Time Blink, Billy’s Displacement, etc.). The technical implementation is relatively simple, you fire a ray cast from the camera to a forward trajectory from the center then at the end you are going to spawn some sort of indicator. Since this is inspired by a D&D campaign I decided to flavor mine as a Misty Step. Fog appears at the end of the trajectory. If the ray cast hits an object it spawns an indicator before that trajectory where it hits it. That indicator is then used as the target position which we will then translate the player's transform to creating a smooth transition from one point to the next.
In this time this player functionally is taken out of the physics simulation which is why the indicator itself needs to be out of the collision boxes of the level geometry. If we just place the indicator at the exact point where the ray cast hits geometry it will spawn the indicator inside or partially inside the geometry. It needs to be a certain distance above the ground, specifically half a player’s height, or a certain distance away from the ceiling. And in the case of corners it has to be a distance away from the walls as well this is a tricky balance because if the indicator is too far from its initial position it will feel imprecise. In general the distance from the ground that you should spawn the indicator and thus the player is half the player’s height plus point 25 meters. To make a long story short, my experiment in creating a prototype of Cloak has massively evolved. Around Christmas-time, I had made a ton of progress prototyping a level. I had ranged AI, BSP geometry, and level scripting. But while listening to electro-swing remixes, I felt like something was missing. I had bought high quality assets and worked very hard. But to take a break, I decided to try something I hadn't tried in years.
Part of it was who I was modeling. Over the last two months I've been playing in a heist D&D campaign. My character in it is named Harlowe Keyturne and is heavily inspired by both my love of the Dishonored franchise and my love of the show Lupin III. They have roughly the same powerset as Corvo in Dishonored 1, with the personality of an adernaline junkie jazz-head obsessed with improvisation. Upon rigging the character, I realized that I had crippled myself creatively with Cloak. I had assumed I couldn't 3D model and had been limited to assets online. But after realizing that if I used a low poly modeling style I could make anything I wanted to. So I decided to experiment: Replace the character model of the player with Harlowe's model and replace the main weapon with a derringer. From then on, my path was clear. I am now making a Heist game with an Electro-swing soundtrack and a Decopunk aesthetic based on the heist campaign. One inspired by one dev's beautiful metaphore where he compared Dishonored to playing jazz. A game of improv which rewards creative problem solving. I scrapped the old level and I'm beginning the proces of reimplementing features more efficiently..
I tried to think of a number of ways the player could logically choose to do this and came up with four ideas:
1) Killing all the heads of the company. 2) Convincing them to sell each other out. 3) Stealing their personal coin reserves and their payroll pool. Or finally 4) a combination of the above to eliminate each. In my previous post, I had already created a state machine, using a purchased Unity model and some prebaked humanoid animations. My first priority was creating a system for both combat and sound manipulation. Unity, of course, doesn't have sound detection in it natively. So this gave me an opportunity to add in a feature that I simply had no notion of how to implement in college. But with a few years of hindsight? I have a simple, elegant solution.
The above gif shows manipulation of this system, using a crossbow bolt to lure an NPC. And with that, we can start prototyping a level.
An important detail I forgot to mention last blog post is probably the most important one: How does the statemachine work in this game?
The State Machine required for a looking glass-style game like Cloak requires the following states: Non-combat/Alert State
I got that state machine fully set-up using an enum method and then moved onto a lighting system. The current method relies on trigger volumes that define their radius by the lighting source's range. The light source has it's own instance of a scriptable object that tracks how close or far the player is accordingly and uses that to determine the intensity of the light and therefore how lit the player is when there is an unobstructed line between the player and the lightsource. Upon entering the radius, the scriptable object instance is added to the player and upon leaving the trigger or moving too far away. This object adds to the player's lighting meter and in turn acts as a variable to raises or lowers the amount of time it will take to be spotted by the AI. Once the player is at 0 lighting, the player cannot be seen unless the NPC is at very close distances, the player moves faster than a certain amount of meters a second, or they are attacked at close range.
But a few months ago, I decided to binge Dishonored 2. I finished it in two days on low chaos Emily and immediately start my high chaos Emily playthrough, which I finished in three days. And I realized that I got into games because I wanted to make a Deus Ex, Thief, and Dishonored. And I hadn't done any of that since college. When I was in my senior year of college, I made my first attempt to make an Immersive Sim, Cloak.
Next step is adding a lighting system.
After reviewing the feedback, the biggest criticism of the build is that enemies don't have satisfying reactions to your swordblows. In addition, the responsiveness of the sword controls were consistently rated between 7-10 and the gun was rated 2-8. In order to refine this combat system, I have done three things.
In addition, I bit the bullet and increased the sampling rate of the animations from 30 FPS to 60 FPS. My original justification for having slower combat animations was to keep the player in the same shoes as the NPCs. They had attacks that require a wind up and a cooldown. My issue, however, was that players wanted to have the combat animation execute almost while the mouse is down, especially for the light attack. One tester who I could listen to verbally was confused which blow was the fast strike and which one was the heavy one. And as a result of the light attack being rather slow, but still faster then the heavy attack, they continued to use it as if it were the dominant strategy.
I also determined I should change the language around attacks. It isn't accurate to say light attack/heavy attack, but rather a wide attack and a narrow attack. This more accurately describes the sizes of the hitboxes, which are the most important aspect of the combat.
While I waited for more responses, I also began work on the framework for the faction system. The faction system consists of:
Currently, the framework for gangs, factions, and the Guard and patrol orders work correctly. In general, though I find VDDs are the best way to communicate an idea to a team, I usually begin personal projects by writing a description of the context of the game and the things the player will be able to do. Sometimes I do this in the form of a pitch, but most of the time it's a few typed up paragraphs full of shorthand. From there, I go straight into prototyping the main mechanic. My intent this time was to introduce an element of faction based warfare, inspired by the movie Yojimbo. The player character's goal is to clean up a Japanese town, killing off all the corrupt factions in the city. But the PC has a tiny health pool, the threat of permadeath, and is up against hundreds of enemies. The player will be forced to ally and manipulate the rival factions to fight each other to thin their ranks as the player stealthly eliminates the factions, one gang at a time.
Taking advice from Vlandeer's GDC talks on Game Feel, I set out making some placeholder animations, adding slow-mo to hits, minor screenshake, and tons of blood etc. And most importantly, I lowered the PC's health, in order to force players to choose their battles carefully.
I constructed two builds at this point. One a combat arena, shown above to test. The other was an AI build, where I began constructing an AI for systems-based faction warfare. We'll go over the specifics of that system in a future update. I put the combat build in front of people and asked some loose questions. to guide me. The largest complaint was the lack of variety in the combat. The lack of a ranged option severely limited the player's tactical options down to cutting. The slowness of the animations and the player's slow movement made the controls feel sluggish. So my next additions were: |
Jed MyersDeveloper Archives
February 2021
|