Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Tilengine y tcc
#1
Hola,

Como lo comentábais en este foro, he probado el tcc (no lo conocía) y me ha sorprendido lo mucho que hace para lo pequeño que es. Lo he probado con los ejemplos de Tilengine y funciona sin problemas. La salvedad es que no hay que enlazar con la librería estática Tilengine.lib, sino directamente con la dll (como en Linux).

Si añades tcc a tu variable de entorno path para usarlo desde cualquier directorio y abres un terminal de consola en el directorio de Tilengine\samples, hay que escribir:

Para 32-bit:
Code:
tcc Platformer.c ..\lib\win32\Tilengine.dll -I"..\include" -o Platformer.exe

Para 64-bit:
Code:
tcc Platformer.c ..\lib\x64\Tilengine.dll -I"..\include" -o Platformer.exe

Lo mismo para los ejemplos que requieren varios fuentes:
Code:
tcc Mode7.c Sin.c ..\lib\x64\Tilengine.dll -I"..\include" -o Mode7.exe

Ya diréis dónde habéis tenido problemas para hacer funcionarlo. Aquí compila y ejecuta sin problema.
Reply
#2
Aun no he probado de nuevo tilengine con tcc.
Este es scite junto con tcc donde intente en su momento pero no supe como configurar la libreria.
https://www.mediafire.com/file/1msmead1u...C.zip/file
¿Donde tendria que poner los archivos ahi?
Aunque creo mi error fue no configurar scite muy bien para compilar con una libreria externa como tilengine, bueo no estoy seguro.
Es algo tarde y necesito dormir, pero queria responder antes igual je.
Seria bueno si puedes enviarme un ejemplo para usarlo ahi.
Reply
#3
Hola megamarc,he probado este compilador y no me funciona,seguramente estoy haciendo algo mal.

Basandome en el codigo de ejemplo que has puesto(que no lo veo muy claro),te voy a poner como yo lo he puesto,lo primero es que he metido todos los archivos en la carpeta del compilador y lo tengo asi.

tcc Platformer.c  Tilengine.dll -o Platformer.exe

Otra cosa,al final he conseguido hacer funcionar los ejemplos de python,lo que le faltaba era el archivo sdl2.dll.

Lo vez!,estos son cosas que ya deberia traer tilengine.Porque si yo me lio imaginate alguien que no sabe nada de nada,por eso cada biding de tilengine deberia venir con todos los archivos en una carpeta,para que simplemente los ejecute y pueda ver el resultado o compilarlo sin problemas.

Por ultimo comentarte algo,he probado raylib y viene con el notepad++ preconfigurado y con compilador,creo que podrias aprobecharte de esto y hacer algo parecido y cuando uno se descarga tilengine ya tendria editor y compilador para poder trabajar de inmediato,esto es lo mismo quie tiene gemixstudio.Saludos
Reply
#4
Buenas!

Qué mensaje de error te da el tcc al compilar?

Un binding de un lenguaje para usar una biblioteca multiplataforma escrita en otro lenguaje nunca trae la biblioteca original, tenerla instalada y en marcha siempre es responsabilidad de uno mismo. Busca por ejemplo cualquier binding para SDL2 o glfw3, por ponder dos ejemplos. Siempre te dicen que requieren tener la biblioteca instalada, pero ellos no te la instalan, eso lo haces tú. La razón es muy sencilla: son bibliotecas multiplataforma disponibles en muchas arquitecturas diferentes. Qué versión y script de instalación y debería llevar el binding para hacértelo fácil? Hablas de Tilengine.dll y SDL2.dll, pero es porque vienes de entorno Windows. En Linux la biblioteca SDL2 se obtiene mediante un gestor de paquetes y Tilengine es Tilengine.so y para que funcione no debe estar en la carpeta local, sino en /usr/lib. Y hay excepciones, no siempre es así. Y en OSX también es diferente. Al final hay que separar las cosas: la complejidad de instalar la biblioteca base es un asunto, y lo(s) binding(s) son otra cosa. El objetivo no es tener un paquete único para un determinado perfil de principiante, sino una estructura modular que permita separar complejidades y aprovechar componentes.

