Skip to content

Remaining Documentation Plan

This plan covers everything left to document after the component docs (87 components under Source/ModularInventoryPlus/). It groups remaining work by category, estimates scope, and suggests an order of execution.

Already done:

Not yet documented (this plan):

  • Core framework (Actors, GameMode, GameState, PC, Pawn)
  • Actors (NPC, Mob, Pickup, Gate, Loot, Interactables, Spawners, Damage/Projectiles, AI, Camera)
  • Data assets and definitions
  • Interfaces
  • Structs and key types
  • Widgets (UUserWidget)
  • Ability system (GAS) beyond UMIPEquipmentGE
  • Exchange / Vendor system
  • Cooldown decorators and relays (UObject, not components)
  • Subsystems, settings, BPFLs
  • Save game and load/save types
  • Other modules (MIPChatSystem, etc.) and editor

1. Core framework (GameMode, GameState, PC, Pawn, Character)

Class File Notes
AMIPBaseGameMode GameFramework/MIPBaseGameMode.h Extends chat SIO GameMode; IMIPCommonGameModeComponentsInterface
AMIPBaseGameState GameFramework/MIPBaseGameState.h IMIPCommonGameStateComponentsInterface
AMIPBasePlayerController GameFramework/MIPBasePlayerController.h Extends chat SIO PC; ICharacterClassTagInterface
AMIPBasePlayerState GameFramework/MIPBasePlayerState.h IAbilitySystemInterface
AMIPBasePlayerCharacter GameFramework/MIPBasePlayerCharacter.h IAbilitySystemInterface, IMIPCombatInterface, IMIPCursorHittableInterface
AMIPClientAuthGameMode ClientAuth/MIPClientAuthGameMode.h AGameModeBase (minimal)
AMIPDefaultServerGameMode DefaultServer/MIPDefaultServerGameMode.h AGameModeBase
AMIPCharSelectionGameMode CharSelection/MIPCharSelectionGameMode.h AGameModeBase
AMIPWaitSessionInstanceTravelGameMode CharSelection/MIPWaitSessionInstanceTravelGameMode.h AGameModeBase
AMIPCharSelectionCharacter CharSelection/MIPCharSelectionCharacter.h ACharacter
AMIPWorldSettings Setting/MIPWorldSettings.h World settings
AMIPPlayerCameraManager Camera/MIPPlayerCameraManager.h APlayerCameraManager
AMIPDefaultPlayerStart Gate/MIPDefaultPlayerStart.h APlayerStart

Doc: docs/framework/CoreFramework.md (one doc or split GameMode/GameState, PC/Pawn/Character). Describe how components attach and how common interfaces are used.

Priority: High (foundation for all other docs).


2. Actors (non-player)

2.1 NPC

Class File
AMIPBaseInteractable Interaction/Interactable/MIPBaseInteractable.h
AMIPOnlyOwnerInteractableInitially Interaction/Interactable/MIPOnlyOwnerInteractableInitially.h
AMIPBaseNPC NPC/MIPBaseNPC.h
AMIPBaseNPCWithStorage NPC/MIPBaseNPCWithStorage.h
UMIPBaseNPCInteractableComponent NPC/Component/MIPBaseNPCInteractableComponent.h

Doc: docs/actors/NPC.md – NPC hierarchy, interaction, storage, nameplate. Reference NPC data assets and dialogue.

2.2 Mob and spawners

