¿Se pueden implementar sistemas de logros más adelante en el desarrollo?

12

Estoy indeciso si quiero implementar esta función en mi juego en ese momento o no. No quiero que el proyecto esté demasiado fuera de control, así que primero me estoy enfocando en la mecánica central.

¿Es esta una característica que es fácil de implementar más tarde, suponiendo que los datos conduzcan todo y almacene todo?

Bryan Harrington
fuente
3
Hace un par de años, porté un juego conocido de DOS a Windows, una de las cosas que me hubiera encantado agregar, si hiciéramos algún cambio en la jugabilidad, habrían sido logros. Entonces, si pudiera agregar logros a un juego de más de 10 años que claramente no está diseñado para eso, diría que se pueden agregar en cualquier lugar. Diablos, este mismo sitio tiene logros ..
Jari Komppa

Respuestas:

19

¿Está preguntando desde la perspectiva de los tecnicismos de implementación o las ramificaciones del diseño? De cualquier manera, la respuesta a su pregunta es "sí".

Desde el punto de vista técnico, en términos generales, solo encuentra los ganchos en su código que responden a sus eventos de logros y coloca su código de seguimiento de estadísticas allí. Es posible que deba agregar algunas cosas nuevas si está rastreando cosas que no son exactamente eventos discretos que ya están sucediendo en el juego (por ejemplo: X cantidad de horas jugadas).

Desde el punto de vista del diseño, bueno, los logros son motivadores extrínsecos y agregarlos realmente no juega demasiado en el ciclo de juego principal, excepto para las personas que quieren buscarlos. Entonces son bastante seguros independientemente.

Tétrada
fuente
Sí, estoy haciendo esto ahora. Fue bastante fácil conectarse shotsFired++a la parte donde se crean nuevas balas, y shotsHit++en la parte donde una bala impacta a otro jugador. Me ayudó rastrear quién disparó qué bala (porque uso la información para rastrear quién consiguió qué matar, etc.)
bobobobo
5

Siempre que su motor de juego esté bien diseñado y use algún tipo de sistema de eventos observables (donde los eventos son generados y escuchados por las partes interesadas), debería ser bastante fácil "conectar" un sistema de logros en un momento posterior (agregando oyentes apropiados). Este tipo de diseño es muy flexible.

Jugo De Moo
fuente
2

Como las personas existentes ya han agregado buenas respuestas, permítanme responder situaciones no cubiertas.

Si está en una posición en la que ha completado la codificación de su juego y ahora comienza a codificar los logros y le resulta muy complejo mantener demasiadas variables y recuentos y eliminarlos en ciertos eventos y cosas por el estilo.

Siempre puede crear una clase (preferiblemente singleton) para recibir todos los eventos. Ahora enumera todos tus logros. Luego, enumere todos los eventos del juego necesarios para realizar un seguimiento. Por ejemplo, mi lista actual se ve así

KILL ENEMY - caminar, balas MUERTE DEL JUGADOR - caer_off, salud ENTER_ROOM, EXIT_ROOM etc.

Esos detalles adicionales como caminar, las balas pueden ser parámetros. Ahora tenga una función llamada fireEvent en esa clase de seguimiento de Logro. Busque todos los lugares en el código donde necesita disparar eventos y llamar a esa función. Ahora haga el resto del trabajo sucio en la clase Logros. Esta es la forma más segura de no alterar el código existente y los logros del código. Funcionó bastante rápido para mí.

Rajavanya Subramaniyan
fuente
Esa es una muy buena solución para la implementación posterior al desarrollo. Lo tendré en cuenta porque todavía no estoy seguro de si quiero implementarlo. Podría hacerlo en una fase posterior porque no quiero que el alcance de mi proyecto se salga de control.
Bryan Harrington