Getting started

Started by Drumpi, January 18, 2017, 02:41:28 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Drumpi

Hola de nuevo:

Bueno, abro hilo para ir preguntando dudas que me surjan en el desarrollo de DivGo.
Y la primera va a ser la más obvia ¿Cual versión uso? He descargado los dos archivos de la v1.08, la desktop y la que no tiene sufijo. Veo que la desktop, aunque es más grande, ya trae un .exe para empezar a trabajar, parece que no necesita instalación, como parece que se necesita para la otra, que hay que andar descargando e instalando librerías.
A mi no me gustan los instaladores, prefiero que los programas funcionen y, cuando ya no los quiera, borre la carpeta y me olvide (sé que hay desinstaladores, pero muchos de ellos aun así dejan basura).

Así que ¿por dónde empiezo? ¿Y hay algún tutorial de toma de contacto o me puedo poner a programar a las bravas como si fuera DIV2 directamente? :D

Gracias :)
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

AmakaSt

#1
Hola,

No es necesario descargar ambas versiones, la desktop es solo para Windows y es para los que no saben o no quieren instalarse Wamp o Xampp en el equipo, que es necesario para poder ejecutar PHP y MySQL en localhost. Xampp o Wamp (u otro) lo necesitaras a la larga si quieres crear cuentas de usuario o guardar datos en una BBDD en local. Para Linux y Mac no hay versión desktop, es descomprimir dentro de las carpeta httpdocs en Xampp, o www en Wamp (Mamp en MacOS y Lamp en Linux).

Crea una carpeta con el nombre del proyecto y descomprime DivGO en ella, podrías tener varios proyectos en una sola carpeta de DivGO va a gusto de cada uno. Veras que en la versión Desktop hay una carpeta www, ahí está DivGO, es exactamente lo mismo que la versión que no incluye Windows desktop, al ejecutar lo que se visualiza es lo de esa carpeta, y ahí es donde podrás añadir los assets de tu juego, también se puede incluir gráficos y crear fpgs desde el entorno.

Y desde el entorno, ya puedes programar como si fuera Div2, desde el menú hay una lista de funciones y variables, algunos con ejemplos. Para ver los ejemplos mejor hazlo desde www.divgo.net, o si no, abre otra pestaña aparte para verlos, otra aparte a la de tu propio juego porque si no lo acabaras pisando con algún ejemplo.

Tu proyecto se guarda cada vez que compilas en el navegador en local, también lo puedes descargar y te generara un archivo prg, o guardar en la "nube" y recuperarlo con una clave encriptada con el que se asocia cada código.

Y ya no sé que mas contar... :P

Cualquier duda que tengas me comentas,

Un saludo.

Drumpi

Ah, genial, porque me estaban obligando a instalar Wamp en el curso de PHP, así que ya tengo dos excusas para hacerlo.

Y no me gusta la idea, sobre todo porque eso significa que voy a tener Apache funcionando cada vez que arranque el ordenador... creo. Cuando estaba trabajando no vi la opción de pararlo (aunque no iba a andar parando servidores ajenos sin saber lo que hacía :D).

Hablando de recursos ¿Los FPG son sólo de 8bits o hay compatibilidad con algún estandar de 16/32bits actual? ¿O es preferible usar PNG con transparencias para reducir los tiempos de carga/descarga de recursos?
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

AmakaSt

Se puede parar los servicios, normalmente esta el icono de Wamp en la parte inferior derecha, desde ahí también puedes activar o desactivar opciones de PHP.

DivGO soporta los FPG de 8, 16 y 32bits, pero como ya has dicho y siendo para web lo mejor es tenerlo en PNGs, es mas rápido cargando y si el FPG llega a ocupar más de 5Mb el navegador se queda colgado esperando a que se acabe de producir esa carga. Hice en DivGO un sistema de "FPG" por carpetas, colocando los gráficos numerados del 001.png hasta el 999.png.   8)

graficos = load_fpg("mi_carpeta_fpg"); // Y esto funciona como un fpg tradicional donde el 001.png será el graph = 1


