-
Notifications
You must be signed in to change notification settings - Fork 12
Player ~ Current Support & Integration with WDL
Written in response to Issue #486 to discuss the lack of a "player" in the current implementation of chiventure. This document will investigate the progress of implementing a player into the current chiventure, and will be used in thinking about if/how WDL++ should integrate these capabilities.
For RPGs, player stats are essential. Health points, experience points, and even mana points can heavily impact the user's in-game abilities, and allows more complex game design (e.g., what happens when a player dies). Additionally, if we want to support player-specific information, such as "level", "class," or "race," having a defined place to store this information is crucial.
Currently, the RPG teams' goals include:
- Player class (monk, knight, healer, ninja, etc.) with different skills/stats
- Player race (human, orc, elf, etc.)
- Player stats, such as health, experience, speed, attack, mana, stamina, charisma, etc.
- Skill trees (unlock spells like teleportation, lock-picking, or magic light sources for some random underwater room that would put a normal torch out)
- Player statuses: these would be effects that modify a player's stats for a given amount of time or until a condition is fulfilled
(Taken from the Feature Wishlist)
All of these would require a basic integration of a player into WDL, not to mention potential future features, like multiplayer support.
In game state, there does exist a player module. A player is currently defined as:
/* A player in game */
typedef struct player {
/* hh is used for hashtable, as provided in uthash.h*/
UT_hash_handle hh;
char *player_id;
int level;
int health;
int xp;
item_hash_t *inventory;
} player_t;(from player.h)
The player module contains all the necessary functions to initialize and update the struct.
In the example files thus far, operations involving a player have not been used. The parse module does have an extract_objects function that: "extracts the a list of objects associated with an attribute of the primary object; used to get a list of rooms, items, and players." However, there is no load module associated with the player struct.
For defining which attributes exist and/or updating the player struct, it makes more sense for other teams (e.g. action management) to take the lead. In terms of representing a player in WDL++, the WDL team has tentatively decided to categorize a player as a sort of "special object," such that it can be acted upon and have attributes updated. More discussion is needed to fully flesh out details, but it will introduced in WDL++.
-
Action Management
-
Battles
- Design Document
- Text Based Combat in Other Games
- User Stories
- Wishlist
- Battle Planning 2022
- Battle User Stories Review 2022
- Structs in Other Modules Related to Battles 2022
- Stat Changes Design Document
- Run Function Design Document
- CLI Integration Design Document
- Move Changes Design Document
- Unstubbing Stubs Design Document
- Battle Items and Equipment Design Document
- Battle Item Stats
- Battles Demo Design Document
- Battles Testing Moves, Items, and Equipment Design Document
- Sound integration with battle (design document)
-
Custom Actions
-
Custom Scripts
-
DSL
-
CLI
-
Enhanced CLI
-
Game-State
-
Graphics
- Design Plan
- Design document for integrating split screen graphics with chiventure
- GDL (Graphical Description Language)
- Graphics Sandbox
- Design Document for NPC Graphics and Dialogue
- Feature Wishlist (Spring 2021)
- Installing and Building raylib on a VM
- LibSDL Research
- Module Interactions
- Working with Raylib and SSH
- raylib
- GDL
-
Linking the Libzip and Json C to chiventure on CSIL machines
-
Lua
-
NPC
- Dependencies: Player class, Open world, Battle
- Action Documentation
- Design Document for NPC Generation in Openworld
- Design and Planning
- Establishing Dependencies
- Implementation of Custom Scripts
- Independent Feature: NPC Movement Design Document
- Player Interaction Design and Planning
- Dialogue
- Design Document for NPC Dialogue and Action Implementation
- Loading NPCs from WDL Files
- NPC Battle Integration Design Document
- NPC Battle Integration Changes Design Document
-
Open World
- Autogeneration and Game State
- Deciding an integration approach
- Designing approach for static integration into chiventure
- Feature Wishlist
- Generation Module Design layout
- Potential connections to the rest of chiventure
- Single Room Generation Module Design
- Source Document
- User Stories
- World Generation Algorithm Plan
- Loading OpenWorld Attribute from WDL
-
Player Class
-
Player
-
Quests
-
Rooms
-
Skill Trees
- Avoiding soft locks in skill tree integration
- Components of Exemplary Skill Trees
- Design Document and Interface Guide
- Environment interactions based on skill characteristics
- Integrating complex skill (combined, random, sequential, etc.) implementation
- Integration of a Leveling System
- Potential Integration with existing WDL
- Research on game balancing in regards to skill trees
- Research on skill tree support in modern day game engines
- SkillTree Wiki Summary
- Skilltree "effect" implementation and roadmap
- Summary of md doc file for skilltrees
- Design ideas in connection to other features
- Summary of Skill Tree Integration 2022
- The Difficulty of the Reading the World
- Complex Skills Summary
-
Sound
-
Stats
-
WDL