Diario de desarrollo

Started by josebita, October 26, 2015, 09:32:22 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

SplinterGU

Quote from: josebita on November 27, 2016, 10:24:40 PM
He cambiado la fuente del sistema.
Hasta ahora se usaba la misma fuente bitmap que BennuGD, pero la verdad es que la tuve que convertir a 32bpp y algo debí hacer mal porque se veía muy borrosa. Además, en pantallas con alta densidad de píxeles (como los móviles) no se ve nada porque el texto es demasiado pequeño (y me hago viejo y cada vez veo menos de cerca...)

Total, que he metido como fuente del sistema Roboto en formato TTF. Es decir: que se puede escalar con ttf_set_size(0, [tamaño]); y no se verá borrosa.

yo creo que la fuente del sistema deberia ser interna y no depender de objetos externos y menos de terceros... total puedes cargar fuentes con el modulo de ttf... quizas estaria bien añadir la funcionalidad de reemplazar el fuente del sistema por otro, que no sea fijo, y de poder recuperarlo si uno lo desea (descargando previamente el reemplazo)

no se, es una idea...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

despues si falla ni texto vas a tener en pantalla  ;D

josebita

Quote from: SplinterGU on November 28, 2016, 04:17:55 AM
yo creo que la fuente del sistema deberia ser interna y no depender de objetos externos y menos de terceros... total puedes cargar fuentes con el modulo de ttf... quizas estaria bien añadir la funcionalidad de reemplazar el fuente del sistema por otro, que no sea fijo, y de poder recuperarlo si uno lo desea (descargando previamente el reemplazo)

no se, es una idea...
Perdón, no me expliqué con claridad. La fuente del sistema ha cambiado a una fuente en TTF, pero ese TTF va integrado en el ejecutable de PixTudio, de la misma forma que la fuente del sistema de BennuGD va en un bitmap que va integrado en su ejecutable.

La gracias está en que a pesar de ser integrada es vectorizado, de forma que se va a ver bien a casi cualquier resolución.

Por si a alguien le interesa, he dejado el pequeño script Python con el que he generado la cabecera en la propia cabecera:

https://bitbucket.org/josebagar/pixtudio/src/761deb9bc719141c37f0bfa9fe5d504ae982e9e7/modules/libfont/systemfont.h?at=bigmap

josebita

#213
He añadido un par de funciones para obtener el nombre de la familia y el nombre de estilo de la fuente.
Ahora a partir de un fichero TTF es posible agrupar "ficheros" TTF en función de su familia.
He añadido el siguiente ejemplo a la suite de ejemplos de PixTudio:
import "mod_say"
import "mod_video"
import "mod_map"

Process main()
Private
    int ttf;
Begin
    // Load a TTF file and print its family and style names
    ttf = ttf_load("ttf/DejaVuSans.ttf");
    say("System font:        '" + ttf_get_family(0) + "'->'" + ttf_get_style(0) + "'");
    say("ttf/DejaVuSans.ttf: '" + ttf_get_family(ttf) + "'->'" + ttf_get_style(ttf) + "'");
    if(OS_ID == OS_WIN32)
        fnt_unload(ttf);
        ttf = ttf_load("c:/Windows/Fonts/arial.ttf");
        if(ttf > 0)
            say("c:/Windows/Fonts/arial.ttf: '" + ttf_get_family(ttf) + "'->'" + ttf_get_style(ttf) + "'");
        end
        fnt_unload(ttf);
        ttf = ttf_load("c:/Windows/Fonts/arialbd.ttf");
        if(ttf > 0)
            say("c:/Windows/Fonts/arialbd.ttf: '" + ttf_get_family(ttf) + "'->'" + ttf_get_style(ttf) + "'");
        end
        fnt_unload(ttf);
        ttf = ttf_load("c:/Windows/Fonts/arialbi.ttf");
        if(ttf > 0)
            say("c:/Windows/Fonts/arialbi.ttf: '" + ttf_get_family(ttf) + "'->'" + ttf_get_style(ttf) + "'");
        end
        fnt_unload(ttf);
        ttf = ttf_load("c:/Windows/Fonts/ariali.ttf");
        if(ttf > 0)
            say("c:/Windows/Fonts/ariali.ttf: '" + ttf_get_family(ttf) + "'->'" + ttf_get_style(ttf) + "'");
        end
        fnt_unload(ttf);
    end
End
El código escribe por consola:
System font:        'Roboto'->'Regular'
ttf/DejaVuSans.ttf: 'DejaVu Sans'->'Book'
c:/Windows/Fonts/arial.ttf: 'Arial'->'Regular'
c:/Windows/Fonts/arialbd.ttf: 'Arial'->'Bold'
c:/Windows/Fonts/arialbi.ttf: 'Arial'->'Bold Italic'
c:/Windows/Fonts/ariali.ttf: 'Arial'->'Italic'

SplinterGU

muy buenos progresos! felicitaciones!
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

JaViS

Working on Anarkade. A couch multiplayer 2D shooter.

josebita

#216
Quote from: SplinterGU on December 06, 2016, 03:24:42 PM
muy buenos progresos! felicitaciones!
¡Muchas gracias! toma prestado tanto cuanto quieras para BennuGD2, por supuesto :)

Otra cosa nueva: el commit 79aadb7 añade soporte para leer imágenes en formato JPEG mediante la función jpg_load().

