.com.unity Forums
  The Official e-Store of Shrapnel Games

This Month's Specials

Raging Tiger- Save $9.00
winSPMBT: Main Battle Tank- Save $6.00

   







Go Back   .com.unity Forums > Illwinter Game Design > Dominions 3: The Awakening

Reply
 
Thread Tools Display Modes
  #1  
Old November 22nd, 2008, 05:08 PM

Omnirizon Omnirizon is offline
BANNED USER
 
Join Date: Dec 2007
Location: Illinois
Posts: 1,133
Thanks: 25
Thanked 59 Times in 36 Posts
Omnirizon is on a distinguished road
Computer OT: Making a Game System (part 2)

part 1 was the 'Western v. Eastern' marital arts thread



so I'm crafting a model for combat now. take a look at what I've got so far and see what you think. feedback is appreciated. keep in mind this is for a computer game, so typically time consuming formulas are no problem...

for starters, characters possess two "life" measurements rather than just one. The first is 'vitality', and then there is the typical 'hit points'. Vitality is actually more of a fusion of traditional hit points and fatigue, whereas 'hit points' in my system are the representation of physical body integrity (like not having holes and cuts on your body and stuff).

the reason for this seperation is that vitality can represent the energy, skill, and spirit a character brings to defending and attacking in a fight. it makes sense that this should increase drastically with character advancement. physical body integrity should not increase much and should be subject to sudden trauma when subject to stress that vitality couldn't defend against.


that sounds nice and all, so now how to model it?

to keep things simple, lets consider two combatants in a controlled situation; say a duel. more complexity (for multiple combatants) can be added later.


for simply 'meleeing' there is a vitality cost each round (or loop). this cost is modeled using an asymptotic curve:

Code:
1. vitalitycost = 1 / h
'h' will be a harmonic mean derived from many things including physical stats, skills, and equipment; equipment will typically lower the harmonic mean, while the other inputs will work to raise it, but this is not always true. A harmonic mean tends to cluster around the smallest numbers, creating a heavy reverse salience influence, preventing players from compensating for a heavy drawback by simply dumping a lot of 'points' (or whatever) into another relevant skill. This will also make heavy armor and equipment hard to compensate for since they are the biggest drag on 'h'.

harmonic mean, for those interested in knowing more

so that is the vitality cost incurred each round of fighting.

next, each combatant makes a 'threat roll' and a 'defense roll'. the threat roll is

Code:
2. threat = h + r
'h' is the harmonic average of relevant factors (think str, dexterity, equipment) while 'r' is a random number (most likely an open ended dice roll)

the defense roll is

Code:
3. defense = 1 / (h + r)
this is just like the vitality cost, but 'h' will likely be derived from different factors, and there is an added random element.

next, threat is multiplied by defense. since defense is asymptotic it will lower threat as it increases, but never eliminate it.


so a quick recap in the form of a pseudo-formula

Code:
vitcost + (threat * def) = vitdam
note that vitcost and def are intrinsic to the character, the threat is the external threat; remember def is always between 1 and 0, and approaches zero. vitcost is flat amount where less is better, and threat has normal distribution that approaches infinity. in some ways the threat and defense are like the 'attack' and 'defense' of dominions, but they are interacted (multiplied) rather than just compared to see if damage occurs. I thought this better modeled the kind of fuzzy mish-mash of factors occuring during battle, both blunting extreme advantage while also lowering extremely lucky to the point of implausibility. In an RPG this would be preferred. Also, increasing vitality with character advancement is satisfying, while remaining more realistic than increasing hit points.


if a large amount of vitdam is suffered in a single round, there is a chance the character will suffer physical damage. this is to represent the glancing blows and nicks two combatants will incur as they spar.

Code:
phydam_chance = phydam_chance(vitdam)
here there will be some formula, dependent on vitdam, that determines the percentage chance of suffering physical damage. larger amounts of vitdam make it more likely. this could perhaps use vitdam as a ratio of total vitality; similar to affliction chance in dominions.


once vitality is eliminated, physical damage can occur. however, there is also another layer of 'armor' which has not yet been modeled. before I do that, consider some implications of my 'vitality-threat' model

1. in melee fighting, strength, dexterity, and arms can reduce the threat to vitality suffered each round, as well as increase the amount of threat you can present; this sounds reasonable.

