Cracking Open Combat
Posted: Mon Aug 12, 2019 5:01 pm
One of my earliest and best memories with RPG style games goes back to a handful of games. I remember reading walls of text in Gemstone III, typing out endless actions in Quest for Glory, or spending countless hours on Ultimate Online to rule the server with a handful of friends. Daggerfall still made the largest impact for me because it showed me the future potential of the genre, the massive scales and depths possible, and the ability to allow the player to truly make the game theirs (like traditional D&D did). It started my life long addiction to action based RPGs that goes to this day with my modding of Skyrim.
I really want to get into this Daggerfall build and try my hands at modding for it. The first system I personally want to see remade, if possible, is combat. Currently combat is 100% chance based, using a large list of factors to figure out damage and hit percentages. I would like to move to a more modern Skyrim-lite system, but I'm unsure if this could be possible at all with the engine. So, before I invest a ton of time, can some people answer this for me and point me in the right direction.
First, can we modify the based combat system at all? Is there a way to access the hit detection data? I would like to have hits based on if you swing within hit distance of the enemy and nothing else. If there in range, you swing, you hit. Possible including/programming in weapon ranges and speed, as all documentation currently shows only difference between weapons in combat is their damage and material modifiers. Not sure about attack speed being an option though, since I have no documentation on how attack and attack animations work.
Second, can we modify the shield to create an actual blocking mechanism? When player holds the right mouse button, all damage coming at the front of the player is blocked. Let go, player is open to damage again. I don't imagine any real hitbox detection being possible in the older engine?
As an extension of blocking, if it can be put in, weapon parries could be added to, right? Create a timed trigger that blocks all damage coming at the player from the front for set parry duration with a small cooldown window.
Three, turn dodge skill into an actual ability. Currently dodge is a boring passive trait that just ups your chance of being missed by an enemy on a hit register. Could a trigger be coded in to make the player invulnerable for a second or less and move the player a short distance quickly to mimic a real life dodge at the cost of some stamina. The better the ability, the cheaper it costs, lower the CD/recovery time for you, and a small distance increase on space traveled.
Forth, maybe even a parry/collision system? Not even sure if this would be possible, but wanted to ask. Can you pull data from enemy combat states? Can we tell when an enemy swings? If so, would I be able to create a trigger of some sort that detects the enemy combat state when you swing, and if they are in a swing state and so is your enemy on hitting, cause your attack to cancel/parry costing both you and the enemy stamina but damaging no one?
Lastly, if luck is kept as a state for the core game, it could be changed to mitigate or increase critical strike chances. the enemy critical strikes you, luck has a chance to mitigate it into a normal hit. You hit someone, the higher the luck, the higher the chance of a lucky, random critical hit. This way, the player still has high control and risk/reward to combat, but still has a purpose/use for the luck skill in combat.
I love daggerfall, but the combat system takes all the power from the player and gives it over to passive systems and luck, which is horrid design in modern gaming theory and systems.
Now, this doesn't address the issue of being able to easily see when the enemy is attacking, as currently sprites don't clearly show attacking because of the lack of any attack animations or stages for the enemy sprites. However, this could be remedied for testing by some other easy, quick visual trick to indicate attacks and combat states; it could be the sprite blinking real quick when they initiate an attack or something like that.
I don't see any mods or discussions about this area of the engine and modding tools. Any information on how unity and the engine communicate and handle the actual combat system would be greatly appreciated.
https://en.uesp.net/wiki/Daggerfall:Combat
https://en.uesp.net/wiki/Daggerfall:Weapons
I really want to get into this Daggerfall build and try my hands at modding for it. The first system I personally want to see remade, if possible, is combat. Currently combat is 100% chance based, using a large list of factors to figure out damage and hit percentages. I would like to move to a more modern Skyrim-lite system, but I'm unsure if this could be possible at all with the engine. So, before I invest a ton of time, can some people answer this for me and point me in the right direction.
First, can we modify the based combat system at all? Is there a way to access the hit detection data? I would like to have hits based on if you swing within hit distance of the enemy and nothing else. If there in range, you swing, you hit. Possible including/programming in weapon ranges and speed, as all documentation currently shows only difference between weapons in combat is their damage and material modifiers. Not sure about attack speed being an option though, since I have no documentation on how attack and attack animations work.
Second, can we modify the shield to create an actual blocking mechanism? When player holds the right mouse button, all damage coming at the front of the player is blocked. Let go, player is open to damage again. I don't imagine any real hitbox detection being possible in the older engine?
As an extension of blocking, if it can be put in, weapon parries could be added to, right? Create a timed trigger that blocks all damage coming at the player from the front for set parry duration with a small cooldown window.
Three, turn dodge skill into an actual ability. Currently dodge is a boring passive trait that just ups your chance of being missed by an enemy on a hit register. Could a trigger be coded in to make the player invulnerable for a second or less and move the player a short distance quickly to mimic a real life dodge at the cost of some stamina. The better the ability, the cheaper it costs, lower the CD/recovery time for you, and a small distance increase on space traveled.
Forth, maybe even a parry/collision system? Not even sure if this would be possible, but wanted to ask. Can you pull data from enemy combat states? Can we tell when an enemy swings? If so, would I be able to create a trigger of some sort that detects the enemy combat state when you swing, and if they are in a swing state and so is your enemy on hitting, cause your attack to cancel/parry costing both you and the enemy stamina but damaging no one?
Lastly, if luck is kept as a state for the core game, it could be changed to mitigate or increase critical strike chances. the enemy critical strikes you, luck has a chance to mitigate it into a normal hit. You hit someone, the higher the luck, the higher the chance of a lucky, random critical hit. This way, the player still has high control and risk/reward to combat, but still has a purpose/use for the luck skill in combat.
I love daggerfall, but the combat system takes all the power from the player and gives it over to passive systems and luck, which is horrid design in modern gaming theory and systems.
Now, this doesn't address the issue of being able to easily see when the enemy is attacking, as currently sprites don't clearly show attacking because of the lack of any attack animations or stages for the enemy sprites. However, this could be remedied for testing by some other easy, quick visual trick to indicate attacks and combat states; it could be the sprite blinking real quick when they initiate an attack or something like that.
I don't see any mods or discussions about this area of the engine and modding tools. Any information on how unity and the engine communicate and handle the actual combat system would be greatly appreciated.
https://en.uesp.net/wiki/Daggerfall:Combat
https://en.uesp.net/wiki/Daggerfall:Weapons