Bennu Game Development

Foros en Español => Presentación => Mensaje iniciado por: carles en Abril 20, 2010, 07:21:43 am

Título: Saludos
Publicado por: carles en Abril 20, 2010, 07:21:43 am
Hola comunidad

Soy Carles miembro de Pix Juegos. Soy nuevo en el foro pero gracias a PiXeL sigo de cerca el desarrollo de la comunidad.

Para que veais que soy un tio majo os regalo mi codigo para explosiones, que podeis encontrar en la mayoria de nuestros juegos.


[code language="bennu"]Process explotalo(x,y,z,size,alpha,angle,file,grafico,frames);

Private
   ancho;
   alto;
   a;
   b;
   c;
   tiempo;
   struct particula[10000];
      pixel;
      angulo;
      distancia;
      velocidad;
   end
Begin
   ancho=graphic_info(file,grafico,g_width);
   alto=graphic_info(file,grafico,g_height);
   from b=0 to alto-1;
      from a=0 to ancho-1;
         if(map_get_pixel(file,grafico,a,b)!=0)
            particula[c].pixel=map_get_pixel(file,grafico,a,b);
            particula[c].angulo=fget_angle(ancho/2,alto/2,a,b);
            particula[c].distancia=fget_dist(ancho/2,alto/2,a,b);
            particula[c].velocidad=particula[c].distancia/3+rand(-1,1);
            if(particula[c].velocidad==0)
               particula[c].velocidad=1;
            end
            c++;
         end
      end
   end
   a=c;
   while(tiempo<frames)
      graph=new_map(ancho*3,alto*3,16);
      from c=0 to a;
         map_put_pixel(0,graph,get_distx(particula[c].angulo,particula[c].distancia)+(ancho*3/2),get_disty(particula[c].angulo,particula[c].distancia)+(alto*3/2),particula[c].pixel);
         particula[c].distancia+=particula[c].velocidad;
      end
      tiempo++;
      frame;
      unload_map(0,graph);
   end
end[/code]
Título: Re: Saludos
Publicado por: Fede en Abril 20, 2010, 07:37:09 am
Bienvenido, por aquí gente muy maja también.  ;D

Yo soy uno de los novatillos, y por lo menos hago bulto.

