{"id":17842855,"url":"https://github.com/8tentaculos/jspacman","last_synced_at":"2026-06-01T01:03:14.291Z","repository":{"id":39012820,"uuid":"280725455","full_name":"8tentaculos/jsPacman","owner":"8tentaculos","description":"JavaScript DOM based remake of the classic Ms. Pac-Man game","archived":false,"fork":false,"pushed_at":"2025-12-24T21:21:03.000Z","size":1384,"stargazers_count":32,"open_issues_count":0,"forks_count":16,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-12-26T09:34:54.724Z","etag":null,"topics":["css","game","html","javascript","pacman"],"latest_commit_sha":null,"homepage":"https://pacman.js.org","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/8tentaculos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"MIT-LICENSE.txt","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-07-18T19:32:56.000Z","updated_at":"2025-12-24T21:20:40.000Z","dependencies_parsed_at":"2024-04-01T03:26:42.341Z","dependency_job_id":"90fe6fb6-64bd-440c-8245-2134cb9eafd3","html_url":"https://github.com/8tentaculos/jsPacman","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"purl":"pkg:github/8tentaculos/jsPacman","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/8tentaculos%2FjsPacman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/8tentaculos%2FjsPacman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/8tentaculos%2FjsPacman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/8tentaculos%2FjsPacman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/8tentaculos","download_url":"https://codeload.github.com/8tentaculos/jsPacman/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/8tentaculos%2FjsPacman/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33755372,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"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":["css","game","html","javascript","pacman"],"created_at":"2024-10-27T21:18:25.419Z","updated_at":"2026-06-01T01:03:14.262Z","avatar_url":"https://github.com/8tentaculos.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\r\n    \u003cimg alt=\"jsPacman logo\" src=\"src/img/stuff/art.png\"\u003e\r\n\u003c/p\u003e\r\n\r\n# jsPacman\r\n\r\nA DOM-based remake of [Ms. Pac-Man](https://en.wikipedia.org/wiki/Ms._Pac-Man) built with vanilla JavaScript.  \r\nUses native ES modules with import maps, no bundler needed.  \r\nBuilt on [rasti](https://github.com/8tentaculos/rasti) for models, event emitters, and minimal view management.  \r\nSprites positioned and animated with CSS transforms. Audio handled via Web Audio API.  \r\nSupports keyboard, gamepad (Gamepad API), and touch input. High scores and settings saved to localStorage.\r\n\r\n## Play Demo\r\n\r\n**[https://pacman.js.org](https://pacman.js.org/)**\r\n\r\n## Features\r\n\r\n* Classic Ms. Pac-Man gameplay with multiple mazes and levels\r\n* Ghost AI with scatter/chase behavior patterns\r\n* Scaling support for different screen sizes\r\n* Cornering behavior for faster movement\r\n* Power pills and bonus items\r\n* Score system with high score tracking\r\n* Lives system with extra life bonuses\r\n* Multiple input methods: keyboard, gamepad, and touch controls\r\n* Main menu with settings and controls info\r\n* Arcade-style screen FX overlay with scanlines (toggleable)\r\n* Sound effects and music\r\n\r\n## Credits\r\n\r\n* Game algorithm is based on [The Pac-Man Dossier](https://pacman.holenet.info/).\r\n* Sprites are from [spriters-resource](http://www.spriters-resource.com/game_boy_advance/namcomuseum/sheet/22732).\r\n\r\n## History\r\n\r\nI started this project in 2013, after about eight years working as a frontend developer on real-time, data-intensive JavaScript applications. At the time, most browser games were still built with Flash, and I wanted to explore what was possible using open web technologies.\r\n\r\nTo stay focused on game mechanics and 2D game algorithms rather than game design, I chose to remake an existing classic. The first version, released in 2014, used DOM-based rendering instead of canvas (which was not yet widely supported), along with jQuery, a simple game plugin, AMD modules, and Grunt.\r\n\r\nOver time, the project went through several refactors while keeping the DOM rendering approach. Dependencies were removed, a small custom game engine was introduced and modern Web APIs were adopted. The current version uses native ES modules in the browser with import maps, removes bundlers entirely, and adds features like scaling, touch, and gamepad support.\r\n\r\n**jsPacman** is both a playable game and a long-running experiment in browser-based game development.\r\n\r\n## Development\r\n\r\nInstall dependencies:\r\n```\r\n$ npm install\r\n```\r\n\r\n### NPM scripts ###\r\n\r\nRun tests:\r\n```\r\n$ npm test\r\n```\r\n\r\nStart development server at `localhost:3000`:\r\n```\r\n$ npm start\r\n```\r\n\r\nPreview production build at `localhost:3000`:\r\n```\r\n$ npm run preview\r\n```\r\n\r\nBuild production bundle:\r\n```\r\n$ npm run build\r\n```\r\n\r\nThe project uses native ES modules with import maps, so no bundler is required during development. The build script only minifies and copies files to the `dist` directory.\r\n\r\n## License\r\n\r\nSource code is open-source and available under the [MIT License](LICENSE).\r\n\r\n## Contributing\r\n\r\nContributions are welcome! Share feature ideas or report bugs on our [GitHub Issues page](https://github.com/8tentaculos/jsPacman/issues).\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F8tentaculos%2Fjspacman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F8tentaculos%2Fjspacman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F8tentaculos%2Fjspacman/lists"}