January 2012
2 posts
Looking in retrospect, Fightoon’s models are really awful. The legs are nice, but that’s all about it. The hands are horrible. Making some good hands was a nightmare. Except for the thumbs, none of the fingers could be modelled individually, due to performance constraints. A pair of hands with all fingers modelled individually would require roughly the same amount of triangles as rest...
Jan 14th
Jan 10th
December 2011
2 posts
Thinking about long term plans for this engine, the idea of doing an Android port is looking promising. There are a few Quake ports for Android already, so it’s not unknown territory, and the hardware specs for Android devices seems to be raising really fast, so it shouldn’t be hard to achieve a good performance. Also, the idea of distributing original games powered up by this engine...
Dec 31st
I’ve found a little silly bug preventing some loops to be unrolled, so the ordered dithering code got a bit more optimized. On the other hand, I’ve found a way to make the dithering scale well in any resolution. Doing so reverted most of the speed gain from the unrolling, but the point is that there’s no need to keep multiple ordered dithering algorithms anymore, which makes...
Dec 20th
November 2011
2 posts
I’ve taken a quick glance at the console dithering code again, and re-enabled some lines of code that makes it extra smooth. Seriously, it can be hard to distinguish between that dithering and hardware interpolation. The thing looks so beautiful it makes me want to implement and enable it by default. There are a couple problems though. First, complexity. This extra dithering looks crap in...
Nov 27th
Nov 20th
October 2011
2 posts
Anonymous asked: What is the current stack needed for compiling Makaqu for Dreamcast? I'm looking for the correct devkit version, libs, as well correct Makaqu version.
Oct 28th
Some good news. I’ve got a dedicated CRT monitor for my european Dreamcast, and I’ve also got a SD card reader for it. This should help a lot when I get around to developing for it again. I should be able to easily dump screenshots, logs, config files and VMU data, as well as running a lot of Quake mods from the SD card for testing. Previously, disc space was a huge concern when...
Oct 20th
July 2011
2 posts
Anonymous asked: I'm not sure how to set it up so I can use it, I try to activate it and it says that it's missing files
Jul 4th
Jul 2nd
June 2011
2 posts
Dithering becomes really easy to implement once you get the hang of it. However, even though the current algorithm implemented in Makaqu works well, its results aren’t as smooth as they could be. The main problem lies in the textures’ borders. Skyboxes are comprised of a single tri-dimensional texture split into six different images, so ideally the error diffusion for each of those...
Jun 24th
Makaqu development has stalled. In the worst case, I’ll just have to wait another six months before being able to work on it properly again. Anyway, an insight into my designs for this engine: When I look at it, and wonder what it should become, I usually think something along the lines of “what if Id Software could have just froze time for as long as they wanted, and kept working on...
Jun 9th
May 2011
1 post
I’ve got the renderer partially working again. BSP scenery isn’t textured, and no entities are showing up, but the viewmodel is working correctly. This happens because I’m reenginering the engine to make it set all rendering paths for each entity upon parsing their updates from the network messages. This will make it simpler to add new effects and rendering optimizations into...
May 6th
April 2011
3 posts
Despite the previous post, I haven’t gone back to the 1.3 codebase. I’ve finally got the engine to compile cleanly again, but the 3D renderer is crashing as soon as R_RenderView_ is called. Time for bug hunting.
Apr 30th
I’m thinking about going back to the 1.3 source and re-implementing some of the changes I’ve done since then, except the BSP entity translucency. BSP entity translucency has proven to require too much reenginering, and I’m not being able to keep up on it. This has keeping me from doing more important things, like getting the Dreamcast version working properly again.
Apr 24th
Makaqu should be ported to the Dingoo A320 handheld. I’ve recently got one, and it’s pretty good. Also, this handheld has no hardware acceleration, which leaves a lot of room for good software-based renderers to shine in it. It also doesn’t support any kind of networking (except through an USB cable connected to a computer, which kinda defeats the point of playing on a...
Apr 4th
March 2011
8 posts
After moving some data structures from some header files to others, the code doesn’t compile anymore. I’ve been taking a look into it, and it seems that I’ll have to reorganize a lot of code before fixing the translucency.
Mar 20th
An interesting note: both the SPR models and the BSP model’s surfaces are drawn exactly in the same way, except that in the case of BSP models the spans are accessed through a linked list, and in the case of SPR models they are accessed through an array. Thanks to this, all optimizations done on the BSP drawing code can be simply copy-pasted directly in place of their SPR equivalents. ...
Mar 13th
I’m thinking of removing the stippled rendering of sprites and alias models. Maybe removing it from the BSP renderer would also be a good idea. Stippled rendering overcomplicates the overdraw hierarchy, a lot. For example, if there’s a portal under the water, you’re above the water, and both the portal and the water are stippled, the portal will end up 100% transparent,...
Mar 13th
It suddenly occurred to me how hard it is to create a visual identity under this engine. This doesn’t mean it’s impossible. In Fightoon, I’ve devised some guidelines that worked quite well, such as using only straight lines and right angles to draw most textures, since they’re the only kinds of shapes that always looks good when scaled up without any filtering. Another...
Mar 11th
I’m thinking of doing some protocol changes. The way it currently is, it’s impossible to optimize everything I’d like, because each entity’s alpha value is parsed before half of its self.effects value - and this half includes the EF_REFLECTIVE, EF_CELSHADING, EF_FULLBRIGHT, EF_SHADOW, and EF_NOSHADOW flags. If all flags were processed first, this would make things much...
Mar 11th
Now the depth sorting of entities is only performed on blended entities. Visible entities are now split into three different lists: one for solid entities, another for shadow entities, and a last one for blended entities. These are part of my refactoring of the way the engine checks for which effects to apply on each entity. Hopefully, a lot of checks that are currently performed on each frame...
Mar 7th
Currently working to fix entity translucency. It is a lot more incomplete than I remembered, with things like the MDL and SPR translucency not working properly. After fixing the translucency effects, I’m going to test the Dreamcast version and make sure it works properly. Should be enough for the 1.5 release.
Mar 7th
1 tag
Mar 4th
February 2011
9 posts
There is no way to dither run-lenght encoded TGA images on the fly. Dithering them would require decoding the whole image into an intermediary buffer first, and this would temporarily increase the memory consumption by a significant amount. Maybe later, but not now. This means that uncompressed TGAs will be dithered, and that run-lenght encoded TGAs won’t. By the way, the non-dithered...
Feb 28th
1 tag
Feb 28th
Hmm, how stupid. I just found out that the memory for the textures of the skybox was always being allocated… even when no skybox was being used! Plus, it always corresponded to the necessary amount of memory for a 512x512 skybox, which is 1.572.864 bytes. What a huge waste of memory.
Feb 28th
Added loading of 24-bit and 32-bit TGA files, finally. Both are converted to 8-bit textures using the game’s palette, which makes them lose a lot of detail. This should be alleviated when implementing dithering into the conversion algorithm. I’m still going to implement 24-bit color rendering in the future, but it’s nice to keep the 8-bit color software renderer able to do...
Feb 27th
Memory usage reduced to 15.268 KB, and it’s still running. After running it for about 22 hours straight, it’s probably safe to assume that Makaqu is more stable than before, though there still are several bugs left.
Feb 20th
It’s still running, and no crashes. Memory usage reduced to 19.880 KB.
Feb 20th
Currently running the starting demos on loop to see how long it takes until the engine crashes. So far, no crashes, and a memory usage of 24.656 KB. I don’t remember doing anything too special to fix the crashes, so let’s wait and see. I’m still sure that there must be a few memory leaks in the input and/or in the console code, so maybe the fact that I haven’t used...
Feb 20th
Another thing I may be going to research is outline rendering for BSP models. In theory, it should be possible to render them very quickly, by using the VIS data to precalculate, cache and export a list of the visible lines on each point of the map. In practice, this requires a deeper knowledge of the BSP model format and renderer. I’m not sure if this would work for BSP models used by...
Feb 6th
Some future plans: One of the first things I’m going to make on the next version is to modularize the engine more. Specifically, I want to abstract and split things like the MDL and SPR model code out of the rest of the engine. This should help me to isolate and fix more bugs. It would be great to also abstract the BSP model code, but this should be harder. The fact that entities are...
Feb 6th
December 2010
2 posts
Currently studying 3D projection math, to improve a little demo program I’ve written from the ground up. Even though the Quake engine already has everything that’s needed for this, it’s a different experience - the difference between learning to use an algorithm and learning to create that algorithm.
Dec 30th
Makaqu 1.4 alpha released →
Translucent BSP rendering still has bugs. It flicks a lot when there are different kinds of liquid surfaces on the screen, and the clipping bugs weren’t solved yet. There are also several small bugs in some of the new features, and several of the new features are still incomplete. Plus, there’s a lot of experimental junk code throughout the source. I usually run a diff tool through...
Dec 6th
November 2010
14 posts
Bugs. They are the main thing that prevents me from knowing exactly how much work there’s still to be done. To be more precise, a bug that simply crashes the whole engine when the startdemos loops for a few times. Before, it would always crash at the same point when playing the Necropolis (e1m3) demo for the second time, but now it takes longer to crash, and doesn’t always crash at...
Nov 30th
teamxlink asked: I was wondering if you ever got around to making the tutorial on making a disc for Makaqu, for use in a Sega Dreamcast.
Nov 21st
1 tag
Nov 20th
Fixed a bug where opaque liquids were also being overdrawn as translucent. There’s still a weird edge clipping bug going on, and a bug that makes all translucent BSP models/surfaces (and some SPR models too!) to not show up at certain camera position/viewangle combinations. The hierarchy for selection of blending methods is also still being worked on. There are also a couple things I’m...
Nov 19th
A note for anyone compiling the previous releases: Right-click each .s file in Code::Blocks’ file tree, select “Properties” and replace the custom command in the Advanced tab with this: cmd /C cl.exe /nologo /EP > $object.spp $file cmd /C .\gas2masm\release\gas2masm $object.asm ml /nologo /c /Cp /coff /Fo$object /Zm /Zi $object.asm $(CMD_RM) $object.spp $(CMD_RM)...
Nov 17th
Having some progress here, still testing TortoiseHG and reading its documentation. Parallel to that, I’m also going to edit some of the original textures to add color-keyed pixels. There’s quite a number of textures where it could be useful! This also gives me a good reason to think about implementing support for replacement textures.
Nov 13th
As expected, I’m having quite a headache trying to figure out how to use TortoiseHG with my dummy project. None of the files I’ve commited have shown up into its Mercurial repository at Google Code. Well, I’ll just keep reading TortoiseHG’s documentation and testing all possibilities.
Nov 12th
A note about working with versioning repositories: I use Synergy to control both my desktop PC and my laptop from my desktop PC’s mouse/keyboard, but for some reason it never worked properly through my wireless router. The only way I was always able to get the Synergy client on my laptop to find my desktop PC was to use a cable to connect my laptop to the router instead of going...
Nov 12th
Interesting. There’s quite a few differences between the rendering of external BSP models (used for the ammo boxes, for example) and submodels (doors, platforms, and other ones used by external entities) of the world’s BSP. And right now, translucent external BSP models are not showing up; sigh. I’m going to follow the “fix and optimize everything I can think of in the...
Nov 12th
I’m currently improving my little test map, which is the one in the last screenshot posted here. There weren’t any real plans for Makaqu since I’ve restarted working on it during the beginning of this year, but this weekend I’ve had a bunch of ideas which could turn into a nice little game using this engine, so now I’ve got another reason to work on it. I’ve...
Nov 12th
Some plans and thoughts about the current state of this engine: The hard work I had planned to do on the software renderer of version 1.4 has already been done. For the following version(s), some of the things to be “fixed” are 2D GUI scaling, perspective correction for MDL textures, and a total rewrite of the cel-shading outline renderer. By the way, version 1.4 won’t...
Nov 11th
Nov 10th
Anonymous asked: Any luck with hardware acelaration and colored lights on dreamcast ?
Nov 10th
Nov 4th
September 2010
5 posts
It would be interesting to note some of the difficulties I’m having in redesigning the structure of the color blending code. First, there’s memory usage. One of the most effective ways to cut it in half in some blending modes is to use the maps in reverse for alpha values similar to 1 minus their alpha value. This puts me in the awkward position of having to duplicate whole blocks of...
Sep 10th