Div Games en Html5 y Canvas

Started by AmakaSt, September 07, 2012, 03:28:01 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

AmakaSt

Hola oskarg,

Muy chulo te está quedando, es clavado a como se movía en Jet set Willy. :)

Sobre get_point() es como dices, x_point e y_point están obteniendo los valores de la posición x e y de los cpoint y en el get_real_point() es a partir del grafico del proceso que lo llama.

get_point(file, graph, point, offset point_x, offset point_y); //devuelve los offset
get_point(point, offset point_x, offset point_y); //devuelve los offset pero del graph del proceso que lo llama

Un saludo.

oskarg

Hola AmakaSt,
Ahora estoy con el motor generico,me ha servido bastante hacer la base del jet set willy,lo que hacia era buscar colisiones en los 4 lados de una caja y segun que lado chocaba hacia cierta accion, veo que no es necesario,simplemente hay que buscar la colision en la caja y si chocas ,pues retrocedes para no quedarte anclado :P
A ver cuando lo acabo y entonces si,te paso algo decente para que lo incluyas a divgo.
Un saludo.

oskarg

#812
Hola AmakaSt,
Estoy con la duda de como hacer el motor de scroll de 320x240  de 16x16 tiles....a ver si me echas un cable..
Metodo
1.Hacer un motor puro de tiles aunque esto creo que no es lo mas adecuado pues  320/16=20 240/16=20  es decir 20x15==  300 tiles por capa.

2.Carga el mapa completo y utilizarlo directamente.Me limita mucho hacer mil efectos...

3.Partiendo de base el de arriba ,utilizar un sistema tipo neogeo,.......cargar en memoria los mapas enteros pero en memoria,es decir en el fpg ya lo tengo dibujado las capas.Entonces Copio del mapa de memoria fpg tiras de 16*256 ,tendria 20 tiras por capa +20 tiras si es mas alto que el mapa base...es decir si no fuera como el juego megaman ...si no fuera lineal ...

4.Crear un mapa base de 320x240 y aqui aplicar el scroll...como trabajo en 32 bits,cada vez que avanzo 16 pixeles copio 16x16 pixeles de tiles si avanzo a la derecha..es decir 240/16=15 pero como tengo que borrar porque trabajo en 32 bits son el doble de operaciones es decir 30...mas un lateral si fuera multidireccional ,es decir ,unas 60 operaciones "pega pastes".por capa...
Rectifico:serian 30 operaciones mas dos borras de ritas de 16*240 . por capa

5.leer aquello que me expresas,pues tu eres el creador de la criatura y no se que es lo mas optimo y eficiente y segun me digas pues lo hago.
Un saludo.

oskarg

Vale...de momento utilizo el metodo 4,va bastante rapido.....

oskarg

Hola amakast,
Cuando llegue a casa te Cuelgo un ejemplo de scroll que no funciona bien,si lo muevo manualmente va,pero si el tamaño del mapa es  a partir de una medida más grande que la resolución de pantalla ,llega un momento que se para,debe ser una tontería, pero  no entiendo  el motivo o la explicación

AmakaSt

Quote from: oskarg on March 09, 2020, 11:48:26 AM
Hola amakast,
Cuando llegue a casa te Cuelgo un ejemplo de scroll que no funciona bien,si lo muevo manualmente va,pero si el tamaño del mapa es  a partir de una medida más grande que la resolución de pantalla ,llega un momento que se para,debe ser una tontería, pero  no entiendo  el motivo o la explicación
Hola oskarg,

Portando mi juego Panic! también he encontrado un bug en el scroll con el segundo plano (el del fondo) al iniciar el scroll con la cámara en una posición baja, una vez la cámara se mueve en la posición de más arriba este se ajusta haciendo un parpadeo un tanto feo.

Cuando tengas el ejemplo pásamelo y así corrijo todos los problemas con el scroll. :)

Un saludo.

AmakaSt

Hola,

Aquí dejo unos ejemplos de efectos que se me han ocurrido usando la función get_image_tiles():

Efecto con tone: https://www.divgo.net/c-6e4c9b4e
Efecto con size_y: https://www.divgo.net/c-05aeab30
Efecto con mouse: https://www.divgo.net/c-6ed785f4

Y aquí dejo un ejemplo de escritura, para que se pueda aplicar en un marcador de record o en donde sea: https://www.divgo.net/c-05275e59

Un saludo.

hokuto40


AmakaSt

#818
Buenas a todos,

Ya está disponible online (para realizar testeos) una nueva versión de DivGO para pasar esta cuarentena, la versión 1.28.0 y sus novedades: 


funciones:
   - change_text();

bugs y mejoras:
   - [ADD] nuevas opciones en editor gráfico
   - [ADD] aumento de rango size en editor gráfico
   - [FIX] corregida declaración array si se declara con un operador obtiene valor de la operación
   - [FIX] datos de variables reservadas para get_id() y colisiones
   - [FIX] solucionado problema con espacios reservados a condiciones
   - [FIX] screen_mooth() y screen_scaline() ahora funcionan bien dentro de bloque loading
   - [FIX] problemas en el compilador al unir condiciones and y or si tiene un salto de línea
   - [FIX] solucionado problemas con scroll y su inicialización si existía una iniciada antes
   - [FIX] corregido problemas con draw() y xdraw() al definir tamaño de su región
   - [DEL] opción smooth en editor gráfico no tenia sentido, ahora siempre a false




