{"id":13827942,"url":"https://github.com/gamedev-js/gamedev-js","last_synced_at":"2025-07-09T05:31:05.295Z","repository":{"id":135168113,"uuid":"84060977","full_name":"gamedev-js/gamedev-js","owner":"gamedev-js","description":"Game Development in Javascript","archived":false,"fork":false,"pushed_at":"2018-04-16T03:38:42.000Z","size":4718,"stargazers_count":79,"open_issues_count":0,"forks_count":7,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-08-05T09:17:07.111Z","etag":null,"topics":["game","game-development","game-engine","javascript","webgl"],"latest_commit_sha":null,"homepage":"","language":null,"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/gamedev-js.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}},"created_at":"2017-03-06T10:36:48.000Z","updated_at":"2024-03-26T07:05:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"fdcc58a3-7953-47d3-b36b-91121065d52b","html_url":"https://github.com/gamedev-js/gamedev-js","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/gamedev-js%2Fgamedev-js","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamedev-js%2Fgamedev-js/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamedev-js%2Fgamedev-js/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamedev-js%2Fgamedev-js/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gamedev-js","download_url":"https://codeload.github.com/gamedev-js/gamedev-js/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225486485,"owners_count":17481910,"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":["game","game-development","game-engine","javascript","webgl"],"created_at":"2024-08-04T09:02:21.431Z","updated_at":"2024-11-20T07:31:21.304Z","avatar_url":"https://github.com/gamedev-js.png","language":null,"funding_links":[],"categories":["Others"],"sub_categories":[],"readme":"# Game Development in Javascript\n\nThings I used when developing WebGL games.\n\n**NOTE:** This is **NOT** another `awesome-*` repo which contains a huge list of what ever they can. The list below are things I really used and evaluated during my development of WebGL games and libraries. It will not growing too fast and I'm trying to remove seldom used, out-of-date stuffs when there is a better alternative.\n\n## Quick References\n\n  - Math\n    - [Basic Math Symbols](http://www.rapidtables.com/math/symbols/Basic_Math_Symbols.htm)\n    - [Handness in Math](./docs/handness-in-math.md)\n    - [Triangle Functions](./docs/triangle-functions.md)\n    - [Composing Transformations](./docs/composing_transformations.pdf)\n    - [Easings](http://easings.net/)\n    - [Tweeny Easing Functions](http://greggman.github.io/doodles/tweeny-graph.html)\n    - [Math For Motion](https://soulwire.co.uk/math-for-motion/)\n  - Graphics\n    - [blending](https://threejs.org/examples/#webgl_materials_blending)\n    - [blending-custom](https://threejs.org/examples/#webgl_materials_blending_custom)\n    - [PBR Cheat Sheet](https://www.artstation.com/artwork/YeBr3)\n  - API References\n    - [HTML Canvas Cheatsheet](https://skilled.co/html-canvas/images/HTML_Canvas_Cheatsheet.pdf)\n    - [WebGL Quick Reference](https://www.khronos.org/files/webgl/webgl-reference-card-1_0.pdf)\n    - [OpenGL ES shading language reference](http://www.shaderific.com/glsl/)\n    - [OpenGL 4.3 Quick Reference](https://www.khronos.org/files/opengl43-quick-reference-card.pdf)\n    - [docs.GL (OpenGL API Documentation)](http://docs.gl/)\n  - Language\n    - [The Modern JavaScript Tutorial](https://javascript.info/)\n  - Game Engine Source\n    - [UnityDecompiled](https://github.com/MattRix/UnityDecompiled)\n    - [UnrealEngine](https://github.com/EpicGames/UnrealEngine)\n  - Misc\n    - [Input Lag](./docs/input-lag.md)\n    - [Lighintg Guide](./docs/lighting-guide.md)\n    - [awesome-creative-coding](https://github.com/terkelg/awesome-creative-coding)\n    - [A Study Path for Game Programmer](https://github.com/miloyip/game-programmer)\n\n## Graphics Development (mainly for WebGL)\n\n  - API Wrapper\n    - [regl](https://github.com/regl-project/regl)\n    - [twgl.js](https://github.com/greggman/twgl.js)\n  - Math\n    - [vmath](https://github.com/gamedev-js/vmath)\n    - [gl-matrix](https://github.com/toji/gl-matrix)\n    - [bit-twiddle](https://github.com/mikolalysenko/bit-twiddle)\n    - Performance Discussion\n      - **Conclusion:** Hidden Classes + Inline Caching is much faster than Typed Array in both creating and indexing.\n      - [vecmath#performance](https://github.com/mattdesl/vecmath#performance)\n      - [three.js#1703: Vertex to extend Vector3?](https://github.com/mrdoob/three.js/issues/1703)\n      - [cannon.js#8: Float32Array vs Vec3](https://github.com/schteppe/cannon.js/issues/8)\n      - [Efficient JavaScript Vector Math](http://media.tojicode.com/sfjs-vectors/)\n        - This slides is wrong about Typed Array indexing performance, actually the Vector object wins.\n  - Geometry\n    - [cdt2d](https://github.com/mikolalysenko/cdt2d)\n    - [earcut](https://github.com/mapbox/earcut)\n    - [lineclip](https://github.com/mapbox/lineclip)\n    - [geometry-processing-js](https://github.com/GeometryCollective/geometry-processing-js)\n    - [poly-decomp.js](https://github.com/schteppe/poly-decomp.js)\n  - Post Process\n    - [StackBlur](https://github.com/flozz/StackBlur)\n  - Platform Support\n    - [WebGL Report](http://webglreport.com/)\n    - [WebGL Texture Tester](http://toji.github.io/texture-tester/)\n    - [WebGL Stats](http://webglstats.com/)\n  - Shader Transpiling\n    - [glslify](https://github.com/stackgl/glslify)\n  - Misc\n    - [Beware of Transparent Pixels](http://www.adriancourreges.com/blog/2017/05/09/beware-of-transparent-pixels/)\n\n## Audio Development\n\n  - [web-audio-engine](https://github.com/mohayonao/web-audio-engine)\n  - [pizzicato](https://github.com/alemangui/pizzicato)\n\n## Engine Development\n\n  - Data Structure\n    - [memop](https://github.com/gamedev-js/memop)\n    - [BitArray.js](https://github.com/brockwhittaker/BitArray.js)\n  - Resource Loader\n    - [resource-loader](https://github.com/englercj/resource-loader)\n    - [resl](https://github.com/regl-project/resl)\n  - Event\n    - [EventEmitter2](https://github.com/asyncly/EventEmitter2)\n    - [EventEmitter3](https://github.com/primus/eventemitter3)\n  - Input\n    - [input.js](http://github.com/gamedev-js/input.js)\n    - [hammer.js](https://github.com/hammerjs/hammer.js)\n  - Animation\n    - [fullik](https://github.com/lo-th/fullik)\n  - Tween\n    - [bezier-easing](https://github.com/gre/bezier-easing)\n    - [tween.js](https://github.com/tweenjs/tween.js)\n    - [anime](https://github.com/juliangarnier/anime)\n    - [mojs](https://github.com/legomushroom/mojs)\n    - [kute.js](https://github.com/thednp/kute.js)\n  - Particle\n    - [Proton](https://github.com/a-jie/Proton)\n      - [three.proton](https://github.com/a-jie/three.proton)\n    - [particulate-js](https://github.com/jpweeks/particulate-js)\n  - Physics\n    - [verlet-js](https://github.com/subprotocol/verlet-js)\n    - 2D\n      - [p2.js](https://github.com/schteppe/p2.js)\n      - [planck.js](https://github.com/shakiba/planck.js)\n      - [matter-js](https://github.com/liabru/matter-js)\n    - 3D\n      - [cannon.js](https://github.com/schteppe/cannon.js)\n      - [Oimo.js](https://github.com/lo-th/Oimo.js)\n      - [ammo.js](https://github.com/kripken/ammo.js/)\n\n## Authoring Tools Development\n\n  - [electron-utils](https://github.com/electron-utils)\n  - [SonyWWS/ATF](https://github.com/SonyWWS/ATF)\n  - [litegraph.js](https://github.com/jagenjo/litegraph.js)\n  - [mxgraph](https://github.com/jgraph/mxgraph)\n  - [das-ui](https://github.com/szymonkaliski/DAS-UI)\n\n## Multiplayer Development\n\n  - [HappyFunTimes](https://github.com/greggman/HappyFunTimes)\n  - [SocketCluster](http://socketcluster.io/)\n    - [iogrid](https://github.com/SocketCluster/iogrid)\n\n## Build Tools\n\n  - [bash-concurrent](https://github.com/themattrix/bash-concurrent)\n  - [rollup](https://github.com/rollup/rollup/)\n  - [buble](https://gitlab.com/Rich-Harris/buble)\n\n## Authoring Tools\n\n  - Scene Design\n    - [webglstudio.js](https://github.com/jagenjo/webglstudio.js)\n    - [three.js editor](https://threejs.org/editor/)\n    - [Structure Synth](http://structuresynth.sourceforge.net/index.php)\n  - Math\n    - [ganja.js](https://github.com/enkimute/ganja.js)\n  - Modeling\n    - [solvespace](https://github.com/solvespace/solvespace)\n    - [blender](https://www.blender.org/)\n    - [SketchUp](https://www.sketchup.com/)\n  - VFX\n    - [PopcornFX](https://www.popcornfx.com/)\n  - Shading\n    - [shadergraph](https://github.com/unconed/shadergraph)\n    - [kodelife](https://hexler.net/software/kodelife)\n      - [ShaderSketches](https://github.com/keijiro/ShaderSketches)\n    - [glslEditor](https://github.com/patriciogonzalezvivo/glslEditor)\n    - [Shadertoy](https://www.shadertoy.com/)\n    - [GLSLbin](http://glslb.in/)\n    - [GLSL Sandbox](http://glslsandbox.com/)\n  - Procedural Texture\n    - [texgen.js](https://github.com/mrdoob/texgen.js/)\n    - [simplex-noise.js](https://github.com/jwagner/simplex-noise.js)\n    - [webgl-noise](https://github.com/ashima/webgl-noise)\n  - Curve\n    - [fit-curve](https://github.com/soswow/fit-curve)\n  - Timeline\n    - [neo](https://github.com/lo-th/neo)\n    - [timeline.js](https://github.com/vorg/timeline.js)\n    - [spirit](https://github.com/spirit/spirit)\n  - GamePlay\n    - [rot.js](https://github.com/ondras/rot.js)\n\n## Data Pipeline Tools\n\n  - Resource Parser\n    - [opentype.js](https://github.com/nodebox/opentype.js)\n    - [parsers in three.js](https://github.com/mrdoob/three.js/tree/dev/examples/js/loaders)\n    - [binary-parser](https://github.com/keichi/binary-parser)\n    - [jBinary](https://github.com/jDataView/jBinary)\n  - Geometry\n    - [glTF](https://github.com/KhronosGroup/glTF)\n    - [meshoptimizer](https://github.com/zeux/meshoptimizer)\n  - Font\n    - [msdfgen](https://github.com/Chlumsky/msdfgen)\n  - Lighting\n    - [cmft](https://github.com/dariomanesku/cmft)\n    - [IBLBaker](https://github.com/derkreature/IBLBaker)\n    - [aobaker](https://github.com/prideout/aobaker)\n    - [LuminanceHDR](https://github.com/LuminanceHDR/LuminanceHDR)\n    - [envtools](https://github.com/cedricpinson/envtools)\n\n## Performance Monitor\n\n - [lstats.js](https://github.com/gamedev-js/lstats.js)\n - [pstats.js](https://github.com/gamedev-js/pstats.js)\n\n## Test Utils\n\n  - [preview-server](https://github.com/gamedev-js/preview-server)\n  - [faker.js](https://github.com/Marak/faker.js)\n  - [headless-gl](https://github.com/stackgl/headless-gl)\n  - [gl-shader-output](https://github.com/Jam3/gl-shader-output)\n  - UI\n    - [uil](https://github.com/lo-th/uil)\n    - [xgui.js](https://github.com/oosmoxiecode/xgui.js)\n    - [control-panel](https://github.com/freeman-lab/control-panel)\n    - [oui](https://github.com/wearekuva/oui)\n    - [dis-gui](https://github.com/wwwtyro/dis-gui)\n\n## Debug\n\n  - [Spector.js](https://github.com/BabylonJS/Spector.js)\n  - [WebGL-Inspector](http://benvanik.github.io/WebGL-Inspector/)\n  - [glsl-numerify](https://github.com/realazthat/glsl-numerify)\n  - Devtools\n    - [insight](https://github.com/3Dparallax/insight)\n    - [audion](https://github.com/google/audion)\n    - [vector-devtools](https://github.com/disjukr/vector-devtools)\n    - [devtools-frontend](https://github.com/ChromeDevTools/devtools-frontend)\n      - [devtools source in chromium](https://chromium.googlesource.com/chromium/src.git/+/master/third_party/WebKit/Source/devtools)\n  - Mobile\n    - [eruda](https://github.com/liriliri/eruda)\n    - [vConsole](https://github.com/WechatFE/vConsole)\n    - [jsconsole](https://github.com/remy/jsconsole)\n    - [各种真机远程调试方法汇总](https://github.com/jieyou/remote_inspect_web_on_real_device)\n\n## Optimization\n\n  - [benchmark.js](https://github.com/bestiejs/benchmark.js)\n  - [optimize-js](https://github.com/nolanlawson/optimize-js)\n  - [disc](https://github.com/hughsk/disc)\n  - [jsperf.com](https://jsperf.com/)\n  - [prepack](https://github.com/facebook/prepack)\n\n## Demo Tools\n\n  - [ccapture.js](https://github.com/spite/ccapture.js)\n  - [gifgen](https://github.com/lukechilds/gifgen)\n  - [screengif](https://github.com/dergachev/screengif)\n\n## Documentation Development\n\n  - [mermaid](https://github.com/knsv/mermaid)\n  - [documentation.js](https://github.com/documentationjs/documentation)\n  - Guideline\n    - [Airbnb: JavaScript Style Guide](https://github.com/airbnb/javascript)\n    - [JavaScript SDK Design Guide](https://github.com/hueitan/javascript-sdk-design)\n    - [中文文案排版指北](https://github.com/sparanoid/chinese-copywriting-guidelines)\n\n## Publish\n\n  - [Front End Checklist](https://github.com/thedaviddias/Front-End-Checklist)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgamedev-js%2Fgamedev-js","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgamedev-js%2Fgamedev-js","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgamedev-js%2Fgamedev-js/lists"}