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 » Tue Jun 18, 2019 9:54 am

Cojo vacaciones el dia 4, apartir de ahi empiezo a actualizar todo, lo tengo medio hecho ya ;)
User avatar
erkosone
 
Posts: 10628
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en processing.

Postby erkosone » Thu Jun 20, 2019 9:30 pm

Algo mas de contenido del juego que me esta ayudando a pulir el motor 3d de la gameLibZero. ya con todo lo necesario para juegos simples en 3d os comparto un par de mecanicas, el sutil movimiento del personaje con cambio de textura que a falta de animacion por huesos queda muy molon, y la mecanica de funcionamiento de un enemigo bomba.
Ya queda menos para que esto empiece a ser un juego en si mismo, y empezó siendo una simple demo tecnica para android..

En breve publicaré la libreria por fin actualizada con todo lo que se ve en los videos y algunas cosas mas para 2D.
Por cierto.. ya me he liado yo mismo a modelar en 3d.. lo que me faltaba xd.. todo lo que se ve en pantalla es modelado por mi, cutre si, pero cute tambien xd..


User avatar
erkosone
 
Posts: 10628
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en processing.

Postby Hokuto7 » Fri Jun 21, 2019 10:12 am

Esta quedando muy bien,pero la cara del gato y la musica me da un poco de grima. :lol:
User avatar
Hokuto7
 
Posts: 1146
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en processing.

Postby Hokuto7 » Thu Jun 27, 2019 4:42 pm

Aunque habia dicho que no iba a dar mas sugerencias,me gusta contradecirme a mi mismo .:angel:

Es una idea que se me ha ocurrido,pero seguramente no sirva de nada porque viendo el exito de mis sugerencias pues seria mejor ahorrarmela pero esto es como un mal vicio,no puedo quitarmelo,jejejejeje.

Como veo que despues de siglos diciendote que metieras el keypressed y released, no parece convercerte pues ...se me ha ocurrido que en vez de crear nuevas funciones para esto podrias añadirle un sengundo parametro a la funcion key(),seria mas o menos esto.
Source Code (Gemix) [ Download ] [ Hide ]
  • key(_Z,0);el 0 es para dejarlo como esta,pulsando continuamente
  • key(_Z,1);el 1 es para pulsar solo una vez
  • key(_Z,2);el 2 es para soltar la tecla
  •  


Aunque quedaria mejor con constantes predefinidas.
Source Code (Java) [ Download ] [ Hide ]
  • key(_Z,"keyRepeat");
  • key(_Z,"keyPressed");
  • key(_Z,"keyReleassed");
  •  


Con esto ya tenemos las tres funciones en una.

Pero sigo sin entender porque no has metido esto desde el principio.Yo creo que es por la forma en la que has programado el key(),que estas usando las tres funciones de processing en una y seguramente tendrias que programarlo todo desde cero y tambien porque tu no usas esto.
User avatar
Hokuto7
 
Posts: 1146
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en processing.

Postby erkosone » Fri Jun 28, 2019 12:30 am

Hola hokuto, no lo he metido por que ya esta desde el momento cero, te lo comenté en su momento jeje..
Processign ya incorpora esas funciones, yo necesitaba la función key() sin mas, pero processing tiene keypressed() y released() de serie ya ;)
User avatar
erkosone
 
Posts: 10628
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en processing.

Postby Hokuto7 » Fri Jun 28, 2019 9:55 am

Claro que estan las de processing y esto ya te lo dije hace tiempo,no funcionan en tu libreria.

Veras,hay muchas funciones de processing que no funcionan en tu libreria y por eso al final no te queda mas remedio que incluirlas en dentro de tu propia libreria,hay tienes la funcion tint() que has incluido en dentro de tu libreria,de forma nativa no funciona y eso es por la forma en la que se cargan los graficos de tu libreria y por el sistema de procesos.

Pero bueno......,pon un ejemplo sencillo de como uso esas funciones con tu libreria y acabamos antes y no me digas que ya estan documentadas en processing por que ya lo he mirado y probado hace siglos y nada de nada. :lala:

Y ya que estamos ¿como va el avance de la libreria?.
User avatar
Hokuto7
 
Posts: 1146
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en processing.

Postby erkosone » Fri Jun 28, 2019 1:48 pm

Hola hokuto!

Pues mira te explico, esas funciones las uso internamente en la libreria, osea, estan escritas en el archivo gamelibzero.pde.
Simplemente puedes añadir el codigo que necesites en ellas, claro.. la función key() es mas avanzada que el API que te ofrece processing, es por eso que no te aclaras, por que la función key() de la game lib zero te abstrae de muchas cosas a bajo nivel como estas de las teclas.