Class File
AMIPBaseMob Mob/MIPBaseMob.h
AMIPSimpleMob Mob/MIPSimpleMob.h
AMIPBaseMobSpawner Mob/Spawners/MIPBaseMobSpawner.h
AMIPBaseAreaMobSpawner Mob/Spawners/MIPBaseAreaMobSpawner.h
AMIPBaseWaveMobSpawner Mob/Spawners/MIPBaseWaveMobSpawner.h
AMIPBaseTriggerableMobSpawner Mob/Spawners/MIPBaseTriggerableMobSpawner.h
AMIPRespawnableAreaMobSpawner Mob/Spawners/MIPRespawnableAreaMobSpawner.h
AMIPKillTriggeredWaveMobSpawner Mob/Spawners/MIPKillTriggeredWaveMobSpawner.h
AMIPEndlessWaveMobSpawner Mob/Spawners/MIPEndlessWaveMobSpawner.h
AMIPBaseMobSpawnerTrigger Mob/Triggers/MIPBaseMobSpawnerTrigger.h
AMIPBaseAIController AI/MIPBaseAIController.h
AMIPSimpleAIController AI/MIPSimpleAIController.h

Doc: docs/actors/MobAndSpawners.md – Mob lifecycle, spawner types, triggers, AI. Link to Health, ServerComponents (scaling), LootDefinition.

2.3 Pickup, loot, interactables

Class File
AMIPBaseItemPickup Pickup/Actors/MIPBaseItemPickup.h
AItemPickupWithStaticMesh Pickup/Actors/ItemPickupWithStaticMesh.h
AMIPBaseLootable GameObjects/MIPBaseLootable.h
AMIPAnyoneLootable GameObjects/MIPAnyoneLootable.h
AMIPLootBox GameObjects/MIPLootBox.h
AMIPLockedLootBox GameObjects/MIPLockedLootBox.h
AMIPModeRewardLockedLootBox GameObjects/MIPModeRewardLockedLootBox.h
AMIPBaseGatherable Gatherings/MIPBaseGatherable.h
AMIPGoToQuestOverlapper GameObjects/MIPGoToQuestOverlapper.h

Doc: docs/actors/PickupAndLoot.md – Pickup flow (already in component Pickup), lootable variants, gatherable, quest overlapper.

2.4 Gate and other actors

Class File
AMIPGate Gate/MIPGate.h
AMIPSpawnByPlayerControllerActor GameObjects/MIPSpawnByPlayerControllerActor.h
AMIPItemEffectActor GameObjects/MIPItemEffectActor.h
AMIPBaseInventoryExpansionActor Inventory/MIPBaseInventoryExpansionActor.h
AMIPOwningCharacterRenderTarget Character/MIPOwningCharacterRenderTarget.h

Doc: Either fold into existing component docs (Gate, Inventory) or docs/actors/OtherActors.md.

2.5 Ability system actors (damage, projectiles)

Class File
AMIPBaseDamageApplierActor AbilitySystem/DamageApplier/MIPBaseDamageApplierActor.h
AMIPRadiusDamageApplierActor AbilitySystem/DamageApplier/MIPRadiusDamageApplierActor.h
AMIPDelayedRadiusDamageApplierActor AbilitySystem/DamageApplier/MIPDelayedRadiusDamageApplierActor.h
AMIPMobDelayedRadiusDamageApplierActor AbilitySystem/DamageApplier/MIPMobRadiusDamageApplierActor.h
AMIPBaseProjectile AbilitySystem/Projectiles/MIPBaseProjectile.h
AMIPMobBaseProjectile AbilitySystem/Projectiles/MIPMobBaseProjectile.h
AMIPBaseRadiusDamageApplierWithProjectileMovement AbilitySystem/Projectiles/...

Doc: docs/ability/DamageAndProjectiles.md – Damage applier pattern, projectiles, homing/spline helpers. Link to GAS and Health.


3. Data assets and definitions

Scope: 30+ data assets under DataAsset/, Inventory/DataAsset/, Inventory/Definitions/, AbilitySystem/DataAsset/.

Group by domain:

