{"id":22522551,"url":"https://github.com/gonnavis/annihilate","last_synced_at":"2025-09-18T23:52:03.661Z","repository":{"id":45926440,"uuid":"367438567","full_name":"gonnavis/annihilate","owner":"gonnavis","description":"js action game","archived":false,"fork":false,"pushed_at":"2023-01-04T14:50:30.000Z","size":32259,"stargazers_count":59,"open_issues_count":1,"forks_count":6,"subscribers_count":2,"default_branch":"dev","last_synced_at":"2025-08-03T20:48:19.072Z","etag":null,"topics":["action-game","cannonjs","ecsy","game","javascript","state-machine","threejs","webgl","xstate"],"latest_commit_sha":null,"homepage":"https://raw.githack.com/gonnavis/annihilate/dev/index.html","language":"JavaScript","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/gonnavis.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}},"created_at":"2021-05-14T17:43:10.000Z","updated_at":"2024-09-03T08:45:23.000Z","dependencies_parsed_at":"2023-02-02T16:46:29.147Z","dependency_job_id":null,"html_url":"https://github.com/gonnavis/annihilate","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gonnavis/annihilate","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gonnavis%2Fannihilate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gonnavis%2Fannihilate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gonnavis%2Fannihilate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gonnavis%2Fannihilate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gonnavis","download_url":"https://codeload.github.com/gonnavis/annihilate/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gonnavis%2Fannihilate/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275854203,"owners_count":25540528,"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-09-18T02:00:09.552Z","response_time":77,"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":["action-game","cannonjs","ecsy","game","javascript","state-machine","threejs","webgl","xstate"],"created_at":"2024-12-07T05:16:18.687Z","updated_at":"2025-09-18T23:52:03.595Z","avatar_url":"https://github.com/gonnavis.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Annihilate - js action game\n\n## Play online\n\n [ dev ](https://raw.githack.com/gonnavis/annihilate/dev/index.html)\n\n [ Maria and Paladin ](https://raw.githack.com/gonnavis/annihilate/MariaAndPaladin/index.html)\n\n [ use mixamo Mutant model ](https://raw.githack.com/gonnavis/annihilate/MutantModel/index.html)\n\n [ use mixamo Paladin model ](https://raw.githack.com/gonnavis/annihilate/PaladinModel/index.html)\n\n [ use mixamo Maria model ](https://raw.githack.com/gonnavis/annihilate/MariaModel/index.html)\n\n [ use self rig-and-animated naive model ](https://raw.githack.com/gonnavis/annihilate/main/index.html)\n\n## Brief\n\nAn action game prototype made in 2018.\n\nNow open-sourced and:\n\n1. Switched from \u003ca href=\"https://github.com/jakesgordon/javascript-state-machine\" target=\"_blank\"\u003estate-machine.js\u003c/a\u003e to \u003ca href=\"https://github.com/statelyai/xstate\" target=\"_blank\"\u003eXState\u003c/a\u003e.\n\n    state diagram of role: https://stately.ai/viz/f8c7eb66-db73-4bc4-b3ca-7e1ef2276923\n    \n    state diagram of role mutant: https://stately.ai/viz/8817b66b-7cdd-4035-9c50-d86d03f54eb7\n\n    state diagram of enemy: https://stately.ai/viz/92f4cb2a-6e1a-4607-9a6c-5006490edd62\n    \n2. Switched from [cannon.js](https://github.com/schteppe/cannon.js) to [cannon-es](https://github.com/pmndrs/cannon-es).\n    \n3. Try to make a parallel [ammo.js](https://github.com/kripken/ammo.js/) version, at [branch: AmmoJS](https://github.com/gonnavis/annihilate/tree/AmmoJS) ([demo](https://raw.githack.com/gonnavis/annihilate/AmmoJS/index.html)).\n    \n4. Try to use \u003ca href=\"https://github.com/ecsyjs/ecsy\" target=\"_blank\"\u003eecsy.js\u003c/a\u003e at [branch: ecsy](https://github.com/gonnavis/annihilate/tree/ecsy).\n\n![image](https://user-images.githubusercontent.com/10785634/118347405-b6f14b80-b575-11eb-9269-38ef89051949.png)\n![image](https://user-images.githubusercontent.com/10785634/143771469-d2d15fc5-ed7e-4843-9854-42384e32e915.png)\n![image](https://user-images.githubusercontent.com/10785634/145292224-41be4668-acc8-45aa-b284-f14819a3529e.png)\n![image](https://user-images.githubusercontent.com/10785634/145850577-61d34fcc-8647-400c-aade-e52c242e8012.png)\n\n\nVideos: \n[Mutant](https://twitter.com/gonnavis/status/1434951076365561859),\n[Paladin Shiled](https://twitter.com/gonnavis/status/1461371351197880325),\n[Maria](https://twitter.com/gonnavis/status/1462649045298532356/video/1),\n[Whirlwind](https://twitter.com/gonnavis/status/1462820086054412291/video/1),\n[SwordBlaster](https://twitter.com/gonnavis/status/1463220288468905987),\n[MoveList, Hadouken Shoryuken](https://twitter.com/gonnavis/status/1465219502199562243/video/1),\n[Rebound](https://twitter.com/gonnavis/status/1466799541764517888/video/1),\n[Cloud \u0026 BirdFlock](https://twitter.com/gonnavis/status/1468695103640260609/video/1),\n[Boss](https://twitter.com/gonnavis/status/1470434848925896706).\n\n## Key Map:\n\n[Video](https://twitter.com/gonnavis/status/1465219502199562243)\n\nJ = Attack\n\nJ + J + J = Combo\n\nJ hold charge1 + J + J = Fast Combo\n\nJ hold charge2 + J + J = Sword Blaster\n\nJ \u0026 K \u0026 L = Pop\n\nK = Jump\n\nK + K = Double Jump\n\nK + U = Jump Bash Attack\n\nK + U hold = Earthquake\n\nL hold = Block\n\nL hold + S + D + J = Hadouken\n\nL hold + D + S + D + J = Shoryuken.\n\nL hold + S + A + K = Tatsumaki Senpukyaku.\n\nU hold = Whirlwind\n\nI = Dash\n\nI + J = Dash Attack\n\nO = Launch\n\nO hold = Launch with Jump\n\ntouch wall = climb ( currently only support +-X axis wall, todo: +-Z axis )\n\nwhen climb J = fall\n\n## Ref and Goal:\n    \nAction: **DMC**, **Guilty Gear** ...\n    \nLevel design: **Super Mario 3D Land**, **Rolling Sky** ...\n\nBoth: **Prince of Persia**, **Shadow Blade: Reload**, **The Super Shinobi 2**, **STREETS OF RAGE 3**, **Hades** ...\n    \nStrategy: **Into the Breach**, **StarCraft**, **曹操传** ...\n\nAudio: **Geometry Dash** ...\n\nArt: **Divinity Original Sin 2** ...\n\nCode: [three-pathfinding](https://github.com/donmccurdy/three-pathfinding), [Sketchbook](https://discourse.threejs.org/t/vehicle-physics-with-cannon-js/11769) ...\n\n[Other](https://twitter.com/gonnavis): \n[1](https://twitter.com/gonnavis/status/1442426877390385153)\n[2](https://twitter.com/FluidNinjaLIVE/status/1445897813020196869)\n[3](https://twitter.com/80Level/status/1450084674307600387)\n[4](https://twitter.com/TempleDoorGames/status/1460624431802249219)\n[5](https://twitter.com/riotgames/status/1462201413195350018)\n[6](https://twitter.com/JesseMiettinen/status/1302319385034489857)\n[7](https://twitter.com/KyeonghoonM/status/1464870220636438535)\n[8](https://twitter.com/80Level/status/1452543350381367296)\n[9](https://twitter.com/Assault_Spy/status/1436881155542831111)\n...\n\n## Todo: \n\nPaladin do not hit by pop when shielded.\n\nBoss Fight map.✔️\n\nCombat puzzle map.\n\nTower Defence map.\n\nParkour and combat map.\n\nChallenge map where only rebound attacks can deal damage to enemies.\n\nParrot/PhenixBoss: There's a bird's egg on the aerial platform. After breaking it, flies out of ParrotBoss. Magma rises from the ground to the platform, so player can't go down. Skills are firing barrage bullets, continuously throwing many grenades, and firebird forward charge/dash attack.  \n\nMap: Drive sheepFlock/birdFlock into the fold, as fast as possible. And prevent enemies from killing the flock, as little as possible.\n\nchargeAttack✔️, dashAttack✔️, chargeDash, kick, jumpKick, air attacks✔️, walk, aoe✔️, skill✔️, vfx ...\n\nFix: Do not inflict damage at the start and end of an attack.✔️\n\nIntegrate common state, like `air`.✔️\n\n`dash` can force change orientation.✔️\n\nSwitch to ES6 module and use [cannon-es](https://github.com/pmndrs/cannon-es).✔️\n\n...\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgonnavis%2Fannihilate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgonnavis%2Fannihilate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgonnavis%2Fannihilate/lists"}