Developer Update #1
We’ve kept ourselves busy since the official announcement post three weeks ago, although a lot of the work has been done under the hood, either through programming or brainstorming. Here’s a quick run-through of how things are progressing.
Polishing the Level Editor
Before moving further with the development of the game engine and assets, we polished a bit the Level Editor, so that creating testing environments is easy and intuitive. Rather than a user interface made of a viewport surrounded by various panels, we went ahead with making the grid layout full screen, to maximise the work space. Buttons in the top left corner open up various floating panels (Menu, Levels, Objects, Inspector…) by a simple hover of the mouse. Once you’re done with the panel, hovering away closes it again. This approach minimizes clicking and the UI feels fast and responsive.
A toolbar is found at the bottom with the various tools – as with panels, everything is accessible using keyboard shortcuts. Holding Alt for example switches to pan mode so that you can quickly move the grid around without leaving your current tool. Oh, and did we mention the zooming slider in the lower left corner? Selecting objects is easy too, even when multiple are present in the same cell: left-clicking quickly cycles through them, while a right-click opens a selection dialog, allowing you to pick the exact one required. It’s not yet implemented, but a hotkey will also allow you to access a dialog box with search capabilities and select by name any object in the scene.
The inspector panel is obviously central to managing your levels. As the game system revolves around an entity-component model, most components expose their essential controls in the inspector for easy tweaking. You can remove or add any component to any object, bypassing the need to define multiple objects in the .lua definition files when there is only slight variation between them. Offset and Rotation components for example will allow to fine-tune the position of the object in 3D space. If you want an illusion wall, you can just remove the Blocker component from a wall object, and the party will be able to pass through. You will also be able to add a Script component to an object, providing some direct control through a
self object exposed to the lua script, instead of having to resort to separate script entities objects.
Here’s a short two minutes video of the level editor in action. It showcases the user interface as discussed above, the live preview option (how could we live without it?), and how the Blocker component of a barrel can be deactivated via the inspector to allow the party to pass through.
There’s more cool features coming, notably for exteriors, but we’ll keep that for another post.
The Good Old Inventory
The basic principles of creating environments having been laid out, the next thing we set on working on is the items and inventory systems. The inventory GUI, which was roughly sketched, was almost completed in the last week, along with the programming of the backbone of the item system. Nothing revolutionary here, but that’s coding that had to be done (and feel) right.
We’ve also been doing a lot of concepting on how the items should work, in terms of game mechanics. Unlike Dungeon Master, Eye of the Beholder or Legend of Grimrock which feature a finite set of predefined items, the loot in DarkDale will contain a random element, and you will be able to find (or make your own) enchanted equipment. There will also be a material system (similar to what was present in Dragon Age: Origins) which will tie in with key plot elements. More on this soon as well.
Mapping out the World
What would a role-playing game be without a map? The main plot, social & geographical aspects of DarkDale were sketched out long ago, but we set on drawing an actual map of the kingdom to better guide our next design steps. It is still a rough draft, but here it is as a preview:
As you see, DarkDale is a small kingdom in a valley enclosed by mountain ranges, in a semi-northern temperate climate. Its military power cannot obviously match that of the vast surrounding Empire of Ga’en, but it has retained its independence in the last centuries due to its protected geographical situation and its relative economic wealth. Two important resources, Skaal, a very hard steel forged from the Skaalstone ore in the northern mountains, and Glimmerwood, a particularly strong and flexible wood with strong affinity for magic, have given birth to an important commercial network controlled by powerful guilds.
All is not well, however, or we wouldn’t have a story, wouldn’t we? The recent and sudden death of the King has thrown DarkDale in a period of political turmoil driven by urban corruption. Enemies from inside and outside wait to seize the opportunity. And our inexperienced (yet!) party has to sort it out, wondering who to trust and what to believe. So no lord-of-darkness-that-will-overtake-the-world to overcome, but even if politics are politics, don’t worry, there’s an ancient evil lurking somewhere in the deep.
That’s it for now, more soon as we continue developing the items system, including making some assets and coding the physics system that will allow us to throw, deposit or pickup things around the 3D world.