Disclaimer: This thread is to promote primarily aesthetic modifications. This is NOT about altering the way the game plays functionally.
So clearly the last post like this was rather long and honestly we didn't really understand as much on this side of the community at the time. In fact there wasn't really a "we" at the time. I won't be covering searching for files here since we have a decent listing now so look at the last thread for that: http://www.pso-world.com/forums/show...dding-Tutorial
If you want more direct help or to just generally chat about this stuff, you're welcome to join our public modding discord here: https://discord.gg/Kds4V4Z
We now have a mod loader by the way with basic mods to enable and disable mods while the game runs! Check it out here!
A basic video showing weapon modding can be found here:
**Tools**
*The hacked checksum: http://www.mediafire.com/download/7j...7abd1b61fb47cd
Necessary to load mods. You can thank the English patch team for this one. Unlike nearly everything else in the game, this must be replaced while the game is not running. Yes, most files can be hotswapped in PSO2 safely.
*PSO2 JP Current File Directory: https://docs.google.com/spreadsheets...IZjBGjTGEZSET4
This isn't comprehensive, but it's a list of a lot of what my group has looked through. It should be a big help if you want to mess with things.
*ICE Expansion Tool (unpacks and repacks PSO2 ICE archives): http://www.mediafire.com/file/jghadx...e_rev2.7z/file
Unpacks and repacks files.
**Explanation**
So here's the basic idea. PSO2 uses ICE archive files for storing things. To a layman, they're basically PSO2 zips. PSO2 uses these for basically everything that's not a sound or video file in its win32 folder. Our unpacker and repacker for ICE files is somewhat flawed, but it *can* repack everything I've come across, with some toying on a few offenders. I'll highlight some of these issues later.
**Basics**
Spoiler!
Let's start out by doing a basic mod. Let's edit an existing weapon and swap it over a camo. For this example, I'll be taking the basic rod Rod, changing the texture, and replacing the rod camo *Lilli Shaft (1k meseta in player shops as of this writing) with it. The game itself sees weapons and weapon camos as the same thing so them technically being different item types isn't an issue.
So ideally, you'd make a folder for your mods and extract the repacker in it. From here, we need the weapon file. If we go the PSO2 File Diretory link, going to the Weapons section and scrolling to the Rods section will show that the basic rod is: bce5e379174e3797530a3d667fe48436
as seen here:
Going to the Wep. Camos section will allow us to find out that *Lilli Shaft is: fd7d271801a59effe7889fe546df5a10
Since we know the name of that file now, we can use the search function in Windows's file explorer to find it. Copy and paste that filename or scroll down to it and copy it into the mod folder you made. Rename it with an extension and a note (fd7d271801a59effe7889fe546df5a10 basic rod.i for example) since you can't have an extensionless file and a folder of the same name in the same place. We rename the main part to the Lilli Shaft's file name since we'll be renaming it this later anyways to replace it. Now drag this file onto ice.exe. You should get a folder with the name you chose, minus the extension.
Your new folder should look like this:
For the purposes of this tutorial, we'll just copy and paste wp_01_11_01_01_01_r_n.dds, delete wp_01_11_01_01_01_r_d.dds and rename the copy of wp_01_11_01_01_01_r_n.dds to wp_01_11_01_01_01_r_d.dds. Since the _d, or diffuse map, is what gives the weapon its main color this will make it look much different ingame. Using certain .dds files can cause the game to crash upon loading the file and I'll explain that later, but this will work fine.
Drag your modded weapon folder onto Uncompressed.bat (compressed is buggy) and you should get a file named fd7d271801a59effe7889fe546df5a10 basic rod.ice. Remove the basic rod.ice part and your mod is ready to use. Back up files you replace if you want to and make sure you have the hacked checksum in pso2_bin/data/win32/. Then, put your fd7d271801a59effe7889fe546df5a10 in and load up your game. Your Lilli Shaft camo should show up like this:
Congrats, if you've followed this tutorial then you've made your first mod for PSO2! For comparison, this is about what you should get: http://www.mediafire.com/file/f7m1us...c_rod_edit.zip
**Weapon Model Porting**
Spoiler!
*Tools*
AFP Tool - Adds the header that changes the header from aqo to aqp files.
http://www.mediafire.com/file/dbu8vr...p%29_v1.01.zip
aqp2obj - Dumps and injects obj models from VTBF aqp/aqo files with bones/rigging. Does not work with all possible VTBF files sadly, but works with many. Does NOT directly convert and requires a .org.aqp from a properly extracted model as a base.
http://www.mediafire.com/file/n4ei3g...pr/aqp2obj.zip
NIFL Tool - Not used in this tutorial, but is able to do a one way conversion from NIFL models to .obj models at 1/100th scale and y-z axis flipped. Tends to work on almost any NIFL model. Very useful.
http://www.mediafire.com/file/a4xzs7...7a/NIFLnew.rar
A 3d modeling tool - I'm using 3ds max, but this is meant to be a general explanation of what to do. Other common ones such as Blender and Maya can work as well. You may need plugins to import the model we'll be porting.
A dds editor - I use Photoshop with a dds plugin, but other tools like GIMP should be fine as well.
Unfortunately, at some point in the past SEGA decided to change the model format for most models. However, I did manage to save a lot of models in the old format here: https://1drv.ms/f/s!AmsmLjy_fwAM7Q1IQwVfRHYum1OB
To use these, since they're in aqo and not aqp format, the AFP tool is necessary. Remove the first 4 bytes of the aqo file you choose in a hex editor, run it through the AFP tool, and rename the resulting aqp accordingly to whatever after running it through.
So for this, I'm going to assume you're familiar with the basics and that you can compile a mod without too much issue. With that said, we'll be porting one of these models (although if you're confident, feel free to do something else): https://www.models-resource.com/play...k2/model/7635/
AQP/AQO files have shader info built into them which means if we want to use a model like this one that has transparency in its texture, we should use a pso2 model base that does this. For the purposes of this tutorial, you can use this file as a base: http://www.mediafire.com/file/h93k99.../SwordTest.aqp
Drag that onto aqp2obj.exe and it should give you 3 files: SwordTest.obj, SwordTest.mtl, and Swordtest.org.aqp. Import it into your 3d editor of choice. Now you'll want to import the Neptunia weapon (I'm going to use Green Heart weapon 2). You'll notice that not only are they different sizes, but that the Neptunia lance is above the pso2 example model. Try and scale the model to what you feel would be appropriate for ingame and move it to roughly match the hilt position. You'll also want to rotate it appropriately. I estimated it to be something like this:
Now we just need to rename the model itself. Note that I say the model itself and not the model file. This particular base model uses the names mesh_1_1_0_0 and mesh_0_0_0_0. Normally, the former, mesh_1_1_0_0, I mentioned is used to for parts of the model that take advantage of transparent textures, but for our model, we don't have to worry about that. Just make sure to name the model to one of those names EXACTLY or the conversion will fail. Also, your model will likely have imported with its proper texture, but assign a blank material to it. The conversion will also fail usually if textures are assigned to the model.
Now we're ready just about ready to export. If your model editor has a "export selected" feature, then go ahead and select your model and use that. Otherwise, delete the base models from your scene and export. You'll want to replace the the original base model .obj. After replacing SwordTest.obj, drag SwordTest.obj onto aqp2obj.exe. If all went well, you'll notice SwordTest.aqp is a different file size than the original.
I'll be working from where we were in the previous model here: http://www.mediafire.com/file/f7m1us...c_rod_edit.zip Simply copy SwordTest.aqp to the unpacked folder and name it to "SwordTest_r.aqp". The name doesn't matter too much, but the _r is what the game considers the main weapon model, regardless of if it's dual wielded. Rename the aqn to SwordTest_r.aqn (the aqp and aqn just need to be named the same thing) and delete the other aqp as well as the aqv and wp_env_d.dds as they're not needed.
If we compile with just this, we'll get this: The model shows up, but we want it to be textured. You can find what to name the textures at the bottom of the aqp in a hex editor, but if you're using my example model, you can just name them wp_sword__testing_r_d.dds, wp_sword__testing_r_n.dds, and wp_sword__testing_r_s.dds respectively. All weapons have their texture names stored as text in the bottom of their aqp/aqo file if you ever want to check.
(In the case that you load a texture name that's used elsewhere in the game again as a texture, the first one loaded to memory will be used for all models. To change what texture a normal model (ie not clothing) uses, you'll need to edit the texture filename in hex. You'll also need to keep the original number of characters for the filename.)
But we want to use the original model's texture. Keep in mind that all textures for pso2 MUST be have dimensions that are powers of 2 or the game WILL crash. However, this time, our texture already does. So open up w006_071tex_c.png and resave it in your mod's folder as wp_sword__testing_r_d.dds as a dxt5 dds. Since we have no normal map to use, simply take the original model's normal map and save a file with just the background blue color of this file in it as wp_sword__testing_r_n.dds. For the specular map, I recommend an editor that can edit color channels. The red channel is the proper specular (how much your model shines based on the texture, the green channel does nothing for weapons (to my knowledge), the blue channel is the self illumination (used for giving weapons a glow), and the alpha layer defines where the model will be use the reflective environment map. If you want to be fancy and accurate, you can make the weapon's green glowy parts actually glow by making them lighter than black in the blue channel, but otherwise, copy paste the the diffuse texture into the red channel and make every other channel as well as the alpha layer black and save as dxt5.
If all went well, when you compile your mod, ingame it should look like this:
And in case you want a comparison, here's what I ended up with: http://www.mediafire.com/file/1samdh...rod_edit_2.zip
**Model Troubleshooting**
Spoiler!
-Did you export with materials applied? If your .mtl has textures listed inside it, the .obj will fail to repack to aqp. It's best to just apply a blank material to the object before export to avoid this.
-Did you export with the correct object names? If they don't match up to at least one of the originals, the .obj will fail to repack to aqp. Note that you cannot have say, 2 "mesh_0_0_0_0" objects. However, you can choose to have only one of them. Keep in mind that certain objects may be tied to certain bones or shaders and you may have to account for this. In addition, having extra objects will not work.
-Did your model or a part of it appear invisible ingame or in the preview window in shops? PSO2 uses smoothing groups to cull, or make objects invisible, to save polygons sometimes. You may need to make resmooth your model to make sure that everything is under as few smoothing groups as possible. If the FPS is lower than when the model isn't loaded, the below might apply as well. Another note for models that don't show up in the shop preview is that they may work ingame despite not working in that window because of how pso2 handles this. Usually, it's fixable, but sometimes it is not depending on the model. The solution is the same as what's described above.
-Does your model make the game lag and/or not render properly? This may be because the model didn't rig properly when it was created. Usually, this is pretty clear from the output aqp being larger than the original .obj. Normally, the aqp should be smaller. This is a bit more tricky, but generally the best thing you can do is make the model fit the form of the original as well as possible. You may have to play with it a bit.
**Miscellaneous Editing Notes**
Spoiler!
*File References*
Spoiler!
Some things in the game care immensely about naming because somewhere else decides what to load based on that. Some do not and load other items based on references in the same file, although they may at least need one set sort of file. Some stuff has a mix of this. Below, I'll try and list out what does what overall, although there may be exceptions. This is not comprehensive, but should give an idea.
ICE types with external file reference
Accessories
Animations
Area Sections
Body Paint
Cast Parts
Costumes/Layered Wear
Enemies
Face Paint
Hair
Pets
Stickers
Units
ICE types that load references within (You can swap these freely without editing and repacking)
Drop Models
Skyboxes
Weapons/Weapon Camos
Mags are a little interesting with this and are swappable, but the animations will default to unmoving null animations. Does not affect gameplay.
*Adding effects*
Spoiler!
So, effects (aqe files) are very possible to mess with. Not on everything, but on many things. Essentially, you can copy and rename effects over each other, although you'll need to look in a hex or text editor to see the other assets it calls for. While these won't have file extensions, everything with the same name that it calls for will be used. (Ex. If it asked for ef_basic_effect and there were files named ef_basic_effect.aqp, ef_basic_effect.aqn, and ef_basic_effect.aqv, all of these would be used and needed for the effect to look correct.)
Weapons load their effects based on what their weapon_specific.ini.lua asks for. For a weapon, you can always copy this file over another weapon's and load effects for whatever the that lua asked for. Note that you can also omit any unneeded effects (Ex. You don't want a looping effect, but you want all of the others. You can just leave the loop effect out)
Animations can also call effects through .bti files although these can control a number of things so one should be careful with that.
**File Extensions**
Spoiler!
As with any game, PSO2 has a number of file types to think about. While I can't explain all of them, I'll try to explain what I know.
.acb - Contains sound effects in what I believe to be encrypted ADX2 format.
.act - Defines actions for an objects.
.aqc - Defines camera movement. You'll find these for cutscenes. Bosses tend to have them for their intros.
.aqe - Defines effects. These can be swapped with ease although you may wish to look inside them so you can also see what files are necessary for them to look proper. The effect will use all files of that name, regardless of extension (ex. if it calls for "eff_model" and the folder contained eff_model.aqp and eff_model.aqn, you would copy both of these, along with whatever textures the model used).
.aqm - Animation files.
.aqo - See directly below, but without certain header info.
.aqp - PSO2's main model format. This has VTBF and NIFL variants. The former is as of this writing the only type we can completely edit, although only so long as the model has rigging/bones. If it doesn't have this, we can still usually edit them using another file as a stand in, but this can have mixed results and works best with models that stay static such as most weapons. Can contain multiple level of detail model variants, although these can be removed.
.aqn - Defines node placement for models. These are used for effect spawning and placement, among other things, in relation to the model's origin position.
.aqv - Defines texture animations for models. These can be for anything from rare drop colorations to eye textures for pets on a model. Generally, they're rather specific and can't simply be swapped around.
.bti - Defines things such as what effects to use for an animation and other properties.
.dds - The texture files PSO2 uses (on PC at least). The game naturally uses DXT1, DXT5, and on rarer occasions DXT3 and not so clearly named variants. The repacker really only likes DXT1 and DXT5 and certain models REQUIRE one or the other to avoid crashing. DXT5 can usually be used over DXT1, however. You can find out which a .dds is with a hex editor. Resave as DXT5 if you find a DXT3 or seemingly unnamed type to avoid crashes.
.fltd - Defines physics properties for parts of models that use them (these are your jiggle physics, people)
.fig - Defines parameters for and actions for various objects. Important.
.lua - Compiled lua code used for defining parameters. Sega's license files imply it was probably compiled with tolua++ (although at some point those text files weren't provided in new installs).
.lve - A parameter file. Unknown what exactly it does, but they're important.
.pgd - A parameter file for areas.
.prm - Effect file parameters.
.rgn - A parameter file. Unknown what exactly it does, but they're important.
.set - Defines layouts for noninteractable objects in an area.
.snd - Defines parameters for its partner acb file's sound effects.
.tcb - Defines area collision.
.text - I'll let you guess.
.trm - Defines certain object parameters for an area.
.trn - .aqns, but for terrain/area models.
.trp - Terrain/Area models. Functionally identical to an aqp file for the most part with minor differences. These can actually be replaced with .aqp files in all cases I've tested as well with no ill effects. They even work with the model tools we have in the same way, although TROs may need to be changed to AQOs in a hex editor for some cases.
.trv - .aqvs, but for terrain/area models.
.trw - See directly above, but with more header info.
.wtr - Defines parameters for skybox weather.
There are more file types, but most are other parameter types that we don't currently know how to edit anyways.
I may eventually write more about importing models with bones like costumes, but for now this should help I hope.
Feel free to post or PM for help if needed and I'll respond when I'm available.
Connect With Us