Bennu Game Development

Foros en Español => Sugerencias => Topic started by: FreeYourMind on September 16, 2011, 08:58:52 PM

Title: Sugerencias de nuevos modulos
Post by: FreeYourMind on September 16, 2011, 08:58:52 PM
Buenas.
Gracias a mi nuevo curro, en el cual he cambiado drasticamente de tecnologias, y ahora me toca a programar en C puro y duro (no me lo esperaba la verdad), pues espero aguantarme mucho tiempo en el, y hacerme todo un expert en este maldito y engorroso lenguaje xD (es broma, si es que te puede tocar codigo super sencillo como super dificil, y me ha tocao esto ultimo xD)

Pues he descubierto algunas libs opensource, que creo que estarian muy bien en BennuGD.

De momento queria saber vuestras opiniones sobre estos 2 posibles modulos:

1 - Tener un modulo que te permita crear un servidor con Bennu, imaginate tu Caanoo como servidor de paginas web por ejemplo :)
Es un modulo no muy complicado de implementar.

2 - Esto especialmente me entusiasma: Tener un modulo que te permita tener controles al estilo windows en tus juegos, poder tener botones, dialogos, tablas, cajas de texto, etc. Los lenguajes div-like no estan orientados a esto, pero tener un modulo que te los permita poner seria cojonudo :)
Es algo que llevaria tiempo.

3 - Modulo 'Face_Detection': Imagina las posibilidades para juegos de PC con webcam, una licencia por usuario xD, solo ciertas personas lo pueden jugar xD, guardar o enseñar estados de juego segun tu cara, como logros, puntuaciones, etc.
Title: Re: Sujerencias de nuevos modulos
Post by: SplinterGU on September 16, 2011, 09:03:01 PM
con la libreria de socket, podes tener un servidor web en bennugd, de hecho yo hice el ejemplo para fenix.
Title: Re: Sujerencias de nuevos modulos
Post by: FreeYourMind on September 16, 2011, 09:06:00 PM
Pues refrescanos el tema, así podriamos pasarla a las portatiles y hacer algo curioso y novedoso con ellas
Title: Re: Sujerencias de nuevos modulos
Post by: KeoH on September 16, 2011, 09:20:16 PM
a mi la opcion segunda me parece de puta madre xDDD una especie de modulo q permita cajas de texto, botones y demas cosas standart estaría mu bien xD
Title: Re: Sujerencias de nuevos modulos
Post by: SplinterGU on September 16, 2011, 09:24:39 PM
Quote from: FreeYourMind on September 16, 2011, 09:06:00 PM
Pues refrescanos el tema, así podriamos pasarla a las portatiles y hacer algo curioso y novedoso con ellas

creo que se llama libsock o tcpsock... bomberlink la tenia compilada para wiz o caanoo, no recuerdo... y si tenes el driver de red instalado o el wifi y demas, la podes usar...
Title: Re: Sujerencias de nuevos modulos
Post by: FreeYourMind on September 16, 2011, 09:49:05 PM
Pero es la que tienes en ejemplos ? Y viene con el prg ejemplo ? Bomberlink a ver si nos la pasas que alfinal no la usaste en el SORR...
Title: Re: Sugerencias de nuevos modulos
Post by: josebita on September 16, 2011, 10:20:28 PM
Con vuestro permiso he renombrado el tema de "sujerencias" a "sugerencias", que me dolían un poco los ojos :P
Title: Re: Sugerencias de nuevos modulos
Post by: l1nk3rn3l on September 17, 2011, 01:02:54 AM
en el bennupack seccion
ejemplos  DLLS/multiplayer
hay un servidor WEB echo en bennu...








lo de cajas de texto existia una libreria llamada mod_gui (ventanas , botones y demas)


sino estoy mal.. pero con las nuevas versiones de bennu
creo que se hizo incompatible el codigo .. y se evaporo...
Title: Re: Sugerencias de nuevos modulos
Post by: FreeYourMind on September 17, 2011, 06:13:10 AM
donde esta esa mod_gui ?
Title: Re: Sugerencias de nuevos modulos
Post by: Yawin on September 17, 2011, 09:05:57 AM
A mi lo que me gustaría sería poder usar OpenGL. Son unas librerías que actualmente están hasta para javascript. Creo que podría venirnos muy bien tenerlas.
Title: Re: Sugerencias de nuevos modulos
Post by: FreeYourMind on September 17, 2011, 09:33:19 AM
Deberias mirar mas el foro  :P
Ya lo hemos intentao varias veces, pero las ganas son pocas  :-\