2. armor can actually increase the vitality damage suffered each round since it will have a negative influence on the defense roll, however it may end up preventing physical damage. does this sound reasonable? vitality is sort of a buffer from actual damage that the character is able to present due to skill, energy, and spirit. having lots of armor on would translate to vitality being depleted quicker (and not just because of vitcost, but due to the defense penalty of armor), and allowing threat to become physical damage quicker. however the armor would then begin providing a barrier to physical damage.

3. imagine vitality-threat in the case of, say, a rocket propelled grenade. does it still make sense? defense would reduce threat damage multiplicatively. this sounds plausible in a sword fight, but how can your defense reduce a traumatic explosion of a grenade to, say, a tenth of its full power? well, i suppose _getting out of the way_ would help. therefore, having armor on and actually suffering vitality depletion because of it makes sense here.



so does this whole threat-vitality-physical damage model make sense? I like it a lot better than simple 'health' or 'hit points', and I like fusing fatigue into it since when you get fatigued you will not have as much vitality to defend with, and it allows fatigue to be represented as the lack of vitality, rather than the accrual of fatigue; its also more satisfying, and more accurate, to increase the amount of vitality with character advancement, and thus the amount of exertion and stress that can be suffered before becoming fatigued. This does not seem to allow for dominions usage of fatigue to lower attack and defense (or threat and defense); however that could be incorporated by adding modifiers based on the ratio of current vitality to maximum vitality. This model also allows for the more accurate modeling of, say, two unarmored fighters sparing; or of a combatant dodging an explosive device. I am not wanting to directly compare Dominions to my own combat system, because they are meant for two different things. However, my system is actually very heavily Dominions influenced, but modified to be able to represent RPG style personal combat in a way that would be more satisfying when playing an RPG.



thoughts or suggestions?
also, any input on how to determine or weight the inputs into the harmonic averages? most likely relevant stats will be strength, dexterity, psyche, perception, and arms and skills modifiers.

below is a full stats list, I havn't really done much work on these actual effects, or any work on the effects of weapons and armor.

Code:
Cognition:		Represents analytical and synthetical capability
Perception:		Represents percpetion of the physical world; both eyesight and powers of observation
Psyche:			Represents mental stability and strength

Strength:		Represents physical strength
Dexterity:		Represents physical nimbleness and grace
Memory:			Represents rote storage and recollection of objects and procedures

Constitution:	        Represents the resistance to physical destruction
Spirit:			Represents spiritual strength and presence
Charisma:		Represents personal magnetism and influence
Reply With Quote
  #2  
Old November 22nd, 2008, 06:36 PM
Endoperez's Avatar

Endoperez Endoperez is offline
National Security Advisor
 
Join Date: Sep 2003
Location: Eastern Finland
Posts: 7,110
Thanks: 145
Thanked 153 Times in 101 Posts
Endoperez is on a distinguished road
Default Re: OT: Making a Game System (part 2)

I remember I used to try to do perfectly symmetrical pen&paper stats systems. I also planned to do a computer game in which you had two joysticks for hands and two special computer mice for legs and could control your character with actually moving your legs and hands and it would be oh so perfect and just like real life. Keep It Simple, Stupid...

Can your players understand all that, esp. when combined with the martial arts system you're thinking of? Good mechanics are good, but what ind of a feeling should player get from playing your game?

I've seen similar health/stamina implementation in one game: Betrayal at Krondor. It had two sequels, from which Betrayal at Antara is more interesting IIRC. I don't know what system it uses.

In BaK, you first lose stamina, and after you've lost stamina, you lose health. Spellcasting drained Stamina, and then Health if your stamina was spent. Stamina was easy to heal just by resting, but Health could only be recovered on inns (== gold), and badly wounded characters (== 0 hp, near death) could only be healed in temples (== mucho gold). It could take several days in an inn to recover a severely wounded character, and since your characters had to carry food with them you usually couldn't rest to full after every battle, or if you did you got low in food, but usually the worst that happened would be having to detour or backtrack to the nearest town for more supplies.

