Skip links

Que diferencias hay en algunas variables y funciones entre un juego Offline y uno Online.

Hola, bienvenidos/As al Curso de desarrollo de videojuegos de Gamestrilla. Esta clase tratará de la replicación para multijugador en C++ y Bluprints para Unreal Engine 5.


Vamos a ver que diferencias hay en algunas variables y funciones entre un juego Offline y uno Online. La diferencia no es en como llamemos a esas variables y funciones ni donde las ejecutemos, la diferencia es la replicación para sincronizar datos, acciones y otras cosas entre jugadores. La replicación no es necesaria para juegos de una persona modo campaña.


Una cosa a tener en cuenta al programar un juego multijugador, es la seguridad, debemos pensar que nuestro juego será vulnerable si es alojado por usuarios. Una forma de asegurarnos e impedir que variarles y acciones importantes en el juego no puedan ser modificadas por los jugadores, es que solo se ejecuten en el servidor, es decir, que el que tenga la última palabra para modificar algo sea el servidor, no el cliente.

Veamos un ejemplo del porqué debemos tener control de las acciones en multijugador. Imagínate que la partida es modo competitivo y los usuarios comienzan con las mismas armas y deben ir capturando zonas para recibir recursos, ahora el usuario que aloja esa partida utiliza cualquier programa para alterar las variables de vida, armas, munición, velocidad, etc. Lo que no nos gustaría es que dicho usuario pudiera alterar el curso de la partida jugando con ventaja sobre los demás usuarios, el usuario ganaría porque está haciendo trampas al jugar con las reglas modificadas en cuanto a los demás usuarios. Esto hace que los demás usuarios sientan una mala experiencia y culpen al videojuego y a sus desarrolladores. Muchas veces existe una tasa de abandono del juego muy elevada por culpa de estos usuarios que no respetan la reglas.

Bueno, veamos como podemos minimizar este tipo de problemas. Imaginemos que la partida empieza con el mismo número de balas por usuario, para que esa variable que la llamaremos MaxButllets o como queráis, le diremos que solo tenga autoridad el servidor para ajustarla, deberemos realizar todos los cambio para esa variable en el servidor no en el cliente. ¿Cómo? Imaginemos que un usuario recoge un cargador de balas, ese cargador tiene que sumar la cantidad de balas a la variable MaxButllets. ¿Cómo deberíamos ejecutar esta operación para que sea el servidor quien únicamente tenga el permiso para añadir esas balas a la variable MaxButllets? Para eso todas las acciones deberán ser llamadas en el servidor, no en el cliente. Veamos un ejemplo, creamos una función en el archivo cargador que la llamaremos AddButlletstoMaxButtlletsPlayer , esa función debe ser replicada en el servidor, ahora deberemos asociar a esa función todas las acciones y variables que deben ser ajustadas por esa función. Debemos tener en cuenta que las variables que vayamos a ajustar en el servidor, también deben tener la opción de replicada activada.

Ahora que sabemos esto, beberíamos de implementarlo en todas las áreas del código que deben ser controladas únicamente por el servidor.


En el próximo video, veremos que son las variables repnotify.

Leave a comment

Home
Account
Cart
Search
Explore
Drag