Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
I love Tilengine and the 80s :D
#1
Hello to all. My name is Stefano, I am 40 years old and since 1984 I am a lover of technology.

I have done a lot of research for many years to realize my projects (retro and C-64 and Amiga style games).

Tilengine is a very nice project, easy and satisfies almost all my wishes. I would be very happy to share my experiences and ideas with other veteran and nostalgic users like me.

I have studied various programming languages all these years, but every time I am faced with limitations, lack of documentation or radical changes to the API I use for my projects. In the end I always go back to C ++ even if I'm not a professional programmer, but C / C ++ gives you the freedom to decide how to realize the logic of your project, while the scripting languages (Python, Ruby, Lua) always found very anomalous and hostile (they are only apparently easy).

Tilengine is almost perfect in my opinion. Only the following features are missing to make it perfect:
  • Documentation always updated and with many progressive and complete examples.
  • Improvement of the included examples (Shadow and Barrel have many collision bugs and frames management).
  • The idea of including a small documentation in pdf I find it a brilliant and really beautiful thing (I really appreciated). For the occasion I ask permission to implement the Tilengine guide in LaTeX, I open a repository on github and I realize the pdf in LaTeX (I also include the source of course, so everyone can improve it). If you like my idea I begin to realize the preamble (the main.tex to configure the typographic template of the manual in A5).
To make Demoscene (crack screens in the Commodore Amiga and C-64 style) Tilengine is great! are days that I make small experiments to test effects on the text (especially these) and background. Tilengine is a 2d graphics engine so I rely on SDL2 for audio? what do you recommend?

To conclude all that I will achieve I want to release it on github and share it with the community to enrich the study material and all the resources necessary to understand the use of this magnificent engine. Thanks to the author of Tilengine, it's really a nice gift for a nerd like me who was fond of the 80s.

Greetings to all from Italy (Rome).
Reply
#2
Hi Stefano, welcome to the forums!

I appreciate your comments and suggestions. Of course there is a lot to improve, I'm just a single guy maintaining it all with some occasional contributions from other people...
  • Documentation is lacking and sometimes out of date, right. It takes a lot of time to write coherent documentation for the different supported languages. The documentation sources are opened in GitHub so anyone can contribute expanding it or providing new examples and demos.
  • I try that the examples focus on graphics programming, not on game mechanics implementation. The samples you mention are buggy, they were intended to show graphic capabilities only, but I made them on the beginning and I still didn't differentiate concepts. More recent samples only show graphics in the simplest way, and to illustrate gameplay mechanics programming I spawned two sister projects on GitHub: SuperMarioClone (C#) and TilenginePythonPlatformer (Python). These two projects implement actual gameplay mechanics.
  • The pdf documentation is quite obsolete, but I can provide the original OpenOffice document. The newest documentation sources are the README.md file in the root folder, the Markdown files with the C sources for Doxygen (C API), and the docstrings in restructured text inside the python binding for Sphinx. I know that both Doxygen and Sphinx can ouput LaTeX given the appropiate config files. Of course you are welcome to enhance the documentation.
For the audio part I recommend you SDL2 with SDL2_Mixer, this adds many audio formats and tracked music support, and it's cross platform.

I disagree about your opinion on languages, but they're just opinions  Smile I'm a systems programmer so I nearly always program in C (and tilengine is fully written in plain C), but I really like python, is a great tool for learning something and test concepts. With very few lines of code you can have something running, and when something fails it pinpoints where is the problem. Truly cross-platform, no different compile flags for each platform, no extra verbose like Java where you have to wrap everything in modules ands classes, no risk of breaking things with wild pointers or memory leaks... It reminds me a lot of the BASIC in 8-bit microcomputers.

Thanks for your enthusiasm, I really appreciate your feedback! I hope you have fun experimenting with tilengine and helping it grow. And don't forget to share your demos!

Saluti alla bellissima Italia Heart
Reply
#3
thanks for your kind reply.

I have the flaw of writing fast so I'm wrong. I love Python, but I hate languages like Lua because they are very anomalous. Python is simple and the thing that I appreciate is the simplicity in the implementation of C libraries. The amount of libraries available and its syntax (I loved BASIC and recently I resumed my old projects made in QBasic to update them with Qb64).

I really like Tilengine. The bugs in the examples are not a problem, I appreciate the simplicity of the engine and the code of the examples you have added, so I enjoy arranging them by myself and maybe creating interesting experiments.

Tilengine needs a Patreon page for contributions, and videos on the Youtube channel. Sample videos and small tutorials (even without commentary). It helps to promote the project, I can build small guides over time, and spread information in the many open communities I attend.

