Side Samurai
Markos-Erik Leemet
''Side Samurai is a sci-fi side-scrolling 3D video game. You will be playing as a stylish / modern female samurai warrior going through a bunch of different levels (though possible just one or two in the end) while fighting with different creatures/things. There will be some hints and clues and talking with NPCs. This will help with the situation of the game story as the main character is as clueless and confused as the player is. This game is mostly inspired by Nier: Automata''
The plan is to have a functioning game with decent graphics, which is available for mobile and/or PC platform(s). The game will mostly be focused around the graphics which will require a lot of 3D modelling (for the different levels, characters, furniture etc) and visual effects such as particles and custom materials (for the sword cutting through wind effects, dust and water falling from ceiling and details as such). I will be using Blender for creating the 3D assets and Unity for the game engine and bringing everything together.
Milestone 1 (06.03)
- The main character (geometry, UV, texture)
- Unity scene setup for the player
''The main character took more time to create than I expected. Although I finished the milestone, the model definitely needs more refinement with some details. Here are some progress screenshots.''
Since humanoid characters are symmetric I was able to use the mirror modifier in Blender which created the other half automatically.
''For performance optimization I though I should create a normal map of the high poly clothes and apply it on a low poly surface.
Here you can see the normal map applied on clothes and pants. This is a Blender render in cycles.
And finally I have set up the Unity scene with character movement and materials. I also played around with Unity cloth simulation.
Milestone 2 (20.03)
- Main character finalizing
- Animations (bones, bone constraints, weight paint)
Here I have the finished result on the main character. It looks a lot different than previous version because I decided I wanted to add geta (the wooden sandals) to have more traditional look. Because of that decision I had to change some clothing as well.
I also recreated the hair. This time instead of poly modelling or curving mesh I found a nice button in Blender that can create geometry based on the curve. So that when I change the length of the curve the mesh also changes accordingly.
After adding the bones according to the Unity humanoid bone hierarchy. I had to weight paint the mesh vertices to the representing bone. The auto weight paint does a good job to get started but it's not perfect nor designed for humanoid characters. The face was almost yellow before.
Once the character was weight painted it was time to animate. I didn't use IK bones in Blender to help with animation, instead I created my own system with "lookAt" constraints.
And finally my end result
Milestone 3 (03.04)
- Add swords to the character
- Some enemy NPCs
For the sword I also created some maps such as a normal map for the handle, roughness map and diffuse. In Unity there is no texture input for roughness but there is mask map. It is a combination of metallic, occlusion, detail mask and smoothness.
So I created the mask map (the third map in the picture below) for the sword according to the Unity HDRP mask map requirement sheet. This mask map can be also used to create better skin material in the future.
After the baking of normal map and texturing I added a curve for the sword through curve modifier. Then it was time to make a shorter version of it. The point of having two swords in the game is that the longer sword is slower to move but it deals more damage, the exact opposite goes for the shorter sword. The shorter sword also allows for extra abilities.
After the creation of the two swords I created a drone as one of the enemy npc.
It was hard for me to figure out how can I have my character have an idle animation transition to equipping one of the swords and transition back to idle animation without creating two separate animations one with and second without holding the sword. The optimal solution to that would be to only have the idle and sword equipping animations. The answer is to use animation layers in Unity but I had trouble getting it to work. It involved me creating a new Unity project and even recreating the character armature and therefore the animations too. Later I noticed the problem was I was using Unity humanoid animation type which cancelled every bone rotation and transforms that do not belong into the Unity humanoid avatar set. Meaning that only bones such as legs and head etc would be able to move but not sword and not even hair. I had to switch to generic in order to continue but the discovery of that issue caused me a lot of time wasted. Here is a screenshot of how everything looks currently in Unity.
Milestone 4 (17.04)
- Background assets (house, tree, bridge)
I think the tree model came out pretty good and looks almost real. With the way I created it I could have a lot of different tree shapes with little time loss. I only created one so far.
It turns out that for me modelling houses is pretty difficult. I think it is because of the size of it. And I am impatient to add all of the details in on a large scale structure but I think this came out pretty good. The only problem is that I don not have enough textures for it.
Here are some procedurally generated wood textures meant for the house model.
The bridge was pretty easy to make. Could be improved a little bit but I think it is good enough.
I also made a vending machine because I imagined I would have a nice city landscape and that would fit nicely in there, but that did not happen. I was short of time again. I think I am able to place it somewhere though.
By the end of this milestone I realized there is not much time left for more details and I should work on more bigger things.
Milestone 5 (08.05)
- Terrain
- Player movement script
''The terrain was pretty fun to build. Though I originally wanted to create the terrain in Blender that could be procedurally generated and procedurally colored based on height. I could have also change the subdivision level lower which would mean lower amount of detail on the terrain but more performance. I ended up using Unity terrain where you can use a brush to paint geometry and textures. One reason why I don't like Unity terrain is because I can't make caves. But I figured I could just use it for background and make geometry for caves later in Blender.
While creating the terrain in Unity I designed it in a way so that the player has to move along a curvy path.''
I ended up creating a Bezier curve that will lead the player forwards to the finish.
I figured out I can use the Lerp funtion for finding a point on the curve.
Here is a screenshot of the player following the path
Milestone 6 (22.05)
- Replace the player geometry.
- Create basic AI for the drone (attack)
- Attack animation for the player character
- A simple platform (no textures)
I wanted to create an advanced armature with more accurate deformation based on anatomy for the main character but ended up reverting back to the old model with existing walk/run jump animations. I added a sword and an attack animation to the old model.
The drone AI was definitely a challenge but I managed to create something that follows the player and shoots lasers when standing still. I also wanted to implement some sort of path finding, maybe based on colliders in the world but ended up just using a straight line towards the player. The player can attack the drone and drone can attack back. The red cube under the drone indicates the aiming direction. The cube will not be seen in the game camera view.
I created some basic platforms to jump on because I imagined the game should be platformer type game due to limited 2D movement. The jumping physics need more work to be compatible with the level design.
I figured since I have an attack mechanism for both player and drone, I should create a visual feedback of hit point system. I used particle effects for that.
Since the programming basically works I thought I could at least decorate the level a little bit. So I used the assets I made and only now got to use them.