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

181
Os paso un ejemplo en 3D de cube mapping, donde creo un cubo 3D (por ahora sin techo ni suelo) y podéis, con el ratón, mirar en todas direcciones.

La room es 500x500. Zoom inicia en 2.
Fijáos en el multiplicador. A la hora de definir la proyección multiplico por "zoom" las coordenadas del personaje, que inicialmente son 250, 250.
Dibujo los muros en x=0, 500, y=0, 500. El personaje, por lo tanto, queda en el centro. Si véis la room todo esto es perfecto.

Entonces, iniciando con zoom = 2, el personaje pasa a 500,500, pero los muros se dibujan en 0, 0, 1000, 1000. Podéis aumentar mucho más zoom. Si os fijáis el personaje siempre queda en el centro de la sala, pero cada vez hay más distancia entre él y las paredes. O sea, debería ver las paredes cada vez más lejos.

PERO NO!

Las paredes nunca cambian, es absurdo! A ver quién encuentra qué falla, porque estoy volviéndome loco!! Por lógica, al aumentar el zoom, el personaje siempre debería quedar en el centro de la sala, pero ésta hacerse cada vez más grande. Quiero verla grande, si os fijáis al ejecutar hace demasiado zoom en ellas, pero no funciona!

PD: No sé si sería más bonito visualmente hacer esto en 3D o en 2D, pero en 2D tenía problemas a la hora de alzar la vista, no sabía cómo, así es más fácil, aunque temo que las cosas se deformen

Edit: he logrado alejarlo usando d3d_set_projection_ext en su lugar, y aumentando el ángulo "field of view", se ve más lejos pero el zoom deja de funcionar, no le veo sentido a que aleje los muros (porque se alejan, no veo razón para que eso falle) y no se dibujen más lejos, así que no podría considerarlo resuelto, quiero saber exactamente qué falla
182
Mano izquierda
WASD para moverte en las 4 direcciones, o AD a los lados, W salto y S agacharse si es plataformas. Q y E como botones de acción (por ejemplo E para hablar, recoger o activar objetos). También, si hacen falta teclas, suelo añadir RF. El típico R para recargar, por ejemplo.

Mano derecha
Luego las flechas de dirección dependiendo del gameplay. Por ejemplo si el personaje tiene 4 elementos y puede combinarlos, tipo Avatar, pues cada flecha activa 1 elemento, y combinando las flechas pues haces cosillas. Las 4 flechas pueden ser sustituidas por el ratón y sus dos clicks.

Generalmente me ciño a eso. Y en league of legends también tengo eso (W ultimate, ASD skills, QE summoner spells).

No suelo usar NUNCA espacio, control ni shift. Aunque ahora que lo pienso es tontería xD y bueno, el espacio lo usé. Sí, combinar espacio con WASD QE es perfecto. Control y Shift ya no...
183
Dale una variable quieto = false, entonces, cuando pierdas el control, asígnale quieto = true, y recuerda darle false de nuevo cuando recuperes el control.

Una vez hecho esto basta con poner un..

if (quieto) exit;

al inicio de todo el código en un evento. Si lo haces, todo lo siguiente en ese evento, y en todas las páginas de código del evento, no se ejecutará cuando pierdas el  control. Añádelo antes de donde tengas los controles programados. Si no quieres desactivar el evento ENTERO sino solo una parte haz un...

if (!quieto) {
// AQUI EL CODIGO
}