I do not claim to develop a complete game. I just want to use Tilengine to create Demoscene Commodore Amiga style. I have to experiment a lot, and I'm going to do research to find a small library to apply effects on the text, so the implementation.

Thank you for your support, and do not give up! make your work known, and with time, donations and the development community also increase. Doing everything on your own is really difficult (especially for lack of time I guess).

I'll update you as soon as I finish the first works, nothing special but I'll do my best.
Reply
#4
Thanks again for your suggestions. To get some donations I already have an Itch.io page and a Patreon one. The problem with patreon is that is goal-based, you charge a specific amount to get something done, or charge for letting people download already made sets. So it's a good platform for selling, but not for accepting free donations. I give tilengine for free so I don't have anything to charge for, so I can't set up objectives. At least Itch.io lets people donate just for supporting.

I already have a youtube channel too where I upload recorded demos and work in progress of projects. Didn't have you see it? Or you mean that it needs more videos?

Your idea to use tilengine for demoscene is great! I already love the demoscene, although I started on PC so I missed the C64 and Amiga scene. Please keep in mind that the Amiga had a framebuffer and a blitter, whereas tilengine is a tile engine without framebuffer. So technically the type of demos you can program are more similar to the Mega Drive or Super Nintendo than the Amiga. With some trickery it's possible to manipulate independent pixels in these framebuffer-less systems (and in tilengine too), but it's not easy and has poor performance. Tilengine has a background bitmap feature (check this section). The pixels on a bitmap can be modified on the fly (check TLN_GetBitmapPtr) so you can use this feature as a kind of framebuffer and overlay sprites in top of it. However this feature is limited compared to real framebuffers, as they can be a bit bigger than the screen and perform basic scroll. Maybe I can enhance a bit this feature...

What kind of library do you need for text manipulation? You can do text with sprites, one sprite per character so it can move freely. Please let me know.

