Page 24 of 33

Re: Test de mi gameEngine en C++

Posted: Tue Jan 15, 2019 8:39 pm
by erkosone
Si. Todo eso ya lo trae la raylib. No al estilo div claro .. pero puedes hacer lo que quieras.. ya he integrado el 3d con los procesos e incluso ya funcionan las colisiones en 3d jeje

Re: Test de mi gameEngine en C++

Posted: Fri Jan 18, 2019 9:46 pm
by erkosone
UPDATE IMPORTANTE!

Habia un bug grave en la creación de procesos con cuerpos estaticos, ahora se crean correctamente, lo he descubierto durante el desarrollo de un tutorial de juego de plataformas para publicar..
Habia un error durante la creación del shape interno.. este no era capaz de rotar antes de añadirse al mundo para posteriormente volverse estatico..

Ahora esta corregido, y aquí esta el ejemplo de juego de plataformas.. es un mini ejemplo para ver la potencia de la libreria usando sensores.. es una simplificación de las versiones anteriores que usaban isContact() que es una función demasiado compleja para lo que sirve en si misma.. ahora con los procesos a modo de sensor la cosa esta muchisimo mas cercana al estilo DIV original. :)

La verdad es que me siento muy comodo con esta forma de hacer las cosas.. si alguien descarga el ejemplo y lo prueba ya verá como funciona perfecto.. y mas simple no puede ser ;)

El archivo rar contiene la ultima versión de la libreria.. no actualizo el entorno todavía al completo por que en esta nueva entrega incluirá generador de fuentes estupendo, egui, y mucho contenido 3d además de un juego al estilo mario de la wii de estos que sale mario en sprites dentro de un mundo 3d.

[Codebox=cpp file=Untitled.cpp]#include "gameLibZero.cpp"
int ST = 0;
images img;
int type_plataforma;

void setup(){
setMode(640, 400);
setFps(60);
fullscreen();
loadImages("data/images", &img);
setGravity(0, 0);
}
//------------------------------------------------------------------
class sensor:public process{
public:
int st = 0;
bool toco_suelo = false;
void frame(){
switch(st){
case 0:
{
graph = img[2];
visible = true;
x = father->x;
y = father->y;
createBody(TYPE_CIRCLE, METAL);
setSensor(true);
st = 10;
}
break;
case 10:
{
x = father->x;
y = father->y;
translate(x,y+32);
toco_suelo = collisionType(type_plataforma);
}
break;
}
}
};
//------------------------------------------------------------------
class personaje:public process{
public:
int st = 0;
sensor* s;
bool salto = false;
void frame(){
addVy(10);
switch(st){
case 0:
{
graph = img[1];
visible = true;
x = 320;
y = 320;
createBody(TYPE_BOX, METAL);
s = new sensor();
st = 10;
}
break;
case 10:
{
/* ¿¿ TOCO SUELO ?? */
if(s->toco_suelo){
screenDrawText(GetFontDefault(), 18, "TOCO_SUELO", CENTER, x, y-50, WHITE, 255);
if(key(KEY_UP) && salto==false){
salto = true;
addVy(-400);
}
}else{

}
if(!key(KEY_UP)){
salto = false;
}
if(key(KEY_LEFT)){
addVx(-10);
}
if(key(KEY_RIGHT)){
addVx(10);
}
if(key(KEY_DOWN)){
addVy(5);
}
}
break;
}
}
};
//------------------------------------------------------------------
class plataforma:public process{
public:
int st = 0;
int w,h;
plataforma(float x, float y, float width, float height, float angle){
this->x = x;
this->y = y;
this->w = width;
this->h = height;
this->angle = angle;
}
void frame(){
switch(st){
case 0:
{
graph = newGraph(w, h, BLUE);
visible = true;
createBody(TYPE_BOX, HUMAN);
type_plataforma = type;
setStatic(true);
st = 10;
}
break;
case 10:

break;
}
}
};
//------------------------------------------------------------------
void draw(){
switch(ST){
case 0:
{
// plataforma( x, y, ancho, alto, angulo );
new plataforma(320, 390, 640, 10, 0);
new plataforma(100, 350, 200, 5, 10);
new plataforma(540, 350, 200, 5, -10);
new plataforma(200, 250, 100, 5, 0);
new plataforma(440, 250, 100, 5, 0);
new plataforma(320, 150, 200, 5, 0);
new personaje();
ST = 10;
}
break;
case 10:
{

}
break;
}
}[/Codebox]

Re: Test de mi gameEngine en C++

Posted: Sat Jan 19, 2019 8:49 pm
by Hokuto7
Funciona muy bien el ejemplo,pero cuando estas saltando continuamente hay contacto con el sensor amarillo y el objeto rosa se que da como flotando un segundo y luego cae.

