Page 27 of 33

Re: Test de mi gameEngine en C++

Posted: Sat Feb 02, 2019 11:26 pm
by Hokuto7
He realizado algunas pruebas mas para confirmarlo definitivamente.

Si tengo la ventana minimizada se escucha regular pero si tengo la ventana maximizada aquello es un destrozo,tambien lo he probado a 30 fps y mejora un poco pero sigue dando problemas y estamos hablando de una aplicaion super simple,imaginate un juego completo,aquello puede ser la destruccion del mundo y si encima lo pongo a pantalla completa ni me lo imagino. :blind:

Pero he realizado otra prueba para confirmar si el problema venia de tu libreria o de raylib,y he probado algunos juegos completos que trae raylib y solo funciona uno que se llama "drturtle" y el mismo problema con la musica pero aqui es peor porque cuando empieza el juego no solo se ralentiza la musica si no que... tambien se ralentiza el juego y eso que el juego no es nada del otro mundo,se mueve el scroll como a trozos,si has jugado algun juego de naves en el msx sabras a lo que me refiero.

Esto confirma que la libreria raylib esta optimizada como el culo,pero esto no es tu culpa es del creador de raylib.

Otro cosa que queria comentarte es que no puedes decirle a la gente que si le falta algo a tu libreria pues que busque una libreria por su cuenta y aprenda a enlazarla y utilizarla,porque la gente que quiere utilizar tu libreria o otra ,solo quiere hacer juegos y no ponerse a buscar otras librerias para usarlas en la tuya,para eso prefiero utilizar yo directamente sdl y sdl_mixer y termino antes,pero te lo digo desde el buen rollo,no te molestes. ;)

Re: Test de mi gameEngine en C++

Posted: Sun Feb 03, 2019 1:07 am
by erkosone
no me molesto hombre.. pero vamos que puedes usar SDL_mixer con mi lib jeje.. no hay ninguna diferencia a usarla en otro proyecto.

Yo por mi parte estoy buscando la mejor alternativa para la libreria de red.. estoy entre varias librerias... llevo toda la tarde y lo que ha pasado de noche con una libreria basada en el standa OSC y bueno.. no me termina de gustar la complejidad del codigo resultante.. realmente quiero que sea estilo Div todo esto.. no me gusta usar complejas nomenclaturas..
Ahora voy a centrarme un par o tres de horas mas en la winsock2 para windows.. que al final si compilo con scriptem me da igual que la lib no sea multiplataforma.. compila y punto jeje.. o eso creo.

Sobre el audio.. pues buscaré alguna libreria sencilla para añadir al proyecto, haber que encuentro, openAL me parece un buen punto de partida.

Re: Test de mi gameEngine en C++

Posted: Sun Feb 03, 2019 1:09 pm
by OskarG
Hola erkos me he molestado en saber por que falla el sonido...
Ya se lo que pasa XD
ES LA IMPLEMENTACION QUE HAS REALIZADO Y ESTA MAL HECHA:
HE bajado la version de raylid y ejecutado este codigo

Code: Select all

/*******************************************************************************************
*
*   raylib [audio] example - Module playing (streaming)
*
*   NOTE: This example requires OpenAL Soft library installed
*
*   This example has been created using raylib 1.5 (www.raylib.com)
*   raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details)
*
*   Copyright (c) 2016 Ramon Santamaria (@raysan5)
*
********************************************************************************************/

#include "raylib.h"

#define MAX_CIRCLES  64

typedef struct {
    Vector2 position;
    float radius;
    float alpha;
    float speed;
    Color color;
} CircleWave;

