Unreal Engine 5 sistema de daño (Damage system) introducción

Unreal Engine tiene un sistema de daño integrado que permite aplicar y recibir daño en videojuegos tanto multijugador como locales. Este sistema se basa en eventos que se ejecutan en el servidor y que se comunican con cada cliente para afectar a los actores del juego, como los personajes, enemigos, players, vehículos etc
Cuando creamos un proyecto que no es multijugador el servidor y el cliente son el mismo por lo que el sistema de daño funciona tanto multijugador como solo.
Con la idea de facilitar la tarea de dañar todos los actores en Unreal Engine tienen definido un boolean llamado Can be damaged que determina si el actor puede ser dañado o no.
Esta implementación esta en la clase base Actor , así que todos los que heredan de ella poseen esta propiedad*.


Hacer y recibir daño
Usarlo es muy sencillo solo requiere de dos agentes, uno va a ser el que cause el daño y otro es el que lo recibe.
Por ejemplo vamos a crear una zona de fuego.
Podemos crear un collision que detecte quien entra en la zona para después aplicarle daño.
El evento del servidor Apply Damage es una función estática que se puede llamar desde cualquier blueprint

Por otro lado implementaremos que sucede cuando se recibe el daño, por ejemplo en el Player Character llamamos al evento AnyDamage el cual se dispara cuando recibe un daño, el player character tiene marcado Can be damage en true por el constructor del Character


Recibiendo daño

Con Event AnyDamage se declara que va a pasar cuando se reciba el daño, cualquier daño, en este caso va a ser el de la caja, podremos realizar mas comprobaciones para controlar quien generó el daño.

El resultado es que si el jugador entra en el área del daño llama a la función Apply Damage del servidor y todos los que tengan Event AnyDamage reciben daño

No confundir daño con live span
Live span esta pensado para crear una cuenta atrás, un tiempo de vida de un objeto, tras el cual se destruye solo, es independiente del daño.

Resumen:

Se necesita un elemento que haga daño Apply Damage, otro que lo reciba AnyDamage y la capacidad de recibir daño activada, Can be damaged true.


*Sobre la herencia del daño

La modernización de la programación hace que hoy día sea mas correcto tener un componente separado para evaluar el daño o implementar un interface que directamente hacer que TODOS los actores sean susceptibles de ser dañados, cuando muchos de ellos jamás usaran esa propiedad, sin embargo gana en facilidad y rapidez al tener ya el sistema implementado.

Ad debug output

The ad is displayed on the page

current post: Unreal Engine 5 sistema de daño (Damage system) introducción, ID: 3400

Ad: Anuncio2 (2573)
Placement: After Content 2 (after-content_2)

Display Conditions
general conditions
Adwp_the_query
term_id0
taxonomy0
is_main_query11
is_rest_api0
page01
numpages01
is_archive1
is_search1
is_home1
is_4041
is_attachment1
is_singular11
is_front_page1
is_feed1




Find solutions in the manual

Leave a Reply

Your email address will not be published. Required fields are marked *