No te preocupes que hacerlo así no es un problema. En cualquier binding (incluídos los de Tilengine) siempre te remiten a que primero te instales la biblioteca base, y cualquiera que va a utilizar un binding de una biblioteca para un determinado lenguaje, ya sabe que se tiene que ocupar de instalarla antes.

En cuanto a las dudas de includes y bibliotecas. Cuando en C se trabaja con bibliotecas externas, éstas siempre se encuentran en directorios externos a tu propio programa, precisamente porque son externas. Una habilidad fundamental de cualquier programador de C es saber que tiene que indicarle al entorno qué bibliotecas enlazar y dónde se encuentran. Ya sea en la línea de comandos, o en ti IDE habitual, pero gestionar esas opciones es algo básico. Si tienes problemas para usar una biblioteca porque no tiene todos los archivos juntos en una misma carpeta, te recomiendo que profundices más en el manejo del lenguaje C y su metodología de trabajo. En otro post ya comenté que no es un lenguaje para principiantes y requiere de bastante trabajo manual.

Raylib viene listo para funcionar, pero son 100 Mb y trae un instalador que es sólo para Windows. Y los bindings van aparte, sólo es la librería base y los ejemplos. Si quieres usarla en Linux, o trastear con los bindings, ya tienes que buscarte la vida o hacer varias operaciones. Su autor es profesor en la universidad y su público objetivo son estudiantes y aprendices. He visto el código fuente, y más allá de su utilidad real como herramienta para hacer juegos, la gestión interna que tiene y cómo permite generar builds para tantas plataformas diferentes y automatizarlas es extraordinaria. Como herramienta didáctica sobre cómo se hace una biblioteca y se gestiona un proyecto, es ejemplar. Y por cierto, su autor es de Barcelona (como yo), y habrás observado que toda la documentación y la web están en inglés, no en castellano.

Un saludo!
Reply
#5
No te molestes por lo que te voy a decir,pero como tu bien has dicho,has necesitado 20 años para darte cuenta de que para crear aplicaciones es mejor otros lenguajes mas sencillos de usar,espero que no necesites otros 20 años para darte cuenta de que hay que ponerle las cosas lo mas sencillo posible a la gente si quieres que utilicen tu libreria,porque si solo hay complicaciones nada mas empezar vamos por mal camino.

De hecho he hechado un vistazo a los ejemplos de raylib y freebasic y es lo que yo te decia,ejemplos cortos y sencillos para aprender,algo que no tiene tilengine que son ejemplos a modo de demostracion y complicados de entender y no a modo de tutorial.

En cuanto a lo de los archivos como sdl2,pues si le das a la gente una libreria grafica y no trae todos los archivos al menos especifica que hay que instalarselos y donde encontrarlos.

En cuanto a lo del ingles,pues lo unico que hace es limitarse aun publico que solo habla ingles,yo creo que hay que poner ejemplos tambien en español para dar facilidades al mundo hispano,pero bueno,veo que los programadores son muy orgullosos y no aceptan consejos de gente que esta epezando o que llevan poco tiempo o que simplemente tienen una vision distinta de como hacer las cosas.

Iba a crear un tema para debatir sobre tilengine,que es lo que se podria mejorar o cambiar o añadir pero veo que tienes una idea fija y inamovible sobre tilengine y no te veo por la labor de aceptar nuevas ideas.

Bueno,intentare usar la version de freebasic de tilengine y si no consigo nada lo dejare definitivamente porque ya es mucho tiempo el querer usar esta libreria y no me das facilidades para usarla.

Pues me despido hasta otro dia y de nuevo te digo que no te molestes,todo lo que te digo es solo para ayudarte a mejorar tu libreria.Chao Smile
Reply
#6
Hola!

