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 - Mgbu

271
Preguntas y respuestas / Re:Reloj interno
Octubre 17, 2012, 11:18:29 PM
Sigue dando error?
Para ver la variable sin tener que hacer el draw podés correr el juego en "Debug mode" (flecha roja)
Después hacés click en Watch>Add y cuando te pide escribir ponés info.s o info.contadorFrame
Te tendría que estar mostrando el valor de esa variable en la tabla de la ventana
272
Preguntas y respuestas / Re:Reloj interno
Octubre 17, 2012, 10:53:02 PM
Ese error dice que no existe una tal variable llamada "contadorFrame"
Me parece que pasa porque el evento Draw no está en el objeto_inicio. Porque las variables son locales a un objeto, es decir cuando tenés un objeto auto y un objeto moto, la variable velocidad será independiente entre los dos, entonces en el objeto que tiene el draw que me mostraste no existe una variable contadorFrame, porque esa variable pertenece a objeto_inicio
Eso se arregla escribiendo objeto_inicio.contadorFrame, al agregar objeto_inicio adelante le estás diciendo al juego que querés saber la variable de ese objeto

Yo siempre tengo un objeto_controlador que funciona durante todo el juego gracias a la opción "persistent", si no tenés uno la forma más fácil de hacer un contador es que tengas un objeto como ese, con el nombre que quieras. Entonces ponés el create, el Step, y el Draw en ese objeto
Te lo digo porque el obeto_inicio supongo que sólo está en la pantalla de inicio, pero cuando comience el juego el contador dejará de funcionar

También veo que es Step escribiste mal dos cosas: el combre de la variable y la operación, con =+1 estás haciendo que sea siempre 1, o sea contadorFrame es igual a 1 positivo (+1), ese signo más va adelante del igual, entonces sería "contadorFrame+=1;" "sumarle 1 a contadorFrame"

Y por último a ese evento Draw lo veo bien para ser dibujado, pero si no vas a mostrar los segundos en pantalla podés borrar todo lo que está en Draw, y dejando este código en step:
s = contadorFrame/(room_speed);
Eso guarda los segundos pasados en la variable s
273
Preguntas y respuestas / Re:Como grabar el juego?
Octubre 17, 2012, 10:01:35 PM
Podés editar el video con algun programa. A mí el FRAPS no me dio problemas, también usaba Camtasia Studio pero ya hay que pagar
274
Preguntas y respuestas / Re:Porque no suena!?!?!?!
Octubre 17, 2012, 10:00:17 PM
A mi me suenan perfectamente, la musica, una para el menu y otra para el juego, los sonidos, etc.
275
Podés hacerlos con el editor de imágenes del juego, apretas el pacman rojo para crear un nuevo sprite, luego haces click a "Edit Sprite", apretas la hojita blanca de "Create a New Sprite" y listo, ya está el editor

Para cargar uno hecho con otro programa (como Photoshop o Paint.NET) luego de apretar el pacman rojo apretas "Load Sprite" y listo

Si en cambio hablas de cargar sprites externos ya es un poco mas complicado
276
Preguntas y respuestas / Re:Reloj interno
Octubre 17, 2012, 09:52:07 PM
Sabiendo que la room_speed es la cantodad de frames por segundo podés calcularlo fácil.
A una variable contador la iniciás en 0 en un create y con step le vas sumando uno, con la room_speed se puede sacar los segundos con un cálculo simple:
segundos=contador/room_speed
277
Ahh, si, tenés razón, hice otra prueba, para ver si el argumento prec tenía que ver con el método de colisión, sorpresa, la velocidad del juego es la misma, no depende del argumento prec.

En definitiva usar cualquier forma es lo mismo, no hay casi diferencia, me quedo con el círculo XD
278
No te trates tan de noob que todos empezanos sin saber :D

Fijate si te sale cambiar los "set the health..." por "set variable vida..."
Te digo porque la variable health es comun para todos los objetos (es una variable global por si sabes la definicion) entonces debes inventarte una variable con nombre vida (justo como inventaste la variable dir), las variables inventadas normalmente no son globales, o sea que hay una variable vida para cada jugador.

Si no te sale mañana explico con tiempo, ahora me tengo que ir  :P
279
Lo explico con D&D

La vida, salud, munición, y todo se guarda en variables
Vos cuando usás la acción "Set health" con 100 estás haciendo exactamente lo mismo que si pusieras "Set variable" con variable de nombre "health" y el valor 100

En definitiva en el jugador 1 en vez de usar "Set health" usás "Set variable" con nombre "vida_jug1", y obviamente para el jugador 2 usás "Set variable" con nombre "vida_jug2"

Lo mismo es para "Test Health", en vez de usar eso usás "Test Variable" con nombre en "vida_jug1"

