Releases: Klian326/-Public-TopDownRogueLite
Update - v0.3.0
TDRL_LineOfSightComponent
ListenServer visibility fix
Fixed the issue causing the listen server to hide other players character
TDRL_NPCSpawn
SpawnOnBegin
New parameter "bSpawnOnBegin", which will force spawn OnBeginPlay
SpawnNPC and DespawnNPC exposed to BPs
TDRL_PlayerController
CursorTraceChannel and CursorTraceChannel_Pitch
Now you have the option to select the channel to be utilized in the 'GetHitResultUnderCursorByChannel' function. The 'TDRL_PlayerController' stores the last cursor-hit for gameplay purposes, with the default setting being 'Visibility'. This feature proves beneficial when you wish to exclude specific visible collisions in your map, such as walls.
In addition, you can chose a different Channel (CursorTraceChannel_Pitch) when using the pitch functionality!
Control Rotation: ZPlane
New Control Rotation Type, replacing the 'UnderMouse' preset. Instead of utilizing the surface's hit location as the origin, which is projected on the character's height, this preset employs trigonometry to interpolate the player's camera. The aiming vertical height is determined by the ZPlaneFloorHeight property (float).
IMPORTANT: If you intend to utilize this Control Rotation Type, I strongly recommend changing the 'CursorTraceChannel' to a custom channel specifically designed to be obstructed solely by the map's floor.
(Old) Under Mouse Visual Debug
(New) ZPlane Visual Debug
Laser for firearms (Blueprints)
New example of lasers for firearms, using blueprints.
Cursor Indicator (Blueprints)
New example of a cursor indicator, using blueprints.
Shooting line
Demonstrative shooting line to test the new aim system.
Update - v0.2.2
Features
- Fixed "Flag Delivery" example for multiplayer use
- Direct use of "Control Rotation" restored, you can now select "WorldRotation" as Control Rotation Type
- Suspended the use of "Property Access" nodes in AnimBlueprints.
This seem to cause issues for some users when they try to duplicate and modify the AnimBP using such method. If you're comfortable using "Property Access" nodes, I left them unplugged so it should be easy to restore them.
You can easily locate them by searching for "Property Access"
Code
- UTDRL_BFL_Global::GetTDRLHUD
Now you must specify a Character pointer to get its "TDRL HUD"
UTDRL_BFL_Global::GetTDRLHUD(UObject* WorldContextObject, ACharacter* InCharacter)
- MergeSkeletalMeshes on Dedicated Servers
MergeSkeletalMeshes now checks if it's running on a Dedicated Servers, blocking the process and preventing any crash to occur
- ATDRL_Firearm's properties "MagazineAmmunition" and "Ammunition"
ATDRL_Firearm's properties "MagazineAmmunition" and "Ammunition" are now replicated. This will directly fix the issue where Clients HUD weren't updating their value
- Fixed "DestroyItemInSlots"
which was not correctly replicated
- TDRL_CharacterMovementComponent is now replicated by default
(needed for animations and vfxs)
- Character's rotation, aim-offset and projectile's direction prevision
has been uniformed and greatly improved
- TDRL_ProgressBarComponent will correctly initialize itself when simulating a Client gameplay using the editor.
It will also call the Blueprint Assignable event "WidgetReadyOnClient" for further blueprint customization
- Added float variable "DeadZoneAroundCharacter" to the TDRL_PlayerController
(Control Rotation Type must be "UnderMouse")
- A few minor fixes
Update - v0.1.6
1. Improved bullet spreading function for ATDRL_ProjectileBase, so this will affect both ATDRL_ProjectileTrace and ATDRL_ProjectilePhysics.
2. Control Rotation Types functions (and variable for C++ users) renamed
Functions
GetLocationTarget -> GetControlRotationTargetLocation
SetLocationTarget -> SetControlRotationTargetLocation
GetLockedTarget -> GetControlRotationLockedTarget
SetLockedTarget -> SetControlRotationLockedTarget
Variable
LocationTarget -> ControlRotationTargetLocation
EControlRotationType::TargetLocation crash fixed
3. bUseControllerRotationYaw now affects the character's rotation
4. Hands IK fix
Update - v0.1.4
General
1. Size reduction: texture compression, Quinn removed
All the textures have been compressed and scaled down to 1024px, SKM_Quinn and SKM_Quinn_Simple have been removed along with their related assets (poses and materials).
2. Camera Occlusion with Fade
TDRL_CameraOcclusionComponent occlusion event is now customizable, you can add a fade effect for example!
FadeOcclusion1_short0001-0443.mp4
3. TDRL_NPCSpawn hotfix
The function "RestoreSpawn()" has been declared under the #if WITH_EDITOR by mistake, this was causing a compiler error when exporting the project.
4. BP_TDRL_Lever multiplayer hotfix
Lever animation and sound was happening on server only. Now it's correctly replicated (the interaction event always happen on server, so use variables replication or RPCs for clients)!
Update - v0.1.3
General
1. UE4 Mannequin example
I included the assets created during the recording of this video.
The UE4 Mannequin will not be officially supported for any future update or new feature.
I encourage anyone to use the new skeleton structure.
2. Minor fixes
-
ATDRL_ProjectileTrace was causing a crash during multiplayer sessions.
-
Fixed some missing #include strings in the source code
ATDRL_PlayerController
1. Source code improvements and better structure
2. Two new utility functions
GetActorsOfClassInRadiusUnderMouse
This function will trace a spherical area under the player's cursor and will return a list of actors overlapping that area.
GetClosestActorOfClassInRadiusUnderMouse
This function will trace a spherical area under the player's cursor and will return the closer actor.
3. Control Rotation Type
- UnderMouse: Orient towards mouse cursor's trace hit (Default setting)
- LockedTarget: Orient towards a target actor
- TargetLocation: Orient towards a custom target location
4. Aim-Lock target (Blueprint Example)
A blueprint function example involving new node functions
LockedTargetShortDemo0001-0507.mp4
Update - v0.1.2
1. Editor Module
A new Editor Module has been introduced, it will include quality of life tools to easily build your game.
2. ATDRL_NPCSpawn selection buttons
Now it's easier to group and manage ATDRL_NPCSpawn thanks to these selector buttons, while you're creating your map.
3. ATDRL_NPCSpawn editor Properties Display
The ATDRL_NPCSpawn will now show some of the most important properties about the specific instance placed in the map.
4. ATDRL_NPCSpawn restore function
Now you can script your game to restore spawn points when their characters have been killed with a simple blueprint node.
5. ATDRL_SpawnVolume
A new trigger volume class actor has been introduced. It derives from the ATriggerVolume class and should be used in combination with ATDRL_NPCSpawn. Similarly to the new features introduced for ATDRL_NPCSpawn, by clicking the button "Select Related NPCSpawns", all the ATDRL_NPCSpawn actors using that specific volume as trigger for the spawn event, will be selected.
6. Correct camera spawn rotation (Blueprint)
Now the character's camera will be correctly oriented on spawn, depending on its spawn rotation
7. Delegates for Items
- OnInteract
- OnPickup
- OnDrop
- OnEquip
- OnHolster
8. GENERATED_UCLASS_BODY to GENERATED_BODY
Converted outdated constructor method "GENERATED_UCLASS_BODY" into the more recent form "GENERATED_BODY"
9. Static Items
You can set a ATDRL_Item as Static Item.
When an Item is set to Static it can't be picked up, it will fire the "Interacted" event instead! This is mainly intended for switches and static interactables!
10. Projectile effects
Niagara trail effects exposed for parameters customizations
Projectile sound effect and Muzzle VFX
11. VFXs renamed
Update - v0.2.5
- Replaced all raw pointer checks with IsValid() function to prevent GC issues
- Greandes pickups examples
- Projectiles effect disappearing correctly for clients fix
- UI fix after respawn
- Minor AI bugs fix
- Code cleanup
Update - v0.2.0
v0.2.0 is now pending review!
Documentation and media
Documentation and media will be updated in the following weeks with information regarding new features and improvement. This changelog will be updated aswell.
Notable new features:
- GrenadePouch / Throwing System
- Interaction interface (any actor) using the same system for Items
- Chaos destructables integration
- Replicated progress bar (used for health in the example demo, can be used for anything)
Important
New Paths
ProjectFolder/Plugins
"../Plugins/TopDownRogueLite",
"../Plugins/TopDownRogueLite/Source/TopDownRogueLite/Public",
"../Plugins/TopDownRogueLite/Source/TopDownRogueLite/Public/Types",
"../Plugins/TopDownRogueLite/Source/TopDownRogueLite/Public/HUD",
"../Plugins/TopDownRogueLite/Source/TopDownRogueLite/Public/Player",
"../Plugins/TopDownRogueLite/Source/TopDownRogueLite/Public/Items",
"../Plugins/TopDownRogueLite/Source/TopDownRogueLite/Public/Projectile",
"../Plugins/TopDownRogueLite/Source/TopDownRogueLite/Public/AI",
"../Plugins/TopDownRogueLite/Source/TopDownRogueLite/Public/Nodes",
"../Plugins/TopDownRogueLite/Source/TopDownRogueLite/Public/GAS",
"../Plugins/TopDownRogueLite/Source/TopDownRogueLite/Public/Gameplay",
"../Plugins/TopDownRogueLite/Source/TopDownRogueLite/Public/Progressbar", // New v0.2.0!
"../Plugins/TopDownRogueLite/Source/TopDownRogueLite/Public/GrenadePouch", // New v0.2.0!
Engine/Plugins/Marketplace
Path.Combine(EnginePath, "Plugins/Marketplace/TopDownRogueLite/Source/TopDownRogueLite/Public"),
Path.Combine(EnginePath, "Plugins/Marketplace/TopDownRogueLite/Source/TopDownRogueLite/Public/Types"),
Path.Combine(EnginePath, "Plugins/Marketplace/TopDownRogueLite/Source/TopDownRogueLite/Public/HUD"),
Path.Combine(EnginePath, "Plugins/Marketplace/TopDownRogueLite/Source/TopDownRogueLite/Public/Player"),
Path.Combine(EnginePath, "Plugins/Marketplace/TopDownRogueLite/Source/TopDownRogueLite/Public/Items"),
Path.Combine(EnginePath, "Plugins/Marketplace/TopDownRogueLite/Source/TopDownRogueLite/Public/Projectile"),
Path.Combine(EnginePath, "Plugins/Marketplace/TopDownRogueLite/Source/TopDownRogueLite/Public/AI"),
Path.Combine(EnginePath, "Plugins/Marketplace/TopDownRogueLite/Source/TopDownRogueLite/Public/Nodes"),
Path.Combine(EnginePath, "Plugins/Marketplace/TopDownRogueLite/Source/TopDownRogueLite/Public/GAS"),
Path.Combine(EnginePath, "Plugins/Marketplace/TopDownRogueLite/Source/TopDownRogueLite/Public/Gameplay"),
Path.Combine(EnginePath, "Plugins/Marketplace/TopDownRogueLite/Source/TopDownRogueLite/Public/Progressbar"), // New!
Path.Combine(EnginePath, "Plugins/Marketplace/TopDownRogueLite/Source/TopDownRogueLite/Public/GrenadePouch"), // New!
Default Gameplay Tags v0.2.0
Initial Config file needed for GAS: DefaultGameplayTags.ini v0.2.0
DefaultGameplayTags v0.2.0
Copy this .ini file into YourProject->Config folder. It contains the Gameplay Ability Tags required to correctly perform operations on native inputs using the Gameplay Ability System.
[IMPORTANT] Without this tag list, you might encounter major issues. For example, if you don't have the tag "Move" correctly set up, the BP_TDRL_Character won't be able to process WASD movements.
[/Script/GameplayTags.GameplayTagsSettings]
ImportTagsFromConfig=True
WarnOnInvalidTags=True
ClearInvalidTags=False
AllowEditorTagUnloading=True
AllowGameTagUnloading=False
FastReplication=False
InvalidTagCharacters="\"\',"
NumBitsForContainerSize=6
NetIndexFirstBitSegment=16
+GameplayTagList=(Tag="CharacterInputs.AlternativeWalk",DevComment="Character Alternative Walk Speed")
+GameplayTagList=(Tag="CharacterInputs.CameraRotation",DevComment="Can rotate camera")
+GameplayTagList=(Tag="CharacterInputs.Crouch",DevComment="Character crouch")
+GameplayTagList=(Tag="CharacterInputs.Dash",DevComment="Character Dash")
+GameplayTagList=(Tag="CharacterInputs.Drop",DevComment="Drop item")
+GameplayTagList=(Tag="CharacterInputs.Jump",DevComment="Character Jump")
+GameplayTagList=(Tag="CharacterInputs.Move",DevComment="Walking movements")
+GameplayTagList=(Tag="CharacterInputs.Pickup",DevComment="Pickup Item")
+GameplayTagList=(Tag="CharacterInputs.PitchAim",DevComment="Pitch Aim with button")
+GameplayTagList=(Tag="CharacterInputs.PrimaryAction",DevComment="Primary Item Action")
+GameplayTagList=(Tag="CharacterInputs.RAction",DevComment="R Action (Used for reloading)")
+GameplayTagList=(Tag="CharacterInputs.SecondaryAction",DevComment="Secondary Item Action")
+GameplayTagList=(Tag="CharacterInputs.SwitchWeapon",DevComment="Switch weapon/select slot number")
+GameplayTagList=(Tag="ProgressBar.Float.Perc",DevComment="")
+GameplayTagList=(Tag="ProgressBar.Text.Name",DevComment="")
+GameplayTagList=(Tag="ProgressBar.Text.Perc",DevComment="")
TDRL Zombies 2
You'll need TopDownRogueLite v0.1.2 plugin to run this project.
This is a demonstrative project I'll keep developing.
It's intended to show how the plugin can work, using MetaHuman and Megascans assets!
Being the first project based on the TDRL plugin, I'll keep it simple. I choose a "zombie" setup because the AI development for such kind of game should be pretty easy compared to other game types.