GreedFall
0 of 0

File information

Last updated

Original upload

Created by

Dheuster

Uploaded by

Dheuster

Virus scan

Safe to use

38 comments

  1. Haasva
    Haasva
    • member
    • 0 kudos
    Anyone found a way to locate and extract item icons from the game? So far I haven't been able to find anything using the pssg extractor

    EDIT: Found. Greedfall\packs\datapc_initial.spk\gui\atlas\xui_skin.pgz

    Contains a pssg that contains a dds. USe Ego PSSG Editor to extract the binary file of that DDS, copy it to a new HxD file, save it as a .txt, then use a python scrypt to create the final .dds :
    (requieres "pip install imageio")

    import numpy as np
    import imageio
    def binary_to_dds(binary_file, width, height):
        # Load binary data from file
        with open(binary_file, 'rb') as f:
            binary_data = f.read()
        # Assuming each pixel is represented by 4 bytes (RGBA)
        # Modify this based on your actual pixel format
        pixel_size = 4
        # Calculate total expected size of binary data
        expected_size = width * height * pixel_size
        # Check if the binary data size matches the expected size
        if len(binary_data) != expected_size:
            raise ValueError("Incorrect binary data size")
        # Reshape the binary data into a numpy array
        pixel_array = np.frombuffer(binary_data, dtype=np.uint8)
        pixel_array = pixel_array.reshape((height, width, pixel_size))
        # Save the image as DDS
        imageio.imwrite('output.dds', pixel_array)
    def main():
        # Specify the path to the binary data file
        binary_file = 'binary.txt'
        # Specify the dimensions of the image (width and height)
        width = 2048  # Replace with the actual width of your image
        height = 2048  # Replace with the actual height of your image
        # Convert binary data to DDS
        binary_to_dds(binary_file, width, height)
    if __name__ == "__main__":
        main()

  2. notrustk
    notrustk
    • premium
    • 34 kudos
    I was able to replace a texture in Steelrising, thank you for your guide and tools
  3. Lacunykt
    Lacunykt
    • member
    • 2 kudos
    Hi! Thank you a lot for these PSSG tools; they have worked excellently and they have helped me not only make some personal mods of my own but also to understand more about modding in general. For real, I've read the included guides from top to bottom at least thrice just for fun. You're awesome!
  4. Acrobatlord
    Acrobatlord
    • member
    • 0 kudos
    umm is it just me...is there an idea to add faster run speed?....i do like the game but ALLL the walking makes replaying a bit...cubersome.
  5. nonamebatbai
    nonamebatbai
    • member
    • 0 kudos
    font_default_big_m0.pgz
    can someone help me to convert font file .pgz to .dds file for editing??
  6. nonamebatbai
    nonamebatbai
    • member
    • 0 kudos
    Can someone help me how to edit .pgz font file?
  7. xXNickIAmXx
    xXNickIAmXx
    • member
    • 0 kudos
    Hello! Could you please help? I am trying to not trigger MQ15(find Constantin with shaman) and to not fail sqau01(Private property(woodcutter_camp)) so I could talk to Courcellion. 
    Mod + Save file
    1. Dheuster
      Dheuster
      • premium
      • 603 kudos
      Take a look at the "IV.1  > > > >  QuestGraph" section" of the Modding Tips. These things likely update when you enter a map or a trigger zone (Sometimes a dialogue graph. Depends on when/how MQ15 triggers). So you will need to grep the (xmlified) code for references to the quest/graph and try to short cut the trigger or level loader with some more conditions. Preventing something from firing is not so hard. Preventing the game from breaking as a result.. that is much harder =). Whatever you do not fire will need to be fired at a later time, so you will need to figure out how you want to handle it. For example, do you update the quest/quest log to direct them to Courcellion and then trigger MQ15?
  8. onlyhere4pizza
    onlyhere4pizza
    • member
    • 2 kudos
    Hey, I know this is a long shot, but do you think this might work on The Technomancer, too? Both games use the same engine (I think). I'm just curious.
    1. Dheuster
      Dheuster
      • premium
      • 603 kudos
      Pssg is a compression format that is used by several games. So the pssg extraction/creation tools would probably work if Technomancer uses Pssg. However the Modding Tips may not apply as the details of the Spider Engine probably evolved between the games.
    2. onlyhere4pizza
      onlyhere4pizza
      • member
      • 2 kudos
      Thanks for getting back to me! I don't have much experience, but I'm interested in learning and seeing what I can do.
  9. Fabiusco
    Fabiusco
    • member
    • 10 kudos
    Hi, sorry to bother you, but i'm having an hard time making your scripts work...
    I installed Python 3, then I exctracted the pgz files I needed with 7zip, copyed your *.py files in the dragndrop folder and I tryed to convert them to pssg files, but every time i get this output without any result:


    Processing File
    [D:\Programmi\Steam\steamapps\common\GreedFall\datalocal\equipment\hum\hea\textures\#pssgTools\dragNdrop\hea_hum_vasco_01_diff.pgz]

    Usage:
    pssgConverter.py [options] infile [outfile] [pschemaFile]

    Flags:
    -h : detailed usage/help
    -i#: indent XML # spaces (ie: -i4)
    -a#: set analysis level to # (0 = default)
    -s : safe mode (use if you see warnings)
    -f : forcing conversion (even if no change detected)
    -o : force create/overwrite pschema (even if it exists)
    -p : show progress (if script takes more than 5 sec)
    -d : print debug feedback
    -t : print trace feedback
    -toXML: force conversion to xml (Assume file is NOT XML)
    -fromXML : force conversion to pssg (Assume file is XML)

    Examples:
    Convert PGZ to XML: (Creates foo.pgz.pssg, foo.pgz.xml and foo.pgz.pschema)
    pssgConverter.py foo.pgz

    Convert XML back to PGZ: (Copies foo.pgz -> foo.pgz.bak, updates foo.pgz)
    pssgConverter.py foo.pgz.xml
    Press a key to continue . . .



    The same goes for every other cmd files, what am I doing wrong?
    1. Dheuster
      Dheuster
      • premium
      • 603 kudos
      So I started by doing the following to confirm it works (and it did for me):

      Spoiler:  
      Show

      Created the directory: ...\datalocal\equipment\hum\hea\textures\tmp\

      Copied the .pgz there, the converter and the drag-n-drop file, so that the directory looked like:

      ...\datalocal\equipment\hum\hea\textures\tmp\hea_hum_vasco_01_diff.pgz
      ...\datalocal\equipment\hum\hea\textures\tmp\pssgConverter.py
      ...\datalocal\equipment\hum\hea\textures\tmp\pssgConverterDragNDrop.cmd

      Then using Explorer, dragged "hea_hum_vasco_01_diff.pgz" ontop of "pssgConverterDragNDrop.cmd". It worked. I got the following:

      Processing File [...datalocal\equipment\hum\hea\textures\tmp\hea_hum_vasco_02_diff.pgz]
      Extracting [hea_hum_vasco_02_diff.pgz] -> [hea_hum_vasco_02_diff.pgz.pssg]
      Converting [hea_hum_vasco_02_diff.pgz.pssg] -> [hea_hum_vasco_02_diff.pgz.xml]
      Press any key to continue . . .

      I also erased the extracted files and did it again by dragging "hea_hum_vasco_01_diff.pgz" on top of "pssgConverter.py" and it also worked.


      I'm not sure what is going on in your case, but my best guess is that an OS compatibility issue with the .cmd file. I use Windows 10.So maybe you are using a different version of windows and it is not passing the filename to the script correctly? Pretty simple to test. Just run it from command line. IE: Search for "cmd", Use "cd" to change to the directory manually and run it from command line: I walk through how to do this in the readme.

      If Python is properly installed, you may also be able to simply drag the file onto the .py file instead of the .cmd.

      It is also possible you didn't restart your computer after installing Python. But the message you are showing looks to me like python is running, which is why I don't think that is the issue.
    2. Fabiusco
      Fabiusco
      • member
      • 10 kudos
      I tryed to restart my PC as first option but it didn't help.
      I also followed your tips step by step, but nothing changed, then I tryed to to istall older versions of Phyton without any results.
      I have windows 10 too... the only ringhing bell that something is't working as expected is that I can't drag and drop directely on *.py file, but as I mentioned before, I installed more than one version of Phyton and none of them gave me that option.
      If you have any idea, please, share it with me.
      In any case i will try on a different PC when I will have the chance.
    3. Dheuster
      Dheuster
      • premium
      • 603 kudos
      It appears (from your feedback) that the script is running. It is either not seeing the file you are passing in or some sort of exception is getting thrown when it tries to open the file or create the output files. First thing to do is make sure the directory you are operating in is NOT marked read-only. Go to the parent directory, right click the directory you are operating in and select properties. If the [X] read only flag is checks, the script is probably dying when it tries to create the output files. The read-only status of the input file shouldn't matter, but it doesn't hurt to check that as well.

      If that does not appear to be the issue, try running it from command line. Only instead of running the script directly, try passing it into python as a parameter. IE:

      C:\Some\Path>python pssgConverter.py hea_hum_vasco_01_diff.pgz

      Some computers maintain records on files that came from the internet and when they run, they run as a special user associated with internet files. A user with limited access rights. When you run the python script directly, it would run as that user. If you pass the python script into the python interpreter, it would run as the user who installed python. So if the above fixes it, you may need to rename the python file. Create a new file with the same name manually and copy the contents into it.
  10. NoPanDa
    NoPanDa
    • member
    • 0 kudos
    I am trying to learn some basic modding but it seems quite hard. My goal is to just make female and male armors look the same (with the shoulder-pads) but I am not sure how to go about doing that. Is it possible that there is a file somewhere where I can just change a statement from true to false, or something? :P If that is the case, do you maybe know what file that would be? xD (it's very hard to find anything in this mess, if you as me)
    1. Dheuster
      Dheuster
      • premium
      • 603 kudos
      So the game defines items under the items directory. Then the items are assigned to NPCs using configuration files.. The items themselves point to a model. Gender sensitive items like armors typically point to a file that ends with _m. That means "male". At runtime, if the player is female, the game automatically searches for an _f counterpart and uses that if found. If not found, the players body would appear invisible. This is why some items have skeleton constrains defined in the item definition. If it is known that specific item does not have female support (or male support), they will constrain it. The player will see a message about the item not being compatible if they try to purchase or equip it.

      The models themselves are defined in the directories:

      datalocal/equipment/hum/ (hum = male)
      datalocal/equipment/huf/ (huf = female).

      within you will see subdirectories that divide the models up into categories:

      acc = accessories (feathers, glasses, headbands)
      bod = body (armor)
      boo = boots (which includes the legs)
      clo = cloth (capes)
      cra = craft support (upgrades)
      hai = hair
      han = hands (gloves/forearm)
      hea = heads
      hel = helmets

      The model data is stored in PSSG (binary XML) which is then compressed into PGZ. That is where pssgConverter comes in. You can convert the .pgz files to XML readable files and then play with the internals.

      I haven't spent much time on the internal format of the model files. What I do know is that there is a header that defines the parts (mesh sets), then binary data for the mesh sets and material mapping data for the mesh sets and node/joint mapping data for the mesh sets. . The game seems to have 2 distinct skeletons for male and female, but I am pretty sure they have the same nodes/joints as I have forced male NPCs to wear clothing meant for females (See kurt in the screen shots for Naut-E wares).

      So the simplest thing to do would be to take the _m version of a model and clobber the _f version with it. Then your female would have a male body (I guess, haven't tried it). But if your goal is to JUST change the shoulders, I don't know how well the mesh is divided up within the pssg. If I were trying to do it myself, I would probably take the _m and _f (xml) version of a model and diff them using windiff. However to make the diff useful, you may have to re-arrange the internals so that they line up as much as possible. That is what I had to do to figure out why the female prostitute heads had larger necklines than the player heads. It toook me about 3 hours to align the xml internals of 2 head models that were the same other than the neckline and then I could see that the primary difference was an opacity textures definition where one file pointed to a white texture and the other to a black. Turns out, all the female heads had the larger neckline, but they made it transparent with an opacity overlay. But I digress.

      If you are looking for something along the lines of... how do I import this model into 3DS MAX or blender so I can nudge it in a tool I know and re-export it... that plugin doesn't exist yet. I talk a pssg blender plugin in the guide, but it hasn't been updated for GreedFall Good starting point for someone looking to write a model import/export plugin for this game, but no one has tackled it yet (that I am aware of).