-
Notifications
You must be signed in to change notification settings - Fork 13
Player Class ~ Design
Jack Casey edited this page May 19, 2021
·
10 revisions
- Provide basic classes for game developers to utilize
- Provide framework for game developers to create their own classes in place of or in addition to our provided classes
- Work with rpg-battle team to implement specific combat statistics / effects for different classes
- Work with other teams to implement additional game functionality based on class, such as custom dialogue, custom NPC names, custom item usage, etc.
- Currently supports npc class and class restrictions on items.
- Does not seem to support custom or modified dialogue.
- class_t struct
- char* Name
- char* Short description
- char* Long description
- obj_t* Attributes
- stats_t* Base Stats
- effects_hash_t* Effects
- skill_inventory_t** Combat Actions
- UT_hash_handle Field for use by UTHASH macros
- Holds the class structure, but has no functions.
-
Note: although these functions seem helpful, only class_new and class_free seems to have been implemented.
-
Create a new playerclass
- class_t* class_new(char* name, char* shortdesc, char* longdesc, obj_t* attr, stats_hash_t* stat, effects_hash_t* effect);
-
Set values inside the playerclass
- Set the name of the class
- int class_setname(class_t* c, char* name);
- Set the description of the class
- int class_setdesc(class_t* c, char* desc);
- Set the attributes of the class to a new array of attributes
- int class_setattributes(class_t*, attribute_t** attributes);
- This function would need to be updated to use obj_t
- int class_setattributes(class_t*, attribute_t** attributes);
- Set the player stats of the class
- int class_setstat(class_t* c, stat_t* stat);
- Set the combat actions of the class
- int class_setcombat(class_t* c, combat_action_t** combat);
- Set the non-combat actions of the class
- int class_setcustom_actions(class_t* c, game_action_t** custom);
- Set the name of the class
-
Get values inside the playerclass
- Get the name of the class
- char* class_getname(class_t* c);
- Get the description of the class
- char* class_getdesc(class_t* c);
- Get the list of attributes of the class
- attribute_t** class_getattributes(class_t* c);
- This function would need to be updated to use obj_t
- attribute_t** class_getattributes(class_t* c);
- Get the statistics of the class
- stat_t* class_getstat(class_t* c);
- Get the list of combat actions for the class
- combat_action_t** class_getcombat(class_t* c);
- Get the list of game actions for the class
- game_action_t** class_getcustom_action(class_t* c);
- Get the name of the class
-
Free a playerclass
- void class_free(class_t* c);
- Set a class restriction on an item
- int set_item_restriction(item_t* item, class_t* class);
- Get the class restriction on an item
- bool get_class_restriction(item_t* item, class_t* class);
Updated 4/23/2021 to account for changes to structures or unimplemented parts of the design.
-
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