Throwing some gameplay elements and buildings in to see how they would work with eachother.
I now consider dropping the final challenge with the rest of the sections, because I think one well made "hostile area" or section would show the potential of the game way better. In playtesting, it would mean less excuses to tell myself about not having enough time.
Blocking out more of the level, testing the blockout and rethinking scale.
I'm rethinking the order of sections and how they would play out. I started to create the first section where the player actually should be thinking and the scale is already getting out of hand. This section is supposed to be the 4th out of 7 and I'm really running out of time (trying to get this playtestable before 22.8 when uni starts back up), keeping in mind that I have to still do some gameplay programming (Gold gathering, save points, simple shop UI, hints, objective markers).
I'm thinking about making the 4th level more non-linear with ~2-3 objectives in the same space and making the 5th a final challenge where you can test out the skills you've learned (could be timed and scored or just a little more challenging puzzle).
Some thougths after testing:
Blocking out the beginning of the level, seeing the possible scale of things.
Starting out the level design progress by mapping level elements and working on a flow figure.
First I tried plotting down every game element I have on paper, so things like:
Some of these make no sense and some overlap with others, but it helped a lot when I was figuring out the flow because I could see what I was missing and what I can combine for later challenges. Also it cleared my mind a lot because this is a mess even on paper.
Very in progress flow figure:
Finishing up work on the main character animations, for now at least.
My spamming attack X/▢ did way too much damage so to balance this I created new attack types:
1. Basic: X/▢ "Primary"
2. Strong: Y/△ "Secondary" & Air X/▢
3. Stronger + Stun: Air Y/△
4. Critical Strike (damage 5x+)
I also changed the secondary attack to a thrust stab because the previous felt really clumsy. I might slow movement during this attack because it's pretty fast and high damage, but that's in the future.
Trying to get the animations to a point where I can move onto the level design finally.
Adding an air attack for the primary attack button (X/▢). Making attacking on ground look less like an activity on ice with an avatar mask. Now the ground attacks are way too powerful, so I'll have to come up with a solution for that one and finally move onto the level design.
Adding a ledge jump because it looks pretty rough without it. It isn't in the video because I essentially broke everything in the process and now it looks worse. I might have to ditch the idea altogether, because I probably should be focusing on something else.
Finishing up the "required" animations and testing what combat style I wanna go with. I've missed some days due to catching a minor cold and some travelling, but should be able to start working more consistently from now on.
I'm continuing work on the animations and almost done with the ones I really need. Starting to test different animations for the combat, I was trying out a combat style similar to what's in the Dark Souls games. This style is slow, calculated and movement is almost fully root motion based, which could be easier to balance and make the players think twice about facing the guards head on. I tried it and I can't get it to go well at all with platforming, so I will probably scrap this idea. Next I will try finish up the main character animations.
Creating the animations that I couldn't just yoink and twist from Mixamo.
The character's rig is from Mixamo's auto rigger and it's of course just a barebones forward kinematics rig, making animating extremely time consuming. So to save some time in animating I added inverse kinematics to the arms and legs.
I encountered some problems with pasting the flipped poses (only animating other hand then copy pasting a flipped pose tot the other side). Pasting flipped poses to the IK target bones worked well but any bones that had the Mixamo naming scheme didn't (literally nothing happened). I thought about making a driver for this (slider from open palm to closed fist) but I don't have enough animations to justify the time that would be spent on that, maybe later though (haven't done it before so it would take a little extra time).
All this, just means that the arm is easy to animate but when making a fist I have to pose every single finger bone (also I can copy it now that I've done it once), which isn't bad enough to start messing with the rig, possibly breaking it in the process. I'm pretty cautious with the rig because it breaks easily for the purpose of importing animations from Mixamo.
For baking the constrained (IK, copy rotation etc.) animations I used the same method that I've used before explained in this post.
Importing the new character into Unity and getting most of the necessary animations for the new model.
Creating a character model and weapon for the main character.
I now have whipped up some story, which I feel like took way longer than it should've.
Didn't feel like posting tuesday's progress on it's own, because I was figuring out how to come up with ideas, learning and was distracted by music the whole time. I had to really concentrate with zero distractions to come up with the simplest of ideas, but eventually I got something that should be just enough. I thought I'd write some bigger story that I would use a part of for the prototype mission, but that would be a waste of time and this prototype is not to test if the story is engaging. So I just wrote short character profiles and a mission that I can easily build upon to use the mechanics I have.
An over qualified mall security guard who took an extra job from his boss at the time Eddie Callous, thinking it would be an opportunity to further his career. Unknowingly he had taken part in a large gang's gun trade that was orchestrated by Eddie. Nick had been assigned to watch their back and thought it was way too shady, but kept at it just to keep his job at the mall. Eventually the trade ended in a jogger being murdered by the paranoid Eddie, for seeing the operation take place. After hearing the gunshots from Eddie's gun he ran towards them, finding an empty parking lot with a deceased jogger. He felt guilty for having been part of it but more angry towards Eddie and made it his mission to stop this from happening again. First he would have to look into the gang's operations further and for this he would need help.
Chip went to the same security guard training as Nick did but dropped out because he had an issue with the authority of the instructors, thinking they hadn't seen any real action in their life and therefore unqualified to boss him around. So he went to the military and became a sniper. He got real good at it but his attitude kept him from getting any further after graduating. Now lost, left only with his sniper skills and sense of humor he was more than ready to do anything that gave him a sense of purpose. That purpose was found when his old friend hit him up and asked for help with a gang he was trying to stop.
Bad childhood left him very paranoid. Got into gang activity by being recruited as security for black market trades. He took over the security firm that now covers his equipment as legal and that funds his luxurious lifestyle.
Chip has been gathering information on Eddie by stalking his vacation home in the mountains. He has seen a meeting take place that Eddie and his partners had participated. They have left the transcript of this meeting on the table. Nick is on his way to the residence. His mission is to steal these documents containing details about Eddie's plans that he hopefully can use to stop them and map out the scale of his operations.
Next up is creating the main character's appearence. This probably just means heavily modifying the current enemy model, making it look like Nick, clearly a former security guard. Maybe a bulletproof vest and a new weapon might do it.
I'm starting the week off by researching narrative design and brainstorming ideas for a story.
To start designing a level, I think I'm going to need a story for the character that I can use as a guide for many design decisions. I started the day with research into narrative design, then played Sly 2 Band of Thieves to see what kind of flow they had for the starting sequence. It gave me some ideas about how I should introduce the mechanics and how the pacing should be. Though it may have made brainstorming ideas for characters a bit trickier because a lot of ideas "I came up" with, I later realized came straight from Sly.
I came up with some characters I think could be interesting and fitting for the mechanics. I'll write a small plot for them tomorrow. Then take a small part of this plot to use for the mission later. Mainly I'm creating the story so I can have the elements of the game belong to a theme, which should give inspiration and guidance on many decisions.
Having a hard time trying to figure out if I have what I need to start designing a simple level.
I've been having trouble figuring out the next steps. I'm not sure if I have enough complexity for the platforming or enough stealth mechanics to make it interesting. So I've been doing research, reading about level design, gathering my thoughts and trying to design a simple tutorial area with little success. Despite this I think I have enough to create a tutorial area and/or a small mission, I just need to take my time designing it and not rush into Unity.
This is a tutorial area I tried creating today but after realising I would have to change literally everything, I gave up and started doing some research into the level design process. Every part of it is unfinished in every single way possible, but I thought I'd show it anyway because it is part of the journey.
This is my first time designing this kind of level so I think the best thing to do right now would be spending the next week researching, designing, blocking out and playtesting, basically utilizing the mechanics I already have to create a small mission. After this I will hopefully have a better idea on how to move forward.
Being hesitant about implementing parachuting but ending up very happy with the result.
Trying out parachuting which at the beginning felt weird with no effects and just the gravity adjusted. It essentially did what a parachute should and that is to slow down falling and give a bit of control, so I was a bit hesitant on moving forward after it feeling a bit out of place. I thought I'd give it a good effort though, because it had been on the todo list for some time now.
After smoothing out the rotation and sudden movements it all of a sudden started feeling like parachuting even with the character basically in a sitting pose. With some additional tweaking I started finding new routes through the level and found myself fiddling with it a little too much which of course gave me a lot of confidence in the idea. This made adding the effects very interesting because I wanted to see how satisfying I could make it.
In the end I'm very happy with the feel and possibilities this opens up in level design.
Now that I've gotten a better picture of what everything is going to look like, I'm going to be adding some actual platforming. Today was mostly about adding double jumping, some effects and platforms.
I've decided to test how the double jump would feel. Now that I have it and after adding a little spice to it, it feels great. I might make it so that you get extra height if you hold but that would be the only tweaking I'd do anymore.
Implementing a simple saving system, that handles the state of objectives and killed enemies.
The objective manager loads state at Start and invokes the OnCompletion event if an objective has been completed before. This causes all the effects to play but fixing that is a job for another day. This script also gives the last item received from an objective back to the player at start.
I decided to go with a free add-on for the saving systems backbone to save some time. I grabbed the one that looked the easiest to implement. Documentation was good and it worked like a dictionary which made it feel familiar.
I also added a handy helper text box to the Game Manager.
Creating a destroyable type of objective. Probably going to be used for a communication tower that can be destroyed making the enemy unable to call back up.
Nothing too fancy. Had to refactor some of the critical strike marker code to work on the objective too.
Adding interactivity for the objectives to enable a key pick up and a gate opening in the future.
First objective in inspector:
Adding climbable blocks and fixing the issue where there would be a ledge in the middle of the wall.
I had an issue with climbing after I hastily threw in the WFC generated world. The walls started out with a ledge that the player would get stuck on every time and then had to "jump wiggle" out of it. You can see the problem in this video.
Essentially I just added wall thickness on the top to account for the bottom. Before those were just empty blocks.
Wall sliced with old blocks:
With new blocks:
Of course there were some troubles during the process.
But these were fixed with some intense connector and exclusion fiddling.
Creating climbable tiles so I can make climbing part of the puzzle instead of just letting the player run away from everything. Below is what the blocks (another one is without the grass) look in the generated environment.
For the "finished" environment the placing of these will most likely be done by hand. I thought that this would make the connector assigning a waste of time but generating the world over and over with these gives so much inspiration for the level design that it was well worth it.
Climbable grass to wall block (there's one other kind that's just the wall):
Adding functionality to the objectives on the scene level.
Creating an Objective Manager for easy management of the events I want to have happen for every objective completed.
Right now the first objective is setting the alarm offline and the second one is setting it online. So they could represent the main electrical switches, that you're tampering for example.
Improving gizmos and debugging, creating functionality for objectives and adding minor things in hopes of large impacts on gameplay.
I added gizmos and labels pretty much everywhere to make it faster to place and debug enemies when creating the level.
The really rough looking objective is the bare minimum that fills the requirements for the functionality I want (Interaction & Feedback). Currently right trigger (R1/RB) acts as the interaction button but we'll see what happens to the roll (on O/B button).
During my research on Monday I saw a couple minor things that I think have the potential to bring a lot to the gameplay. This alarm was one of them. All of them:
Fixing and tweaking minor things but mainly doing research and thinking about what to do next.
I spent my day fixing bugs and tweaking things but I also thought about what platforming do I want in the prototype. I did some research into similar games and I got a couple of ideas but I'm not sure if I want to start implementing all of those before knowing what I want the main game loop to look like. So now that I have the combat and enemy stealth behaviour I will create the functionality for the objectives. Meaning the main game loop would be "playable" before I start adding more complex platforming mechanics.
Adding to the inspection node on the behaviour tree to make the enemy look like it's actually inspecting.
The inspection consists of 3 parts:
Currently the lengths of these parts are hard coded to a single value but I will probably create a class which can get animation lengths from the animator override controller easily.
Today I added footsteps and an awareness meter.
Once I got the footstep sounds in, I noticed there was nothing to tell if an enemy can hear them or not. I thought an exclamation mark that fills up could be an fast and easy way to visualize this.
Not much to show today because I'm still fixing combat. I did get it to a point where I can control the difficulty pretty well and it doesn't have too many bugs. I will take the time to make it fun later, because right now I'm not sure what I should do to it and I have more important things to implement such as stealth.
After getting frustrated for the fifteenth time I decided to move the whole combat code to the behaviour tree. Before I had the attacking in EnemyBehaviour being controlled from the behaviour tree with a boolean but this caused many headaches as I thought it might. After the refactor, everything got a lot easier to debug and work on.