I think you'd like Betrayal at Krondor. Health/stamina system, skills that are raised by use, barding skill teaches the characters to play a single song which starts out-of-tune and will get you thrown out of an inn, but will become pleasant and recognisable and profitable with higher skill, weapons and armor degrading with use, enemies dropping all the equipment they carried but players unable to carry all the loot unless they make several trips, day/night system with dark nights (torches, spells and magic light items available), fatigue system for characters, etc etc.

It's free and based on Raymond E. Feist's Midkemia books. Speech, descriptions and events are narrated in text, music is pleasant and graphics are adequate if you can accept 1994 vector geography. Thankfully the game mostly uses hand-drawn sprites which have aged better than early 3d models of later games.


Stats: you should get rid of everything that isn't used. Also, remember KISS and get rid of as many as you can. Your game doesn't have to have a realistic "engine" to give you a feeling that you're playing in a real, working world.
Get rid of Memory. If your character doesn't remember everything, the player is forced to write things down. NOT GOOD!

Could you use Dominions stats? What would you need in addition? Cognition is perhaps the only one that isn't found in Dominions. What is the difference between Spirit and Psyche?

Perception - Precision
Psyche - Magic Resistance

Strength - Strength
Dexterity - base defence before armor/shield/weapon modifiers
Memory - unnecessary in games

Constitution - protection
Spirit - does this differ from Psyche?
Charisma - leadership


Could you imagine an RPG based on Dominions stats, in Dominions world? What more would it need to convey the feeling you're trying to convey through your game?

To return to the martial art discussion, Katana has higher base damage, attack and strength values than most one-handed swords, which are usually used with shields. Two-handed swords are similar in stats to katanas, but two-handed-sword wielders can use Full Plate instead of Samurai Armor. That's good enough for game, and gives a feeling that it's all based on the real world somehow, but still abstract enough for you to ignore its problems.


Dominions mechanics are very good for fighting. Add in health/stamina mechanic and skills from Betrayal at Krondor, and you don't even need Cognition/Intelligence/Learning stat at all.
Really, download and try BaK. Sierra made it free to promote a sequel.

http://en.wikipedia.org/wiki/Betrayal_at_Krondor
Sequel with almost the same system: http://en.wikipedia.org/wiki/Betrayal_in_Antara
Official sequel which wasn't received as well, but I've heard it had good alchemy system: http://en.wikipedia.org/wiki/Return_to_Krondor

Downloads
Win: http://www.alt-tab.net/games/betraya...ndor/download/ (not patched AFAIK, but that doesn't matter for the early game)
Fan-made Linux version: http://sourceforge.net/projects/xbak
Reply With Quote
  #3  
Old November 22nd, 2008, 07:22 PM

Omnirizon Omnirizon is offline
BANNED USER
 
Join Date: Dec 2007
Location: Illinois
Posts: 1,133
Thanks: 25
Thanked 59 Times in 36 Posts
Omnirizon is on a distinguished road
Default Re: OT: Making a Game System (part 2)

thanks for the tip on BaK. I actually recall playing that game now when it first came out, I never got too far into it though, but yes I remember it was quite innovative

so yes, i'm sold on vitality/health bifurication.

i'm more concerned with my system for handling and depleting vitality, where the defense roll is actually the generation of a fraction to multiply threat by; the 'roll' is to establish the denominator of that fraction.

this is combined with harmonic (or failing that, geometric) means for establishing threat and defense. 'threat' might typically be just the weapon damage and strength score, however since vitality is siphoned off without weapon contact, and weapons simply pose some abstract 'threat' in the hands of its user, a flat weapon damage makes no sense. weapons will have a base threat score, but that is averaged (harmonically!) with several other factors, including the array of mental skills I have (thus why I want so many of them). therefore, it is perfectly possible for a lean warrior weilding a dagger to present more threat against a massive warrior weilding a 2h-sword; it all depends on how skilled the two warriors are and how well the leaner warrior is at negating the range advantage of the larger sword. In fact, I was looking through the drawings of the old german school manuals on using 2h-swords, and warriors were often depicted using the sword more like a staff! in close combat the swords weight and leverage becomes a liability, and it had to be used differently. In actual combat, the dagger and the sword have a 'threat' separate from the amount of physical damage they could actually do.

for understanding the importance of the multiple factors and harmonic or geometric means, consider this (the following example is a geometric mean, since I don't know how to compute harmonic means or if it could be computed in this system [since I don't really understand it yet], but I know that harmonic means are sensitive to reverse salience the most, while geometric means are only a little.

