Brazil's biggest MU Online portal — since 2003
Tutorial Advanced Client

How to create custom login and character selection screens in MU Online

Learn how to fully customize the login and character selection screens of the MU Online client by editing .ozj/.ozt textures, interface layouts, and the Main.exe itself.

BR Bruno · Updated on Apr 5, 2024 · ⏱ 22 min read
Quick answer

The login screen and the character selection screen are the player's first visual contact with your server. A generic login gives off the impression of "just another pirate server"; a well-made login, with its own logo, coherent art, and well-placed fields, conveys professionalism before the player

The login screen and the character selection screen are the player's first visual contact with your server. A generic login gives off the impression of "just another pirate server"; a well-made login, with its own logo, coherent art, and well-placed fields, conveys professionalism before the player even types their password. This tutorial covers the full customization flow: identifying the right files, converting and editing textures in the MU format, adjusting the layout controlled by Main.exe, handling transparency, and packaging everything for distribution. It is an advanced guide because it involves manipulating proprietary formats (.ozj/.ozt) and, in some cases, editing bytes of the executable.

Prerequisites

Before you start, have these on hand and installed:

  • A complete client for your server with the IP already configured. If you have not set up the server yet, start with the guide on how to create a MU Online server and come back here afterward.
  • An image editor with layer support: GIMP (free) or Photoshop.
  • A MU texture converter (MU Image Converter, OZJ/OZT Converter, or the equivalent for your season). Each distribution has its preferred version — confirm which one matches your client.
  • HxD (a free hex editor) to edit Main.exe when needed.
  • Resource Hacker for embedded resources (icon, texts, version).
  • A complete backup of the Interface/ folder and Main.exe.
Atenção: Never edit the production client directly. Always work on a copy and only replace the files in the distributed client after testing everything locally.

How the login screen works under the hood

The login screen is not a single image — it is assembled in layers by the game engine. Understanding this split saves hours of trial and error:

LayerWhere it livesWhat it controls
Background.ozj texture in the Interface/ folderThe fullscreen art behind everything
Field panel/frame.ozt texture (with alpha)The "little window" that holds the username and password
Buttons (Login, Exit, Create).ozt textures + coordinates in MainThe look and position of the buttons
Text and fontsRendered by Main.exeLabels, version, error messages
Positioning (x,y)Main.exe codeWhere each element appears on the screen

The critical point: swapping the art is easy, moving things around is hard. As long as you keep the dimensions and only repaint the textures, the engine puts everything where it already expected it. The moment you want to change coordinates (e.g., raise the fields 40 pixels), you have to touch Main.exe.

Nota: The file names below are common examples from classic clients and vary by season/client. Always inspect the Interface/ folder of YOUR client to find the real names before you start editing.

Locate the login and selection files

Explore the client folder. The typical structure (example, varies by season/client):

MU Online/
├── Interface/
│   ├── login.ozj            ← login screen background (example)
│   ├── login_ok.ozt         ← Login button (with alpha)
│   ├── login_exit.ozt       ← Exit button
│   ├── newchar.ozj          ← character creation background
│   └── character.ozj        ← character selection background (example)
├── Data/
│   └── Local/               ← in some versions, localized texts
└── Main.exe

To figure out which file is which without guessing:

  1. Batch-convert all the .ozj/.ozt files in the Interface/ folder to .jpg/.png;
  2. Open the converted folder in Explorer in thumbnail mode;
  3. Visually identify the login background, the buttons, and the selection panel;
  4. Note the exact names and dimensions of each one (width x height).

MU texture formats and when to use each one

ExtensionBaseTransparencyUse on the login screen
.ozjJPEGNoFullscreen background, no transparency
.oztTGAYes (alpha)Buttons, frames, overlaid logos
.ozbBMPNoSimple textures, small elements

The golden rule: if the element needs to "bleed through" to show the background behind it (a button with rounded corners, a cut-out logo), it must be .ozt. If you save a cut-out logo as .ozj, the transparent corners turn into a black or white rectangle.

Edit the login screen background (step by step)

  1. Back it up: copy Interface\login.ozj Interface\login.ozj.bak;
  2. Convert the original to edit it: login.ozjlogin.jpg in the converter;
  3. Open login.jpg in GIMP/Photoshop and note the exact dimensions (e.g., 1024x768 — varies by season/client);
  4. Build your art on a new layer on top, keeping the size identical:
  • The server logo clearly visible (top or center);
  • Slogan and website address;
  • A "clean" space in the area where the login fields will appear, so it does not compete with the text;
  1. Export it back as .jpg at 90% quality (heavily compressed JPEG creates ugly artifacts);
  2. Convert login.jpglogin.ozj in the converter;
  3. Replace the file in the Interface/ folder;
  4. Open Main and check the result.
Dica: Leave a "breathing area" where the username/password fields appear. If you fill that region with detail, the white field text becomes unreadable over the art.

Customize the buttons (with transparency)

The buttons (Login, Exit, Create Character) usually have two states drawn on the same texture or on separate textures: normal and "hover/pressed". To edit them:

  1. Convert the button's .ozt to .png (preserving the alpha channel);
  2. In the editor, keep the transparency — do not flatten the image onto a solid background;
  3. Redraw the button while respecting the original clickable area (the engine uses the old coordinates);
  4. Export as .png with the alpha preserved;
  5. Convert back to .ozt;
  6. Replace it and test by hovering the mouse over the button.