Saludos.
Título: Re: Saludos
Publicado por: panreyes en Abril 20, 2010, 07:38:50 am
Programador Divero desde hace.. ¿7 años? Ya podías dignarte a saludar antes! :D
"Welcome to your doom!"
Título: Re: Saludos
Publicado por: josebita en Abril 20, 2010, 08:48:46 am
Bienvenido!
Ayer me estuve viciando a tu Garnatron :)
Título: Re: Saludos
Publicado por: FreeYourMind en Abril 20, 2010, 10:43:37 am
He Pixel me has plagiado la frase  >:(
Título: Re: Saludos
Publicado por: panreyes en Abril 20, 2010, 10:55:55 am
He Pixel me has plagiado la frase  >:(
Lo admito xD
Me hace gracia el juego de palabras, la filosofía implícita y el doble sentido que creo que no le has querido dar a esas palabras.

Welcome to your Doom: Bienvenido a tu pesadilla (se podría traducir así), pero a la vez... Doom es un juego, y aquí se desarrollan juegos. Bienvenido a tu juego.

¡¡Bienvenido a la pesadilla de hacer tu juego!! JAUSJAUSJAUSJAUS!!
Título: Re: Saludos
Publicado por: FreeYourMind en Abril 20, 2010, 11:04:29 am
Claro que tiene doble sentido hombre, que voy a parir con este saludo a los visitantes o que !? :)

http://www.youtube.com/watch?v=d_yx72yFpTo (http://www.youtube.com/watch?v=d_yx72yFpTo)
Título: Re: Saludos
Publicado por: DCelso en Abril 20, 2010, 12:36:06 pm
Por esa regla de tres yo soy más de:

Wellcome to your quake..
Título: Re: Saludos
Publicado por: FreeYourMind en Abril 20, 2010, 12:46:14 pm
Altered Beast salio antes que el Doom, este todavia no existia, se nota que soy viejuno, juajua...
Título: Re: Saludos
Publicado por: Drumpi en Abril 20, 2010, 12:59:45 pm
Pues bienvenido a la comunidad y...
¿El primer mensaje y ya poniendo código para corregir?  >:(

 :P No nos tomes muy en serio porque aquí, además de frikis, estamos chalados ;D
Título: Re: Saludos
Publicado por: panreyes en Abril 20, 2010, 01:44:49 pm
¿Código para corregir?
ESE "CÓDIGO PARA CORREGIR" ES UNA ESTUPENDÍSIMA FUNCIÓN PARA HACER UNA PEQUEÑA EXPLOSIÓN DE UN GRÁFICO! xD
Eso si, gasta cpu que da gusto xD
Título: Re: Saludos
Publicado por: FreeYourMind en Abril 20, 2010, 01:59:15 pm
Si igual lo decia de coña  ;D
Pero vamos tampoco se ha equivocado, la perfección no existe, todo se puede mejorar/corregir  :D
Título: Re: Saludos
Publicado por: Rein (K´)ah Al-Ghul en Abril 20, 2010, 03:09:41 pm
Bienvenido...
Título: Re: Saludos
Publicado por: Drumpi en Abril 20, 2010, 04:11:45 pm
¿Código para corregir?
ESE "CÓDIGO PARA CORREGIR" ES UNA ESTUPENDÍSIMA FUNCIÓN PARA HACER UNA PEQUEÑA EXPLOSIÓN DE UN GRÁFICO! xD
Eso si, gasta cpu que da gusto xD

(Pixel no lo pilla ;D ;D ;D).

Si igual lo decia de coña  ;D
Pero vamos tampoco se ha equivocado, la perfección no existe, todo se puede mejorar/corregir  :D

(Free si lo pilla :D)
El código y la idea está genial y el código está muy bien. Obviamente está sujeta a mejoras (uso de punteros, por ejemplo) pero para ser un "primer" código en Bennu está muy currado.
Espero seguir viendo muestras de tu arte por el foro, bienvenido a esta, nuestra comunidad :P
Título: Re: Saludos
Publicado por: carles en Abril 20, 2010, 06:48:30 pm
Gracias a todos por la bienvenida.

Tengo varios codigos por el estilo y me gusta la idea de que se puedan mejorar con punteros, ahora me falta aprender a usarlos.

Si alguien me ayuda, publico el codigo para ondular graficos. ;)
Título: Re: Saludos
Publicado por: FreeYourMind en Abril 20, 2010, 07:27:41 pm
Tu ponlo, llevo años buscando ese ejemplo :)
Aqui publiques lo que publiques siempre habrá gente que te intentará ayudar, es lo bueno de esta comunidad.
Título: Re: Saludos
Publicado por: Fede en Abril 20, 2010, 07:36:54 pm
Si, si, ponlo.  ;D

Que los que estamos aprendiendo te lo agradecemos.

Muaaaa.
Título: Re: Saludos
Publicado por: panreyes en Abril 20, 2010, 10:50:03 pm
No! No lo pongas! ES UNA TRAMPA!

Y no publiques nunca nada sobre el proceso colisionador de Garnatron. Quedamos en que eso era secreto entre tú y yo. Aunque sea software libre xD
Título: Re: Saludos
Publicado por: Drumpi en Abril 20, 2010, 11:08:23 pm
El código durará más tiempo frente a estos super-destructores que si te enfrentas a la Estrella de la Muerte... espera, esto no iba así.

Aquí todo código se agradece, aunque luego no lo use nadie ;D ;D ;D

PD: lo dicho, locos de atar :D
Título: Re: Saludos
Publicado por: carles en Abril 21, 2010, 06:51:45 am

Vale, aqui esta el codigo para ondular.

radio es lo que se desvia el grafico.
omega es el numero de ondulaciones que sufre(poner valores mayores de 1000 ya que se trata de un angulo)
delta es la velocidad a la que se mueven las ondas(poner valores mayores de 1000)

Si quereis ver un efecto chulo fijaros en el jefe final del PiX Pang, es la unica vez que he usado este efecto.

Tranquilo PiXeL solo queda una copia del Garnatron que usaba ese sistema de colisiones y esta a buen recaudo.

[code language="bennu"]
process ondular(x,y,z,grafico,radio,omega,delta);

private
   angulo;
   altura;
   desfase;
begin
   loop
      graph=new_map(radio*2+graphic_info(0,grafico,g_wide),graphic_info(0,grafico,g_height),16);
      angulo=desfase;
      from altura=0 to graphic_info(0,grafico,g_height);
         map_block_copy(0,graph,radio+get_distx(angulo,radio),altura,grafico,0,altura,graphic_info(0,grafico,g_wide),1,128);
         angulo+=omega;
      end
      desfase+=delta;
      if(angulo>360000) angulo-=360000; end
      if(desfase>360000) desfase-=360000; end
      frame;
      unload_map(0,graph);
   end
