PDA

View Full Version : Looking at Modding



Shacker
29th May 2006, 04:10
I figured this would go here... let me know if I'm posting this in the wrong section or something. Anyways, I just played through once and (obviously) enjoyed myself, so now I'm going back and looking at the game's file structure and attempting to see if modification is possible/viable. Anyone else want to work on this? I've got a bit of coding expirience, but I suck at reverse engineering and such... Obervations so far (I'm not going to talk about the executable as all I've found are some strings of mild interest and don't really have anything worth elaborating on... plus it's a bit off on the legal level -- perhaps?):
Starting down from the directory structure:
Movies
-Just movies in here, its subdirectory just has movies too. Straightforward, bik formatted movies for the cutscenes and such. Subdirectory just has a few more movies.
Scenes
-ah... this is where it gets interesting. Each 'scene' (range Mnn from M00 to M13, with scenes 'HitmanBloodMoney' and 'saveandcontinue' in the root dir)
-each scene is an independent, self sufficient entity. scenes can be linked (not sure on the methodology, but there are premission, postmission, news type scenes, I don't believe the names are hardcoded as M00 has a 'M00_albino' scene


-Scene file listing (using example of 'M01_main'):
--M01_main.WAV > wavepoints?
--M01_main.WHD
--M01_main.ZIP > standard zip style archive, contents listing below -- not sure if the zips can be extracted and read as files anywhere... would make testing easier, but after a few tests I haven't found anything
---menu > xml files that indicate menu position, totally moddable (presumably), I'm just not too interested
----inventor.xml > inventory screen
----default.xml > default gui info?
----briefing.xml
----ingame.xml > ingame gui overlay
----online.xml > online stats thing
---Scenes
----M01
-----M01_main.SGD > always really small, some kind of id/version indicator?
-----M01_main.ZGF
-----M01_main.SUP
-----M01_main.RMC
-----M01_main.RMI
-----M01_main.SGP
-----M01_main.LOC > this one I deduced after some file swapping and poking around in a hex editor to be the localised string table. a startling amount of content appears to be duplicated amongst levels, which will actually be good for modding individual missions independently
-----M01_main.BUF
-----M01_main.OCT
-----M01_main.GMS
-----M01_main.MAT > materials archived somehow?
-----M01_main.SND > sounds archived somehow?
-----M01_main.PRP
-----M01_main.ANM > animations archived somehow?
-----M01_main.PRM
-----M01_main.TEX > textures archived somehow?
---Shaders
----PC
-----FX > all DX style shaders, the fx files are plain text. In retrospect I wouldn't have typed this, but messing with the shaders may prove fun...
------.get_date.dat
------FurBase13.fx
------StandardCommon.fx
------Bad.fx
------StaticShadowTextureAdditive.fx
------StaticShadowTextureShadox.fx
------StaticShadow.fx
------ScatterBillboard.fx
------MesoStructure3D.fx
------Skin00.fx
------FurShells13.fx
------FurFins13.fx
------Skin30.fx
------Mirror.fx
------Standard30.fx
------Sprite.fx
------GlassSurface.fx
------Cloth20.fx
------Cloth30.fx
------Glow00.fx
------Anisotropic13.fx
------Glow13.fx
------Glow20.fx
------Cloth13.fx
------Skin13.fx
------Glass.fx
------Anisotropic20.fx
------Skin20.fx
------WaterSurface.fx
------Standard00.fx
------Common.fx
------Standard20.fx
------Standard30.fx
---notoriety.xml > gains for notoriety, this file is duplicated everywhere
---difficultysettings.xml > modifiers for difficulty, interesting to see the exact differences in AI behavior among difficulties
---money.xml > money cost for various services


In scriptcs/GameRelease/ you have dll files, compiled for the game. These appear to control the behavior behind npc ai and interactions with objects. To observe exactly what it affects, try swapping one of the missions for another (or the hideout). You'll notice npcs no longer react except by playing stock animations then freezing, and objects (such as the hideout's exit door) don't work. This also unfortunately means that modding is going to be very limited without developer aid, as decompiling/hex editing the dlls will be... challenging.

If there's someone else working on this or some forum where this is prevalent or something, I'd like to know. I'll post from time to time to update on anything I find (this is a preliminary post and as such there isn't much actual content...)