Un saludo.

Drumpi

Bueno, por fin he podido ir ejecutando unos cuantos ejemplos y probando DivGo.
De momento me ha gustado lo que he visto: muy buena fidelidad a Div (incluso el modo7 se parece mucho al del Div original), parece que buena respuesta...
Por un momento pensé que por cada proyecto tendría que generar una copia de DivGo, pero ya cuando compilé el primer código vi que no. Tambien el tema del sistema de carpetas de DIV, que no me gustaba nada (prefería tener todos los recursos de un juego en la misma carpeta), y que ya no te fuerza a que los fpgs estén en la carpeta FPG... Good, good!

El ejemplo de 3D lo he visto muy lento, demasiado, no parece que tenga utilidad si queremos hacer un Doom, porque va a ir arrastrándose ^^U En cuanto le he añadido unos 7 elementos a la escena, han empezado a caer los FPS ¡Y yo que quería hacer el "Drajon Lol: devolucion extreme edition" en 3D reales y no con 3 modos 7!

Lo que ya no sé si me convence es que al compilar el código, este se queda entero en el HTML, y cualquiera puede verlo ¿Hay forma de ofuscarlo, ocultarlo o algo así?

Ya iré viendo más ejemplos, pero si es tan fiel como parece al original, lo mismo me animo y termino aquel primer juego que empecé hace la tira, y que no he acabado porque ya no uso DIV2 (y porque tenía un problema con los random, que no eran random :S).
Es que me gusta la idea de que pueda interactuar con una base de datos mediante PHP, y que sea mas web-friendly que DIV3, que este sí que parece que ofusque/compile el código ^^U.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

alicesimu

Me gustaria trastear con este entorno y Div-like, me resulta muy atractivo.
Consiste en poder ejecutar juegos en lenguaje Div?? es un Fork de BennuGD???
Directamente des de cualquier navegador WEB??

Documentacion hay? que debo descargar e instalar?

se debe tener en localhost? o puedes gestionarlo en tu propio host de dominio publico(free)
poseo un host gratuito, con soporte de base de datos mySQL y PHP lo tipico.

Me gustaria saber que características contiene y limitaciones.
Existe la posibilidad de guardar datos: save, fopen,load... o ese tipo de operaciones no son validas??¿¿¿


Quiero informarme, por cierto genial proyecto puro HTML5 genial!!

Drumpi

Hasta donde he probado, es como cualquier aplicación PHP: puedes trastear en local si tienes instalado WAMP, XAMMP o instalando Apache, MySQL y PHP/PHPmyadmin. Es crear una carpeta en c:/wamp/www y meter ahí la versión de divGO (la que no es desktop), y desde el navegador, accediendo a http://localhost/divgo (o lo típico para acceder a la carpeta, según el nombre y el puerto) tienes un entorno de desarrollo con editor de código, de FPG, etc.
Por lo demás, se parece mucho a programar en DIV, incluso tienes el mismo esquema de carpetas, con la diferencia de que no estás limitada a la carpeta FPG para guardar los FPG (yo prefiero crear una carpeta en la de divGo para meter los recursos de cada proyecto).

Una vez que has comprobado en su reproductor que todo funciona, le das a compilar y te genera un .zip con todos los recursos que usa tu juego (no sé qué seleccionará, pero puedes añadir y quitar ficheros a tu gusto, es un zip), un html con el programa y los js de divgo (que ocupa unos pocos KB), que puedes subir a tu hosting y enlazarlo desde tu web principal.
Recomiendo que trabajes siempre en local, y cuando lo tengas listo, lo pases a tu hosting (a menos que quieras ir haciendo pruebas periódicas de funcionamiento, pero nunca trabajes en remoto).

En cuanto a si es DIV, o un fork de BennuGD, ni idea. Te puedo decir que el modo7 es más parecido a DIV que a Fenix, pero ya está. Aparte, hay funciones propias, modos de 16 y 32 bits, funciones 3D, y creo que también las hay para interactuar a nivel de web (BBDD MySQL, php, url, etc...). Hay documentación, pero apenas la he mirado, todavía estoy con los códigos de ejemplo que trae (hay varios juegos de DIV, como el Malvado, el Steroid o el Super Paf).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

