Why are races so important in roleplaying games? What are “factions” used for in online multiplayer roleplaying games? What are the pro’s and con’s?
What are factions for? ---------------------- Factions are for storing who likes or dislikes whom to which degree. Why factions and not races? --------------------------- Races as they are implemented now only store simple information if a race hates another race or likes another race. You could call factions enhanced races as they store *how much* one faction likes or dislikes another one. How would factions work? ------------------------ a.) NPCs would still be of a race, but that race would have fixed numerical data containing relations to other factions. Player characters would have a race too that would define their numerical data at creation but their data is changeable individually. b.) The amount and name of factions should be configurable. Let's pretend we have set up three factions, human, undead and orc. Let's pretend that the relation can range from -100 to +100. Humans(players) are created hating undead and orcs, but undead more then orcs and love other human. So they would have ORCS -50, UNDEAD -100 and HUMAN +100 upon start. Undead hate humans and orcs alike. HUMANS -100, ORCS -100, UNDEAD +100. Orcs hate humans and dont care about undead. HUMANS -50, ORCS +100. Now pretend Yeshe is a player created in human faction. c.) If Yeshe sees someone else *his* factions are checked to see if this someone would be blue, grey or red to him. If this someone else is an NPC it would react to Yeshe accordingly. Other humans would be blue (and helping), orcs and undead red and attacking. d.) If Yeshe kills a player or NPC, the players or races faction settings are checked to see how that influence Yeshes factions. If Yeshe kills an orc: His faction with orcs will get worse, his faction with humans would get better but are already *over* the negative value of the orcs so nothing happens. If Yeshe kills an undead: His faction with undead don't change cause they are already at minimum, his factions with humans don't change cause they are already at maximum and his factions with orc actually get a bit better! If Yeshe kills a human: Faction with orc and undead will raise, with human will drop. So if Yeshe kills enough undead he would be able to run around in an orc town! c.) How much and how high/low Yeshe relations change upon a kill depends on the victims faction settings, too. Yeshe could raise his faction with orcs by killing humans but could never get over +50 faction with orcs that way. Killing undead could get his faction with orcs to a maximum of +100. If the victims faction is +-30 Yeshes factions are altered 1 point, +-60 alters 2 points and +-100 3 points. What else would be needed? -------------------------- a.) Quests The scriptengine should be able to read and set faction data. So one could set up quests that can only be done if the player has superb faction with a special race. Or one could set up a repeatable easy quest the give one factionpoint with a race and such allow a player to "work up" into a town. b.) Criminal flagging Had to be altered so that doing a criminal action like attacking or stealing *temporarily* lowers the relation to the faction of the victim very low. Of course it could have have a slight permanent impact on faction too =) c.) Guards They would come in when they are called (by voice or by an attack) and check if there are people around that they hate (also temporary) and kill them. d.) Fame Would stay the way it is. You may have already noticed that there are similarities between how the fame system works and how I'm concepting the faction system =) d.) Titles Fame titles stay the same. Karma titles would have to be set dynamically according to the race of the one who looks at the person. e.) Helping For future enhancements it would be good if NPCs would be able to "help" characters that they like. May it be that they join in a fight, may it be that they heal if wounded... Yeshes conclusion ----------------- I think I have shown the possibilitys of factions which would be a great enhancement to UOX. Plus it still would be easily possible to build a shard that behaves like OSI. Yes, UOX would require some lesser and greater changes and running it would need more memory. For every faction, numerical data of one signed integer needs to be stored with every player. That can get quite a lot very fast. But that is why one has a server running the shard and not an old workstation, imo =) I think that the pros of such a system totally outweigh the cons and as UOX is rewritten at the moment anyway, this would be a great opportunity to build a basis for great future shards! Abaddons comment on this ------------------------- Many of the ideas that you have proposed in the document are similar to ideas that I've had in regards to races already. I'd already thought of moving from a straight enemy/ally/neutral scenario to shades of enemies/allies, with much the same limits ( +/- 100 ) as you had. I wouldn't want to call them factions though, as that's not truly accurate I don't think. By constraining to +/- 100, it reserves only a single byte for racial relationships, much like it is now with a single boolean. So memory requirements in that regard will not change. There are other plans I have, to introduce new features and possibilities, have greater control over the appearance and behaviour of races, and other things like that. Already the guards only come on voice/criminal action, and a guard is reused if a crime occurs in it's vicinity. It would be fairly simple to extend it a bit further to cope with racial enemies I believe. By extending races I'll need to extend the abilities of the JS engine to read/write race data. But I already had ideas in place on how to extend that (exposing full information about races). The up/down rate of your system is probably very fast, and should be constrained a bit more. Truthfully, I haven't come up with a good system on how to achieve that yet. Potentially a running counter for each race, in regards to # of kills, and when the counter hits a controlled limit the relation changes. Same as your idea, except yours would have a limit of 1To my mind, none of this information would actually be stored with the player. The actions of a player of one race influence the way the other race sees the player's race. Big bad ugly orc bandit on the highway would get a bad rep for orcs everywhere
Counterbalancing things like you have suggested is a difficult prospect. Fairly simple and straightforward I think on low race counts, but it becomes a nightmare as the race count increases. Granted, it's only O(n) most likely, and not O(n^2), but it does mean a linear scale with time. So it would need to be evaluated on requirements / possible features / benefits analysis I think. In general, it's a good set of ideas, many of which I have already thought of/want to use in a future enhancement to races I feel.