int main()
{
    // Initialization
    //--------------------------------------------------------------------------------------
    int screenWidth = 800;
    int screenHeight = 450;

    SetConfigFlags(FLAG_MSAA_4X_HINT);      // NOTE: Try to enable MSAA 4X
    
    InitWindow(screenWidth, screenHeight, "raylib [audio] example - module playing (streaming)");

    InitAudioDevice();              // Initialize audio device
    
    Color colors[14] = { ORANGE, RED, GOLD, LIME, BLUE, VIOLET, BROWN, LIGHTGRAY, PINK,
                         YELLOW, GREEN, SKYBLUE, PURPLE, BEIGE };
    
    // Creates ome circles for visual effect
    CircleWave circles[MAX_CIRCLES];
    
    for (int i = MAX_CIRCLES - 1; i >= 0; i--)
    {
        circles[i].alpha = 0.0f;
        circles[i].radius = GetRandomValue(10, 40);
        circles[i].position.x = GetRandomValue(circles[i].radius, screenWidth - circles[i].radius);
        circles[i].position.y = GetRandomValue(circles[i].radius, screenHeight - circles[i].radius);
        circles[i].speed = (float)GetRandomValue(1, 100)/20000.0f;
        circles[i].color = colors[GetRandomValue(0, 13)];
    }

    Music xm = LoadMusicStream("resources/mini1111.xm");
    
    PlayMusicStream(xm);

    float timePlayed = 0.0f;
    bool pause = false;

    SetTargetFPS(60);               // Set our game to run at 60 frames-per-second
    //--------------------------------------------------------------------------------------

    // Main game loop
    while (!WindowShouldClose())    // Detect window close button or ESC key
    {
        // Update
        //----------------------------------------------------------------------------------
        UpdateMusicStream(xm);        // Update music buffer with new stream data
        
        // Restart music playing (stop and play)
        if (IsKeyPressed(KEY_SPACE)) 
        {
            StopMusicStream(xm);
            PlayMusicStream(xm);
        }
        
        // Pause/Resume music playing 
        if (IsKeyPressed(KEY_P))
        {
            pause = !pause;
            
            if (pause) PauseMusicStream(xm);
            else ResumeMusicStream(xm);
        }
        
        // Get timePlayed scaled to bar dimensions
        timePlayed = GetMusicTimePlayed(xm)/GetMusicTimeLength(xm)*(screenWidth - 40);
        
        // Color circles animation
        for (int i = MAX_CIRCLES - 1; (i >= 0) && !pause; i--)
        {
            circles[i].alpha += circles[i].speed;
            circles[i].radius += circles[i].speed*10.0f;
            
            if (circles[i].alpha > 1.0f) circles[i].speed *= -1;
            
            if (circles[i].alpha <= 0.0f)
            {
                circles[i].alpha = 0.0f;
                circles[i].radius = GetRandomValue(10, 40);
                circles[i].position.x = GetRandomValue(circles[i].radius, screenWidth - circles[i].radius);
                circles[i].position.y = GetRandomValue(circles[i].radius, screenHeight - circles[i].radius);
                circles[i].color = colors[GetRandomValue(0, 13)];
                circles[i].speed = (float)GetRandomValue(1, 100)/20000.0f;
            }
        }
        //----------------------------------------------------------------------------------

        // Draw
        //----------------------------------------------------------------------------------
        BeginDrawing();

            ClearBackground(RAYWHITE);
            
            for (int i = MAX_CIRCLES - 1; i >= 0; i--)
            {
                DrawCircleV(circles[i].position, circles[i].radius, Fade(circles[i].color, circles[i].alpha));
            }
            
            // Draw time bar
            DrawRectangle(20, screenHeight - 20 - 12, screenWidth - 40, 12, LIGHTGRAY);
            DrawRectangle(20, screenHeight - 20 - 12, (int)timePlayed, 12, MAROON);
            DrawRectangleLines(20, screenHeight - 20 - 12, screenWidth - 40, 12, GRAY);

        EndDrawing();
        //----------------------------------------------------------------------------------
    }

    // De-Initialization
    //--------------------------------------------------------------------------------------
    UnloadMusicStream(xm);          // Unload music stream buffers from RAM
    
    CloseAudioDevice();     // Close audio device (music streaming is automatically stopped)

    CloseWindow();          // Close window and OpenGL context
    //--------------------------------------------------------------------------------------

    return 0;
}

FUNCIONA PERFECTO....
probando con tu libreria...es cuando se distorsiona de narices la musica y suena con eco y rallada,No es problema de resolucion,de procesos pues los he anulado y puesto una resolucion infima,es como has implementado tu libreria y hay algo donde has cometido sin querer un bug.....la libreria original del creador me va fina en todos los sentidos,la tuya,en el tema de reproduccion de sonido,es imposible utilizarla.NO es problema por consiguiente del ordenador,tienes algun bug que no sabes donde lo has creado.

Re: Test de mi gameEngine en C++

Posted: Sun Feb 03, 2019 1:16 pm
by OskarG
Me imagino que la raylib.h la has modificado y si la has modificado ahi radica el problema,pues solo he hecho un copy paste del codifo fuente del ejemplo y si la ejecuto del original va bien,pero si la ejecuto con el tuyo va mal.......

Re: Test de mi gameEngine en C++

Posted: Sun Feb 03, 2019 3:24 pm
by Hokuto7
Mas pruebas y coincido con OscarG.

He probado el ejemplo drturtle de raylib en tu libreria y estaba viendo los fps,si lo pongo a 60 me baja hasta 24 y si lo pongo en 30 se queda estable en 29 pero el sonido esta rayado siempre.