Don't worry, I don't give up :-) I enjoy working on tilengine. But my free time is limited and there's a lot to do. The most difficult part is to promote it and make it be known. So I'd really appreciate any promotion you do in your social networks. Smile
Reply
#5
Here I am again. I have experienced many things in tilengine and have come to a conclusion:

  1. Focus on engine development, implementing text effects, shaders, and all the basic graphics to make a 2d SNes-style game.

  2. Update the C# wrapper, because it is simply fantastic! I tried with C++ (hard for me), Python (it's not intuitive and using external libraries like pysdl is detrimental to the health of beginners). The wrapper for C# is really nice, easy, and I find that C# is the best language for Tilengine. Obviously it is my opinion based on my current experience with tilengine.

  3. The documentation must also be converted for C#, without obvious haste, but it is a nice idea that will bring interest to many indie developers (today in the indie games the C# can be found everywhere and I understand the reasons that push users to love this language).

  4. C# is cross-platform and for some time .NET has also become open source for Windows, Mac OS, and Linux, so it's an excellent solution.

  5. The examples included in Tilengine need a minimum of organization and completion (main menu (background, music and sound, new game, options, exit), a level, audio, and basic features to make all the examples a complete mini-game.

  6. Working above all on the simplicity and organization of the engine to make it as simple as possible (the C++ part is for experts like you, as I said C# will simplify things to all the poor hobbyists hobbyists.

I perfectly understand that Tilengine is a graphic engine, and I want it to stay that way! what I would like is the easy integration of audio libraries and inputs needed to make old-fashioned 2D games.

The SNes games were written in Assembly at the time. Nowadays there are endless libraries and programming and scripting languages to simplify the development of modern games, so to make a complete Castlevania clone should be very easy even for those who are not a professional programmer (but still studies and commits to realize the project that he dreams since he was a child).

I hope I have written everything in a clear and understandable way. Otherwise, feel free to get angry with me, I do not offend myself and I find it rewarding and enjoyable to learn new things.

I contacted some users of my knowledge who want to make a wrapper in LUA for Tilengine. I told them that it must be very simple, possibly with a nice tailor-made API (Lua relies on the C standard library, it's not the best for ease, although some consider it as easy as language but I do not approve).

I enjoy experimenting with new things with C#, and see if I can finish my first level for Castlevania.

I've read the API documentation in Python, I like it, but I do not understand why you used pysdl for the platformer example, do not you think pygame is better? much more documented and to realize a small platformer is very easy, all the graphic part is executed by Tilengine while pygame uses it for the game logic (keyboard commands, audio, additional graphic effects). I have not experienced anything with Python, I will do it in a few days. I want to keep Python as the last phase of testing. I like Python but I am very curious and I like to try everything before deciding what route to take.

I advise you to prepare (when you have time) a small guide to Tiled to create and organize game maps, it is very useful. In truth I can do this, if for you it's okay I'll send you the order in the next days. I started the new Tilengine guide in LaTeX.

Thanks, you are very kind, and your engine thrills me every time.
Reply
#6
Hi stefano!

Everything you wrote is clear and understandable :-) I may or may not agree with some of the opinions, but I won't ever get angry with someone that is evaluating and suggesting things to make a better project. So feel free to talk openly about it!

1. Text effects are "high-level" constructions, that can be implemented with tiles, sprites or background bitmap. So they must be done in the application level, not the engine level. The C# "SuperMarioClone" sister project has some basic text for the HUD using tiles. What do you mean by "shaders"? In the graphic level, 2D-style SNES games are already possible with tilengine: it has all the basic elements (tilesets, sprites, palettes. raster effects...) plus some snes-specific features, like affine-transformed layers (mode 7), transparencies/blending and mosaic pixelation.

2, 3, 4. I agree, C# is a fantastic language, it's cross-platform and has powerful free editors with great autocompletion. The C# binding is structurally very similar to the python one (objects, properties...) but with the syntax conventions of C#. It needs a bit of update to be in sync with library v1.19 and the documentation strings. However tilengine doesn't offer sound, so the C# binding won't either. That's why the python platformer example uses SDL2/pysdl. There are also C# bindings for SDL2.

5. I disagree here. The included examples should be as simple as possible to show the graphic features in a clean way. The barrel (castlevania) and shooter (thunder force) samples are cool but way too complex. The sister projects "SuperMarioClone" and "TilenginePythonPlatformer" are intended to show full game mechanics as you say: user input, sound, gameplay... That's why they're separate projects, to keep tilengine examples clean and simple.

You can use any library of choice to provide windowing, sound, post-processing shaders to tilengine. It is designed in a way that makes easy to integrate your own components. In the examples I use SDL2 because it's nearly universal and easy to work with, but there isn't anything in tilengine that forces you to use it, you can use your preferred framework.

I haven't ever worked with Lua, so I don't know its syntax or its way to interface with external libraries in native code.

The future C# binding documentation will be very similar to the current python one, as both bindings have the same structure. I didn't use pygame because pygame is also a binding for SDL2, but it's python-only, and has many features that I won't use and others that are already handled by tilengine itself. In other words: it's non portable and overkill for just providing sound effects. I always chose the most simple and standard/portable option, in this case plain SDL2. I expect to update the C# binding soon, for the documentation part I still have to research which tools are used (C uses Doxygen, Python uses Sphinx...)

Of course you can contribute with anything you think it's interesting! I'm a single individual doing all this in my free time, so there's always more things to do than time to do them...
Reply
#7
Thank you! and you will never have to get angry with me. I'm just a curious user who needs useful information. Do the examples included need to be simple? Yes, absolutely! in fact they are only fixed, that's all! for Python platformer I understood why you used pysdl, I meant that using pygame could be easier and more accessible to everyone. But it's a lot of work to create a complete library that does not create conflicts with external dependencies (I understand the difficulty of your work and I repeat it a lot).

To learn how to use a framework the only way is to continuously experiment with new ideas incrementally. The examples are very good precisely because they are simple. C is complex by its nature so you can not greatly simplify the development process.

Days pass by and Tilengine always thrills me more. Even if I do not have your same skills with C language, I can read the code and understand the beauty of your work.

I ask your forgiveness for too many questions, and I will be happy to support your long-term project because it represents all my childhood and all that I have always wanted to realize a project of mine based on the glorious SNES.

Thanks so much.
Reply
#8
How are you doing with tilengine? Any progress?

C is a systems language and shouldn't be used to develop applications, only low-level system components. Tilengine is writen in C and that's great, because it can be ported to *any* platform, can be used from any high-level language that can access system libraries, and has good performance. No other language offers this level of portability and interoperability. But the examples and actual games are much better coded in C# or python than in plain C. C is as versatile as it is dangerous, and must be handled with care and attention. And even so, it's easy to break something that then it's hard to detect and fix.

Thanks for your nice comments about my C style :-) In my 20-year old career I've dealt mainly with C, lots of it. My shift to other languages is recent, and it's nice to have them.

I've updated C# binding to the latest 1.19 features, I expect to publish it soon.
Reply
#9
I know C# is nicer to program with, but have you guys tried to deploy a stand-alone Linux project with C#? The option I found seems quite clumsy. So for cross platform development I've actually gone back to C++ Biggrin
Reply
#10
No I haven't tried. I always do main development and debugging under Windows, and then build/run for Linux using the same codebase. I woulnd't try to discourage anyone to do it in aonother way. I have my own preferences and reasons, but if your tool of choice is another one and you're proficient with it, then go ahead! Smile
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)