Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
FreeBASIC y Tilengine
#11
Hola csanchnc,me gustaria saber tu opinion sobre tilengine ya que veo que has profundizado.

Que tal el sistema de input y de colisiones y que tal el sistema de animaciones y que tal todo en general Biggrin .

Dime que es lo que tu cambiarias o añadirias o eliminarias.
Reply
#12
Hola hola Hokuto40, creo que solo he profundizado un poco mas que tu en tilengine, realmente no soy un experto, solo alguien aprendiendo Tongue
El sistema de entrada (input, ves que se te sale el ingles eh? jajajaja) de tilengine no lo he tocado, solo he hecho jugado un poco usando freebasic y algunas pocas funciones de tilengine, pero en general lo encuentro muy agradable.
Tampoco he jugado con las animaciones o colisiones en tilengine.
Bueno, Hace un tiempo hice un poco la animacion de megaman 8 de ps1 je

Sobre que cambiaria, no mucho realmente, lo encuentro muy bien como es, aunque algunas cosas menores que encontre interesantes.

Tilengine solo trabaja con imagenes indexadas, solo png/bmp con 256 colores.
De hecho una imagen indexada con solo 16 colores tampoco funciona, asi que deben ser imagenes indexadas y 256 colores Tongue

Creo que estaria bien que soportara los formatos de imagenes mas comunes, aunque png y bmp hacen suficiente supongo.
Tambien que soportara imagenes indexadas con cualquier cantidad de colores, ya sea 256 o 16
Incluso imagenes a todo color estaria bien, aunque los juegos de consolas o algunos con ciertas reglas de optimizacion 

Algo que no me gusta mucho realmente es que el formato de mapas utilizado por defecto es el de Tile Engine (mapeditor.org)
entiendo que la razon es que es un editor de mapas generico, y al parecer muy agradable de usar, pero este formato es basado en XML, y no encuentro el sentido en esto.
XML dicen es el formato de configuracion "legible por humanos", pero bueno prefiero, INI para configuraciones, no encuentro nada legible XML.
XML para almacenar mapas no se, creo que seria mejor algun formato binario directamente en tal caso.

De cualquier manera estos mapas son solo una opcion en tilengine, opcion que a mi no me gusta Tongue

Estaria interesante ver la opinion de megamarc sobre estas cosas.
Reply
#13
Me parece muy bien lo que comentas,yo pensaba que ya te manejabas con soltura con tilengine y te iba a comentar que me enseñaras pero estamos los dos igual Biggrin 

Si,a mi tambien me gustaria que utilizara imagenes de mas colores pero a megamarc le gusta asi,encuanto a lo de los fondos pues a mi me gusta como esta.

Por cierto ya termine con c y me he puesto 30 minutos con freebasic y me esta gustando mucho,es bastante claro y directo y en 30 minutos y mirando los codigos de los ejemplos ya se como utilizar variables,condicionales,select case,bucles etc..Mañana le hechare otro ratito.Chao
Reply
#14
Hola!

Mis comentarios al respecto:

Imágenes indexadas de menos de 256 colores. Tilengine es render por sofware (como un emulador de consolas o recreativas), así que hay que optimizar las operaciones de CPU. Los formatos de píxel de menos de 8 bits utilizan bitplanes, que cuando están implementados en hardware se hace directamente, pero emularlo en software requiere muchas operaciones que reducirían bastante el rendimiento. El formato que requiere menos operaciones y por tanto es más rápido es el de 8 bpp. Además con él se pueden representar menos colores también. Puedes tener una imagen de 16 colores contenida en una paleta de 256, sin problema. La pérdida de velocidad sería mucho mayor que el ahorro de  memoria.

Imágenes de color directo RGBA. Soportarlas requeriría replantear mucho de lo que está hecho. Diseñé Tilengine para que utilizara las técnicas de la era 8/16 bits (mediados 80 - mediados 90), y en estos sistemas el uso de imágenes de color indexado es fundamental, además de que permite una serie de técnicas como animación por ciclo de color o intercambio de paletas sobre un mismo gráfico que no son posibles en las imágenes RGBA. El "pipeline" del motor de render está todo en 8 bits, y sólo se hace la conversión a 32 en el paso final, al volcar en framebuffer. Soportar imágenes de color RGBA requeriría replantear todo el pipeline gráfico, ya que no está pensado para eso. Y además se alejaría de la filosofía de los sistema de color indexado, que es lo que quiero mantener vivo con Tilengine. Así que no hay planes para soportarlas. Tilengine es para pixel art, que consta de baja resolución y pocos colores, por lo que tampoco supone una limitación relevante.

Formato de mapas: utilizo el formato de Tiled porque tanto el editor como el formato en sí me parecen geniales. No obstante, hay funciones en Tilengine para construir recursos en tiempo de ejecución, que son las mismas que utilizan los propios cargadores de formatos estándar. Así que cualquiera puede implementar un cargador para el formato que quiera, el formato de Tiled de serie es una conveniencia, no una exigencia. Podrías proponer y especificar un formato de mapas que te parecería útil implementar?
Reply
#15
Megamarc!,creo que no has entendido a csanchnc,el no te ha dicho que hagas una version para freebasic,lo que el te ha dicho es que incluyas el biding de freebasic en el zip oficial de tilengine al igual que estan las versiones de pascasl,c# etc..

