Combat enhancements: Difference between revisions

From PSwiki
Jump to navigation Jump to search
Landson (talk | contribs)
Landson (talk | contribs)
Line 45: Line 45:
* maybe a script should also be added for special effects? still thinking about how this will be implemented....
* maybe a script should also be added for special effects? still thinking about how this will be implemented....
==== Queueing System ====
==== Queueing System ====
[[File:http://divinitygames.com/queue.jpg]]
[[File:attackqueue.jpg]]
* As a queuing system should be, attacks may only be added in the end of the queue.
* As a queuing system should be, attacks may only be added in the end of the queue.
* this makes changing the order of your attacks difficult and penalizing, so it's something that should be thought about
* this makes changing the order of your attacks difficult and penalizing, so it's something that should be thought about

Revision as of 00:40, 1 May 2011

(Go back to the main GSoC 2011 page)

Design Information

Abstract Description

The idea here is to give combat a little more flavor and variety than what is currently available. I feel combat should have multiple types and varieties of attacks. The most important part of combat in PlaneShift though is the roleplay. PlaneShift is unlike other MMORPG's in the fact that it is not a grind power fest, it is about immersing yourself in the game and being your character. So instead of the typical twitch style combat, I feel it is important to make the combat a roleplay experience in and of itself.

Features Wanted

These are features I am currently thinking about, more may be added while some may be removed over the next couple weeks of planning.

An Attack Style System

  • Attacks can only be executed in certain stances
  • Attacks that can only be executed by holding certain weapons
  • Certain armors maybe hindering power of certain attacks?

Queuing System

  • Attacks can be added to a queue through a hotbar
  • The attack queue would be shown in a UI element
  • if nothing is in the queue then the "normal" attack is used

Differentiate between range and melee

  • add a quiver equipment slot
  • More to be added, still working through ideas

Special Effects

  • the idea here is to make some attacks have less power but have a chance at a special effect that will affect the outcome of a battle
  • one potential idea is poisoning....if your character is more of a villain, or a rogue type of character, they may prefer attacks that poison
  • temporary paralysis?
  • more to come, ideas are there.....

Misc.

  • make single wielding and dual wielding matter, for isntance a dual wielding attack may do half the damage per hit, or maybe even less but give a better chance at a special effect?

Detailed Implementation Plan

The most important part of this system, because it is the base is the queuing system used. As well as the psAttack class(to be implemented) that allows for attacks to be read out of the database and held in the cache until called by the queue.

note: this is still in development, will become more detailed over the next couple weeks.

Fields in Attack Database

.....Coming

psAttack

  • will function very similar technically to psQuest, it is able to hold attacks in the cache; and run prereq scripts
  • would require a script schema and engine to work, may not be fully neccecary at first, but the idea is for it to be easily extensible, maybe now you may get the attack through progession, but maybe some attacks added later can be bought through a trainer, or earned ina quest...possibilities should be endless...
  • maybe a script should also be added for special effects? still thinking about how this will be implemented....

Queueing System

  • As a queuing system should be, attacks may only be added in the end of the queue.
  • this makes changing the order of your attacks difficult and penalizing, so it's something that should be thought about
  • nodes should be removable at any point except the "Next Node", maybe add some sort of penalty though?
  • The First Node(Next in Line) should only be changeable 3 ways: 1) out of combat it should be able to be changed at will to be ready for the next fight 2)By being executed and replaced by second node and 3) if in combat it is empty(base attack is being used) then it should be filled.
  • Nodes 2-end should be dumped after battle while allowing 1 to stay for the next fight. 2-end should only be able to be added when combat is flagged. outside of combat, choosing an attack while an attack is already queued would replace the currently queued attack.
  • Size of the queue should be limited. This would prevent queuing too many attacks and not doing anything else
  • Should check the prereqs when attack is being added to the queue, if they are not met it should not be queued.

Combat Sequence

Details still being added and considered

Trigger->pull attack from queue -> check prereqs in case circumstances has changed since it was put in the queue -> calculate attack -> apply attack

Task and Progress List

GSoC 2011 idea information

Skills needed

Our server and client are all coded in C++ and the database is MySql. For this project C++ knowledge is needed with little knowledge of mysql.

How combat works today

PlaneShift today allows the players to engage combat with magic, with melee (like swords, axes, .. ) and with range combat (like bows).

Players have the possibility to choose stances: full defense, defense, normal, attack, berserk, to tell the engine how much of their skills they want to use for defense or for attack. The monsters today always use normal mode.

There is a table which determines the effects of each type of weapon vs. each type of armor. For example a knife will make more damage against a leather armor (which can be cut) than against a chain mail.

All stats, equipment, skills, item stats and quality are considered in the combat sequence. The actual formulas are pretty complex, and give some realism to combat.

Player can use 2 weapons, or a weapon and a shield. Players can use items to boost their stats/skills and fight better.

NPCs/Monsters can be:

  • invulnerable (in this case you cannot even attack them)
  • peaceful but able to fight back. They will not attack by themselves unless provoked.
  • attack on sight. They will attack as soon as you approach them.

When you attack a monster you enter in his hate list, and he will chase you and attack you.

Combat is executed automatically by the server, the player can switch equipment, cast spells and move/run. If the player stands still in front of the monster, combat proceeds automatically until one of the two dies.

Progression is done through increasing your skills, stats and gaining new equipment. This allows you to fight better and face harder monsters.

Ideas for improvement

  • Progression just by increasing your stats is not fun after some time. We need to add new abilities which can be gained at certain ranks. Each ability should be special, and also have an associated animation. Examples can be: charge, blade dance, whirlwind of axes, ... Those may do a damage on multiple opponents, or ignore armor, or do extra damage to certain creatures, or multiply some of your skills, or change the way you use combat stances. Overall will be pretty good to have a way to script those effects, so can be more easily managed and don't have to be hardcoded.
  • Today if you stand in front of a monster, combat runs automatically, which may be pretty boring. Sure you can move, but you cannot really use different attacks or strategies. In general PlaneShift wants to be a roleplaying game where your character traits are well represented in game. For this reason we don't want to have the skills of the player influence too much the result of combat. As an example a combat UI where you swing all the time the sword, and you hit only when you are perfectly in synch with the monster is not something we want, because this will not represent the strength of your character. What we are seeking is a middle ground between player controlled and character controlled. We would like to be able to add different attacks and parry to a queue of events which is used during combat. So for example you could queue: special actions, spells, parries, swings, special attacks, dodging, ...
  • Today the chasing of monsters when in combat is pretty raw. In many cases they move on top of the attacker, and rotate wrongly, so they do not face the attacker properly. This has to be fixed.
  • ...