Algunas explicaciones al respecto:

  • Sólo se pueden leer imágenes JPEG, no se pueden escribir a disco. Para eso hay que seguir usando MAP o PNG.
  • Llevaba algún tiempo dubitativo sobre si debía incluir esto o no, pero me he puesto a mirar la librería TMX para cargar mapas tileados (que ya me dijisteis que era importante) y he visto que los propios ejemplos tiran de JPEG en muchos casos, así que me he animado a implementarlo.
  • No he acabado con mod_steam, sólo estoy rumiando cómo continuar con ella y he aprovechado para ésto.

[Edito] Tenéis un ejemplo simplón de uso aquí.

alicesimu

Quote from: josebita on December 06, 2016, 06:38:26 PM
Quote from: SplinterGU on December 06, 2016, 03:24:42 PM
muy buenos progresos! felicitaciones!
¡Muchas gracias! toma prestado tanto cuanto quieras para BennuGD2, por supuesto :)

Otra cosa nueva: el commit 79aadb7 añade soporte para leer imágenes en formato JPEG mediante la función jpg_load().

Algunas explicaciones al respecto:

  • Sólo se pueden leer imágenes JPEG, no se pueden escribir a disco. Para eso hay que seguir usando MAP o PNG.
  • Llevaba algún tiempo dubitativo sobre si debía incluir esto o no, pero me he puesto a mirar la librería TMX para cargar mapas tileados (que ya me dijisteis que era importante) y he visto que los propios ejemplos tiran de JPEG en muchos casos, así que me he animado a implementarlo.
  • No he acabado con mod_steam, sólo estoy rumiando cómo continuar con ella y he aprovechado para ésto.

[Edito] Tenéis un ejemplo simplón de uso aquí.

Esta muy bien, la verdad, como segunda opcion se puede usar JPG para algunas cosas, en vez de PNG, por ejemplo.
Yo estoy conforme que se pueda leer este formato de imagen tan popular!

josebita

Muchas gracias :)

A ver si saco tiempo para añadir soporte para mapas tileados pronto.

Drumpi

Bueno, JPG es popular y uno de los estandares más utilizados... pero yo no lo recomendaría para hacer videojuegos, a menos que se esté usando gráficos hiper-realistas: los "JPEG artifacts" pueden ayudar a darle naturaleza más o menos orgánica a las texturas, pero como te de por trabajar en pixelart, el formato te va a arruinar la vida, porque una imágen de 2 colores la convierte en una de 300 al "suavizar" (o más bien, meter ruido en) los bordes.

Lo de los mapas tileados es MUY interesante. No debería ser difícil de implementar, creo. Lo del formato sí que sería interesante estudiarlo. No voy a iniciar una discusión "el formato X es el mejor" (especialmente teniendo uno propio ^^U) pero sí que valoraría tener un formato propio y, aparte, librerías para cargar los más interesantes, y funciones para crearlos en memoria a base de MAPs y FPGs :P
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

daltomi

#220
Bueno, como este es el diario de desarrollo, les cuento algunas cosas.

Estuve leyendo algunas incidencias de Pixtudio en bitbucket y estuve tratando de implementar algunas soluciones.

1) Utilizar cuadro de mensajes  de SDL.


Ejemplo:

import "mod_video"
import "mod_wm"
import "mod_key"
import "mod_text"
import "mod_say"

Process main()
private
    int buttonid;
Begin
    set_mode(640, 480, MODE_WINDOW);
    write(0, 320, 240, 4, "Press enter");
    while(! key(_enter))
        FRAME;
    end

    while(buttonid != MB_OK)
    buttonid = messagebox(MESSAGEBOX_INFORMATION, "Message title", "Show other MessageBox?", MB_YES | MB_NO);
    if (buttonid == MB_YES)
    buttonid = messagebox(MESSAGEBOX_WARNING, "Message title", "Exit ?", MB_OK | MB_CANCEL | MB_RETRY);
    end
        FRAME;
    end
End


(Hmm, el MESSAGEBOX_INFORMATION no debería hacer algo? no me había dado cuenta  ;D)

Combinaciones posibles:

MB_YES | MB_NO
MB_YES | MB_NO | MB_CANCEL
MB_YES | MB_NO | MB_RETRY
MB_OK | MB_CANCEL
MB_OK | MB_CANCEL | MB_RETRY

He individuales, es decir, solamente MB_OK por ejemplo.

Funciona, pero el fondo de la ventana no se actualiza, osea que al mover el cuadro de mensaje se dibuja el arrastre en la ventana, nada lo deje ahí y no mire más. Y para colmo no se nada del lenguaje de bennu, frame y no se que, le robe un ejemplo a Pixtudio y eso :D

2) En linux, poder usar enlaces(accesos directos) hacia el programa pxtp con nombre diferente a pxtp.
Por ejemplo un archivo de enlace.

/home/yope/pxtp   -> /usr/bin/pxtp


Ahora le puedes colocar el nombre que quieras, por ejemplo space_war

home/yope/space_war  -> /usr/bin/pxtp

Y no mas segfault ;)

Todo muy lindo, pero después ví que existen esos archivos standalone no se que:

standalone = (pxtrtm_strncmpi(appexename, "pxtp", 4) == 0);

Faltaría probar eso.

Nada, por charlar.

https://bitbucket.org/daltomi/pixtudio/branches/





JaViS

Working on Anarkade. A couch multiplayer 2D shooter.