Todo el codigo dentro de lo anterior sólo se ejecutará si tienes control, permitiendo lo que esté fuera ejecutarse aún sin control (por ejemplo sus físicas, no queremos que pierda el control y quede flotando en el aire).
184
Preguntas y respuestas / Re:ELECCION RANDOM
Mayo 22, 2015, 09:53:10 PM
Cita de: Yoo en Mayo 22, 2015, 01:40:14 AM
GRACIAS lo probare!  :D :D :D :D :D
(creo que el azar esta en que vaya muy rapido y no sepas donde parar ,creo :-[)

Concretamente hablando no sería azar. Si puedes calcular el momento exacto en que pulsas, básicamente.

Lanzar una moneda NO tiene azar. Si puedes calcular la fuerza, altura y ángulo con que la lanzas, puedes calcular en qué cara caerá. Puedes volver al pasado en el instante del lanzamiento y siempre saldría lo mismo. En este universo prácticamente NADA tiene azar. Ni siquiera cómo se mueve el aire o el fuego. Incluso tus decisiones está condicionadas, según tus creencias, tus ideales... y en general TÚ MISMO, TU MENTE, tus recuerdos, tus sentimientos, todo ello dirá qué elegirás, aunque "creas" que realmente eliges. Piensa en ello xD creo que lo único que hay de azar es.. la teoría del caos, algo que ver con el movimiento caótico de las cargas, ahí ya no sé, nunca he buscado.

Dejando la filosofía a parte, para que sea azar, hay que hacer lo que dije del choose. Eso le dará un valor realmente de azar a la velocidad con que acaba. Bueno, volviendo a la moneda filosófica, realmente no sería azar, pero para los humanos es azar al 100%.
185
Preguntas y respuestas / Re:ELECCION RANDOM
Mayo 22, 2015, 01:24:45 AM
Create
cuenta = 1;
cantidad = 1;


Step
cuenta += cantidad;
if (cuenta >= 13) cuenta = 1;

if (keyboard_check_pressed(vk_enter)) cantidad = 0.9;
if (cantidad < 1) cantidad -= 0.01;
if (cantidad <= 0) show_message(round(cuenta));


Draw
for (i = 1; i <= 12; ++i) {
var s; s = string(i); if (round(cuenta) == i) s += " <";
draw_text(5, 5 + i*15, s);
}


A partir de ahí puedes ir tocando los valores para ajustar la velocidad, y dibujarte las cosas como quieras
fíjate que no hay nada de azar en el problema, todo depende de en qué momento pulses enter. Puedes añadir azar si quieres, bastaría con, en step, en la parte de cantidad < 1, en vez de restar 0.01, restar una variable, cuyo valor es igual a choose(0.01, 0.02, 0.03, 0.04, 0.05) por ejemplo. Este valor lo asignas en create, para que sea uniforme
186
@3dgeminis, perfecto, eso buscaba. Así que los juegos que haga sin míos, puedo cobrar por ellos sin restricciones ni dar a nada a nadie. Siempre que use material sin copyright, claro. a demás de no pagar también me interesaba saber si el juego era mío al 100%, parece que también, dice que es de mi propiedad aún haciéndolo con gm

@king195, gracias por el aviso, aunque esto ya lo sabía. Ehm.. pensaba que eran 90€ (me lo dijo mi jefe, si no, no hubiera sabido lo de la tasa xD). Bueh xDD la cuestión es que sí, hay que pagar una tasa inicial en steam para comenzar a subir juegos, y luego que lo acepten en greenlight. Para esto segundo dudo que haya problema :) pero viene bien tenerlo en cuenta, algunos pueden no saberlo

lo marco como resuelto pero supongo que se queda ahí por si alguien quiere aportar algo más
187
Buenas! Pues llevo tiempo haciendo un juego con un grupo de amigos, programándolo en GM: Studio, la versión gratuita  que me bajé cuando la pusieron gratis (creo que fue standard, pero ahora la sigo viendo gratis), de siempre he pensado (leí por ahí) que podías comercializar perfectamente los juegos, pero ahora dudo, porque no encuentro nada al respecto... nuestra intención es subirlo a steam. Exactamente cómo va el tema, si se puede hacer gratuitamente, el papel de yoyogames (o quien tenga ahora el gm studio)... info, info D: muchas gracias
188
Ok, muchas gracias por el ejemplo. Ya lo he destripado y lo he logrado



para quién le interese, tengo esto en el evento create:
// Posición de la cola y los ángulos de las conexiones
xCola = 400;
yCola = 500;
conexiones = 6;
aCola[0] = 90;
aCola[1] = 80;
aCola[2] = 70;
aCola[3] = 60;
aCola[4] = 50;
aCola[5] = 40;

// El path que define el camino de la cola
path = path_add();
path_set_closed(path,false);
path_set_kind(path,1);
path_set_precision(path,8);

var xC, yC; xC = xCola; yC = yCola;
for (i = 0; i <= conexiones; ++i) {
    path_add_point(path, xC, yC, 0);
    if (i < conexiones) {
        xC = xC + 100*cos(degtorad(aCola[i]));
        yC = yC - 100*sin(degtorad(aCola[i]));
    }
}

// Con path_change_point cambio la posición de los puntos para mover la cola

// Textura a dibujar
tex = sprite_get_texture(spr_bands,-1);

