Any ideas/examples of simple RPG combat systems?
Greetings everyone!
Lately I was spending some time with ideas of simple RPG games and came to the conclusion that I, unfortunately, dont have any ideas in this field. If anyone could help and give me some inspiration in this field I''d be grateful.
So the problem goes as following: lets forget about the whole RPG world that must be created and think about combat. Let us also consider the game multiplayer. This leads to need to make one-on-one fights and group fights.
What I am searching for is a simple combat system. BUT the system where you get a few lines "X hits Y" and then get the result "You won!" isn''t considered interesting.
The thing is to make the player somehow involved in fight, yet not making it complicated and hard to program.
ANY ideas/comments/discussions and so on would be nice.
Make the combat information screen read like a story in a book, such as:
X makes a desperate swing at Y, but Y dodges out of the way,
Y strikes back with a thrust, hitting X in the (insert name of part) for Z damage!
X Feints at Y''s head, but instead strikes a powerful blow to Y''s chest for A damage.
Y falls to the ground in mortal agony, writhing in death.
ETC.
This makes it seem as though the player is involved in a rapidly expanding story in a dream world. The technique would involve the following:
we have X and Y fighting, their stats will be defined as Xdef (defense), Ydef, and Xstr (strength) and Ystr. X choses to atack Y. We determine damage, factoring in a random value, Xstr, and Ydef (you can determine how to randomize damage). Then we somehow determine if the attack hits, (I suppose you could do that first), and using that information, we decide on text to desplay. in the example, X is attacking Y, but misses. You assign random lines if damage is more than a certain threshold amount, or if the character misses, ETC. Since I don''t know what language you are using, my example won''t help much, but here is what it could be like in terms of BASIC and english:
Xran = random (1,Xstr) [a random # between 1 and Xstr)
Yran = random (1,Ydef)
Xdam = Xstr + Xran - Ydef
if Xdam < Ydef + Yran then goto miss
else: goto Xhit
Xhit:
text = random(1,number_of_texts)
if text = # then print "X {insert text here} to Y, doing" Xdam "damage"
ETC
I hope you get the general idea, just add something similar to what is under the label Xhit for the label miss, and repeat the procedure for Y''s turn. Good luck with your programing,
Richard Veysey
X makes a desperate swing at Y, but Y dodges out of the way,
Y strikes back with a thrust, hitting X in the (insert name of part) for Z damage!
X Feints at Y''s head, but instead strikes a powerful blow to Y''s chest for A damage.
Y falls to the ground in mortal agony, writhing in death.
ETC.
This makes it seem as though the player is involved in a rapidly expanding story in a dream world. The technique would involve the following:
we have X and Y fighting, their stats will be defined as Xdef (defense), Ydef, and Xstr (strength) and Ystr. X choses to atack Y. We determine damage, factoring in a random value, Xstr, and Ydef (you can determine how to randomize damage). Then we somehow determine if the attack hits, (I suppose you could do that first), and using that information, we decide on text to desplay. in the example, X is attacking Y, but misses. You assign random lines if damage is more than a certain threshold amount, or if the character misses, ETC. Since I don''t know what language you are using, my example won''t help much, but here is what it could be like in terms of BASIC and english:
Xran = random (1,Xstr) [a random # between 1 and Xstr)
Yran = random (1,Ydef)
Xdam = Xstr + Xran - Ydef
if Xdam < Ydef + Yran then goto miss
else: goto Xhit
Xhit:
text = random(1,number_of_texts)
if text = # then print "X {insert text here} to Y, doing" Xdam "damage"
ETC
I hope you get the general idea, just add something similar to what is under the label Xhit for the label miss, and repeat the procedure for Y''s turn. Good luck with your programing,
Richard Veysey
____________________________________________________________unofficial Necromancer of GameDev forums Game Writing section
Thanks for the reply!
Yes I get your idea. And you could color every different event to make it cool. And so on.
Well, unfortunately that wouldn''t do. The idea still is to make the player act upon the fight (maybe involved was the wrong word, English isn''t my nat language ;-) ).
So it should be turn-based and something like you make some tactical or strategic decision each turn which acts dramaticaly(or not) upon the fight.
We can even introduce a map into the combat system.
Yes I get your idea. And you could color every different event to make it cool. And so on.
Well, unfortunately that wouldn''t do. The idea still is to make the player act upon the fight (maybe involved was the wrong word, English isn''t my nat language ;-) ).
So it should be turn-based and something like you make some tactical or strategic decision each turn which acts dramaticaly(or not) upon the fight.
We can even introduce a map into the combat system.
Simple?...try Rock, Paper, Siscors...if the player picks Paper and the monster picks rock, then Paper "Wins" and the player hits the monster for X damage...if the monster "wins" then it hits the player, if they tie then it''s considered a "miss"....it''s very simple, and involveing, could even leave clues around to indicate that certain monsters use a "pattern" in how they play R.P.S.
On the other hand, at an abstract level...all combat in RPGs is just a contest (physical, and magic basied combat is just the "arena" this contest occurs in)...by changeing the "arena" around to something different...playing cards, raceing horses, delivering pizzas, etc...you can really push the RPG genre into new directions (only the anal rententive C-RPG crowd insists that RPG has such a narrow definition...look at the huge veriety of P&P RPGs...which includes everything from the classic D&D to "Cheech and Chong" like anticts in the RPG "Hemp!")
On the other hand, at an abstract level...all combat in RPGs is just a contest (physical, and magic basied combat is just the "arena" this contest occurs in)...by changeing the "arena" around to something different...playing cards, raceing horses, delivering pizzas, etc...you can really push the RPG genre into new directions (only the anal rententive C-RPG crowd insists that RPG has such a narrow definition...look at the huge veriety of P&P RPGs...which includes everything from the classic D&D to "Cheech and Chong" like anticts in the RPG "Hemp!")
My deviantART: http://msw.deviantart.com/
Simple RPG combat system is a bit of a misnomer. Combat systems in general are not simple once you get down to brass tacks. Most of the work a programmer has to do is programming the menus and animation patterns. If "simple" is what you desire, then the simplest would be along the lines of a Ultima:Exodus type game where all of the monsters just animate between two frames, and when they get hurt, they animate between one of their normal animation frames and a slash frame.
As for the stat-tinkering part of the battle engine, this depends on what type of ease you want. Do you want the mathematics to be easy or do you want the balancing the game to be easy? I remember playing a NES games called Swords And Serpents, and damage calculation went along the D&D 1d20 system, where in you roll between 1 and 20, and miss if it''s under the target''s AC. In that respect, we have a deflection system, not a attrition system. This type of system is easy in balance, because now we have 20 possible armors. An attrition system is harder to balance across game, and by attrition, I mean damage=(strength+attack)-targetdefense, because you now have to take into account growing variables, which might amount to a progress quest scenario.
Which is more interesting? Well, can you make it interesting to be constantly inflicting no damage to each other?
As for the stat-tinkering part of the battle engine, this depends on what type of ease you want. Do you want the mathematics to be easy or do you want the balancing the game to be easy? I remember playing a NES games called Swords And Serpents, and damage calculation went along the D&D 1d20 system, where in you roll between 1 and 20, and miss if it''s under the target''s AC. In that respect, we have a deflection system, not a attrition system. This type of system is easy in balance, because now we have 20 possible armors. An attrition system is harder to balance across game, and by attrition, I mean damage=(strength+attack)-targetdefense, because you now have to take into account growing variables, which might amount to a progress quest scenario.
Which is more interesting? Well, can you make it interesting to be constantly inflicting no damage to each other?
william bubel
If you want to offer the player a choice of options other than attack then the system will lose some of it''s simplicity.
One option would be to take some inspiration from the d20 system for pen and paper rpg''s. With this you can feint, trip, charge, push, push past, grapple and many other things. For more information you could check out www.wizards.com/d20. Go to the page about the SRD (standard rules document).
The system would be fairly simple to implement and offer''s the player a certain level of a tactical approach to combat.
One option would be to take some inspiration from the d20 system for pen and paper rpg''s. With this you can feint, trip, charge, push, push past, grapple and many other things. For more information you could check out www.wizards.com/d20. Go to the page about the SRD (standard rules document).
The system would be fairly simple to implement and offer''s the player a certain level of a tactical approach to combat.
GO TO MY WEBSITE.GO NOW.Oh wait I''m not Jesse Custer. Real Life Sux.
Just my toughts here:
The system is turn based. For simplicity, the fights are all unharmed, zero weapons.
The combatants have three fighting stats: streght, protection and speed. No stat can be lower than 1, neither higher than 50, and MaxHp should be 50 or so for human players, but you can tweak the NPCs MaxHp.
You increase your stats after every kill, not actually level based, depending on the stat the killed combatant had higher.
If he had higher protection then you increase in streght + 4, higher streght increases speed + 2, and speed increases streght + 1 and speed + 1.If the killed combatant had equal stats randomize from 1 to 2, 1 = +2 point to streght and 2 = +1 point speed.
Increasing in a stat more than 3 times in a row means that you get a -1 penalty in the other stat.
If the killed combatant speed + streght + protection < (killer combatant stats added up) / 2 then the killer gets only a +2 streght or +1 speed increase. If it's lower than the killer added stats divided by 4, the killer doesn't gains any stats.
Since protection is based on the armor the user is carring it doesn't improve by fighting.
You can have 3 different armors:
First with 2 protection, you start with them or you can buy them in the shop.
Second with 5 protection, a speed penalty of -2 and bought in shops.
Second with 7 protection, a speed penalty of -5 and gotten everytime you beat a boss, if the game contains no bosses, then when you kill a combatant(including NPCs) that carries this armor, you can choose to switch it with your current armor.
In shops you can buy the first and second armor and also a refilling potion. You can only carry one of the refilling potions.
The combatant can attack or drink Hp refilling potion or flee during his turn:
If the combatant attacks, it chooses a target and:
The defendant could choose to block or to counterattack, if he chooses to block then after the attack it's the defendant's turn.
If the defendant chooses to counterattack, after the attack it's again the attacker's turn; the procedure of the counterattack is:
Make a randomize from 1 to 10, if it's equal to 1 then the defendant takes the damage, if it's 2-4 no damage is done(both combatants dodged the attack), 5-9 both combatants hit, 10 the attacker takes twice the damage.
NumberOfTimesTheCombatantAttacks = speed
Damage = (AttackerStreght / DefenderProtection) * (AttackerHP / AttackerMaxHP)
The HP/MaxHP part means that the more hurt the combatant is, the lower the damage is. I just put this to make battle more interesting.
Also, if a combatant is hit with a attacker's streght higher than 6 times the defendant protection, the armor's protection gets a -1 penalty.
If the attacker flees:
The defendant can choose to chase the attacker or not.
If he chooses to leave him alone the attacker flees.
If he chooses to chase then it cost the defender
DefenderHp = DefenderHp - (DefenderMaxHp * 0.05), which means 5% of the defender's MaxHP, and also:
AttackerEscapingChance = ((AttackerSpeed - DefenderSpeed) / AttackerSpeed) * 100
and then you randomize from 1 to AttackerEscapingChance, and if it is higher than 25 the attacker escaped. Also if AttackerEscapingChance is negative or lower than 26 the attacker couldn't flee.
If the attacker drinks a potion:
AttackerHp = AttackerMaxHp
It's defendants turn.
------------------------------------------------------------------
I think the system is easy to program, it's just a bunch of if..else, some randomize and also it has the armor thing, but adds a good amount of complexity to the fight, and fighting with many people at a time adds that since you level up by kill, your stats change quickly in a fight with many, but actually if you dont want let player get super strong quickly add many low level monsters.
I since I didn't knew how simple was good enough, if you think it's too complex, which you probably do
kick the armor thing, instead of using the protection stat make it as if it was equal to 1, and don't do anything that has to do with it.
If you still find it too complex, instead of the randomizes, give them two choices and if the variable to be evaluated is higher than the 50% of the max posible value then the action is successfull, otherwise it isn't.
If you still want it easier to program, get the level up stuff and instead of making it as complex at it is, just have the player gain +3 streght and +1 speed per kill.
This is mostly about the math stuff and fight flow and options. Add the graphic programming simplicity as Inmate2993 said with an stand pose, and attack pose and some way of showing that someone died, perhaps just making it dissapear, or just make the game text-based.
You know I think I should stop getting too carried away with this kind of stuff :S
[edited by - Coz on October 28, 2003 3:00:48 PM]
The system is turn based. For simplicity, the fights are all unharmed, zero weapons.
The combatants have three fighting stats: streght, protection and speed. No stat can be lower than 1, neither higher than 50, and MaxHp should be 50 or so for human players, but you can tweak the NPCs MaxHp.
You increase your stats after every kill, not actually level based, depending on the stat the killed combatant had higher.
If he had higher protection then you increase in streght + 4, higher streght increases speed + 2, and speed increases streght + 1 and speed + 1.If the killed combatant had equal stats randomize from 1 to 2, 1 = +2 point to streght and 2 = +1 point speed.
Increasing in a stat more than 3 times in a row means that you get a -1 penalty in the other stat.
If the killed combatant speed + streght + protection < (killer combatant stats added up) / 2 then the killer gets only a +2 streght or +1 speed increase. If it's lower than the killer added stats divided by 4, the killer doesn't gains any stats.
Since protection is based on the armor the user is carring it doesn't improve by fighting.
You can have 3 different armors:
First with 2 protection, you start with them or you can buy them in the shop.
Second with 5 protection, a speed penalty of -2 and bought in shops.
Second with 7 protection, a speed penalty of -5 and gotten everytime you beat a boss, if the game contains no bosses, then when you kill a combatant(including NPCs) that carries this armor, you can choose to switch it with your current armor.
In shops you can buy the first and second armor and also a refilling potion. You can only carry one of the refilling potions.
The combatant can attack or drink Hp refilling potion or flee during his turn:
If the combatant attacks, it chooses a target and:
The defendant could choose to block or to counterattack, if he chooses to block then after the attack it's the defendant's turn.
If the defendant chooses to counterattack, after the attack it's again the attacker's turn; the procedure of the counterattack is:
Make a randomize from 1 to 10, if it's equal to 1 then the defendant takes the damage, if it's 2-4 no damage is done(both combatants dodged the attack), 5-9 both combatants hit, 10 the attacker takes twice the damage.
NumberOfTimesTheCombatantAttacks = speed
Damage = (AttackerStreght / DefenderProtection) * (AttackerHP / AttackerMaxHP)
The HP/MaxHP part means that the more hurt the combatant is, the lower the damage is. I just put this to make battle more interesting.
Also, if a combatant is hit with a attacker's streght higher than 6 times the defendant protection, the armor's protection gets a -1 penalty.
If the attacker flees:
The defendant can choose to chase the attacker or not.
If he chooses to leave him alone the attacker flees.
If he chooses to chase then it cost the defender
DefenderHp = DefenderHp - (DefenderMaxHp * 0.05), which means 5% of the defender's MaxHP, and also:
AttackerEscapingChance = ((AttackerSpeed - DefenderSpeed) / AttackerSpeed) * 100
and then you randomize from 1 to AttackerEscapingChance, and if it is higher than 25 the attacker escaped. Also if AttackerEscapingChance is negative or lower than 26 the attacker couldn't flee.
If the attacker drinks a potion:
AttackerHp = AttackerMaxHp
It's defendants turn.
------------------------------------------------------------------
I think the system is easy to program, it's just a bunch of if..else, some randomize and also it has the armor thing, but adds a good amount of complexity to the fight, and fighting with many people at a time adds that since you level up by kill, your stats change quickly in a fight with many, but actually if you dont want let player get super strong quickly add many low level monsters.
I since I didn't knew how simple was good enough, if you think it's too complex, which you probably do
![](tongue.gif)
If you still find it too complex, instead of the randomizes, give them two choices and if the variable to be evaluated is higher than the 50% of the max posible value then the action is successfull, otherwise it isn't.
If you still want it easier to program, get the level up stuff and instead of making it as complex at it is, just have the player gain +3 streght and +1 speed per kill.
This is mostly about the math stuff and fight flow and options. Add the graphic programming simplicity as Inmate2993 said with an stand pose, and attack pose and some way of showing that someone died, perhaps just making it dissapear, or just make the game text-based.
You know I think I should stop getting too carried away with this kind of stuff :S
[edited by - Coz on October 28, 2003 3:00:48 PM]
Wow so many replies! thanks... ;-)
2 Inmate - heard of both games, played only Ultima, though. Would be helpful to use that "animation"... 8-)
Kertap, thank you for the link. Ummm... looks interesting didn''t have time to read it all unfortunately. No doubt there would be something interesting to implement!
Coz, it would be nice to program that! And no it is no way hard for me. I am quite experienced.
The simplicity I am talking about isn''t because of my programming level, but I want the system to be very clear to a user and simple enough. When you understand everything about what you do and see that there is tactics and strategy in that easiness, it captures you and doesn''t let go... my opinion.
Now, MSW is talking of things quite close to what I was thinking of when created the topic: RPS. See, you understand everything about this game - it is easy, yet you can make it to any number of complexity ( ->tactics ) you want.
For example, lets change RPS to Dragon, Lady and Knight. Sounds more RPGish anyway!
Ok, so suppose players posses figures of this three characters. You can have say 3 Dragons, 1 Lady and 5 Knights. And you use them when you fight. If you have no Dragon figures left you still can use it, but the hit would be twice less effective. And of course the real Dragon figure could beat the phantom one.
And on higher levels you could have some magic Knight figures that would have some unique properties.
Now, for example, - NPC. Say again its a Dragon. Ok, of course you could guess that he has a lot of Dragon figures and not so much ( or 0! ) Knights.
This brings strategy if to think it over and balance.
What do you think?
And of course any other ideas would be very interesting! Some fully detailed math systems like Coz brought are always interesting to discuss!
2 Inmate - heard of both games, played only Ultima, though. Would be helpful to use that "animation"... 8-)
Kertap, thank you for the link. Ummm... looks interesting didn''t have time to read it all unfortunately. No doubt there would be something interesting to implement!
Coz, it would be nice to program that! And no it is no way hard for me. I am quite experienced.
The simplicity I am talking about isn''t because of my programming level, but I want the system to be very clear to a user and simple enough. When you understand everything about what you do and see that there is tactics and strategy in that easiness, it captures you and doesn''t let go... my opinion.
Now, MSW is talking of things quite close to what I was thinking of when created the topic: RPS. See, you understand everything about this game - it is easy, yet you can make it to any number of complexity ( ->tactics ) you want.
For example, lets change RPS to Dragon, Lady and Knight. Sounds more RPGish anyway!
Ok, so suppose players posses figures of this three characters. You can have say 3 Dragons, 1 Lady and 5 Knights. And you use them when you fight. If you have no Dragon figures left you still can use it, but the hit would be twice less effective. And of course the real Dragon figure could beat the phantom one.
And on higher levels you could have some magic Knight figures that would have some unique properties.
Now, for example, - NPC. Say again its a Dragon. Ok, of course you could guess that he has a lot of Dragon figures and not so much ( or 0! ) Knights.
This brings strategy if to think it over and balance.
What do you think?
And of course any other ideas would be very interesting! Some fully detailed math systems like Coz brought are always interesting to discuss!
Final Fantasy 7 - fantastic combat IMHO. Very simple to use, should be quite simple to implement, easy to pick up and suprisingly versatile.
If you haven''t played it, get a copy of FF7 - no doubt it''s at the lower price range of the bargain bucket at your local store.
I am surprised there aren''t more games with that style. It has it all really - simplicity, shallow learning curve, combat depth and flashy graphics.
If you haven''t played it, get a copy of FF7 - no doubt it''s at the lower price range of the bargain bucket at your local store.
I am surprised there aren''t more games with that style. It has it all really - simplicity, shallow learning curve, combat depth and flashy graphics.
------------------------------------------[New Delta Games] | [Sliders]
The thing that makes FF7 system insteresting is the "materia", that you can create various attacks depending on their combination, and that different equipment had a different limit on the aumount of materia you could equip to it.
So actually the beauty was made before the battle but it showed during battle.
Also of course if you had the same materia all the time, it could get boring over time. The different capacity in equipment forces the player a little if he wants equipment with better stats.
BTW if you get the idea into a playable state I would like to play it :D
[edited by - Coz on October 28, 2003 10:02:40 PM]
So actually the beauty was made before the battle but it showed during battle.
Also of course if you had the same materia all the time, it could get boring over time. The different capacity in equipment forces the player a little if he wants equipment with better stats.
BTW if you get the idea into a playable state I would like to play it :D
[edited by - Coz on October 28, 2003 10:02:40 PM]
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement
Recommended Tutorials
Advertisement