Oblivion

File information

Last updated

Original upload

Created by

DavidJCobb

Uploaded by

DavidJCobb

Virus scan

Some manually verified files

Mod articles

  • A development retrospective for NorthernUI

    NorthernUI's been out for nearly three years now, and I guess I just want to write down some reflections on its development -- challenges I ran into, things I could've and should've done better, and the like. I don't want to use the term "post-mortem" because I don't want to permanently write off ever returning to maintain NorthernUI, but I suppose it'll be that general kind of write-up.


    Scope and feature creep

    This is absolutely the biggest and worst issue with NorthernUI. We're not dealing with Oblivion Reloaded levels of creep here, in any sense of the term, but NorthernUI does too many things at once and absolutely should've been multiple mods.

    Having the gamepad support exist in the same DLL as everything else is definitely my biggest regret a...

  • The UI pref system (xxnPrefs)

    The "pref" system, introduced in NorthernUI 2.0.0, allows UI authors to implement user-configurable options without requiring users to edit files manually, and without having to hardcode the options into a DLL. Each such option -- a "UI pref" or simply "pref" -- is defined in a special XML file and can have its value changed at run-time using specific XML operators. In essence, Oblivion XML traits can be used as setters -- as "code," so to speak, rather than content.

    I implemented this solely so I could add HUD options and whatnot without having to hardcode every single one of them; the system is totally unnecessary for any content authors who are using scripting. I'm documenting the system for the public because there are quite a few mods that inject content into the HUD, and ...

  • List of added script commands

    NorthernUI adds the following script commands as of version 2.0.0:

    Command Arguments
    Gamepad index
    A number indicating which of the four gamepads you wish to access: 0, 1, 2, or 3. For commands that read input state, the value -1 means "any gamepad;" for commands that modify input state (i.e. enabling or disabling keys), the value -1 means "every gamepad."

    I don't know, offhand, what the logic is behind how XInput assigns gamepads to slots, e.g. what would happen if the player accidentally unplugged their gamepad and then plugged it back in. Most of the DLL's own code just grabs the first connected gamepad (i.e. "any gamepad"), so I'd recommend just using -1 for everything unless you're specifically trying to do some weird experimental multiplayer kind o...

  • Using the DLL standalone

    NOTE: With the release of NorthernUIAway, this article is outdated. However, information in here may still be useful to users who wish to use NorthernUI's DLL alongside other UI overhauls, such as DarNified UI.

    Bare-minimum needed changes

    The instructions below describe the bare-minimum changes needed to get gamepad support working in the vanilla menu files. Instructions may differ for other UI overhauls. You will, at a minimum, need to know basic XML to make the changes needed to enable all of the gamepad functionality.

    The world map and local map

    NorthernUI does not add full gamepad support to the maps unless a variable is set in the menu file; this is mainly for compatibility reasons. Most menus hide the gamepad map cursor anyway, so that ...

  • Complete list of engine changes

    General
    Adds new traits, operators, selectors, and menus. See the relevant article.

    Fixes a bug that affects all vanilla textboxes, where pressing the up or down arrow keys inserts invisible garbage characters into the text that you’re entering. These characters are retained when saving any text, may be visible in modded fonts, and may affect alphabetical sorting. Text already affected by this bug cannot retroactively have garbage text characters stripped out.

    Disables texture filtering for the menu cursor. This addresses an unknown bug that severely breaks texture filtering for all other menu assets whenever the cursor receives texture filtering. The effect of this is that all assets look cleaner, particularly high-resolution assets that are downscaled and ...

  • Localization and translation

    I tried to build the mod so that nothing it does is a major obstacle to compatibility. However, there are still compatibility problems I can't account for at this time, where fonts and Oblivion's program code are concerned. Worse is that while I can anticipate problems, I can't be sure which problems will actually happen, because I only own the game in English.

    Translating the text
    The English version of Oblivion uses Windows-1252 encoding (commonly called "ANSI"). The same encoding should be used or at least usable for languages with the same alphabets (e.g. French, German, Spanish). When editing text files, make sure you're using the right encoding; multi-byte encodings like UTF-8 may handle some symbols inconsistently.

    All of NorthernUI's menus use strings ...

  • List of added parse IDs

    Menus, tile types, traits, operators, and parse-time tokens all have numeric IDs existing in a common space.

    All new IDs
    41C menu XXNHUDDebugMenu
    41D menu XXNHUDClockMenu
    41E menu XXNOptionsMenu
    41F menu XXNControlsMenu
    1600 trait xxnFontPath
    1601 selector NorthernUI
    1602 selector descendant
    1603 trait xxnKeepNiProperties
    1604 trait xxnNiScale
    1605 operator xxnOpSine
    1606 operator xxnOpCosine
    1607 operator xxnOpTangent
    1608 operator xxnOpAtan2
    1609 operator xxnOpStringEq
    160A operator xxnOpStringAppend
    160B operator xxnOpBinaryAnd
    160C operator xxnOpBinaryOr
    160D selector xxnStrings
    160E operator xxnOpSetIfZero
    160F select...