Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice

The Unity RPG project

Discussion in 'General Discussion' started by guategeek_legacy, Jun 23, 2005.

Thread Status:
Not open for further replies.
  1. guategeek_legacy

    guategeek_legacy

    Joined:
    Jun 22, 2005
    Posts:
    659
    Ok the idea is to come up with scripts and files and other stuff like that, so that users can come right into using unity for there RPG's by using a lot of already created content. If you have anything to add or if you have comments or anything post them here. Thanks Jeff
     
  2. sleepyCat

    sleepyCat

    Joined:
    Jun 3, 2005
    Posts:
    39
    The following is an idea starter for a collection of assets for Unity helping in building a rpg. Please feel free to use/abuse parts or all of it even when disagreeing with me in certain/most/all points.

    Emphasis is on the "reality simulation" aspect of roleplaying and not on the "leveling up" part. This is "The Sims" meeting "Zak McKracken" on the "X-Plane" to "Morrowind", not "Baldur's Gate 3" ;)

    Basic idea

    The rpg system is divided in the following parts:

    Core System - all the "behind the scenes" work done by a rpg
    User Interface - elements presented to the player for controlling and inspecting his character(s)
    Rule System - the rules as presented to the player. Translated on the fly to the Core System via a proxy object (part of the Core System - the Rule Proxy).
    Artwork - models, sounds, music
    External Tools - helpful tools for speeding up the creation of a rpg
    Unity Enhancements - additions to Unity for RPG creation

    A flowchart of the assets relationship will follow soon, as will an example rule system.

    Attached Files

    required_assets as pdf and Omni Outliner format.


    Design notes (not really important and subject to holy wars):

    Use the CPU - developers should not do stuff that can be done by the cpu, e.g. when attaching a generic npc a "merchant script", it is quite tedious to create a list of items available and how expensive they are. It would be much nicer if there would be complete list of trade items, which include their "real worth", their "legality", their "type" (e.g. weapon, food) etc. If a player starts bartering with that merchant, the "merchant script" generates the available items and their price on the fly depending upon the merchants settings (e.g. his skill, area of trade, personality, disposition towards the player etc.) the players capabilities (e.g. his skill in negotiating) and entries in a "override list" (i.e. stuff the merchant must have, no matter what the computer generated). Even better would be if there is no special "merchant script", but every NPC could be drawn into a trading dialogue, if the NPC is "merchant = false" then the items he has for sale would be limited to his inventory and he will probably be very expensive and not very interested in your stuff - depending upon your trading skill or if he is "sucker = true" :)

    Combat - Dangerous, risky and detailed. Only risk in case of self defense or if your character is highly specialized in this area (think "Rainbow Six" not "Quake"). Why? Players (and designers!!!) should be encouraged to see violence as only one option for solving a problem. In most cases it should be the worst option. It should be as fun to play a elderly fisherman as an axe wielding barbarian. The later might be able to wade into the hideout of a murderous cult and put them to "justice" but it will be risky. The former might get the authorities to care of them, which will involve less (physical) risks, but might require him to first collect enough "evidence".
    Maybe that soldier guarding the door is too tough for you, but you know that he will be relieved in 4 hours by a wimp. Maybe you do not want to knock out/kill/disable them at all, so climb over the wall (if you know how to climb), bribe them or disguise yourself as a captain.

    Environment - Exploitable. The wall is to high to climb for your elderly fisherman. Maybe there are some boxes lying around which can be stapled? Don't want to be seen, wait until its dark. In short the players should be able to abuse/form the environment and make heavy use of the physics engine.

    Quests - Killing should be the hard and stupid way of earning money. Crafting the smart and trading the easy way. The motivation for quest should be story (= script) oriented and not (just) because of money. Even when not "questing" there should be enough stuff to do for the player to do and enough chances to get rich.

    trading: buy low -> travel -> sell high (think Elite)
    crafting: seek resources -> craft -> sell
    medicine: seek the sick -> cure them -> get paid
    stealing: seek the rich -> cure them :) -> run away
    romance: seek -> date -> well... depending upon the setting :)
    hunting: seek prey -> bag (for vampire players, or huntsman/poachers)

    If nicely done even boring tasks like traveling (think Grand Theft Auto's city cruises) or watching a NPC's daily activity (think "Die Siedler") could be fun. The system should be created in a way, that such basic behavior does not need to be scripted by the designer. It "just happens".

    Mini Games (again think GTA): Stock Market, Gambling, Exercise, Racing, Acrobatics, Music, Tournaments (archery, melee, gambling, races).

    Play Balance - I don't care about it and never will. If the character has not the skills to "solve" the quest, the player should choose another quest or get the necessary skills or look if there is another way to solve the problem (see above, exploiting the environment). A scrawny merchant might not pack enough punch to wipe out camp of bandits, but he might earn enough enough money to hire enough bodyguards with whom he will be able to. No arbitrary balancing of a merchant PC's capability to earn money to a warrior PC's capability of creating mayhem.

    Also if the player is going on a killing spree and murders a central plot figure... bad luck, another reason to avoid combat.

    It is ok to punish stupidity and reward smarts - at least in an indie game ;)

    Character Classes - similar opinion to play balance above. I absolutely abhor them, all my ideas revolve around a skill based system. But I tried to make the system flexible enough to support them.

    No wasting of rules, code and cpu cycles for creating arbitrary exceptions that enforce or restrict player behavior.

    So the game world needs to be as dynamic and self regulating as possible (and exploitable). Quest should be carefully scripted, not day to day events.

    Alex

    p.s. these are rough, incomplete and sometimes contradictory outlines! It is perfectly possible, that my implementation ideas are not sensible in the context of Unity. So please feel free to criticize, flame, add, refine and edit. I will do the same.
     

    Attached Files:

  3. guategeek_legacy

    guategeek_legacy

    Joined:
    Jun 22, 2005
    Posts:
    659
    I like most of your ideas, some of them are really great. The multiple ways to solve a problem (not always violence) is great!

    I never got good grades in Math because I always solved the problems differently. I got them right but when It came to at test and I had to do it there way I was in a bad way. So a game where different playing styles can get you different places, or at least through different roads to the same place. That is something very intuitive.

    Give me some time to go through your notes and I'll write what I have to say. Only thing that turned me off right away was your comment:



    How about instead of the player being screwed over that way, make having killed the guy change the game world like it would in real life. Say you kill someone high up in authority, well now that whole authority is going to be out to get you. Or say you kill someone in Authority that is an enemy, say now a new authority comes into power and that could effect everything.

    Just some of my ideas for now. i'll get back to you after I have more fully gone through it all. Jeff
     
  4. sleepyCat

    sleepyCat

    Joined:
    Jun 3, 2005
    Posts:
    39
    This could be handled by the AI. If you do something which changes the Disposition of a faction member against you (positive or negative) then your status - with all the factions the npc is part of - will change as well. Depending upon the npc's standing with the faction and the gravity of the deed.

    Example: faction-rank is a percentage (+100% being the leader of that faction, -100% enemy No.1) and actions are graded on a similar scale (+100 extremely good, -100 the gravest sin possible, realistic values would be like +20 for saving live, -20 attacking somebody). You rescue the Leader from the City Watch (Rank 100%) from certain death (+20), this would mean your standing within the City Watch would increase by (20 * 1.0 =) 20 Points.

    If your standing is high enough you might get away with some stuff that would cause trouble otherwise. e.g. a minor watch member (Rank 20%) witnesses the Commander of the watch stealing (- 5). The commanders standing will be reduced by (-5 * 0.2 =) 1 Point.

    It would be smart, if the change in the characters faction-rank would not be instantaneous, but with a certain delay ( to get rid of witnesses :) )

    I hope we will find someone who is smarter when it get's to AI things than me.

    About the killing thing. My intention was the following, if you kill the damsel in distress you are supposed to rescue later on, what should happen? It depends:

    If you need to rescue her, to achieve a good enough disposition with her father, so that he will help you with the evil wizard, then you would have to improve his disposition towards you via the AI. Bribe him, be polite, hurt factions he is opposed to, use your psychology skill to manipulate him etc.

    If you need to rescue her, because that's what's the story is about... well I think the player just screwed up. If you feel nice, you could script a way around that (alternative missions to reach the same goal etc.), but that would be better handled by the Designer scripting the game, not the general AI.

    Example: One fantastic moment was, when finishing Ultima 7 (i think it was 7... the one with gargoyles) that in the end you realized that you could have (theoretically) finished the whole game in about 20 minutes, if you (= the player) had know what to do with the moonstone. There were no restrictions like "no you can't fiddle around with that thing until you have spoken to xyz... who - conveniently - is only possible available, when the game is nearly finished". Baldur's Gate was (in this regard) terrible.

    edit: some cleanups
     
  5. sleepyCat

    sleepyCat

    Joined:
    Jun 3, 2005
    Posts:
    39
    Next...

    the first (i.e. incomplete) version of the diagram describing how he parts could fit together (warning might be a bit hard for non programmers)

    It would be cool if one of your guys at OTEE could take a short look if they see big glaring "No No's" with Unity - e.g. I am a bit confused on how to have a object "floating around" shared by multiple game objects like the singeltons (RelationshipMatrix, Timer and Environment).

    Again if there are bored AI gurus reading this, some hints on how to handle factions/characters, would be great.

    edit: cleanups
     

    Attached Files:

  6. Joachim_Ante

    Joachim_Ante

    Unity Technologies

    Joined:
    Mar 16, 2005
    Posts:
    5,203
    Currently you have to use C# if you want to use singletons. We will add support for static variables in java script for the 1.0.3 release.

    The best way to use singletons is to create one game object with the singleton script inside it. And inside the awake function, setting the singleton static variable.
    Code (csharp):
    1.  
    2.  
    3. public class SingletonTest :MonoBehaviour
    4. {
    5.    public static SingletonTest singleton;
    6.  
    7.     void Awake () {
    8.        singleton = this;
    9.     }
    10.  
    11.     void DoSomething () {}
    12. }
    13.  
    Then from other scripts you can use:
    SingletonTest.singleton.DoSomething ();

    If you don't need to assign values / references to other objects on the singleton in the inspector you can also just make your class only contain static functions and variables
    eg:
    Code (csharp):
    1.  
    2. public class SingletonTest :MonoBehaviour
    3. {
    4.    static SingletonTest singleton;
    5.  
    6.     void Awake () {
    7.        singleton = this;
    8.     }
    9.  
    10.     void DoSomething () {}
    11. }
    12.  

    Regarding the code diagram. Your idea seems workable though it might be too complex.

    Personally i've never successfully created a code diagram for script code before writing it.

    Gamecode is very volatile, so you most certainly need to play around with your ideas and see if they work in practice. The most important part is to make sure you can get something functional up and running quick.
    Test it. First try, you will find a lot of things you can do better. Refactor it.
    I have refactored the camera controls in gooball at least 10 times.
    Good thing is that it is so quick to test and refactor in unity.
     
  7. sleepyCat

    sleepyCat

    Joined:
    Jun 3, 2005
    Posts:
    39
    C# is fine... JavaScript confuses me ;)

    Ahh, ok sometimes it is too obvious too see :) so, each class (derived from MonoBehavior) attached to a game object is sent the Awake() message after the level is loaded?

    So I could "attach" all my singeltons to a single game object, and could have with one of these (and every other class) e.g. connect to a database via Mono's System.Data.SqlClient ?

    Thanks for the tips, they are really appreciated. The diagram is more a reference grid for me, to not be confused by my own thoughts ;) The stuff I am actually afraid of doing (and I guess will actually be the most important for the player apart from the story) is fine tuning the character/cammera controller (gamepad) for a 3rd person game, all the artwork stuff and finding "reasonable" values for the physics engine (i.e. mass, speed for humans?) ... the other stuff looks very similar to that I was tortured with in university ;)

    Alex
     
  8. KIngclass29

    KIngclass29

    Joined:
    Oct 18, 2010
    Posts:
    12
    Something you might also consider would be to create some sort of system to connect entrances with different scenes for instance you walk in to a area full of trees that's suppose to be a forest and it transports you to a new scene where your in a forest unity already does that to a degree but if you added a simpler and quicker way to accomplish that i think it would be really beneficial especially with in the creation of an rpg.
    Also, I was wondering if you could refer me to an area where i could learn Game Code I'm a beginning game designer who wants to create a rpg and I've really been having trouble with the coding. Thank you for your time.
     
  9. andeeeee

    andeeeee

    Joined:
    Jul 19, 2005
    Posts:
    8,768
    Welcome to the forum, KIngclass29!

    You'll notice this is rather an old thread so it's likely that you won't get much response here. It would be great if you could start a new thread for this, ideally with some more detail about the things you are having problems with.
     
  10. KIngclass29

    KIngclass29

    Joined:
    Oct 18, 2010
    Posts:
    12
    Ok, thank you. what exactly is the rpg project and is unity still working on it?
     
  11. KIngclass29

    KIngclass29

    Joined:
    Oct 18, 2010
    Posts:
    12
  12. 3dDude

    3dDude

    Joined:
    Jul 4, 2010
    Posts:
    1,067
    hi guys i might want to contribute some particleFX do you need any FX?
     
  13. KIngclass29

    KIngclass29

    Joined:
    Oct 18, 2010
    Posts:
    12
    Does anyone know about someone currently working on an rpg designer because that is what I'm aiming to create?
     
  14. UnityRook

    UnityRook

    Joined:
    Dec 20, 2010
    Posts:
    3
    This is great it would be nice to make like a a standard assest pack with rpg scripts and media... I would love to help organize this
     
  15. Saev

    Saev

    Joined:
    Jul 7, 2011
    Posts:
    1
    Hey guys, i have a little problem, im supposed to be a college student studying electronic media but i am a mere graphic designer with enough programming know how to make a working calculator which sucks. The problem is i have what i think is a really good idea for an rpg. after doing my research i concluded unity3d was the best program to make it with but have had no luck. it seems like many people on here know what they are talking about, so i was wondering if anyone could suggest a possible solution for me?
     
  16. KheltonHeadley

    KheltonHeadley

    Joined:
    Oct 19, 2010
    Posts:
    1,685
Thread Status:
Not open for further replies.