My work has progressed to a point where it is becoming increasingly cumbersome that map objects remain POD C structs. While map data (sectors, lines, etc.) has long been refactored to be C++/PIMPL friendly for maximum flexibility, all variants of thinkers (including mobjs) remain inflexible and fully shared between the engine and the plugins. Continue reading Internal data for thinkers
Category: Developer
Developer blog and journal entries
Packaging practicalities
I’ve organized most of the various essential resources needed by Doomsday into a set of packages. This is an important step in verifying that the new package system is working as intended. Continue reading Packaging practicalities
Immaculate detail
Today I added support for OS X HiDPI resolutions. It turned out to be relatively straightforward, with Qt 5 already doing most of the work for us. Doomsday’s default UI style package was easy to adapt for HiDPI, with a couple of extra factors applied to UI metrics and font sizes. It helped that we had already prepared suitably high-resolution versions of the icons and other graphics used in the revised UI.
I’m very happy about how crisp everything looks on a retina display.
Packaging fundamentals
I have set up the basic building blocks for native packaging within Doomsday 2.
The guiding principles for this design are maximal utilization of existing functionality — FS2, Record
and Doomsday Script — and keeping everything simple yet flexible. Continue reading Packaging fundamentals
Planning ahead
While working towards the next-gen 3D model renderer, I now have a more detailed step-by-step plan for moving forward. Continue reading Planning ahead
Schedule wrt. model rendering
I’ve had little mental bandwidth for Doomsday recently. This is not unexpected during the weeks leading up to the summer vacation. Looking at the calendar, there is still time until the end of July to wrap up any new code for 1.15. This should be enough for putting together a basic package loading mechanism and set up a simple model pacakge.
Progress with Doomsday Script
Doomsday Script (DS) is the Doomsday 2 scripting language, built right into the core of the engine. Its syntax is heavily Python-inspired, however with a somewhat smaller set of language features. Recently I’ve been improving DS with future needs in mind.
Xcode
Xcode is growing on me. Especially Xcode 6 on Yosemite is looking fantastic. Qt Creator is a very capable editor, however I plan to make another effort to write a generator script for a “native” Doomsday Xcode project. A sensible goal would be to produce a Snowberry-free build using Qt 5.3.
Detour into scripting and log history
It has been a busy week without much time for Doomsday. Sometimes after a break it is easier to return to the project by looking at a completely different topic than what I was working on before. This allows one to ease into the code again in a more comfortable way.
The log history widget was among the first that I wrote on the new UI framework. Since then, I’ve added a handy utility class called TextDrawable
for drawing and laying out UI text. It has nice features like automatic background threading if there is a large amount of text. However, LogWidget
being quite old, I had implemented a separate multithreaded text rendering mechanism there. I decided to replace this with TextDrawable
so there wouldn’t be unnecessary redundancy in the code base.
About next-gen resource packaging
My next step is to devise the actual format of a next-gen (model) package. I am not going to worry about backwards compatibility at this stage, and instead think of a clean-room ideal solution. Existing packages need to be handled separately, or perhaps automatically imported/converted to the new format and rules.
Continue reading About next-gen resource packaging