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

166
Podés pensarlo así:

100% ---- 213 px
vid% ---- ? px

Entonces seria vid*213/100
Es lo mismo que dijo brunoxzx, nada mas que mostrando como seria en la regla de 3
167
O sea image_speed es en cuanto se incrementa image_index en cada step. image_index es la imagen del sprite que se muestra
168
Depende de donde vas a descargarlas, de Dropbox?, de tu PC en tu casa? un Servidor?. Yo guardaria un txt con la version, entonces el juego lo descarga. Si la version del txt es distinta a la del juego se decarga el juego nuevamente
169
Preguntas y respuestas / Re:Estilo 8 bits
Marzo 10, 2013, 04:50:55 PM
Hay que desactivar "Interpolate Pixels between colors"
Si aún así se ve borroso ríndete, a mi me pasó en la netbook de mi mamá y no encontré solucion. Desactivando esa opcion se va a ver bien en la mayoria de las PC
170
Ah, entonces los dibujos a rellenar van a ser siempre los mismos. Si el usuario no puede crear sus propios dibujos podés dividir las partes blancas en objetos que tienen un sprite con una forma igual a la de su seccion de dibujo. Si el usuario hace click sobre ese objeto éste cambia el color del sprite con image_blend.
Sería una opción con buen rendimiento pero tendrías que hacer muchos sprites

Tampoco entiendo por que ocurre desbordamiento de memoria en la forma recursiva, porque si se agregan los pixeles a una lista no se deberia llamar a la funcion dos veces en el mismo lugar, ¿O desbordamiento de memoria se refiere al llamado de muchas funciones? Me gustaria saber porque no se mucho de esto :-[
171
A lo mejor necesitas cambiar un color, por ejemplo blanco por negro. Chequeando todos los pixeles y cambiandolos a negro no se si sirve
172
Depende cómo estas dibujando, lo mejor sería dibujar con surfaces

Nunca intenté y no se ve tan fácil, me parece que la única forma es chequear todos los pixeles para ver hasta dónde se va a dibujar.
Se me ocurre que lo hagas con recursión, no se si es la mejor forma, se me ocurre que hagas un script rellenar(xPos, yPos, c) que hace esto:

Citar- Pintar el pixel en la posicion (xPos, yPos) del color "c"
- Agregar el pixel pintado a una lista
- Con cada uno de los 4 pixeles adyacentes chequear si son del color c y no estan en la lista, si es así llamar al script rellenar() con los argumentos correctos

No es tan dificil, pero se ve muy ineficiente, chequear el color de un pixel según el manual es un poco lento, para colmo si queres rellenar un cuadradito de 100x100 vas a llamar a este script 1000 veces. No creo que el juego se trabe por 5 segundos, pienso que estara 1 segundo sin responder como maximo, otros acá deben saber mas de esto que yo

Entonces si no estas usando surfaces, aprendé a usarlas. Luego intenta implementar el script que te dije (previamente leyendo que es recursion), que es la parte mas divertida de hacer juegos
173
Cita de: shaoran en Marzo 04, 2013, 02:39:03 PM
El problema es que los 250 millones de dispositivos Android activos , la mayoria esta en personas menores de edad o bien personas que no pueden acceder a algun medio de pago del tipo bancario.

Lamentablemente es imposible montar la idea de las tarjetas ¿Por que? Bueno primero por que se tendra que crear una empresa que imprima los plasticos y se encargue de la logistica a todo el mundo ( ya hablamos de varios millones) y despues ese dinero se tendra que recuperarlo, pero en ese caso vean el problema.

El que te venda la tarjeta tendra que tener su ganancia y al mismo tiempo el vendedor del juego debe tener su ganancia, en este punto alguien va a perder y seguramente seria el programador o grupo de desarrollo.

Imaginense que de una tarjeta de $5 tenga que salir la ganancia de la empresa,la del programador y la del vendedor.

Claro, se pueden idear otros sistemas ( cobrando una cuota fija a fin de mes, o bien retener tus ganancias y luego dartelas descontando un porcentaje ).

Ahora bien , no nos engañemos. Las personas que usan Android son famosas por ser "Ratas", la gente de android AMA lo gratuito, no importa cuanto te esfuerzes,siempre vendra alguien con la "innovadora idea de regalar la aplicacion" y saldras perdiendo, en realidad TODOS SALDREMOS PERDIENDO.
Se mal acostumbra a la gente, lamentablemente cuando uno regala aplicaciones, hace un mal al sistema.
Es exactamente lo mismo que 2 personas que trabajan y una le dice al jefe que puede hacer lo que hace el otro "de gratis" o "por el mismo dinero" y el resultado es que despiden al otro.
Al final este empleado al tiempo se da cuenta de que "necesita el dinero"( casos de programadores que de golpe hacen todo pago ) y cuando se lo menciona al jefe, tambien es despedido....finalmente a la semana sera contratada otra persona que , hara lo mismo que los anteriores 2, hara mas incluso y lo hara por menos.

Si, toda la razon con respecto a que los usuarios de Android son ratas, pero como soy defensor de Android no te puedo dar la razon :P

Para mi que los usuarios de Android son ratas porque Android es muy popular. Me acuerdo que cuando me compre mi primer celular (que era Android, Un Sony X10mini) yo conocia solo un chico que tenía celular Android. Ver a Android en la carta de Claro me parecia de otro mundo, en todas las revistas de tecnología se hablaba que era casi una computadora que nadie tenía, me parecía que era algo asi como una PS3, o una Macbook es hoy

Que paso despues de tres años? Todos tienen android, el 70% de los celulares de mis compañeros son Android, es increíble. Yo me acuerdo los primeros dias cuando navegaba en el Market, y decía "Que lastima que nunca pueda jugar a este juego online, nadie tiene Android", y hoy no se puede creer que todos tengan Android.

Entonces que pasó? Ahora en las listas de más descargados no están más los juegos mas para "frikis", como Final Fantasy, Sky Map, etc. Ahora te encontrás con un montón de aplicaciones "populares", como juegos de zombis (para nada innovadores, simplemente tocarlos como Ant Smasher), la app de Facebook (la porquería mas grande de la historia en terminos de rendimiento)

¿Que se puede esperar de esa gente?
174
Cita de: tu padre en Marzo 04, 2013, 12:44:44 AM
Hay un pequeño problema en la parte de no cobrar por descarga en android, y es que la publicidad deja muy poco, lo cual hace que sea muy dificil ganar dinero con eso.
Ahora el problema a solucionar sería el por que la gente no compra el juego, y la respuesta es sencilla, y es porque se usan metodos de pago que no a cualquiera le interesa usar por su popularidad de ser complejos como por ejemplo el uso de tarjetas de credito.
Lo que yo recomendaría es que, de ser posible, y aparte de vender sus aplicaciones en google play, acercarse a esas compañias que tienen markets aparte en las que vendan juegos por medio de tarjetas prepagadas, y en las versiones lite de sus juegos anunciar donde pueden comprar esas tarjetas ;)
Coincido totalmente con vos, yo hubiera descargado varias apps buenas que valen $5, porque hay muchas y son interesantes. Si pudiera ir a un kiosco y comprar juegos como se compran los alfajores hubiera comprado juegos. Te quita ganas el hecho que tenga que pedirle permiso a tu padre, porque normalmente desconfian de poner su tarjeta de credito en la web y les parece un poco tonto hacer todo ese inmenso tramite para que su hijo tenga un Sandbox mas grande en el jueguito de Bad Piggies. (Que por cierto para el hijo si es interesante)
175
Al final que usaste? moves el boton con la view o haces que la view incluya a los dos objetos?
Si pensas usar la segunda hice un script reciés para ayudar a todos a encontrar la respuesta más rápido aquí
176
Creador:
Yo, Mgbu



