Mostrar Mensajes

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

Mensajes - NOKAUBURE

1
Esa seria una solucion muy casera y tendria que estar en todos los mapas poniendo bloques invisibles en los vacios en los que "crea" que no pueden saltar. Igualmente ya descubri una manera de hacerlo, asi que cierren el tema  :) aun asi dejo la respuesta:


Como se desconoce la formula matematica, hay que hacer primero una prueba. Se crea un objeto que al iniciar la room, hace un salto de vspeed = -8 con gravity 0.8 y una velocidad que puedes escojer cada vez que le haces click izquierdo. Haciendo diferentes pruebas me da que con:

Velocidad | Distancia
1 | 21
2 | 42
3 | 63
4 | 84
5 | 105
6 | 126
Parece que incrementa 21 posiciones por cada 1 de velocidad que se le añade.
El codigo para ese trozo de IA quedaria asi:

If place_meeting(x+(velocidad*21),y+1,bloque) = true {jump();}


Estas IA dan su trabajo  :-X ya pueden cerrar post
2
Buenas, cuanto tiempo sin pasarme por aqui  :-[

Vengo a postear una duda que, posiblemente, no la llegue a contestar nadie  XD a no ser que hagan carrera matematica o algo.

Estoy haciendo un juego de plataformas. Pero los mobs tienen una IA avanzada. Por ahora consegui que:

- Te sigan a cierto alcanze
- Se paren si te fuiste lejos
- Si te subes en una plataforma, ellos saltan para subirla tambien
- Si saltas un vacio, ellos tambien lo saltan

Aqui mi problema: si ahora haces un acto suicida, por ejemplo, tirarte por un precipicio y gastar una vida extra, ellos se tiraran tambien, y a consecuencia de esto, mueren. Por lo que puedes llegar a matar un jefe solo suicidiandote xD y quiero arreglar esto de la siguiente manera:

Como hago para calcular la posicion donde caera un objeto, sabiendo su velocidad, salto y gravedad. De esta manera lograria que si en la posicion X, Y+1 calculada, hay un bloque, salten, sino, se quedan parados mirando como te caes en el vacio xD

Variables:

gravity = 0.8
velocidad = 6 (ojo, no es speed, es una variable que esta en el evento step tipo asi: x += velocidad)
vspeed (al saltar) = -7


PD: en un juego que hize, podia ajustar la velocidad para que cayera en una posicion X con gravedad y vspeed, pero haciendo una regla de 3 no me sirve :P
3
3 soluciones:

1. Rodear las rutas con solidos, y cuando el objeto choque con los solidos vuelva a la posicion previa.

2. Hacer una rejilla del tama?o de un trozo de ruta (no me fije si es 16x16 o 32x32). Entonces Recrear el script para que se fije en la rejilla

3. (ESTA PARA MI ES LA MEJOR) hacer que las rutas tengan un mismo pariente. entonces en step poner esto:

[gml]if place_meeting(x,y,parentruta) = false {x = xprevious; y = yprevious; execute_script(elscript)}[/gml]

Asi lo que se consigue es que si se sale de la ruta, vuelva a dentro y se vuelva a iniciar el script para retomar la ruta.
4
evento step del objeto. Solo modifica lo que hay entre parentesis.
[gml]if x > view_xview+(anchura de la view) {x -= 10}
if x < view_xview {x += 10}[/gml]
5
Preguntas y respuestas / Re: Como Afectara el Sopa
Enero 22, 2012, 11:14:05 PM
dejad ya empaz a la SOPA, que fue cancelada, miren el articulo que puso Fenix Oscuro xD
6
Preguntas y respuestas / Re: Como Afectara el Sopa
Enero 21, 2012, 11:51:48 AM
http://tecnologia.elpais.com/tecnologia/2012/01/20/actualidad/1327083752_211892.html

victoria, SOPA a la mierda xP durante un tiempo no molestaran
7
Preguntas y respuestas / Re: Como Afectara el Sopa
Enero 20, 2012, 05:48:25 PM
Exacto, por ej si wikipedia cae, la wiki espa?ola tmb, lo mismo con google, o youtube ke es propiedad de google etc.
Pero si los servidores estan en espa?a, esas paginas continuaran existiendo (pero esperate, que los franceses apoyan el SOPA, veremos si espa?a tmb)
8
Preguntas y respuestas / Re: Como Afectara el Sopa
Enero 20, 2012, 05:01:40 PM
1? El cierre de megaupload fue culpa del FBI.

2? La ley SOPA solo se aplicara a estados unidos, por lo que si comunidadgm es de espa?a, no le haran nada en principio.
9
Preguntas y respuestas / Re: Aclarar una imagen
Enero 17, 2012, 04:31:16 PM
Pues no, pero hay scripts para dar "textura" a los sprites. Simplemente creas un quadro blanco con opacidad del 50% de sprite, y luego a la imagen para aclarar aplicas el siguiente script:

merge_sprite
[gml]//argument0=sprite
//argument1=subimage
//argument2=sprite form
//argument3=subimage of form
//argument4=append to a existing sprite
fspr=-1
if argument1=all
{
if sprite_exists(fspr) {sprite_delete(fspr)}
for (i=0;i<=sprite_get_number(argument0)-1;i+=1)
{
erase=surface_create(sprite_get_width(argument2),sprite_get_height(argument2))
surface_set_target(erase)
draw_clear_alpha(c_white,0)
draw_rectangle(0,0,sprite_get_width(argument2),sprite_get_height(argument2),0)
draw_set_blend_mode(bm_subtract)
draw_sprite(argument2,argument3,sprite_get_xoffset(argument2),sprite_get_yoffset(argument2))
draw_set_blend_mode(bm_normal)
surface_reset_target()
spr=surface_create(sprite_get_width(argument0),sprite_get_height(argument0))
surface_set_target(spr)
draw_clear_alpha(c_white,0.01)
draw_sprite(argument0,i,sprite_get_xoffset(argument0),sprite_get_yoffset(argument0))
draw_set_blend_mode(bm_subtract)
draw_rectangle(sprite_get_width(argument2),0,sprite_get_width(argument0),sprite_get_height(argument0),0)
draw_rectangle(0,sprite_get_height(argument2),sprite_get_width(argument2),sprite_get_height(argument0),0)
draw_surface(erase,0,0)
draw_set_blend_mode(bm_normal)
surface_reset_target()
if !sprite_exists(fspr) {fspr=sprite_create_from_surface(spr,0,0,sprite_get_width(argument0),sprite_get_height(argument0),0,0,0,0)}
else {temp=sprite_create_from_surface(spr,0,0,sprite_get_width(argument0),sprite_get_height(argument0),0,0,0,0) sprite_merge(fspr,temp)}
}
return fspr
}
else
{
erase=surface_create(sprite_get_width(argument2),sprite_get_height(argument2))
surface_set_target(erase)
draw_clear_alpha(c_white,0)
draw_rectangle(0,0,sprite_get_width(argument2),sprite_get_height(argument2),0)
draw_set_blend_mode(bm_subtract)
draw_sprite(argument2,argument3,sprite_get_xoffset(argument2),sprite_get_yoffset(argument2))
draw_set_blend_mode(bm_normal)
surface_reset_target()
spr=surface_create(sprite_get_width(argument0),sprite_get_height(argument0))
surface_set_target(spr)
draw_clear_alpha(c_white,0)
draw_sprite(argument0,argument1,sprite_get_xoffset(argument0),sprite_get_yoffset(argument0))
draw_set_blend_mode(bm_subtract)
draw_surface(erase,0,0)
draw_set_blend_mode(bm_normal)
surface_reset_target()
return sprite_create_from_surface(spr,0,0,sprite_get_width(argument0),sprite_get_height(argument0),0,0,0,0)
}[/gml]

Uso: merge_sprite(spritequadroblanco,0,sprite_index,image_index)
con esto, tu sprite se aclararia. Si no funciona, cambia el 0 por all.
10
Preguntas y respuestas / Re: Detectar dibujado
Enero 14, 2012, 04:24:38 PM
se hace con surfaces cosa que  yo no tengo ni idea de surfaces  :-[ por lo que haria lo siguiente:

Digamos que te sale una puerta con un triangulo en la pantalla y tienes que reseguirlo sin soltar el raton. A cada step que tienes el mouse apretado, se crea un objeto con un circulo de 16x16. Si exactamente en su posicion se encuentra otro, no se crea (asi evitamos crear multiples objetos con el mouse parado. La area a reseguir es otro objeto. El espacio que no se tiene que dibujar TAMBIEN es otro objeto, solo que entre este y el area que se tiene que reseguir, dejaria un espacio de 16px. Ahora cuando sueltes el mouse, el juego chequearia el maximo de pinzeladas (por ej hiciste 20 circulos de 16x16), entonces si el 25% estan fuera de la area a reseguir, la puerta no se abre, si no es asi se abre. Claro que ahora tu podrias hacer todas las pinceladas en un lado del triagulo y te lo detectaria como correcto, por lo que se podria dividir el objeto del area a reseguir en 3 o 6 partes.
11
para saber el requisito de la RAM y processador (esto canvia en TODOS los juegos, no hay que mirar la version de gm), simplemente ejecutas el programa, vas a administrador de tareas y buscas el proceso. Donde dice espacio, a mi me aparece 1.165.112 KB, por lo que pasando a GB son 1.11 GB. Luego miramos el CPU. A mi me aparece 15%. Entonces calculas el 15% de tu processador, en mi caso sale 0,45 GHz. Cuanto espacio ocupa el juego? el mio ocupa 70 MB (miralo poniendo el mouse sobre tu editable). Pues ya esta quedaria asi:

RAM requerida: 1,5 GB o superior.
Processador requerido: 500 MHz o superior.
Espacio disco disponible: 70 MB.

PD: Esto solo es un ejemplo, cada uno debe hacerlo con su juego!!

Para el sistema operativo y el video, mira el post de elvis, ya que estos 2 solo varian segun la version de gamemaker, no del juego.

12
Demostracion por lo que es imposible lo que pides:

El tiempo es algo que fluye igual para toda la gente, es decir: si personaje A esta acelerado, B lo ve rapido pero A ve a B lento. Digamos que es un escenario con un arbol enmedio. Los 2 estan a 5 metros de el. Si ahora A tirase alante, como B lo ve acelerado, llegaria al arbol en 10 seg, pero para A, tardaria 20 seg porke se ve con velocidad normal, por lo que ocurre una parodia temporal:

- Para B, A llego al arbol en 10 seg

- Para A, el mismo llego al arbol en 20 seg


Y lo siento si decepcione o algo, pero creo que es una buena respuesta. Yo de tu haria que si A es acelerado, se vea rapido y el resto lo vean rapido, mucho mas sencillo y posible.

Saludos
13
no hombre, no hace falta si dices ke ya tienes un sprite con el arma y el personaje. Solo cambia la mascara. Tienes dos maneras:

1. Haces un rectangulo del tama?o del personaje y se lo pones como mascara.

2. Editas la collision mask del sprite
14
si el sprite del jefe mira a la derecha inicialmente:

[gml]if x > personaje.x {image_xscale = -1} else {image_xscale = 1}[/gml]

Te ahorra 1 sprite, ademas de ke es sencillo, solo se pone en evento step. Si el sprite mira a la izquierda inicialmente, cambia el -1 por 1 y el 1 por -1 xD
15
Yo te sugiero trabajar con surfaces, e ir recortando la imagen poco a poco, osea harias 2 imagenes: la de color debajo y la gris arriba. Y la gris es una surface que se va tallando.