oskarg

Es para daros un tiron de orejas a los dos  ;D pues  Divgo esta genial y es una lastima que tan poca gente lo pruebe y lo baje...Ojala que la gente se anime y amaka siga con este gran proyecto,pues es libre y facil de utilizar.

Drumpi

Pues nada, aprovecha y responde a las dudas que quedan por resolver, porque a mi también me interesan las respuestas :D :D :D
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

AmakaSt

#9
Quote
Lo que ya no sé si me convence es que al compilar el código, este se queda entero en el HTML, y cualquiera puede verlo ¿Hay forma de ofuscarlo, ocultarlo o algo así?

Hola,

Div GO tiene una opción para minificar el código, pero también puedes coger el script del código y llevarlo a un archivo js y minificar ese archivo, la ofuscación del script no es muy aconsejable, dependiendo como este ofuscado el navegador o el antivirus puede bloquear el script y considerarlo inseguro.

Quote
Consiste en poder ejecutar juegos en lenguaje Div?? es un Fork de BennuGD???
Directamente des de cualquier navegador WEB??

Documentacion hay? que debo descargar e instalar?

se debe tener en localhost? o puedes gestionarlo en tu propio host de dominio publico(free)
poseo un host gratuito, con soporte de base de datos mySQL y PHP lo tipico.

Me gustaria saber que características contiene y limitaciones.
Existe la posibilidad de guardar datos: save, fopen,load... o ese tipo de operaciones no son validas??¿¿¿

No es ningún Fork de Div, Fenix o BennuGD, esta programado en javascript y PHP de cero. Empezó como una librería propia para hacer juegos para navegador, basándome en algunas funciones de Div2 pero a 32bits de color, por lo que no hace uso de paletas. Tiene muchas funciones y variables compatibles de Div2, pero también de Fenix, BennuGD o Gemix, como son: size_x, size_y o alpha.

He intentado poner mucha documentación, pero todavía me falta añadir más ejemplos y describir un poco más las nuevas funciones. Para poder empezar hay una versión desktop para windows, que no requiere de ningún tipo de instalación.

Puedes gestionarlo donde quieras, en local o en un servidor propio (free o no free), pero lo mejor y más rápido es que tu proyecto lo puedas gestionar en tu equipo, luego puedes empaquetarlo y subirlo al servidor que quieras, incluso puedes empaquetarlo en una versión ejecutable usando nw.js o electron. Para hacer funcionar un proyecto empaquetado con DivGO no requiere de PHP o MySQL en el servidor para tu proyecto, pero si quieres guardar datos en una BBDD, crear cuentas de usuario y hacer cosas más avanzadas, te hará falta.

Se puede guardar datos de 3 formas distintas, cree nuevas funciones para cada caso:
Para datos locales en el navegador:
- delete_local_storage(OFFSET variable);
- find_local_storage(OFFSET variable);
- load_local_storage(OFFSET variable);
- save_local_storage(OFFSET variable);

Para datos externos, enviados por POST y poder recogerlo mediante PHP y guardar estos datos en un servidor:
- load_external_data(nombre de archivo);
- save_external_data(ruta del archivo, OFFSET variable);

Para datos de sesión, estos son temporales una vez cierras el navegador se pierden:
- delete_session(OFFSET variable);
- find_session(OFFSET variable);
- load_session(OFFSET variable);
- save_session(OFFSET variable);

Un saludo.

Drumpi

Bueno, de momento no pretendo hacer nada serio, pero si luego quiero crear un programa con contenido de pago ¿no sería un problema el que se pueda acceder al código fuente? He visto lo de minificar, pero con mucha paciencia se podría descifrar ^^U

Y es interesante lo de poder acceder a BBDD, a ficheros locales, ficheros de sesión (¿qué son y dónde se guardan?) y ficheros remotos. Tengo un proyecto entre manos en el que me vendría bien que el usuario pudiera leer imágenes de mi servidor, y que pueda añadir los suyos propios.