No me molesto en absoluto por tus comentarios, y aunque pueda parecer que soy inflexible, sí que tengo en cuenta todos los puntos de vista. Lógicamente tengo una visión generaly en ella no pueden encajar todas las sugerencias, pero sí que leo y considero todos los comentarios. Espero que no te molestes tú tampoco eh?

En este último mensaje hay algo que me ha hecho reflexionar. Parece que no queda claro en la documentación que Tilengine requiere (de momento) tener SDL2 instalada, y eso no puede ser, tengo que revisarlo y ahí te doy la razón. De hecho en la versión Windows, en la última actualización tanto en GitHub como en itch.io, ya distribuyo los binarios de la SDL2. En linux no hace falta porque se hace mediante el gestor de paquetes de la distro.

El otro tema que me ha hecho reflexionar es lo que comentas de que Raylib y FreeBasic vienen listos para usar. Si te das cuenta, estos dos programas vienen con un *instalador* para Windows. Tilengine viene en un .zip, sin instalador. En Windows existe una problemática, y es que no hay una ruta estándar donde poner las bibliotecas compartidas (como Tilengine.dll o SDL2.dll). Por eso Raylib trae un instalador que toca las variables de entorno del sistema para poder ser accesible no sólo desde la carpeta de /samples. Ya me planteé hacer un instalador para Windows para reslver esto, pero es un tema de cierta complejidad y hay que dedicarle tiempo. Otras bibliotecas gráficas como SDL2 o glfw no traen instalador, tan sólo un .zip con el binario, y se espera que sea el propio programador el que se las copie donde quiera. En Linux no existe este problema, pues todas las bibliotecas compartidas van a /usr/lib, y además al tener gestores de paquetes se hace mucho más sencilla la distribución de componentes. Windows no tiene gestor de paquetes integrado.

También hay que vigilar con los instaladores. El de Raylib por ejemplo es muy invasivo. Me obliga a instalarme un compilador y un editor de texto concretos. Y si resulta que yo ya los tengo y utilizo habitualmente? No los puedo desmarcar y instalarme sólo la biblioteca Raylib, me lo mete todo quiera yo o no, duplicando un montón de cosas que ya sé utilizar y tengo instaladas y configuradas. No me gusta esa filosofía, me tira para atrás, prefiero que sea el propio usuario el que elija su compilador y editor. Asumo que como Tilengine es una biblioteca de programación en C, quien se la ha descargado para evaluarla ya está familiarizado con el uso de compiladores y editores de texto. Son los requisitos básicos. Como quien quiere usar SDL2 o glfw3, en sus manuales no te explican esas cosas, asumen que si vas a usarlas ya sabes de qué va. Te explican el uso de la biblioteca, no cómo montar un entorno básico para trabajar con ellas.

En cuanto al debatido tema del inglés, muchos grandes proyectos traen la web y la documentación en varios idiomas (aunque no siempre actualizados), y eso es fantástico. La propa API (los nombres del as funciones) debe ser única y siempre igual. Absolutamente ninguna biblioteca de uso amplio tiene su API en varios idiomas, y como a día de hoy el inglés es el idioma internacional oficial, es el que se utiliza siempre. No es un tema de orgullo personal sino de estandarización. En cuanto a mantener la web y ejemplos en diferentes idiomas, es un tema de disponibilidad de recursos. Yo no soy una gran empresa, soy un único individuo desarrollando Tilengine por amor al arte en mi tiempo libre, no me gano la vida con ello, tengo un trabajo y familia así que el tiempo del que dispongo es muy limitado. Quien quiera es libre de traducirlo todo y hacer tutoriales y explicaciones en varios idiomas (y sería estupendo!), pero yo no puedo invertir tiempo en ello, simplemente porque no dispongo de él. Al igual que en el caso anterior, el idioma internacional es el inglés y es el que debo utilizar para que sea un proyecto de alcance global. En la comunidad de desarrolladores se asume el inglés como requisito, pues casi todo está en inglés (y si no fuera así sería un caos) y en cualquier empresa de software te lo van a pedir. Las traducciones y soporte para varios idiomas vienen siempre de parte de equipos de personas dedicadas a ello, no de los propios programadores. Los programadores programan, los traductores traducen.