end
[/code]
Título: Re: Saludos
Publicado por: BoMbErLiNk en Abril 21, 2010, 07:55:29 am
Yo tengo un efecto de deformación similar usando también map_block_copy y get_disx.  :)

Quizas sería mejor quitar el graphic_info de los bucles de ese código y usar variables, pues grafico va a dar siempre el mismo resultado.
Título: Re: Saludos
Publicado por: FreeYourMind en Abril 21, 2010, 08:21:18 am
carles, te vas a llevar un karma, porque sobretodo Bomber prometio poner su código aqui y no lo hizo  ;)
Título: Re: Saludos
Publicado por: BoMbErLiNk en Abril 21, 2010, 10:37:53 am
Yo solo te dije (única y exclusivamente a ti) que tenia intención de hacer un hilo de efectos especiales para poner y depurar codigos, si no esta todavía lo puedes crear tu, no hay problema..
Título: Re: Saludos
Publicado por: FreeYourMind en Abril 21, 2010, 11:25:15 am
Hombre, espero que no te hayas enfadado  :P
Esperamos tu hilo, porque nos gusta aprender de los grandes  ;D
Título: Re: Saludos
Publicado por: Drumpi en Abril 21, 2010, 01:19:27 pm
Segundo efecto gráfico publicado en 4 mensajes, esto ya se merece un karma ;)
Título: Re: Saludos
Publicado por: FreeYourMind en Abril 21, 2010, 02:11:40 pm
Y sabes que, lo he probado hace rato y le voy a dar otro karma, te crees que es uno de los efectos que llevo soñando poder hacer con Div-likes desde que salio DIV !? Tuvierón que pasar 11 años, hay que jorobarse...  :D
Título: Re: Saludos
Publicado por: Fede en Abril 21, 2010, 02:53:58 pm
Karma UP!  :-*
Título: Re: Saludos
Publicado por: FreeYourMind en Abril 21, 2010, 03:19:32 pm
Pongo una versión modificada:

Esta nueva versión hace la distorción inicial y se va normalizando hasta parar (se ve en muchos titulo, como el Toki de Mega Drive).

Esta un poco chapucerá sobre todo la parte final que hace que pare y quede en estado normal, pero funciona, y siempre la podeis mejorar :)

Código: [Seleccionar]
process ondular2(x,y,z,grafico,radio,omega,delta);
 
private
angulo;
altura;
desfase;
n;
begin
loop
graph=new_map(radio*2+graphic_info(0,grafico,g_wide),graphic_info(0,grafico,g_height),16);
angulo=desfase;
from altura=0 to graphic_info(0,grafico,g_height);
map_block_copy(0,graph,radio+get_distx(angulo,radio),altura,grafico,0,altura,graphic_info(0,grafico,g_wide),1,128);
angulo+=omega;
end
desfase+=delta;

if(angulo>360000) angulo-=360000; end
if(desfase>360000) desfase-=360000; end

delta = delta - 2 * n;
n++;

if (delta <= 0) delta = -20;
    omega = omega - 20;
    delta++;
    if (omega < 0) omega = 0; delta = 0; end
end

frame;
unload_map(0,graph);
end
end

Yo lo llamo de esta forma:

ondular2(320,140,1,MapTitulo,40,1100,20000);
Título: Re: Saludos
Publicado por: shao en Julio 01, 2010, 10:46:29 pm
Pongo una versión modificada:

Esta nueva versión hace la distorción inicial y se va normalizando hasta parar (se ve en muchos titulo, como el Toki de Mega Drive).

Esta un poco chapucerá sobre todo la parte final que hace que pare y quede en estado normal, pero funciona, y siempre la podeis mejorar :)

Código: [Seleccionar]
process ondular2(x,y,z,grafico,radio,omega,delta);
 
private
angulo;
altura;
desfase;
n;
begin
loop
graph=new_map(radio*2+graphic_info(0,grafico,g_wide),graphic_info(0,grafico,g_height),16);
angulo=desfase;
from altura=0 to graphic_info(0,grafico,g_height);
map_block_copy(0,graph,radio+get_distx(angulo,radio),altura,grafico,0,altura,graphic_info(0,grafico,g_wide),1,128);
angulo+=omega;
end
desfase+=delta;

