{"id":14961645,"url":"https://github.com/hhyyrylainen/godotpcktool","last_synced_at":"2025-10-24T09:26:09.452Z","repository":{"id":38054542,"uuid":"262078459","full_name":"hhyyrylainen/GodotPckTool","owner":"hhyyrylainen","description":"Standalone tool for extracting and creating Godot .pck files","archived":false,"fork":false,"pushed_at":"2025-04-27T15:23:00.000Z","size":144,"stargazers_count":451,"open_issues_count":6,"forks_count":34,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-13T01:41:01.413Z","etag":null,"topics":["cpp","cpp17","godot-engine","thrive"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hhyyrylainen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-07T14:49:16.000Z","updated_at":"2025-05-11T03:17:25.000Z","dependencies_parsed_at":"2024-09-17T13:00:13.763Z","dependency_job_id":"89dea63f-4276-4222-8112-f5c45b6d2d5f","html_url":"https://github.com/hhyyrylainen/GodotPckTool","commit_stats":{"total_commits":76,"total_committers":6,"mean_commits":"12.666666666666666","dds":"0.17105263157894735","last_synced_commit":"87c78d347434e191a666d0b75b21ac6ca6a477fe"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hhyyrylainen%2FGodotPckTool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hhyyrylainen%2FGodotPckTool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hhyyrylainen%2FGodotPckTool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hhyyrylainen%2FGodotPckTool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hhyyrylainen","download_url":"https://codeload.github.com/hhyyrylainen/GodotPckTool/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254436943,"owners_count":22070946,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","cpp17","godot-engine","thrive"],"created_at":"2024-09-24T13:26:01.234Z","updated_at":"2025-10-24T09:26:04.397Z","avatar_url":"https://github.com/hhyyrylainen.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"Godot Pck Tool\n==============\n\nA standalone executable for unpacking and packing Godot .pck files.\n\nCommand line usage\n------------------\n\nFor these you just need the GodotPckTool executable. Available from\nthe releases page. Or see the end of this file for building\ninstructions.\n\nNote: if you don't install it on Linux you need to either use the full\npath or put it in a folder and run it as `./godotpcktool` similarly to\nWindows.\n\nYou can view the tool help by running `godotpcktool -h`\n\n### Listing contents\n\nLists the files inside a pck file.\n\n```sh\ngodotpcktool Thrive.pck\n```\n\nLong form:\n\n```sh\ngodotpcktool --pack Thrive.pck --action list\n```\n\n### Extracting contents\n\nExtracts the contents of a pck file.\n\n```sh\ngodotpcktool Thrive.pck -a e -o extracted\n```\n\nLong form:\n\n```sh\ngodotpcktool --pack Thrive.pck --action extract --output extracted\n```\n\n### Adding content\n\nAdds content to an existing pck or creates a new pck. When creating a\nnew pck you can specify which Godot version the pck file says it is\npacked with using the flag `set-godot-version`.\n\n```sh\ngodotpcktool Thrive.pck -a a extracted --remove-prefix extracted\n```\n\nLong form:\n\n```sh\ngodotpcktool --pack Thrive.pck --action add --remove-prefix extracted --file extracted\n```\n\nThe files are added with the specified paths on the command line, but\nwith the prefix removed. So for example if there was a file called\n`extracted/example.png` and `extracted/subfolder/file.txt` and the\nabove command was used, those files would get added to the pck as\n`res://example.png` and `res://subfolder/file.txt`.\n\nAfter adding files it is recommended to use the listing command to\nview the resulting data inside the pck to verify the expected actions\nhappened correctly. When a new file matches exactly the path name\ninside the pck, it will replace that file.\n\nTo have more control over the resulting paths inside the pck, see the\nsection below on the JSON commands.\n\n### Filters\n\nFilters can be used to only act on a subset of files in a pck file, or\nfrom the filesystem.\n\n#### Min size\n\nSpecify the minimum size under which files are excluded:\n\n```sh\ngodotpcktool --min-size-filter 1000\n```\n\nThis will exclude files with size 999 bytes and below.\n\n### Max size\n\nSpecify the maximum size above which files are excluded:\n\n```sh\ngodotpcktool --max-size-filter 1000\n```\n\nNOTE: if you use max size to compliment min size extraction, you\nshould subtract one from the size, otherwise you'll operate on the\nsame files twice.\n\nHowever, if you want to work on exactly some size files you can specify the same size twice:\n```sh\ngodotpcktool --min-size-filter 1 --max-size-filter 1\n```\n\n#### Include by name\n\nThe option to include files can be given a list of regular expressions that select only files\nthat match at least one of them to be processed. For example, you can list all files containing\n\"po\" in their names with:\n```sh\ngodotpcktool --include-regex-filter po\n```\n\nOr if you want to require that to be the file extension (note that different shells require\ndifferent escaping):\n```sh\ngodotpcktool -i '\\.po'\n```\n\nMultiple regular expressions can be separated by comma, or specified by giving the option\nmultiple times:\n```sh\ngodotpcktool -i '\\.po,\\.txt'\ngodotpcktool -i '\\.po' -i '\\.txt'\n```\n\nIf no include filter is specified, all files pass through it. So not specifying an include\nfilter means \"process all files\".\n\nNote that filtering is case-sensitive.\n\n#### Exclude by name\n\nFiles can also be excluded if they match a regular expression:\n```sh\ngodotpcktool --exclude-regex-filter txt\n```\n\nIf both include and exclude filters are specified, then first the include filter is applied,\nafter that the exclude filter is used to filter out files that passed the first filter.\nFor example to find files containing \"po\" but no \"zh\":\n```sh\ngodotpcktool -i '\\.po' -e 'zh'\n```\n\n#### Overriding filters\n\nIf you need more complex filtering you can specify regular expressions with\n`--include-override-filter` which makes any file matching any of those\nregular expression be included in the operation, even if another filter\nwould cause the file to be excluded. For example, you can use this to set\nfile size limits and then override those for specific type:\n```sh\ngodotpcktool --min-size-filter 1000 --include-override-filter '\\.txt'\n```\n\n#### JSON bulk operations\n\nTo have more control over the resulting paths inside the pck file,\nthere is a JSON operation API provided.\n\nTo use it, you first need to create a JSON file (`commands.json` in\nthe example command but any name can be used) with the following\nstructure (as many files can be specified as required):\n```json\n[\n    {\n        \"file\": \"/path/to/file\",\n        \"target\": \"overridden/path/file\"\n    },\n    {\n        \"file\": \"LICENSE\",\n        \"target\": \"example/path/LICENSE\"\n    }\n]\n```\n\nThen run the following command to use it (the JSON command can always\nbe specified when the add operation is used):\n```sh\ngodotpcktool Thrive.pck -a a --command-file commands.json\n```\n\nThis will read `/path/to/file` which can be an absolute or a relative\npath, and save it within the pck as `res://overridden/path/file` and\nalso the `LICENSE` file as `res://example/path/LICENSE`. This way it\nis possible to use absolute paths and specify whatever path the file\nshould end up as in the pck file for maximum control.\n\nNote that the full path without the `res://` prefix needs to be in the\nJSON `target` property for where the file inside the pck should end up\nin; this mode doesn't support specifying just the folder so multiple\nfiles with `target` being `pck/folder` will overwrite each other\nrather than being placed inside `pck/folder`. So always specify full\npaths like `pck/folder/README.txt` rather than `pck/folder/` when\nspecifying the JSON commands.\n\n\n### Advanced Options\n\n#### Specifying Engine Version\n\nWhen creating a .pck file it is possible to specify the Godot engine\nversion the .pck says it is created with:\n\n```sh\ngodotpcktool NewPack.pck -a a some_file.txt --set-godot-version 3.5.0\n```\n\nNote that this approach **does not** override the engine version number in existing .pck\nfiles. This currently only applies to new .pck files.\n\n#### Scripting\n\nIt is possible to use the JSON bulk API without creating a temporary file. This is done by specifying `-` as the file to add and then writing the JSON to the tool's stdin and then closing it.\n\n```sh\ngodotpcktool NewPack.pck -a a -\n```\n\nWhen starting the above command, the tool will read all lines from stdin until it is closed. At that point the input JSON is \nparsed. As stdin needs to be closed for the tool to continue this is not meant for interactive use, but only for scripting. See the above section about the JSON command files for a version usable on the command line.\n\nSee above for the format of the accepted JSON as it is the same as the JSON command file format.\n\n### General info\n\nIn the long form multiple files may be included like this:\n```sh\ngodotpcktool ... --file firstfile,secondfile\n```\n\nMake sure to use quoting if your files contain spaces, otherwise the\nfiles will be interpreted as other options.\n\nIn the short form the files can just be listed after the other\ncommands. If your file begins with a `-` you can prevent it from being\ninterpreted as a parameter by adding `--` between the parameters and\nthe list of files.\n\n\nBuilding\n--------\n\nThese are instructions for building this on Fedora, including cross\ncompiling to Windows.\n\nNote that native Linux build uses the glibc of the currently installed\nsystem, which may be too new for older distros. For a build that\nsupports those, see the section about podman builds.\n\n### Required libraries\n\n```sh\nsudo dnf install cmake gcc-c++ libstdc++-static mingw32-gcc-c++ mingw32-winpthreads-static\n```\n\nAlso don't forget to init git submodules.\n\n```sh\ngit submodule init\ngit submodule update\n```\n\nThen just:\n```sh\nmake\n```\n\nAlso if you want to make a folder with the executables and cross compile:\n\n```sh\nmake all-install\n```\n\n### Podman build\n\nPodman can be used to build a Linux binary using the oldest supported\nUbuntu LTS. This ensures widest compatibility of the resulting binary.\n\nFirst make sure podman and make are installed, then run the make\ntarget:\n```sh\nmake compile-podman\n```\n\nDue to the use of C++ 17 and non-ancient cmake version, the oldest\nworking Ubuntu LTS is currently 22.04 (as 20.04 has ended support).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhhyyrylainen%2Fgodotpcktool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhhyyrylainen%2Fgodotpcktool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhhyyrylainen%2Fgodotpcktool/lists"}