{"id":13534266,"url":"https://github.com/irrelon/ige","last_synced_at":"2025-05-14T23:07:32.687Z","repository":{"id":3947778,"uuid":"5040057","full_name":"Irrelon/ige","owner":"Irrelon","description":"The Isogenic Game Engine","archived":false,"fork":false,"pushed_at":"2025-02-23T16:26:10.000Z","size":120133,"stargazers_count":542,"open_issues_count":17,"forks_count":142,"subscribers_count":225,"default_branch":"stable","last_synced_at":"2025-05-14T23:07:24.479Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/Irrelon.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":"2012-07-14T02:29:43.000Z","updated_at":"2025-05-12T02:44:50.000Z","dependencies_parsed_at":"2025-03-20T20:29:37.951Z","dependency_job_id":null,"html_url":"https://github.com/Irrelon/ige","commit_stats":{"total_commits":2474,"total_committers":24,"mean_commits":"103.08333333333333","dds":"0.13257881972514152","last_synced_commit":"f02fe6e2626704f9ac3e489459ae7ccae19d148d"},"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Irrelon%2Fige","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Irrelon%2Fige/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Irrelon%2Fige/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Irrelon%2Fige/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Irrelon","download_url":"https://codeload.github.com/Irrelon/ige/tar.gz/refs/heads/stable","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254243362,"owners_count":22038046,"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":[],"created_at":"2024-08-01T07:01:29.185Z","updated_at":"2025-05-14T23:07:27.677Z","avatar_url":"https://github.com/Irrelon.png","language":"JavaScript","readme":"# Isogenic Game Engine\n\nHTML5 2D and isometric scenegraph-based game engine written entirely in TypeScript / JavaScript.\n\n## Main Features\n\n- Full un-obfuscated source code\n- Advanced networking system with built-in server\n- Particle system\n- Scenegraph-based\n- Tile maps\n- Box2D physics component for easy integration with 2d and isometric games\n- Multiple viewport support\n- Tweening support\n- Cell-based animation support\n- Native and font-sheet text support\n- WebGPU support is incoming, currently all the above renders using canvas 2d context\n\n## Latest Updates \u0026 Changelog\n\n### Version 3.0.2\n\n#### Module Based Import\n\nFrom version 3.0.1 the engine expects to be installed into a project and used as\na module via npm:\n\n```bash\nnpm i @irrelon/ige\n```\n\nYou should use the engine via an import statement:\n\n```typescript\nimport { ige } from \"@irrelon/ige\";\n```\n\n#### Streaming Transform Data\n\nThe stream code has been updated so any transform data (translate, rotate and scale)\nsent to the client/s by the server are no longer directly assigned via\n`this._translate.x = streamData.x` and instead are passed to the transform method\nrelated to the data e.g. `this.translateTo(streamData.x, streamData.y, streamData.z);`\n\nThe same goes for rotateTo() and scaleTo(). This is so that code is written that\noverrides those base class methods will get called correctly when the streamed\nentity is transformed. Previously there was no way to detect that a transform had\nchanged by streaming data.\n\n#### IGE Initialisation\n\n\u003e The optional modules you can call uses() for are currently:\n\u003e `network`, `audio`, `box2d`, `tweening` and `ui`\n\nThe engine expects you to specify some of the previously auto-included modules\nthat are now optional, then wait for them to load. For instance, if your app\nis using networking you should tell the engine about that up front via\n\n```typescript\nige.uses(\"network\");\n```\n\nYou should call this for each module you wish to use before calling `ige.init();`.\n\nAfter you've specified all the modules via uses() calls, you need to call `init()`\nand then wait for the isReady signal before proceeding further:\n\n```typescript\nige.uses(\"network\");\nige.uses(\"ui\");\n\n// Now tell the engine we are OK to proceed, having declared what we want to use\nige.init();\n\n// Now wait for the engine\nige.isReady().then(() =\u003e {\n\t// Proceed with the rest of your code\n});\n```\n\n### Version 3.0.0\n\nThe original engine was written over 12 years ago, and it is a testament to that work\nthat it is still by far the most feature-rich browser-based game engine available today.\nThere is still NO OTHER engine that supports realtime multiplayer streaming out of the\nbox written purely in JavaScript in a 2d and isometric rendering engine.\n\nWith all that said, it's 2024 and back in 2011, ES classes, ES modules, TypeScript, webpack\netc did not exist. As such, language functionality such as classes were custom-created to\nfacilitate an inheritance-style codebase. This was great, as was the magic of using ES\nclasses years before they even existed, but now we have native functionality in JavaScript,\na rewrite of the engine needs to happen to make use of that new functionality.\n\nMinor changes exist as well as some breaking changes (such as the removal of ClientConfig\nand ServerConfig files) that were ultimately made to increase functionality or update\nanachronistic coding patterns to more modern expectations.\n\n**The major changes are:**\n\nThe built-in compiler is no longer required since `import` now exists in browsers natively,\nso it is no longer a requirement to compile using the engine's compiler to get a runnable\nproject / game. You should code with ES modules `import` and `export`, not CommonJS `require`\nand `module.exports` (although CommonJS is still currently supported).\n\nThe node.js server-side executable system that ran IGE on your server for multiplayer support\nhas been removed as the isomorphic JavaScript output runs natively in Node.js - again due to\nthe support for ES modules, ES classes and there is no need to \"package\" projects / games\nanymore! :)\n\nThe `ClientConfig.js` and `ServerConfig.js` are no longer required and can be removed everywhere.\nThe engine simply uses ES module imports and exports now, directly in the files that need them.\n\nMany of the examples in the `examples` folder have been converted to TypeScript and ES modules\nalthough this work is still ongoing. You can tell which ones can be run because there will be an\n`index.ts` rather than only an `index.js` file. Examples might be in a broken state for a while\nbut focus has been on the core functionality of the engine and bringing it up to modern standards\nof code rather than updating example code for the moment.\n\n## Developing / Building / Modifying the Engine\n\n\u003e This is only required if you intend to make changes to the core engine. If you only\n\u003e want to use the engine in a project, you do not need to clone the repo from GitHub\n\u003e since you can use the engine via `npm i @irrelon/ige` and then import it normally.\n\nAfter downloading or cloning this repository, please change to the folder you cloned\nthe repository to and then run:\n\n```bash\nnpm i\n```\n\nYou must have Node.js installed for the installation to work. This version of the engine\nhas been tested against Node.js 16.13.1 and higher.\n\n### Compiling the Engine from Source\n\n\u003e Run the `build` npm command will compile the TypeScript to JavaScript files.\n\u003e The `build` command also runs `npx @irrelon/fix-paths` to automatically resolve\n\u003e TypeScript paths e.g. `@/engine/something` in .js files to their relative\n\u003e equivalents like `../engine/something`.\n\n```bash\nnpm run build\n```\n\nThe resulting build will be available in the `dist` folder. The `docs` folder will\nalso update during the build to output JSDoc compatible documentation.\n\n## Examples\n\nThere are a lot of examples in the ./examples folder. Please see the ./examples/readme.md\nfile for more information about running the examples.\n\n## Documentation\n\nhttps://www.isogenicengine.com/docs-manual.html\n\n## Feedback \u0026 Support\n\nIf you have any comments, questions, requests etc. you can post on the GitHub issue tracker.\n\n## Gotcha Hints\n\n### Create IGE App Helper\n\nA `create-ige-app` npx script is on the way as well, almost ready! This will\ncreate a basic app with the webpack and Node.js setup to create games with\nthis version of the engine without configuring all the things yourself.\nThis will also support templates, so we can get started on something faster.\n\n### UI Entities\n\nWhen working with the provided UI classes (IgeUiEntity and IgeUiElement) it's important to\nunderstand the differences. IgeUiElement instances stop pointer even propagation by default.\nThis means if you mount one IgeUiElement inside another one, only the parent will get\npointer events like pointerDown and pointerUp.\n\nIgeUiEntity instances have the same general capabilities but are considered graphical rather\nthan interactive so don't hook or interfere with pointer events by default.\n\n## License\n\nMIT\n\n## Intellectual Property, Ownership \u0026 Copyright\n\n(C)opyright 2023 Irrelon Software Limited\nhttps://www.irrelon.com\n\n* Website: https://www.isogenicengine.com\n* Download: https://www.isogenicengine.com/download.html\n* API Docs: https://www.isogenicengine.com/docs-reference.html\n* Twitter: @IsogenicEngine https://twitter.com/IsogenicEngine\n* Youtube: http://www.youtube.com/user/coolbloke1324\n","funding_links":[],"categories":["Libraries"],"sub_categories":["JavaScript"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Firrelon%2Fige","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Firrelon%2Fige","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Firrelon%2Fige/lists"}