In the past, the way Doomsday has approached 3D model animation has been exceedingly simple. Since MD2 models are vertex-animated, with a full set of vertices per each frame, Doomsday has simply associated a model frame with each object state. When rendering, the model frame would be selected by looking up which one has been linked with the current state of the object. In other words, each 3D model frame was being treated like a 3D version of the original 2D sprite. Continue reading Thoughts on animation
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
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
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.
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
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
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.
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 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.
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.