Atenção: If the button "disappears" in the game or turns into a black square, it is almost always because the transparency was lost on export. Re-export as PNG with an alpha channel and reconvert to .ozt, never .ozj.

Customize the character selection screen

The selection screen is assembled in a similar way, but it has one important detail: the 3D characters are rendered on top of the background, at fixed positions. That means your background art has to leave the "slots" where the characters appear clear.

Step by step:

  1. Identify and convert the selection background (e.g., character.ozj);
  2. In the editor, mark the areas where the character models stand (usually three to five aligned positions);
  3. Place decorations and the logo only along the edges and at the top, avoiding those areas;
  4. Keep the resolution identical to the original;
  5. Reconvert to .ozj and replace it;
  6. Log in with an account that has created characters to validate that nothing covers the models.

Adjust the layout in Main.exe

When swapping the art is not enough and you need to move fields, buttons, or text, editing Main.exe comes into play. Without the client source code, this is done by locating and changing values in the executable.

To change fixed texts (labels, window title):

  1. Open Main.exe in HxD;
  2. Ctrl+F → search for the current text (e.g., Log In);
  3. Replace it with the new characters — respecting the same number of bytes (if the new text is shorter, pad it with spaces);
  4. Save.
Length rule in hex editing:
Original text: "Log In"   = 4C 6F 67 20 49 6E   (6 bytes)
New text:      "Sign In"  = 53 69 67 6E 20 49 6E  (7 bytes)  DOES NOT FIT
New text:      "Enter "   = 45 6E 74 65 72 20   (6 bytes)  OK

To move coordinates (the x,y position of a button) without the source, the process is far more delicate and specific to each build — you usually need a Main editing tool for your season or the client source itself. I do not recommend editing coordinates blindly in hex on production.

Nota: Many modern distributions expose part of the login layout in external files (JSON, LUA, or an interface .txt). If your client has that, prefer editing those files over touching the executable — it is reversible and does not corrupt Main.

Test at different resolutions

Your art has to work not just on your screen. Test at least two or three of the resolutions the client supports:

  1. Set the resolution in Setup.ini (or the client's equivalent config);
  2. Open the login at each resolution;
  3. Check that the background does not stretch badly and that the fields stay readable;
  4. On widescreen displays, confirm that the art is not "cropped" at the sides.

Common errors and fixes

ErrorLikely causeFix
Client crashes when opening the loginTexture with dimensions different from the originalRecreate the art with the exact dimensions of the original file
Button turns into a black squareTransparency lost (saved as .ozj)Re-export as PNG with alpha and convert to .ozt
Stretched/distorted backgroundImage aspect ratio changedKeep the same width x height ratio as the original
Login text unreadableArt too busy behind the fieldsLeave a clean area where the fields appear
Main.exe will not open after a hex editByte length changedRestore the backup and re-edit keeping the same number of bytes
Texture does not update in the gameClient reading from another folder/packageConfirm whether the textures are loose or inside a data package
Characters covered in the selection screenArt occupying the 3D model slotsLeave the character areas clear in the art

Package and distribute

Once everything is tested, prepare the files for players to download:

# Compress only the changed files as a patch (PowerShell + 7-Zip)
& "C:\Program Files\7-Zip\7z.exe" a -t7z -mx=9 patch-login.7z Interface\ Main.exe

# Generate a hash for the player to verify integrity
Get-FileHash patch-login.7z -Algorithm SHA256 | Select-Object Hash

Publish the SHA256 hash alongside the download link. If you use a launcher/updater, add the changed files to the update list so players receive the new login automatically.

Launch checklist

  • Backup of the Interface/ folder and Main.exe stored in _original/
  • Real names and dimensions of the login files confirmed in your client
  • Login background recreated at the exact dimensions of the original
  • Login field area kept clean and readable
  • Buttons edited in .ozt with transparency preserved
  • Selection screen with the 3D character slots left clear
  • Main.exe texts translated without changing the number of bytes
  • Login tested at least at two resolutions
  • Client opened from scratch all the way to selection with no crashes
  • Patch compressed and SHA256 hash published
  • Files added to the launcher/updater list (if any)

Frequently asked questions

Is the login screen an image or is it embedded in the executable?

It depends on the season and the distribution. In many Season 6 clients the background is a .ozj texture in the Interface folder, but the positioning of the fields and buttons is controlled by Main.exe. In newer clients part of the layout lives in external UI files.

Do I need to recompile Main.exe to move the fields?

Not always. Swapping the art does not require recompiling, but moving field and button coordinates usually requires editing Main via hex or having the client source. Without the source, you are limited to replacing textures at the same dimensions.

What is the correct resolution for the login images?

It varies by season and client. A common reference value is 1024x768 for classic clients, but always keep the exact dimensions of the original file to avoid distortion. Check the size of the file you are going to replace before creating the art.

Can I use transparency in the login art?

Yes, for overlaid elements use .ozt (a TGA base with an alpha channel). The main background is normally .ozj (a JPEG base, no alpha). Choosing the wrong format makes the transparency vanish or turns into a black background.

How do I back up before editing?

Copy the entire Interface folder and Main.exe to an _original folder before any change. That way, if a texture or byte edit breaks the client, you restore it in seconds without downloading everything again.

BR
Events, maps & items editor

Bruno specializes in MU Online events, maps, bosses and item economy. He documents every detail based on real gameplay.

Keep reading

Related articles