Con esto quiero explicar que las cosas se hacen de una determinada manera por unos motivos y unas realidades concretas, no por orgullo o tozudería o no querer escuchar. Pero tú también amigo Hokuto40, si de verdad quieres dedicarte a esto, eres el primero que debería escuchar y aprender de los que llevan más tiempo en este mundillo, en vez de pretender que sean los demás los que deban adaptarse a tu falta de experiencia y/o conocimientos.

Saludos!
Reply
#7
Bueno megamarc,vamos a zanjar el tema que no vamos a ninguna parte.

Lo primero decirte que no estoy molesto, puede parecerlo pero no es asi,esto ya me ha pasado en otros foros y es problema de que como no nos vemos las caras pues hay tendencia a mal interpretar las cosas,yo disfruto mucho de estos dialogos Smile

El tema de la libreria sdl,pues la version que tengo no la trae y eso que es de hace una semana pero puede que la hayas actualizado y ya la traiga,de todas formas hay que informar lo que necesitas para hacer funcionar tu libreria.

El idioma,en realidad no es un problema grave y creo que no me has entendido,me refiero a introducir algunos ejemplos con comentarios en español,mas que nada para orientar al que quiera utilizarlo.

Lo del instalador tampoco me has entendido,solo decia el tener un editor ya preconfigurado para empezar a programar,luego el que quiera otro pues que se lo monte el mismo,pero gemix studio trae el notepad++ preconfigurado y con coloreado de sintaxis para empezar con el programa y no trae instalador.

Que mas,pues me vuelves a decir lo mismo de la familia y blablabla,yo tambien tengo mi vida personal y tampoco dispongo de todo el tiempo que yo quiesiera,me gustaria tener mas tiempo para poder estudiar con calma tus ejemplos pero no es asi.

Ya para terminar ,comentarte que reconosco ser un poco cabezota pero tu tambien lo eres y lo ultimo que me has dicho lo deja muy claro.

Te comento,me has dicho que debaria de escuchar a los que llevan mas tiempo en esto si quiero dedicarme a ello,pues lo unico que quiero es aprender de ti y de los que saben pero no me enseñas,llevo creo que dos años intentando que me enseñes a usar tilengine pero no hay manera,te he comentado muchas veces que tus ejemplos son complicado de entender y que lo mejor es hacer ejemplos sencillos y cortos pero nada de nada.

Y yo no quiero que te adaptes a mi falte de inesperiencia pero tampoco quieras que yo me adapte a tu forma de ver las cosas ciegamente,creo que deberiasmos tener un punto intermedio.

Ya para finalizar,solo decirte que te fijes en los ejemplos que trae raylib y freebasic,hay de todo desde ejemplo muy basicos hasta ejemplo muy avanzados y eso es lo que yo llevo diciendote todo este tiempo,has ejemplos super basicos para se pueda entender tu libreria,los ejemplos avanzados ya estan.Si yo supiera utilizar tilengine,yo mismo crearia ejemplos para principiantes y comentados.

Te pongo un ejemplo,como cargo una imagen,como la muestro en pantalla,como cargo un fondo,como manejo los input,como manejo las colisiones,como hago efecto basicos de escalar, rotar y efectos de todo tipo.Es decir ejemplos basico y cortos de entender.

Yo me quito el sombrero ante la gente que utiliza tilengine gracias a los ejemplo que trae,pero yo no los entiendo,son codigos muy largos y no todo el mundo tiene la facilidad de otros para entender ciertas cosas.

Y nada mas,solo decirte,que durante estos dos años que he intentado que me enseñaras a usar tilengine pues he aprendido a utilizar muchos engines/framework,pues algo no estaras haciendo bien,digo yo.Pero bueno,seguire esperando a que tu me enseñas a utilizar tilengine algun dia y sin prisa y agobios que se que cada uno tiene sus responsabilidades y falta de tiempo.

