Saltar al contenido

Pregúntale al motor del juego antes de escribir el sistema

Temaspersecución, prevention system, reglas

Cuatro días de bugs de persecución y, mirando hacia atrás, todos eran el mismo error con distinto disfraz. El auto del sospechoso aparecía delante del jugador. Aparecía mirando a una pared. Aparecía dentro de otro vehículo. Se quedaba quieto hasta que el jugador se acercaba, porque nuestra propia lógica de conducción todavía no había arrancado. Se metía en el tráfico y se detenía. Cada uno tuvo su arreglo, y cada arreglo trajo el bug siguiente, porque lo que estábamos reparando era un sistema escrito por nosotros para hacer un trabajo que el juego ya hace.

El juego maneja sus propias persecuciones policiales. Tiene un generador para los vehículos que participan en ellas, la parte que los hace aparecer en el mundo: PreventionSpawnSystem, y la llamada es RequestChaseVehicle. Esa llamada coloca un auto igual que el juego coloca los suyos en una persecución: fuera de pantalla, sobre la red de calles, orientado en la dirección correcta y ya en marcha. Todos los problemas del párrafo anterior dejan de existir, porque ninguno fue nunca un problema para el sistema diseñado para esto.

Ahora el sospechoso sale de esa llamada y recibe un PatrolNearbyStrategyRequest, así que da vueltas por el distrito entre el tráfico normal antes de que llegues. No hay destello de aparición: el auto nunca surge de la nada frente a ti. Para cuando la marca del dispatch cae en tu mapa, el auto lleva un minuto circulando por esas calles.

Corrección, 2 de septiembre. No da vueltas por ningún lado. Esa petición tiene tres campos, y los tres son de colocación: distancia, ángulo y distancia directa mínima. Le dice al motor del juego dónde poner el auto, no qué hacer con él una vez que está ahí. Leí el nombre de la clase en vez de leer la clase. La telemetría lo confirma desde el otro lado: en ciento veintiocho muestras de una misma persecución, el comportamiento de patrulla no se activó ni una vez. Y el jugador lo dijo más claro que cualquier log: el sospechoso se queda ahí sin hacer nada hasta que él llega. El resto del párrafo anterior sigue en pie. La colocación sigue siendo la del propio juego y sigue sin haber destello de aparición. Solo que el auto no lleva un minuto circulando por esas calles. Estuvo estacionado todo ese tiempo.

La regla que salió de esa semana ahora gobierna todo el proyecto: antes de escribir lógica nueva, averigua quién ya lo hace. El motor del juego tiene miles de scripts de profundidad, y casi seguro ya lo hizo antes que tú.