Attempt to create a version of my previous Lyra-based game (Pegasus), but without all the Lyra bloat as I've often no idea what that template is doing.
Also trying to use C++ over blueprints to make source compare easier.
- Download & install Visual Studio Code and Unreal Engine
- Install Git LFS with
> git lfs install
- Clone the repo
- Launch the Unreal editor by double+clicking on the
.uproject
file inFile Explorer
or by launching the editor directly Edit > Editor Preferences... > Source Code
- Change the
Source Code Editor
toVisual Studio Code
Tools > Refresh Visual Studio Code Project
- Close out the Unreal editor
- Open the newly created
.code-workspace
file in the root of the project Ctrl+Shift+D
to show theRun and Debug
clover- Select
▶ Launch ThirdPersonShooterEditor (Development)
F5
to launch the Unreal editor with the VS Code debugger attached!
C++ intellisense is borderline-useless with Unreal projects. Might be size, idk. Anyways, I mainly use Search (Ctrl+F)
to find variable references.
Make sure that if you're doing this globally that you toggle the Search Details
(triple dot) and add ./ThirdPersonShooter
to the files to include
.
This will prevent Code from searching the entire Unreal Engine source, which is probably not what you want.
- swap to anim motion-matching & get assets for flying
- enable camera-collision for the vehicle parts
- move loose vehicle collision settings to presets
- add armor w/damage reduction
- shotgun crashes the engine if you shoot 2 silhouettes in quick succession
- Tracked this down to
GCNL_Character_Damaged
for theSelect & Queue Admin
func - think the multiple hits so close are breaking something?
- Tracked this down to
- Exiting the editor will cause an
Access violation executing location 0xFFFFFFFFFFFFFFFF
to be thrown with no source or context available - should probably move the MaxStackCount for ammo to an ASC AttributeSet
- Lyra uses
FFastArraySerializer
inLyraEquipmentManagerComponent.h
and the linker breaks when I try to import the header file- I'm sure this is important for multiplayer, so will need to address this eventually
- I've fixed the linker error, but need to go back and implement the removed
FFastArraySerializer
references
- Need to figure out how to keep track of inventory items that can vs can't stack
- Research asset manager registrations for:
UEquipmentConfiguration
UInventoryItemDefinition
UEquipmentItemDefinition
- 30000.0 cm/s is a good muzzle velocity for blaster bolts
- What is the difference between a
GameplayCue
, and aGameplayEvent
in terms of GameplayTags?- assume
GameplayCue
is 'Hey, you're supposed to do X now', andGameplayEvent
is 'Y just happened'
GameplayEvents
are used by the AbilitySystemComponent to track when an ability should be triggered by a certain 'event' - seeGA_WeaponFire
listening for theInputTag.x
- Is it though? Removing the InputTag from the GA_ doesn't affect functionality... InputTag_Bindings holds the link between the 2...
GameplayCues
are typically for the server telling the client to do some VFX/SFX thing - see theGameplayCue
for grenades - assume
- Add a PawnCosmeticComponent to
AModularPawn
& have equipment attach to scene elements in that- probably fine for this to just be a part of the
EquipmentManagerComponent
? - only case where it's not would be for truly cosmetic only things like character customization
- look to the
SKM_MannyInvis
- look to the
- probably fine for this to just be a part of the
- Figure out how to use AssetManager w/cosmetics etc. (Data registries?)
- Add the NotifyName for post
Activate Anim Layer and Play Paired Montage
to listen for animation notify event - Lyra has the
AbilitySystemComponent
off the PlayerState, not the Pawn, where is the best location? - Make sure I'm using ALevelInstance right with
GameFeatureAction_AddLevelInstance
(streaming, etc) - Add a func for
InteractableObjectsFound
instead of just changed - Move
GA_Interaction_Activate
to a C++ class- Same with
GA_Interaction_Collection
- Same with