Implementing logical puzzles for Stendhal: Difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
imported>Hendrik Brummermann Created page with "{{Stendhal code design}}{{Navigation for Stendhal Top|Developing}}__NOTOC__ This page describes a concept for implementing logical puzzles in Stendhal. {{Future Concept}} =..." |
imported>Hendrik Brummermann No edit summary |
||
| Line 33: | Line 33: | ||
=== Door === |
=== Door === |
||
A door is a barrier that prevents player from crossing unless it is ''active''. |
|||
=== Moveable block === |
|||
=== Moveable block receiver === |
|||
=== Timer === |
|||
; time : |
|||
: datatype: integer |
|||
: required |
|||
: The number of seconds until an action occurs. |
|||
; target : |
|||
: datatype: entity reference |
|||
: required |
|||
: The target entity to modify |
|||
; propname : |
|||
: datatype: string |
|||
: required |
|||
: The name of the property of the target entity that will be changed |
|||
; propvalue : |
|||
: datatype: string |
|||
: required |
|||
: The new value of the property of the target entity |
|||
== Backend implementation == |
|||
* Although most puzzles will be confined to one zone each, the backend must support multi zone puzzles. |
|||
* Entity references default to entities in the same zone, unless an optional zone name was specified. |
|||
* Event bus or listeners |
|||
* Events are fired on change of a property (setting a property to the value, which it already had, must not fire an event) |
|||
* Limit number of nested events to prevent infinite loops |
|||
Revision as of 07:38, 20 January 2016
Stendhal code design
This page describes a concept for implementing logical puzzles in Stendhal.
This article describes a future concept. It may still have some open issues and it was not decided, yet, whether to implement it in this way.
Basic Objectives
- It should be easy for content creators to define logical puzzles.
- Puzzles should consists of basic building blocks (such as switches, doors)
Entities
Entities are basic building blocks that can be used by puzzle creators.
General properties
All entities have these general properties:
- active
- values: true, false
- default: false
- An entity may be activated. For example a player activate a pressure plate by stepping on it, which in turn activates (opens) a door.
- enabled
- values: true, false
- default: true
- An entity only reacts to input, if it is enabled. For example a switch will ignore all player actions, if it is disabled. A door will ignore the state of its associated switches, if it is disabled. Entities should indicate disabled state visibly and/or audibly.
Pressure plate
Wall switch
Door
A door is a barrier that prevents player from crossing unless it is active.
Moveable block
Moveable block receiver
Timer
- time
- datatype: integer
- required
- The number of seconds until an action occurs.
- target
- datatype: entity reference
- required
- The target entity to modify
- propname
- datatype: string
- required
- The name of the property of the target entity that will be changed
- propvalue
- datatype: string
- required
- The new value of the property of the target entity
Backend implementation
- Although most puzzles will be confined to one zone each, the backend must support multi zone puzzles.
- Entity references default to entities in the same zone, unless an optional zone name was specified.
- Event bus or listeners
- Events are fired on change of a property (setting a property to the value, which it already had, must not fire an event)
- Limit number of nested events to prevent infinite loops