// Número de conexiones a dibujar, y el ancho de cada una
chunks = 20; //40
width = 100; //120


Y en Draw:
//make sure drawing is reset
draw_set_color(c_white);
draw_set_alpha(1);

//enable texture repeating so we can adjust UV coordinates past the 0-1 range to make the scrolling repeat
texture_set_repeat(true);

//draw the path as a primitive triangle strip using a for loop to iterate through each piece
for (i=0; i<chunks; i+=1){

    //set up some temp vars
    var bx1,by1,bx2,by2,bd,bd2,tx1,ty1,tx2,ty2,tx3,ty3,tx4,ty4;
   
    //get initial x,y coordinates from path
    bx1 = path_get_x(path,i*(1/chunks));
    by1 = path_get_y(path,i*(1/chunks));
    bx2 = path_get_x(path,(i+1)*(1/chunks));
    by2 = path_get_y(path,(i+1)*(1/chunks));
    bx3 = path_get_x(path,(i+2)*(1/chunks));
    by3 = path_get_y(path,(i+2)*(1/chunks));
   
    //create directions from the path x,y coordinates above
    bd = point_direction(bx1,by1,bx2,by2);
    bd2 = point_direction(bx2,by2,bx3,by3);

    //x,y coordinates for current piece
    tx1 = bx1 + lengthdir_x(width+(i*1),bd+90);
    ty1 = by1 + lengthdir_y(width+(i*1),bd+90);
    tx2 = bx1 + lengthdir_x(width+(i*1),bd-90);
    ty2 = by1 + lengthdir_y(width+(i*1),bd-90);
    //x,y coordinates for next piece
    tx3 = bx2 + lengthdir_x(width+((i+1)*1),bd2+90);
    ty3 = by2 + lengthdir_y(width+((i+1)*1),bd2+90);
    tx4 = bx2 + lengthdir_x(width+((i+1)*1),bd2-90);
    ty4 = by2 + lengthdir_y(width+((i+1)*1),bd2-90);

    //start the primitive piece
    draw_primitive_begin_texture(pr_trianglestrip,tex);
    //vertex point 1
    draw_vertex_texture(tx1,ty1,((i*(1/chunks))*1),0);
    draw_vertex_texture(tx3,ty3,(((i+1)*(1/chunks))*1),0);
    //vertex point 2
    draw_vertex_texture(bx1,by1,((i*(1/chunks))*1),.5);
    draw_vertex_texture(bx2,by2,(((i+1)*(1/chunks))*1),.5);
    //vertex point 3
    draw_vertex_texture(tx2,ty2,((i*(1/chunks))*1),1);
    draw_vertex_texture(tx4,ty4,(((i+1)*(1/chunks))*1),1);
    draw_primitive_end();
}


Arriba del todo véis la imagen, y al lado el SPRITE ORIGINAL, la cola apuntando a la derecha con fondo transparente. Nadamás, sólo esto, todo lo demás lo he borrado (si lo usáis dad créditos al link original, que esto es un curre del bueno). Sólo defines una série de puntos, y ya se hace a lo largo de éstos, y en mi caso puse un sistema para no dar puntos, sino definir un número imaginario de conexiones, y dar los ángulos de cada conexión. Fantástico :D Supongo que chunks es la calidad, número de conexiones, pero esto no cambia el largo total de la cola.
189
Cita de: Clamud en Mayo 14, 2015, 03:41:46 PM
Para hacer esa animación con eslabones y que no se noten tanto, los eslabones tendrían que ser cortos, pero al final sí se llegarían a notar. Otra método que se me ocurre es hacer la forma de la serpiente con primitivas y ponerle una textura, así no se notarían los eslabones, pero puede ser más difícil de hacer. Voy a intentar hacer un ejemplo del segundo método, espero no tardar demasiado.

En programación no suele existir lo más difícil, sino el "trabajar un poco más para obtener resultados exajeradamente mejores", estaré esperando tu idea, porque así de entrada no veo a qué te refieres :D
190
Buenash! Pues tengo que hacer, para un boss serpiente, varias colas, pero no tengo mucha idea de cómo hacer una cola de serpiente para que parezca casi real.. es decir, no simplemente X sprites conectados que se ve a simple vista (haciendo una escalera), sino que se vea fluido, como si no estuvieran conectados... que pueda mover la cola y cada una de sus "uniones" en cualquier dirección, pero que gráficamente se vea algo constante entre ellas. En 2D con sprites.

