{"id":20789565,"url":"https://github.com/victorqribeiro/towerdefense","last_synced_at":"2025-05-05T19:44:31.670Z","repository":{"id":40439592,"uuid":"302958337","full_name":"victorqribeiro/towerDefense","owner":"victorqribeiro","description":"A tower defense game written in vanilla JavaScript","archived":false,"fork":false,"pushed_at":"2023-10-14T05:57:51.000Z","size":9482,"stargazers_count":27,"open_issues_count":0,"forks_count":4,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-30T23:11:15.249Z","etag":null,"topics":["javascript","tower-defense"],"latest_commit_sha":null,"homepage":"https://victorribeiro.com/towerDefense/","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/victorqribeiro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"patreon":"victorqribeiro"}},"created_at":"2020-10-10T17:47:33.000Z","updated_at":"2025-03-22T02:16:41.000Z","dependencies_parsed_at":"2024-11-17T15:31:56.605Z","dependency_job_id":"1b959a90-0860-4ee9-ba3e-b88f7b931a7b","html_url":"https://github.com/victorqribeiro/towerDefense","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/victorqribeiro%2FtowerDefense","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/victorqribeiro%2FtowerDefense/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/victorqribeiro%2FtowerDefense/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/victorqribeiro%2FtowerDefense/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/victorqribeiro","download_url":"https://codeload.github.com/victorqribeiro/towerDefense/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252564176,"owners_count":21768606,"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":["javascript","tower-defense"],"created_at":"2024-11-17T15:24:56.015Z","updated_at":"2025-05-05T19:44:31.637Z","avatar_url":"https://github.com/victorqribeiro.png","language":"JavaScript","funding_links":["https://patreon.com/victorqribeiro"],"categories":[],"sub_categories":[],"readme":"# Tower Defense [W.I.P]\n\nA (unfinished) tower defense game written in vanilla JavaScript.\n\n![screenshot](screenshot.png)\n\n[Live version](https://victorribeiro.com/towerDefense/)\n\nSafari (iOs) users may need to disable [Prevent cross-site tracking](https://support.apple.com/guide/safari/prevent-cross-site-tracking-sfri40732/mac) to view canvas applications, such as this game.\n\n## Controls\n\nMouse / Left click - Select objects and place towers.\n\nKeyboard keys:  \n**1** - Single Cannon Tower\n\n**2** - Double Cannon Tower\n\n**3** - Double Missile Launcher\n\n**4** - Single Missile Launcher\n\n**D** - Deletes a selected item\n\n**Enter** - Calls the wave of enemies\n\n**Space** - Pause game\n\n*To either buy or delete items you need to have money*\n\n\n## ToDo\n\n* Finish the game\n  * Right now this is more a prototype than a game, since it doesn't end.\n  * Implement victory\n  * Implement defeat\n* Refactor code\n  * Remove some redundancies (Almost every class has a distance function)\n  * Create utils.js and move helper functions to it (including a general distance function)\n  * Check for hardcoded values\n* Create GUI\n  * Mobile\n  * Desktop\n* Improve enemies\n  * Airplanes behavior\n  * Tanks aggressiveness\n* Balance game\n  * Price of towers\n  * Amount of money you get by killing a enemie\n  * How much damage each tower does\n  * How much damage each tank does\n* Create world map\n  * A world map consists in a pack of levels of increasingly difficulty\n* Level generation\n  * Improve level generation\n  * Export function so it can be called from the browser to generate new levels\n* Sound Manager\n  * Merge sound and music manager\n  * Add playlist to the transiction feature (smoothly going from a song to another)\n* Fix worker and manifest.json to it can be installed as a PWA\n\n## For Programmers\n\nIf you open the console and call:\n\n**reload()** - It start cycling to all possible texture combinations\n\n**transposeMap()** - It transposes the map. Intended to adapt the map for both horizontal and vertical screens\n\nNavigate to *levelGenerator* folder and call:\n\n```bash\nnode levelGen.js\n```\n\nto generate a new map (saves a *map.json* file in the parent folder)\n\n## Credits\n\nTextures by Kenney - [www.kenney.nl](https://www.kenney.nl)\n\nSounds from everywhere - I'll keep better track of where I got the sound and music next time, sorry\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvictorqribeiro%2Ftowerdefense","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvictorqribeiro%2Ftowerdefense","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvictorqribeiro%2Ftowerdefense/lists"}