Versión de GM utilizada:
:GM8:  GM8, se deberia poder usar en la mayoria de las versiones con pequeñas modificaciones


Descripción:
Es una pregunta bastante común, ¿Como hacer dos object_follow en una sola view?
El resultado sería algo así como la cámara de Super Smash Bros, que siempre muestra a todos los jugadores son importar lo separados que están, y si los personajes están juntos se hace zoom para no desperdiciar pantalla. Este script soporta a dos objetos, si necesitas mas puedes modificarlo. No es un script muy complejo


Código:
actualizarView(borde_h, borde_v, prop_h, prop_v, min_h, min_v, obj0, obj1);
EDIT: gusfavio me dio el consejo de añadir una fricción a la camara. Para no hacer demasiados argumentos es mejor poner todo en un objeto:

CREATE:
[gml]
//************//
// ARGUMENTOS //
//************//

//Bordes: Distancia del objeto al borde de la pantalla
borde_h = 100 //Borde horizontal
borde_v = 100 //Borde vertical

//Proporciones: Relacion de aspecto de la view, por ejemplo las pantallas de PC son 3:2,
//              las pantallas anchas 16:9, etc. Se puede obtener dividiendo el ancho por
//              el alto del puerto
prop_h = 3 //Numero antes de los dos puntos (horizontal)
prop_v = 2 //Numero despues de los dos puntos (vertical)

//Minimo del tamaño de pantalla: Porque si se acercan mucho los jugadores se
//                               podría ver con mucho zoom, deberia seguir la relacion de aspecto
min_h = 300
min_v = 200

//Objetos a seguir       
obj0 = obj_0
obj1 = obj_1

// Velocidad de la cámara
// En porcentaje, 0.5 = 50%, 0.25 = 25%, etc. Valores mayores a 0 y menores a 1 para no hacer lio (salvo que seas Chuck Norris, claro)
vel_mov = 0.1 // Porcentaje de distancia a la que se mueve la camara en cada step (si se pone 1 siempre va a moverse a
//             la posición ideal instantaneamente, si se pone 0.5 sólo se mueve la mited de lo que debería)
vel_zoom = 0.1 // Porcentaje de tamaño que se modifica por step (pasa lo mismo que con el anterior)
[/gml]
STEP:
[gml]
//************//
//   CODIGO   //
//************//

// -----------------OBTENER POSICION OPTIMA------------------
// Es decir la posición donde debería ir la cámara

