Today's DW, instead of a video, is about an interesting development in the Unreal 4 engine with a disproportionate impact on development.
Those who've been following us a while know that we were seeking to develop various parts of the game separately and in modular form. We went into detail on this in our update Pieces of the Game (link here). Part of it was simply due to the scattered nature of the team, part of it the sheer size of the project involved. Part was also for easier maintenance and discovery and elimination of bugs throughout the life of the game.
However, the best laid plans of mice and men will sadly go astray, and what seems like a great, doable idea doesn't always turn out to stand the test of time. Over the years, the level of modularity needed to have all these benefits slowly but surely broke down, regardless of whose hands were involved. Reality had met intent and took it to the cleaners. We needed another approach to keep things clean and self contained. And Unreal Engine version 4.18 provided the way.
Many who use software are familiar with the term plugin. It refers to a software component that can 'plug in' to another one, adding to the original. Unreal Engine has had them a long time – Dungeon Architect, our procedural dungeon generator, is a plugin. They are very convenient, but until recently, a plugin could only plug into the main project itself. plugins could not plug into other plugins. 4.18 changed that, and with it, our development plan.
Quite a lot of foreplanning was required to restructure the project – 4.18 was released some months ago, but we are only applying this now. But now that plugins can work with other plugins, all of the various game components can be plugins. This means that interdependency and modularity are no longer mutually exclusive – they can be both at once. This very different way of keeping modularity is self-maintaining, allows all the benefits described in the first paragraph, and makes adding new parts much simpler. Before, updating the project or other people's contributions to it could be tricky, had to be coordinated and frequently could not be safely automated. This meant everyone tended to be working within somewhat different configurations, which helped contribute to the problem. But now all the common resources, systems and assets are their own plugins, working with the developers own project (also a plugin) but not directly integrated with it. This means all those other parts can be automatically updated without interfering with the developer's own work, so everyone is working in the same environment all the time. When the developer is ready, he simply plugs his plugin into the main project, which is using the same supporting plugins. Because everything is in the same place, everything – to the extent anything this complicated ever does mind you – just works.
Setting this up did take some time away from Chargen and other things in the very short term - about a two month period - but the payoff in development pace will more than make up for, greatly streamlining and speeding up all aspects of development. And this will continue to benefit the game until the day it sunsets. We look forward to welcoming you all to the City.