Test de mi gameEngine en processing.

Todo aquello que no está relacionado con Gemix Studio ni con la programación DIV en general.

Re: Test de mi gameEngine en processing.

Postby erkosone » Fri Feb 15, 2019 11:21 am

Te voy a dar una buena noticia...
Tengo una funcion en la recamara nene!! poligon[] getConvexHull( PImage img );

Esto quiere decir que no vas a tener que usar mas ese programa! simplemente dibujas un mapa de durezas y se lo pasas a la función.. ella te devolverá una lista de poligonos que tendrás que crear con fisica jeje..
Pero esto será para después de la libreria de red.

Pues es raro, aunque el scener fué un programa que me funcionó bien la verdad es que le dediqué muy poco tiempo, si piensas una forma mejor de hacerlo lo rehacemos :)

Haber is veo algo por internet que sea interesante, algun programa de este estilo para calcar el interfaz.
User avatar
erkosone
 
Posts: 10562
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en processing.

Postby Hokuto7 » Fri Feb 15, 2019 11:26 am

Si! ,pilasengine 1 tiene algo muy interesante y lo mas simple que he visto en mi vida,creo que tre va a encantar,pero voy a ver como te lo explico para que veas lo chulo que es.Por la tarde cuando tenga un rato veo como te lo explico. ;)
Last edited by Hokuto7 on Fri Feb 15, 2019 5:40 pm, edited 1 time in total.
User avatar
Hokuto7
 
Posts: 1035
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en processing.

Postby erkosone » Fri Feb 15, 2019 11:26 am

Por cierto.. mira que pinta tiene esto jeje.. esto este sabado estara funcionando con un servidor local desde mi telefono en android ya por fin! que dolor de cabeza con el tema este de la puñetera red multiplataforma tio..

Source Code (Java) [ Download ] [ Hide ]
  • /*
  •    
  •     netLibZero 0.1 by Luis lopez martinez..
  •     15/02/2019.
  •    
  • */
  •  
  • import ch.bildspur.artnet.*;
  • ArtNetClient artnet;
  • final byte NET_NEW_DATA = 0x01;    // new incomming messages transport first byte..
  • final byte NET_OLD_DATA = 0x00;    // when i read this message y put this first byte to mark it..
  • final byte NET_TOK_DATA = 0x07;    // delimitier for datagram tokens..
  • //------------------------------------------------------------
  • void netStart(){
  •     // create artnet client without buffer (no receving needed)
  •     artnet = new ArtNetClient(null);
  •     artnet.start();
  • }
  • //------------------------------------------------------------
  • /* CLASE MENSAJE DE RED.. */
  • class artNetMessage{
  •     byte delimitier = NET_TOK_DATA;
  •     String destination = "";
  •     int bufferSize = 512;
  •     byte[] buffer = new byte[bufferSize];
  •     byte[] dmxData;
  •     int it = 1;
  •     //-------------CONSTRUCTOR MSG----------------------------
  •     artNetMessage(){
  •         buffer[0] = NET_NEW_DATA;
  •         for(int i=1; i<bufferSize; i++){
  •             buffer[i] = 0x00;
  •         }
  •     }
  •     //-------------SIMPLE ADD DATA TO MSG---------------------
  •     void add(String data){
  •         int len = data.length();                        // obtain lenght of data..
  •         if(it+len > bufferSize){
  •             println("ERROR: netMessage data stack overflow. "+it+len+" stack!", " when max buffer size are: " + bufferSize );
  •             return;
  •         }
  •         int offset = it;                                // set offset to insert data..
  •         for(int i=0; i<len; i++){
  •             buffer[offset+i] = (byte)data.charAt(i);    // insert data..
  •             it++;
  •         }
  •         buffer[it] = delimitier;                        // insert token delimitier..
  •         it++;
  •     }
  •     //-------------SET DESTINATION NET USER-------------------
  •     void setDestination(String ip){
  •         this.destination = ip;
  •     }
  •     //-------------SIMPLE SEND MSG TO NETWORK-----------------
  •     void send(){
  •         int length = 1;                    // min 1 byte of tx..
  •         for(int i=0; i<bufferSize; i++){   // read buffer..
  •             if(buffer[i] == 0x00){         // if found null byte..
  •                 length = i;                // this is the last byte to tx..
  •                 i = bufferSize;            // break loop..
  •             }
  •         }
  •        
  •         dmxData = new byte[length];        // create final datagram in byte[]..
  •        
  •         for(int i=0; i<length; i++){
  •             dmxData[i] = buffer[i];
  •         }
  •        
  •         artnet.unicastDmx(destination, 0, 0, dmxData);
  •     }
  • }
  • //------------------------------------------------------------
  • /* RECEPTOR DE MENSAJE DE RED */
  • boolean onArtNetEvent(){
  •     byte[] data = artnet.readDmxData(0, 0);
  •     try{
  •         if(data[0] == NET_NEW_DATA){
  •             data[0] = NET_OLD_DATA;
  •             StringList datum = new StringList();
  •             String buffer = "";
  •             for(int i=1; i<data.length; i++){
  •                 switch(data[i]){
  •                     case NET_TOK_DATA:
  •                         datum.append(buffer);
  •                         buffer = "";
  •                         break;
  •                     default:
  •                         buffer += char(data[i]);
  •                         break;
  •                 }
  •             }
  •             onNetEvent(datum);
  •         }
  •     }catch(Exception e){
  •        
  •     }
  •    
  •     return false;
  • }
  • //------------------------------------------------------------
  • void onNetEvent(StringList msg){
  •    
  • }
  • //------------------------------------------------------------
  •  


