Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


Java RPG Stats System


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
4 replies to this topic

#1 ChaoSXDemon   Members   -  Reputation: 96

Like
0Likes
Like

Posted 28 May 2012 - 07:58 PM

I have been thinking this for a while and I'm not sure if there is already a solution out there. I did not find anything from Google. What I am wondering is how can I create a system that is easy to use for RPG games that uses stats for characters. It is not simply "Str", "Dex" and use some number to scale "attack" or "attack speed", but instead, a system that would nicely integrate effects into the game that is EASILY EXTENDABLE. Effects are things such as "decrease 10 hp per frame" or "increase 1.5 mana per frame". I'm thinking that each Entity in the game would keep at least two list of effects. Each effect maybe once time applied or per frame applied. During each frame, we simply loop through these lists and apply each effect. We remove the ones that are applied once and keep the ones that are applied over time. Anyone got any good polymorphic object oriented design?

Thanks,
CXD
Youtube:
My Channel

Video Lessons:
Java Programming Lessons

Tutorials Written (Not-Active):
Introduction to A.I.

Sponsor:

#2 lthannyl   Members   -  Reputation: 103

Like
0Likes
Like

Posted 30 May 2012 - 05:50 PM

off the top of my head, i would create a class called Effect with an abstract method called perform()

then make other classes that define each particular effect, for example, you could create a strengthBuff class or whatever
and implement the perform method to give it whatever logic you want.

perform could also take parameters if needed, like perform(Actor actor) etc.

I did something like this for my Pokemon clone game, each move (like ember for example) not only deals damage to the other pokemon,
but it also has a chance of contaminating the other pokemon with a lingering effect (in case of ember, it was damage over time)
so each move had an effect attached to it, and i simply implemented the perform method for each individual move, (sand attack lowers accuracy, etc)

#3 ChaoSXDemon   Members   -  Reputation: 96

Like
0Likes
Like

Posted 31 May 2012 - 12:36 PM

Thanks for the reply! I did try that but I had problem doing things that remove effects right away. Do you use an Abstract class that automatically apply the effect and have all "Entity" implement "Effectable" ?

CXD

off the top of my head, i would create a class called Effect with an abstract method called perform()

then make other classes that define each particular effect, for example, you could create a strengthBuff class or whatever
and implement the perform method to give it whatever logic you want.

perform could also take parameters if needed, like perform(Actor actor) etc.

I did something like this for my Pokemon clone game, each move (like ember for example) not only deals damage to the other pokemon,
but it also has a chance of contaminating the other pokemon with a lingering effect (in case of ember, it was damage over time)
so each move had an effect attached to it, and i simply implemented the perform method for each individual move, (sand attack lowers accuracy, etc)


Youtube:
My Channel

Video Lessons:
Java Programming Lessons

Tutorials Written (Not-Active):
Introduction to A.I.

#4 apatriarca   Crossbones+   -  Reputation: 1770

Like
0Likes
Like

Posted 31 May 2012 - 01:04 PM

Before discussing about the best design possible, you should probably look more closely to your problem. What kind of effects do you want/need/plan to implement? What kind of operations on effects do you want/need/plan to support? You may for example be interested in knowing if an effect is positive or negative or what stats are changed by the effect. You may be interested if the effect should be applied once (e.g. add 2 points to dexterity) or every frame (or every n milliseconds). You may want to know if the effect is "invertible" (i.e. if the result of the effect should be removed when the effect is removed) or if it is permanent. You may want to know if the effect has a duration or if it is linked to some object. You should then decide what's data and what's code (e.g. the two effects "+2 dex for 2min" and "+5 int for 30s" may be implemented as two instances of the same effect). Finally, you should also probably try to understand how those effects will be used by your system.

#5 ChaoSXDemon   Members   -  Reputation: 96

Like
0Likes
Like

Posted 31 May 2012 - 09:32 PM

Before discussing about the best design possible, you should probably look more closely to your problem. What kind of effects do you want/need/plan to implement? What kind of operations on effects do you want/need/plan to support? You may for example be interested in knowing if an effect is positive or negative or what stats are changed by the effect. You may be interested if the effect should be applied once (e.g. add 2 points to dexterity) or every frame (or every n milliseconds). You may want to know if the effect is "invertible" (i.e. if the result of the effect should be removed when the effect is removed) or if it is permanent. You may want to know if the effect has a duration or if it is linked to some object. You should then decide what's data and what's code (e.g. the two effects "+2 dex for 2min" and "+5 int for 30s" may be implemented as two instances of the same effect). Finally, you should also probably try to understand how those effects will be used by your system.


Okay, I'll make a list of the things I want and try to come up with an OOP design such that it is easy to mix and extend the effects. Thanks!
Youtube:
My Channel

Video Lessons:
Java Programming Lessons

Tutorials Written (Not-Active):
Introduction to A.I.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS