When I finished the rig for Semko’s new model, in the last devlog, I could finally start working on the combat, when it comes to the visual aspect. I immediately added some test animations so I could test how the combo logic I coded previously, would look like.
But wait a second, a sword and sword wielding animations? Wasn’t Semko (previously known as Emko) supposed to be a turn-based game? Initially, yes. But as some of you might know, I experimented a lot in the beginning and very quickly switched things up, like the switch from 2D to 3D or Godot to Unreal, the new art style with adult Semko and even the naming itself, going from Emko -> Project-E -> Semko.
I’m just exploring in “real-time” and sharing that, and that means that the game will change until my vision for it solidifies (it did). But throughout that I was always keeping an open mind and didn’t commit to something entirely. Including the combat - where I would experiment with all sorts of ideas, like normal turn-based combat, turn-based combat, but you can freely move, but that felt a bit weird, because you as a player were just kinda watching - you moving didn’t really affect the gameplay. So, I thought what if the Player can attack too? and the monster attacks aren’t fully turn-based but can be triggered any time by the player with cooldowns, so you might call that semi-turn-based.
From here on, it’s open combat, where you as a player fight alongside your team of monsters.
That, of course, introduces us to new things, like weapons. For melee combat, we have:
- One-Handed (Swords)
- Two-Handed (Big/Heavy Swords)
- Dual Wield (Daggers)
- Two-Handed (Range Spears)
Besides the type of the weapon, the combat itself also brings some new additions, like charged attacks, which also could have certain effects, like shooting a slash.
Jump attacks, which gets performed when in-air and attacking.
The combat logic is quite simple, I just do a trace during the attack animation, check Hit Actors, if they are of the type that I can damage, and if so, I apply a Damage GameplayEffect (GAS).
On a surface level, this is quite simple, but there is a lot of things that need to be considered, like:
- Player state
- Weapon type and state (durability, element, bonuses)
- Combat state (Weapon or Bow, Can Attack?)
- Is alive
- Abilities state
- Attack state
- Enemy states and location
The attack button itself does four things:
If nothing is equipped:
> Play “NoWeaponAnimation”
If there is a weapon equipped but is holstered:
> Play “WeaponUnholsterAnimation” and unholster weapon (attach to hand)
If there is a weapon equipped and unholstered:
> Play “AttackAnimation” and do attack logic
If there is a weapon equipped and unholstered and button held for certain time:
> Play “ChargedAttackAnimation” and do attack logic
But with all these states, and logic it can quickly result in a lot of ugly code, for sometimes quite simple mechanics.
To make my life easier, I switched completely to GameplayTags to handle this kind of logic, which you can think of global “group names”, “aliases” or well, just “tags” that can be added to actors and be checked against. So instead of defining bWeaponHolstered, you can have a global Tag, that you can add if the weapon is holstered, and the tag is accessible to all actors. The tags can also be used in AnimInstances (Animation Blueprint) and basically anywhere you want, which makes them very nice to work with. (And of course it works seamlessly with GAS, Epic’s GameplayAbilitySystem)
There is so much more, but I’ll leave it at that.
The second combat type are range attacks, think bow and arrows. Which is kinda self explanatory, you just shoot arrows with a bow - but, there will be all kinds of arrows and bows to choose from, like long range, low range but strong and multi-shot bows and arrows with certain attributes or effects, like fire or bombs.
The third combat type are team abilities, from monsters you catch and assemble a team with. The monsters in your team do attack by themselves, but if needed you can activate abilities on demand with your abilities menu, which all happens in run-time. The abilities can be all sorts of things, targeted, AOE, heals, shields and so on.
In addition to combat advances, you can also use the abilities outside of battles, to give you advantages, like blowing you up into the air to get some Y-Axis advantage.
Monsters and their abilities can also help you traverse the world, by riding on the monster, by terrain, water or air.
More combat:
When fighting many enemies at once, it comes handy to be able to focus on the one you want to actually attack, so when holding Defend, you focus on an enemy, and to switch the target, you just press Defend again.
You’ll also be able to unlock more attack combos, where the player starts with only a four attack combo, later in the game, you can extend it to up to 6 or 7.
Not yet (properly) implemented combat (experimental)
You know how in the Budokai/Tenkaichi games, you can heavy attack, with a designated heavy attack, this is something I had in mind too and for this I actually have implemented most of it (of course, because it’s almost identical to normal attacks) but I didn’t find the time to actually animate the heavy attack animations.
I also worked a bit on items, but again, didn’t really implement anything serious. There will be a quick item consume button - but also a throw mechanic, to throw the item (or your weapon). This enables a lot of cool scenarios, like throwing a water item at an enemy, then either activating your electro monsters ability to increase damage - or if you have a electric weapon equipped, you could throw that to achieve the same effect.
The throw mechanic was not implemented at all for this devlog though.
But yeah, this element system applies to everything - your water type weapon or monster deal more damage against fire type monsters.
I also implemented a simple Inventory and Pause Menu, and now you can actually equip equipment or items in the pause menu.
The UI itself does not look great, as you might’ve noticed, but it’s still very early and will work on that in the future.
But at least you can also save the game now, which currently only saves your Inventory (Weapons, Monsters, Items), your equipped Equipment and your Location/Rotation in the world.
Another thing I have worked on, but only a proof of concept, was to make equipment upgradable at some sort of blacksmith, or upgrade NPC in exchange for items. It does what you think it does, it repairs or upgrades your equipment, but I also play with the thought of enchanting or equipment evolutions (when the equipment reaches max level).
Let’s talk about enemies
There are monsters, duelists and obelisks.
Monsters can be fought, caught and you can just be friends with them, they can be solo or in a group, with other monsters or part of a duelists team.
Duelists are NPCs in the world, solo, or with a team of monsters, that you can battle as well. These NPCs still serve the same purpose, like in the first devlog to help you gain rank points.
Obelisks are structures spread around the world that will stay a mystery for now.
Monsters are the most unique enemy type (literally), they have a unique level, unique attributes, elements, abilities and some can even carry equipment.
As a Player of course, you can catch these monsters and add them to your team (4-5 slots)
They will follow you around, fight along side you and with that, gain experience, level up and even evolve.
Enemy AI was really challenging to do and I hope I can improve on that in the future.
But yeah, besides dozens of animations I made, I also added gliding/flying and climbing, but the animations are very barebones.
And lastly some VFX and SFX.
Whats next?
This area will become a small tutorial area with one or multiple objectives to serve as a Demo, but also to teach how to play and show off the core gameplay. I think, that I would need help to really get the game off, and I do really believe that you could build a small team of talented and high agency people to create a pretty decent game - but that might not be possible for me right now, and if not, I’ll just continue at my own pace and release some version of the game, that maybe isn’t that ambitious.
Thank you for watching! You can read or watch the next devlog here.
This was posted originally `Jan 18, 2024` on YouTube, and is a slightly edited version written `Nov 27, 2025`
Did you like this post? Tell us
Leave a comment
Log in with your itch.io account to leave a comment.