{"id":19713976,"url":"https://github.com/ferdikoomen/mini","last_synced_at":"2025-04-29T18:31:41.096Z","repository":{"id":25530879,"uuid":"104356366","full_name":"ferdikoomen/mini","owner":"ferdikoomen","description":"A WebGL and Physics engine demo that allows you to jump a Mini Cooper S straight through a wall of boxes.","archived":true,"fork":false,"pushed_at":"2024-04-05T13:48:08.000Z","size":41729,"stargazers_count":9,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-15T05:16:08.735Z","etag":null,"topics":["physics","threejs","typescript","webgl","webpack"],"latest_commit_sha":null,"homepage":"https://mini.madebyferdi.com","language":"TypeScript","has_issues":false,"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/ferdikoomen.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-21T14:09:13.000Z","updated_at":"2024-10-06T20:50:21.000Z","dependencies_parsed_at":"2024-03-17T20:47:43.419Z","dependency_job_id":null,"html_url":"https://github.com/ferdikoomen/mini","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ferdikoomen%2Fmini","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ferdikoomen%2Fmini/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ferdikoomen%2Fmini/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ferdikoomen%2Fmini/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ferdikoomen","download_url":"https://codeload.github.com/ferdikoomen/mini/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251559955,"owners_count":21609111,"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":["physics","threejs","typescript","webgl","webpack"],"created_at":"2024-11-11T22:27:27.727Z","updated_at":"2025-04-29T18:31:36.087Z","avatar_url":"https://github.com/ferdikoomen.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WebGL demo of a MINI Cooper\n\nA WebGL and Physics engine demo that allows you to jump a Mini Cooper straight through a wall of boxes.\nNote that this is a personal project and is not directly related to [MINI](https://www.mini.co.uk).\n\nInitially this project started out as a research project to learn WebGL: How to export models from [Blender](https://www.blender.org), import them in [Three.js](https://threejs.org), assign materials, create lights, etc. However, along the way I stumbled upon this fascinating [Ammo.js vehicle example](http://kripken.github.io/ammo.js/examples/webgl_demo_vehicle/index.html) and decided to use that as a base for this demo.\n\nI also wanted this demo to work on an iPhone or iPad, so I've created two quality levels: \n**(1)** A low-quality mode that has no antialiasing, no shadows and uses a low-poly model. \n**(2)** A high-quality mode that has antialiasing, real-time shadows and a LOD model, that switches between low-poly and high-poly based on the distance to the camera. \nThe mobile version automatically selects the low-quality mode and displays an overlay with touch controls, allowing you to drive the car around using your mobile as a gamepad. \n\n**Some technical details:**\n- Model via [CG Trader](https://www.cgtrader.com)\n- Written in [TypeScript](https://www.typescriptlang.org)\n- WebGL via [Three.js](https://threejs.org)\n- Physics via [Ammo.js](https://github.com/kripken/ammo.js)\n- Build using [Webpack](https://webpack.github.io)\n\n## Screenshots\n\u003cimg src=\"screenshots/screenshot-desktop-1.png\" alt=\"\" width=\"896\"\u003e\n\u003cimg src=\"screenshots/screenshot-desktop-2.png\" alt=\"\" width=\"896\"\u003e\n\u003cimg src=\"screenshots/screenshot-desktop-3.png\" alt=\"\" width=\"896\"\u003e\n\u003cimg src=\"screenshots/screenshot-desktop-4.png\" alt=\"\" width=\"896\"\u003e\n\u003cimg src=\"screenshots/screenshot-mobile-1.png\" alt=\"\" width=\"896\"\u003e\n\u003cimg src=\"screenshots/screenshot-mobile-2.png\" alt=\"\" width=\"896\"\u003e\n\u003cimg src=\"screenshots/screenshot-mobile-3.png\" alt=\"\" width=\"896\"\u003e\n\n## Demo\n- https://mini.madebyferdi.com\n- \u003ckbd\u003e↑\u003c/kbd\u003e = Accelerate\n- \u003ckbd\u003e↓\u003c/kbd\u003e = Brake / reverse\n- \u003ckbd\u003e←\u003c/kbd\u003e = Steer left\n- \u003ckbd\u003e→\u003c/kbd\u003e = Steer right\n- \u003ckbd\u003ep\u003c/kbd\u003e = Pause physics engine\n- \u003ckbd\u003en\u003c/kbd\u003e = Next step (when paused)\n- \u003ckbd\u003et\u003c/kbd\u003e = Turbo mode\n- \u003ckbd\u003espacebar\u003c/kbd\u003e = Reset car\n\n## Libraries\n- [Three.js](https://threejs.org)\n- [Emscripten](http://kripken.github.io/emscripten-site)\n- [Ammo.js](https://github.com/kripken/ammo.js)\n\n## Install\n```shell\nyarn install\n```\n\n## Run\n```shell\nnpm start\n```\n\n## Release\n```shell\nnpm run release\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fferdikoomen%2Fmini","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fferdikoomen%2Fmini","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fferdikoomen%2Fmini/lists"}