Para finalizar y no parecer desagradecido,te agradesco que compartas tu libreria gratuitamente.Chao Angel
Reply
#8
Bueno Hokuto40, es que los ejemplos de tilengine estan, si bien las ultimas versiones incluyen sdl y todo lo necesario para ejecutarlo.
Yo veo la informacion que megamarc a creado para tilengine muy bien, que en ingles es otra cosa, pero eso es excelente para todo el mundo en general igual.

El unico problema que veo es que no supiste como montar Tilengine en algun editor/compilador de C je
y por eso mensionas los ejemplos de raylib y freebasic, en el caso de raylib incluye demasiadas cosas ademas de la libreria misma, lo cual no me gusta y opino lo mismo que megamarc, es muy invasivo, en el caso de freebasic simplemente hice lo que imagino que buscabas y que tambien considera suficiente para un inicio.

En fin, creo que lo que te gustaria es una secccion de "mini guia" o "tutoriales" de tilengine, y bueno tambien me gusta la idea que el sitio web tuviese una seccion como "Mini Guide" o algo asi junto a las secciones Feature , Examples, Forum, Documentation.

Tambien se podria hacer algo como raylib sin hacerlo invasivo, por ejemplo la libreria junto con las DLL necesarias para compilar/ejecutar algun ejemplo, como hice con mi ejemplo para freebasic, pero para C, Python, etc. Eso si, fue por que ambos usamos Windows, porque si usabas algo como Ubuntu, no abrias podido ejecutar nada por ejemplo, que es a lo que se refiere megamarc.

Aunque ciertamente ya esta en las descargas ejemplos y todo lo necesario, la cuestión creo que es hacerlo exageradamente simple, para los mas nuevos/curiosos que solo quieran abrir, compilar, probar. Sin tener que configurar variables de entorno, rutas, etc
Peeero, como indica megamarc, eso puede complacer solo a usarios de un sistema, ya sea Windows, Linux, Mac, etc
Reply
#9
Aunque quizas un grupo en IRC o Telegram seria mejor para resolver dudas y ofrecer ayuda de mejor forma.
Yo y mis comentarios al viento ;P
Reply
#10
Hokuto40!

Aunque tengamos visiones diferentes, valoro mucho tu interés, comentarios y dedicación. Siento no haber podido ser de más ayuda Cry .

Sí que te doy la razón en el tema de ejemplos quizás más sencillos. Igual los primeros ejemplos que hice eran demasiado complejos, y luego he elaborado otros más simples para pero Python, por considerarlo un lenguaje más didáctico. Pero ya que ahora que estoy centrando mis esfuerzos en la biblioteca principal, debería potenciar esta parte. El otro asunto que se comenta, el de los tutoriales o paso a paso, precisamente las últimas actualizaciones que voy haciendo al proyecto están en la documentación (sí, en inglés). Lo que debería ser el manual. Sé que este tema está cojo y por eso es lo que estoy trabajando últimamente. No está completo, pero lo que hay está aquí:
http://www.tilengine.org/doc/

Están completos los capítulos 1 a 7 (hasta los sprites), y el 17 (referencia), aunque tengo que revisarlos.Esta debería ser la biblia.

El otro asunto que recomiendo (para este proyecto o cualquier otro), es que si tenéis cuenta en GitHub, le digáis que seguís el proyecto. De esta forma, cada vez que hago alguna modificación, recibís una notificación y así podéis ir siguiendo las novedades. Yo voy haciendo actualizaciones con frecuencia, pero no publico cada pequeño cambio en el foro o en Facebook, ahí sólo pongo las actualizaciones importantes. Pero cambios menores, como la progresión de la documentación o el haber incluído las bibliotecas dll necesarias en la distribución por ejemplo, quen han pasado desapercibidas, os las notificaría enseguida.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)