Working authoring field guide
The illustrated final documentation is still deferred. These notes explain the current editable fields.
For ride parts, paint, tuning, workshop stock, services and adding the future car, see Ride workshops. Owned parts can be fitted anywhere, including while mounted.
Define once, select by name
- Items: add an entry in
DA_NGS_Items, create its stable Id and readable Name. Reward items, required keys and weapon inventory requirements select from this active catalog. - Character stats: Project Settings → Nice Game Core → Base Attributes. Add the stat's Id, display name and base value. Every modifier's Character stat picker reads this list live. Flat bonuses are added first; Percent is a fraction (
0.1means 10%). - Skills: create the skill in
DA_NGS_Skills. Prerequisite skills, weapon requirements and reward unlocks offer existing skills by name. - Branches, equipment/attachment slots, weapon groups, story areas, bosses, episodes, scenes, events and custom event subjects: define them in Project Settings → Nice Game Authoring Lists. Branches, equipment slots and weapon groups also appear in the in-game menus automatically.
- Quests, story nodes, ride profiles, factions and NPCs: create entries in their respective active catalogs; dependent fields offer those entries by name. Catalog arrays show their entries' readable names when collapsed.
Pickers read the catalogs selected in each plugin's Project Settings. Saved and unsaved changes to the active loaded catalog are visible when the list is opened again. Other inactive catalogs are not mixed into lists because the runtime would not resolve those definitions. Keep IDs stable once saves refer to them; changing a display name is safe.
Required completed quests means the listed quests must have been completed and their rewards claimed before the dependent quest is accepted. An empty list has no requirements; None placeholders are ignored. Quest references must not form a cycle or reference the same quest.
Objective Progress event chooses what advances the objective. Event subject selects the relevant item, quest, NPC or interaction type. None matches any subject. For example, Item Acquired + Wood counts wood acquisition, Quest Completed + Gather Supplies observes that quest's completion, and Interacted + Harvest observes successful harvesting. Registering a custom event name does not emit it: gameplay must call RecordEvent.
Fighting styles
DA_NGS_Combat has separate Physical Weapons and Fighting Styles arrays. Styles contain skill requirements, damage/reach/timing/stamina and an optional compatible attack montage. They do not own meshes, ammunition, magazines or weapon attachment slots. Existing Fists, Kung Fu, Street Fight, Kick Boxing and Karate definitions migrate out of the old weapons array while preserving edited attack values and saved selections.
Rides and animations
Each ride profile can use:
- A Static Mesh with the built-in example driver.
- A Skeletal Mesh with the built-in driver. It takes priority over the static mesh. Assign either an Anim Blueprint or compatible Idle/Move Animation clips. The Anim Blueprint takes priority; its owner exposes
SpeedForAnimation. - A complete Actor Class, usually a Blueprint implementing the Ride Driver interface. Spawn it using the Spawn Ride Blueprint function or place an
NGSRideSpawnerand choose its profile. The helper enables actor replication and optionally movement replication. Existing placed custom actors keep their own class and movement implementation.
For a custom physics vehicle/animal, add NGSMountableComponent (the spawn helper supplies one if missing), configure seats and implement Apply Ride Input on the actor. Connect its validated axes to the actor's actual movement controls. This adapter does not automatically turn arbitrary meshes into tire, flight or buoyancy simulations.
Profiles expose Seats, including transform, safe exit offset, driver/passenger role and optional seat/saddle bone or socket. When Seats is empty the actor's own seats are preserved. Use a single driver seat; passenger seats have Driver disabled.
Each seat has Rider Animations, with one entry per supported character skeleton:
- Skeleton selects compatibility explicitly.
- Riding Pose supplies a looping seated/riding sequence.
- Animation Class optionally supplies a rider Anim Blueprint instead. Its owning
NGSRiderSeatPawnexposesRideSpeedfor blend logic. - Enter Montage and Exit Montage are optional visual cues. They require compatible skeletons and montage slots in the respective rider/restored-character Anim Blueprints. They do not add root-motion boarding trajectories or retarget incompatible animations.
The runtime selects the rider set matching the current character's actual rendered mesh skeleton. Assign separate sets when CMC/Mover characters use different skeletons. There is no universal animation guessed from a vehicle's name. Without a compatible authored set, the original replaceable pose behavior remains; production action clips still need authoring/import/retargeting.
For Mutable customization, parameter and component selectors read existing configured Mutable objects. Add parameters in the Mutable graph first. The optional advanced pawn mesh override lists loaded character skeletal components; None uses automatic selection. Bone/socket selectors read loaded meshes, so load the intended mesh before choosing a socket.
Equipment presentation
The Equipment board places armor/gear around a wide central weapon column. Clicking a slot keeps the board visible and opens the right-hand carousel. The focused item is larger; neighboring owned items select a new comparison. D-pad left/right or Previous/Next cycles the carousel, and Equip/Unequip calls the authoritative inventory/combat component.
For item art, assign Icon, Preview Mesh (static), or Armor Mesh (skeletal) on the item. Weapon inspection falls back to its combat definition's mesh. Without authored meshes/icons the UI deliberately uses replaceable line symbols. Equipment Group on physical weapons selects a group defined in Nice Game Authoring Lists; older weapons infer Long Gun, Heavy, Sidearm or Melee. These are selection groups for the current active weapon, not four simultaneously active weapons. A weapon's Required Inventory Item may have a different Id from the weapon itself; the inventory adapter resolves the reference.
Character inspection copies visible meshes from the pawn and its child/attached actors, preserving the existing CMC/Mover animation graphs. Drag to rotate or scroll to zoom; focus Inspect Character and use the controller's right stick for the same controls.
Terrain maps and routes
With no World Texture assigned, Nice Maps captures the current level locally from above. The minimap refreshes twice per second; the world overview and geometry list refresh every five seconds. Captures rebuild after travel. The server performs navigation only and never renders map images. North is Unreal +X; icons, input placement, route points and the terrain camera use that same orientation.
Project Settings → Nice Maps controls automatic level capture, automatic geometry bounds, image resolution and minimap coverage. Turn off automatic bounds to use explicit World Center/World Span. An optional authored World Texture overrides live imagery for large worlds; author it north-up (+X). Automatic imagery covers currently loaded visible level geometry and is a top-down view, so multi-floor interiors/roofs and unloaded world-partition regions need authored maps or a later floor/streaming layer.
Place a Nav Mesh Bounds Volume over walkable space and build navigation (or enable runtime navigation generation) in each gameplay level. The current example map already has navigation. The server projects the player's position and destination onto that navigation mesh and requests a complete walkable path using Unreal's navigation query. Default area costs produce the shortest navigable route; custom navigation area costs can prefer safer/cheaper terrain. A blocked or off-nav target shows a clear status and direction guidance rather than a fake line through obstacles. The minimap arrow points toward the tracked target and stays inside the frame for off-screen targets. Custom markers are private to each character and retain their names through saves/travel.