[MUA1 PC] HUD Knowledge

Started by ak2yny, December 02, 2020, 10:42PM

Previous topic - Next topic
December 02, 2020, 10:42PM Last Edit: March 09, 2022, 01:30AM by ak2yny
HUD Knowledge for MUA PC

Changing the HUD is not a thing many modders tackled yet. Part of the reason is, that it's mostly limited to modding the HUDLogitech.png file in the "texs" folder.
Presently, there is (to my knowledge) nothing known, where the info is located, which positions each graphical element on the screen. But it's very likely hardcoded, so we can't make an XML look like MUA or vice versa. This section will be updated, if we discover more (I hope we will eventually).

So, let's start with the mentioned HUD texture. One interresting fact is, that even if an Xbox 360 controller is recognized by MUA, it still uses the HUDLogitech.png. All tests I was able to make, always resulted in HUD360.png being unused. I couldn't test Logitech, Xbox One, or the actual Xbox 360 controller. Please leave a note, if you discover that HUD360 IS used.
The content of this file is all graphics of the HUD, orderly put in a 512x512 texture, so it doesn't use much space. Now, I mentioned above that we aren't able to change what element the game puts where on the screen. What we are able to change, however, is the location of each element within the texture (HUDLogitech.png). This is stored away in the "hud_coords_beenox.xmlb" in the "data" folder.

Let's have a look at the xmlb file:

{
    "coords": {
        "height": 256,
        "width": 512,
        "coord": {
            "bottom": 133,
            "left": 423,
            "right": 425,
            "top": 131
        },
        "coord": {
            "bottom": 135,
            "left": 329,
            "right": 356,
            "top": 125
        },
        "coord": {
            "bottom": 148,
            "left": 448,
            "right": 480,
            "top": 116
        [...]
        }
    }
}
(JSON format, decompiled with Raven Formats by nikita488)


Take a special note at the "height" and "width" values. It says 256 for height, even though the texture is 512 pixels high. Beenox programmed the game so, that it takes some buttons from the Fullkeyset texture and puts them in the empty space below (more on that later). I tested a HUD texture with content below the middle, even with adding keys, and it will work with a height of 512. Usually, if you modify a texture using the whole space of its dimensions, it's a good idea to change these values.
Another important thing to note is, that each "coord" entry has the same four values, but there is no identifier for each entry. You (and the game) can only identify them by counting from the top (you can also count from the bottom, or from the blank entry).

To understand values in each "coord" entry, we best look at the texture:



The numbers start from the top - left with 0. The texture is 512x512 pixels big, so the bottom - right corner is 512, both directions. The "top" value defines the top of the section the element is located in the png. So if you find all four values with a good image program (moving the values in the amount of pixels, "top" and "bottom" vertically from the top, and "left" and "right" horizontally from the left), you will get a rectangle that encompasses the element the "coords" stands for. Once you know that, you will only have to use "top" and "left" values and you will find the top - left corner of the element the entry stands for.

Here's a list for each of the two HUD textures in the picture above. The lists follow the same top to bottom pattern as the xmlb.
PS2/PSP/Beenox:

white dot All HUD color bars bg
white shade small
white circle shade 32x32
white circle outline 32x32
white shade big All HUD info bars
white circle full 32x32 All HUD black circles
white line (blank) All HUD black bars middle
white half circle full 16x32 All HUD black bars ends
white star 32x32
HUD head circle big 114x114 256 textures only
HUD head/power circle small 74x74 256 textures only
HUD head/power circl sm. (act.) 74x74 256 textures only, NextGen textures have the powers circle w/ similar coords
HUD commands circle very small 44x44 256 textures only
Health bar 12x156 256 textures only
Energy bar 12x156 256 textures only
Momentum bar 12x156 256 textures only
Shield coins bar, middle 4x49
Shield coins bar, left 11x49
Enemy health bar, left cap 40x49
Enemy health bar, color strap 11x49
Shield coins bar, right (coin) 46x49
Star bar, right (star) 45x49
Countdown bar, right (watch) 46x49
Rage meter point empty 16x16
Rage meter point loaded 16x16
Map arrow (outlined)
Map arrow (outlined)
Map arrow (dot)
Map arrow (dot)
Map X
Map Shield (extraction p.)
Map (rectangle thingy)
Map exclamation mark
Map Exit
Map arrow up
Button prompt consoles 60x60 xbox A
Button prompt consoles 60x60 xbox B
Button prompt consoles 60x60 xbox X
Button prompt consoles 60x60 xbox Y
Button consoles anim. rel. 60x50 xbox A
Button consoles anim. press. 60x50 xbox A
Button consoles anim. rel. 60x50 xbox B
Button consoles anim. press. 60x50 xbox B
Button consoles anim. rel. 60x50 xbox X
Button consoles anim. press. 60x50 xbox X
Button consoles anim. rel. 60x50 xbox Y
Button consoles anim. press. 60x50 xbox Y
Consoles stick
green circling texture (with arrow) inverted
D-Pad 30x30 NextGEn textures have another green circl (non-inverted)
D-Pad up 30x30
D-Pad right 30x30
D-Pad left 30x30
D-Pad down 30x30
Mail symbol
Contact symbol
Chat symbol
Chat symbol, inverted
Command Follow 36x36
Command Help 36x36
Command Defensive (blue) 36x36
Command Guard (green) 36x36
Command Agressive (red) 36x36
Stats bar bg, left
Stats bar bg, middle
Stats bar blue, left
Stats bar blue, middle
Stats bar red, left
Stats bar red, middle
Stats bar orange, left
Stats bar orange, middle
Stats bar green, left
Stats bar green, middle
Full momentum indicator
(blank)
Map arrow duplicate Symbol (shield), 36x36
Map arrow duplicate Symbol (explosion), 36x37
Keyboard prompts from Fullkeyset 60x46
Keyboard prompts from Fullkeyset 60x46
Keyboard prompts from Fullkeyset 60x46
Keyboard prompts from Fullkeyset 60x46
Keyboard prompts from Fullkeyset 60x46
Keyboard prompts from Fullkeyset 60x46
Keyboard prompts from Fullkeyset 60x46
Keyboard prompts from Fullkeyset 60x46
Keyboard prompts from Fullkeyset 60x46
Keyboard prompts from Fullkeyset 60x46
Keyboard prompts from Fullkeyset 60x46
Keyboard prompts from Fullkeyset 60x46
Keyboard prompts from Fullkeyset 60x46
Keyboard prompts from Fullkeyset 60x46