Osea.. con esto ya podemos enviar mensajes con todo lo que queramos por la red..
Esta versión de la libreria es para usarla en juegos y programas a alto nivel con todo encapsulado ya.. sin hacer absolutamente nada a bajo nivel, para data stream no es lo mas indicado, pero funciona muy muy bien por que he limitado el buffer a 512 bytes.. que no esta nada mal.. mas o menos son unas 512 letras para que nos entendamos.

Voy a hacer este finde una segunda versión a lo raw data donde tu podrás enviar un bloque de memoria y lo recibiras sin tratar, eso vuela y permite hacer a bajo nivel lo que quieras, solo implementará el discriminador de mensajes repetidos y poco mas.

Osea.. que gameLibZero dentro de poco tendrá videos sobre el uso de la libreria de red, verás que es un chiste usarlaXD.. y de paso monto ya el editor de niveles.
User avatar
erkosone
 
Posts: 10562
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en processing.

Postby erkosone » Fri Feb 15, 2019 1:16 pm

Bueno señores, pues netLibZero ya es una realidad, funciona a la perfección!
En breve algunos videos mostrando el potencial de todo esto..

Esta testeado a fondo en Windows 64bits y en Android 8-)

Ahora ya puedo continuar con el juego que estaba haciendo jeje.. bueno, en breve algunos ejemplos interesantes sobre como explotar todo esto ;)
You do not have the required permissions to view the files attached to this post.
User avatar
erkosone
 
Posts: 10562
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en processing.

Postby Hokuto7 » Fri Feb 15, 2019 5:38 pm

Lo de los mapas pues me he equivocado,no era con tilengine,era pilasengine1.Este metodo es el mas facil y mejor que he visto y me parece una genialidad aunque se podrian añadir mas cosas.

No se como esta hecho por dentro pero seguramente tendras que preguntarle al creador de pilasengine como lo ha hecho o mirar el codigo interno de pilasengine1,¡ojo!,no es pilasengine 2,es la version 1 ,la version de python.

Esta vez no te lo voy a explicar yo,te voy a pasar un enlace a la documentacion de pilasengine donde esta explicado este tema,si por alguna razon aparece el indice te vas a "mapas y plataformas" y ya esta,tienes que leerlo entero porque al principio explica como hacerlo manualmente y mas adelante te dice como hacerlo con el programa tiled,veras que es muy chulo.

Si puedes añadir esto se solventa el problema de la falta de un editor de niveles y tendrias algo realmente espectacular.

Sin mas rollos te dejo el enlace a la documentacion:
http://manual.pilas-engine.com.ar/mapas_y_plataformas/

Tambien te pongo un video de 50 segundos donde puedes ver que funciona perfecto y tambien puedes ver algo que te dije hace tiempo de hacer que se visualizara el cuerpo fisico:
User avatar
Hokuto7
 
Posts: 1035
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en processing.

Postby erkosone » Sat Feb 16, 2019 9:05 pm

Tendre en cuenta esto de mostrar el cuerpo fisico, puede ser interesante tenerlo a mano la verdad..
Lo que tengo que portar es el codigo de los path de javascript a java por que es una pasada, de nuevo gracias por la idea, es genial tio.
Ahora mismo estoy depurando y automatizando a tope la libreria de red.. estoy eliminando las llamadas a funciones y registrando en un thread todo el codigo del receptor de paquetes de red.. así queda todo completamente transparente..

Además de que he renovado la libreria en todas sus versiónes y ports :D

