Requirements
This article is currently only a proposal
The features or design guidelines described in this article are only a proposal made by one or some persons. It has not been reviewed and ratified by the core development team yet. Feel free to add your personal opinion about them or make counter proposals.
This article is deprecated
The content of this article has been marked as deprecated because the information it contains is now outdated and is being phased out. Use at your own risk!
This article is part of design documentation.
Design documentation describes how software is implemented or is about to be implemented. It focuses on system structure (e.g. dependencies), module interactions and relevant algorithms. Concepts described in these articles should form the terminology that is used when discussing about the software that forms FIFE.
This article is deprecated
The content of this article has been marked as deprecated because the information it contains is now outdated and is being phased out. Use at your own risk!
This page lists requirements relevant to fife engine development. Requirements are done from perspective of engine users, i.e. mods or associated editors. It is the up to the team to refine requirements so that responsibility sharing between engine and extension becomes clear. Requirements should be based on some concrete and understandable need and use cases are preferred way to explain the need in more detail.
List of requirements
Support for basic widgets
Description
Game should be able to present most common widgets with free layout on screen along with graphics and text. Supported widgets include at least:
- Single line text box
- Multiline text box
- radio check box selector with ability to select predefined amount of boxes from whole set
- button with text
- button with graphics
- Confirmation dialogs (modal)
- List box with selection capability
- Checkbox
- Slider
- Pop-up menus
- Inventory dialogs
- hovering support
- context sensitive menus
- Drag'n drop
- Changeable cursor (e.g. arrow and crosshair)
- Widget outlook should be variable depending on engine extension.
- Widgets should have most common events available, like onClick, onKeyPress, onSelect etc.
- There should be a way to validate input data and in case of error, show modal dialog explaining the error to end user
Relevant use cases
UC_DIABLO_1, UC_FALLOUT_1
Support for basic dialogue
Description
User should be able to have a dialogue with non playable characters in the game. Discussion is done using texts forming multiple choices for the player. Texts should be freely placeable into the screen area. Usually there must also be some kind of background for the texts. It is preferred that when mouse moves over any text, whole text related to that option is highlighted. When some option is pressed (on top of that text), dialogue continues further.
Relevant use cases
UC_DIABLO_2
"Animation" playback
Description
- Stopping of other game activity
- Fade-out of cursor (adjustable fadetimes)
- Playing cutscenes using normal map view + characters in the game.
- Floating text support (with adjustable fadeout support)
- Possibility to switch from pure animation to interactive dialogue and back
Relevant use cases UC_KoN_1
Video playback
Description
- Stopping of other game activity
- Fade-out of cursor
- fullscreen video playback support
Relevant use cases
Game Modes
Description
- Shopping
- Combat
- Exploring
- Game Menus
- Video cutscenes
- Animation cutscenes
Relevant use cases
Special Effects
Description
Relevant use cases
Game event system
Description
- Opponents hearing character approaching
- NPC's finding stuff from the play area
- Game noticing that there are no enemies nearby the player character, or vice versa, noticing that there is a need to move into combat mode
Relevant use cases UC_DIABLO_3, UC_FALLOUT_1
Opponent strategic decisions
Description
- Opponents forming their group strategically correctly depending on game situation
Relevant use cases
UC_DIABLO_3
Context sensitive mouse selection
Description
- Clicking on objects
- Clicking on tiles
- Dragging on areas
- Hovering support
- Dragging objects
- Alignment to grids
- Painting tiles
Relevant use cases UC_CHESS_1, UC_FALLOUT_3
Rubberbanding
Description
Relevant use cases
Dialogue System
Description --> should this be totally in script, how to do it?
- multiple selections.
- Available selections depend e.g. on character traits and state of NPC
Relevant use cases UC_FALLOUT_3
Realtime combat system
Description
Relevant use cases
Turn based combat system
Description
- Turn changes
Relevant use cases
Targeted combat
- Special widget to show the outline of enemy so that different parts can be selected
- Widget should be able to report selected bodypart after click
- Tracking of damage on different body parts
- Target specific animations (like shooting a foot off)
Path finding
Description
- Finding the best path between two point
- Path might be possible to be used for moving, but some paths might be more beneficial
- E.g. roads vs. swamp
- Finding impossible targets points
- Impossiblity depends on means of movement and what is moved:
- Boat might get over river while bike may not
- Grenade might hit enemy, while bullet might not be able to do so
- You cannot throw grenade through doorway when door is closed
- If wall is broken, you might be able to walk through it
- Big objects (like cars) do not fit into same paths as small objects (like humans)
- Impossiblity depends on means of movement and what is moved:
Relevant use cases UC_FALLOUT_1, UC_FALLOUT_4, UC_FALLOUT_5
Path finding visualization
Description
- Painting the calculated route with action points for each movement
- each time mouse is moved path is calculated again
- Show impossible targets
Relevant use cases UC_FALLOUT_1
Ability to combain 2-n items to 1 new item
Description
- Dependent on the carried items
- Dependent on the character skillset
- Dynamic adding and removing of items to/from inventory
Relevant use cases UC_ARCANUM_1
Template
<Requirement name>
Description
Relevant use cases