|
|
||
|---|---|---|
| debian | ||
| dialogues | ||
| i18n | ||
| lore | ||
| media | ||
| models-src | ||
| music | ||
| npcs | ||
| places | ||
| quests | ||
| tools | ||
| voice | ||
| .gitignore | ||
| datadisk.yaml | ||
| Makefile | ||
| README.md | ||
ishtaria-datadisk-endland
Primary source: https://git.vitexsoftware.com/Ishtaria/ishtaria-datadisk-endland (development happens there). GitHub (https://github.com/Vitexus/ishtaria-datadisk-endland) is a secondary mirror; packages and binaries are not built from GitHub.
Pilot story datadisk for Ishtaria based on The End Land universe (wiki: https://theendland.v.s.cz). Private repository: the universe, characters and artwork belong to the story author; do not publish or redistribute without her permission.
A datadisk is data, not code: places, characters, dialogue trees and scenarios that the Ishtaria server evaluates. Several datadisks can be combined into one world.
datadisk.yaml manifest (id, version, requires/conflicts, license, rating)
places/ places the world generator finds a site for (city, building, graveyard ...)
npcs/ characters standing at places (character model, portrait, dialogue)
dialogues/ decision trees: choices, conditions, effects (gold, items, flags, quest stages)
quests/ scenarios as stage machines
lore/ codex entries (not spawned)
music/ + media/ tracks and portraits shown/played during dialogues
i18n/en.yaml cs.yaml
voice/voices.yaml voice of each character (Piper model, pitch, tempo, speaker) per language
tools/render_voices.py renders the spoken lines to media/voice/<language>/<text_key>.ogg
models-src/ sources of the 3D character models in media/models/ (Blender script, .blend, references)
tools/ fetch_wiki.sh, prepare_media.py (portraits to <= 512 px)
Format: ishtaria-protocol/schemas/datadisk.schema.json. Check the disk (schema, references, media):
python3 ../ishtaria-protocol/tests/validate_datadisk.py .
Install (dpkg-buildpackage -us -uc -b, then dpkg -i) to /usr/share/ishtaria/datadisks/endland/.
In ishtaria-admin, World maps → Generate map then shows a checkbox for this disk; or
ishtaria-server-init <seed> <size> endland.
Content of 0.2.0
- Places: Udrury (grassland/forest lowland), Blackhorn Tavern (inside Udrury), old graveyard (1-3 km from Udrury).
- Characters: Kragg Blackhorn, Zaina, Fawn Zerezas, Faust Grimes, each with a portrait from the wiki.
- The old graveyard is the spawn point (
spawn: true): new characters wake up there. - Opening Back From the Dirt (from the Discord intro): Faust wakes the player at the old graveyard, names
them Hugo whatever they answer (and shouts I knew it when it really is Hugo) and gives the Aetherglass
(item
aetherglass, migration0027_aetherglass.sqlof the server); lore: Aetherglass, the Veil. - Scenario The Graveyard Job (Faust -> Fawn -> key for 10 gold -> Faust pays once).
- Music: stand-in CC0 tracks (see Music credits). The wiki only links songs on external sites; replace
the files with the author's own recordings (OGG Vorbis, up to 8 MiB). A place's
musicplays within itsmusic_radius_m(graveyard 70 m, tavern 60 m), a dialogue'smusicwhile it lasts.
Dialogues the wiki gives no material for may be drafted once with a local LLM and then reviewed;
drafts are marked status: draft and rejected by the server until reviewed.
Spoken lines
dpkg-buildpackage runs tools/render_voices.py: every NPC line is synthesized with Piper
(cs_CZ-jirka-medium for Czech, en_US-libritts_r-medium for English) and encoded to OGG Vorbis in
media/voice/<language>/<text_key>.ogg; voice/voices.yaml gives each character its own pitch, speed,
filters (and a speaker id for the multi-speaker English model). Models are looked up in
--voices DIR, $ISHTARIA_VOICES, and /usr/share/piper/voices/ (packages
piper-voice-cs-cz-jirka-medium and piper-voice-en-us-libritts-r-medium).
Try it without building a package:
python3 tools/render_voices.py --only kragg --lang cs --out /tmp/voices # then listen to /tmp/voices/media
dpkg-buildpackage -P pkg.ishtaria-datadisk-endland.novoice skips the rendering.
A human recording replaces a synthetic line: add media/voice/<language>/<text_key>.ogg
(OGG Vorbis, mono, up to 2 MiB) to the source tree and that line is no longer synthesized.
Another language needs i18n/<language>.yaml, a model in voice/voices.yaml and a build dependency on it.
Format: ishtaria-protocol/DATADISK-SPEC.md.
Music credits
Stand-in tavern track until the author supplies her own (CC0, no attribution required, credited anyway):
- Medieval: The Old Tower Inn by RandomMind, https://opengameart.org/content/medieval-the-old-tower-inn (tavern; loop version converted to OGG Vorbis).
The old graveyard plays Cemetery Music by steverus (made with Suno; media/music/cemetary_music.ogg, converted from MP3 because tracks must be OGG Vorbis). The previous graveyard track, Midnightcem by Tozan, now lives in ishtaria-server as the default music of every generated graveyard.