{"id":51122544,"url":"https://github.com/hexengraf/hexedut2k4-map-previews","last_synced_at":"2026-06-25T04:01:05.928Z","repository":{"id":357691135,"uuid":"1237067448","full_name":"hexengraf/HexedUT2k4-Map-Previews","owner":"hexengraf","description":"Map preview packages for HexedVOTE","archived":false,"fork":false,"pushed_at":"2026-05-13T21:12:53.000Z","size":19934,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-13T23:13:38.105Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"UnrealScript","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/hexengraf.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-12T21:01:23.000Z","updated_at":"2026-05-13T21:07:47.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/hexengraf/HexedUT2k4-Map-Previews","commit_stats":null,"previous_names":["hexengraf/hexedut2k4-map-previews"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/hexengraf/HexedUT2k4-Map-Previews","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hexengraf%2FHexedUT2k4-Map-Previews","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hexengraf%2FHexedUT2k4-Map-Previews/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hexengraf%2FHexedUT2k4-Map-Previews/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hexengraf%2FHexedUT2k4-Map-Previews/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hexengraf","download_url":"https://codeload.github.com/hexengraf/HexedUT2k4-Map-Previews/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hexengraf%2FHexedUT2k4-Map-Previews/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34758776,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-25T02:00:05.521Z","response_time":101,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2026-06-25T04:01:04.672Z","updated_at":"2026-06-25T04:01:05.916Z","avatar_url":"https://github.com/hexengraf.png","language":"UnrealScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HexedUT2k4 - Map Previews\n\nThis repository is a collection of packages providing an alternative way to show map previews in the map vote menu when the map is not locally installed.\nAll packages are designed to work together with [HexedVOTE](https://github.com/hexengraf/HexedUT2k4).\n\nCurrent packages:\n* HexedPreviewsBASE: contains all CBP maps plus a few \"semi-official\" and notable maps. It also associates \"fixed\" versions of official maps with the original previews.\n* HexedPreviewsUCMP: contains all UCMP maps.\n\n## Configuration\n\nFirst you need to install [HexedVOTE](https://github.com/hexengraf/HexedUT2k4).\nNext, decide which preview packages you want in your server.\nLet's say you only want HexedPreviewsBASE. You need to add it to your `ServerPackages` and to `MapPreviewLoaders` under the HexedVOTE section:\n```ini\n[Engine.GameEngine]\n; Add it at the end of the ServerPackages list\nServerPackages=HexedPreviewsBASEv2\n\n[HexedVOTEv7.MutHexedVOTE]\n; All packages from this repository use HxLoader as the Loader name, but custom packages might have different names.\nMapPreviewLoaders=HexedPreviewsBASEv2.HxLoader\n```\n\n## Contributing (or creating your own packages)\n\nContributions to this repository are greatly welcomed! We can create new packages to group previews.\nUnfortunately only linux is supported with the current build system.\nIf you find a way to support Windows without breaking compatibility with the current build system, feel free to open a PR.\n\n\u003e [!WARNING]\n\u003e This repository uses symbolic links, so if you're on Windows you might need to change a git configuration to properly clone with symbolic links.\n\n### How to add a new package\n\nThe fastest way to get started is to copy the folder of an existing package and start renaming things.\n\nThe main class is the loader, by default named `HxLoader`. It imports another file with all the boilerplate code:\n```UnrealScript\nclass HxLoader extends Object\n    abstract;\n\n#include Classes\\Include\\HxLoader.uci\n```\n\nThe folder `Classes/Include` is a symbolic link to `Common/Include`, so make sure it is properly set up.\n\nInside `HxLoader`, you want to populate the `Entries` array inside the default properties block:\n```UnrealScript\ndefaultproperties\n{\n    Entries(0)=(MapName=\"AS-Confexia\",Preview=Material'HxPreviewsBASE.AS_Confexia')\n    Entries(1)=(MapName=\"BR-CBP1-BreakLimit2004\",Preview=Material'HxPreviewsCBP.BR_BreakLimit2004')\n    Entries(2)=(MapName=\"BR-CBP2-Aquarius\",Preview=Material'HxPreviewsCBP.BR_Aquarius')\n    // ...\n}\n```\nEach entry associates a map name with a corresponding preview material.\nYou can have multiple entries with different map names associated with the same preview.\n\nIf you have custom maps that should use the previews of an official map, there is a separate array for that:\n```UnrealScript\ndefaultproperties\n{\n    OfficialEquivalents(0)=(MapName=\"AS-CBP2-Thrust\",OfficialName=\"AS-BP2-Thrust\")\n    OfficialEquivalents(1)=(MapName=\"CTF-CBP2-Pistola\",OfficialName=\"CTF-BP2-Pistola\")\n    OfficialEquivalents(2)=(MapName=\"DM-1on1-Roughinery-FE\",OfficialName=\"DM-1on1-Roughinery\")\n    // ...\n}\n```\nIn this array, each entry associates a custom map name with an official map name, so the loader can find the official preview for it.\nIt is highly recommended to add `OfficialEquivalents` entries to the `HexedPreviewsBASE` package (please!).\n\n\u003e [!WARNING]\n\u003e Both `Entries` and `OfficialEquivalents` **MUST** be defined in lexicographic order.\n\u003e If you get the order wrong, some maps may not be found and will show \"No Preview Available\" instead.\n\nThe folder `Textures` is a symbolic link to `Common/Textures`. This is where all screenshots should be saved.\n\nOther classes inside the package are bundles of preview materials. For instance, `HxPreviewsCBP` has all CBP previews.\nThere are two parts to it. First, you need to use `exec` directives to import the screenshots, e.g:\n```UnrealScript\n#exec texture Import File=Textures\\BR_CBP2_Aquarius_p1.dds Name=\"BR_CBP2_Aquarius_p1\" Mips=Off DXT=1\n#exec texture Import File=Textures\\BR_CBP2_Aquarius_p2.dds Name=\"BR_CBP2_Aquarius_p2\" Mips=Off DXT=1\n#exec texture Import File=Textures\\BR_CBP2_Aquarius_p3.dds Name=\"BR_CBP2_Aquarius_p3\" Mips=Off DXT=1\n```\n\nMake sure to disable MipMaps and use DXT1 compression to get the smallest package size possible.\n\nThe second part is the definition of the `MaterialSequence` using the screenshots, which should be inside the default properties block, e.g:\n```UnrealScript\ndefaultproperties\n{\n    Begin Object Class=MaterialSequence Name=BR_Aquarius\n        SequenceItems(0)=(Material=Texture'BR_CBP2_Aquarius_p1',Time=2.0,Action=MSA_ShowMaterial)\n        SequenceItems(1)=(Material=Texture'BR_CBP2_Aquarius_p2',Time=0.5,Action=MSA_FadeToMaterial)\n        SequenceItems(2)=(Material=Texture'BR_CBP2_Aquarius_p2',Time=2.0,Action=MSA_ShowMaterial)\n        SequenceItems(3)=(Material=Texture'BR_CBP2_Aquarius_p3',Time=0.5,Action=MSA_FadeToMaterial)\n        SequenceItems(4)=(Material=Texture'BR_CBP2_Aquarius_p3',Time=2.0,Action=MSA_ShowMaterial)\n        SequenceItems(5)=(Material=Texture'BR_CBP2_Aquarius_p1',Time=0.5,Action=MSA_FadeToMaterial)\n        TotalTime=7.5\n        Loop=True\n        Paused=False\n    End Object\n}\n```\n\nThe fade and show time can be further adjusted to get a result closer to the original preview.\nYou need to manually specify the sum of all times in `TotalTime` otherwise the sequence will not work correctly.\n\n### How to prepare screenshots\n\nYou have two alternatives: create your own screenshots or extract the original screenshots from the map.\nYou can probably find tutorials online about how to prepare screenshots for map previews.\n\nThere are two things you must follow before submitting your screenshots to this repository:\n* The screenshots must be 512x256 pixels.\n* Use DDS format with DXT1 compression and MipMaps disabled.\n\nA lot of the screenshots directly extracted from maps have MipMaps (it was useful for really old hardware), but the focus here is minimizing size.\n\n### Behind the curtains (or \"I don't want to follow your template\")\n\nYou can create compatible packages without following the `HxLoader.uci` template. All you need is a class that inherits from Object and overrides the static method `GetItemName`.\nThe expected behavior from `GetItemName` is to receive a map name and return the corresponding texture name. How you implement this internally is up to you.\nThe implementation inside `HxLoader.uci` uses a binary search over all entries to find the right texture, hence the need of lexicographic order.\n\nKeep in mind, if you want to contribute your package to this repository, you should use `HxLoader.uci`.\n\n## Known issues\n\n* DM-CBP2-TensileSteel is missing 2 screenshots. For some unknown reason I wasn't able to extract textures from Tensile.utx, the two screenshots I got from UnrealArchive instead.\n* AS-UCMP2-Cruciatus, AS-UCMP3-IslandStrike, and ONS-UCMP-ABC have screenshots not properly formatted. I wasn't able to open them with Gimp to re-export.\n\n## Copyright notice\n\nThis project does not make any copyright claims over map screenshots extracted from the original map textures, all rights belong to the original author(s).\nIf you want your screenshot(s) removed from this repository, please open an issue.\n\nThe MIT license only applies to the UnrealScript portions of this project.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhexengraf%2Fhexedut2k4-map-previews","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhexengraf%2Fhexedut2k4-map-previews","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhexengraf%2Fhexedut2k4-map-previews/lists"}