PS3/360/RE:

white dot All HUD color bars bg
white shade small
white circle shade 32x32
white circle outline 32x32
white shade big All HUD info bars
white circle full 32x32 All HUD black circles
white line (blank) All HUD black bars middle
white half circle full 16x32 All HUD black bars ends
white star 32x32
HUD head circle big 114x114 unused
HUD head/power circle small 74x74 unused
HUD power circl sm. (act.) 74x74 unused
HUD commands circle very small 44x44 unused
Health bar 12x156 unused
Energy bar 12x156 unused
Momentum bar 12x156 unused
Shield coins bar, middle 4x49 unused
Shield coins bar, left 11x49 unused
Enemy health bar, left cap 40x49 unused
Enemy health bar, color strap 11x49 unused
Shield coins bar, right (coin) 46x49 unused
Star bar, right (star) 45x49 unused
Countdown bar, right (watch) 46x49 unused
Rage meter point empty 16x16 unused
Rage meter point loaded 16x16 unused
Map arrow (outlined)
Map arrow (outlined)
Map arrow (dot)
Map arrow (dot)
Map X
Map Shield (extraction p.)
Map (rectangle thingy)
Map exclamation mark
Map Exit
Map arrow up
Button prompt consoles 60x60 xbox A
Button prompt consoles 60x60 xbox B
Button prompt consoles 60x60 xbox X
Button prompt consoles 60x60 xbox Y
Button consoles anim. rel. 60x50 xbox A
Button consoles anim. press. 60x50 xbox A
Button consoles anim. rel. 60x50 xbox B
Button consoles anim. press. 60x50 xbox B
Button consoles anim. rel. 60x50 xbox X
Button consoles anim. press. 60x50 xbox X
Button consoles anim. rel. 60x50 xbox Y
Button consoles anim. press. 60x50 xbox Y
Consoles stick
green circling texture (with arrow) inverted
green circling texture (with arrow)
D-Pad up 30x30
D-Pad right 30x30
D-Pad left 30x30
D-Pad down 30x30
Mail symbol
Contact symbol
Chat symbol
Chat symbol, inverted
Command Follow 36x36
Command Help 36x36
Command Defensive (blue) 36x36
Command Guard (green) 36x36
Command Agressive (red) 36x36
Stats bar bg, left
Stats bar bg, middle
Stats bar blue, left
Stats bar blue, middle
Stats bar red, left
Stats bar red, middle
Stats bar orange, left
Stats bar orange, middle
Stats bar green, left
Stats bar green, middle
Full momentum indicator
(blank)
Symbol (shield) 36x36
Symbol (explosion) 36x37
HUD head circle big, bg 128x128
HUD head circle big 128x128
HUD power bind circle, bg 84x84 also HUD head small
HUD power bind circle 84x84 also HUD head small
HUD power bind circle (unl.) 84x84 also HUD head small
HUD command circle, bg 66x66 very small
HUD command circle 66x66 very small
Shield coins bar, bg 66x66
Blue glow
Shield coins bar, left
Shield coins bar, right
Blank bar, right
Blank bar, middle
Shield coins bar, watch 54x54
Shield coins bar, coins 54x54
Shield coins bar, star 54x54
Health bar
Energy bar
Frozen bar
Momentum bar (+rage?)
Selected HUD arrow
HUD head circle big, mask 128x128
HUD power bind circle, mask 84x84
HUD command circle, mask 66x66
Rage meter point empty 16x16
Power circle 84x84
Volume symbol, mute 36x36
Volume symbol, loud 36x36


An interresting fact (better seen in the picture): The two lists are mostly identical in the top part (before the blank), but overlap in the lower part. If a texture is used with elements in the lower part (below 256 pixels, counting from the top), the keys will be copied on top of them in the game. But you can easily move the keys to a different spot (a blank space in the texture), or remove them completely.
If the keyboard elements (lowest 14 elements in "hud_coords_beenox") are removed, the button prompts will be removed from the HUD for keyboard users. Doesn't matter when you use a controller.

How is that knowledge helpful?
It enables us to create or own custom textures, with different elements of different sizes. The limitation we still have, is that we can't change the order of the elements in the xmlb file. If I set 0 for each value on a "coords" entry, that element will vanish from the HUD. If I exchange the values of "left" and "right", the element will bi mirrored horizontally. If I use a texture of different dimensions than the original one, it will get stretched to the size of the original element (most, but not all elements, some behave differently). To use elements of NextGen textures, you will have to copy the values from the same element in (eg. hud_coords_ps4) to the corresponding element in hud_coords_beenox. Counting from the top.
The keys for PC can be anywhere on the texture, just make sure they're on an empty space.

Thank you for delving into these files to find more info! Even if we can't find much of use yet, it's still great to know what we're working with