http://forum.bennugd.org/index.php?topic=1026.30 (http://forum.bennugd.org/index.php?topic=1026.30)
Title: Re: Sugerencias de nuevos modulos
Post by: Yawin on September 17, 2011, 09:54:56 AM
Lo había leído, por eso. Era un intento de dejarlo caer. Como quien no quiere la cosa xDD
Title: Re: Sugerencias de nuevos modulos
Post by: FreeYourMind on September 17, 2011, 10:02:01 AM
Tienes el bennu3D con soporte OpenGL
Title: Re: Sugerencias de nuevos modulos
Post by: SplinterGU on September 17, 2011, 02:49:04 PM
las ganas de que son pocas?
Title: Re: Sugerencias de nuevos modulos
Post by: FreeYourMind on September 17, 2011, 03:16:36 PM
De hacer deporte  ;D
Title: Re: Sugerencias de nuevos modulos
Post by: FreeYourMind on September 27, 2011, 01:54:29 PM
Otra sujerencia mas adicionada a la lista
Title: Re: Sugerencias de nuevos modulos
Post by: FreeYourMind on September 27, 2011, 02:06:34 PM
Con la existente openCV parece que se podria

http://opencv.willowgarage.com/wiki/FaceDetection (http://opencv.willowgarage.com/wiki/FaceDetection)
Title: Re: Sugerencias de nuevos modulos
Post by: osk on September 27, 2011, 09:53:06 PM
Para lo de los botones y eso ¿no estaba la GUI_SO?
Title: Re: Sugerencias de nuevos modulos
Post by: Prg on September 27, 2011, 10:49:26 PM
Quote from: osk on September 27, 2011, 09:53:06 PM
Para lo de los botones y eso ¿no estaba la GUI_SO?

auch, ahorita que hablan de eso debo subir los nuevos cambios... Una vez que terminen los exámenes, y a ver cómo arreglo lo de los punteros a string.

Sobre lo del servidor en el bennupack (como dice l1nk3rn3l) viene el ejemplo que Splinter comenta. En la parte de fsock en el webserver... Nunca lo he estudiado pero por la descripción parece que es lo que comentan.

Quote/* Ejemplo usando fsock dll
Mini Fenix WebServer by SplinterGU
*/
PROGRAM WebServer;


global
    clients=0;

    logfd;

    DocumentRoot = "webpages";
    AccessLog = "logs/access.log";

begin

    full_screen=false;

    set_title("Mini Fenix WebServer");

    fsock_init( 0 ); // Inicializamos la librería fsock

    write(0,5,5,0,"Clients:");
    write_var(0,5+text_width(0,"Clients:"),5,0,clients);

    server_thread();

end;

function log(string slog)
private
    strint str;
begin
    logfd = fopen(AccessLog, O_RDWR);
    if (!logfd)
        logfd = fopen(AccessLog, O_WRITE);
    end
    fseek(logfd, 0, SEEK_END);
    fputs(logfd,ftime("%d/%m/%Y-%H:%M:%S> ",time()) + slog);
    fclose(logfd);
end

process server_thread()
private
    int socket_listen; // socket_listen para recoger peticiones
    int connection=0;
    int ipaddr, portaddr;
    int i;
    int informacion; // enviaremos a los clientes números aleatorios entre 0 y 32768
begin

    log("Fenix Web Server, Started!");

    socket_listen=tcpsock_open(); // nuevo socket
    fsock_bind(socket_listen,80); // asociamos socket_listen con el puerto 80
    tcpsock_listen(socket_listen,64); // numero de conexiones a escuchar igual a clients

    fsock_fdzero(0);
    fsock_fdset(0,socket_listen);

    while(!key(_ESC))

        if (fsock_select(0,-1,-1,0)>0)
            connection=tcpsock_accept(socket_listen, &ipaddr, &portaddr);
            if(connection>0)
                process_client(connection, ipaddr, portaddr);
            end
        end
       
        fsock_fdset (0, socket_listen); //hay que reincluir tras uso de select
        frame;
    end;

onexit
    fsock_quit(); // Cerramos la librería fsock

end

process process_client(int sock, int ipaddr, int portaddr)
private
    char msg[2048];
    string hdrFields[128];
    string request[3];
    rlen, slen, n, pos, d1, d2, cnt;
    fp;
    string lang;