Ahora tienes una unica carpeta con todos los archivos fuente de todos los port.. y voy a crear un launcher igualito al que tiene libGDX que te configura un proyecto con las librerias que necesitas, osea.. abres el launcher y escribes un nombre de proyecto, escojes que librerias vas a necesitar y escojes también la plataforma para la que vas a hacer el proyecto, y automaticamente te bomita una carpeta con el nombre que has dado y con todo ya dentro listo para usar sin tener que hacer nada mas.

Y ya de paso.. estoy con el juego que anuncié que tengo entre manos, es una pasada, haber si publico algo dentro de poco tiempo y podeis probarlo, creo que os va a gustar la idea, la verdad es que es bastante fresca.

Es un juego en red para jugar royo mario party de wii... pero con unos mandos bastante especiales jeje..
User avatar
erkosone
 
Posts: 10562
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en processing.

Postby erkosone » Wed Feb 20, 2019 5:09 am

avances:
- Añadido: tint( color );

ahora es tan fácil teñir un gráfico de un proceso como hacer: tint(RED); para teñirlo de rojo, esto ofrece una manera simple de hacer efectos graficos de tintura a los procesos.
Estoy apunto de publicar la nueva libreria actualizada.
User avatar
erkosone
 
Posts: 10562
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en processing.

Postby Hokuto7 » Wed Feb 20, 2019 2:37 pm

Estupendo! :) ,has añadido la funcion advance() para que funcione con fisicas y el parametro que permite cambiar el punto de control en la funcion screenDrawGraphic().

Por cierto,en processing hay una funcion que se llama tint(),a lo mejor puede haber un conflicto de nombres,seria mejor que modificaras el nombre de tu funcion tint().
User avatar
Hokuto7
 
Posts: 1035
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en processing.

Postby erkosone » Wed Feb 20, 2019 7:22 pm

Hola Hokuto, tengo que mirar la mejor forma de hacer en processing un setCenter() para poder usar bien los procesos con la cinematica inversa y lo de las barras de energia que comentaste alguna vez.
Implementé las regiones que son algo fundamental para hacer efectos en juegos y lo de tint() no da problemas por que es un miembro de una clase, y tint() es una función de processing jeje, aunque podría llamarla setTinetColor() como en la versión de C++..

Bueno.. sigo con ello.. sobre todo donde mas trabajo he dedicado ha sido a poner al dia el port de Android, que lo tenia un poco descuidado y ahora mismo está al mismo nivel que el port de windows/linux/macosx.

Sobre la función de advance() me lo apunto y lo implemento también, la verdad es que ha sido un despiste tio.. me puse a saco con C++ y deje esta parte sin implementar en processing jeje.. vale la añado. ;)
User avatar
erkosone
 
Posts: 10562
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en processing.

Postby Hokuto7 » Wed Feb 20, 2019 8:25 pm

Esto ya lo implemente yo hace unos meses y te pase un ejemplo para que lo probaras y vieras si estaba bien programado pero seguramente no lo probastes.

Source Code (Gemix) [ Download ] [ Hide ]
  • void advanceBody(float dist_) {
  •         x = x + dist_*sin(radians(90.0 + -angle));
  •         y = y - dist_*cos(radians(90.0 + -angle));
  •         b.setPosition(x,y);
  •     }
  •     //nuevo----------------------------------
  •     void advanceBody2(float dist_, float angle_) {
  •         x = x + dist_*sin(radians(90.0 + -angle_));
  •         y = y - dist_*cos(radians(90.0 + -angle_));
  •         b.setPosition(x,y);
  •     }
  •  


Lo del punto de control creo que no me has entendido,yo me refiero a crear un parametro nuevo en la funcion screenDrawGraphic() para cambiar el punto de control del grafico que se le asigna a esta funcion y poder utilizarla de barra de vida,porque me parece una tonteria el usar dos procesos para esto.

Source Code (Gemix) [ Download ] [ Hide ]
  • final void screenDrawGraphic2(PImage img_,int centrado, float x, float y, float angle, float sizeX, float sizeY, float alpha) {
  •     blitter.pushMatrix();
  •     blitter.imageMode(centrado);
  •     blitter.tint(255, alpha);
  •     blitter.translate(x, y);
  •     blitter.rotate(radians(angle));
  •     blitter.scale(sizeX/100.0, sizeY/100.0);
  •     blitter.image(img_, 0, 0);
  •     blitter.popMatrix();
  • }
  •  
User avatar
Hokuto7
 
Posts: 1035
Joined: Mon Aug 28, 2017 10:14 am

PreviousNext

Return to Offtopic

Who is online

Users browsing this forum: No registered users and 7 guests