Vale, te pego el codigo de lo que te interesa..
Source Code (Java) [ Download ] [ Hide ]
  • boolean[] keys = new boolean[256];
  • Keyboard keyboard = new Keyboard();
  • //.............................................................................................................................................................
  • void keyPressed() {
  •     if (keyCode != 17 && keyCode != 18) {
  •         if ( keyboard.active ) {
  •             keyboard.core();
  •         }
  •     }
  •     //println(keyCode);
  •     keys[keyCode] = true;
  •     if (keyCode == 27) {
  •         key = 0;
  •         stop();
  •     }
  • }
  • //.............................................................................................................................................................
  • void keyReleased() {
  •     keys[keyCode] = false;
  • }
  •  




Vale.. mejor te pego el codigo que realmente te interesa de estas dos funciones..

Source Code (Java) [ Download ] [ Hide ]
  • boolean[] keys = new boolean[256];
  • //.................................
  • void keyPressed() {
  •     keys[keyCode] = true;
  • }
  • //.................................
  • void keyReleased() {
  •     keys[keyCode] = false;
  • }


Creo que habla por si mismo jeje, el tema es que tengo un array de boolean que contiene el estado de todas las teclas, entonces se pone la tecla en cuestion a true/false cuando se pulsa/suelta..
desde ahí puedes captar lo que necesitas, yo lo que haría para que no sea tocar demasiado la libreria es lo siguiente:

Source Code (Java) [ Download ] [ Hide ]
  • boolean[] keys = new boolean[256];
  • //.................................
  • void keyPressed() {
  •     keys[keyCode] = true;
  •     teclaPulsada(keyCode);
  • }
  • //.................................
  • void keyReleased() {
  •     keys[keyCode] = false;
  •     teclaSoltada(keyCode);
  • }


Donde teclaPulsada() y teclaSoltada() te las implementas tu y son llamadas externamente cuando se pulsa o suelta una tecla, así tienes lo que quieres, también hay una manera mas sencilla y facil de usar esto.. quizñá te gustará mas..

y se trata de comprobar cuando una tecla ha cambiado de estado, osea.. sabiendo como estaba antes, puedes mirarla ahora y ver si ha habido cambio.. te pongo un ejemplo de proceso que te dice cuando has pulsado enter..
Source Code (Java) [ Download ] [ Hide ]
  • class pulsarEnter extends sprite{
  •     boolean estadoAnterior = false;
  •     void frame(){
  •        
  •         // detectar pulsar
  •         if(key(_ENTER) && !estadoAnterior){
  •             println("Acabas de pulsar ENTER!");
  •         }
  •        
  •         // detectar soltar..
  •         if(!key(_ENTER) && estadoAnterior){
  •             println("Acabas de soltar ENTER..");
  •         }
  •        
  •         // el ultimo paso es guardar el estado actual para usarlo como anterior
  •         // en el frame siguiente.. truco piruco XD..
  •         estadoAnterior = key(_ENTER);
  •     }
  • }


Creo que este ultimo ejemplo es el mas adecuado ya que es una locura detectar todas las teclas pulsadas y soltadas.. locura no, simplemente no tiene mucho sentido en un juego creo yo, solo te van a interesar conocer los estados de unas pocas..

Entonces..
Para algo generico tienes las funciones base de processing desde las que puedes saber que tecla se ha pulsado facilmente usando la variable keyCode.. y luego puedes hacerte un controlador de teclas como este que te acabo de enseñar que es super simple y eficiente, por que son dos simples operaciones a nivel bool.. esto no consume nada de recursos y quizá pensandolo bien ahora explicandotelo, para un juego, sea la mejor opción por que es implementable en el punto del programa que necesites y no depende de nada.


Sobre el estado del framework, va genial tio, estoy realmetne metiendome en el 3d.. quiero publicar este verano algunos proyectos en la playStore ya por fin
Así que este veranito, osea.. par ami apartir del dia 4 del mes que viene empieza lo fuerte.
Actualizaré publicamente todo.. También es el momento de empezar el master de gameLibZero con 3 personas, una de ellas conocida por los foros de gemix y de la cual espero que surjan futuros negocios! "no te digo mas xd.." y las otras dos son clientes que quieren ponerse al dia con una semanita de masterClass de processing y gameLibZero.

