尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Cowboys vs Zombies - a handful of gunslingers hold a saloon against a 2:1 horde of the dead; AI on both sides (Godot 4). Part of the Precog sim suite.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗A handful of cowboys hold a saloon against a horde of the dead coming in through the swinging doors - two of them for every one of the living. Played entirely by AI on both sides, built on Brawl Bots. If the dead win, they eat the cowboys; if the cowboys win, they set every last zombie alight. Part of the Precog sim suite.
Live: https://cowboys-vs-zombies.apps.precogsoftwareservices.com
Everything from Brawl Bots: the seven temperaments, the team plans, grades, weapons per side or per man (Colt, shotgun, rifle, lasso, knives, bottles), and the AI as editable rules. Against the dead they give ground and shoot - back off as one closes, lay the sight on the head when they have the time and the nerve, centre of mass when they haven't - and the 3 m no-shooting rule does not apply: you can put a slug in a zombie's face.
At 2:00 the living who are still standing hold out till dawn and win.
Zombies 37, Cowboys 43 over 80 after limbs came off (46% for the dead). About 85% of the dead put down go by the head; ~12 grips, ~12 bites and ~1 point-blank shot a match. Temperament matters: Balanced and Lawman hold the line best (about half), Brawlers about 40%, Sharpshooters and Desperados about a third, and Gunslingers (fanning the hammer: wild body shots) and Cowards (cowering) rarely survive. Wave is the strongest horde plan, Swarm and Surround about level.
Every match starts wide, the whole saloon in shot. Bottom right: pan (arrows, with Wide in the middle to put the whole map back), rotate, tilt and zoom - hold to keep going; Hide view controls tucks them away. Mouse: drag to orbit, right-drag (or shift-drag) to pan, wheel to zoom. Touch: one finger orbits, two pinch and pan. Keys: arrows/WASD pan, Q E rotate, R F tilt,
Team brain (scripts/team_brain.gd): a blackboard of every enemy seen or heard, counting every
shot (rush a man counted empty); a tactical map scoring every spot for cover, sight lines and the
angles that beat the enemy's cover; and a commander running one of seven plans - Adaptive, Dig In,
Rush, Pincer, High Ground, Leapfrog, Bait - with clock sense in the last 25 s.
Each man (scripts/gunman.gd): ten personality traits weight a utility score over the map,
blended with his orders by his discipline. He is always in a mode you can see over his head:
hold, advance, duck, hide, cower, flank, rush, fall back, brawl, hunt - and he walks the map his
legs allow: vaulting low cover and water, dropping off decks, leaping up onto them, climbing
ladders.
The rules (scripts/ai_script.gd) - the exposed AI. Each side can run a script, edited in the
app (Teams / tactics -> Edit AI rules), checked with line-numbered errors (with "did you mean"
for typos), saved in the browser. Type a few letters and it suggests what can go there - a
condition, a number, an action, a trait - with what it means (Tab or tap to take one); the word
under the cursor is explained; Add an example drops in a ready-made rule:
# first rule that holds (and can be done) wins; anything uncovered -> built-in brain
set caution 0.85
aim 1.25
when pinned -> hide for 2
when bleeding and bleed_secs < 15 -> rush nearest for 3
when enemy_reloading and nearest < 8 -> rush reloading
when super and stalemate -> flank
when melee and in_reach -> rush nearest
otherwise -> default
About 35 yes/no conditions (bleeding, pinned, aimed_at, enemy_reloading, high, edge, clinch, outnumbered,
super, melee, in_reach, has_bottle, near_bottle, ...), 14 numbers (hp, bleed_secs, ammo, nearest, time, diff, random, ...),
12 actions (hold, advance, hide, flank, rush nearest|weakest|reloading|high|aiming|melee,
fall back, take high, hunt, flip table, grab bottle, cower, default), set <trait> and aim <multiplier>.
Presets to start from: Careful hands, Wild bunch, High ground first, Ninja ambush, Supers lead
minions swarm, Last stand. Show intents prints which rule each man is following; the results
list how often each rule decided.
Query string = command line: ?living=6&ratio=2.5&horde=Wave&blue=Sharpshooter&speed=2,
?endtest=0 / ?endtest=1 (debug: the other side drops dead four seconds in, to see the ending),
?map=bamboo&redf=lotus&bluef=law&redn=2&redgrade=Super&bluen=5&bluegrade=Minion&intents=1,
?redscript=Ninja ambush, ?lineup=1, ?cam=10. Headless (Godot 4.4+):
godot --headless --path . -- --sim=20 --horde=Surround --living=5 --ratio=2 --blue=Lawman
godot --headless --path . -- --sim=20 --map=temple --redf=dragon --bluef=outlaws --redgrade=Super --redn=3 --bluen=8
godot --headless --path . -- --sim=20 --redscript=my.rules # a rules file
godot --headless --path . -- --league=5 [--pairs=Rush:Dig In] [--part=0/4]
godot --headless --path . -- --presets=5
bash build.sh (Godot 4.7.2 + web templates) exports to dist/, boot-checks the pack and gzips.
Dockerfile + nginx.conf serve it; headers.caddy adds COOP/COEP. Meshes and most sounds are
built in code; the voices are espeak-ng lines baked into sfx/voice/ by tools/make_voices.sh.