Wrapping Up 2013

edited 2014 Jan 6 in Developers
2013 has been another good year of steady progress. The new development practices of the project have proven to work well for us.

The Numbers

The number of Git commits in 2013 was roughly the same as in the previous year: there was a modest 4% increase. This is good, as it means our development activities are staying at a brisk level.

The size of the code base continued to grow throughout 2013. The total is now 684 KLOC, up 16% from the end of last year. Growth has been linear during the past two years — at this rate, we'll hit 750 KLOC during 2014.

When it comes to the growth of the code base, the driving factor is not the addition of new features, but rather the clarification of old code and the introduction of new, object-oriented and more maintainable code. In essence, we are unraveling hidden and implicit complexity in the old implementation into more lines of code, where complexity is explicit and can be managed with less effort.

C++ is now the dominant programming language of the project with 47% of the code. C remains important at 41% and will continue to hang around in the game plugins for the foreseeable future.

(More statistics and graphs about the source code are available at Ohloh.)

The Milestones

There were several important developments during the year:
  • In January, we cleaned up the API between the engine and the plugins and split the server into a separate executable. We also restructured the engine's internal map data using C++ and switched all engine source files to use C++ instead of C.
  • In February, we started the new Doomsday UI framework and added the Shell application for controlling servers. The low-level network code was revised to work with connections from the Shell, forming a foundation for more network related changes to follow. Automatic discovery of servers on the LAN was added.
  • In March, we began integrating the new UI framework into the client GUI. Several multiplayer issues were fixed. Version 1.10 was released.
  • In April, window management was improved with better usage of Qt features. Work on OpenGL 2 based graphics was started. We also introduced a more logical, object-oriented structure to the engine's internal map data structures.
  • In May, we added a new multithreaded resource management component, which will be used in several places for data access and caching. The foundations for DED 2.0 were built by combining Doomsday Script and Info files. Work started on new UI components for the client GUI.
  • In June, the old in-game console was replaced and a new, task bar based UI design was introduced. The "Ring Zero UI" was improved with a GUI game selection menu. Work on map geometry generation continued, with the target of cleaning the logic and improving the BSP builder for better vanilla renderer emulation.
  • In July, we revised the dengine.net website design to match the new Doomsday UI. The Codex was created to keep an index of all repository commits. Version 1.11 was released.
  • In August, the client GUI was improved with toggles, autocompletion popups in the console, a general-purpose progress indicator widget, new autoupdater UI, and an About dialog. Memory management for the bias lighting model was completely redesigned. Work on remodeling internal map data with a half-edge data structure was completed. Support for "deep water" and "missing texture" map hacks was implemented.
  • In September, the old Control Panel was replaced with new dialogs accessed via the task bar. A sidebar editor was added for adjusting the renderer's appearance. Dynamic light management was updated with regard to map hacks. Appearance profiles were introduced for easily modifying visual effects.
  • In October, we migrated project issue tracking from SourceForge to our own Tracker. Version 1.12 was released.
  • In November, offscreen UI composition was implemented and Doomsday's busy mode UI was merged with the main UI. We also implemented a new GL2 lens flare renderer, although it wasn't yet integrated into the game world. Resource management was cleaned up for the future.
  • In December, framebuffer management was revised to allow shaders to access color and depth values. We finished Oculus Rift support: head tracking, barrel distortion effect, configuration UI. Support was added for ZDoom's 16-direction sprites. Version 1.13 was released.
The Outlook

In the end of last year, I anticipated that 2013 would finally see user-visible changes in the UI and the renderer. This definitely came to pass as most of the old UI was replaced with a fresh, modern version. We also started to unravel the shackles that constrain the old renderer, with added flexibility in framebuffer management, frame post-processing, stereoscopic 3D, and Oculus Rift support.

As always, details of the roadmap continued to change through the year. It is challenging to set the goals very rigidly, as development efforts may flow in unexpected directions. This was the case with the Oculus Rift, where cmbruns approached us at the right time to influence the direction of 1.13. While there is still a lot to do to improve the immersive VR experience in the add-on domain (3D models, etc.), the engine itself only needs small tweaks at this point. I expect that the next big push with regard to Oculus Rift will occur when the next version of the development kit is released (hopefully with an improved display resolution).

Having our own issue tracker is very important to me, as it lowers the friction of actually using it in day to day work. It will make it easier to keep track of all the known bugs, current work, and future ideas. Also importantly, we were also able to pick the tool that works best for us (Redmine, in this case) and have control of the usage experience when it comes to theming.

Finally, what do we have in store for you in 2014? While I feel it is time to focus on multiplayer again for a month or two, I expect the renderer will become a real focus area for us. Much effort has been poured into laying the appropriate foundations for the next-generation renderer, and now it is time to start executing our plans. One of the first things I will work on is finishing up with the GL2 lens flares. Overall, though, we will continue on the roughly three-month stable release cycle, releasing new features as they are finished.

Happy New Year! :)

- Deng Team

Comments

  • When seen in summary format, it's clear that 2013 has been a very productive year. I hope that 2014 continue this trend, and it appears it will. Happy New Year to all Doom, Heretic and Hexen fans and most of all to all Doomsday authors, contributors and lurkers. All the best for 2014.
  • Happy New Year, guys!

    And HUGE thank you! Hope you feel our support and interest in what you're doing. Keep on!
  • I know that you have a plan but I have to ask this, can you not add support for a better model format even if it degrades performance? You are making all this progress first before adding a new model format but, doesn't it make sense to add a new format even with less performance now so that you can evolve with it? Somehow I see you making all these improvements only to see them fall apart when a new model format is introduced.
  • Mancubus wrote:
    Happy New Year, guys!

    And HUGE thank you! Hope you feel our support and interest in what you're doing. Keep on!
    This. :)
  • PostFatal wrote:
    I know that you have a plan but I have to ask this, can you not add support for a better model format even if it degrades performance? You are making all this progress first before adding a new model format but, doesn't it make sense to add a new format even with less performance now so that you can evolve with it? Somehow I see you making all these improvements only to see them fall apart when a new model format is introduced.
    Not this. ;) You've made great improvements guys, looking forward to the next iteration and improvements in the other areas that interest you. It's your hobby (and ours to a certain extent), keep having fun.
  • PostFatal wrote:
    I know that you have a plan but I have to ask this, can you not add support for a better model format even if it degrades performance? You are making all this progress first before adding a new model format but, doesn't it make sense to add a new format even with less performance now so that you can evolve with it? Somehow I see you making all these improvements only to see them fall apart when a new model format is introduced.
    Not this. ;) You've made great improvements guys, looking forward to the next iteration and improvements in the other areas that interest you. It's your hobby (and ours to a certain extent), keep having fun.
    As Dday 2.0 approaches, the amount of user facing new features will probably ramp up and up and up :)
  • Happy new year guys! And thanks for all the work you do!
  • Happy new year guys! And thanks for all the work you do!
    This, plus more wine being opened. All the best to all forum contributors and all lurkers.
  • thank you so much for continuing to work on the engine and bringing an excellent (few) games into the modern era!
  • Vermil wrote:
    As Dday 2.0 approaches, the amount of user facing new features will probably ramp up and up and up :)
    Sounds good. ;)
Sign In or Register to comment.