if(angulo>360000) angulo-=360000; end
if(desfase>360000) desfase-=360000; end

delta = delta - 2 * n;
n++;

if (delta <= 0) delta = -20;
    omega = omega - 20;
    delta++;
    if (omega < 0) omega = 0; delta = 0; end
end

frame;
unload_map(0,graph);
end
end

Yo lo llamo de esta forma:

ondular2(320,140,1,MapTitulo,40,1100,20000);

Hola!
no podia entrar con mi viejo nick y he tenido que dar de alta otro.
free! para hacer lo que dices solo tienes que poner
if(radio>0)
   radio--;
end
despues del from aunque quiza se para un poco en seco lo mejora bastante con simplemente eso!
gracias por el codigo a los dos!
Título: Re: Saludos
Publicado por: SplinterGU en Julio 01, 2010, 10:54:11 pm
estos codigos pueden ser muy utiles, pero para que no se pierdan, ponganlos en posts separados o 1 uno que sea "algoritmo para hacer explosiones con particulas" o algo asi, en la seccion de recursos.

gracias a ambos, y ambos karmas por sus codigos.

ahh, por favor, agreguen un programa de test, listo para compilar y probar.
Título: Re: Saludos
Publicado por: FreeYourMind en Julio 02, 2010, 04:47:01 am
Me alegra verte por aqui de forma activa, Pablo 28.
Ya verás como te sentiras en casa y con gente muy maja dispuesta a ayudarte en todo  ;)
Título: Re: Saludos
Publicado por: FreeYourMind en Julio 02, 2010, 05:07:11 am
Te acabas de ganar un karma, de una forma tan sencilla has hecho lo que pretendia en su día, y yo haciendo mogollon de ñapas para que la ondulación parase  ;D

Pongo tu modificación.

Resumiendo, esta nueva versión hace que la ondulación pare pasado algun tiempo (efecto similar al titulo de Toki, de Mega Drive).
Lo hace de forma perfecta y sencilla.

Código: [Seleccionar]
process ondularhastaparar(x,y,z,grafico,radio,omega,delta);
  
private
angulo;
altura;
desfase;
begin
loop
graph=new_map(radio*2+graphic_info(0,grafico,g_wide),graphic_info(0,grafico,g_height),16);
angulo=desfase;
from altura=0 to graphic_info(0,grafico,g_height);
map_block_copy(0,graph,radio+get_distx(angulo,radio),altura,grafico,0,altura,graphic_info(0,grafico,g_wide),1,128);
angulo+=omega;
end

if(radio>0)
           radio--;
        end

desfase+=delta;
if(angulo>360000) angulo-=360000; end
if(desfase>360000) desfase-=360000; end
frame;
unload_map(0,graph);
end
end

Título: Re: Saludos
Publicado por: FreeYourMind en Julio 02, 2010, 05:13:19 am
Pongo un ejemplo compilado, acompañado de 2 efectos más, uno de ellos utiliza la dll water.
Título: Re: Saludos
Publicado por: shao en Julio 02, 2010, 09:38:12 am
creo que se pueden conseguir cosas chulas con el efecto de ondulacion, añadiendo un contador al efecto anterior para que se detenga en el rango de tiempo que tu desees se detendria menos bruscamente.
saludos!
Título: Re: Saludos
Publicado por: FreeYourMind en Julio 02, 2010, 10:31:39 am
Si eso me lo pense, pero no he completado el ejemplo porque eso ya resulta fácil, seria sólo poner un parametro de entrada 'tiempo hasta parar' por ejemplo, y que esa variable ejecutará el

if(radio>0)
   radio--;
end

cuando fuera 0, por ejemplo.

Lo importante era hacer que parase de forma normal, mi anterior ejemplo hacia ñapas para que parase de forma natural, y no lo conseguia (estaba muy proximo), pero con sólo tu condición esto ocurre de forma natural.

Has hecho un gran aporte, lo que demuestra que en programación es así la vida, a veces damos vueltas y vueltas para hacer algo que se hace en 2 segundos :)
Título: Re: Saludos
Publicado por: shao en Julio 02, 2010, 07:18:18 pm
"ñapas?" jaja
creo que tambien lo que pasa a veces es que cojes el problema con la mente mas fresca y te cuesta menos solucionarlo, que despues de haber estado un tiempo sobre el mismo problema.