‫Hola y bienvenido.
‫En esta lección, vamos a crear un modo de juego KML, que será solo uno de los
‫posibles modos de juego que podemos crear debido a que tenemos un método de muerte virtual que se puede invocar en cualquiera de los
‫modos de juego. modos que queremos.
‫Profundicemos y veamos cómo vamos a implementar este método virtual.
‫Así que nos gustaría que nuestro juego pudiera terminar.
‫¿Qué significa que un juego termine?
‫Significa que entramos en algún tipo de estado en el que tenemos el uno o lo hemos perdido.
‫Informamos al jugador usando alguna interfaz de usuario.
‫Les damos la opción de reiniciar y jugar de nuevo, algo por el estilo.
‫Ahora, las clases involucradas con esto generalmente son un modo de juego.
‫El modo de juego es responsable de decidir las reglas del juego, como quién ganó y quién perdió.
‫Y para eso, vamos a necesitar saber quién está siendo asesinado.
‫Así que vamos a tener este método virtual aquí llamado peón muerto, que será llamado como peón
‫tirador cuando muera.
‫Sea o no el A. YO. o es el jugador el que está muriendo.
‫Y además, quiero agregar una pequeña complicación aquí, y es que tendrá diferentes modos de juego
‫derivados de nuestro modo principal de juego de disparos.
‫Implementarán ese modo de juego.
‫Eso es lo que significa la flecha aquí.
‫A menudo es un poco contradictorio la forma en que va la flecha, pero mátalos a todos.
‫El modo de juego hereda del modo de juego de disparos y anula el peón muerto para contar y decidir de manera
‫diferente sobre las reglas del juego.
‫Es por eso que quiero poner un método de muerte de peón virtual en el modo de juego de disparos principal
‫y luego implementarlo o anularlo nuevamente en el modo de juego matar a todos, que será el modo de juego que
‫estamos implementando para nosotros.
‫Y puedes elegir hacer diferentes modos de juego en los que tal vez solo quieras matar a una cierta cantidad
‫de enemigos en el nivel en lugar de a todos o algo por el estilo.
‫Tal vez capturar la bandera, algo diferente.
‫Pero básicamente lo que sucederá es que el tirador... encontrará el modo de juego que tiene el
‫tipo de modo de juego de disparos y lo llamará muerto.
‫Y luego, dependiendo de la implementación que realmente esté allí, pasará a la implementación a
‫través de la anulación.
‫Ahora, otra complicación aquí es que nuestra lógica de interfaz de usuario y la lógica de reinicio es realmente algo que
‫debería suceder en la interfaz de usuario del controlador del jugador, siendo generalmente competencia del jugador en lugar de algo global como el
‫modo de juego.
‫Esto es especialmente cierto en los juegos multijugador porque el modo de juego en realidad no existe en la máquina
‫del jugador, solo existe en el servidor.
‫Entonces, cualquier cosa de la interfaz de usuario debería estar sucediendo en el controlador del reproductor.
‫Esa es una complicación de la que no debemos preocuparnos porque este no
‫es un juego multijugador, pero aún así es bueno usar las clases para lo que se espera que se usen en Unreal.
‫Entonces, el controlador de jugador, la clase de controlador de jugador raíz real tiene un método virtual llamado juego que
‫ha finalizado específicamente para este propósito, de modo que el modo de juego puede llamar a este método y podemos implementarlo en nuestro propio
‫controlador de juego de disparos para hacer UI, reiniciar todo ese tipo de cosas.
‫Pero necesitaremos llamarlo desde nuestro modo de juego cuando hayamos decidido que el juego ha terminado.
‫Así que llamaremos que el juego virtual ha terminado en el controlador del jugador raíz y luego, debido a que el
‫controlador del jugador raíz es en realidad un jugador de disparos, un controlador terminará desviándose y llamando.
‫Este juego ha terminado.
‫Así que parece una ruta tortuosa que vamos a llamar desde nuestro peón tirador a través del modo de juego tirador hasta
‫el modo de juego matarlos a todos al controlador del jugador al controlador del jugador tirador.
‫Pero esto nos permite mucha flexibilidad en términos de decir, bueno, podemos mezclar y combinar diferentes controladores de juego que
‫mostrarán la interfaz de usuario de diferentes maneras, en diferentes niveles.
‫Podemos mezclar y combinar diferentes modos de juego que funcionarán de diferentes maneras, y esa es la razón
‫por la que lo diseñé de esta manera.
‫Es un poco exagerado para nuestro proyecto, pero te muestra cómo esto podría extenderse a otros proyectos con
‫modos de capturar el juego y diferentes tipos de controlador de jugador.
‫Así que vamos a intentar implementarlo.
‫Vamos a ir y antes que nada, encontrar un modo de juego de ruta.
‫Ya hay uno creado porque comencé desde un proyecto de C++.
‫Tenemos esta base de modo de juego de disparos simple y lo que quiero hacer aquí
‫es crear una función pública que va a regresar vacía y va a ser... asesinado y vamos a tener que pasar en el...
‫que fue asesinado aquí.
‫Así que va a ser una... estrella llamada... muerta así.
‫Y luego, al principio, vamos a hacer de esto un método virtual y vamos a
‫seguir adelante y crear una implementación básica que esencialmente no hace nada aquí.
‫Luego vamos a crear una subclase.
‫Entonces, la nueva clase de C ++, va a mostrar todas las clases y vamos a buscar la base del
‫modo de juego shooter simple shooter como nuestra clase base y vamos a llamar a esto el modo de juego kill em all así y seguir adelante
‫y crear esa clase.
‫Luego, cuando se haya compilado, quiero cambiar por un segundo e ir a nuestro personaje de tirador.
‫CP Y puedes ver aquí que tenemos nuestro muerto en el método de recibir daño.
‫Ahora, si esto está muerto, lo que quiero hacer es apoderarme de nuestro modo de juego y llamar a los
‫muertos.
‫Entonces, la forma en que hacemos esto es que comenzamos llamando para obtener el mundo para obtener el modo de juego.
‫Entonces es salir del modo de juego.
‫Y luego lo que queremos hacer es que este modo de juego sea del tipo correcto, que es el simple, el raíz,
‫el modo de juego de disparos simple que nos permite luego cambiar este personaje, usarlo con diferentes modos de juego,
‫como capturar los modos de juego de bandera.
‫Entonces, la forma en que podemos hacer esto, podemos usar los paréntesis angulares en el modo obtener o jugar aquí.
‫Y vamos a hacer un modo de juego de disparos simple y vamos a necesitar incluir eso en la parte superior.
‫Por lo tanto, incluya la base del modo de juego de disparos simple, por lo que no entendí bien el nombre completo de la clase.
‫Pienso.
‫Así que va a ser una base de modo de juego de disparo simple.
‫Eso es lo que estamos tratando de obtener y podemos continuar y almacenarlo en un puntero variable, llamémoslo el modo
‫de juego.
‫Y luego lo que queremos hacer es en esta nueva línea, probablemente queramos comprobar que tenemos esto y que no es
‫un puntero nulo.
‫Entonces, el modo de juego no es igual a un puntero nulo.
‫Y luego, si no es igual a todos los puntos de ahí es donde queremos llamar al modo de juego peón de
‫flecha muerto y el peón muerto es así?
‫Así que ahora el modo de juego es consciente de que se ha matado a un peón.
‫Pequeño mini desafío para que anules el modo de juego matarlos a todos para que puedas.
‫Cierra la sesión cuando se elimine el -- y configúralo como el modo de juego predeterminado en tu mapa.
‫Bueno.
‫Así que espero que hayas probado ese pequeño mini desafío.
‫Vamos a seguir adelante e implementar.
‫Así que voy a hacer esto copiando la sección pública de nuestra base de modo de juego de disparos simple, y es difícil hacer
‫un seguimiento de todas estas cosas.
‫Luego vamos a pasar a nuestra base de modo de juego matarlos a todos, que hereda de ella.
‫Y vamos a pegar el método virtual y vamos a agregar la palabra clave anular para asegurarnos de
‫que estamos anulando este método correctamente.
‫Luego voy a crear una implementación en C++ para nuestra base de modo de juego KML.
‫Aquí es donde deberíamos recibir ese mensaje de registro.
‫Y solo para tener mucho cuidado, sabemos que no hay nada en la implementación.
‫Pero nunca se sabe.
‫Las cosas podrían cambiar más adelante y podríamos ser mordidos en la bomba.
‫Así que queremos hacer un peón muerto.
‫Súper - asesinado con el - asesinado.
‫Tiene sentido.
‫Y luego queremos hacer un diálogo aquí básicamente diciendo que un... fue asesinado.
‫Y podemos ver si eso funciona yendo a Unreal y compilando, luego yendo al elemento de planos en
‫la barra de herramientas y seleccionando en la configuración del proyecto.
‫El modo de juego predeterminado que queremos ser, si seleccionamos el modo de juego, la clase base, queremos que sea
‫el modo de juego base matarlos a todos, básicamente seguir adelante y hacerlo.
‫De hecho, eso no es exactamente lo que queremos hacer si vamos y seleccionamos.
‫Queríamos que en realidad fuera un modelo secundario de eso y ya tenemos un modelo secundario que tiene muchas
‫cosas configuradas.
‫Así que hagamos un trabajo de crianza allí.
‫Iremos a las raíces, encontraremos el modo de juego de disparos BP, que tenemos aquí.
‫Vamos a cambiar el nombre de este modo de juego BP kill all y luego podemos abrirlo, acoplar la ventana, abrir el editor
‫de planos completo, ir a la configuración de la clase y cambiar el padre al modo de juego KML, básicamente
‫C++.
‫Y de esa manera deberíamos estar ejecutando el código correcto si vamos a nuestro mensaje para
‫generar el registro y presionamos reproducir y luego matamos a un personaje, tenemos un problema que parece no tener la configuración correcta,
‫así que si volvemos a los valores predeterminados de clase y cambie la clase predeterminada para que sea el personaje tirador de BP, eso
‫debería ser correcto.
‫Guarde y compile en caso de que se haya equivocado.
‫Y luego verifique mis planos desplegables aquí.
‫Se ha seleccionado el juego KML, el de C++.
‫Así que en realidad queremos elegir el modelo aquí y seguir adelante y presionar reproducir.
‫Ahora tenemos nuestro peón.
‫Podemos seguir adelante y matar a este tipo y puedes ver que un peón fue asesinado.
‫¿Está Prince en el mensaje de registro?
‫Eso está funcionando fantásticamente.
‫Ahora, en la siguiente sección, veremos la segunda parte de esto, que
‫dice que el juego ha terminado cuando en realidad queremos terminar el juego y poder reiniciarlo a partir de ahí.
‫Así que te veré en esa conferencia.