{"id":15960567,"url":"https://github.com/yell/kf2-hardcore-endless","last_synced_at":"2025-08-02T03:09:51.160Z","repository":{"id":83176759,"uuid":"134327591","full_name":"yell/kf2-hardcore-endless","owner":"yell","description":"A custom hardcore Killing Floor 2 Endless mode","archived":false,"fork":false,"pushed_at":"2020-05-03T11:33:02.000Z","size":44,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-04T11:04:09.811Z","etag":null,"topics":["custom-zeds","endless","hardcore","kf","kf2","killing-floor","killing-floor-2","tripwire","unreal-engine","unreal-engine-4","zed","zeds","zombies"],"latest_commit_sha":null,"homepage":"","language":"Python","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/yell.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":"2018-05-21T21:33:51.000Z","updated_at":"2022-05-07T23:55:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"c0b37f33-c342-4b72-a908-ff7d40d6b3b3","html_url":"https://github.com/yell/kf2-hardcore-endless","commit_stats":{"total_commits":34,"total_committers":1,"mean_commits":34.0,"dds":0.0,"last_synced_commit":"fda814796588a551d9a020ae02ac0292a4b14efd"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/yell/kf2-hardcore-endless","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yell%2Fkf2-hardcore-endless","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yell%2Fkf2-hardcore-endless/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yell%2Fkf2-hardcore-endless/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yell%2Fkf2-hardcore-endless/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yell","download_url":"https://codeload.github.com/yell/kf2-hardcore-endless/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yell%2Fkf2-hardcore-endless/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268330911,"owners_count":24233151,"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","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"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":["custom-zeds","endless","hardcore","kf","kf2","killing-floor","killing-floor-2","tripwire","unreal-engine","unreal-engine-4","zed","zeds","zombies"],"created_at":"2024-10-07T15:20:31.764Z","updated_at":"2025-08-02T03:09:51.130Z","avatar_url":"https://github.com/yell.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kf2-hardcore-endless\nThis repository contains custom hardcore waves (`ini` files) for Killing Floor 2 Endless mode using [Custom Zed Waves mutator](https://steamcommunity.com/sharedfiles/filedetails/?id=1082749153), as well as a generator of such files from YAML configs with convenient structure. Once you got/generated corresponding `ini` file, see the mutator's docs on how to use it.\n\n\n## Hardcore endless waves\n* config *A* is harder than config *B*\n* config *B* simply contain all kinds of so-called _special_ waves (consisting of mostly one zed type), whereas more design thought to create more nasty waves is put into config *A*\n* both set of waves can be completed with a decent team, though it might take up to 10 hours depending on your skills\n* waves utilize **all** zeds in the game (including alpha-zeds, bosses, and alpha-Patriarch) available as per May 2018\n\n| wave | \u003cdiv align=\"center\"\u003e[config A](config_A/)\u003c/div\u003e | \u003cdiv align=\"center\"\u003e[config B](config_B/)\u003c/div\u003e |\n| :---: | :--- | :--- |\n| **1** | \"First blood\" | Cyst |\n| **2** | \"2 surprises\" | Slasher |\n| **3** | Crawler | Crawler |\n| **4** | Pondemonium prelude | Clot |\n| **5** | **all 4 bosses (T=1min)** | **Abomination** |\n| **6** | Bloat | Stalker |\n| **7** | \"Alpha wave\" | Gorefast |\n| **8** | Clot | Rioter |\n| **9** | Pondemonium | AlphaSlasher |\n| **10** | **Hans, 2FPs, Abomination (T=2min)** | **KingFP** |\n| **11** | Siren | EliteCrawler |\n| **12** | Husk prelude | AlphaHusk |\n| **13** | Gorefast | Gorefiend |\n| **14** | Pondemonium+ | Siren |\n| **15** | **2x King{Flesh, Bloat} bosses (T=3min)** | **Hans** |\n| **16** | Bloat + Siren | Bloat |\n| **17** | Husk | AlphaStalker |\n| **18** | Stalker | AlphaClot |\n| **19** | \"All of them\" | AlphaCrawler |\n| **20** | **King Pondemonium (T=4min)** | **AlphaPatriarch** |\n| **21** | \"Untypical typical wave\" | AlphaGorefast |\n| **22** | Scrake | Quarterpound |\n| **23** | Cyst | AlphaSiren |\n| **24** | mini-Pondemonium | AlphaBloat |\n| **25** | **King Bloats (T=5min)** | **Patriarch** |\n| **26** | Alpha Pondemonium | Scrake |\n| **27** | ????? | Husk |\n| **28** | ?????[2] | AlphaScrake |\n| **29** | \u0026mdash; | AlphaFleshpound |\n| **30** | **\u0026mdash;** | **Fleshpound** |\n\n\n## How to use the generator\n```bash\n$ python main.py -h\n\nusage: main.py [-h] [--txt] [--markdown] PATH\n\nGenerate `kfzedvarient.ini` file from given YAML config and save it to the\nsame directory.\n\npositional arguments:\n  PATH        path to YAML config\n\noptional arguments:\n  -h, --help  show this help message and exit\n  --txt       display wave names (default: False)\n  --markdown  display wave names in Markdown format (default: False)\n```\n\n## Generator features and YAML config structure\n* on top of config there are the following meta parameters:\n  - `n_players`: even though the game will automatically adjust a number of zeds depending on the number of players, this might affect zed types ratio or the order in which they spawn; this option, in turn, can provide finer control if you know with how many teammates are you going to play\n  - `difficulty`: used to calculate the number of zeds from [[wiki]](https://wiki.tripwireinteractive.com/index.php?title=Endless_Mode); for hardcore, only `hoe` is supported :smiling_imp:\n  - `zed_multiplier`: a global multiplier of number of all zeds in all waves\n  - `custom_zeds_ratio_policy` and `custom_zeds_ratio_policy_params`: control the ratio of *generated* (i.e. *custom*) zeds, as opposed to zeds generated in KF2 Endless by default; for instance, `custom_zeds_ratio_policy: 'make_line_const_interp'` and `custom_zeds_ratio_policy_params: [[1, 0.975], [20, 0.825]]`\nwill gradually decrease the ratio of *custom* from 97.5% at first wave to 82.5% at 20th, keeping it like that afterward\n* after that there are zed-specific options, all of which can be set 1) globally for all waves and all zeds, 2) for all zeds in a specific wave, or 3) for specific wave and specific zed:\n  - mutator options `spawn_at_once`, `probability`, `spawn_delay`, `number`\n  - `ratio`: unnormalized non-negative fraction of certain zed type\n  - `n_generators`: number of \"spawners\" for certain zed type; can be used to spawn zeds more rapidly (e.g. generate all Stalkers in the waves before zeds of all the other types)\n* total number of zeds is estimated from [[wiki]](https://wiki.tripwireinteractive.com/index.php?title=Endless_Mode) using meta parameters `n_players` and `difficulty`, after that multiplied by `zed_multiplier`, and finally computed taking into the account `custom_zeds_ratio_policy`, `custom_zeds_ratio_policy_params`\n* for boss waves, total zed count is estimated by linearly interpolating between the adjacent waves\n* as per [[wiki]](https://wiki.tripwireinteractive.com/index.php?title=Endless_Mode), zeds became to spawn faster in later waves, which was actually way too fast for provided set of waves (causing FPS drop); therefore, the multiplication of all `spawn_delay`s the so-called \"spawn delay multipliers\" is undone (i.e. divided by); this also enables more transparent control of the spawn delays \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyell%2Fkf2-hardcore-endless","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyell%2Fkf2-hardcore-endless","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyell%2Fkf2-hardcore-endless/lists"}