Group Examples Doc
Item / inventory MIPItemDefinition, MIPBaseItemPieceAsset, MIPEquipmentPieceAsset, MIPUsablePieceAsset, MIPClassRestrictorAsset docs/data/ItemAndInventoryData.md
Player / class MIPPlayerClassSettingsDataAsset, MIPPlayerClassDataInfoDataAsset, MIPPlayerClassFriendlyInfoDataAsset docs/data/PlayerClassData.md
Interaction / NPC MIPInteractionInstanceDefinitionAsset, MIPInteractionInstancesDefinitionAsset, MIPNPCInfoAsset, MIPNPCSecondaryActionAsset docs/data/InteractionAndNPCData.md
Mob / combat / loot MIPMobInfoDataAsset, MIPCombatMobInfoDataAsset, MIPMobCombatDataAsset, MIPLootDefinitionAsset, MIPMobSpawnerCombatInfoDataAsset, MIPWaveMobSpawnerInfoDataAsset docs/data/MobAndLootData.md
Quest MIPQuestDataAsset docs/data/QuestData.md (or in Quest system doc)
Exchange / vendor MIPExchangeDataAsset, MIPVendorDataAsset docs/data/ExchangeAndVendorData.md
Ability / GE MIPDataDrivenAbilityDataAsset, MIPCommonGameplayEffectsDataAsset, MIPAbilityStaticFriendlyInfoDataAsset, MIPAbilityLevelUpInfoDataAsset, MIPGameplayEffectFriendlyInfoAsset docs/data/AbilityData.md
Equipment / item systems MIPEquipmentSetDataAsset, MIPItemRepairDefinitionAsset, MIPItemEnhanceDefinitionAsset, MIPItemCurrentDurabilityRepairDefinitionAsset, ItemPropertyDataAsset docs/data/EquipmentAndItemSystemsData.md
Level / input / UI MIPLevelBasedFeaturesDefAsset, MIPInputConfigAsset, MIPInGameESCMenuItemAsset docs/data/LevelAndConfigData.md

Priority: Medium–high; data assets are touched by designers and many systems.


4. Interfaces

Scope: 20+ UINTERFACE / I* classes.

Interface Purpose Doc
ISaveableLoadableObjectInterface, ISaveIdentifierInterface Save/load docs/interfaces/SaveInterfaces.md (or in SaveLoad)
IMIPWithPendingFunctionsInterface Deferred execution docs/interfaces/PendingFunctions.md
IInteractInterface, IMIPInteractableComponentInterface Interaction docs/interfaces/InteractionInterfaces.md
IMIPCursorHittableInterface Cursor hit / targeting docs/interfaces/CursorHittable.md
ICircularInteractionSphereInterface Circular interaction UI docs/interfaces/CircularInteractionSphere.md
IMIPCommonGameModeComponentsInterface, IMIPCommonGameStateComponentsInterface, IMIPCommonPlayerStateComponentsInterface Framework component access docs/interfaces/CommonComponentsInterfaces.md
IMIPCurrencyFeeInterface Fee (currency) checks docs/interfaces/CurrencyFee.md
IMIPExchangeInterface, IMIPVendorInterface Exchange / vendor docs/interfaces/ExchangeVendorInterfaces.md
IMIPStorageAssetInterface Storage asset (e.g. NPC) docs/interfaces/StorageAsset.md
IMIPTemporalDurationInterface, IMIPTemporalDurationObjectInterface Cooldown / duration docs/interfaces/TemporalDuration.md
ICharacterClassTagInterface Player class tag docs/interfaces/CharacterClass.md
IAbilitySystemInterface GAS (engine + MIP) Reference only or short note
IMIPCombatInterface Combat docs/interfaces/Combat.md
IMIPPlayerDamageReceivableActorInterface Damage receiver (floating text, etc.) docs/interfaces/DamageReceivable.md
IOutliningInterface Outline stencil docs/interfaces/Outlining.md
IMIPDroppableOnScreenInterface, IMIPPopupWidgetInterface Widget drag/drop, popup docs/interfaces/WidgetInterfaces.md
IMIPIsMobInterface Mob identification docs/interfaces/IsMob.md
IMIPMobSpawnerTriggerInterface Spawner trigger docs/interfaces/MobSpawnerTrigger.md
IAdditionalDynamicPieceInterface Item piece docs/interfaces/AdditionalDynamicPiece.md