Tengo el verano completo, y lo cojo con mucha ilusión pues llevo muchos años deseando meterme con el 3d y aunque se que el motor que uso es limitado, para mi el haberlo montado yo es super satisfactorio tio.

El siguiente paso cuando tenga varios proyectos ya en marcha y vea como es realmente esto es saltar a Three.js y montar mi querido 3Div.js que llevo mucho tiempo diseñando y que practicamente podría empezar ya, pero por tiempo libre no puedo todavia.

Si xd.. otro framework mas.. jajaja.... 3Div.js va a ser lo que no podrá ser con processing por su falta de performance y features, un div en toda regla, enfocado en hacer juegos puramente 3d con el toque 2d de div para todo lo que interfaces de usuario y puesta en pantalla de textos y graficos se necesite, pero basicamente será un motor con el que poder hacer un juego en 5 minutos como dios manda ya por fin.

Durante estos años me he dado cuenta de que pensar en el 2D es un completo error, no hablo de estilos ni tipos de juegos, si no mas bien de engines y motores a usar a bajo nivel, realmente todo esta bajo una capa 3d nativa que es vulkan y opengl.. hay otros pero estos son los que se estan asentando mas.. "parece ser por ahora".. osea... el tema es que todo lo que puedes sacar por pantalla paso por ellos, y estos son puramente 3d con arreglos para pintar en 2d.. pero en el fondo de sus tripas piensan y tratan las cosas en 3d con o sin profundidad.

Y es por esto que me he dado cuenta de que es mas sencillo hacer un motor 3d y arreglarle la parte 2d que hacerlo al reves como yo lo estoy haciendo ahora xd..
Por que es hacer las cosas para desacerlas y luego volverlas a hacer, y eso se traduce en falta de performance, que ahun así hablamos de vulkan y opengl.. corren mucho y puedes hacer juegos sin problemas con lo que tengo ahora, pero me doy cuenta en benchmarks de que hay una sobrecarga en el sistema que uso, y que tnego que arreglar.. así que paso por ahora en esta primera versión, pero para la siguiente ya salto a un engine puro 3D con su sistema de 2d apañao jejeje..

Y no te caliento mas la cabeza tio.. vamos al lio!!
User avatar
erkosone
 
Posts: 10628
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Test de mi gameEngine en processing.

Postby Hokuto7 » Fri Jun 28, 2019 5:14 pm

Gracias,lo miro y te comento si me ha funcionado.

Otra libreria mas!!!,jojojojojojojo,estas muuuuu loco.Veo que no puedes estar quieto en un sitio.Yo tengo bastante con processing por ahora,el 3d lo dejo para un futuro ordenador.

Una vez tengas el editor de niveles acabado y con lo que trae la libreria actualmente tengo suficiente para distraerme por un tiempo largo y mejorar mi nivel de programacion. :)
User avatar
Hokuto7
 
Posts: 1146
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en processing.

Postby Hokuto7 » Fri Jun 28, 2019 7:40 pm

He realizado las pruebas y estos son los resultados.

La primera donde pones las funciones teclaPulsada() y teclaSoltada() no sirve de nada porque no explicas donde crear esas funciones y como crearlas,por lo que hay solo hay dos nombres sin valor ninguno.

La segunda donde utilizamos la variable boleana estadoAnterior ,esta funciona bien al pulsar la tecla pero al soltarla hace lo mismo que la funcion key(),por lo que se queda a medias.

Y para terminar he vuelto a probar una vez mas la funcion keyPressed() de processing,esta funcion si la usas fuera de la clase se le dibuja una linea roja que te dice claramente que no se puede usar y que es duplicada,si la usas dentro de una clase no aparece la linea roja pero no hace nada,es decir que no funciona,claramente no has realizado ninguna prueba con esta funcion.

Entonces solo tengo solucion para la tecla pulsadita,para la tecla soltadita ya vere lo que hago,pero creo que voy a ver como esta hecho esto en raylib y vere si yo mismo puedo implementar estas funciones dentro de la libreria.
User avatar
Hokuto7
 
Posts: 1146
Joined: Mon Aug 28, 2017 10:14 am

Re: Test de mi gameEngine en processing.

Postby erkosone » Sat Jun 29, 2019 4:47 am

keypressed esta en le archivo de la fuente de la libreria, tienes que usarla ahi, deja lo que ya hace y añade lo que necesites ;)
User avatar
erkosone
 
Posts: 10628
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

PreviousNext

Return to Offtopic

Who is online

Users browsing this forum: OskarG and 5 guests