{"id":13804954,"url":"https://github.com/keep-starknet-strange/tsubasa","last_synced_at":"2025-10-05T05:59:30.543Z","repository":{"id":184247469,"uuid":"671512341","full_name":"keep-starknet-strange/tsubasa","owner":"keep-starknet-strange","description":"Tsubasa onchain game built with Dojo, running on a Starknet Appchain.","archived":false,"fork":false,"pushed_at":"2023-11-27T12:46:40.000Z","size":28592,"stargazers_count":59,"open_issues_count":8,"forks_count":31,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-08-05T01:11:10.529Z","etag":null,"topics":["cairo","dojoengine","onchain-gaming","starknet"],"latest_commit_sha":null,"homepage":"https://play.tsubasa.win","language":"TypeScript","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/keep-starknet-strange.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"docs/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-07-27T13:40:20.000Z","updated_at":"2024-07-23T11:35:24.000Z","dependencies_parsed_at":"2024-01-21T20:14:47.510Z","dependency_job_id":null,"html_url":"https://github.com/keep-starknet-strange/tsubasa","commit_stats":null,"previous_names":["keep-starknet-strange/tsubasa"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keep-starknet-strange%2Ftsubasa","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keep-starknet-strange%2Ftsubasa/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keep-starknet-strange%2Ftsubasa/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keep-starknet-strange%2Ftsubasa/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keep-starknet-strange","download_url":"https://codeload.github.com/keep-starknet-strange/tsubasa/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225254266,"owners_count":17445153,"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","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":["cairo","dojoengine","onchain-gaming","starknet"],"created_at":"2024-08-04T01:00:55.651Z","updated_at":"2025-10-05T05:59:25.491Z","avatar_url":"https://github.com/keep-starknet-strange.png","language":"TypeScript","funding_links":[],"categories":["Open-source projects"],"sub_categories":[],"readme":"\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"docs/images/tsubasa-logo.png\" height=\"256\"\u003e\n\u003c/div\u003e\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n# Tsubasa\n\nTsubasa onchain game running on Starknet Appchain.\n\n[![Project license](https://img.shields.io/github/license/keep-starknet-strange/tsubasa.svg?style=flat-square)](LICENSE)\n[![Pull Requests welcome](https://img.shields.io/badge/PRs-welcome-ff69b4.svg?style=flat-square)](https://github.com/keep-starknet-strange/tsubasa/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22)\n\n## About\n\nTsubasa is a football game based on the popular manga series of the same name. It's a simulation based on the rules of the game, but with a twist: the players are able to use superhuman techniques, such as the Tiger Shot, to make the game more exciting.\n\nThe game leverages the [Dojo Engine](https://dojoengine.org/), a provable game engine and toolchain for building onchain games and autonomous worlds with Cairo.\n\nIt can run on the public [Starknet](https://www.starknet.io/), or on a Starknet Appchain using [Madara](https://github.com/keep-starknet-strange/madara).\n\n## How to play\n\n### Rules\n\n#### Decks\n\n* Each player has a deck that he prepared before the game\n* Each deck is composed of 8 cards\n* There are 24 cards available in the game (for now).\n\n#### Game\n\n1. A game is composed of multiple rounds\n2. The first player to win 2 rounds wins the game\n3. To win a round a player has to score a goal\n4. Each player can place 4 cards at most on the field\n5. When you place a card on the board it'll wait on side until your next turn to enter the field\n6. To place a card you'll need to spend the amount of energy specified on it\n7. The energy level is reset and increased at each turn\n8. You can place multiple cards on the board during 1 turn\n9. Each card has 2 statistics dribble/defense\n10. If you place your card in its real role it will have +1 in dribble and in defense\n11. The defense is the ability to counter a dribble. If a card A (6 dribble, 3 defense) attacks a card B (2 dribble, 4 defense). The card A will dribble B for sure because 6 \u003e= 4 and will go out of the game. A will stay in the game because 3 \u003e= 2 but A’s defense will be decremented to 1.\n12. You can define your team captain while creating your deck. Your team captain will have +1 in dribble and defense.\n13. When the adversary board is empty, your cards will score a goal and you'll win the round\n14. If both players don't have cards anymore the round is a draw\n15. The number of rounds played to finish a game is unlimited\n\n## Components\n\n### Onchain smart contracts\n\nOnchain part of the game is located in `onchain` directory.\n\nIt's a set of Starknet smart contracts written in Cairo.\n\nThe project is using [dojo](https://github.com/dojoengine/dojo). If you are not familiar with it, please read the [Dojo book](https://book.dojoengine.org/).\n\nYou absolutely need to install the dojo toolchain if you want to do anything related to smart contracts.\n\n```sh\ncurl -L https://install.dojoengine.org | bash\ndojoup\n```\n\nFor a more detailed onboarding please read the [installation guide](https://book.dojoengine.org/getting-started/installation.html)\n\n#### Run tests\n\nWithin `contracts` directory run:\n\n```bash\nsozo test\n```\n\nYou should see something like this:\n\n```bash\nUpdating git repository https://github.com/dojoengine/dojo\nrunning 2 tests\ntest tsubasa::card::tests::test_move ... ok\ntest tsubasa::game::tests::test_move ... ok\ntest result: ok. 2 passed; 0 failed; 0 ignored; 0 filtered out;\n```\n\n## Frontend\n\nWithin `game-app` directory run:\n\n```bash\nnpm i\nnpm run dev\n```\n\nYou should see something like this:\n\n```sh\n\u003e game-app@0.1.0 dev\n\u003e next dev\n\n- ready started server on 0.0.0.0:3000, url: http://localhost:3000\n- event compiled client and server successfully in 79 ms (20 modules)\n- wait compiling...\n- event compiled client and server successfully in 87 ms (20 modules)\n```\n\n## 🤝 Contribute\n\nWe're always looking for passionate developers to join our community and\ncontribute to Tsubasa. Check out our [contributing guide](./docs/CONTRIBUTING.md)\nfor more information on how to get started.\n\n## 📖 License\n\nThis project is licensed under the **MIT license**.\n\nSee [LICENSE](LICENSE) for more information.\n\nHappy coding! 🎉\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/abdelhamidbakhta\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/45264458?v=4?s=100\" width=\"100px;\" alt=\"Abdel @ StarkWare \"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAbdel @ StarkWare \u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/keep-starknet-strange/tsubasa/commits?author=abdelhamidbakhta\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/LucasLvy\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/70894690?v=4?s=100\" width=\"100px;\" alt=\"Lucas @ StarkWare \"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eLucas @ StarkWare \u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/keep-starknet-strange/tsubasa/commits?author=LucasLvy\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/keep-starknet-strange/tsubasa/commits?author=LucasLvy\" title=\"Documentation\"\u003e📖\u003c/a\u003e \u003ca href=\"https://github.com/keep-starknet-strange/tsubasa/commits?author=LucasLvy\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/clicksave\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/3332646?v=4?s=100\" width=\"100px;\" alt=\"clicksave\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eclicksave\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#design-clicksave\" title=\"Design\"\u003e🎨\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/ElegantShinobi\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/141261475?v=4?s=100\" width=\"100px;\" alt=\"ElegantShinobi\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eElegantShinobi\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#design-ElegantShinobi\" title=\"Design\"\u003e🎨\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/YohanTz\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/37301269?v=4?s=100\" width=\"100px;\" alt=\"Yohan @ScreenshotLabs\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eYohan @ScreenshotLabs\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/keep-starknet-strange/tsubasa/commits?author=YohanTz\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/keep-starknet-strange/tsubasa/commits?author=YohanTz\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/rkdud007\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/76558220?v=4?s=100\" width=\"100px;\" alt=\"Pia\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePia\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/keep-starknet-strange/tsubasa/commits?author=rkdud007\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/keep-starknet-strange/tsubasa/commits?author=rkdud007\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/hypekn1ght\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/95952749?v=4?s=100\" width=\"100px;\" alt=\"A5Farmer\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eA5Farmer\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/keep-starknet-strange/tsubasa/commits?author=hypekn1ght\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/keep-starknet-strange/tsubasa/commits?author=hypekn1ght\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n      \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/notV4l\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/122404722?v=4?s=100\" width=\"100px;\" alt=\"notV4l\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003enotV4l\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/keep-starknet-strange/tsubasa/commits?author=notV4l\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/keep-starknet-strange/tsubasa/commits?author=notV4l\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/TeddyNotBear\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/106410805?v=4?s=100\" width=\"100px;\" alt=\"Teddy Not Bear\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eTeddy Not Bear\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/keep-starknet-strange/tsubasa/commits?author=TeddyNotBear\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/keep-starknet-strange/tsubasa/commits?author=TeddyNotBear\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/ayushtom\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/41674634?v=4?s=100\" width=\"100px;\" alt=\"Ayush Tomar\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAyush Tomar\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/keep-starknet-strange/tsubasa/commits?author=ayushtom\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/keep-starknet-strange/tsubasa/commits?author=ayushtom\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/remiroyc\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/11146088?v=4?s=100\" width=\"100px;\" alt=\"Rémi Roycourt\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRémi Roycourt\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/keep-starknet-strange/tsubasa/commits?author=remiroyc\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/keep-starknet-strange/tsubasa/commits?author=remiroyc\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/dbejarano820\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/58019353?v=4?s=100\" width=\"100px;\" alt=\"Daniel Bejarano\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eDaniel Bejarano\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/keep-starknet-strange/tsubasa/commits?author=dbejarano820\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/keep-starknet-strange/tsubasa/commits?author=dbejarano820\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/Matth26\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/9798638?v=4?s=100\" width=\"100px;\" alt=\"Matthias\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eMatthias\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/keep-starknet-strange/tsubasa/commits?author=Matth26\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/keep-starknet-strange/tsubasa/commits?author=Matth26\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/WhoIsNac\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/90337466?v=4?s=100\" width=\"100px;\" alt=\"0xNac\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003e0xNac\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/keep-starknet-strange/tsubasa/commits?author=WhoIsNac\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"https://github.com/keep-starknet-strange/tsubasa/commits?author=WhoIsNac\" title=\"Tests\"\u003e⚠️\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeep-starknet-strange%2Ftsubasa","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeep-starknet-strange%2Ftsubasa","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeep-starknet-strange%2Ftsubasa/lists"}