Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Menu

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menu

Mensajes - plugin

#46
General Programadores / Path-Finding en aventuras gráficas
01 de Enero de 1970, 01:00:00 AM
                                Bueno, pues me respondo a mi mismo, que ya he dado con la solución. Por si os puede valer lo he solucionado de la siguiente manera: al tener el escenario dividido en triángulos puedo utilizar un simple algoritmo de back-tracking (u otros mas complejos como el A*, aunque no hace falta) para detectar cual será la secuencia de triángulos que tengo que atravesar para llegar al destino. Pueden darse dos casos:
a) Que pueda ir desde el origen al destino en linea recta y SIEMPRE pasando por triángulos -> En ese caso el personaje lo muevo directamente sin calcular ninguna ruta.
B) El personaje no puede ir directamente -> luego se ha de seguir la secuencia de triangulos devuelta por el algoritmo. Ahora bien, el problema me venia de que no sabia por donde tirar dentro de los triangulos. Lo que he hecho al final es ir por las aristas que forman "los vertices comunes" a cada 2 triangulos adyacentes. Puede darse el caso de que 2 triangulos tengan 2 vertices comunes, en ese caso eligo el vertice que hace que la ruta sea mas corta...

Pues nada, que ya lo he resuelto, por si le puede valer a alguien. Hay que decir que el personaje se mueve con bastante coherencia; aunque claro, siempre es "mejorable"

Saludos
--plugin                                
#47
General Programadores / Path-Finding en aventuras gráficas
01 de Enero de 1970, 01:00:00 AM
                                Con cuadrados no me parece buena idea porque es menos preciso (a no ser que fueran paralelepipedos y tendría el mismo problema). Con triángulos me puedo ajustar a la perfección al decorado (no tienen porque ser equiláteros). Lo tengo ya casi listo, lo que hago para bordear un objeto es ir por los vértices de los triángulos que lo rodean. Funciona a la perfección, excepto en algunas ocasiones que estoy viendo como solucionarlo.

Saludos
--plugin                                
#48
General Programadores / Path-Finding en aventuras gráficas
01 de Enero de 1970, 01:00:00 AM
                                Holap de nuevo. Estoy haciendo una pequeña aventura gráfica y me trae loco el movimiento (correcto) de los personajes. Actualmente el sistema de rutas/busqueda de caminos lo resuelvo dividiendo la zona por la que se puede andar en triángulos. Despues calculo los triangulos por los que hay que pasar para llegar al destino. Con esto ya tengo asegurado de que el personaje llega a su destino rodeando cualquier objeto. Pero ahora me viene el problema: yo se los triángulos por los que he de moverme pero ¿dentro de los triangulos por donde me muevo exactamente para que el movimiento sea real?. Es decir, ahora mismo funciona todo bien, pero el personaje al moverse parece que da como rodeos y no anda en linea recta (ya que va de triangulo en triangulo).

He estado leyendo info de path-finding (incluso un post que puso aqui Emotion) pero no consigo aclararme como adaptar eso para una aventura gráfica (ademas que esos algoritmos son algo complejos). En un juego de rol en el que el mapa está dividido en tiles es mas o menos fácil pero ¿como se hace en una aventura gráfica, en la que el escenario no es divisible en partes iguales? ¿Conoceis enlaces donde pueda encontrar más info acerca de esto?

Thanks again. Saludos
--plugin                                
#49
General Programadores / Va de frames por segundo
01 de Enero de 1970, 01:00:00 AM
                                jejeje. Pues nada.... Paciencia tendré. Aunque lo que he implementado ya furula a la perfección (o al menos visualmente no aprecio ningún fallo). Pero el saber no está de más, así que nada, lo que tu dices, tendré paciencia....

Saludos
--plugin                                
#50
General Programadores / Va de frames por segundo
01 de Enero de 1970, 01:00:00 AM
                                Perfecto, el articulo que comentó Frodrig resuelve todas mis dudas (o al menos funciona bastante bien, jeje). La idea es bastante buena y soluciona los problemas que yo comentaba, asegurando un framerate medio constante. Así que animo a todos los que os interese este tema y no lo hayais leido, que lo hagais (idea simple pero funciona bien).

Pues nada, perfecto. Todo solucionado. Muchiiiisimas gracias por las respuestas (todavía estoy intrigado por la solución que comentaba Emotion iba a poner). Saludos
-plugin                                
#51
General Programadores / Va de frames por segundo
01 de Enero de 1970, 01:00:00 AM
                                Pues nada. Algo me he aclarado. Voy a darle vueltas a la cabeza a ver que saco en conclusión. Con respecto al contados, SI. Si ya nos ponemos a hacerlo exacto habra que utilizar el contador de alta precision en vez de timeGetTime() o algo así.