Por cierto,lo de crear un objeto aparte como sensor supongo que es para hacer pruebas porque si hay que crear un objeto aparte del personaje principal para un juego de plataformas es un poco rollo,en contruct2 lo entiendo porque no se suele utilizar un motor de fisicas para juegos de plataformas pero si se utiliza un motor de fisicas no se deberia hacer nada extra.

Re: Test de mi gameEngine en C++

Posted: Sat Jan 19, 2019 9:30 pm
by erkosone
Puedes no usarlo claro.. pero tu lo que quieres detectar es la colision con la plataforma solo por la parte de abajo del personaje.. así que el sensor es necesario para simplificar, internamente muchos motores lo hacen así o incluso mas complejo mirando si el punto de contacto esta por encima o por debajo o por los lados.. en fin.. que es lo mismo que hacia yo en las versiones de gameLibZero para processing y javaScript, pero realmente con un sensor la cosa queda mucho mas compacta.
Aunque para gustos colores claro.. la libreria lleva dentro la chipmunk.. puedes hacerlo como mas te guste, incluso pasar de la chipmunk y usar mapas de durezas.. lo dicho.. lo que mas te guste.. yo como en esta versión de la libreria el crear unos procesos mas no tiene apenas peso en el rendimiento lo hago directamente con sensores por que es mas versatil y puedo hacer muchisimas mas cosas de una forma mas sencilla, pero hazcerlo se puede como te de la gana :P

Re: Test de mi gameEngine en C++

Posted: Sat Jan 19, 2019 10:00 pm
by Hokuto7
Ok.

En clickteam fusion se utiliza un sprite cuadrado aparte del sprite principal para utilizarlo como mascara de colision y luego se crean cuatro sprite simples para utilizarlos como sensores y se colocan en cada lado del cuadrado mascara para poder cubrir todo tipo de situaciones que sucedan en el juego,pero en este programa es muy comodo hacer esto porque se hace visualmente en el editor de escenarios y ves todo lo que haces.

Pero en tu libreria hay que crear unos cuantos procesos y se vuelve un poco pesado manejar esto en el codigo sobre todo porque no ves lo que estas haciendo en la pantalla hasta que la ejecutas y tienes que tener muy bien ordenado el codigo,sin embargo cuando utilizo el motor de fisicas en clickteam fusion no tengo que crear ningun sensor,me lo da todo hecho las fisicas y yo pensaba que la fisica de tu libreria haria lo mismo.

En unity tampoco hay que crear ningun sensor,el motor de fisicas te lo da todo hecho y yo pensaba que el motor de fisicas de tu libreria haria lo mismo,pero no tengo ningun problema en escribir mas codigo sin embargo pensaba que el motor de fisicas te daria mas facilidades y tener que escribir menos codigo,pero veo que no es asi,tendre que aguantarme con esto. :(

Re: Test de mi gameEngine en C++

Posted: Sun Jan 20, 2019 9:40 pm
by erkosone
Haber.. que implementar eso es una chuminada.. puedes enseñarme una captura de esos sensores que me dices?
Si lo ver util puedo implementarlo también en la libreria.. es realmente simple hacer eso..

Por cierto, avaces:
-----------------------

Acabo de mejorar la rutina de carga de fuentes bitmap, osea, ahora cuando exportas una fuente con la herramienta de fuentes a la carpeta de las fuentes del juego, la función loadFonts() carga todo lo que tenga extensión .fnt y no perderá tiempo en intentar las tablas png que acompañan alas fuentes, ahora ya se puede dejar todas las fuentes bitmap en una carpeta y cargarlas del tiron también.

Todos estos detalles los estoy puliendo gracias a los jeugos que estoy preparando para los siguientes turoriales.

Re: Test de mi gameEngine en C++

Posted: Sun Jan 20, 2019 10:20 pm
by Hokuto7
Creo que es mejor que siga viendo como lo haces tu que sabes mucho mas que yo y de esta forma seguir aprendiendo. ;)

Re: Test de mi gameEngine en C++

Posted: Wed Jan 23, 2019 11:45 am
by Hokuto7
Hola erkozone,estoy ultimamente escuchando hablar mucho sobre inteligencia artificial pero la realidad es que no he visto nada en juegos y programas,no se que pensar sobre esto.

Si lo que se dice es cierto,seria interesante que añadieras algunas funciones para manejar la inteligencia artifial en tu libreria y poder dotar a enemigos de esta supuesta inteligencia artificial.

Re: Test de mi gameEngine en C++

Posted: Wed Jan 23, 2019 1:26 pm
by erkosone
solo tienes que linkar al proyecto la tensorFlow de google amigo jeje..
Puedes usar toda la IA que quieras y de ultima generacion.

Re: Test de mi gameEngine en C++

Posted: Fri Jan 25, 2019 5:47 am
by erkosone
UPDATE:
- Añadidos nuevos metodos para calculo de distancias en 2d y 3d.
- Añadidos nuevos materiales tales como 'SENSOR' para crear cuerpos kinematicos hasta ahora no disponibles.