On this page we want to gather requirements for the implementation of blocks that can be pushed by players, like it is in the game Sokoban.
Adding of pushable blocks should be easy for contributors, this means either via map editor or zone configurator.
To be flexible with the client side representation and being able to customize a block's look to its usage and context, it is necessary to adjust the choice of sprite from the server side.
For different types of puzzles or task it is helpful to be able to determine beforehand how often a block should be pushable. It is sufficient to distinguish between one time pushing and pushing without limit.
The fulfillment of this basic requirements enables the creation of basic puzzles, where for example blocks need to be pushed away to get to a certain spot.
In order to use the pushable blocks for more advanced puzzles, there are more things to consider. To get to the necessary requirements we will start by identifying possible use cases.
Collection of ideas for possible use cases:
- In a dungeon there is a door, which can be opened by placing a boulder on an activation plate.
- Imagine a quest, where a player needs to help an NPC on a farm for example. The NPC wants the hay carts to be brought into one area and the stray needs to be put to another place.
- A mine cart is used to help an NPC to transport coal from one point to another. Whenever the target is reached, the cart should be emptied. It should be filled at the starting point again.
Requirements from example use cases
- Definition of targets for blocks
- Definition of specific targets for blocks
- Perform an action when a target is reached
- The performed action must be able to depend on the pushing player
- Switching of block representation on reaching a specific point