
Security News
Axios Supply Chain Attack Reaches OpenAI macOS Signing Pipeline, Forces Certificate Rotation
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.
Skele2D is a game engine based around points, with a fancy in-game editor.
There are lots of 2D game engines based around tiles; this is the opposite of that. It's for games where the world is made of polygons, and the entities are made of points, connected by bones (segments), in arbitrary configurations.
If there's a theme song for Skele2D, it's probably the one that goes:
The hip bone's connected to the back bone
The back bone's connected to the neck bone…
This project is pre-alpha. Consider it unreleased.
Check out Tiamblia
So far, if you wanted to use this, you'd have to look at the source code, and copy from the examples.
I do maintain a changelog, so you wouldn't be too crazy to try and build a game with this, but nothing's set in stone yet, and you probably want docs.
The library is published on npm as skele2d,
and available as UMD and ESM, with minified versions of both.
Right now you have to include Material UI in addition to the module, as seen in the examples. (However, React is bundled with the module, as well as the CSS specific to Skele2D.)
examples/webpack-coffee/ - Webpack usage example, with CoffeeScript. This uses Webpack to bundle module imports (including Skele2D and other parts of the example), and coffee-loader to compile CoffeeScript.examples/script-tag-coffee/ - Script tag usage example, with CoffeeScript. This uses the in-browser CoffeeScript compiler, and uses globals instead of imports/exports.examples/esm/ - ES Modules example. This uses a separate ESM build of Skele2D, and imports it from inside a <script type="module">.Both of the examples in this repo are super bare-bones, and don't actually show off all the entity types supported by the editor, only terrain — no posable or animated entities. (It was kind of an oversight when I was copying from Tiamblia and trimming it down.)
Synopsis:
npm install
npm run build
npm run install-example
npm run example
This should run the webpack dev server for the webpack example, with hot module reloading. You can open the example in your browser at http://localhost:8080/ or whatever port it gives you if that's taken.
The webpack example can be built for production with:
cd examples/webpack-coffee
npm run build
Then the examples/webpack-coffee directory can be served with any web server, for instance:
python -m http.server
Then open http://localhost:8000 in your browser.
It could be deployed to a static site host, and some files could be excluded like the node_modules directory, source directory, package.json, package-lock.json, and webpack.config.js.
The examples in this repo are not yet deployed, but Tiamblia is deployed to GitHub Pages here, using a dumb Node.js script to copy only the files that are needed, and then the gh-pages package to deploy.
The webpack example can also be run in NW.js, with:
npm run example-nw
When running in NW.js it automatically saves the world.json as you edit.
Note: This workflow could be replaced by the FS Access API, which didn't exist when I made this originally. I don't think I'm terribly interested in NW.js for distributing games. It'll still be an option, of course, but it shouldn't be required for a nice workflow.
These examples don't need pre-compiling in principle, but because they live in this repo, for practical purposes they reference the Skele2D build files from the dist directory.
Once the library is built (with npm run build), you can run the examples with any web server, for instance:
npx live-server --open=examples/script-tag-coffee/
npx live-server --open=examples/esm/
This will open the page in your browser, and automatically reload when you make changes to the source code.
Note: it will also reload when editing the library itself, but it won't reflect those changes until you run npm run build again. I could add an --ignore/--ignorePattern flag but I don't think it's worth it for now.
Also note: if you run a server within the directory of the example, it will end up trying to request skele2d.js from outside the server root, which will fail.
(Would it be better to create a symlink, or copy the file to the example directory? That way it would be easer to copy the example as a base for a new project, as it would match more closely how you would include the library. Symlinks might not work for security reasons, though, and copying the file to all the examples seems expensive, especially as I add more examples.)
Any time you run into an error like Module not found: Error: Can't resolve 'skele2d',
just run the following in the examples/webpack-coffee directory:
npm link skele2d
Or alternatively run npm run install-example again.
This can happen when updating dependencies, or (perhaps) when switching branches, or when you've just cloned the repo and haven't run the installation procedure yet.
Finish separating this out into a reusable library / framework (from Tiamblia)
Entity class (currently relied upon: x, y, structure, toWorld, fromWorld, and serialization)World (currently relied upon for serialization, and directly accessing entities)Entity instances.@structure.getPose()
let {leftArm, rightArm} = @structure.points)initLayout, and if you include "left"/"right" in the names of points it moves them to the left or right, and it uses poses named "Default"/"Stand"/"Standing"/"Idle" in that order (most to least preferred), if one is available.Editor.draw and maybe View, or superimposing canvases so that the editor's own rendering doesn't need to change while using WebGL for game stuff. Three.js could be fun :) for a 2.5D game, or PIXI.js for 2D but still bringing shaders to the table.Encourage versioning of world data in examples, such as I do in Tiamblia. Code patterns for upgrading can be pretty simple. Here's another example.
Add shift/ctrl selection-manipulation modifiers
Add alt+drag to drag the selection from anywhere (i.e. without having to have your mouse over part of the selection, especially for when the selection is a set of points) (inspired by this video)
Add undo/redo, frame reordering, and maybe variable delays to the animation editor
Make undo/redo efficient (currently it saves the entire world state every operation!)
Use this in a few different games
It would be nice to have vector maths, haha! Kinda silly how this whole thing is based around points and there's no vector operations
For a history of changes to the API and the editor, see CHANGELOG.md
Open source under the MIT License
FAQs
A point-based game engine and editor
We found that skele2d demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.

Security News
Open source is under attack because of how much value it creates. It has been the foundation of every major software innovation for the last three decades. This is not the time to walk away from it.

Security News
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.