Sharpee is an open source IF platform built on modern architecture patterns and principles. Some of the things it does very differently from legacy platforms:
- Mutations and Text are separate concerns. The game mutates state, then adds domain command events to an event source. At the end of each turn, the engine sends all events on the stack to a text service. The text service calls the language service for the actual content based on ID, though story-based responses will come through the domain event as literals. This allows the author to play with the text before it's emitted to a client.
- Sharpee is composition-oriented. There are traditional object-oriented aspects to the platform, but the Traits & Behaviors are the core pattern. Traits are data and their associated Behavior is the logic. You can create objects (IFEntity) and apply Traits to them and the platform will know what to do with them for the implemented actions in the standard library.
- It's pure Typescript which means it will run anywhere and is blazing fast. It is infinitely adaptable to any creation one might come up with.
- Open Source out of the gate. Fork it, send in pull requests, or just be inspired to do something else with it.
- i18n ready. The platform sees parser-en-us and lang-en-us at the moment, but it would be relatively trivial to create other languages in Sharpee. An author could even push all of their story text into language modules and have a single story be multi-lingual. The platform could even recognize the player's language from their first command and switch in real-time.
- Has a cross-platform story runner named Zifmia with downloads for Windows, Ubuntu, and MacOS.
- The author can share their stories via a simple thin web app (no web server required) or as a .sharpee story file that will run in Zifmia.
Roadmap
- Implement panel layouts in Zifmia for alternate user experiences.
- Implement Spanish, French, Italian, and German parser and language packages.
- Implement a screen-reader client for blind players.
- Implement a graphical client.
Sharpee was a lot of fun to build and it took all of my 40 years of IT experienced to master the complexities. I hope others find it useful.
Clone the repo and add lang-it-it and parser-it-it packages and send a pull request. The changes should be very prescriptive. Would be good to have an Italian Cloak of Darkness to test it.
3 comments
[ 3.6 ms ] story [ 16.7 ms ] thread- Mutations and Text are separate concerns. The game mutates state, then adds domain command events to an event source. At the end of each turn, the engine sends all events on the stack to a text service. The text service calls the language service for the actual content based on ID, though story-based responses will come through the domain event as literals. This allows the author to play with the text before it's emitted to a client.
- Sharpee is composition-oriented. There are traditional object-oriented aspects to the platform, but the Traits & Behaviors are the core pattern. Traits are data and their associated Behavior is the logic. You can create objects (IFEntity) and apply Traits to them and the platform will know what to do with them for the implemented actions in the standard library.
- It's pure Typescript which means it will run anywhere and is blazing fast. It is infinitely adaptable to any creation one might come up with.
- Open Source out of the gate. Fork it, send in pull requests, or just be inspired to do something else with it.
- i18n ready. The platform sees parser-en-us and lang-en-us at the moment, but it would be relatively trivial to create other languages in Sharpee. An author could even push all of their story text into language modules and have a single story be multi-lingual. The platform could even recognize the player's language from their first command and switch in real-time.
- Has a cross-platform story runner named Zifmia with downloads for Windows, Ubuntu, and MacOS.
- The author can share their stories via a simple thin web app (no web server required) or as a .sharpee story file that will run in Zifmia.
Roadmap
- Implement panel layouts in Zifmia for alternate user experiences. - Implement Spanish, French, Italian, and German parser and language packages. - Implement a screen-reader client for blind players. - Implement a graphical client.
Sharpee was a lot of fun to build and it took all of my 40 years of IT experienced to master the complexities. I hope others find it useful.
> Sharpee was a lot of fun to build and it took all of my 40 years of IT experienced to master the complexities. I hope others find it useful.
Especially because it's clearly a work of love.
P.S. Let me know if you need help with the Italian parser.