Gildor's Forums

Author Topic: [CookedXenon] Map debug; uncook; reverse engineering etc.  (Read 19307 times)
MaKiPL
Newbie
*
Posts: 7


View Profile
[CookedXenon] Map debug; uncook; reverse engineering etc.
« on: May 19, 2013, 00:55 »

Hello,
at first I'd like to say that you're awesome Gildor! Without you, I wouldn't gain so much Unreal Engine experience!

I'm commercial Level Designer/ Game Designer on Unreal Engine III (UDK). I'm trying something impossible - porting console exclusive to PC. I'm enough experienced to understand all facts of Unreal Engine schemes and etc. but still I need help, and you're the best here Gildor!

So, I started by unpacking .ISO file from Silent Hill: Downpour (Xbox360). By doing this I ended with bunch of .XXX files and some additional .UPK's mostly of them are just CookingData. I've made a mass decompress, uncook and batch export of all files there. I've ended with exported .PSKX/.PSK/.TGA etc. files that I've already imported to my UDK instance (that was about 7,000 shit, took me hours to import/ save). Today I did decompress cooked scripts. I made it to decompile all possible scripst there so I ended with 'bout 2,700 .UC classes. I'll write config files and try to compile all of 'em on my UDK instance and if any error - try to rewrite conflict class (not a big problem, already have experience, because I'm remaking Postal 2 on UDK so I had to rewrite many Unreal 2.0 classes to UDK). But there is a still problem I can't solve. I've got everything (without sounds because of this idiot Xbox360 sound compression) without maps.

Maps scheme example:
Name: 00_pe_diner.xxx
GUID: c00577e3-8291-89b4-67e8-fc45420c5598
Ver: 756/ engine 7026/ cook 113
Cooked: True
Build: Default