begin
    clients++;
   
    //log("Connect from ip "+((ipaddr)&0ffh)+"."+((ipaddr>> 8) &0ffh)+"."+((ipaddr>>16)&0ffh)+"."+((ipaddr>>24)&0ffh));
    log("Connect from ip "+ fsock_get_ipstr(&ipaddr) + ":" + portaddr);

    fsock_fdzero(1);
    fsock_fdset(1,sock);

    while(!key(_esc))
        // Esto se podria hacer todo un fdset general, pero como cada frame se ejecuta por separado no hay problemas aca

        if (fsock_select(1,-1,-1,0)>0 && fsock_fdisset(1,sock))
            // En una aplicacion real, aca se debe poner un loop hasta recibir el paquete completo
            rlen=tcpsock_recv(sock,&msg,sizeof(msg));
            if(rlen<=0)
                break;
            end

            // Suponemos que aca tenemos el paquete completo
            cnt=split("["+chr(13)+chr(10)+"]+", msg, &hdrFields, sizeof(hdrFields));

            for(n=1;n<cnt;n++)
                if(strcasecmp(substr(hdrFields[n],0,17),"Accept-Language: ")==0)
                    lang=substr(hdrFields[n],17);
                end
            end

            cnt=split("[ ]+", hdrFields[0], &request, sizeof(request));

            log("Request ["+hdrFields[0]+"]");

            if(request[0]!="GET")
                msg=request[2]+" 405 Method Not Allowed";
                tcpsock_send(sock,&msg,len(request[2])+23);
                break;
            end

            /* Expand */

            while((pos=find(request[1],"%")) != -1)
                d1=asc(ucase(substr(request[1], pos+1, 1)));
                d2=asc(ucase(substr(request[1], pos+2, 1)));

                if(d1>=asc("A"))
                    d1-=asc("A")-10;
                else
                    d1-=asc("0");
                end

                if(d2>=asc("A"))
                    d2-=asc("A")-10;
                else
                    d2-=asc("0");
                end

                request[1]=substr(request[1], 0, pos)+chr(d1*16+d2)+substr(request[1], pos+3);
            end

            /* Comprueba si se quiere acceder a otro directorio anterior al DocumentRoot */
            if(find(request[1], "..") != -1)
                msg=request[2]+" 403 Forbidden";
                tcpsock_send(sock,&msg,len(request[2])+14);
                break;
            end

            // Aca usando los modo de manejo de archivos GZ, podemos dar soporte a archivos paginas gzip
            if(substr(request[1],-1,1)=="/")
                fp = fopen(DocumentRoot+request[1]+"index.html."+lang, O_READ);
                if (!fp)
                    fp = fopen(DocumentRoot+request[1]+"index.htm."+lang, O_READ);
                end
                fp = fopen(DocumentRoot+request[1]+"index."+lang+".html", O_READ);
                if (!fp)
                    fp = fopen(DocumentRoot+request[1]+"index."+lang+".htm", O_READ);
                end
                if (!fp)
                    fp = fopen(DocumentRoot+request[1]+"index.html", O_READ);
                end
                if (!fp)
                    fp = fopen(DocumentRoot+request[1]+"index.htm", O_READ);
                end
                if (!fp)
                    fp = fopen(DocumentRoot+request[1]+"index.html.html", O_READ);
                end
                if (!fp)
                    fp = fopen(DocumentRoot+request[1]+"index.htm.html", O_READ);
                end
                if (!fp)
                    fp = fopen(DocumentRoot+request[1]+"index.html.htm", O_READ);
                end
                if (!fp)
                    fp = fopen(DocumentRoot+request[1]+"index.htm.htm", O_READ);
                end
            else
                fp = fopen(DocumentRoot+request[1]+"."+lang, O_READ);
                if (!fp)
                    fp = fopen(DocumentRoot+request[1], O_READ);
                end
                if (!fp)
                    fp = fopen(DocumentRoot+request[1]+".html", O_READ);
                end
                if (!fp)
                    fp = fopen(DocumentRoot+request[1]+".htm", O_READ);
                end
            end

            if (!fp)
                msg=request[2]+" 404 Not Found";
                tcpsock_send(sock,&msg,14+len(request[2]));
                break;
            end

            while(!feof(fp))
                slen=fread(fp, msg);
                tcpsock_send(sock,&msg,slen);
                frame;
            end
            fclose(fp);
            break;
        end
       
        fsock_fdset(1,sock); //hay que reincluir socket tras select

        frame;
    end

onexit
    fsock_close(sock);// Cierra el socket
    clients--;

end
Title: Re: Sugerencias de nuevos modulos
Post by: FreeYourMind on September 28, 2011, 09:22:51 AM
Quote from: osk on September 27, 2011, 09:53:06 PM
Para lo de los botones y eso ¿no estaba la GUI_SO?

Le pido disculpas a prg, se me habia olvidao su excelente GUI_SO xD
Culpa por no probarla antes...

Tambien esta la DYKO dialogs for bennugd de handsource-dyko, la cual voy a probar, prometen mucho sus imagenes sobretodo porque estas clavadas a las de Winsows.
Title: Re: Sugerencias de nuevos modulos
Post by: Prg on September 29, 2011, 10:13:32 PM
Gracias, pero también estoy de acuerdo en un módulo oficial de gui, sobre todo ahorita que estoy teniendo tantos problemas en quitar todos los punteros a string XD  :-\

:)