Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>I'm no game designer but I can see something that may be at work here...</p> <p><a href="http://en.wikipedia.org/wiki/Object-oriented_programming" rel="nofollow">Object Oriented Programming</a> allows for this kind of complexity and dynamism by encapsulating data and logic neatly within many objects. These objects can interact 'verbally', using inter-object messaging to delegate tasks to one another. The sender of the message need not know how the receiver will interpret the message, leaving the method of action entirely up to the receiver. Just like in the real world, delegation allows things to run more smoothly. </p> <p>For instance, when you order a mushroom risotto from Del Posto in New York City, do you order it by walking back to the kitchen and talking to the chef directly? Do you put on an apron and prepare the risotto yourself? Do you drive to the nearest mushroom farm and pick your own mushrooms? No, you don't. You simply delegate these tasks to the waiter, the team of chefs, and the produce supplier, respectively. To get your mushroom risotto, all you need to do is tell the waiter that you want it. The rest is done automatically, through a chain of delegation. This same kind of delegation likely exists in your game.</p> <p>Now, back to objects. Some objects inherit data and logic from parent objects, and in this way, can have a great deal of data/logic in common; let us call these siblings. In the example of the game quest, each quest is likely its own 'quest object', with baseline data and logic inherited from the parent 'quest parent'. Quest siblings can be differentiated from one another by tacking-on extra data/logic that pertains to the specific quests. </p> <p>Depending on your actions in the game (and your selections in the game's menu, perhaps), the game object can swap out one the active quest object for one of its siblings. Often times, this can be done with a really simple command (in pseudo-code, not modeled after any particular programming language):</p> <pre><code>gameObject.activeQuest -&gt; getCurrentObject(); //returns the object containing all of the data/logic of the current active quest: Gibbons_GoldenArtifacts //Let's say the quest description is "Scour the Catacombs of Gibbon for a mysterious treasure" gameObject.activeQuest -&gt; setCurrentObject(Gibbon_DefeatGhost) //sets the activeQuest object (note that QUEST OBJECT contains baseline data/logic) //assuming, say, Gibbon_DefeatGhost is an object like so: Gibbon_DefeatGhost={QUEST OBJECT}; Gibbon_DefeatGhost.extend( description="Defeat Gibbon's ghost to retrieve his golden artifacts"; objective="Defeat Gibbon's ghost"; questNPC="Gibbon's ghost"; questLocation="Gibbon's Inner Sanctum" questTriggers[1]="When PLAYER enters Gibbon's Inner Sanction: Release Gibbon's ghost"; questTriggers[2]="When Gibbon is slain: Drop Gibbon's golden artifacts" ) </code></pre> <p>From that point on, the game object itself will probably interact with the active quest object the same as it always has, but the active quest object may perceive those interactions in ways that are different from the ways of sibling quest objects, resulting in a different game experience.</p> <p>Hope I'm not totally fudging the clown on this one...</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload