Foros - Stratos

Proyectos => Jad Engine => Mensaje iniciado por: BeRSeRKeR en 10 de Mayo de 2005, 07:17:14 PM

Título: Steering Behaviors
Publicado por: BeRSeRKeR en 10 de Mayo de 2005, 07:17:14 PM
 El otro día estuve leyendo el libro que se recomendó recientemente sobre IA: Programming Game AI By Example y me llamó la atención el capítulo sobre "Steering Behaviors" así que decidí ir implementando las distintas técnicas que se mencionan en el libro. Aún me quedan unas cuantas (sobre todo las que se refieren al comportamiento de grupos de entidades) pero por ejemplo ya tengo medio implementado el que se encarga de evitar obstáculos. Aquí os dejo un video.

Descargar

Como véis tiene algunos fallos y además no tiene en cuenta la colisión entre entidades. Eso será cuando implemente los comportamientos en grupo.

Saludos.
Título: Steering Behaviors
Publicado por: nsL en 10 de Mayo de 2005, 10:55:19 PM
 joer, la verdad que quitando un par de momentos que tokan lo azul, las demas veces lo esquivan debuti.
Ese libro parece bueno, habra que echarle un ojo ( a ver si lo hay en la biblio de la uni) :P
Título: Steering Behaviors
Publicado por: Warchief en 10 de Mayo de 2005, 11:08:59 PM
 Mola el video. Sigue trabajando.

El libro es bastante bueno sí. A mí me gustó que no solo explica temas interesantes, sino que lo hace con pequeños toques de humor y de forma muy sencilla. Además que diseño y código son de calidad.
Título: Steering Behaviors
Publicado por: BeRSeRKeR en 11 de Mayo de 2005, 04:51:02 PM
 He mejorado algo el sistema de detección de obstáculos. Antes utilizaba 5 sensores con un alcance constante por lo que cuando la velocidad de la entidad era demasiado alta, no se detectaba la colisión y traspasaban algunos obstáculos. Ahora el alcance de los sensores depende de la velocidad actual de la entidad con lo que aparentemente ha mejorado bastante. He creado un pequeño video (~4MB) en el que se muestran 200 entidades que tienen como objetivo alcanzar la cruz roja que hay en la parte inferior de la pantalla. Pero por el camino, además de los obstáculos, se encontrarán con dos nuevas cruces rojas (en la parte central de la pantalla y un poco a la izquierda) de las que deben huir. Estas cruces tienen un radio de alcance. Si la entidad entra en ese radio de alcance, variará su ruta para poder huir, de lo contrario seguirá su marcha normalmente.

También he hecho que si las entidades superan unos límites, se traslade al extremo opuesto, de esta forma puedo mantener el flujo de las entidades de forma continua.

Descargar video

Como curiosidad, hay 200 naves y cada una lanza 5 rayos (los sensores) por frame. Cada uno de estos rayos se le pasa a Newton (el motor de física) para que detecte si ha habido o no colisión con el entorno. De forma que se lanzan 1000 rayos por frame y teniendo en cuenta que la aplicación va a unos 60-70 frames por segundo, tenemos que se lanzan 60.000-70.000 rayos por segundo.

Lo siguiente supongo que será empezar con el comportamiento en grupo de forma que, por ejemplo, podamos conseguir formaciones. De esta forma podríamos tener una manada de bichos tipo ESDL o por ejemplo simular el comportamiento de los centinelas cuando entran en masa en Zion (Matrix Revolutions). :D

Pero bueno, ya veremos cuándo tengo eso terminado porque tengo otras cosas que hacer. :D

Saludos.