El problema es cuando querés dibujar la vida, en vez de usar "Draw Health" se usa "Draw Rectangle" (que debe ser puesto en step). Como necesitamos hacer un rectángulo que sea largo depende de la vida que tenemos tenemos esto:
x1: Es la x de la esquina superior izquierda del rectángulo, se pone el mismo valor que había en x1 de "Draw Health"
y1: Es la y de la esquina superior izquierda del rectángulo, se pone el mismo valor que había en y1 de "Draw Health"
x2: Es la x de la esquina superior izquierda del rectángulo, se debe poner: "(x1+vida_jug1)/100*ancho_de_barra" hay que cambiar esos valores, entonces si el ancho de tu barra es de 54 y x1 era 32 ponés: "(32+vida_jug1)/100*64"
y2: Es la y de la esquina superior izquierda del rectángulo, se debe poner "y1+alto_de_barra", si el alto de tu barra es de 10 y habías puesto 30 en y1 se debe colocar "30+alto_de_barra"
filled: Acá ponés si dibujar el rectángulo rreleno o sólo sus líneas, dejalo en filled

Bueno, me parece que es todo ;D
280
Ustedes saben más que yo así que:... :-[

Probé dejando la room speed en 30 y usando estas lineas de una en una, y sigue siendo practicamente lo mismo
repeat (70000) {a=collision_rectangle(x,y,x+5,y+5,obj_otro,1,1)} //13fps 37%cpu
repeat (70000) {a=collision_ellipse(x,y,x+5,y+5,obj_otro,1,1)} //13fps 37%cpu
repeat (70000) {a=collision_circle(x,y,2,obj_otro,1,1)} //17fps 35%cpu


Cuando llegué a escribir esto me acordé que tebían que ser muchos objetos, entonces lo hice de nuevo XD

Puse 10 objetos que en step hacían esto, de a una linea por vez y comenté al lado lo que marcaba
repeat (10000) {a=collision_rectangle(x,y,x+5,y+5,obj_otro,1,1)} //10fps 36%cpu
repeat (10000) {a=collision_ellipse(x,y,x+5,y+5,obj_otro,1,1)} //9fps 36%cpu
repeat (10000) {a=collision_circle(x,y,2,obj_otro,1,1)} //12fps 36%cpu


Después había que probar con más objetos:

Al principio con este código creé 1000 objetos chequeadores:
repeat (1000) {instance_create(0,0,object0)}
Y a cada uno les fui haciendo chequear 50 veces por step:
repeat (50) {a=collision_rectangle(x,y,x+5,y+5,obj_otro,1,1)} //18fps 36%cpu
repeat (50) {a=collision_ellipse(x,y,x+5,y+5,obj_otro,1,1)} //18fps 37%cpu
repeat (50) {a=collision_circle(x,y,2,obj_otro,1,1)} //22fps 36%cpu


En definitiva estoy seguro de tres cosas:
- Con círculos parece más rápido
- Los valores de uso de CPU son inexactos porque se van cambiando a cada rato en la prueba
- Cada vez estoy más confundido XD

Destaco que el obj_otro estaba en la room moviendose hacia la derecha con un wrap_screen para que siempre esté en pantalla
281
Uy perdón :-[
De todos modos a mi me funciona con el siguiente código (lo puse en create)
tile=tile_add(tile1,1,1,64,64,x,y,0)
tile_set_alpha(tile,0.2)


Puede ser que estes dibujando el mismo tile varias veces (por ponerlo en draw) o que estés escribiendo mal su id, no se me ocurre otra cosa

EDIT: Probando ya sé, tenés varios tiles con el mismo ID, por ejemplo así:
tile=tile_add(tile1,1,1,64,64,x,y,0)
tile=tile_add(tile1,1,1,64,64,x+64,y,0)
tile_set_alpha(tile,0.2)

Eso va a hacer transparente al segundo tile porque estás sobreescribiendo el valor de la variable "tile". eso se arregla así:
tile=tile_add(tile1,1,1,64,64,x,y,0)
tile_set_alpha(tile,0.2)
tile=tile_add(tile1,1,1,64,64,x+64,y,0)
tile_set_alpha(tile,0.2)

282
Probé rápido con un background transparente, es decir cuando lo pinté no lo hice con alpha en 255 sino con un numero menor, después lo puse en una room como tile y era transparente
Podés editar un tile que es opaco con Image>Opacity>51 (255*0.2) y se tendría que ver transparente
O necesariamente necesitás hacerlo transparente con ese código?
283
Me parece que a la prueba la hice bien, mi forma de estresar el cpu fue obligarlo a correr el juego con room_speed de 5000. Y como ves llegó solo a 2200

Saludos!  ;D
284
Tenés razón XD, los máximos FPS para estos códigos (de a uno) están al lado
repeat (10) {collision_rectangle(x,y,x+5,y+5,obj_otro,1,1)} //2240
repeat (10) {collision_ellipse(x,y,x+5,y+5,obj_otro,1,1)} //2220
repeat (10) {collision_circle(x,y,2,obj_otro,1,1)} //2230


Como se ve practicamente no hay diferencia
285
Ah, gracias! ahí lo pude hacer con tus consejos, se me ocurrió poner la id en una variable global:
Citarglobal.tmp=id
with obj_iman {
    global.tmp.dir=point_direction(global.tmp.x,global.tmp.y,x,y)
    global.tmp.dist=distance_to_point(global.tmp.x,global.tmp.y)
    with global.tmp motion_add(dir,(50/(dist+1)))
}

Gracias!