{"id":18248844,"url":"https://github.com/igorski/pinball-schminball","last_synced_at":"2026-03-14T20:04:36.456Z","repository":{"id":184668020,"uuid":"413107769","full_name":"igorski/pinball-schminball","owner":"igorski","description":"Classic vertically scrolling pinball arcade game running in the browser","archived":false,"fork":false,"pushed_at":"2024-12-28T11:50:37.000Z","size":9266,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-14T15:49:35.240Z","etag":null,"topics":["canvas-game","matter-js","pinball","pinball-game","vue3","webgame","zcanvas"],"latest_commit_sha":null,"homepage":"https://www.igorski.nl/application/pinball-schminball","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/igorski.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2021-10-03T14:54:15.000Z","updated_at":"2025-01-27T23:12:34.000Z","dependencies_parsed_at":"2024-11-05T09:41:22.412Z","dependency_job_id":"55069163-2cbc-4189-9a6f-dbe13a2ca466","html_url":"https://github.com/igorski/pinball-schminball","commit_stats":null,"previous_names":["igorski/pinball-schminball"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igorski%2Fpinball-schminball","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igorski%2Fpinball-schminball/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igorski%2Fpinball-schminball/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igorski%2Fpinball-schminball/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/igorski","download_url":"https://codeload.github.com/igorski/pinball-schminball/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247918927,"owners_count":21018044,"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":["canvas-game","matter-js","pinball","pinball-game","vue3","webgame","zcanvas"],"created_at":"2024-11-05T09:38:27.842Z","updated_at":"2026-03-14T20:04:36.425Z","avatar_url":"https://github.com/igorski.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pinball-schminball\n\n_Pinball Schminball_ is a retro-style vertically scrolling pinball game created to showcase the\npossibilities of creating a game using the open source [zCanvas library](https://github.com/igorski/zCanvas)\nfor graphics rendering, this time enriched by using Matter JS as a physics engine.\n\nYou can play the game directly in your browser by [navigating here](https://www.igorski.nl/application/pinball-schminball).\n\n## Data model\n\nIn `@/definitions/game.ts` there are type definitions for all of the game's\nActors (interactive game elements) as well as how to create your own custom pinball table. See `GameDef` and `TableDef`.\n\nThe application is built using Vue, though this is only leveraged to manage basic screen\nswitching and application settings, keeping the game logic outside of any centralized state management.\n\n`App.vue` maintains a (reactive) reference to an active `GameDef`, which describes the current game.\n`pinball-table.vue` manages the game screen, holds a reference to the rendering zCanvas and ties\nthe game in with the model.\n\nAll game related code is actually managed by the Actors and `@/model/game.ts`. All graphics rendering\nis managed by the Actor-specific renderers inside the `@/renderers`-folder.\n\n## Adding a new pinball table\n\nAdd a new `TableDef` inside `@/definitions/tables.ts`. Define all Actors and TriggerGroup behaviours there.\n\nAs for assets, each table requires an SVG shape for its main body (surrounding walls and slopes) and a PNG background (as the SVG shape wil not be visible, but used as a collision map).\n\n## Project setup\n\n```\nnpm install\n```\n\n### Development\n\nCreate a local development server with hot module reload:\n\n```\nnpm run dev\n```\n\nCreating a production build (build output will reside in _./dist/_-folder):\n\n```\nnpm run build\n```\n\nRunning unit tests:\n\n```\nnpm run test\n```\n\nRunning TypeScript validation:\n\n```\nnpm run typecheck\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figorski%2Fpinball-schminball","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Figorski%2Fpinball-schminball","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figorski%2Fpinball-schminball/lists"}