Yo tambien quiero que metas ese biding en dentro del zip,porque es la version que voy a usar junto con la de python. Tongue
Reply
#16
Hola!

Una de las últimas actualizaciones que hice, y a la que dedicqué un artículo en Facebook, fue sacar los bindings del proyecto principal y mantenerlos como repositorios independientes. Todas las bibliotecas con bindings funcionan así. Así puedo hacer actualizaciones más frecuentes y no se crea confusión, ya que muchas veces los bindings no se actualizan a la misma frecuencia (o se abandonan por sus autores). Todo lo que hay dentro de una distribución debe ser autoconsistente, no es correcto distribuir paquetes cojos:
https://www.facebook.com/notes/tilengine...318164106/

El nuevo binding aparecido en FreeBasic debería integrarse como repositorio propio, idealmente por su autor, pues él es quien ha tenido la molestia de prepararlo, o puedo hacerlo yo con su consentimiento, pero no sé quíen es su autor.
Reply
#17
Me alegra saber que hiciste tilengine con la idea de tecnicas "retro", me parece muy agradable de verdad Smile
Gracias por la explicacion de los limites graficos, que tampoco es que sean grandes limites, seguramente se puede hacer mucho con todo lo disponible.
Lo hacen los programadors para consolas como la NES, GBA, etc, que tienen limitacion de todo tipo, je

Tiled me agrada realmente, me recuerda bastante al diseño de RPG Maker XP, con el que jugue hace tiempo y encontre muy agradable de usar, tan solo que XML no es de mi gusto, pero bueno, supongo puedo darle una oportunidad a Tiled.
-- Acabo de fijarme que puede exportar a formatos como "Habitaciones de GameMaker" y Lua incluso, aunque nunca he jugado con GameMaker se es muy aceptado entre desarrolladores de videojuegos lo que me parece un buen punto para Tiled.
-- jajajaja, acabo de fijarme que ese formato de 'Habitacion de GameMaker' tambien es XML je
Aunque sin duda es terriblemente aceptado, a mi simplemente XML como formato no me gusta, pero como dije no es gran problema y puedo o darle una oportunidad a Tiled o hacer las cosas "a mano"

Sobre algun otro formato de mapas, pues realmente Tiled parece ser el que mejor se ha desarrollado en esto, claro existen algunas otras opciones, las que he encontrado mas interesantes son:
Tile Studio y Mappy, este ultimo vi que puede exportar una tabla GBA de 16x16, que supongo es algun formato de tiles de GBA, exportar a un formato binario, exportar a Flash ActionScript.
Sin emargo Tiled parece ser el mas agradable de usar visualmente y puede que tenga justo lo necesario.
Puedes ver una lista de editores de mapas aqui
http://www.tilemapeditor.com/

Aunque quien hizo el port de tilengine para freebasic me dijo que no es un binding, supongo que es eso directamente, un "port" de la libreria en C a freebasic, tambien comentaste eso anteriormente megamarc, aunque no tengo muy claro la diferencia con los bindings.

megamarc Wrote:En cuanto a una versión específica de Tilengine para FreeBasic, es algo que no tiene sentido, de la misma forma que no hay una versión específica para Python o para C#. La biblioteca siempre es la misma, sólo que se añade una capa de adaptación (binding / wrapper) para poder usar la biblioteca desde un lenguaje diferente. Eso es lo que hace el archivo Tilengine.bi, es un port directo de las cabecera de Tilengine.h pasado a la sintaxis de FreeBasic.
Hokuto40 Wrote:Megamarc!,creo que no has entendido a csanchnc,el no te ha dicho que hagas una version para freebasic,lo que el te ha dicho es que incluyas el biding de freebasic en el zip oficial de tilengine al igual que estan las versiones de pascasl,c# etc..
Pues eso, como dije no tengo muy claro la diferencia entre ports y bindings, y me referia a que tambien me gustaria que agregaras este de freebasic en tu lista de repositorios, si no te resulta complicado ni mucho consumo de tiempo.
Quiero decir, actualmente si, hay una version para freebasic que hizo mysoft, pero no es que el tenga planes de liberar actualizaciones junto con la libreria principal en C.
megamarc Wrote:El nuevo binding aparecido en FreeBasic debería integrarse como repositorio propio, idealmente por su autor, pues él es quien ha tenido la molestia de prepararlo, o puedo hacerlo yo con su consentimiento, pero no sé quíen es su autor.
No hay ningun problema con que agregues el port de freebasic, igualmente si quieres puedes contactarlo desde freenode en #freebasic con el nick Mysoft
Reply
#18
Hola!

Formato xml
Veo que sientes un desagrado personal hacia el formato xml. Es un formato flexible y muy utilizado, y de hecho al ser en texto plano y poder abrirse con un editor de textos, es efectivamente legible por humanos. Un archivo binario puro tradicional no lo es. De todas formas, tampoco se espera que los edites a mano. Yo muy raras veces lo hago. Qué defectos crees que tiene como formato para almacenar datos de forma portable?

