Jump to content

Intro to CoH Client-Side Modding


_NOPE_

Recommended Posts

Welcome (I hope!) to the CoH Modding community!

 

I myself am not really much of a modder, as I don't have any kind of artistic skills. I'm a code monkey, so I spend my time looking at 1s and 0s and trying to figure out how to make them work for people. My CoH Modder Tool (http://www.cityofplayers.com/coh-modder/) is merely a platform for easy mod installation and distribution. It doesn't actually help anyone CREATE mods, just package them and send them out into the world where others can make use of them.

 

Here's my long overall summary of how CoH Modding works. There's two main types of modding - server modding, and client modding. To do server modding, well... you have to learn how to run your own server. I can't help you at all there, except point you over to the fine people at Ourodev, who are in the (perpetual it seems) process of figuring out the ancient spaghetti code of how Cryptic's CoH engine works.

 

What I've been working on so far have all been client mods, mods that affect how you see and hear the game world. And any mod that you make to your client only affects your client, and nobody else's (unless they've made the same mod to their system). The primary method to create such mods is by replacing in-game assets with your own customized assets. The original CoH game developers did that (perhaps by accident, perhaps by design) by opening up the /data subdirectory. If you dig through the game code, you can find all of the references to graphics and sounds... eventually. But, as I said earlier, it's spaghetti code, and the challenge is trying to figure out WHICH assets to replace, and WHERE to put them in you local /data directory to make any specific change to what you see and hear in the game world. And that knowledge is all "hidden" within the game's source code (which you can find on Ourodev's site... somewhere).

 

I have tried to make this as simple as possible by writing a couple of text parsing programs that sift through the game's code and ".def" files (where most of those asset references are stored - think of it like an "Access" database, a collection of files that store the resource link data) and try to centralize that information as much as possible. From my efforts, I created the Rosetta Stone for sound references, and the Visual Rosetta Stone for graphics references. Now the big caveat with these Excel files is that they are the result of a "snapshot in time" of the game's files as of the moment of Leandro's original release of the game code. And most of those references are fine, and will work... except for anything added into the system by the Homecoming team.

 

Why's that? Because nobody's yet created a single consistent way to extract client side data from their original formats into the final original source files. The closest to have come to this that I've seen so far is @therealtitanman who made a pretty good guide on how to create mods for powers' particle effects. Here's the basic steps that you have to perform to successfully make a client side mod of the game:

 

  1. Extract the pigg files in your game's client directory. I believe for CoH Homecoming the default is "C:\Games\Homecoming\assets\" and all of it's subdirectories. I believe the most current and up to date tool for doing this is Ourodev's Piglet, which you have to sign up for an account with them to access the code to compile your own copy. Or, if you want to trust me, here's a link to a compiled version of the 64 bit binary and required libraries.
  2. Poke around all of those dePigged directories and subdirectories and try to figure out where the asset you want to change is located at. You can use my Rosetta Stones listed above if you wish to try to help narrow down your search, but really it's kind of trial, error, and a whole lot of digging and guessing to try to figure out which assets to replace. For sounds, everything will be under the "..\Data\sound\ogg\" folder. For graphics... well, honestly, they could be anywhere in there. There's different locations for different kinds of graphics files. "..\Data\texture_library\" is a big one though to get you started.
  3. If you want to modify or change a sound in the game, you can stop here. It's as simple as finding the sound file that you want to modify, modify it, and then place it in your client's /data directory in the SAME RELATIVE PATH that you found the sound file in for testing. By default, that's "C:\Games\Homecoming\data\". So, for one example, to replace the "glowie" sound of a mission objective with something else, put your modified .ogg file at this location (by default): "C:\Games\Homecoming\Data\sound\ogg\FrontEnd\Objective_loop.ogg". When you run the game the next time, the game will find this asset, and use it to replace the default asset for this sound.
  4. HOWEVER, if it's graphics you want to replace, there's a few extra steps. Graphics (mostly) come in the form of ".texture" files, which are basically metadata files that contain some header information only useful to programmers, along with the actual binary code of the source image file itself embedded inside the texture file. To assist with that part, I created the DeTexturizer program to let people "DeTexturize" (think "UnZip" like WinZip), and "ReTexturize" a texture file. This should export the file to its original source file into the same directory as the .texture file. From there, you can then modify it (as @therealtitanman shows in his guide), save the modified file, then "ReTexturize" the file and place it in the appropriate place in your /data directory. For one example, to replace the Tier 3 "Rage" inspiration with your own modified one, you'd find the dePigged file "texture_library\GUI\Icons\Inspirations\Inspiration_Damage_Lvl_3.texture", you'd DeTexturize it, modify the file in your favorite graphics program, save it, ReTexturize it, then save the resulting file to the (by default) "C:\Games\Homecoming\data\texture_library\GUI\Icons\Inspirations\Inspiration_Damage_Lvl_3.texture" location.

Now, some files are more complicated, like "geo" files that affect the world's geometry itself... I haven't gone that road to figure that one out. If you go down that route, you're on your own, you'll be a trailblazer!

 

Anyways, once you're happy with your game mod, you can then use my CoH Modder program to package it up into a mod file and put it on my server, where anyone else that uses CoH Modder can get at it and install it into their CoH installation!

 

That's the most concise summary I can give right now of the entire CoH Modding scene, for you and anyone else reading that might be interested in getting into modding.

 

I will be updating this guide as I have time to, to add additional information and clean up any messes, as this began as a response to someone else in another thread - I just didn't want it to get "lost" within just that thread, and I wanted it to be in a place where I could find it again more easily for future updating. Please let me know if you have any comments, questions, or concerns about this "guide".

  • Like 2
  • Thanks 1
  • Thumbs Up 1
I'm out.
Link to comment
Share on other sites

As for how to extract those .pigg files in a bit more detail, here's a mini-guide from a message I sent to someone else:

 

All of the piggs should be located at "C:\Games\Homecoming\assets\" and its subfolders by default.

 

All of the other Pigg Viewers are kind of old, buggy and out of date. I reccommend Piglet by Cattan over at OuroDev (requires registration) to get the source and build it for yourself in Visual Studio:

https://wiki.ourodev.com/view/Piglet

 

Or, if you trust me, you can take my build of it straight from my server:

http://www.cityofplayers.com/files/CoH_Community_Tools/Piglet-Compiled.zip

 

Here's then the process to extract things:

 

Choose File > Open Folder:

image.png.f8766b5dab513a243ebb7a245c702070.png

 

Choose the folder that you wish to "DePigg" - most of the "new" stuff appears to be under the "Live" subdirectory:

image.png.a2d14a3dae6695a64b8102bf7ae74096.png

 

Once it's opened that directory, you can browse within Piglet's browser if you wish, but I prefer to immediately extract the files to another folder on my hard drive, like this:

image.png.4af242adfa92064203dc9be2e9d2d31e.png

 

image.png.ba8a1f236f0b5b6d95f9298061863d6d.png

 

And then... VOILA! There the files are:

image.thumb.png.88e0e324db05be18c64300efb0603c4b.png
 

  • Like 1
I'm out.
Link to comment
Share on other sites

  • 7 months later

Necro'ing this thread, I hope the question is relevant enough to warrant it!

 

I'm stuck at the extraction phase. I can't get any of the older pigg viewers to work, I've never touched Visual Studio before, and if there's a guide on how to compile Piglet on OuroDev, I can't get at it because the authentication emails simply aren't coming through.

 

Do you know of, or could provide, any guidance on how to slap Piglet together? There's so many audio tweaks I want to make, but I can't get at the darn files 😩

Link to comment
Share on other sites

2 hours ago, Kismet Cowboy said:

Do you know of, or could provide, any guidance on how to slap Piglet together?

 

OuroDev used to provide a compiled Piglet executable, and it's a bit of a shame that they stopped doing so. PK provided a link to a compiled version hosted on his server in the post immediately above yours.

Link to comment
Share on other sites

  • 1 month later
  • 3 weeks later
On 5/24/2022 at 11:04 AM, Kismet Cowboy said:

Necro'ing this thread, I hope the question is relevant enough to warrant it!

 

I'm stuck at the extraction phase. I can't get any of the older pigg viewers to work, I've never touched Visual Studio before, and if there's a guide on how to compile Piglet on OuroDev, I can't get at it because the authentication emails simply aren't coming through.

 

Do you know of, or could provide, any guidance on how to slap Piglet together? There's so many audio tweaks I want to make, but I can't get at the darn files 😩


@AboveTheChemist, I had the same issues that @Kismet Cowboy emails from Orodev not flowing through, and glad I'm not the only one.
I saw the one from @The Philotic Knight's server that is compiled, but when I went to run it I'm getting this error:
image.png.03729d9b766d222047281cb27ee10750.png
The interesting thing is that exact DLL is already located in System32 in Windows.
Anyone have any ideas on how to get Piglet to work?

Link to comment
Share on other sites

4 hours ago, agentx5 said:


@AboveTheChemist, I had the same issues that @Kismet Cowboy emails from Orodev not flowing through, and glad I'm not the only one.
I saw the one from @The Philotic Knight's server that is compiled, but when I went to run it I'm getting this error:
image.png.03729d9b766d222047281cb27ee10750.png
The interesting thing is that exact DLL is already located in System32 in Windows.
Anyone have any ideas on how to get Piglet to work?

What's your architecture? x86 or x64? Operating System and version? Because these DLL files are VERY specific to certain operating systems and architectures. And if you have the wrong version of the libraries for your system, they won't work, or be recognized by the system.

  • Thanks 1
I'm out.
Link to comment
Share on other sites

  • 4 weeks later

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...