Skip to content

Releases: Klian326/-Public-TopDownRogueLite

Update - v0.3.0

26 Jan 01:10
1190556
Compare
Choose a tag to compare

TDRL_LineOfSightComponent

ListenServer visibility fix

Fixed the issue causing the listen server to hide other players character
image

TDRL_NPCSpawn

SpawnOnBegin

New parameter "bSpawnOnBegin", which will force spawn OnBeginPlay
image

SpawnNPC and DespawnNPC exposed to BPs

image
image

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!

image

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).

image

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

image

image


(New) ZPlane Visual Debug

image

image

image


Laser for firearms (Blueprints)

New example of lasers for firearms, using blueprints.

image

image


Cursor Indicator (Blueprints)

New example of a cursor indicator, using blueprints.

image

image


Shooting line

Demonstrative shooting line to test the new aim system.

image

Update - v0.2.2

31 Aug 21:57
fed1fbf
Compare
Choose a tag to compare

Features

- Fixed "Flag Delivery" example for multiplayer use

image

- Direct use of "Control Rotation" restored, you can now select "WorldRotation" as Control Rotation Type

image
image

- 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.

image

You can easily locate them by searching for "Property Access"

image


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)

image

- 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

19 May 00:17
fed1fbf
Compare
Choose a tag to compare

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

image

EControlRotationType::TargetLocation crash fixed

3. bUseControllerRotationYaw now affects the character's rotation

image

4. Hands IK fix

Before:
image

After:
image
image2

Update - v0.1.4

08 May 20:46
fed1fbf
Compare
Choose a tag to compare

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!

image

image

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)!

image

image

Update - v0.1.3

22 Apr 01:50
fed1fbf
Compare
Choose a tag to compare

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.

image

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

image

2. Two new utility functions

image

GetActorsOfClassInRadiusUnderMouse

This function will trace a spherical area under the player's cursor and will return a list of actors overlapping that area.

image

GetClosestActorOfClassInRadiusUnderMouse

This function will trace a spherical area under the player's cursor and will return the closer actor.

image

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

image

4. Aim-Lock target (Blueprint Example)

A blueprint function example involving new node functions

image


LockedTargetShortDemo0001-0507.mp4

Update - v0.1.2

06 Apr 22:26
fed1fbf
Compare
Choose a tag to compare

1. Editor Module

A new Editor Module has been introduced, it will include quality of life tools to easily build your game.

image

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.

image

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.

image

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.

image

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.

image

6. Correct camera spawn rotation (Blueprint)

Now the character's camera will be correctly oriented on spawn, depending on its spawn rotation

image
image

7. Delegates for Items

image

  • 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"

image

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!
image

10. Projectile effects

Niagara trail effects exposed for parameters customizations

image

Projectile sound effect and Muzzle VFX

image

11. VFXs renamed

image

Update - v0.2.5

12 Dec 23:21
fed1fbf
Compare
Choose a tag to compare
  • 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

06 Jul 01:45
fed1fbf
Compare
Choose a tag to compare

v0.2.0 is now pending review!

image

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

06 Jul 02:00
fed1fbf
Compare
Choose a tag to compare

image

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

08 Apr 22:44
fed1fbf
Compare
Choose a tag to compare
TDRL Zombies 2 Pre-release
Pre-release

You'll need TopDownRogueLite v0.1.2 plugin to run this project.

image

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.