Sharpee
| Sharpee | |
| Тип | Парсерные платформы |
|---|---|
| Разработчик(и) | Дэвид Корнельсон |
| Языки интерфейса | английский |
| Операционные системы | Браузер, Windows, macOS, Linux (runtime); macOS (Chord Writer) |
| Написано на | TypeScript |
| Язык разработки | JavaScript, TypeScript или др. |
| Дата первого выпуска | 2025 |
| Последняя версия | 5.4.0 |
| Дата последней версии | 11 сентября 2026 |
| Состояние | активное |
| Лицензия | MIT |
| Сайт | sharpee.net |
Sharpee — это платформа для создания текстовых игр (с парсером), написанная на языке TypeScript. Это движок, на котором работают все файлы на языке Chord, а также полноценный инструмент для разработки игр.
Файл игры .story на языке Chord компилируется в файл IR, который загрузчик сценария преобразует в сущности, характеристики, фразы и связи. Сценарий на TypeScript формирует те же элементы напрямую через API. В обоих случаях игра выполняется одним и тем же движком.
Что может предложить платформа Sharpee:
- Движок. Цикл хода, выполнение команд, диспетчеризация событий, плагины;
- Модель мира. Сущности, состоящие из свойств (данных) и поведения (логики), без глубокой иерархии наследования;
- Стандартная библиотека. Доступны 45 действий в игровом мире — взять, бросить, открыть, запереть, идти, осмотреть и прочие, — а также сохранение, восстановление, отмена, повтор, счет и справка;
- Парсер. Разбор на основе грамматики с поддержкой синонимов глаголов, ограничений слотов и шаблонов, заданных в сценарии;
- Языковой слой. Все строки, видимые пользователю, вызываются по идентификатору сообщения;
- Каналы. Структурированный вывод истории: повествовательный текст, статус, медиа, макет интерфейса;
- Расширения. Опциональные системы: система очков, голод, базовая боевая система, диалоги, тестирование;
Движок и стандартная библиотека никогда не выводят текст на английском языке. Всё, что читает игрок, поступает из языкового слоя по идентификатору сообщения; благодаря этому локализация сводится к добавлению языкового пакета, а не к поиску и замене жестко прописанного в коде текста.
Файлы .story не «печатают» готовый текст, а «собирают» его. Файл с игрой отправляет данные по именованным каналам, а некий внешний механизм решает, как именно они превратятся в интерфейс. Именно поэтому одна и та же история может работать в терминале, в браузере или в интерфейсе, созданном самостоятельно автором игры, и можно изменить стиль или заменить любой элемент представления, не затрагивая логику самой игры.