Devlog #2 - Project debut in school!
Here is the list of updates. All work below is my own, except where I explicitly state that others have contributed or used third-party assets.
Combat system update: Stats components and simple UI. State management updated to Gameplay Tags base
Locomotion system update + make animations. Locomotion stop animations based on Distance Matching.
Hit Feedback update: Hit Stop and Camera Shake
Boss model update (contributed by Yiyu Wang and Zeshi Chen)
Project debut in school
Because there are many updates this month, let's first put a demo video of the game for an overview.
Combat System Update
I made an independent Stats component. Currently, it's only used for basic HP. This part of the work is mainly to provide extendability for future combat system design.
In addition, the data structure used in the State management system was changed from the native Enum type to the Gameplay Tags. This is the recommended practice in the tutorial video.
From personal experience, there are pros and cons to this approach. Gameplay Tags are sufficiently scalable in terms of data structure and have a good tree hierarchy. However, Gameplay Tags are essentially a dynamic data structure, and the engine can only obtain them at runtime, and cannot check for type errors at compile time. This increases the chance of human error. For example, ActionType.Dodge and State.Dodging easily confuses when manually editing data, resulting in unexpected mismatches. This is the weakness of Gameplay Tags compared to enum types. I most hope to use the nested enum type as a static data type with hierarchy, but it seems complicated to implement in the blueprint. In the end, I wrote a blueprint function library to process the type checking of the tag at runtime, as a compromise. At least it's better than nothing.
After the player presses a button, the camera can automatically focus on the targeted enemy, and the attack action can be corrected towards the target. When I was in Ouka Studio, I designed this system as a very complex one, but considering my project's scale, I only implemented some of those functions.
The detailed design of the targeting system can be read here.
The video below demonstrates the features of the targeting system.
In addition, for the pitch of the camera, I tried five different modes: Free, Constant, Limited free, Always to target, and Auto by distance (this is selected in the final game)
The detailed design can also be read here.
Locomotion system update
I learned Lyra's animation system, and made some functions according to its ideas:
- Use the Linked Animation Interface to reuse the logic of the animation blueprint. Now the weapon / non-weapon modes share the same animation blueprint logic, and only the assets are changed.
- Added movement start and stop animations for different speed modes.
- The stop animation is applied with Distance Matching. And I construct a workflow for it.
- Animate missing animation and modify existing animations in 3rd party assets.
The following is a video presentation of the current Locomotion system:
Distance Matching workflow: Because the technical detail is too long, I wrote an additional article separately. Click here to read more about the distance matching workflow.
In addition, regarding the part of Locomotion, I also want to make left and right foot synchronization, pivoting animation, and other functions in the future. However, there may not necessarily be sufficient assets and time for these developments. So maybe I will put this part after I finish the BOSS development.
Hit feedback update
In terms of hit feedback, I add the attacker's hit stop (slow motion) and camera shake. At present, just like the sound effect, only light attack and heavy attack are distinguished.
Well, these are not difficult to make, but they significantly improve the actual hit feedback. The next step is to make more hit feedback features on the attack receiver side.
BOSS Model Update
For concept design, we have updated the designs of several new BOSS arm modes. I already have some exciting combat moves for these modes in my design docs. I proposed the combat design for these modes, and character artist Yiyu Wang created the concept art.
We also made a high-poly BOSS model, sculpted in ZBrush by character artist Yiyu Wang.
Technical artist Zeshi Chen did low-poly model baking and rigging.
Debut in school
Finally, this project was officially published to most students for the first time in the school's course project review this month. I have received a lot of positive feedback, and many students have contacted me hoping to participate in cooperation. Thank you all very much for your love and support for this project!
The first thing is to improve the combat system, such as the hit reaction system. On this basis, the development of the combat system can be considered finished and paused for a while. Afterward, I will fully focus on AI and skills development of the BOSS. After the BOSS low-poly model rigging is completed, we will also push the motion capture of the BOSS animation. The conceptual design and modeling of player characters is also progressing steadily. Please look forward to further updates!