Pero como queria asegurarme bien me he instalado la version que tengo de raylib 2.0 y he probado el ejemplo drturtle y a 60 fps me baja hasta 38 y si lo pongo a 30 me va estable a 29 pero esta vez la musica me va casi perfecta,solo se distorciona muy rara vez en 60 fps pero en momentos puntuales y casi no se nota y en 30 se queda perfecta.

Conclusion,has implementado mal el sonido y si lo has hecho con el sonido puede que tambien con los procesos,aunquer tambien es verdad que raylib necesita una tarjeta acelerado para funcionar bien o un ordenador mas actual,creo que pide demasiado.

Si no recuerdo mal me dijistes que estabas usando una version mas nueva de raylib que te paso el creador,puede que tenga algunos bug.

Por cierto he mirado openAL y sdl_mixer y no he encontrado casi nada de tutoriales y lo que trae es el archivo "dll" y yo tengo que pasarlo a ".h" para enlazarlo y no tengo ni idea de como se hace,tambien he mirado un poco por encima como se programa con sdl_mixer y me parece un rollo.

Re: Test de mi gameEngine en C++

Posted: Sun Feb 03, 2019 3:38 pm
by Hokuto7
He probado el ejemplo que comenta OscarG y en tu libreria se escucha mal como siempre y esta todo distorsionado y ralentizado.

Pero lo he probado en la version que me he instalado de raylib y funciona perfecto y a 60 fps.

Re: Test de mi gameEngine en C++

Posted: Mon Feb 04, 2019 5:20 am
by erkosone
Gracias por probarlo gente, por partes:

Primero, yo no he implementado el sonido jeje.. el modulo de sonido es el que trae raylib ya implementado, yo solo he hecho el wrapper que enlaza a las funciones de sonido como si fuera estilo Div, osea esto:

El ciclo de vida de una musica cuando se ha hecho un playMusic()..
[Codebox=cpp file=Untitled.cpp]
// MUSIC CYCLE CONTROLLER..
if(_music_play_){
_music_time_played_ = GetMusicTimePlayed(_music_play_id_);
UpdateMusicStream(_music_play_id_); // Update music buffer with new stream data
int a = _music_time_played_*100;
int b = _music_time_length_*100;
if(a == b){
if(_music_repeat_){
StopMusicStream(_music_play_id_);
PlayMusicStream(_music_play_id_);
}else{
StopMusicStream(_music_play_id_);
_music_play_ = false;
_music_play_id_ = 0;
}
}
}[/Codebox]


Y estas son las funciones div style:
[Codebox=cpp file=Untitled.cpp]void playMusic(Music m){
_music_play_id_ = m;
PlayMusicStream(_music_play_id_);
SetMusicVolume(m, _music_volume_);
//SetMusicVolume(m, 1.0f);
_music_play_ = true;
_music_time_played_ = 0;
_music_time_length_ = GetMusicTimeLength(m);
}
//------------------------------------------------------------------------------------------------------
void playMusic(Music m, float volume_){
_music_play_id_ = m;
PlayMusicStream(_music_play_id_);
_music_volume_ = ((1.0f * volume_) / 255.0f);
SetMusicVolume(m, _music_volume_);
_music_play_ = true;
_music_time_played_ = 0;
_music_time_length_ = GetMusicTimeLength(m);
}
//------------------------------------------------------------------------------------------------------

//------------------------------------------------------------------------------------------------------
void stopMusic(){
if(_music_play_){
StopMusicStream(_music_play_id_);
_music_play_ = false;
_music_play_id_ = 0;
_music_time_played_ = 0;
_music_time_length_ = 0;
}
}
//------------------------------------------------------------------------------------------------------
void setMusicVolume(Music m, float volume_){
_music_volume_ = ((1.0f * volume_) / 255.0f);
SetMusicVolume(m, _music_volume_);
}
//------------------------------------------------------------------------------------------------------
void setMusicRepeat(bool repeat){
_music_repeat_ = repeat;
}
//------------------------------------------------------------------------------------------------------
void playSound(Sound s){
PlaySound(s);
}
//------------------------------------------------------------------------------------------------------
void playSound(Sound s, float volume_){
PlaySound(s);
SetSoundVolume(s, ((1.0f * volume_) / 255.0f));
}
//------------------------------------------------------------------------------------------------------
void playSound(Sound s, float volume_, float pitch_){
PlaySound(s);
SetSoundVolume(s, ((1.0f * volume_) / 255.0f));
SetSoundPitch(s, ((1.0f * pitch_) / 255.0f));
}[/Codebox]

