{"id":17855563,"url":"https://github.com/eugenehlushko/threejs-react-pure","last_synced_at":"2025-12-30T23:11:21.288Z","repository":{"id":97928713,"uuid":"74675491","full_name":"EugeneHlushko/threejs-react-pure","owner":"EugeneHlushko","description":null,"archived":false,"fork":false,"pushed_at":"2017-04-14T18:59:59.000Z","size":16007,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-08T08:46:57.160Z","etag":null,"topics":["example","react","react-redux","react-router","reactjs","threejs","webgl","webpack"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/EugeneHlushko.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":"2016-11-24T13:25:24.000Z","updated_at":"2017-02-25T19:59:19.000Z","dependencies_parsed_at":"2023-03-16T04:30:39.152Z","dependency_job_id":null,"html_url":"https://github.com/EugeneHlushko/threejs-react-pure","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/EugeneHlushko%2Fthreejs-react-pure","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EugeneHlushko%2Fthreejs-react-pure/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EugeneHlushko%2Fthreejs-react-pure/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EugeneHlushko%2Fthreejs-react-pure/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EugeneHlushko","download_url":"https://codeload.github.com/EugeneHlushko/threejs-react-pure/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246866099,"owners_count":20846496,"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":["example","react","react-redux","react-router","reactjs","threejs","webgl","webpack"],"created_at":"2024-10-28T02:23:33.172Z","updated_at":"2025-12-30T23:11:21.257Z","avatar_url":"https://github.com/EugeneHlushko.png","language":"JavaScript","readme":"# WebGL boilerplate for scene based experiments powered by React ES6/ES7 and Three.js \n\n### Running the boilerplate\n1) `npm i` - first install dependencies  \n2) `npm start` - just start the webpack and dev server\n\n### Features\n- React ES6/ES7 based three.js playground\n- gui\n- shaders\n- scenes\n- loading\n- saving\n- stats\n- code splitting and pre-loading\n- per scene loading\n- reselect selectors for performance\n\n### Small things\n- Game pause\n- Game pre loader\n- Shader multi-pass system (TBD)\n- Tests covering functionality (TBD)\n\n#### Scope of this boilerplate\n    - React and three.js\n    - Texture pre loading\n    - Models pre loading\n    - Scene pre loading\n    - Player data pre loading\n    - Switching between scenes\n    - Shader pre loading\n    - Multiple shader passes\n\n#### Under consideration to be in scope\n    - Player controls, you might not need a player object in the experiments\n    - Talking to Server, i will just add dummy methods for sagas\n    - Mongo and small api on server side for save/load?\n\n#### Out of scope\n    - World Gravity\n    - Player/enemy Jumping\n\n#### TODO:\n- Intersection between objects\n- Dialog: text and options, callback for choice done.\n- Player object: TODO: Receive Model from modeler;\n- Simple default level switch to next - this requires dialog\n- Add way to include shaderpass\n- Add a way to preload and use models in scenes for objects\n- Reactotron or similar for most convinient redux development experience\n- Consider GSAP for tweens\n- Inventory\n- Eject from create-react-app. Under consideration.\n  - Add node-sass, change styles from pure css to scss. Still not sure on this\n  - Add more rules for webpack, go with webpack 2. Maybe CRA has it by that time.\n  - Extend eslint airbnb config\n- Set up dev/prod environmental builds\n- Deploy to Zeit's `now` to share your experiments with folks\n\n#### Done:\n- ~~Player movement: move over terrain height~~\n- ~~Player controls: moving player over the map with wasd~~\n- ~~Add src to path lookup to avoid `../../xx` imports~~\n- ~~Define scope for BP~~\n- ~~Player reducer~~\n- ~~Routing~~\n- ~~Use store for storing some data across scenes~~\n- ~~Per scene loading, changing levels don't break the game.~~\n- ~~Properly render scene canvases, dont change dom~~","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feugenehlushko%2Fthreejs-react-pure","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feugenehlushko%2Fthreejs-react-pure","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feugenehlushko%2Fthreejs-react-pure/lists"}