Add links to README
Bump version
Fix sourceLinkTemplate
Patterns for playful systems in the browser and beyond
Ajeeb is a collection of packages and ideas that I have been using to great effect for a few years while making games, installations, hardware, and other playful systems. It is the set of tools I have always wanted for my practice and I hope it is similarly useful in yours.
$ npm create ajeeb@latest
✔ Name … new-ajeeb-project
✔ Features › Coroutines, Input, 3D Graphics
Scaffolding project in new-ajeeb-project...
added 15 packages, and audited 16 packages in 8s
3 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
Done! Now run
cd new-ajeeb-project
npm run dev
to launch dev server. have fun and always take care of each other.
https://ajeeb.games/
Ajeeb is developed as a monorepo. It is made up of separate modules that you can mix and match according to your needs.
@ajeeb/coroutines
— ES6-generator based coroutines for terse and arbitrarily powerful state machines
@ajeeb/input
— Simple pipeline-based input system and defaults for common input devices
create-ajeeb
— the module that enables npm create ajeeb@latest
In addition to the code, Ajeeb provides is a way of thinking about architecting playful systems. These ideas are captured in the in-progress Book of Ajeeb.
Ajeeb has been used in web games, museum installations, art pieces, and public performances. The core semantics and implementation are sound, stable, tested, and do not change with any frequency.
That said, this is still an experiment that I am building primarily for myself. Treat it as battle tested but pre-1.0 software.
This is project is a labor of love by Ramsey Nasser. Get in touch over Mastodon if you have questions or feedback.
@ajeeb/three
— Support for THREE.js projects, including coroutine-based asset loading
@ajeeb/three/gizmos
— Simple drawing API inspired by Unity's Gizmos for prototyping and debugging@ajeeb/pixi
— Support for Pixi.js projects, including coroutine-based asset loading
@ajeeb/pixi/proto
— Reactive prototype graphics@ajeeb/tone
— Support for Tone.js projects, including coroutine-based asset loading@ajeeb/howler
— Support for Howler.js projects, including coroutine-based asset loadingAjeeb is free and unencumbered software released into the public domain under the terms of the CC0 1.0 UNIVERSAL license.
Attribution is appreciated but not required. When attributing a mention to the effect of "This project makes use of Ajeeb, originally by Ramsey Nasser" and/or a link to https://ajeeb.games/
is sufficient.
While this software may legally be used by anyone, it is not for everyone.
This software is the result of a great deal of joyful labor on the part of the author, and it is shared freely in the hope that individuals, students, artists, and worker cooperatives will benefit from its use and study in any capacity, commercial and otherwise. The author made this for you.
It is absolutely not intended for use in service of capital, in pursuit of profit for a minority off the labor of others, or by organizations that differentiate their owners and their workers.
If you own such an organization, know that the author believes that you are a bad person, and that you should step aside and allow your enterprise to be run democratically by your employees with equal stake and say in its management. The author did not made this for you, and holds you in contempt.
If you work for such an organization, know that the author believes that you are being exploited, and that you should start organizing towards converting your workplace into a cooperative or unionizing at the very least. The author is on your side, hopes this software lightens the burden of your labor.
We have nothing to lose but our chains and a better world is possible.
Ajeeb comes from the Arabic عجيب meaning "wondrous" but with a connotation of "strange" or "miraculous". It was developed for my contribution to the Wonderbundle in Wonderville's successful 2019 Kickstarter campaign and is named after Wonderville.