Doc: Either one docs/interfaces/README.md with a table and short descriptions, or one file per logical group above.

Priority: Medium; clarifies contracts between systems.


5. Structs and key types

Scope: Important USTRUCT and shared types (e.g. FMIPItemEntry, FMIPCurrencyFeeStruct, FMIPItemAddedNotification, quest/ability structs). Many live next to the classes that use them.

Approach: Do not document every struct in isolation. Instead:

  • Core inventory/item: Document in a single “Inventory and item types” doc: FMIPItemEntry, item piece types, FMIPItemAddedNotification, FMIPRemovedItemInfo, equipment/durability structs. Reference from Inventory.
  • Currency: FMIPCurrencyEntry, FMIPCurrencyFeeStruct in Currency or a short docs/types/CurrencyTypes.md.
  • Quest: Quest instance and task structs in Quest system doc.
  • Ability: MIPAbilityInfo, MIPGameplayEffectFriendlyInfo*, damage info structs in Ability system doc.
  • Interaction: FInteractionTypeStruct, FCircularInteractionSphereAttachmentStruct in Interaction/Circular doc.
  • Cooldown: FMIPTemporalDurationDecoratorContainer, MIPCooldownTypes in Cooldown doc.

Doc: docs/types/README.md as index; add sections to existing system docs where it makes sense.

Priority: Medium; do when expanding system docs.


6. Widgets (UUserWidget)

Scope: 60+ widget classes (UMIPBaseUserWidget, slot widgets, popups, tooltips, dialogue, quest, status effect, etc.).

Approach: Group by area; avoid 60 separate files.

Group Examples Doc
Base UMIPBaseUserWidget, UMIPBaseToggleableWidget, UMIPContainerBaseWidget, UMIPBaseItemSlotWidget, UMIPBasePopupWidget docs/widgets/BaseWidgets.md
Slots and containers UMIPItemSlotWidget, UMIPInventoryContainerWidget, UMIPEquipmentContainerWidget, UMIPStorageContainerWidget, UMIPQuickBar* docs/widgets/SlotsAndContainers.md
Popups UMIPBasePopupWidget, UMIPConfirmationPopupWidget, UMIPMessagePopupWidget, UMIPNumericPopupWidget, UMIPItemListPopupWidget docs/widgets/Popups.md
Tooltips UMIPItemTooltipWidget, UMIPItemTooltipContainerWidget, UMIPItemStatWidget, UMIPItemDurabilityWidget, status effect tooltips docs/widgets/Tooltips.md
Dialogue / NPC UMIPNPCDialogueItemWidget, UMIPNPCQuestItemWidget, UMIPNPCSecondaryDialogueActionsWidget docs/widgets/DialogueAndNPC.md
Quest / abilities / player UMIPQuestItemWidget, UMIPPlayerAbilityTooltipWidget, UMIPPlayerExpBarWidget, UMIPPlayerAttributesSectionWidget docs/widgets/QuestAbilitiesPlayer.md
Enhance / repair / apply item UMIPEnhanceWidget, UMIPRepairWidget, UMIPItemEnhancementLevelWidget docs/widgets/EnhanceRepairApplyItem.md
Other UMIPDeathWidget, UMIPMainWidget, UMIPLoadingScreenWidget, UMIPWorldInfoWidget, UMIPFloatingDamageText*, UMIPCircularInteractionSphereWidget docs/widgets/OtherWidgets.md or merge into feature docs

Priority: Medium; useful for UI and blueprint authors.


7. Ability system (GAS) beyond UMIPEquipmentGE

Scope: Attribute sets, gameplay abilities (base, player, mob, active, passive, data-driven), exec calcs, damage execution, projectiles, data-driven objects, ASC.

