{"id":14981222,"url":"https://github.com/1j01/pipes","last_synced_at":"2025-04-06T12:11:48.934Z","repository":{"id":16548891,"uuid":"19302560","full_name":"1j01/pipes","owner":"1j01","description":"💿 Classic 3D Pipes screensaver remake (web-based)","archived":false,"fork":false,"pushed_at":"2022-06-28T02:11:50.000Z","size":1378,"stargazers_count":372,"open_issues_count":6,"forks_count":47,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-03-30T11:08:42.597Z","etag":null,"topics":["candy-cane","classic","pipes","remake","retro","screensaver","three-d","three-js","threejs","utah-teapot","web-screensaver"],"latest_commit_sha":null,"homepage":"https://1j01.github.io/pipes/","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/1j01.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}},"created_at":"2014-04-30T05:59:22.000Z","updated_at":"2025-03-28T21:07:07.000Z","dependencies_parsed_at":"2022-08-04T09:45:21.354Z","dependency_job_id":null,"html_url":"https://github.com/1j01/pipes","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/1j01%2Fpipes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1j01%2Fpipes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1j01%2Fpipes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1j01%2Fpipes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/1j01","download_url":"https://codeload.github.com/1j01/pipes/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247478324,"owners_count":20945266,"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":["candy-cane","classic","pipes","remake","retro","screensaver","three-d","three-js","threejs","utah-teapot","web-screensaver"],"created_at":"2024-09-24T14:03:10.078Z","updated_at":"2025-04-06T12:11:48.892Z","avatar_url":"https://github.com/1j01.png","language":"JavaScript","funding_links":[],"categories":["\u003cimg src=\"media/icons8-windows-11-48.png\" alt=\"logo\" width=\"36\"/\u003e  WINDOWS"],"sub_categories":[],"readme":"# [![](images/meta/icon-32x32.png) Pipes](https://1j01.github.io/pipes/)\n\nA web-based remake of the Windows 3D Pipes screensaver (3D Pipes.scr or sspipes.scr) using [Three.js](https://threejs.org/)\n\nIncludes both [Utah Teapots](https://en.wikipedia.org/wiki/Utah_teapot) and candy cane easter eggs! (with increased chances 😏)\n\n[Check it out!](https://1j01.github.io/pipes/)\n\nIt's also included in [98.js.org](https://98.js.org/) as a program you can run.\n\n[![](images/meta/screencap.gif)](https://1j01.github.io/pipes/)\n\n(This screen capture GIF is outdated. It now avoids collisions between pipes and implements the dissolve effect for fading out.)\n\n## TODO\n\n- Add back smooth fade out as an option, now that a dissolve effect is implemented\n\n- Add control for speed\n\n- Animate sections into existence, emulating CPU graphics where the triangles were drawn progressively and the screen updated in between \"frames\" (optionally)\n\n- Improve lighting (the original was less shiny), or at least avoid unflattering camera angles\n\n- Use a palette (what palette? please help with this)\n\n- Extra camera functions like continuous rotation, maybe even following the pipes like a rollercoaster\n\n- Allow moving camera during dissolve transition (it's kinda unpleasant how it stops you (abruptly), and the effect is implemented as an overlay anyways)\n\n- Save options to local storage, or maybe in the URL\n\n- Custom textures with drag and drop (and also a file input)\n  (can accept multiple textures, for it to choose from randomly (pulling from a bag and not replacing them))\n\n- Proper elbow joints (currently uses a sphere (smaller than the ball joint so it doesn't stick out) rather than a section of a torus);\n  could use [spline extrusion](https://threejs.org/examples/#webgl_geometry_extrude_splines) rather than trying to align a torus section every which way (if it actually helps)\n\n- Implement different behavioral characteristics between pipes\n\n- Follow-the-leader mode\n\n- Update README GIF\n\n- An API maybe?\n\n## See Also\n\n##### Mine / Affiliated\n\n- [98.js: a recreation of the Windows 98 desktop](https://github.com/1j01/98)\n\n- [NW Screensaver: a platform for running web pages as screensavers](https://github.com/1j01/nw-screensaver)\n\n##### Unaffiliated\n\n- [Screensaver Subterfuge: a game set in the 3D maze screensaver](https://poor-track-design.itch.io/screensaver-subterfuge)\n\n## License\n\nMIT-licensed; see [LICENSE](LICENSE) for details\n\n## Development\n\n### Live Server\n\nYou just need an HTTP server, but [Live Server](https://www.npmjs.com/package/live-server) is a great option, automatically reloading when you make changes.\n\n### Prettier\n\n[Prettier](https://prettier.io/) is used for code formatting.\n\nTo set up, including a pre-commit hook:\n\n- Install [Node.js](https://nodejs.org/) if you don't already have it\n- Run `npm i` in the project directory\n\nA pre-commit hook can be surprising tho; formatting on save might be better...\n\n### Reference Material\n\nThe source code for the original OpenGL screensavers can be found in [a version of the Windows SDK (for Windows NT 4.0)](https://winworldpc.com/download/3d03c2ad-c2ad-18c3-9a11-c3a4e284a2ef), in `MSTOOLS\\SAMPLES\\OPENGL\\SCRSAVE`\n\n(If you have a later version of the code, please let me know.)\n\n### Project Structure\n\nAll the good stuff is in `screensaver.js`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F1j01%2Fpipes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F1j01%2Fpipes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F1j01%2Fpipes/lists"}