Map Tree:
00_pe_dinner.xxx (main? Core map?)
00_pe_diner_ai.xxx (With _ai prefix - Probably a part of map with AI control due to level transmission and zones on map. I see also event meshes like doors and collectibles too; physicalMaterial referrences too; RigidBodies too; Particles; SoundCue referrence)
00_pe_diner_sd.xxx (With _sd prefix - Shitload of soundNodes and it's build)

And log from UE Explorer (I know it's not related to UModel, but it's just to show map build log from this software)

PostProcess: (Good!)
UberPostProcess example decompiled build:
Code:
begin object name=OurUberPostProcessEffect_12 class=OurUberPostProcessEffect
    SceneShadows=(X=0.0,Y=0.0,Z=0.0)
    SceneHighLights=(X=2.0,Y=2.0,Z=2.0)
    SceneMidTones=(X=1.250,Y=1.250,Z=1.250)
    SceneDesaturation=0.80
    NodePosY=102
    NodePosX=314
    DrawWidth=183
    DrawHeight=47
    OutDrawY=136
    InDrawY=136
object end
// Reference: OurUberPostProcessEffect'ppr_postprocess.07_Otherworlds.ppr_ao_otherworld_low_flash02.OurUberPostProcessEffect_12'

PostProcesses are not problem. But the main problems are I need location (X, Y, Z - world) in World for StaticMesh'es placements and BSP Draw3D, position, rotation etc.

This is example build of decompiled StaticMesh on map:

Quote
Outer: InterpActor //So, I know that this StaticMeshComponent is Mover; Probably Sky? Or any other RigidBody
ObjectSize: 401 // 401 of what!?
Object Offset: 1318111
Refference: PersisentLevel //I see it's out of Level Streaming zone.

Quote
Table Index:936
Table Offset:0x00017B45
Table Size:0x00000044

begin object name=StaticMeshComponent_12 class=StaticMeshComponent
    // This object has no properties!
object end
// Reference: StaticMeshComponent'TheWorld.PersistentLevel.InterpActor.StaticMeshComponent_12'

Another StaticMesh instance from _AI, this time more decompiled info:
Quote
Table Index:5054
Table Offset:0x00073E9D
Table Size:0x00000044

begin object name=cellar01_din_ao class=StaticMesh
    begin object name=RB_BodySetup class=RB_BodySetup
        PreCachedPhysDataVersion=34079889
        AggGeom=ConvexElems=/* Array type was not detected. */,VertexData=/* Array type was not detected. */,
/* Exception thrown while deserializing AggGeom
System.ArgumentOutOfRangeException: Indeks był spoza zakresu. Musi mieć wartość nieujemną i mniejszą niż rozmiar kolekcji.
Nazwa parametru: index
   w UELib.UName.Deserialize(IUnrealStream stream)
   w UELib.UObjectStream.ReadNameReference()
   w UELib.Core.UDefaultProperty.Deserialize()
   w UELib.Core.UDefaultProperty.DeserializeDefaultPropertyValue(PropertyType type, DeserializeFlags& deserializeFlags) */
    object end
    // Reference: RB_BodySetup'env_din01_sm.cellar01_din_ao.RB_BodySetup'
    BodySetup=RB_BodySetup
    LightMapCoordinateIndex=1
    LightMapResolution=16
object end
// Reference: StaticMesh'env_din01_sm.cellar01_din_ao'

Now I know what's this object, what's LightMap setting (not really neccesary). Also, now I know gull path to model, but still there's not the most important info about model Draw3D, rotation and position. So, Gildor and anyone here:
how can I get info about Rotation, Draw3D, Scale or position of SM on map? I remember I had a MapInfo software when I was having fun with L2 modding (about 3-4 years ago, so I don't remember name or anything that can help me to find it) that shown me every object instance in map.

Is there any software which one can show some important info about UE3 map and it's build?
Is there any way to see SM's infos on map?

Thank you very much!


EDIT: Opened map by HexEditor and saw that there's uncompiled Kismet nodes, example:
Code:
05 42 6F 6F 6C    - |Bool
*Shit load of compiled HEX*
08 54 75 72 6E 20 4F 6E   -   Turn On
« Last Edit: May 19, 2013, 01:12 by MaKiPL » Logged
Gildor
Administrator
Hero Member
*****
Posts: 7897



View Profile WWW
Re: [CookedXenon] Map debug; uncook; reverse engineering etc.
« Reply #1 on: May 19, 2013, 01:11 »

I usually suggest in such cases to take a look at ME3 Explorer. It's the most advanced software which has level viewing functionality, but it's for a single game only. Fortunately you may use it's source to try to adopt it for the game you're working on.
Logged
MaKiPL
Newbie
*
Posts: 7


View Profile
Re: [CookedXenon] Map debug; uncook; reverse engineering etc.
« Reply #2 on: May 19, 2013, 01:50 »

It's a bit too complex for me to rewrite ME3 Explorer to use with a game I'm working on. I tried to do anything I could, but there's still an error about unsupport. Any other chances of level structure dumping?
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7897



View Profile WWW
Re: [CookedXenon] Map debug; uncook; reverse engineering etc.
« Reply #3 on: May 19, 2013, 13:27 »

Any other chances of level structure dumping?
No, only with writing something special for that.
Logged
MaKiPL
Newbie
*
Posts: 7


View Profile
Re: [CookedXenon] Map debug; uncook; reverse engineering etc.
« Reply #4 on: June 01, 2013, 01:29 »

Made lot of research, also tried with PS3. PS3 version is very clear, with catalog hierarchy and sound support. Actually I'm trying to code UE3 map dumper by my own as I found some new things after working on map file with HEX editors and etc., wish me luck.
Logged
warrantyvoider
Full Member
***
Posts: 109


View Profile
Re: [CookedXenon] Map debug; uncook; reverse engineering etc.
« Reply #5 on: June 01, 2013, 01:47 »

all you need to do is to look for an object (always just one per package) of class "Level", it will contain a list of objects. if you follow these objects down to the static meshes you can dump that level with all positions and stuff

greetz WV
Logged
MaKiPL
Newbie
*
Posts: 7


View Profile
Re: [CookedXenon] Map debug; uncook; reverse engineering etc.
« Reply #6 on: June 25, 2013, 22:23 »

all you need to do is to look for an object (always just one per package) of class "Level", it will contain a list of objects. if you follow these objects down to the static meshes you can dump that level with all positions and stuff

greetz WV

Oh, thanks. Got to try this ASAP.
Logged
MaKiPL
Newbie
*
Posts: 7


View Profile
Re: [CookedXenon] Map debug; uncook; reverse engineering etc.
« Reply #7 on: June 27, 2013, 15:19 »

Bad news... I just found that:

http://wiki.beyondunreal.com/UE3:StaticMeshCollectionActor_%28UT3%29

Some shitty class made during cooking... Awesome, now it's impossible to me to dump any info about location of StaticMesh or SkeletalMesh. All I have is:



And SM_CollectionActor comes with:

Code:
Table Index:1064
Table Offset:0x0001E7F9
Table Size:0x00000044

begin object name=StaticMeshCollectionActor_3228 class=StaticMeshCollectionActor
    StaticMeshComponents=/* Array type was not detected. */
    Tag=StaticMeshCollectionActor
object end
// Reference: StaticMeshCollectionActor'TheWorld.PersistentLevel.StaticMeshCollectionActor_3228'

So I see I would have to play Silent Hill: Downpour on PS3 and next to it have a computer in order to recreate map in 1:1. That's bad. At least I have everything else like SoundNode expression setup and even Kismet sequence.
Logged
warrantyvoider
Full Member
***
Posts: 109


View Profile
Re: [CookedXenon] Map debug; uncook; reverse engineering etc.
« Reply #8 on: June 27, 2013, 16:19 »



you got pm Cheesy

greetz WV
Logged
KJTR
Newbie
*
Posts: 2


View Profile
Re: [CookedXenon] Map debug; uncook; reverse engineering etc.
« Reply #9 on: August 19, 2014, 20:27 »

Sorry for bringing up and old topic but how did you decompress, uncook, then batch export the files that were not AnimSet, MaterialInsatanceConstant,  SkeletalMesh3, StaticMesh3, Texture2D, TextureCubes. Because that is the only thing being exported when i use UEmodel gui.
« Last Edit: August 19, 2014, 21:03 by Gildor » Logged
Gildor
Administrator
Hero Member
*****
Posts: 7897



View Profile WWW
Re: [CookedXenon] Map debug; uncook; reverse engineering etc.
« Reply #10 on: August 19, 2014, 21:04 »

Other Unreal formats doesn't have appropriate file format to save to.
Logged
KJTR
Newbie
*
Posts: 2


View Profile
Re: [CookedXenon] Map debug; uncook; reverse engineering etc.
« Reply #11 on: December 10, 2017, 10:15 »

Any other chances of level structure dumping?
No, only with writing something special for that.
If someone offered you a thousand USD to make a full unreal engine 3 file decooker would you do it?
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7897



View Profile WWW
Re: [CookedXenon] Map debug; uncook; reverse engineering etc.
« Reply #12 on: December 10, 2017, 12:36 »

"Full decooker" would require at least a year of work. I don't want to lose a year of my life.
Logged
DarthDoodles
Newbie
*
Posts: 3



View Profile
Re: [CookedXenon] Map debug; uncook; reverse engineering etc.
« Reply #13 on: January 12, 2020, 03:15 »

Made lot of research, also tried with PS3. PS3 version is very clear, with catalog hierarchy and sound support. Actually I'm trying to code UE3 map dumper by my own as I found some new things after working on map file with HEX editors and etc., wish me luck.


Hi been following this post for a while were you successful with your endeavors to make a map dumper?
Logged
Jump to:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC
Leviathan design by Bloc | XHTML | CSS