- 1 The Basics
- 2 Arena Assets
- 3 Entrance Sets
- 4 Stadiums
- 5 Announcer Table Areas
- 6 Lighting
- 7 Custom Assets and The Misc File
- 8 The Magical STG File
- 9 Menu Items
- 10 Frequently Asked Questions
- 10.1 I added a mod and now my game crashes on boot?
- 10.2 I injected everything as ZLIB but the mod still crashes?
- 10.3 I’m trying to open menu images as DDS, but GIMP/PS won’t open it?
- 10.4 I’m trying to unrender with Anatomizer, but it can’t move objects or change render count?
- 10.5 I edited my textures but they didn’t change in-game?
- 10.6 I edited my textures but I can still see bumpy outlines of the previous textures?
- 10.7 I’m trying to inject textures into a texture pac, but it says I have the incorrect file size?
- 10.8 I edited my string file, but the names didn’t change in-game?
- 10.9 Errrrrmahhhgod what DDS type should I use? DXT1? DXT5? DXT10? I just don’t know!
- 10.10 How do I open texture files?
- 11 Arena Modding Appendices (2K17)
- 12 Relevant Links
In the WWE2K series modded arenas can be added to the game. Unlike Character Modding, however, modded arenas must replace existing in-game arenas as the arena slots seem to be hard-coded.
Even though the arenas must be overwritten, NOT ALL ARENA ASSETS MUST BE OVERWRITTEN. New assets with custom asset numbers can be created and assigned to various arenas through the misc file.
The various ring and arena assets are located in the "...pac/arena" folder inside your game directory.
The aprons are all located in the "apron" subfolder, and contain the apron textures.
The apron objects are not contained in the numbered apron files and the object is shared between every apron in the game.
The apron files have two separate textures for perpendicular sides of the ring.
Ropes, Ringposts, Ringmats, Fences, Commentary Seats, Steps and Turnbuckles
These files are all located in their respective subfolders and none of the numbered pacs contain the objects (which are shared between every asset).
Certain Rope/RingPost/Turnbuckle pacs have additional textures that allow for individual posts, ropes, etc to be different colors.
These are located in the "barricade" subfolder, and unlike the above assets the numbered pacs do contain the object files.
Note that using a barricade from a retro arena (ex: the steel barricades) in a modern arena will cause the corners to be out of place. This can be fixed by created a new custom pac and 3D modelling the corners to fit properly.
There are a number of additional folders such as trons, minitrons, walls, headers, floors, misc objects which contain the in-game CAA parts.
These parts can also be assigned to arenas through the misc file.
The crowd textures are very unique and unlike any other in-game texture. In addition to having mips, each texture has a series of "frames" which are essentially color swaps of the same texture. These frames can be edited individually using Visual Studio.
The objects and textures for the entrance sets and stages are located in the arentrance##.pac files inside the "entrance" subfolder. Locations such as the backstage area and Performance Center are also included in these files.
Textures and Objects
The textures are all in the 0E38 Texture Archive and the YOBJ files are typically numbered at the first of the PACH/SDHC. Some YOBJ slots may render differently than others. For example, and object placed in a specific slot may appear mirrored in-game.
The 032# YOBJ files contain video screens. Typically there are screens for trons, minitrons, arena videos, and arena camera footage.
Additional Data Files
The C738 file contains subfiles which have the YOBJs for the lighting objects, but do not control the actual light itself.
The C351 file appears to be related to how objects get rendered.
The other C### files and 759# files controls various lighting and camera angles.
Located in the "stadium" sub-folder, these files contain the objects and textures that form the actual stadium (ex: MSG or the ECW Arena). They also include some geometry info as well as crowd and chair seating placement.
Crowd Fan Placement and Rendering
The E### files within the stadium pac control the placement and rendering of fans in the stadium. By manipulating values within these files you can change the placement of fans by row/block, or selectively unrender individual fans.
Unlike most files which are best manipulated in hex, these files are easiest to work with using a plain text line based editor like Notepad++. The format is must easier to comprehend when opening them this way.
Each file will contain lines of coordinates and rotational values that determine the placement of a row or block of fans. By changing these values you can move each row around.
Typically each row or block has an identifier associated with it (ex: C, a, M, P, z, etc). The coordinates follow this identifier. If you comment out the entire coordinate row before the identifier using a semicolon ( ; ), you can unrender that entire row.
Below the coordinate sections there is a list of individual fans in a format that indicates the row indicator and fan number. For example, C00 would be the first fan in row C. By commenting these lines out you can selectively unrender individual fans.
Chair Placement and Rendering
Once you have your fans moved around, what can you do with their chairs? These can be moved by manipulating the dat file inside the C738 file. The C738 is a sub-pach that will contain several YOBJ files (the chair objects) as well as a dat file.
If you open up the dat file in hex and scroll down it will have a number of entries starting with name values like "middle_low_215". These are the individual chair placement values.
If you zero out an entire entry including the name values you will effectively unrender that specific chair.
If you want to move the chair you can change the hex location values to apply new coordinates. This is similar to moving lighting so see the tutorials on that to proceed.
Announcer Table Areas
Different arenas have different announce table and ringside seating arrangements. Some arenas don't have announce tables at all. But how can we remedy this? The table placement is controlled by the initposition.pac file in the /pac/prop/propdata folder. Specifically it is controlled by the WPAR file inside of the initposition.pac.
There are 70 entries in the WPAR file. Each entry corresponds to a different arena and has 3 key bytes (each separated by 00 spacers) and starts with an ID/slot byte (ex: the first byte of the SDLIVE slot is 00, the first of the RAW slot is 01, etc etc). By changing these key bytes you can alter the table positioning or remove it entirely.
But when you do this you will often bork the barricade physics. To remedy this you need your arentrance file to have the collision data files from an arentrance that has the configuration you would like. You also need to set the proper barricade in the arena misc, and set the proper barricade geo in the 02 STG file.
Titavius has provided a lengthy writeup of the basics for modifying arena lighting.
Both .dat and .nibj files contain positional and rotational values, or coordinates. These values are read by the game’s lighting engine and are used to determine where any or all beams of light are located within the arena.
Types of Light
The game utilises three types of lighting objects, referenced in the resource files. Spot Lights (SpotLights/Spot_Lights), Point Lights (PointLights/Point_Lights) and Volume Lights (VolumeLights/Volume_Lights).
Spot lights are emitted through cone shapes that can be controlled in order to change the width or angle, and to determine how much of an area is illuminated. Arena objects closer to the spot light will be brighter. Objects such as metal truss structures will reflect the light, giving off a coloured glow effect. Depending on how wide the cone is, the light will either be softer or harder.
Perhaps the most common lighting type, Point Lights are very similar to an incandescent light bulb that emits light in all directions. One way to describe a Point Light, would be as a sphere of light filling an area, such as the backstage area or parking lot. Objects closer to the light will be brighter, and objects further away will be darker. Point lights are great when you need to illuminate areas with a smooth falloff in all directions, or create a light that has a single point as its source.
A volume light is very similar to a point light, emitting omnidirectional rays from a single point. Unlike a point light however, a volume light has a specific shape and size, which affect its falloff. A volume light can be changed to any geometric primitive, such as a cube, sphere, cylinder or cone. The volume light only illuminates objects within its volume. Meaning if you want the object to be lit up, the volume light will need to be placed around the object.
Arena Lighting Files
Within the 7594 and 7595 dat files, lighting information is displayed as text strings, with a unique number and lighting type for each light beam clearly identifiable. This information has been provided by the game’s lighting engine, and contains the default positional (“pos”) and rotational (“rot”) coordinates for each light beam. When altered, changes to these coordinates do not reflect in-game. This is because the corresponding data provided in the accompanying nibj files will need to be altered also.
Like the dat files, individual beams are identified in the nibj files as a unique, three digit number. The bytes that follow are 32bit floating point values that contain the same coordinates referenced in the dat files. The rotational information is also provided in the same block of bytes, and follows on from the positional info in the same sequence. This information is interchangeable with information provided in other nibj files from other arenas. Or alternatively, the bytes can be altered to read custom coordinates, converted from 32bit floating point values. Using this same method, it is also possible to combine positional elements from one arena with elements from another. As an example, if your arena has stage lighting but no ramp lighting, ramp lighting information can be obtained, and entered into the .nibj file. The trade off of this however, is that the ramp lighting info will need to replace existing information, and cannot be added to the file.
Like the info provided in the nibj files, the C738 file contains interchangeable 32bit FP values that read as coordinates. These coordinates however determine the position and rotation of the lamp objects, and not the coloured beams. As with the nibj files, this information can be swapped with positional information from other C738 files. It is worth noting, that the C738 file does not need to have its content extracted to be edited. The info contained within each pac file inside the C738 can be edited by loading the C738 file into a hex editor. In order to narrow down the search for a specific lamp object however, file extraction and individual editing may be necessary.
Removing Light Beams
It is possible to remove certain light beams / lamp objects from an arena's lighting system, so that only some remain. Start by simply opening the .dat files in a hex editor, and highlighting all reference to a specific light beam, then zero out that information. Do this for all references to that same light (ex: spot245). Doing this will effectively remove this beam from the lighting system, and will no longer shine in-game
Removing Lighting Objects
Open the C738 file in a hex editor and locate the light number. (Beam and Lamp objects will share the same ID). Again, zero out the block of bytes connected to your lamp ID to remove the object.
Each arena has a color profile for lights consisting of five colors (color0-color4), and five ceiling light colors (ceiling0-ceiling4). They are located in the prm_ar_lg_color.pac file, and consist of a bunch of hex color values each separated by a FF byte.
The prm_ar_lg_color.pac is organized by type. So the first 99 entries are all color0 values in sequential order (SDLIVE, RAW, NXT, 205 LIVE, etc). The next 99 entries are all color1 values, then color2, etc all the way through to the ceiling4 entries.
Custom Assets and The Misc File
Each of the PC 2K games has a file named "misc01_start.pac" or something similar located in the ".../pac" folder. Typically the misc file that is of interest is the last DLC version. For example, in WWE2K17 this is the "misc01_start_p40.pac" file. In WWE 2K18 this file is called misc04_arena.pac and is located in "pac/root".
This file can be used to define which assets an arena is going to use. The file can be opened in hex as-is, or the 0398 file inside of it can be extracted.
Each arena has a set of values for each asset. These sets MUST start and end in the same location of the file or the offsets will be broken. So changing an asset number from 1 to 99 will break the misc unless the fix below is implemented.
The easiest way to find the first arena is to search in decimal mode for "stad". The easiest way to find a specific arena is to search by apron value, as most arenas have unique aprons.
The order of the misc entries reflects the numbering of the arentrance##.pac files.
Creating Custom PAC Files
1) Copy an existing 2K16 pac file to a new location (ie: arapron00.pac). 2) Rename it to your desired number (make sure it is a number that isn’t already used). 3) Open the pac in hex and rename the identifier to your chosen pac number (ex: stadiums use ST##). 4) Edit your textures/yobjs as desired and inject them into your custom pac. 5) Copy your custom pac back into the proper directory. 6) Assign your new pac to your desired arena by changing the proper value in the misc.
Assigning Custom PAC Files to Specific Arenas
1) Open the misc file in a hex editor (ie: HxD). 2) Find your desired arena values. 3) Find the value you want to change (ie: apron) and change it your desired number.
Working Around the Single/Double Digit Limitations
1) The trick is to ensure that each arena set ends in the same place in the file. 2) Each value within an arena set is separated by null spacer code (“20” in hex). 3) Add/delete a “20” in hex to balance the set ex: if you change LEDapron from -1 to 0 then you’ll need to add a spacer).
The Magical STG File
Inside of the misc_start01.pac file is a sub SDHC, and inside of that are a number of dat/pac files. One of these should be labelled as "02.pac" and when opened in hex should have a header that says "STG". This file can be edited in a similar manner to the COS (alt attires file), to change arena strings, toggle crowd fighting, set default refs, change stage geometry, change barricade geometry, disable screen filters, etc on an arena by arena basis.
Each arena consists of 120 bytes, beginning with the string ID (in reverse order). Changing various bytes achieves different things.
More to come....
When overwriting arenas there are a number of menu and in-game overlays that will also need to be replaced including:
- replay screens - matchup screens - arena superstar select logos - arena name strings - nameplates - locators - copyrights - transitions - universe PPV logos - mycareer logos
Most of these files will be in DXT10 DDS format, although replacing them with DXT5 DDS files work in most cases.
Nameplates, transitions and locators are in bk2 format, although bik format will also work.
Changing Arena String Names
There are two main ways to change the strings for an arena. The first is obvious, edit the string value already associated with that arena (ex: Find the "SMACKDOWN LIVE" string and make it "SMACKDOWN 2000").
But what if you want to turn "RAW" into "WCW NITRO"? The string doesn't have enough characters. Fortunately strings can be assigned to arenas in a similar manner as strings can be assigned to alternate attires.
Inside of the misc_start01.pac file is a sub-file with the header "STG" (in 2K18 this is a 0002 or 02 file). This file contains a number of entries that are 120 bytes long each. Each entry starts with two bytes that indicate the string ID in reverse format (ex: the string ID for "SMACKDOWN LIVE" is 5208, so reversed in hex the bytes would read "08 52").
By changing these bytes you can make an arena use a different string name, allowing you to assign longer strings to arenas with traditionally shorter names.
Frequently Asked Questions
I added a mod and now my game crashes on boot?
Zero out the two bin cache files in your game directory.
I injected everything as ZLIB but the mod still crashes?
Don’t inject the PACH/SDHC as ZLIB. The stuff inside it should be compressed, but the PACH/SDHC itself shouldn't be.
It’s likely compressed as a DXT10 DDS file. Open with Microsoft either a) Visual Studio, b) PS with the Intel DDS plugin, or c) Paint.NET as DDS2 files with the DXT10 plugin. Most of these can be replaced with DXT5 DDS files, and some can be replaced with PNG files which will result in higher quality.
I’m trying to unrender with Anatomizer, but it can’t move objects or change render count?
Try making a copy of the yobj file and opening the copy with Anatomizer.
I edited my textures but they didn’t change in-game?
Did you remember to either save without mips or generate new mipmaps? SPOILER: You probably didn’t.
I edited my textures but I can still see bumpy outlines of the previous textures?
You forgot to edit the normals silly. Now go act normal so we don’t notice you’re a freak.
I’m trying to inject textures into a texture pac, but it says I have the incorrect file size?
If you remove mips, change texture size, or compress differently you can’t inject back in. Try creating a new texture pac instead.
I edited my string file, but the names didn’t change in-game?
Make sure that there aren’t any backup or duplicate string files ANYWHERE in your game folder. Also make sure you edited the correct language. The string is in multiple languages.
Errrrrmahhhgod what DDS type should I use? DXT1? DXT5? DXT10? I just don’t know!
Open your DDS file in hex. The header will tell you what type the default is. Things with alpha channels like normals usually use DXT5. Main textures are usually DXT1. Menu items are typically DXT10 although DXT5 usually works as a replacement.
How do I open texture files?
Your fave image editor. You may need to an additional DDS Plugin. There is company from Mountain View that can help with that.