1 + 1 + 1 + 2+ 10
arithmetic mean = 3
geometric mean = 1.71

this means a powerful weapon in the hands of a lousy user presents very little threat. so if the two-handed sword had a high base threat, but the user had no other stats or skills relevant to its use, it would do less threat than a stalk of grass in the hands of a person skilled in weilding stalks of grass. consider that even if the grass does no damage, it may still be used in a very threatening way that could reduce vitality. this is why 'psyche' and 'spirit' are part of vitality. they are those unspeakable but obvious items that we can feel but never understand. think about 'getting psyched out' or 'losing your spirit'. a person very good at using stalks of grass threateningly could do that to someone; while never inflicting physical damage, but forcing the person into a state of submission. for this reason, i'm even going to have 'charisma' be important for some martial arts (there are several that depend on feints and fakes to essentially psyche an opponent out).

ok, so the stalks of grass is completely absurd, but it makes the point of why i am so carefully parsing out the meaning of vitality and why I want all those stats which you may find unnecessary. also, there will be some systems in my game which need something like 'spirit'. some people may be completely dumb and naive, but have lots of spirit... I'm just trying to capture some of those less mechanical essences (in a mechanical way, no less, but that's the nature of the beast) and make them relevant for the game.
Reply With Quote
  #4  
Old November 22nd, 2008, 07:44 PM
cleveland's Avatar

cleveland cleveland is offline
Captain
 
Join Date: Oct 2007
Location: guess - and you'll be wrong
Posts: 834
Thanks: 33
Thanked 187 Times in 66 Posts
cleveland is on a distinguished road
Default Re: OT: Making a Game System (part 2)

Hey Omni,

Neat stuff. What are the expected ranges of each of these variables you've proposed? Things can get kinda dangerous with 1/x, it approaches infinity pretty quickly as x --> 0.

Also, in your threat*defense expression [(h1+r1)/(h2+r2)], what are the relative magnitudes of the h to r? If h>>r, (h1+r1)/(h2+r2) ~= h1/h2 (and vice versa).
Reply With Quote
  #5  
Old November 22nd, 2008, 08:53 PM

Omnirizon Omnirizon is offline
BANNED USER
 
Join Date: Dec 2007
Location: Illinois
Posts: 1,133
Thanks: 25
Thanked 59 Times in 36 Posts
Omnirizon is on a distinguished road
Default Re: OT: Making a Game System (part 2)

cleveland,

i havn't done any work on the magnitudes of these variables yet, that's the point I'm at now, but was just wanting to see what people thought about a system like this. the amount that these variables are allowed to get very large or very small can be tweaked, that's probably the most work if I decide to use this system.

my goal was to find a system were things are more interactive and less flat, that's what I'm hoping this will be.

coding the math won't be hard. I'm going to make a little application that will simulate a fight between two characters using the system. I can then use that to play with everything and work on getting a good balance.

I will post that app here as soon as I get it done; and others could experiment with it. I'm on fall break right now, so maybe I can get it done over the next week; however I have some papers to write also...
Reply With Quote
  #6  
Old November 22nd, 2008, 11:27 PM
Tyrant's Avatar

Tyrant Tyrant is offline
First Lieutenant
 
Join Date: Sep 2004
Location: N. California
Posts: 624
Thanks: 7
Thanked 29 Times in 3 Posts
Tyrant is on a distinguished road
Default Re: OT: Making a Game System (part 2)

Very interesting, I'll look forward to your progress.

One question i have right off the bat...are you attempting "realism" or is this meant to be cinematic/video game style with heroic action heroes?

With regard to your question about grenades etc., if the basic system is clean, rough edges can be smoothed out by having damage types and limiting the percentage of damage that can be absorbed by vitality. For instance lethal explosive damage could only be 50% absorbed by vitality unless the target can dive for cover, or whatever.
Reply With Quote
  #7  
Old November 23rd, 2008, 12:02 AM
JimMorrison's Avatar

JimMorrison JimMorrison is offline
Lieutenant General
 
Join Date: May 2008
Location: Utopia, Oregon
Posts: 2,676
Thanks: 83
Thanked 143 Times in 108 Posts
JimMorrison is on a distinguished road
Default Re: OT: Making a Game System (part 2)