Ejemplo de la función change_text(): https://www.divgo.net/c-d364937d

Un saludo.

AmakaSt

Buenas,

Otra versión subida, la 1.28.2, que mejora el redimiento de la función map_get_pixel(): https://www.divgo.net/c-b5d6b9bd

Un saludo.  8)

hokuto40

Hola Amakast.

Puedes explicarme como usar estas funciones:

path_find(modo, fichero, gráfico, escala, x, y, OFFSET estructura, sizeof(estructura));
path_free(fichero, gráfico, escala, x, y);
path_line(fichero, gráfico, escala, x, y);


Estas funciones se me resisten,sigo sin saber como usar esto,otra cosa...hace tiempo subistes un ejemplo para que una nave siguiera un recorrido pero sigo sin entender el codigo,puedes explicarmelo.

Te pongo el enlace de tu ejemplo.
https://www.divgo.net/c-df6b4c63

Por cierto,la pagina de divgo hay veces que no funciona y cuando pude entrar y intente entrar en los ejemplos no funciona el enlace.

AmakaSt

#821
Hola hokuto40,

Estas 3 funciones las he estado probando ahora y no están funcionando correctamente, puede que haya cambiando alguna cosa reciente que ha afectado su funcionamiento. Las pongo en pendiente de corrección para la próxima versión.  ???
PROGRAM ejemplo_get_point;

GLOBAL
    fichero1;
    punto=1;
    x_punto;
    y_punto;

BEGIN
    set_mode(m320x200);
    fichero1=load_fpg("graficos/help");
   
    put_screen(fichero1, 4);
   
    graph=101;
    file=fichero1;
       
    LOOP
        IF (fget_dist(x, y, x_punto, y_punto)<6)
            IF (punto++==50) punto=1; END
        END

        // Cogemos el punto de control
        get_point(fichero1, 4,punto, offset x_punto, offset y_punto);

        angle=fget_angle(x, y, x_punto, y_punto);
        advance(6);
        FRAME;
    END
END


Hay 4 funciones claves que hace que todo funcione así, la primera condición dentro del loop lo que hace es comprobar con fget_dist() la distancia del punto (x_punt, y_punto) y la nave (x, y) y si es menor de 6 pixeles en la siguiente condición incrementa 1 punto y comprueba si es igual de 50 para volver al punto 1.

Luego get_point() devuelve la posición x e y del siguiente punto (en la condición anterior lo ha incrementado o devuelto al primero) y los pasa a la variable x_punto e y_punto.

Y por último fget_angle() devuelve el ángulo que hay entre las variable x e y de la nave y x_punto e y_punto, al devolverlo a la variable angle esta cambiando el ángulo de la nave y luego advance() hace que la nave se mueva en la dirección del ángulo.

Y no hay más...

Sobre que a veces no te funciona la pagina... No te carga la pagina al pulsar en los enlaces o la pagina en si?

Un saludo.

hokuto40

¿Pero como va esto?,yo dibujo un recorrido en el mapa y con ese codigo me lo recorre el sprite,¿da igual el recorrido que dibuje?.

¿Hay que crear un fondo y luego otro fondo en negro con el recorrido?,no tengo ni idea de como va esto.

Lo mismo me pasa con la funcion path_find(),no se exactamente que es lo que hay que hacer.

AmakaSt

Quote from: hokuto40 on April 10, 2020, 07:05:55 PM
¿Pero como va esto?,yo dibujo un recorrido en el mapa y con ese codigo me lo recorre el sprite,¿da igual el recorrido que dibuje?.
¿Hay que crear un fondo y luego otro fondo en negro con el recorrido?,no tengo ni idea de como va esto.

Lo mismo me pasa con la funcion path_find(),no se exactamente que es lo que hay que hacer.
Sí a lo primero pero debes ponerle puntos de control con un editor FPG o de MAPs (solo estos dos formatos tienen los puntos de control). Se pueden añadir también por código a cualquier imagen con la función set_point(fichero, gráfico, número, x, y);

En este ejemplo veras los puntos de control que tiene ese MAP: https://www.divgo.net/c-74c4ef60

La función path_find() si que funcionaba con tonos en blanco y negro.

Un saludo.

hokuto40

#824
Ahora si que a quedado claro,gracias. ;)

Tengo otra duda.
IF (fget_dist(x, y, x_punto, y_punto)<6)
            IF (punto++==50) punto=1; END
        END

Este codigo seria igual a este.
IF (fget_dist(x, y, x_punto, y_punto)<6)
            punto++;
            IF (punto == 50) punto=1; END
        END


Por cierto cuando arregles estas funciones seria bueno que hicieras algunos ejemplos con ellas, que no hay.
path_find(modo, fichero, gráfico, escala, x, y, OFFSET estructura, sizeof(estructura));
path_free(fichero, gráfico, escala, x, y);
path_line(fichero, gráfico, escala, x, y);