Steps toward an open-source reimplementation of the Praxis logic language, which was used for content authoring in the ambitious interactive drama framework Versu.
To use Praxish in your own project, you’ll first want to import the core library files in the following order:
util.js – General-purpose utility functions employed by the other filesdb.js – Exclusion logic databasepraxish.js – Functions for defining social practices, querying for possible actions, etc.We also provide a couple of (optional, experimental) core modules that implement different decision-making strategies for autonomous characters:
planner.js – Forward-looking agents that use planning for goal-directed action selectionswaygent.js – “Swayable agents” that use Ensemble-like volition and influence rules to choose desirable actions opportunisticallyThen you can look at the various demos for examples of how to integrate Praxish functionality into a game loop:
demos/test – Basic functionality tests, which demonstrate the gradual build-up of a social worlddemos/pwim – A slightly more complicated example game that allows the player to pick actions for their character to perform, while other characters act autonomouslydemos/sway – An interactive example project that demonstrates Swaygent decision-making logicThe original Praxish paper, published at AIIDE 2023, is probably the best starting point if you want to read more:
@inproceedings{dameris2023praxish,
title={Praxish: a rational reconstruction of a logic-based DSL for modeling social practices},
author={Dameris, James and Roman, Rosaura Hernandez and Kreminski, Max},
booktitle={Proceedings of the AAAI Conference on Artificial Intelligence and Interactive Digital Entertainment},
volume={19},
pages={407--415},
year={2023}
}
We archived the version of Praxish described in this paper as a GitHub release, then continued developing new features atop the basic Praxish substrate.
Our next major Praxish-based project (intended to demonstrate an interaction technique called “play what I mean”, or “PWIM” for short) introduced several improvements to the Praxish library:
Praxish module object rather than dumped unceremoniously into the global JavaScript namespaceFor a bit more on PWIM, see our FDG 2024 demo paper; the demos/pwim subfolder of this repo; or the separate repo that we used for PWIM development:
@article{kreminski2024cheap,
title={Cheap and Easy Open-Ended Text Input for Interactive Emergent Narrative},
author={Kreminski, Max},
journal={arXiv preprint arXiv:2406.00942},
year={2024}
}
Praxish development continues today! Stay tuned for more…