Topic Files / classes Doc
Attribute sets MIPBaseAttributeSet, MIPWithPrimaryAttributeSet, MIPWithDerivedAttributeSet, MIPBaseMobAttributeSet docs/ability/AttributeSets.md
ASC MIPAbilitySystemComponent, MIPPlayerAbilitySystemComponent, MIPPlayerAbilitySystemComponentManager docs/ability/AbilitySystemComponents.md (or extend Health/Character)
Abilities MIPBaseGameplayAbility, MIPBasePlayerGameplayAbility, MIPBaseMobGameplayAbility, MIPBaseActiveGameplayAbility, MIPBasePassiveGameplayAbility, MIPBaseDataDrivenAbility, MIPBaseItemPassiveGameplayAbility docs/ability/GameplayAbilities.md
Exec calcs ExecCal_BaseDamage, ExecCal_PlayerToMobDamage, ExecCal_MobDamage, ExecCal_ApplyEquipmentStats docs/ability/ExecutionCalculations.md
Damage and projectiles (see Actors §2.5); damage applier, projectiles, homing/spline docs/ability/DamageAndProjectiles.md
Data-driven MIPDataDrivenAbilityDataAsset, MIPBaseDataDrivenObject, DD* objects docs/ability/DataDrivenAbilities.md

Priority: High; core for combat and items (UMIPEquipmentGE already documented).


8. Exchange and vendor system

Scope: Exchange/vendor managers (PC components), exchange UI widgets, vendor data assets. Some may already be referenced in Inventory/Currency.

Class File
UMIPBaseExchangeManager Exchange/MIPBaseExchangeManager.h
UMIPBaseInteractableExchangeManager Exchange/MIPBaseInteractableExchangeManager.h
UMIPPlayerExchangeManager Exchange/MIPPlayerExchangeManager.h
UMIPPlayerVendorManager Vendor/MIPPlayerVendorManager.h
Exchange/vendor widgets Widget/Exchange/, Widget/Vendor/

Doc: docs/systems/ExchangeAndVendor.md – Flow, action limits, currency, interaction. Link to ActionLimit, Currency, Inventory, data assets.

Priority: High if your game uses vendors/exchanges heavily; otherwise medium.


9. Cooldown decorators and relays (UObject)

Scope: Temporal duration decorators and client relays (used by cooldown components but are UObject, not components).

Class File
UMIPTemporalDurationDecorator Cooldown/Decorator/MIPTemporalDurationDecorator.h
UMIPBaseExpiringItemDurationDecorator Cooldown/Decorator/MIPBaseExpiringItemDurationDecorator.h
UMIPItemCooldownDecorator Cooldown/Decorator/MIPItemCooldownDecorator.h
UMIPExpiringItemDurationDecorator Cooldown/Decorator/MIPExpiringItemDurationDecorator.h
UMIPVendorExpiringItemDurationDecorator Cooldown/Decorator/MIPVendorExpiringItemDurationDecorator.h
UMIPClientCooldownRelay Cooldown/MIPClientCooldownRelay.h
UItemPiece_Cooldown Inventory/Pieces/TempDuration/ItemPiece_Cooldown.h (if in this module)

Doc: Extend Cooldown with a “Decorators and relays” section, or docs/systems/CooldownDecoratorsAndRelays.md.

Priority: Low–medium.


10. Subsystems, settings, BPFLs

Class File Doc
UMIPDefinitionsReaderSubsystem System/MIPDefinitionsReaderSubsystem.h docs/subsystems/DefinitionsReader.md
UMIPAPIUrlSubsystem API/Subsystem/MIPAPIUrlSubsystem.h docs/subsystems/APIUrl.md
UMIPAPIUrlSettings API/Settings/MIPAPIUrlSettings.h (with APIUrl or settings)
UMIPSettings Setting/MIPSettings.h docs/settings/MIPSettings.md (item selection mapping, etc.)
UMIPEditorSettings Setting/MIPEditorSettings.h Editor-only; optional
UMIPBPFL BPFL/MIPBPFL.h docs/bpfl/MIPBPFL.md (or list in a single BPFL doc)
UMIPEditorDevLoginBPFL BPFL/MIPEditorDevLoginBPFL.h Editor; optional
UBaseAsyncAPITask API/BaseAsyncAPITask.h docs/api/AsyncAPITask.md if used

