Skyrim

Video information

Added on

Uploaded by

DavidJCobb

About this video

DovahKit is my attempt at a third-party Creation Kit. Early proof-of-concept work (focusing on loading ESP files) was done in December 2019, with development beginning in earnest circa July 2020. Planned features include:

Lazy loading: Like xEdit, DovahKit does not load all form data in full. Instead, it indexes all of the forms in the selected files, and then loads individual forms' data on demand. DovahKit uses multiple threads to load files, and relies on hand-written loaders for each form type. This allows it to load Skyrim.esm in roughly four seconds. xEdit, by comparison, has a single loader for all form types, which uses easily maintained, highly reliable data definitions. This loader is single-threaded; xEdit takes 66 seconds to load Skyrim.esm for the very first time, but it builds a hidden cache as it loads, so subsequent loads are only 5 seconds. The Creation Kit, by contrast, uses hand-written loaders per form type, but it loads all data in full on startup rather than on demand, so it can take multiple minutes of your actual life to load just Skyrim.esm.

Lua scripting: Like xEdit, DovahKit will allow users to write scripts to manipulate form data in an automated or batch fashion. DovahKit embeds Lua and offers APIs following an object-oriented design. Scripts have full access to form data as well as a large set of API functions for generating their own UI, making scripting an effective way to extend the program with additional tools. This includes access to a "canvas" widget, allowing scripts to generate and modify layered images. By way of example, DovahKit will ship with scripts that can generate top-down maps of a worldspace's heightmapped terrain, and top-down maps indicating the locations of all refs with a given base form within a worldspace ("a map of Skyrim's overworld with a pin for every Nirnroot spawn point;" "a map of every Mountain Flower;" et cetera).

Render Window: Like the Creation Kit, DovahKit will offer a 3D view that can be used to navigate and edit Skyrim's environments. The editor will feature a flexible and highly configurable system for input mapping, with support for multiple devices, nested modifier keys, and parameterized keybinds. By way of example, I plan to include built-in control schemes mimicking those found in Halo: Reach and Halo 5's "Forge" map editors; fans of that series will know that those two games use radically different designs for their map editors.

Support for both Skyrims: DovahKit is built to support both Skyrim Classic and Skyrim Special, and should be able to port mods bidirectionally.

* * *

The current 3D renderer

* * *

DovahKit currently uses a basic forward renderer written in Vulkan. It supports diffuse and normal mapping, but no other texture maps; it supports point lights, a directional sun with shadow mapping, and shadow-casting for up to four in-scene lights. The only culling implemented is frustum culling (for the scene camera and the directional sun's shadow map) and distance culling (for the in-scene lights' shadow cubemaps), all done via compute shaders. Alpha blending is supported via the use of weighted blended order-independent transparency (a decent overview can be found here).

Perfect accuracy is not possible and is not planned; however, I do plan on mimicking relatively important details whenever I can. For example, DovahKit uses shadow cubemaps, which avoid the "seams" present in Bethesda's shadow-casting lights; however, I run calculations on a surface's angle to each light source to emulate those seams. This will allow level designers to place and rotate their lights to ensure that the seams don't land anywhere important -- something the Creation Kit's official tutorials remark on. (The seams themselves arise from Bethesda's approach to omnidirectional shadow mapping. They use two 179-degree FOV shadow maps, which leaves a small seam in the 2-degree range between each map. They can't use a 180-degree FOV because that's a mathematical impossibility when using rectilinear projection, which is the kind of projection that GPUs are built for. For FOVs of 180 or higher, you need a fisheye lens instead.)

* * *

This video

* * *

This video shows the first day of work on DovahKit's "Worldedit" subsystem. Previously, DovahKit had a debug feature for importing the contents of any given cell into its renderer in a fire-and-forget fashion. After the import process, only meshes and textures would be left behind; the program would have no memory of what came from where. Worldedit is the subsystem responsible for keeping track of what cells and refs are loaded, and what NIFs belong to them. This information allows Worldedit to remove the contents of one cell when switching to another; in the future, as I develop Worldedit further, it will also be what allows users to interact with cell content.

0 comments