Search Unity

[WIP] Park Engine - Action RPG / Arena Fighting Engine

Discussion in 'Works In Progress - Archive' started by liero116, Mar 8, 2016.

  1. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72


    So this is an action RPG engine I've been working on for a while. For the purpose of demonstration, I'm using it to make an arena fighter. I've built it to actually function like a fighting game would so technically it could be re-tooled into any form of a fighting game. I imagine that it could very easily be used to make a Smash Bros style game. This whole project was intended as a way for me to learn C# and Unity, but it kind of blew up into something bigger. For now, it works pretty well. There are a few flaws I'm working out, but I'm pretty happy with it so far.

    Engine overview:

    Here's a quick overview of some of the engine's features.

    • 4 player support. Easily extendable for more, but probably not practical.
    • Full xInput controller support. Actually that's all it support for now.
    • Simple camera set up that keeps all players on screen.
    • Built in UI to keep track of player data.
    • Real fighting game-style hit detection with hit/hurt boxes. Hurt boxes can be procedural or set depending on preference. I tend to not like procedural collisions, but the functionality is there.
    • Relatively easy to use move editor that can be changed and saved at run time for easy testing and modification.
    • Weapon-based combat support. Actually the whole game is weapon based, but hand-to-hand combat is easy too.
    • Legacy animation only support (for now). I don't really like Mecanim for a project like this, but if I can find a way to make it work and feel right, I may implement it later.
    • Adjustable input buffer for easier cancels.
    • RPG style stat system using a variety of values that affect the character's damage input/output as well as other stats like total HP or MP.
    • Built-in stamina and MP system.
    • RPG style status effects like "poison".

    Current button layout:
    Not all buttons are used now, but what is needed is there. It's probably obvious how much I like the "Souls" games based on this layout.


    Move Definition:
    Below are some shots of how moves (attacks mainly) are edited and created. It's not pretty, but very powerful.

    As you can see, there are a ton of options available to each move. I add features as I need them, but this is mostly complete and is useful for pretty much any situation.

    State definition / Move type / Animation
    This area controls some relatively simple things that mostly define what kind of move it is on a broad spectrum.

    Here's a few examples:
    • State Type - Determines what kind of state the move is. Different flags affect how attacks and hits are handled.
    • Reset Damage/Gravity Scaling - This is not something that is used frequently, but this resets infinite protection to make combos more interesting and effective. Currently only 1 technique has this effect. This move cancels whatever you are doing and lets you do anything else at the cost of a significant amount of MP.
    • Auto Look - Automatically faces toward the last opponent hit at the start of the move only if a combo greater than 1 is occurring and if no direction is pressed. If a direction is pressed and if Direction Cancel is active, the player will change its facing direction based on the move input.
    • Move Type - More flags to specify what kind of move it is. Different rules are applied on the back end depending on what flag you select. For example, marking the move as a "Special" automatically deducts 1 MP on use.


    Special effects, sound, status
    This section covers mostly visual and sound effects. It also covers how the effects are displayed and also controls whether the move uses a procedural hit or not.

    Some examples:
    • Require MP - If the player does not have the minimum amount of MP (default to 1) this move will not come out.
    • Start time / End time - The slots surrounding these values are pretty self explanatory, but time in this engine is based on frames and not seconds. It's easier and more intuitive to think in terms of frames in fighting games than seconds so that's what I use. The engine is locked at 60fps as well.
    • Special Collisions - If "Use Attack CLSN" or a number is placed in "Special CLSN", the attack will not use a procedural hitbox. Procedural hitboxes are attached to the player's weapon and follow the exact path. I don't really like using these, but the option is there. Normal collisions are placed at the "Special CLSN Offset" for a set period of time.
    • Status Effects - Enter the status effect you want here and the amount it inflicts. Pretty simple.


    Charge / Invincibility
    This section covers some specific move properties that can give a move an extra edge.

    • Charge - When used, a charge attack is performed when the button is released. The "Laser Sight" property is used for aiming moves, but most of the time, this isn't used.
    • Armor - This is what's known is fighting games as "Super Armor". Basically you enter the time frame and the number of hits you want. If you are hit during this time frame you can absorb the entered number of hits without flinching. You still take damage though.
    • Invincibility - During this time frame, you can't be hit. I'll probably add some flags to specify what type of invincibility (i.e. attack, throw, projectile, etc.), but for now, it's fully invincibility.


    Hit definition part 1
    This section is huge and covers what the attack actually does when it connects.
    • Frame Data - This determines what frame the move becomes active, for how long, and how long (in frames) the attack stuns the opponent. A read-out below even tells you how much "frame advantage" you have on hit or guard. If you are unfamiliar with the term "frame advantage"; essentially a positive value means the attack is safe on hit or block and is easy to combo out of. A negative value carries risk in that it is easier to punish based on how negative the value is. An attack that is a -10 on block basically means you are taking a risk by throwing it out and your opponent has 10 frames to try and counter hit you.
    • Hit - This is a somewhat bulky section that covers mostly damage outputs. You can control the direct amount of MP gained, the stamina cost of the move, the type of hit, what type of hit animation is played on hit, and the amount of "hit stop". Hit stop is that interesting effect where both characters freeze for a bit when an attack lands. It's pretty typical in fighting games and is there to help the player confirm if a hit landed by giving them a small amount of time to visualize the hit. It's also a nice effect to give the attack more weight or impact. You can adjust the amount of time as well as the "power" which determines how violently the target shakes. For weak attacks, a time of 8 - 10 and the power at 1 or 2 tend to be sufficient. Stronger attacks can have times upwards of 15 - 20 or more with the power between 3 - 5. The power rating is pretty sensitive. Going too high can make the target seem to warp on subsequent hits.
    • Multi Hit - My first deprecated feature. It does nothing. I initially had it turn the collision on and off based on a set frequency, but it ended up being more reliable and predictable to have separate states for multiple hits.


    Hit definition part 2
    This section controls the physics of the performing player as well as the physics of the hit target.

    • Hit physics - This area controls what happens to the target when the attack connects. You can check off "fall" to make the target fall on hit or set the number of ground / wall bounces the single attack can create.
    • Player physics - This controls how the player's physics work during the move. Preserving the momentum will not reset the move speed when the state begins. If this is unchecked, the "start move speed" value is used only on frame 0 of the move's activation. You can "invert move" to have the character move backwards. You can have a second velocity set, if you like in the "move time" area. Typically, "start move time" is set to 0 and the forward player movement is dictated on specific times within the move, but this is really down to visual preference. I like to have the player move forward during the attack swing.
    • Cancels - This area is very simple but very useful. You can drag a move prefab into a field corresponding the the button you want and set what the cancel times are. "Cancel" is the first frame you can cancel the move into and "Hit Cancel" is the first frame if the attack lands. Typically, "Hit Cancel" comes first to give connecting moves more utility. There are also other flags and fields that do other fun things.


    Those are the basics for now. There's more going on in the engine, but this is a good starting off point. I plan to develop the engine more to create a large scale action RPG and possibly make it a bit more user-friendly for the asset store. Not sure about that yet, but it's possible.

    Also as a side note, I did everything you see here from scratch in C#, Maya, Photoshop, and a few other little tools here and there. Oh, except the grass which is this: https://www.assetstore.unity3d.com/en/#!/content/36335

    So this is an action RPG engine I've been working on for a while. For the purpose of demonstration, I'm using it to make an arena fighter. I've built it to actually function like a fighting game would so technically it could be re-tooled into any form of a fighting game. I imagine that it could very easily be used to make a Smash Bros style game. This whole project was intended as a way for me to learn C# and Unity, but it kind of blew up into something bigger. For now, it works pretty well. There are a few flaws I'm working out, but I'm pretty happy with it so far.

    Engine overview:

    Here's a quick overview of some of the engine's features.

    • 4 player support. Easily extendable for more, but probably not practical.
    • Full xInput controller support. Actually that's all it support for now.
    • Simple camera set up that keeps all players on screen.
    • Built in UI to keep track of player data.
    • Real fighting game-style hit detection with hit/hurt boxes. Hurt boxes can be procedural or set depending on preference. I tend to not like procedural collisions, but the functionality is there.
    • Relatively easy to use move editor that can be changed and saved at run time for easy testing and modification.
    • Weapon-based combat support. Actually the whole game is weapon based, but hand-to-hand combat is easy too.
    • Legacy animation only support (for now). I don't really like Mecanim for a project like this, but if I can find a way to make it work and feel right, I may implement it later.
    • Adjustable input buffer for easier cancels.
    • RPG style stat system using a variety of values that affect the character's damage input/output as well as other stats like total HP or MP.
    • Built-in stamina and MP system.
    • RPG style status effects like "poison".

    Current button layout:
    Not all buttons are used now, but what is needed is there. It's probably obvious how much I like the "Souls" games based on this layout.


    Move Definition:
    Below are some shots of how moves (attacks mainly) are edited and created. It's not pretty, but very powerful.

    As you can see, there are a ton of options available to each move. I add features as I need them, but this is mostly complete and is useful for pretty much any situation.

    State definition / Move type / Animation
    This area controls some relatively simple things that mostly define what kind of move it is on a broad spectrum.

    Here's a few examples:
    • State Type - Determines what kind of state the move is. Different flags affect how attacks and hits are handled.
    • Reset Damage/Gravity Scaling - This is not something that is used frequently, but this resets infinite protection to make combos more interesting and effective. Currently only 1 technique has this effect. This move cancels whatever you are doing and lets you do anything else at the cost of a significant amount of MP.
    • Auto Look - Automatically faces toward the last opponent hit at the start of the move only if a combo greater than 1 is occurring and if no direction is pressed. If a direction is pressed and if Direction Cancel is active, the player will change its facing direction based on the move input.
    • Move Type - More flags to specify what kind of move it is. Different rules are applied on the back end depending on what flag you select. For example, marking the move as a "Special" automatically deducts 1 MP on use.


    Special effects, sound, status
    This section covers mostly visual and sound effects. It also covers how the effects are displayed and also controls whether the move uses a procedural hit or not.

    Some examples:
    • Require MP - If the player does not have the minimum amount of MP (default to 1) this move will not come out.
    • Start time / End time - The slots surrounding these values are pretty self explanatory, but time in this engine is based on frames and not seconds. It's easier and more intuitive to think in terms of frames in fighting games than seconds so that's what I use. The engine is locked at 60fps as well.
    • Special Collisions - If "Use Attack CLSN" or a number is placed in "Special CLSN", the attack will not use a procedural hitbox. Procedural hitboxes are attached to the player's weapon and follow the exact path. I don't really like using these, but the option is there. Normal collisions are placed at the "Special CLSN Offset" for a set period of time.
    • Status Effects - Enter the status effect you want here and the amount it inflicts. Pretty simple.


    Charge / Invincibility
    This section covers some specific move properties that can give a move an extra edge.

    • Charge - When used, a charge attack is performed when the button is released. The "Laser Sight" property is used for aiming moves, but most of the time, this isn't used.
    • Armor - This is what's known is fighting games as "Super Armor". Basically you enter the time frame and the number of hits you want. If you are hit during this time frame you can absorb the entered number of hits without flinching. You still take damage though.
    • Invincibility - During this time frame, you can't be hit. I'll probably add some flags to specify what type of invincibility (i.e. attack, throw, projectile, etc.), but for now, it's fully invincibility.


    Hit definition part 1
    This section is huge and covers what the attack actually does when it connects.
    • Frame Data - This determines what frame the move becomes active, for how long, and how long (in frames) the attack stuns the opponent. A read-out below even tells you how much "frame advantage" you have on hit or guard. If you are unfamiliar with the term "frame advantage"; essentially a positive value means the attack is safe on hit or block and is easy to combo out of. A negative value carries risk in that it is easier to punish based on how negative the value is. An attack that is a -10 on block basically means you are taking a risk by throwing it out and your opponent has 10 frames to try and counter hit you.
    • Hit - This is a somewhat bulky section that covers mostly damage outputs. You can control the direct amount of MP gained, the stamina cost of the move, the type of hit, what type of hit animation is played on hit, and the amount of "hit stop". Hit stop is that interesting effect where both characters freeze for a bit when an attack lands. It's pretty typical in fighting games and is there to help the player confirm if a hit landed by giving them a small amount of time to visualize the hit. It's also a nice effect to give the attack more weight or impact. You can adjust the amount of time as well as the "power" which determines how violently the target shakes. For weak attacks, a time of 8 - 10 and the power at 1 or 2 tend to be sufficient. Stronger attacks can have times upwards of 15 - 20 or more with the power between 3 - 5. The power rating is pretty sensitive. Going too high can make the target seem to warp on subsequent hits.
    • Multi Hit - My first deprecated feature. It does nothing. I initially had it turn the collision on and off based on a set frequency, but it ended up being more reliable and predictable to have separate states for multiple hits.


    Hit definition part 2
    This section controls the physics of the performing player as well as the physics of the hit target.

    • Hit physics - This area controls what happens to the target when the attack connects. You can check off "fall" to make the target fall on hit or set the number of ground / wall bounces the single attack can create.
    • Player physics - This controls how the player's physics work during the move. Preserving the momentum will not reset the move speed when the state begins. If this is unchecked, the "start move speed" value is used only on frame 0 of the move's activation. You can "invert move" to have the character move backwards. You can have a second velocity set, if you like in the "move time" area. Typically, "start move time" is set to 0 and the forward player movement is dictated on specific times within the move, but this is really down to visual preference. I like to have the player move forward during the attack swing.
    • Cancels - This area is very simple but very useful. You can drag a move prefab into a field corresponding the the button you want and set what the cancel times are. "Cancel" is the first frame you can cancel the move into and "Hit Cancel" is the first frame if the attack lands. Typically, "Hit Cancel" comes first to give connecting moves more utility. There are also other flags and fields that do other fun things.


    So this is an action RPG engine I've been working on for a while. For the purpose of demonstration, I'm using it to make an arena fighter. I've built it to actually function like a fighting game would so technically it could be re-tooled into any form of a fighting game. I imagine that it could very easily be used to make a Smash Bros style game. This whole project was intended as a way for me to learn C# and Unity, but it kind of blew up into something bigger. For now, it works pretty well. There are a few flaws I'm working out, but I'm pretty happy with it so far.

    Engine overview:

    Here's a quick overview of some of the engine's features.

    • 4 player support. Easily extendable for more, but probably not practical.
    • Full xInput controller support. Actually that's all it support for now.
    • Simple camera set up that keeps all players on screen.
    • Built in UI to keep track of player data.
    • Real fighting game-style hit detection with hit/hurt boxes. Hurt boxes can be procedural or set depending on preference. I tend to not like procedural collisions, but the functionality is there.
    • Relatively easy to use move editor that can be changed and saved at run time for easy testing and modification.
    • Weapon-based combat support. Actually the whole game is weapon based, but hand-to-hand combat is easy too.
    • Legacy animation only support (for now). I don't really like Mecanim for a project like this, but if I can find a way to make it work and feel right, I may implement it later.
    • Adjustable input buffer for easier cancels.
    • RPG style stat system using a variety of values that affect the character's damage input/output as well as other stats like total HP or MP.
    • Built-in stamina and MP system.
    • RPG style status effects like "poison".

    Current button layout:
    Not all buttons are used now, but what is needed is there. It's probably obvious how much I like the "Souls" games based on this layout.


    Move Definition:
    Below are some shots of how moves (attacks mainly) are edited and created. It's not pretty, but very powerful.

    As you can see, there are a ton of options available to each move. I add features as I need them, but this is mostly complete and is useful for pretty much any situation.

    State definition / Move type / Animation
    This area controls some relatively simple things that mostly define what kind of move it is on a broad spectrum.

    Here's a few examples:
    • State Type - Determines what kind of state the move is. Different flags affect how attacks and hits are handled.
    • Reset Damage/Gravity Scaling - This is not something that is used frequently, but this resets infinite protection to make combos more interesting and effective. Currently only 1 technique has this effect. This move cancels whatever you are doing and lets you do anything else at the cost of a significant amount of MP.
    • Auto Look - Automatically faces toward the last opponent hit at the start of the move only if a combo greater than 1 is occurring and if no direction is pressed. If a direction is pressed and if Direction Cancel is active, the player will change its facing direction based on the move input.
    • Move Type - More flags to specify what kind of move it is. Different rules are applied on the back end depending on what flag you select. For example, marking the move as a "Special" automatically deducts 1 MP on use.


    Special effects, sound, status
    This section covers mostly visual and sound effects. It also covers how the effects are displayed and also controls whether the move uses a procedural hit or not.

    Some examples:
    • Require MP - If the player does not have the minimum amount of MP (default to 1) this move will not come out.
    • Start time / End time - The slots surrounding these values are pretty self explanatory, but time in this engine is based on frames and not seconds. It's easier and more intuitive to think in terms of frames in fighting games than seconds so that's what I use. The engine is locked at 60fps as well.
    • Special Collisions - If "Use Attack CLSN" or a number is placed in "Special CLSN", the attack will not use a procedural hitbox. Procedural hitboxes are attached to the player's weapon and follow the exact path. I don't really like using these, but the option is there. Normal collisions are placed at the "Special CLSN Offset" for a set period of time.
    • Status Effects - Enter the status effect you want here and the amount it inflicts. Pretty simple.


    Charge / Invincibility
    This section covers some specific move properties that can give a move an extra edge.

    • Charge - When used, a charge attack is performed when the button is released. The "Laser Sight" property is used for aiming moves, but most of the time, this isn't used.
    • Armor - This is what's known is fighting games as "Super Armor". Basically you enter the time frame and the number of hits you want. If you are hit during this time frame you can absorb the entered number of hits without flinching. You still take damage though.
    • Invincibility - During this time frame, you can't be hit. I'll probably add some flags to specify what type of invincibility (i.e. attack, throw, projectile, etc.), but for now, it's fully invincibility.


    Hit definition part 1
    This section is huge and covers what the attack actually does when it connects.
    • Frame Data - This determines what frame the move becomes active, for how long, and how long (in frames) the attack stuns the opponent. A read-out below even tells you how much "frame advantage" you have on hit or guard. If you are unfamiliar with the term "frame advantage"; essentially a positive value means the attack is safe on hit or block and is easy to combo out of. A negative value carries risk in that it is easier to punish based on how negative the value is. An attack that is a -10 on block basically means you are taking a risk by throwing it out and your opponent has 10 frames to try and counter hit you.
    • Hit - This is a somewhat bulky section that covers mostly damage outputs. You can control the direct amount of MP gained, the stamina cost of the move, the type of hit, what type of hit animation is played on hit, and the amount of "hit stop". Hit stop is that interesting effect where both characters freeze for a bit when an attack lands. It's pretty typical in fighting games and is there to help the player confirm if a hit landed by giving them a small amount of time to visualize the hit. It's also a nice effect to give the attack more weight or impact. You can adjust the amount of time as well as the "power" which determines how violently the target shakes. For weak attacks, a time of 8 - 10 and the power at 1 or 2 tend to be sufficient. Stronger attacks can have times upwards of 15 - 20 or more with the power between 3 - 5. The power rating is pretty sensitive. Going too high can make the target seem to warp on subsequent hits.
    • Multi Hit - My first deprecated feature. It does nothing. I initially had it turn the collision on and off based on a set frequency, but it ended up being more reliable and predictable to have separate states for multiple hits.


    Hit definition part 2
    This section controls the physics of the performing player as well as the physics of the hit target.

    • Hit physics - This area controls what happens to the target when the attack connects. You can check off "fall" to make the target fall on hit or set the number of ground / wall bounces the single attack can create.
    • Player physics - This controls how the player's physics work during the move. Preserving the momentum will not reset the move speed when the state begins. If this is unchecked, the "start move speed" value is used only on frame 0 of the move's activation. You can "invert move" to have the character move backwards. You can have a second velocity set, if you like in the "move time" area. Typically, "start move time" is set to 0 and the forward player movement is dictated on specific times within the move, but this is really down to visual preference. I like to have the player move forward during the attack swing.
    • Cancels - This area is very simple but very useful. You can drag a move prefab into a field corresponding the the button you want and set what the cancel times are. "Cancel" is the first frame you can cancel the move into and "Hit Cancel" is the first frame if the attack lands. Typically, "Hit Cancel" comes first to give connecting moves more utility. There are also other flags and fields that do other fun things.




    Updates:

    Park Engine Overview:



    Alternate Outfits / Colors:

     
    Last edited: Oct 18, 2017
  2. Cartoon-Mania

    Cartoon-Mania

    Joined:
    Mar 23, 2015
    Posts:
    320
    Interesting

    When are you going to release? do you support mobile?
     
  3. kittik

    kittik

    Joined:
    Mar 6, 2015
    Posts:
    565
    This looks really promising. Subscribing to this thread :)
     
  4. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72
    I don't have a release date yet. The engine needs a lot of work. If I'm going to release this, I want it to be a solution for people who don't want to code anything so it needs to be a bit more user friendly. Beyond that, I need to add a lot more things to it. I will keep this thread updated with my progress though.

    As for mobile; I'll consider it, but I'm focusing on traditional platforms for now since the function of the engine is not ideal for touch screen controls.

    Thanks! I'll keep this updated as I go further.
     
    RavenOfCode likes this.
  5. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72
    I'm back with some updates. I just added "counter attacks" and "palette effects".

    Counter attacks

    Counter attacks are pretty simple. You can score a counter when an opponent starts attacking, but you respond with a faster move. These are very useful as they can not only do more damage than a normal hit, but they can also create more stun to open up new combo opportunities.

    This is Roy's normal strong attack. It has a decent range and does a respectable amount of damage, but you can't combo out of it unless you're willing to spend MP.


    This is the same attack on counter hit. It does more damage, stuns much longer, and is very visibly a counter hit. Counters are depicted with a much larger, red effect and a longer hit stop.




    This is the same attack's data in the move editor. As you can see, I added a section just for counter data and there is a new value available for hit counter frame data. This move is severely good for counter hits. Most just do a bit mroe damage, but this one is designed to heavily punish mistakes.


    Pallete Effects

    These are just here for more visual fun. Basically, the character has a rim shader that flashes at appropriate times for visual clues. For example, the following shows cues for invincibility, charging, and armor states respectively:





    These all happen automatically whenever any of these 3 things happen. There is also an option in the move editor that lets you manually fluctuate between 2 colors for as long as you like:





    Adjusting the rate allows you to make the transition more smooth, but slower. Quick rates (as depicted here) yield nearly instant changes. Slower rates will nicely interpolate between the 2 colors and back on a loop until the end time is up.

    That's it for today! I'm working on a new character class that I should be able to show soon. This one is going to be a ranged magic class that will show how projectiles and status effects work.
     
    RavenOfCode likes this.
  6. lejean

    lejean

    Joined:
    Jul 4, 2013
    Posts:
    392
    How did you do the grass in the first video?
    I tried making speedtree grass but the performance isn't spectacular and I want to be able to push it down too.

    [Edit] Nvm, you posted the link in the last sentence :p
     
  7. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72
    I managed to blast through my next character's model and rig. I'm gonna try to have some form of basic animation done tomorrow. Here's a look:

     
    RavenOfCode and kittik like this.
  8. zenGarden

    zenGarden

    Joined:
    Mar 30, 2013
    Posts:
    4,538
    It looks good.
    Do you plan target lock on/off ? or target switch ?
    Can you have many AI bots fighters ? Or it is player control only ? Any 2.5D version planned ?
     
  9. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72
    Actually, both are already in the engine, I'm just not using either fully right now since there's only 1 target (typically). The auto target system that focuses on the last enemy you hit does this without any user input. When necessary, I can allow the player to pick their target through pressing a button.

    The engine currently has no AI, but I am planning on it. All hit detection is set up to support multiple targets in that you can hit an unlimited number of targets simultaneously with 1 move. From a game design perspective, though, the game I'm making will likely not have hoards of enemies to fight, but rather small groups of very tough ones.

    Really, all this requires is to limit movement to one plane. This is completely possible. I'll make a small demo of it once I've finished a few other things.
     
  10. zenGarden

    zenGarden

    Joined:
    Mar 30, 2013
    Posts:
    4,538
    I meaned a grouyp of five or ten maximum ennemies, not a horde.

    I ask it but i am not sure i would use it. As you talked about Smash Bross i thaught of 2.5D.

    Yep like Dark Souls it could be usefull. Or press a button and it targets the nearest ennemy.

    Will it be possible to hit flying ennemies with air or some sort of dragon punch moves ?
     
  11. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72
    Of course! Jumping is actually in the engine, I just don't actually use it. I did initially, but it didn't feel right in my game. Air-based attacks are also totally do able:



    Checking the "air attack" flag will apply air physics to the player. I basically never use this, but it does work.
     
    RavenOfCode likes this.
  12. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72
    Here's an early demo of a new character/character class I'm working on. Also I updated the stage a bit.



    This character (Charlotte) is more of a ranged magic user. Once she is done, she'll function best at a mid - long range with a few tools to help keep her there. She also has 2 projectiles so far: one that poisons on hit, and another that moves very slowly but homes in on its target and just does pure damage.
     
    RavenOfCode and zenGarden like this.
  13. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72
    Charlotte is mostly done now:



    She shows off how ranged attacks can work as well as projectiles.
     
    RavenOfCode and kittik like this.
  14. JohnnyA

    JohnnyA

    Joined:
    Apr 9, 2010
    Posts:
    5,041
    Looks awesome, I really think you need mecanim support though. Like it or not most of your users will probably be using mecanim.
     
    theANMATOR2b and RavenOfCode like this.
  15. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72
    Yes I know people would prefer mecanim in most cases. I will probably find a way to support it. I'm not terribly confident in its accuracy for a system like this, but I'm sure I'll figure something out once I get to it.
     
  16. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72
    Working on a new character now! She's a heavy class who uses a mallet as a weapon. Though the weapon appears to be long range, her range is actually very limited. Her damage output will be quite high and her move set will center around powerful wall combos and setting up damaging throws with armor-based movement. More to come on this soon.

     
    RavenOfCode and zenGarden like this.
  17. HeadClot88

    HeadClot88

    Joined:
    Jul 3, 2012
    Posts:
    736
    I will be watching this.
     
  18. jaelove

    jaelove

    Joined:
    Jul 5, 2012
    Posts:
    302
    Wow. Nice, definitely keeping an eye out
     
  19. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72


    Here's the newest character and class Laila (Damager). She is slower than the other classes and has a shorter range, but she makes up for it with high damage output. She also has access to multiple moves that give her super armor and is able to force a counter hit on her next move by using her "style" move.

    She centers around hard hitting normals and powerful grab and command grab setups. She also is able to perform surprising combos if she is in the right place on a stage. She is also the only character capable of canceling strong attacks into each other.

    I'm going to be working on a new character in a while. The next one will be a gunner of some sort. In the mean time, I'm planning on working on an equip-able weapon system that changes character stats.
     
    RavenOfCode likes this.
  20. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72
    It took a bit longer than expected, but here's the new weapon equip system. I initially intended for it only to be cosmetic, but the weapons now actually change character stats as well as the visual and aural hit effects. I also made a quick character select UI system to go with it .



    The weapon system is pretty simple. I'll show a bit more on this a little later.
     
  21. zenGarden

    zenGarden

    Joined:
    Mar 30, 2013
    Posts:
    4,538
    Nice.
    Will you implement combat options like blocking, rolling to avoid attacks, lock unlock targets, and some stamina options ? something like Dark Souls games.
     
  22. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72
    Actually all of that stuff is already in! I built this engine with Dark Souls in mind.
     
    zenGarden likes this.
  23. jaelove

    jaelove

    Joined:
    Jul 5, 2012
    Posts:
    302
    Man I need this in my life I'm willing to pay whatever lol
     
  24. Cartoon-Mania

    Cartoon-Mania

    Joined:
    Mar 23, 2015
    Posts:
    320
    I really want to use this asset for mobile action game

    is it possible?
     
  25. zenGarden

    zenGarden

    Joined:
    Mar 30, 2013
    Posts:
    4,538
    I think it is possible for mobile because it is game mechanics mainly.
     
  26. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72
    Hah well hopefully I can get it to a place where I am satisfied enough to release it.

    Technically, sure; it's possible to use on mobile, but it's something that would require a bit of work on your end. You'd need to come up with a different input module, which probably isn't terribly complicated. Additionally, I'd imagine that you'd have a bit of trouble with hit accuracy. The Park Engine uses and requires very precise frame dependent events. I can't guarantee these events would work well in a mobile environment.

    My focus is to make this work as perfectly as possible for traditional platforms. If enough people are interested, I could probably make a version that would work better on mobile. It would likely have to be stripped down a bit to avoid some issues that might arise.

    Long story short; I will certainly consider it, but it is not a high priority.
     
  27. Cartoon-Mania

    Cartoon-Mania

    Joined:
    Mar 23, 2015
    Posts:
    320
    I understand

    but Currently, mobile is important.

    If you want to sell more products, You need to be mobile friendly
     
  28. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72
    I am aware of that, but this isnt about the money for me. It's about creating a system that works well that I can be proud of. If I can make this work in a mobile environment in a way that satisfies me, then I have no reason to not do it. I don't want to just throw something out there that kind of works just to make some money.

    I get where you're coming from though. I'll see what I can do.
     
    RavenOfCode and zenGarden like this.
  29. ikemen_blueD

    ikemen_blueD

    Joined:
    Jan 19, 2013
    Posts:
    341
    Interesting system, I also vote for mobile support, mobile friendly performance.
     
    Last edited: Apr 7, 2016
  30. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72
    I'll tell you what; when I get closer to finishing this, I'll hold a poll for important features and mobile support will be on there. If enough people want it, then sure I'll do it.
     
    ikemen_blueD likes this.
  31. ikemen_blueD

    ikemen_blueD

    Joined:
    Jan 19, 2013
    Posts:
    341
    Awesome news. There don't have much fighting system like yours in AS. Btw, I only care if the system can handle with 10-20 characters on the fly, with good performance. Btw, DMC Air Combat like this
    could be very cool :)
     
  32. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72
    Well my system is definitely not currently set up for this sort of thing currently, but this should be pretty easy. Manipulating the air physics manually is probably the answer here, but I'll make sure something like this makes it in.
     
    ikemen_blueD likes this.
  33. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72
    Ok sorry about the delay! Here's an overview of how the weapon system works. It's pretty simple.

    Here is a weapon prefab:



    You just take this and attach it to this:



    Weapons are then called by a simple set of code that calls the weapon Id number (noted by its position in the WeaponTypeSet array). Weapon meshes are also called in the same way. That's it! The stats are also handled by a simple script that modify the player's overall stats.

    Here's what each stat does:

    • HP (Hit Points) - Controls the character's max HP or maximum life.
    • MP (Magic Points) - Controls the character's max MP. MP is a value that determines the amount of special techniques the player can do.
    • POW (Power) - Directly effects the amount of raw damage done by a normal or strong attack.
    • SPC (Special) - Directly effects the amount of raw damage done by a special attack.
    • DEF (Defense) - Used to determine how much damage is taken when hit. An equation is used to determine real damage.
    • STM (Stamina) - Controls the character's maximum stamina. Stamina is depleted when attacking, guarding, or sprinting. Stamina regenerates when none of the aforementioned skills have been performed for a short period.
    • ADP (Adaptability) - This stat mostly attributes to the amount of invincibility given to a character during their dodge state. It also has an effect on stamina regeneration speed.
    • SPD (Speed) - This stat mostly effects the character's move speed. It also has an effect on stamina regeneration speed. Additionally it effects how long it takes for stamina to start regenerating after performing a skill.
    • PRY (Parry) - This stat can affect a weapon's "parry" window. Most parry windows are about 10 frames. I typically don't use this stat.
    • GRD (Guard) - The amount of damage reduced through guarding. Each attack has a separate damage value for guard damage. This percentage affects that value.
    • STB (Stability) - The amount of stamina damage reduced through guarding. If your stamina is reduced to 0 during a guard state, your guard will be broken and the following attack you are hit by is treated as a counter attack.
    • FR (Fire Rate) - Shortens or lengthens the cancel window for projectile-based chain attacks. Only used for gunner classes at the moment.
    • EFF (Efficiency) - Increases or decreases the amount of MP used when performing a projectile skill. Only used for gunner classes at the moment.
    • MPG (MP Gain) - The rate in which MP is gained through normal means.
    • GRV (Gravity) - The amount of gravity applied on juggled opponents.
    More character updates soon. I've nearly finished the "gunner" class.

    I also have a few more new features to show soon.
     
    ikemen_blueD and RavenOfCode like this.
  34. Cartoon-Mania

    Cartoon-Mania

    Joined:
    Mar 23, 2015
    Posts:
    320
    Great.. Is there plan to support group battle?

    I want to know your future plans and release date
     
  35. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72
    Im actually working on team support as we speak. So yes, this will support teams or groups.

    Future plans:

    Well I have a lot to do before this will be ready for release. The first thing that needs to be done is I need to make sure all the features that I require are there. Since it can be difficult to plan every single thing in advance, I'm planning on creating a total of 8 unique character classes that should cover any (or most) character archetypes. By doing this, I can ensure that a wide variety of features are available. I will also be creating an AI and enemy spawning system.

    After that is done, I'll need to strip down and generalize a lot of stuff. I have a few features that are only for my game and nobody else will get much use out of - my highly proprietary blend shape face expression and auto lip-sync functionality to name one.I also need to make sure that little to no programming is required for general things.

    The last step, once I hit this point, is to hold a poll to see what features are most important to you guys. Mobile has been mentioned and I have received private requests for other things like Playmaker support. Based on that survey, I'll spend some time (probably a few weeks) adding the top ones and will continue to add features in updates over time.

    Release date:

    This is up in the air. I really don't have an exact estimate. This is mostly due to my doing this in my spare time and due to the nature of my real job, I can occasionally hit periods of time where I'm working 10-12 hour days for weeks on end. Having said that, it's possible that a release will happen this year; in fact, I am pushing for that to happen, but again, I can't promise this.

    Hope that answers your questions.
     
    Last edited: Apr 20, 2016
  36. ikemen_blueD

    ikemen_blueD

    Joined:
    Jan 19, 2013
    Posts:
    341
    @liero116 Is there a way we can purchase the Alpha version of Park Engine?
     
  37. Cartoon-Mania

    Cartoon-Mania

    Joined:
    Mar 23, 2015
    Posts:
    320
    You are too perfectionist.

    Asset Store' product is not perfect.

    Developer constantly receive feedback and And then gradually complete with product.

    From the beginning, do not try to be perfect

    Go try and fix it

    Asset Store product has developed so.
     
  38. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72
    Maybe. Let me think on how I can do this.

    I get what you're saying. It doesn't need to be perfect, but Park Engine is not ready yet. Perhaps I can simplify the release though. I'll see what I can do.
     
  39. Cartoon-Mania

    Cartoon-Mania

    Joined:
    Mar 23, 2015
    Posts:
    320
    thanks for your answer

    If you sell park engine now. I would buy your asset

    There are two types of customer.

    one is looking for commercial use asset , the other is looking for studying asset

    I can study your asset.. and I would buy your asset. I can feedback.. You can receive lot of feedback from customers.

    so You can make a better product.
     
  40. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72
    Ok update!

    Here's the "gunner" class:



    This class is unique in that it requires MP to perform any attack properly. You can attempt to shoot without MP, but you'll only get a short range steam cloud attack that does roughly 1 base damage. By pressing the style button, Rabbit performs a reload which gives 1 MP.

    Rabbit excels in long range single strikes though his bullets can combo if done properly. Rabbit also has a grenade for mid range zoning and a proxy/timed land mine to keep opponents out.

    Finally, I'm working on a public version of Park Engine that I will be beta testing. I'm debating whether I should out right charge for the beta or set up a Patreon or something. I'm not quite sure yet. Patreon access would probably include access to playable builds I'm working on and higher tiers would give access to the engine itself. Again, not sure which one I might do, but either way, I'm working on a public version of the engine.
     
    RavenOfCode, ikemen_blueD and jaelove like this.
  41. ikemen_blueD

    ikemen_blueD

    Joined:
    Jan 19, 2013
    Posts:
    341
    wow, this is getting better. I love how your system support both melee and gunner class. I vote for Patreon. I also don't mind to purchase again when your asset is fully ready on asset store. I already like what I see. It would be fair to dodge or destroy the bullets by hands or something, otherwise, the gunner class seems overpowered. Anyway, keep updates mate, awesome works ;)

    I wonder how flexible to hook a combat AI system to your system? Hopefully, it would be easy.
     
  42. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72
    Thanks! I'm trying to make sure that you can make whatever you want with as little effort as possible.

    Bullets are actually very easy to dodge. You can also block them. The gunner also has to expend a great deal of stamina to reload so they have to be very good at stamina management. On average, their run speed is lower than most so they have to sprint a lot in order to get away. Sprinting consumes a lot of stamina too. In addition to all that, their HP and defense is really sub-par. Once you get in on the gunner, it's pretty much over.

    AI shouldn't be terribly hard, but it's the last thing I'm going to do. I'm planning to create most of the logic in script form but allow an AI's "profile" to be designed through a system similar to how weapons work. More on this much much later.
     
    RavenOfCode likes this.
  43. ikemen_blueD

    ikemen_blueD

    Joined:
    Jan 19, 2013
    Posts:
    341


    That's it. Now, I seriously can't wait. I like the fact you want to build as flexible, as complete as possible for your combat system.
     
  44. Cartoon-Mania

    Cartoon-Mania

    Joined:
    Mar 23, 2015
    Posts:
    320
    Great.. but asset store .. please~ You can do it !
     
  45. Cartoon-Mania

    Cartoon-Mania

    Joined:
    Mar 23, 2015
    Posts:
    320
    There is no news for a long time.

    Is the project going on?
     
  46. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72
    Yes I'm still working on it. I haven't had much time though so the progress is fairly minimal. My actual job got in the way. I'll post some updates soon.

    Most of what I've been doing is refining how hit detection works as well as creating tools to make things a bit easier to work with.
     
    Last edited: Dec 31, 2016
    RavenOfCode likes this.
  47. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72
    Part 1

    Ok an update finally!

    I'm just going to show off tools for now, but I plan to make a video that shows game play updates this weekend. I also plan to update the first post with this new info as well. I've been researching editor windows extensively and I've come up with something pretty useful. I borrowed a really nice looking idea from someone else and improved on it to better suit my own needs (I'll point this out when I get to it).

    To start, here's the new interface for "move" editing overall.

    Each section opens up to show more options which I'll go over down the post.



    State Definition

    There's a lot of options here that affect how the system treats your attack. I'll go over a few of them:

    • State Type - This defines what kind of move it is. For the most part, the only options that should be used are "Attack", "Guard", or "Parry". Others are available, but they mostly are there to create custom hit situations.
    • Force Facing / Air - When this move lands, this option forces the target to face you. I really only use the air version since I think it looks better in certain situations.
    • No Hit - This is a useful option that lets you create a move that you do not want to create an attack hitbox on while still allowing for a counter hit to happen.
    • Flags - These are special scenarios that, if checked, will prevent your attack from making contact. "Neutral Only", for example, requires that the target is in a non-hit state.


    Cool Down

    This is a new feature that allows for special moves to function on a cool down timer. It's a pretty typical system in RPG's today. The option to use a mana pool is still available, but I don't use it anymore.

    The options here are pretty simple. You select how much MP the move needs to use and then define which cool down meter it is tied to. The first check mark does a few things. First, it depletes the meter in question, then it tells the system that you need this meter to be full or this attack will not come out. The second check mark merely freezes whatever value the meter currently is at and prevents it from rising for as long as the move is active.

    Typically, MP translates to how many seconds it takes for the meter to recharge. The metric can be altered by an "MP Gain" stat which can raise or lower the cool down time. I generally use this (along with other properties) to balance strong special attacks.


    Face

    This is a very specific system that will likely not be included in any asset store version since it requires your character to be set up in a very exact way, but here it is anyhow.

    Basically, this function automatically sets a characters facial expression using a intricate system of facial blend shapes. There are a lot of options, but again; it's not terribly useful unless you set up your character in the exact manner that I do.



    Effects and Projectiles

    This is a cool section that I just finished early this week. My previous section here worked ok, but it only had 2 empty slots that the system looked for at all times. You could use 2 effects or 2 projectiles, or a mixture of 1 of each per move before. It was very limited and very inefficient. The new and vastly improved system allows up to 99 total per move and it only creates slots for what you actually need when you need it.

    This is an example of a move that creates 1 effect. You only have to drag an effect prefab into the slot and it fills in the title. You can mark it as a projectile or "slash fx" (a special kind of effect that I'll show in a future video) and the title bar will update. You can also tell it to change the effect color dynamically to the defined weapon effect color. This is useful if you want to have an effect that generates blue with your ice weapon and red on your fire weapon without having to make multiple effects per weapon.

    The plus and minus buttons at the bottom allow you to add or remove effects to the move.



    This is an example of a projectile. You can adjust the "play time" to alter at which frame the effect or projectile appears. You can also press the "Hit" button to automatically have it set to the frame just before the hit connects.



    Here's a move with 2 effects. 1 is minimized to take up less space. The yellow button at the top minimizes the effect window and the red one removes it altogether.


    Sound

    After I finished the effect system I wanted something similar for sound effects. Here's how that looks.

    It functions the same way mechanically. The options are pretty self-explanatory. There's also a play and stop button that lets you preview the clip as well.



    I hid more advanced options that I'll likely never actually use, but here they are anyhow. They can be accessed by hitting the "Advanced" button believe it or not.


    Misc Effects

    I put general effects here that don't belong in the section above.

    The first 2 options aren't used anymore and thus have no real function. "Projectile Stage Collide" can be toggled on or off to set whether or not a projectile created by this move should collide with the environment. This is pretty much always on.



    This small section lets you override your weapon's default hit element to whatever you want.



    Here's a few general effects that all character have access to. This just lets you define when they happen during a move (if at all). To start, they're technically always active, but only actually do something if the first frame isn't zero. Flux pulses your character's rim color between 2 colors during a set period at a set rate. The others below it activate a generic smoke or flame effect at set times. "Joyful Aura" isn't really used.



    This places a selected color matte over the screen. You can also pick a blend mode. There's a lot of blend modes available. I've only actually used this once. I designed the whole system just for one character's move.



    Shakes the camera using a variety of parameters at a set time.


    Status Effects

    Here's where all the status effects happen.

    The top section dictates what happens on hit. You can also pick an amount that is added to the current effect amount or check "reset amount" to set it to whatever number is entered.



    The lower section lets you apply a status effect to yourself at a set time. You can also manually set a multiplier. This is used to multiply the actual effect of the status. For example, if you hit a poisoned character with poison again, the poison becomes more severe up to a set maximum. As the multiplier raises, the poison causes more damage per second. This also is true for slow heal states as well. You can use the self multiplier to start an effect at a certain point.



    Here's all the effects I currently have. I plan to add more as well.

     
    Last edited: Jan 14, 2017
    RavenOfCode likes this.
  48. liero116

    liero116

    Joined:
    May 22, 2012
    Posts:
    72
    Part 2

    Properties


    These are properties that change how your move works (sort of). You can use this section to make part or all of the attack invincible, for example. Invisibility turns your character model off for a bit and intangibility turns off physical player to player collisions.



    Armor and shield work basically the same with a key difference. Both allow your character to not be stunned during the set time, but armor allows you to take damage whereas shield does not.



    Heal will add HP, MP, one hit of armor, or all 3 at a set time on hit. Moves with this property do not stun the target.


    Hit Definition


    This is where all the cool stuff happens. There's a lot here so this section will be long.

    Animation is where you put you character's animation. You can adjust the speed at the top anywhere between 0.1x to 2x . I've also added "animation events" that allow you to dynamically alter an animation's speed up to 3 times at set intervals. This is very useful for adjusting an animation speed without having to re-export the whole thing from Maya. I spent some time making this since I kept having to re-export every time I simply wanted to extend or shorten move recovery times.



    I got the idea to do this section from a fighting game engine called UFE. If you use that, you may notice that it's fairly similar. Up top is a really nice looking time line that shows the start up time, the active hit time, and how long the move is in recovery. This is what UFE has alone and its a really nice feature. I added a lot of things to make it more useful to me. There's also indicators that show when the move is cancelable as well as a special section for a particular special cancel called a "just cancel". If you are unfamiliar with this type of cancel, you must press a button exactly within that time window to successfully perform it otherwise a normal cancel will occur (or nothing will happen at all). Only one character uses this mechanic in order to access enhanced versions of his moves.

    You are able to adjust how many frames of hit, counter hit, and guard stun the move does directly underneath and it will dynamically update the move's frame advantage as well.

    You can manipulate cancel timing below that too.



    Here is where you select what you can cancel into and how you can do it. You place move prefabs into fields at the bottom. You then only have to press the corresponding button to cancel into it. The last 4 and "End" are special conditions that don't require button presses. The check boxes at the top are universal special conditions.



    Here's a few other hit options. Pretty self explanatory here:




    Full Editor


    This is one of my favorite tools. It's a large picture, sorry.

    This shows a very large overview of every singe move for the selected character. The chart is procedurally generated and requires nothing from the user . Each value updates automatically each time it's altered in the actual move. The chart is read only for safety, but it's mostly there to have a character overview. Only the most important balance-affecting move parameters are shown. Finally, you can click on the move name to open the move up in the move editor and you can click on the character's portrait up top to switch to editing that character.

     
    RavenOfCode likes this.
  49. Cartoon-Mania

    Cartoon-Mania

    Joined:
    Mar 23, 2015
    Posts:
    320
    Great! Keep Going!
     
  50. ZhavShaw

    ZhavShaw

    Joined:
    Aug 12, 2013
    Posts:
    173
    I'm like the few users on this thread. I'd be willing to pay at any point to even get this in it's current state. It looks fun to play with, and definitely interesting! Not hinting anything, but you should accept a few persons request to pay early, you'll need the testers anyway ;) ;) ;) ;)