Over the last six months I’ve been polishing and optimizing Tofu Engine ’s software renderer. Yeah, I know… a full and detailed devlog on this topic post is due, but while I’m organizing my thoughts on that, here’s an interesting byproduct the I think we shall talk about. :) After quite a bit of rework to the blitter code, the hot-loop part of the routines (namely, the (roto)scaler) have been…
Recently, I upgraded Lua from version 5.4.x to 5.5.0 . It has been a long-awaited minor release for our beloved embeddable scripting language. While running a few demos (just to make sure everything was behaving correctly) I noticed that, in at least two cases, a significant amount of memory kept accumulating without being released… to the point where the boids demo would freeze in less than a…
A crucial concept behind the design of Tofu Engine is the idea of using palettized graphics. All image assets are PNG images, which are a popular choice for many other engines due to their lossless nature and wide support across graphics tools. During the loading process, an image is automatically converted from its original format (e.g. 32-bit ARGB). A reference palette (with a variable size of…
When I started working on Tofu Engine (way before its name was decided… and even before I had my first dog who, coincidentally, is also named Tofu) the first decision I made was that it had to be multi-platform . Beyond more or less debatable personal choices on the technology stack (indeed, it would make sense to write a post describing it a little more in detail, with a nice description of the…
A game engine is much like an operating systems. Or, better, a (virtual) guest machine running inside a (physical) host machine. This has been true since pretty much the very beginning of game-development and we could trace even in the ’80s game in which the it’s core was reusable (and reused) more than once. Z-Machine and SCUMM have been a forerunners on the topic (and, personally, one if not the…
When using an embedded scripting language in a game-engine (or in any other real-time operating software) one should always take into account performances . Even in the case of a JIT interpreter, scripted code more often that not loses when compared to native code (e.g. resulting from compiled C99 code). This is not only due to the fact that P-code can’t be faster than executing machine code, but…
The other day I came across the Anbernic RG35XX+ , which I have to admit I had never heard of before (I’m not really into retro gaming, to be honest). I’ve always been curious about mobile gaming… and I’m not talking about the kind that’s all the rage these days with the ubiquitous use of smartphones. I’m talking about the old-fashioned kind, where the gamer picks up a real console with the sole…
The end of the year is just around the corner… … and we are actually a little behind on devlogs. Once again. As usual. I wish I could say that I’ve neglected the blog because I’ve been concentrating so much on Tofu Engine that I couldn’t find the time to do it, but the harsh reality is different. That is, I have had other projects/commitments that sucked up my time and energy. Nevertheless, I can…
Picture yourself working at your desk, tinkering on the design of some of the internals of your game engine (as I wrote in the previous devlog post), toward a significant redesign of the game-engine core. That’s a lot of work, and you should try and focus as much as possible and limit yourself to what’s strictly related to what’s required. But, alas, you already know from the very beginning that’s…
Hooray! An exciting new release of Tofu Engine is now available! You can find the engine code here . While this release may not be as groundbreaking as some of the previous ones, it is still incredibly important as it signifies the beginning of a new era. There are two significant reasons for this. I hinted at the arrival of some major changes in a previous post , which you can find here . Let’s…