//Saber la altura y anchura de la view

optimo_ancho = abs(obj0.x-obj1.x) + borde_h //El ancho de la view es la distancia horizontal entre los jugadores mas el borde
optimo_alto = abs(obj0.y-obj1.y) + borde_v //El alto de la view es la distancia vertical entre los jugadores mas el borde
if optimo_ancho<min_h optimo_ancho=min_h //Si el ancho de la view es muy poco limitarlo al minimo
if optimo_alto<min_v optimo_alto=min_v //Si el alto de la view es muy poco limitarlo al minimo

//Hacer las proporciones

if optimo_ancho*prop_v > optimo_alto*prop_h { //Si el ancho es mayor que lo que deberia
    optimo_alto = optimo_ancho / (prop_h/prop_v) //Hacer el alto como corresponde
}
else { //Si en cambio el alto es mayor que lo que deberia
    optimo_ancho = optimo_alto * (prop_h/prop_v) //Hacer el ancho como corresponde
}

//Mover la camara

optimo_x = (obj0.x+obj1.x)/2 - (optimo_ancho/2) //La coordenada horizontal es igual al promedio de la posicion de los
                                                     //jugadores, es decir justo al medio. Luego se le resta la mitad del
                                                     //ancho porque la coordenada correponde a la esquina superior izquierda
optimo_y = (obj0.y+obj1.y)/2 - (optimo_alto/2) //La coordenada vertical es igual al promedio de la posicion de los
                                                     //jugadores, es decir justo al medio. Luego se le resta la mitad del
                                                     //alto porque la coordenada correponde a la esquina superior izquierda

                                                     
// -----------------MOVER CAMARA------------------
// Mover la cámara respetando las velocidades

view_xview -= (view_xview - optimo_x)*vel_mov
view_yview -= (view_yview - optimo_y)*vel_mov

view_wview -= (view_wview - optimo_ancho)*vel_zoom
view_hview -= (view_hview - optimo_alto)*vel_zoom
[/gml]
Recuerda activar "Enable the use of views", "Visible when room starts"


Ejemplo de uso adjuntado

Moverse con WASD y flechas

ejemplo.gmk es la versión vieja, no incluye fricción pero contiene todo en un script
ejemplo avanzado.gmk tiene fricción y es lo mismo que está escrito arriba
177
Bueno, a esto lo solucione varias veces. Lo increible es que es la tercera vez que te respondo lo mismo :P

La primera vez que respondí esta pregunta fue a un post tuyo aquí, pero bueno, no se puedo responder
Luego otro chico me preguntó, y como esta vez estaba en casa hice mi mejor respuesta que es esta
Y acá te enlazé la misma respuesta en otra pregunta anterior tuya

En total son dos engines, espero que salga :D

Pero esa no es la mejor forma de solucionar tu problema, lo mejor sería que muevas el botón junto al Jugador, entonces el object follow se setea al jugador, y al botón le agregas este código en step:

x = view_xview + 20
y = view_yview + 10


Entonces como resultado el botón va a estar siempre arriba a la izquierda en la pantalla, obviamente si queres mover el boton podés cambiar el 10 o el 20.
Te explico por que funciona, porque el Game Maker guarda en la variable view_xview y en view_yview la posición de la camara en la room, normalmente la posicion es 0, entonces en el mundo el boton estaria en (20, 10). Lo interesante es cuando la camara por ejemplo se mueve 10 pixeles a la derecha, provocando que view_xview sea 10, entonces ahora el boton esta en la posicion (10 + 20, 10) = (30, 10)
Entonces el boton siempre estara en pantalla.

Saludos! ;D

178
Pero si vas a crear objetos en el create tené cuidado de no pasarte, el evento step se ejecuta 30 veces por segundo (si no cambiaste room_speed) entonces luego de 10 segundos vas a tener 300, y cada vez mas y mas.
Si necesitas crear por ejemplo 20 objetos aleatoriamente yo pondría en create lo que te mostró elviskelley
Si no te acostumbras a usar la sentencia "for", podés usar "repeat" que puede ser mas intuitiva al principio. Se usa así:

repeat (20) {
    instance_create(irandom(room_width),irandom(room_height),object0);
}
179
Cita de: elviskelley en Marzo 02, 2013, 01:51:43 AM
Ahora un chite para que te rias un poco, cuando lei de el titulo del post, lo primero que pense fue.
- Y por que Fer... No usa mejor sprites o modelos si son mas practicos. jajajaja
Hacer un generador de arboles aleatorios estilo Minecraft estaria bueno, ahora que diste la idea :P
180
Vos decis darle paralaje? que las puntas de los edificios se muevan mas rapido que las bases por ejemplo

Para mi lo mejor seria usar varios backgrounds, uno para cada "nivel" o velocidad de movimiento. Luego los que van atrás simplemente los colocas en la pista, pero si queres que otro se mueva mas lento podes hacer algo asi como
background_x = x * 0.7
Entonces ese se moveria mas lento que uno
background_x = x

No se si se entiende, pero si buscas ejemplos de paralaje vas a encontrar facil