尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗A pixel-art lane battler for CrazyGames. Command an army of cute animals against the Gloom: send heroes marching down the lane, upgrade your acorn pouch, rally them with a Battle Cry, and smash the Gloom tower before it flattens your burrow. Between battles, hatch rare heroes, level them up and evolve them, upgrade the Lab, and free 8 lands across 3 difficulties.
Play locally: open index.html in a browser, or serve the folder (npx http-server .). There is no build step needed to play.
| Heroes | 150 animals in 5 rarities (25 Starter, 46 Rare, 38 Epic, 26 Mythic, 15 Legend), each with 3 forms, one of 10 elements and an attack animation of its own (a body motion, a hit effect and, for ranged heroes, a projectile; no two units share one). Abilities include area attacks, critical hits, knockback, freeze, slow, weaken, shockwaves, multi-hits, Tower Smashers, burrowing, Last Stand and Spirit Breaker. |
| Gloom | 73 enemies with 6 traits (Airborne, Ironclad, Phantom, Venomous, Restless, Starborn), each with its own rule, and an element each; 24 land bosses. |
| Stages | 3 chapters (The Green Kingdom, The Gloom Frontier, Heart of the Gloom) × 8 lands × 12 stages × 3 difficulties (Normal, Hard, Nightmare) = 864 story stages, plus the endless Gloom Tower and 3 daily events (Coin Cave, Seed Grove, Egg Hunt) with 5 levels each. Each stage has 3 star goals; stars open land chests. |
| Hatchery | Three nests: Royal Nest (gems or Gold Eggs: Rare 62% · Epic 28% · Mythic 9% · Legend 1%, daily rate-up heroes at half their rarity's chance, Mythic pity at 40 and Legend pity at 150), Elemental Nest (only heroes of the day's element, rotating through all 10) and Meadow Nest (Silver Eggs, one free every 4 hours). A ×10 always includes an Epic. Duplicates add bonus levels. All odds are shown in game. |
| Elements | Ember, Frost, Thorn, Storm, Shadow, Tide, Stone, Sun, Moon and Bloom. Each beats two elements (×1.5 damage) and is beaten by two (×0.75). Three heroes of one element in the lineup give them +10% health and attack, five give +20%. The stage window scouts each Gloom's element and suggests what to bring. |
| Progression | Hero levels 1-30 (+20 from duplicates), evolution at level 10 and 20, 9 Lab upgrades, 4 battle boosts, Commander rank. |
| Coming back | 7-day login calendar, 4 daily quests plus a completion bonus, Acorn Farm (coins while away, 8-hour cap), free Silver Egg timer, daily event entries, 14 medal series, tower leaderboard. |
Every gem and egg is earned by playing. There are no purchases.
| Input | Action |
|---|---|
Tap a hero card, or 1-0 | Deploy that hero |
Tap the pouch, or E | Upgrade the acorn pouch (faster income, bigger pouch) |
Tap Battle Cry, or R / Space | When charged, every hero on the field glows gold for 8 seconds: +50% attack (more with the Lab), +30% speed, 30% less damage taken |
Drag, scroll or ← → | Look around the battlefield (the camera follows the front line otherwise); tap the minimap to jump |
F | Speed ×1 / ×2 |
P / Esc | Pause |
M | Mute |
index.html page shell (loads the files below and the optional CrazyGames SDK)
css/style.css pixel UI: frame utilities (.fx-*), home, battle HUD, dock, windows, modals, phone layouts
fonts/ Pixelify Sans + Silkscreen (SIL OFL, licences included)
js/content.js content tables: heroes, Gloom, regions, difficulties, events, banners, Lab, items, missions, login, medals
js/tune.js per-stage tuning written by tools/tune.js (do not edit by hand)
js/core.js all rules: saves, hero stats, stage generator, battle simulation, hatchery, dailies, medals (no DOM; runs in Node)
js/assets.js the painted tree-house base and region backgrounds as native-size pixel art (written by tools/assets.py)
js/sprites.js palette, Painter (with a pixel-art clean-up pass), 50 hero and 33 Gloom painters (4 frames each), bases, eggs, hand-drawn icons, the UI frame kit and pixel-font titles
js/render.js the battlefield: painted parallax regions, camera, units, Battle Cry glow, waves, particles, minimap, home parade, region art for menus
js/audio.js chiptune sound effects (synthesized) and the music: audio/menu.mp3 at home, audio/battle.mp3 in battle (a synthesized fallback plays if they cannot load)
audio/ the menu and battle music tracks (re-encoded at 96 kbps)
js/platform.js CrazyGames SDK v3 adapter + storage; every call is safe without the SDK
js/game.js UI, input, battle loop, tutorial, results, windows, saving, platform hooks
tools/sim.js campaign simulator: a scripted player plays the real rules and reports pacing
tools/calibrate.js lowest hero level that beats each stage
tools/tune.js writes js/tune.js so every stage is beatable at a target level in a target time
tools/assets.py turns the painted art in assets/src into clean native-resolution pixel art (Pillow + NumPy) → assets/px and js/assets.js
tools/build.js production build → dist/index.html (single file) + dist/animal-wars.zip + public/index.html
tools/keyart.html store key art composed from the game's sprites and paintings
tools/covers.js renders the key art into the three covers → store/
tools/preview.js store preview videos (real gameplay) → store/
tools/spritesheet.html every sprite enlarged, for art review
tests/core.test.js rule tests (Node's built-in runner)
tests/browser.qa.js browser QA in Chromium (desktop, 1920×1080, phone landscape, and the rotate prompt in phone portrait)
Node 18+. The browser QA, covers and previews also need Playwright (npm i -D playwright && npx playwright install chromium) and the previews need ffmpeg.
npm test # rule tests
npm run qa # browser QA against the source files (pass a folder to save screenshots)
npm run build # dist/index.html + dist/animal-wars.zip
npm run qa:dist # the same QA against the production build
npm run covers # store/cover-*.png
node tools/preview.js # store/preview-*.mp4
npm run sim -- 8 1 # campaign pacing (regions, seed, --verbose)
node tools/calibrate.js 0 # level needed per stage (difficulty 0, 1, 2)
node tools/tune.js 0,1,2 # re-tune stages after changing heroes, Gloom or the stage generator (slow)
python3 tools/assets.py # rebuild js/assets.js after changing anything in assets/src
Add ?debug to the URL to show every menu from the start.
Stages are generated from each region's Gloom pools (stageDef in js/core.js), tuned per stage by tools/tune.js (the strongest Gloom a scripted player beats every time within a target time at a target level), and then calibrated with the whole-campaign simulator in the loop (tools/sim.js). The scripted player plays like a good human: it keeps a stream of cheap heroes at the front whenever Gloom is on the field, sends big heroes as soon as they are ready, buys pouch levels early and levels its lineup. Every stage's strength was eased wherever that player hit a wall, across four random seeds, until each seed cleared all 24 lands. On top of the tuning, CONFIG.challenge makes every stage tougher (+40% Gloom strength, +20% tower health, +8% wave pace, eased in over the first six stages). Acorn income is 7.8 + 3.9 per pouch level per second, and every hero gives the same value for its acorns within its rarity (rarer heroes are bigger and dearer, with only a 5-15% premium), so a fresh hatch at level 1 cannot carry the campaign: a level-1 army stalls around 1-3 and a level-5 army around 1-6. The simulator clears chapter 1 in about 13 hours of battles with about 30 lost battles, and the full Normal campaign in 25-43 hours. Hard and Nightmare share Normal's per-stage shape; the simulator does not play them. If you change hero or Gloom stats, re-run node tools/tune.js and npm test.
npm run build.dist/animal-wars.zip (index.html with everything inlined, plus the audio/ folder with the two music tracks; about 4.5 MB).store/ for the listing: three covers, a landscape preview video, and the text in store/LISTING.md.index.html loads the CrazyGames SDK v3 from sdk.crazygames.com. The game starts without waiting for it and works the same if it fails to load. When it loads, the game:
loadingStart / loadingStop, and gameplayStart / gameplayStop around battles (stopped on pause, results, menus and when the tab is hidden);happytime on boss and region wins, Mythic or Legend hatches, and evolutions;crazygames environment when ads are available;SDK.user.submitScore({ encryptedScore, score }) (AES-GCM, as in Pocket Singularity).Leaderboard setup: create the leaderboard in the developer portal and paste its encryption key into leaderboardKey in js/platform.js. Without a key nothing is submitted.
The SDK integration was written from the v3 API and has not been run against the live SDK, which this build environment cannot reach. Test it in the CrazyGames QA tool before submitting.
Animal Wars is inspired by the lane-battler genre (send units down a lane, manage an income meter, fire a base weapon, destroy the enemy base), but all names, characters, art, music and text are original. There are no cats in the army, no copied characters, enemies, sprites, sounds or UI art, and the currencies, items and modes have their own names (acorns, Battle Cry, Royal Nest, Gloom Tower, and so on); there is no base cannon: the Battle Cry powers up your heroes instead. Systems with no counterpart in that genre: the 10-element wheel with lineup synergy, the scouting report, the daily Elemental Nest, the three-tap egg hatch, chapters of colour-graded lands, and the trait set with its own rules and names (Airborne, Ironclad, Phantom, Venomous, Restless, Starborn). Characters, towers, eggs and icons are drawn by code in js/sprites.js; the tree-house base and region backgrounds are the owner's painted art in assets/src, converted by tools/assets.py; sound effects are synthesized in js/audio.js; the music tracks in audio/ were supplied by the owner.