Por otra parte, un mapa (o tilemap) no es más que una matriz rectangular de índices y atributos. No hay ningún problema en que desarrolles tu propio formato y escribas un cargador para Tilengine. Pero al hacerlo, estarás inventando la rueda (repitiendo trabajo de algo que ya está desarrollado), y cerrándote las puertas a poder usar editores estándar que son mucho más productivos que escribir la matriz a mano en un editor de textos. Qué ventaja representa? Qué aporta? Tengo curiosidad  Smile

Editores de mapas
A día de hoy Tiled está a la cabeza de los editores de mapas multipropósito (no ligados a ningún framework concreto), por lo menos dentro de los de código abierto. De la lista que has pasado, todos los demás están abandonados o eran poco más que proyectos personales. Dentro de los de pago sí que hay buenas herramientas actuales, como el ProMotion NG: https://www.cosmigo.com/

Bindings y ports
Un binding o envoltorio (wrapper) es un componente escrito en un lenguaje de programación que permite utilizar un componente escrito para otro lenguaje. La implementación concreta no importa, lo que lo define es la función puente hace.
  • En casos como en Python o C#, consta de un único módulo que "envuelve" el componente original y le da un formato con sintaxis y construcciones propias del lenguaje de destino, como objetos, listas, etc.
  • En casos como Java, requiere crear una nueva biblioteca dinámica (.so o .dll) que actúe de puente, ya que no permite acceder directamente. Es el caso más extremo.
  • Y en otros casos como en FreeBasic, basta con portar la cabecera original, es decir adaptarla "tal cual" línea por línea equivalente, sin añadir nada. Es el caso más directo.
Así pues el componente FreeBasic de Mysoft es un binding implementado como un port de la cabecera original escrita en C.

Espero haber resuelto tus dudas!
Reply
#19
Sobre XML, si, es un formato muy utilizado sin duda, flexible, no estoy seguro de como evaluar eso, es decir, gracias a que es un formato muy utilizado existen muchas herramientas para muchas cosas, como el mismo Tiled.
Pero no comparto la idea de que sea un formato <etiqueta>legible<etiqueta> para <etiqueta>humanos<etiqueta>
En mi opinion se usa en muchos casos de manera absurda, por ejemplo uno muy comun es el guardar las configuraciones de un programa.
para eso ya existia INI, que es en mi opinion verdaderamente legible para humanos, incluso sin colores de resaltado.

Un ejemplo es que notepad++ guarda todas sus configuraciones en XML, ah lo olvidaba, tambien sus traducciones, que en su momento queria hacer una traduccion propia del mismo, pero no lo encontre nada agradable editar y lo deje.
Aunque notepad++ es bastante bueno, actualmente mi editor favorito es akelpad, que casualmente guarda sus configuraciones (propias y de complementos) en archivos ini, que incluso aveces edito a directamente.

La cuestion de XML como formato para mapas es, no resultaria mejor que fuese un formato binario? quiero decir, seria mejor para el uso de recursos, ya que se cargaria directamente no?

Sin embargo no, no estoy cerrado a herramientas como Tiled, aunque su formato XML no me encante, la herramienta me parece agradable.

Gracias por la explicacion sobre los bindings Biggrin
Reply
#20
XML puede ser engorroso a veces, no lo niego, pero sin duda es legible con un editor de texto. Un formato binario tradicional, no. O tienes el programa necesario para manejarlo o no puedes hacer nada con él.

Un formato binario tradicionalmente se genera y maneja como un volcado de la memoria del ordenador. Es fácil y práctico, pero tiene el inconveniente de que diferentes arquitecturas de procesadores tienen diferentes formatos de memoria. Esto no es un problema si los archivos se generan y se manipulan localmente sobre la misma máquina. Pero en la actual era de interconexión, un archivo binario definitivamente NO es un buen formato para intercambiar datos. Los archivos de texto son más complejos de manejar, pero son independientes de la plataforma y por lo tanto intercambiables. Por ejemplo yo hago un mapa en Tiled en Windows de 64-bits, y ese mismo mapa lo cargo en Tilengine en una Raspberry Pi. Es decir, que cambio de arquitectura (de Intel x86 a ARM), de tamaño de registro (de 64 a 32 bits) y de sistema operativo (de Windows a Linux), y me sirve exactamente el mismo archivo de datos y el mismo código fuente que lo lee. Esto es impensable en un archivo de datos binario. Por eso en esta era de internet han proliferdo tanto los archivos de texto como medio para describir documentos y datos: HTML, XML, json, Markdown...

Otra ventaja de XML (o json) es que al describir un formato estándar, se pueden utilizar multitud de herramientas para trabajar con ellos, independientemente del contenido o el ámbito de los datos que almacenen, la sintaxis y la estructura siempre son iguales. En cambio, cada formato de archivo de datos binario es propio y sólo se puede abrir con su propia aplicación.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)