Ah, y una pregunta que me dejé en el tintero: ¿se puede dividir el código en distintos ficheros? Igual que Fenix/BennuGD tienen con include. Es que si no, mantener el código, aunque sea con Notepad++ puede ser difícil en cuanto se pasen las 2000 lineas de código.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

AmakaSt

#11
Quote from: Drumpi on January 30, 2017, 08:26:34 PM
Bueno, de momento no pretendo hacer nada serio, pero si luego quiero crear un programa con contenido de pago ¿no sería un problema el que se pueda acceder al código fuente? He visto lo de minificar, pero con mucha paciencia se podría descifrar ^^U

Y es interesante lo de poder acceder a BBDD, a ficheros locales, ficheros de sesión (¿qué son y dónde se guardan?) y ficheros remotos. Tengo un proyecto entre manos en el que me vendría bien que el usuario pudiera leer imágenes de mi servidor, y que pueda añadir los suyos propios.

Ah, y una pregunta que me dejé en el tintero: ¿se puede dividir el código en distintos ficheros? Igual que Fenix/BennuGD tienen con include. Es que si no, mantener el código, aunque sea con Notepad++ puede ser difícil en cuanto se pasen las 2000 lineas de código.

Hay ofuscadores de Javascript online como: http://www.danstools.com/javascript-obfuscate/index.php

Las variables de sesión y las localstorage los almacena el navegador, como las cookies, pero con las localstorage se puede guardar una gran cantidad de datos, que para guardar partidas de un juego va genial. En DivGO las utilizo para guardar los cambios en los gráficos desde el editor.

Si que hay include, se tiene que añadir en el program antes de begin, pero si tienes un error en el archivo que incluyes no te lo marcara en el código, solo te avisara de que hay un error.

Drumpi

Entiendo entonces que include no es exactamente un "copia/pega" como en Bennu, sino más bien como una llamada a una librería externa ¿no?
Estaría bien que pudiese indicar los errores de compilación en los includes, pero bueno, siempre se puede poner el proceso en el main y luego moverlo al include, una vez que sabemos que funciona.

Y ese ofuscador hace lo mismo que el minificador tuyo, con la diferencia de que en lugar de llamar "variable1" a las variables, las llama "jvndvibv", que para el caso es lo mismo ^^U
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Drumpi

Vale, primer problema que me encuentro que no sé resolver.
Suelo usar desde hace eones el siguiente proceso dummie para mostrar gráficos:

process dummie (file, graph, x, y, z)
begin
    signal(id,s_freeze);
    frame;
end

De esta manera no consume recursos y si hay que hacer algo con él lo hago desde un proceso aparte. Sin embargo, en DivGo, el proceso dummie muere. Tengo que sustituir su contenido por "loop frame; end".
He intentado ponerle dos frames, a ver si era cosa de la sincronización de procesos, pero que va.

Otra cosa. Vale, hace mucho que no uso DIV, pero ¿no se podían declarar las variables de tipo INT? me da un error cada vez que lo intento, tanto en GLOBAL/PRIVATE como en los parámetos de entrada de funciones y procesos.

Ah, y esto me da error de índice de array negativo:

CONST
    _CTE_A = 10;
GLOBAL
    mi_array[_CTE_A - 1];
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

AmakaSt

Es curioso, he estado probando lo que comentas del proceso dummie y he visto que en Div GO me ha funcionado haciéndolo al revés, primero frame y luego signal.  :o


process dummie (file, graph, x, y, z)
begin
    frame;
    signal(id,s_freeze);
end


Y así funciona, como te quedas?. xD

Me lo revisare a ver que pasa, ahora no recuerdo exactamente a qué se puede deber.

Sobre los tipos, DivGO no requiere de la declaración de tipo de variable (es de tipado débil) como pasa en PHP, Javascript o Python.

Y lo del array, prueba en poner el valor numérico a la hora de declararlo en el inicio.

Un saludo.