Just wanted to post some encouragement! 8 )

I've been studying game systems for a long time (since that wee age when I discovered that AD&D wasn't the only way), and I have to agree with the basic concepts of where you're going with this. For example, my own system (that I haven't worked on lately, for shame), actually has 12 statistics, with the intent that there are very subtle and complex interactions among them.

I think there are a few very good points to developing a system like this:

- The extreme complexity which would kill the game in PnP, becomes a great tool, when you decide to commit the system to only be used with a computer doing all the complex calculus.

- Decreasing the number of available stats causes two problems, first it waters down the personality of your characters, I have seen numerous systems that go the STR/DEX/INT route, and the degree of variance among successful characters drops precipitously. Likewise, there is an inverse relationship between number of stats, and ease of min-maxing at the expense of character building. Using 9 statistics, even if they can be said to overlap in certain ways, adds a lot of nuance to a character, allowing you to give much more depth and personality as they develop - as well as making more progression paths viable.

- Cause and effect can gain a much greater depth as well. Avoiding falling into a pit, for example, should not simply rely on your "Dexterity". Having a statistic that represents sensual "Perception" allows an interaction where you assume there is a point of observation of the pit, as well as a point of physical reaction - and someone who is either perceptive but clumsy, or nimble but dull may fall straight into a pit that a person who was more average in both respects may have avoided. This goes beyond mere realism, directly to immersion.


All that said, I would have to agree, the "Memory" stat is going to be the hardest to work with, without it becoming either a terrible annoyance, or a gaping hole in the system that either requires boosting at every opportunity to keep from being screwed, or to drop as much as possible to gain points. Of course, insuring that it has very deep interactions with other stats insures that it can't be ignored totally (make it the primary stat modifying learning rate?), but it will work better in the context of the game if it has an overt function, rather than being totally passive.


I'll probably discuss this more with you later, I'd like to help you as much as I can, without corrupting you with specific design points from my own system.
Reply With Quote
  #8  
Old November 23rd, 2008, 01:38 AM
Lokean's Avatar

Lokean Lokean is offline
Corporal
 
Join Date: Nov 2008
Posts: 148
Thanks: 0
Thanked 27 Times in 9 Posts
Lokean is on a distinguished road
Default Re: OT: Making a Game System (part 2)

Omnirizon, since you seem to be only vaguely familiar with the Pythagorean means, I'll give examples with the data set you gave earlier.

The Pythagorean means of the data set [1, 1, 1, 2, 10] are as follows:

The arithmetic mean is the sum of the members of the set divided by the population of the set.
μ = (1 + 1 + 1 + 2 + 10)/5 = 3

The Geometric mean is the product of the members of the set raised to the power of the reciprocal of the population of the set.
G = (1 * 1 * 1 * 2 * 10)^(1/5) = 1.82

The Harmonic mean is the reciprocal of the arithmetic mean of the reciprocals of the members of the set.

H = 1/((1/1 + 1/1 + 1/1 + 1/2 + 1/10)/5) = 1.39

It is vitally important to note that these functions only exist for positive, real numbers.

I think it essential that you realise how strongly the harmonic mean skews the results towards the low values and, quite importantly, the limit of the harmonic mean.
Consider a situation where a character's vitality cost for acting is the harmonic mean of 100 values, 99 of which are 10, one of which is 1. The harmonic mean is 9.17.
Consider the same thing, but now 99 of those values are one googolplex. The harmonic mean is 100.

This illustrates an important relationship with regards to the the population of a set, its smallest member and its harmonic mean. The maximum value of the harmonic mean of a data set is that of the smallest member multiplied by the population.
Reply With Quote
  #9  
Old November 23rd, 2008, 03:29 AM
Endoperez's Avatar

Endoperez Endoperez is offline
National Security Advisor
 
Join Date: Sep 2003
Location: Eastern Finland
Posts: 7,110
Thanks: 145
Thanked 153 Times in 101 Posts
Endoperez is on a distinguished road
Default Re: OT: Making a Game System (part 2)