Bueno, a ver que hago al final.... Ya veremos a ver que nos cuenta Emotion, y la conclusion que saco de todo esto.

Gracias por toas las respuesta (joe y es mi primer post!!) . Thankx
--plugin                                
#52
General Programadores / Va de frames por segundo
01 de Enero de 1970, 01:00:00 AM
                                [Contestando a NeLo]
Joder, que rápidez con las respuestas, jeje. Si, te explicas bien pero en el cambio de sprites yo sigo viendo el problema. Si hago lo que dices (y es lo que hago) puede ser que no se anime EXACTAMENTE los aprites. Verás, a ver si me explico:
- Supongamos que pinte el ultimo sprite en un tiempo X. Entonces el siguiente frame ha de pintarse en (por ejemplo) X+15ms
- Cuando voy a pintar de nuevo el frame pregunto ¿ha pasado ya el tiempo necesario? Entonces, si por ejemplo vamos por el tiempo X+14 pues la respuesta es NO, con lo que no se actualiza el frame.
- A continuacion se refresca la pantalla, que tarda (otra suposicion) 5 ms.
- A la siguiente vez pregunto ¿ha pasado ya el tiempo para cambiar de frame? La respuesta es SI. Pero claro, ya vamos por el tiempo X+14+5=X+19. Con lo que la animacion no es EXACTA (bueno, es que soy mu quisquilloso, jeje)

Pudiera ser que pasando de esperar al refresco ganara velocidad y el desfase fuera mínimo, no se... Gracias de nuevo
--plugin                                
#53
General Programadores / Va de frames por segundo
01 de Enero de 1970, 01:00:00 AM
                                Correcto. Con lo del desplazamiento estoy de acuerdo. Pero no tanto con el cambio de los sprites. Es decir (a ver si me explico), si baja la velocidad es posible que se pierdan frames y a lo mejor hay suficiente velocidad para mostrarlos todos. Supongamos una animacion a 25 FPS y que en ese ordenador el refresco de la pantalla es 60 Hz (FPS). Asi que la animacion podría actualizarse cada 1/25+1/60 segundos, con lo que se visualizaria a 17 FPS (en el peor de los casos). No se, a lo mejor me estoy haciendo un lio.
Yo ahora mismo el problema que tu solucionas con x=x+Y*timming yo lo hago así:
- Calculo posicion personaje
- ¿Ha pasado el tiempo necesario para actualizar posicion?
- SI -> Actualizo posicion

Claro está que si el ordenador es muy lento pues con este método la nimacion NO saltaría frames e iria muy lenta. Por otro lado es para animar un personaje (Que tampoco necesito mucha velocidad). Por eso comente lo de si se solía hacer en varios procesos. Puedo implementar uno que se dedique a actualizar posiciones y otro que refresque cada cierto tiempo. Mi idea es aprovechar de alguna manera el tiempo que se tarda en dibujar la pantalla.

Pos bueno, muchas gracias por la respuesta. Saludos!!
--plugin                                
#54
General Programadores / Va de frames por segundo
01 de Enero de 1970, 01:00:00 AM
                                Antes de nada hola a todos. Tengo una pequeña pregunta que ha de ser fácil pero no paro de darle vueltas y no se cómo hacerlo. Vamos a ver. Estoy haciendo un pequeño juegecillo; al hacer el Flip desde el backbuffer espero al retrazo vertical con lo que (dependiendo del monitor) consigo aproximadamente unos 75 FPS. Hasta aki todo ok, pero me surge una duda. Con este refresco quiere decir que si creo una animación a 25 FPS, ésta podrá tener un desfase de +/- 1/75 FPS (unos 13 ms) ya que mientras estoy refrescando no estoy calculando posibles cambios en la animación. Entonces según veo, este problema se verá incrementado en ordenadores con refresco de monitor más bajo, pudiendo ocasionar que las animaciones no se ejecutaran a la misma velocidad en diversas mákinas.
Mi bucle principal del juego, en resumen sería:

- Controla entrada raton/teclado y varios
- Modifica estado juego
- Refresca

Claro, al ser lineal la ejecución pues mientras está refrescando NO puedo hacer otra cosa. Asi que, ¿Como se hace en los juegos de verdad? ¿Son dos procesos paralelos, uno encargado de modificar el estado del juego y otro de refrescar la pantalla? De ser así también tendríamos problemas, ya que podría refrescarse la pantalla ANTES de que terminara de actualizar el estado/posicion de los sprites.

Bueno, después de esta peaso parrafada no se si ha quedado claro el tema. A ver si me aclarais algo,... Venga, un saludo:
--plugin                                





Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.