Basic Engine Components - Component Overview

    The world and world space:

    The world is (virtually) infinite. Not limited to spatial constraints by the computer (memory). Each location saved seperately. Classes saved in a sepeare file, associated with the seperate object/location files (ie header files).

    Real Time – Based on real-world time & information:

    • Wind, Rain, Sun, Moon
    • Temperature
    • Night/Day
    • Weekends
    • Geography
    • Other location-specific broad-area definitions (ie radioactivity, storms, sound of police sirens etc)

    All items in world (including world) are objects.

    The world has limits. Anything pushed or created beyond those limits immediately removed from a class (ie removed from existence). To build onto the world, you would need to extend the limits of the world class, or build a ‘portal’ to a new world class elsewhere (ie different astral plane, etc)


    Components of the World Space:


    • Exist (all objects in a class exist – remove from a class, you remove the object)
    • Have Properties
    • Move or be moved
    • Be created or removed
    • Have an owner, group and modifier properties (ie someone else can pick it up and move it, but not destroy it).
    • Have a status: Alive (player or bot) or Dead (player or bot) or Non-living (class, object, world, portal)
    • Have properties removed, added or updated in real-time



    • Define broad-term existence of object.
    • Define function of objects. Ie A room or location is an object that can contain other objects (people, interaction object, exits etc)
    • Define use of object. Object may have class of ‘container’ (or room, box, world), which means it has the ability to contain other, therefore can be opened or obstructed. May contain many items
    • Classes aren’t real-world objects, only definition files.
    • Classes have structural definitions (non-interacting non-visible) available, to determine context of action in class. Ie a cup can be picked up, drunk from, smashed. A plate can be smashed, thrown. A door can be picked up. A door may need 2 people to pick it up (ie have a weight property)
    • Many Classes don’t have to be set, or if set don’t have to be acted upon directly. Ie a dog may have a sound property that defines different actions – barking, growling, whining – that occur at different times, whether an action has been performed on it or not (ie it might just want to bark at the moon – it doesn’t have to, but might have heard other dogs barking at the moon)



    • An action is based on a class
    • An action is tried, and if a class property is set that the action can perform. Ie a room has an openable property, set by a door, set by a lock. A lock has an action that it sets an openable property against an object (in this case a door). The door has an action that sets an openable property against another object (in this case a room). The room has no action set, so it’s just a non-living object (a location object).
    • Actions can be learned. A crowbar may be used to open a crate. The crowbar may then be used to try to open the lock. The crowbar has the same ability as a key, it opens something. Therefore if the class that lets a key open a door is activated by a crowbar, the same action may apply (if the lock is weak enough. The lock would have to have a propety that said ‘is breakable’, which would reflect a group of object that is allowed to be destroyed by someone other than the owner)
    • Actions apply to everything. If a class exists an action can perform, the action is doable, else not.



    • The class-definition for an action
    • An action may be to run. This requires a function set that picks the best direction, then tries to move that way fast.
    • May be attached to an object (ie, The functions of a doorknob would be 'turn' and 'move' related actions, such as twist and pull)



    • Different classes of player:
      • System: Non-interacting bots that perform functions in the game (ie daemons that take away dead players)
      • User: Someone using a computer to control an avatar in the construct (world)
      • Bot: A computer-controlled player, has a series of properties, and action properties steerable by the system or users. Can interact with the environment (ie steal, walk, talk). Can learn (ie have classes added to them)
    • Can learn new tasks (ie have classes attached to them. Ie learn how to swordfight.
    • Has abilities classes:
      • God - can create/destroy anything
      • Creator - can create worldspace. Create Objects. Create actions (therefore functions)
      • Mover - can move objects
      • Interactable - can have classes attached (ie talk, pick up) interact with objects (normal)
      • Destroyable class - can be attached to objects, can be performed with players etc with correct class ability or object ownership (ie owns a crowbar and knows how to use it)
      • Ghost class - (special function) can’t interact but is a spectator. Can move anywhere (except outside the world space). Cannot be seen, Or interacted with.


    Home | Classic IF Engines | Scalable IF Engines
    Basics | Specifics | Program Flowcharts
    Objects | Classes | Actions | Players | Functions
    Feedback | Code Examples

design and content
(c) tim st.clair 1999