Quote:
Originally Posted by Omnirizon View Post
In fact, I was looking through the drawings of the old german school manuals on using 2h-swords, and warriors were often depicted using the sword more like a staff! in close combat the swords weight and leverage becomes a liability, and it had to be used differently. In actual combat, the dagger and the sword have a 'threat' separate from the amount of physical damage they could actually do.
According to ARMA, the grip is changed because armor beats edge, but tip may be used to go through the gaps in armor and pommel strike to the head can give you time to do that. Half-swording uses the sword as a spear/polearm, and "morte-striking" uses it as a hammer and hits with the pommel/handguard:
http://www.thearma.org/essays/Talhoffer/HT-Web.htm
And here's a video in which two guys play it out:
http://www.youtube.com/watch?v=ZnqOMbFDEAI



I'm still not sure why you can't just say that stamina acts as a buffer before actual health goes down, but any way...

You need two different threat values, normal and armor. Using 2h-swords the usual way is generally better, but doesn't work against heavy armor. Half-swording makes it easier to thrust through gaps in armor, so it's better against armored opponents.



Quote:
also, there will be some systems in my game which need something like 'spirit'. some people may be completely dumb and naive, but have lots of spirit... I'm just trying to capture some of those less mechanical essences (in a mechanical way, no less, but that's the nature of the beast) and make them relevant for the game.
So... spirit could affect things like the rate at which you lose your skills when you lose health? Morale, bravery, that kind of thing? There's the problem that players will want to control the character, and can guide a coward to attack a dragon. Would that do anything to the character?

1) Why do you need both Psyche and Spirit, how do they differ? If there's no important differences, combine them.

2) Will any of the main characters have poor spirit? If it doesn't ever come up, either add something that makes it important or remove the stat.


Quote:
Originally Posted by JimMorrison
- Decreasing the number of available stats causes two problems, first it waters down the personality of your characters, I have seen numerous systems that go the STR/DEX/INT route, and the degree of variance among successful characters drops precipitously. Likewise, there is an inverse relationship between number of stats, and ease of min-maxing at the expense of character building. Using 9 statistics, even if they can be said to overlap in certain ways, adds a lot of nuance to a character, allowing you to give much more depth and personality as they develop - as well as making more progression paths viable.
This might be true. I'm still thinking mostly in Dominions terms, and you can't customize the units, so I don't know how badly unbalanced it would be if you could. We might see strength 3 titans who use AoE weapons and other such weirdnesses. I agree that having just three stats is often too little, but there's no need to have exactly 9. I could see getting rid of Memory and combining Psyche/Spirit, giving 7 base stats. 7 is a good number, and not that low.
Reply With Quote
  #10  
Old November 23rd, 2008, 04:57 AM

Illuminated One Illuminated One is offline
First Lieutenant
 
Join Date: Oct 2008
Location: In Ulm und um Ulm herum
Posts: 787
Thanks: 133
Thanked 78 Times in 46 Posts
Illuminated One is on a distinguished road
Default Re: OT: Making a Game System (part 2)

Quote:
Originally Posted by JimMorrison
- The extreme complexity which would kill the game in PnP, becomes a great tool, when you decide to commit the system to only be used with a computer doing all the complex calculus.
On general terms I'd disagree with that.
In fact I tried to make a RPG myself with a system similar to a relatively complex PnP system. Once I had finished the UI I realized that I could have just gone with a third of the skills and attributes, as I could only create very few situations where it would have made a difference (*). Just having an attribute isn't enough, if it is only used in internal calculations and doesn't have a point where it shines it doesn't help to personalize the characters.
Plus it becomes a PITA when you're actually trying to implement a plot (or AI!) into the game cause every person/event/etc needs to have it's stats and checks set. Of course you could simplify that by making generic templates or something but that again beats the purpose of high complexity.

(*) (Needless to say I never finished that project )

@Omniziron

I'd drop the thing with the harmonic mean and instead us a linear or custom formula.
With the harmonic mean chance is that a character focusing on a certain weapon will do worse in combat than a character just leveling up all attributes evenly - even with the weapon that he's specialized in.
To make personalizing the character rewarding specialization has to pay off, I'd even say to the point that you get a big boost in the field where you are expert. The drawback would be that a specialized character has a hard time of dealing with situations outside of this field.
Reply With Quote
Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is On

Forum Jump


All times are GMT -4. The time now is 10:45 PM.


Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©1999 - 2024, Shrapnel Games, Inc. - All Rights Reserved.