Como ves hokuto no hay ninguna implementación de sonido, solo un gestor de play/stop con unas cuantas funciones que simplifican las llamadas a mas bajo nivel :)

La versión que estoy usando de raylib es la 2.4dev que es la que está en desarrollo sin publicar oficialmente todavia.. esto si que puede ser el problema.. aunque a mi no me hace nada raro en ningun momento, es lo que me extraña, lo comentaré en el channel de discord haber que me dice ray.


Y por cierto jeje.. que tiene que ver el sonido con los procesos?
Sobre lo de que pide demasiado, bueno supongo que al no tener hardware minimo para juegos te da esa impresión, es bastante comprensible.

Re: Test de mi gameEngine en C++

Posted: Mon Feb 04, 2019 8:46 am
by OskarG
Creo que no has comprendido lo que he expresado.simplemente he pasado los ejemplos originales de raylib 2.0 a tu proyecto en el npp y es cuando surgen los problemas...y no es cuestión de tener una máquina potente o tener cargado algún gráfico o de un scroll o el tamaño del juego ,es algo de tu proyecto que es diferente ,pues no utilizo las funciones nuevas que has incluido ...hay algo distinto en tu versión que he bajado que hace que la música no suene nada bien

Re: Test de mi gameEngine en C++

Posted: Mon Feb 04, 2019 11:30 am
by Hokuto7
Opino lo mismo que OscarG,el sonido funciona bien en raylib y en tu libreria no.

Tu libreria funciona mas lenta que raylib,ya hice las pruebas y en raylib funciona al menos 14 fps mas rapido y lo de implementacion no tiene nada que ver con lo que yo he dicho,se que has encapsulado las funciones de raylib en las tuyas para que tenga un toque div pero hay puede que radique el problema.

Puede ser que al convertirlas en un vector para una carga mas completa produzca errores o puede que no estes limpiando bien los recursos o otra cosa.

Lo que he comentado de los procesos es por lo mismo de los sonidos,el sonido se ralentiza y si pasa esto los procesos puede que tambien,como te he dicho antes raylib funciona mas rapìdo que tu libreria.

Puede ser tambien que al crear tu librertia con c++ de problemas porque raylib esta programado con c,no se exactamente cual es el problema,pero haberlo hay.

Pasa por aqui la version limpia de raylib 2.4 que estas usando para hacer las pruebas y ver si da problemas esa libreria.Creo que no deberias de haber usado una version que no esta acabada.

Si a ti no te da problemas puede ser porque tu ordenador es mas actual y no se ralentiza,pero ya ves que a otras personas si no da problemas y solo con tu libreria.

Mi ordenador cumple los requisitos minimos de sobra,te recuerdo que hay muchos engines que me funciona perfectamente: -gamemaker8/studio,clickteam fusion 2,5,contruct classic/2,gdevelop,game editor,enigma dev,bennugd,gemix,divdx,stencyl,tilengine,love2d y muchos otros,incluso la versionn 4 de unity me funciona medianamente bien.

Sigo pensando que una libreria que no tiene ninguna interfaz visual y que todo es a pelo y encima esta programada con c pide demasiado,yo he probado tilengine que esta programado con c y va volando,tanto la version de c como los wrapper de python y basic.

Re: Test de mi gameEngine en C++

Posted: Mon Feb 04, 2019 2:19 pm
by erkosone
Vale, si entenderos os entiendo, la cosa es que no entendeis que mi "libreria" es en realidad la misma raylib ya que yo solo encapsulo, osea.. lo mio es un wrapper basicamente, no tiene absolutamente nada que ver, de eso estoy seguro.
Ya te adelanto que ray ha cambiado el modulo interno de sonido en la versión que tiene en desarrollo.. y que yo no uso la estable por que le faltaban muchas features importantes que se han añadido recientemente.

También os comento que raylib esta bastante mal enfocada respecto a los nombres usados en su core, ya que cuando intento añadir cualquier libreria que use windows.h directamente entran en conflicto muchisimos nombres de función.. una pena por que ray no parece entender que no deberia romper la compatibilidad con las cabeceras oficiales de windows jeje.. directamente me ha dicho "raylib es enemiga de windows.h" XD.. con esta frase ya me queda claro.. le da igual.

Que putada.. si no cambia de opinión en lo que a los nombres de función se refiere me veo obligado a abandonar esta libreria y entonces vuelta a empezar con libGDX o PIXI.JS que hace bastante tiempo que le tengo ganas.. un viejo divero llamado "CODEMASTER" ya la usaba hace años para su JDIV..

Bueno.. espero que recapacite en estos dias y adapte la libreria a windows decentemente.