Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Basic Gigantic Support #79

Merged
merged 11 commits into from
May 13, 2024
Merged

Basic Gigantic Support #79

merged 11 commits into from
May 13, 2024

Conversation

HyenaCoding
Copy link
Contributor

Adds rudimentary support for Gigantic / Rampage Edition.
Gigantic files at least load now but IDK if they're loading well at all.
I think the package header deserialization is correct, I spent a while reading into header structure and this is what seems to match the best.

I don't think objects deserialize properly, and JsonRefProperty likely needs more to make work properly, but I'm not entirely sure what needs doing.

@HyenaCoding HyenaCoding mentioned this pull request May 3, 2024
@EliotVU
Copy link
Owner

EliotVU commented May 4, 2024

Thanks! I will push some improvements to the UJsonRefProperty soon.

@EliotVU EliotVU added game Game specific ue3 labels May 4, 2024
@EliotVU EliotVU self-assigned this May 4, 2024
@EliotVU EliotVU added this to the 1.6.0 milestone May 4, 2024
@HyenaCoding
Copy link
Contributor Author

HyenaCoding commented May 5, 2024

I grabbed some of the UPKs that seem more important, if that's of any help.

Core and Engine are obviously the most important, and RxGame is the "main game" which contains pretty much all the classes that get inherited from.
There's a few that looked interesting though that may be meaningful, such as GameFramework and Persistent Cooker Data.
There's also JsonCache and GuidCache which may have significance with how much the game uses JSON objects.

I also added a couple files for "hero" characters as something I noticed is that they seem to contain template objects for stuff like thier stats e.g PawnStatsManager, PawnStealthManager, etc.

These don't seem to deserialize properly, and throw OutOfRange exceptions, though in one case I saw an example decompile and it seems like they're all designed to just move JSON data into or out of an object, it also seems that it just isn't reading them correctly as template classes.

Format just seems to be
0x0000 (Indicates it's a component?)
Name Index if it's part of a default pawn's class, if it's stat modification due to a hero's upgrade then it's absent
Net Index
A series of properties [Name Index] [Property Type Name] [Size] [Count] Value
Name index which corresponds to "none"

https://drive.google.com/file/d/1FqU9WliZZcr5JGao8dF7N4fEK-5ZjAqe/view?usp=sharing

@EliotVU
Copy link
Owner

EliotVU commented May 5, 2024

The object PawnStealthManager is apparently a UComponent template, these types are usually undetectable without a complete picture of the hierarchy :/

Not much data in there btw:
image

@EliotVU
Copy link
Owner

EliotVU commented May 5, 2024

Alright, IsTemplate() appears to be reliable for such objects!

@EliotVU
Copy link
Owner

EliotVU commented May 13, 2024

I'll merge this now, I think the support is reasonable enough for now, further improvements are always welcome anytime!

Current issues:

  1. Unknown syntax or meaning behind 3 (or more) new primitive cast byte-codes.
  2. Some functions throw errors (rare)
  3. Missing support for JsonCache etc.

@EliotVU EliotVU merged commit cbbfff3 into EliotVU:master May 13, 2024
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
game Game specific ue3
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants