Efectos adversos de la IA en 16 bits.

Ando a la caza de conocimiento básico y resolver un par de dudas referentes a los recursos que utilizaban las consolas de la cuarta generación a la hora de manejar una o varias IA.

Me gustaría saber qué limitaba el uso de una IA en una consola como PCE, MD o SNES.

Estas consolas podrían sufrir ralentizaciones debido a un número excesivo de pequeñas o grandes IA durante un juego? Como los enemigos de un beat em up o los disparos "seguidores" de un shot em up.

Qué recurso sacrificaban esas consolas para manejar esas IAs?
Es más fácil para un procesador manejar físicas básicas y posiciones precalculadas que el movimiento variable de una IA?

No veo demasiada información por ningún foro respecto a este tema y si alguien sabe la respuesta pues es de agradecer, sobretodo si hace una explicación un poco para novatos.
Los algoritmos de IA pueden ir desde simples reglas básicas, pasando por árboles de decisiones, redes neuronales (evidentemente no en 16 bits), etc...

Todos tienen un punto en común, necesitan ciclos de calculo y RAM, algo que no sobraba en su día. Ese era el principal escollo.
Atención paja mental sin conocer nada de programación de videojuegos (sí de programación, cosa a la que me dedico desde hace más de 15 años)

Pienso que básicamente, si los cálculos que necesitas hacer para mover los elementos de pantalla, llevan más del tiempo máximo para el frame (o el número de frames "usual" en que se mueve el objeto) el juego no podrá mover los elementos, por lo que veremos "las ralentizaciones". Es decir, pasan los frames y la CPU está ocupada intentando mover todo, sin ser capaz, por lo que cada elemento se mueve menos veces de las "normales" y por tanto, van mas despacio.

El tema de la memoria entiendo que en todo sistema cerrado se precalcula, es decir, se sabe de antemano cuantos elementos máximos caben en la memoria y no se "instancian" más, y si se hiciese, se sobrescribiría uno existente. En estos sistemas de 16 bits, se trabajaba con direcciones de memoria específicas, pues en general se programaba en ensamblador, que yo sepa.

Cuanto más compleja quieras hacer la IA, más ciclos de reloj necesitarás, y por tanto menos IA's a la vez podrás calcular. En un contexto de 16 bits, yo vería una bala que va recta como una ia, tienes que calcular donde se mueve cada frame, aunque sea en línea recta, en un sistema de 8 o 16 bits, no es baladí, y no puedes mover infinitas balas (aunque sí "muchas", claro) incluso en línea recta. Si tiene que hacer sinusoidales, etc, ya empiezas a necesitar más cálculos y/o memoria con precalculos, lo que limita el número máximo de balas.

Si le sumas que, pongamos como ejemoplo, la bala "explota" al acercarse al jugador, además tienes que comprobar si cada bala está cerca o no, y pese a que seas muy ingenioso al hacerlo, no va a ser gratis, limitando de nuevo el número máximo de balas antes de que la cpu no pueda calcular todo antes de pintar el siguiente frame.

Así lo entiendo yo.

Saludos
Un juego es un bucle. En cada vuelta del bucle se procesa todo: detección de los mandos, detección de colisiones, IA, dibujado en pantalla, sonido, actualización de la energía, cálculo de las nuevas posiciones de los objetos en movimiento, físicas, etc, etc.

Si quieres un juego a 60 FPS, esto significa que una vuelta del bucle puede tardar como máximo 0,016 segundos. Así que dependiendo de los recursos que tengas, en ese periodo de tiempo podrás hacer más o menos cosas. Intentar poner una IA compleja en sistemas antiguos era imposible por la velocidad de la CPU.

Una CPU de 7 Mhz (creo que era la velocidad de la MegaDrive) puede ejecutar una instrucción cada 0,00000017 segundos, es decir, que podía ejecutar unas 980.000 operaciones en 0,016 segundos, si no me he equivocado con los números. Pero la idea se entiende, más o menos.

Por eso no es tan fácil pasar los juegos de 30 a 60 FPS, dado que estás dividiendo por 2 el tiempo que dispones para procesar todo el juego en cada vuelta del bucle.
Bad Apple escribió:Qué recurso sacrificaban esas consolas para manejar esas IAs?

¿Se sacrificaba algo? Me cuesta imaginarlo, primero porque en 16 bits no me viene a la cabeza demasiada cosa que te haga pensar en un derroche espectacular de IA, y luego porque comercialmente tampoco creo que tuviera mucho sentido hacerlo.

Bad Apple escribió:Es más fácil para un procesador manejar físicas básicas y posiciones precalculadas que el movimiento variable de una IA?

Disponer de datos precalculados ahorra el coste computacional de hacer esos cálculos, no tiene mucho misterio (y en contrapartida aumentan y pueden aumentar otros costes, pero para el caso no sería algo a destacar). Para un procesador será más fácil o irrelevante, depende del coste de la operación a ahorrar.

Da igual si el algoritmo trata de físicas o IA, el tema es su complejidad, el coste será mayor o menor según los parámetros a considerar y operaciones a realizar. "El movimiento variable de una IA" no dice nada, falta concretar qué supone eso, lo que haya detrás puede ser tan simple como el mecanismo de un chupete, o no.
Una cosa que siempre me causo curiosidad del Videojuego llamado Vida, es que cuando llueve los NPC malfuncionan siempre,imagino que ningun NPC sabra por que verdad?,miles y miles de años y no sale un parche que lo repare.
bas escribió:"El movimiento variable de una IA" no dice nada, falta concretar qué supone eso, lo que haya detrás puede ser tan simple como el mecanismo de un chupete, o no.

Siento no haberme expresado bien con la poca idea que tenía en la cabeza.

Imaginemos dos escenas:
En la primera, manejamos una nave que ha de esquivar unos disparos rectos con unas posiciones precalculadas, esto es, independientemente de donde nos movamos, ellas seguirán un curso preestablecido.

En la segunda escena, dichas balas se pondrán a seguir a la nave que manejamos tras acercarse a X distancia de ella. Empieza un primer proyectil a seguir a nuestra nave, pero el segundo proyectil que vaya a seguir a la nave, si esta está siendo perseguida por otro proyectil intentará rodear la nave por el lado contrario al que le sigue el primer proyectil.

La segunda escena tendría mayores dificultades para ser procesada en pantalla en comparación con la primera escena?
Eso podría ralentizar más una u otra escena?

(Gracias por todas las respuestas)
Considerando los limites de sprites simultaneos que podian mostrar, tampoco es como que pudiesen manejar muchas ia, ni que tuvieran la necesidad de manejar mas de unas cuantas a la vez
Piensa que en la época las IA de los juegos, la inmensa mayoría de veces, era muy simples y normalmente eran simples reglas o patrones. Pero hay juegos, como los de ajedrez, que ahí se nota el cálculo de la IA. O los juegos de Shougi de SNES, que muchos de ellos necesitaron del SA-1 para que fueran competentes.
CristianCG escribió:Piensa que en la época las IA de los juegos, la inmensa mayoría de veces, era muy simples y normalmente eran simples reglas o patrones. Pero hay juegos, como los de ajedrez, que ahí se nota el cálculo de la IA. O los juegos de Shougi de SNES, que muchos de ellos necesitaron del SA-1 para que fueran competentes.


Uno necesitó la cpu de la game boy advanced para poder gestionar la IA.

La cpu de la game boy advanced.
9 respuestas