Priority: Medium for DefinitionsReader and MIPSettings; lower for editor and API helpers.


11. Save game and load/save types

Scope: UMIPBaseSaveGame, UMIPClientSaveGame, save operation handlers, item save op, etc. (headers under SaveLoadBase, SaveLoadClient, SaveLoadServer).

Doc: Extend SaveLoad with “Save game classes and operations” (or a separate docs/systems/SaveGameTypes.md).

Priority: Medium.


12. Inventory pieces and item instance

Scope: UMIPItemPiece, UMIPItemPieceDynamic, UMIPItemPieceDynamicTemp, piece types (equipment, durability, usable, expiring, etc.), UMIPItemInstance. Core to inventory but not components.

Doc: docs/inventory/ItemPiecesAndInstance.md – Piece hierarchy, save/load, how they attach to FMIPItemEntry. Reference from Inventory.

Priority: High for anyone extending items or debugging saves.


13. Other modules and editor

Area Scope Doc
MIPChatSystem Chat, nameplate, player info (in Source/MIPChatSystem/) docs/modules/MIPChatSystem.md (overview + key classes) or leave to that module’s README
MIPChatSystemWithSocketIO SocketIO chat, friends (Source/MIPChatSystemWithSocketIO/) docs/modules/MIPChatSystemWithSocketIO.md
ModularInventoryPlusEditor Editor module docs/editor/README.md (optional)
Third-party Agones, VaRest, etc. Reference only or link to upstream

Priority: Low unless you need cross-module or editor docs.


14. Execution order (suggested)

  1. Core framework (§1) – one doc or small set.
  2. Interfaces (§4) – one index or a few grouped docs.
  3. Ability system (§7) – attribute sets, ASC, abilities, exec calcs, damage/projectiles.
  4. Actors (§2) – NPC, Mob and spawners, Pickup and loot, Gate/other, damage/projectile actors.
  5. Exchange and vendor (§8).
  6. Data assets (§3) – by domain.
  7. Inventory pieces and item instance (§12).
  8. Structs/types (§5) – as part of system docs or a small types index.
  9. Widgets (§6) – by group.
  10. Cooldown decorators (§9), Save game types (§11), Subsystems/settings/BPFLs (§10).
  11. Other modules / editor (§13) if needed.

15. Deliverables

  • docs/REMAINING-DOCS-PLAN.md – this file.
  • New folders as needed: docs/framework/, docs/actors/, docs/data/, docs/interfaces/, docs/types/, docs/widgets/, docs/ability/, docs/systems/, docs/inventory/, docs/subsystems/, docs/settings/, docs/bpfl/, docs/api/, docs/modules/, docs/editor/.
  • One or more doc files per section above; link from docs/components/README.md and from a top-level docs index.
  • Optional: add a “Documentation” section to the plugin’s main README that links to both component docs and this remaining-docs plan.

16. Summary table

Category Est. docs Priority
Core framework 1–2 High
Interfaces 1 or ~10 short Medium
Ability system 4–6 High
Actors (NPC, Mob, Pickup, Gate, Damage) 4–5 High
Data assets 8–10 Medium–High
Exchange / vendor 1 High (if used)
Item pieces / instance 1 High
Structs / types Index + in-place Medium
Widgets 6–8 Medium
Cooldown UObjects, save types, subsystems 3–5 Low–Medium
Other modules / editor 0–2 Low

Total is on the order of 35–55 new doc files (depending on how much you merge or split). Doing framework, interfaces, ability system, and main actors first gives the biggest benefit; the rest can be phased by need.