Ideas? Algo similar que ya se haya hecho para ver qué tal es e inspirarme? Ideas para código?
191
Arceus bendito! Llevo una buena media hora, o ha sido más? Pero lo he logrado! Varias cosas distintas, como que mi background es menor al tamaño de la room y lo dibujo en view_xyview, y que en la room lo tengo asignado, visible y tileado para que sea fácil editarla, y tengo que desactivarlo por código... pero lo he logrado, MIL GRACIAS!

-No sabía que con /// añades un comentario que también te comenta el icono del código... genial para identificar rápido las cosas. En ciertos objetos tengo como 3-10 iconos de piezas de código seguidos en un mismo evento, esto es genial, cómo nunca lo supe?

-Te has currado el ejemplo, o ya tenías parte hecho? Porque es super extenso, con la tilesheet, las luciérnagas, las antorchas animadas...

De nuevo gracias por el esfuerzo, lo bien explicado y la buena solución, si esque aún flipo T_T *DarkK coloca galletas y bollos en círculo y reza* eres mi nuevo dios, toma dos galletas
192
Una pregunta: a la hora de dibujar los objetos en la surface nueva, eso se hace automático: toda tile y objeto, al dibujarse, lo hará en la nueva. PERO, la nueva surface, que tiene tamaño igual a la view... tiene coordenadas iniciando en 0. Mientras que los objetos se dibujarán con las coordenadas de la room, o sea, FUERA DE LA SURFACE, que va de 0 a view_wview.

Una opción sería, por ejemplo, que los objetos se dibujen en x-view_xview e y-view_yview, o sea, se dibujan dentro de la surface, después la surface la dibujo en view_xview y view_yview. En cuanto a dibujo funciona, he hecho una mini prueba, y no me molesta poner en todos los objetos un evento draw de esa forma PEEERO... aparece un efecto window-from-windows. Al mover un objeto deja un rastro de sí mismo atrás, donde estaba antes. O sea, como si la pantalla no se limpiara, en cada step se dibuja y ese dibujado se mantiene, dejando una estela. A demás, esto no sé si puedo hacerlo con tiles... podría recorrer tile tras tile y.. o no.. la cuestión sería como hacer que las tiles se dibujen entre 0 y view_wview para que también funcione. O alguna otra solución más sencilla? Porque me preocupa, aún dibujandolo todo entre 0-W, el efecto este de dejar rastro

PD: vaya, no sabía que había draws begin y end, mola, y tiene buena pinta, a ver si solucionamos esto :D
193
Buenas! Saqué código del siguiente vídeo:
https://www.youtube.com/watch?v=dYbCfhX3Hu4

el problema es que TODA LA PANTALLA se pone oscura, y las luces lo iluminan. Quiero hacer que el fondo no se vea afectado, es decir, que el fondo siempre tenga iluminación máxima, y que la luz (todo oscuro y se ilumine con la linterna) sólo afecte a las tiles y objetos, pero NO al background. Tengo un objeto con depth 10000 que hace draw_background, pues quiero que ese draw no se vea afectado por la luz, que se vea al 100% claro.

Os pego el código del vídeo, está en el objecto controlador, -1000 depth


CREATE
light = surface_create(view_wview, view_hview);

STEP
surface_set_target(light);
draw_set_color(make_color_rgb(200, 200, 200));
draw_rectangle(0, 0, view_wview, view_hview, false);
surface_reset_target();

DRAW
draw_set_blend_mode(bm_subtract);
draw_surface(light, view_xview, view_yview);
draw_set_blend_mode(bm_normal);


Hecho eso, en cualquier lugar, por ejemplo el objeto linterna:

DRAW
draw_set_blend_mode(bm_subtract);
surface_set_target(objCtrl.light);

// Dibujar la luz: un sprite cuyos píxeles blancos iluminarán el entorno

surface_reset_target();
draw_set_blend_mode(bm_normal);
194
Bendita función la que nos trae por defecto :D Mil gracias!
195
Buenash! La duda es simple, dado un ángulo inicial val y un ángulo objetivo X, ambos entre 0 y 359, cómo obtengo cuál es la dirección de giro que he de tomar, positivo o negativo, para alcanzar X de la forma más rápida? El hecho de que salte de 0 a 359 de un plumazo jode los cálculos simples y ahora mismo ando muy perdido...