Preguntas sobre programacion de Hokutoy.

Started by Hokutoy, February 02, 2010, 04:44:57 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

SplinterGU

#30
no es eso, eso puede suceder por 2 factores:

1) porque estaras creando y destruyendo procesos constantemente... eso si consume...
2) porque renderizar un grafico hace mucho mas que dibujarlo, hay calculos de angulos, vertices, tamaño, etc.... entonces para la misma data total grafica, divida en 1000 fragmentos sera siempre mas lento que dividido en 100 fragmentos, para dar un ejemplo...

con windgate probamos 1000 procesos controlando cada uno un modelo en 3d, y lo mismo pero con 1 solo proceso bennu, y los 1000 modelos controlandolos por el motor 3d, y da lo mismo...

pero esto ultimo demuestra que la carga esta en el render... de hecho, si no renderizas, bennu te va a 100 de miles de fps...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Hokutoy

Bueno lo de las partículas en plan geiser ya lo he arreglado... al final he creado un proceso chispa() con un fpg con varios graficos de un pixel de varios colores que al invocarse toma el angulo inverso al impacto y avanzan describiendo un trayectoria semi aleatoria... angle+=rand(-10000,10000); dentro del Loop. La verdad es que el efecto es bastante vistoso y aunque se invoquen 4 o 5 chispas por cada impacto de momento no afecta en nada la rendimiento.  ;D

Otra cosa... para  mover a un personaje según su angulo uso:



angle=get_angle(id_ship);
advance(3);
frame;


Este codigo tiene el problema de que me rota al personaje en cuestión distorsionandolo cosa que para evitarlo uso lo siguiente:


angle=get_angle(id_ship);
advance(3);
angle=0;
frame;


Así le doy angle al personaje, lo desplazo, lo coloco recto otra vez y lo pinto con frame. Resultar resulta pero hay otra manera para poder mover cosas según un angle sin que afecte al pintado del sprite?

Gracias!

Phoenix

Creo que con esto no modificaria el angulo del proceso y se moveria en angulo que quieras:



int angulo1;

angulo1=get_angle(id_ship);
xadvance(angulo1,3);



Hokutoy

Bueno si alguien quiere ver como han quedado los efectos de partículas que se fije en los impactos y en las explosiones... quedan bastante bien.  ;D
Pensar que el video va a 30 fps y el juego a 60 fps.

http://www.youtube.com/watch?v=-wi-rXMFY-w

DCelso

Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Windgate

Bonito efecto de partículas, ¿La nube de partículas es un único proceso con un gráfico para todas las partículas, varios procesos o MUCHOS procesos manejando cada uno de ellos una partícula? xD

Veo que por ahí arriba se habló del tema pero no he visto la conclusión.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

Hokutoy

#36
Quote from: Windgate on March 03, 2010, 11:59:50 PM
Bonito efecto de partículas, ¿La nube de partículas es un único proceso con un gráfico para todas las partículas, varios procesos o MUCHOS procesos manejando cada uno de ellos una partícula? xD

Veo que por ahí arriba se habló del tema pero no he visto la conclusión.
Pues va a ser lo último... cada pixel un proceso jejeje De momento no noto nada de caida de rendimiento en la Wiz con mas de 15 enemigos y el uso de estas particulas, aunque en el futuro a lo mejor me veo obligado a mejorar el tema si veo que el rendimiento se ve afectado.

PROCESS chispa (x,y,ANGLE_BACKUP,DISTANCIA)

BEGIN
file = GFX_chispa;

repeat
GRAPH=RAND(1,3);
angle_BACKUP+=rand(-10000,10000);
XADVANCE( ANGLE_BACKUP , rand(2,3) );
DISTANCIA--;
frame;


until DISTANCIA=<0;

END // OF BEGIN


Para el efecto de la nuve de particulas uso:

FOR(CONTADOR=0;CONTADOR<50;CONTADOR++)
   chispa(X,Y,RAND(0,360000),44);
END


Y para el efecto de las chispas por impacto:

FOR(CONTADOR=0;CONTADOR<5;CONTADOR++)
   chispa(who_CHOQUE.x,who_CHOQUE.y,GET_ANGLE(ID_SHIP),22);
END

DCelso

quizas un poco más grandes o de diferentes tamaños y o formas no estaría mal,
ahora parece que los enemigos se desintegran de lo chicas que son.
Me recuerda al laser desintegrador de replicantes de stargate sg. :D.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Drumpi

Esto sí que no me lo esperaba ¿tan buen rendimiento da en WIZ el uso de tantos procesos partículas? Después de usar proceso por tile en Echo, pensé que el rendimiento era mucho menor.
Ojalá tuviese una WIZ para probar ;D
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

DCelso

Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Drumpi

Pues deja que lo pruebe y os comento.
Es más, aun no he probado ni los juegos del concurso (ya veremos si no tengo que adaptar los que usan pantalla táctil), ni siquiera en PC (más allá el EEEK! y del Puzsion, ahora que por fin lo entiendo ^^U).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

a muchos le falta el cursor del mouse en PC, mas que eso, deberian andar...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Hokutoy

Otra duda con el jueguecito de naves... esta vez una cosa que me pasa con el control cuando lo pruebo en el Pc.
En este juego la nave se mueve con los cursores, rota a la izquierda con "Q", rota a la derecha con "W" y se dispara con el espacio.
En la Wiz no hay problema, todas las acciones tienen mapeado su accion a un boton distinto (incluso el desplazamiento en diagonal esta mapeado al "boton" diagonal correspondiente). El problema surje con las diagonales en el PC, que se consiguen pulsando arriba/derecha, arriba/izquierda, abajo/derecha y abajo/izquierda. Hasta aquí no hay problema todo perfecto. El problema real esta cuando pulsas diagonal + rotacion + disparo que, no se si porque no se admiten tantas pulsaciones a la vez en el teclado (bennu?/Pc?/Windoes?) no realiza el movimiento en diagonal correctamente... sigue el eje horizontal o el eje vertical.
Hay alguna solucion aparte de mapear 8 teclas diferentes  para cubrir las 8 posibles direcciones?

Gracias!

SplinterGU

en teoria no es necesario mapear las 8 teclas... a menos que quieras 8 teclas diferentes... con pulsar arriba+izq, vas a obtener dicha diagonal...

si no es eso lo que preguntabas, pregunta nuevamente.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Hokutoy

#44
Retry:
En el Pc, cuando pulso izquierda (se desplaza a la izquierda), la tecla Q (rotar), el espacio(disparo), y, pulso arriba (para cambiar la direccion de izquierda a diagonal izquierda-arriba) la nave sigue hacia la izquierda.

Hay un limite (ya sea de Bennu, del teclado, del Windows o lo que sea) en el limite de teclas pulsadas simultaneamente para que sean reconocidas?

Reprobando lo que es mas curioso es que la unica diagonal que no funciona es la indicada (arriba/izquierda) las otras si se ejecutan.

Gracias!