Choosing a SHIORI
Choosing a SHIORI | |
---|---|
Type | Guide |
Category | Other |
What are SHIORI, where can you find information about them, and which should you choose for your ghost? This guide will give a brief explanation of SHIORI, as well as information and resources for the SHIORI that have been explored by the English community so far.
You can also see the SHIORI page for more information, which has a list of SHIORI, including ones that we haven't made any resources for.
What is SHIORI?
SHIORI is a term that can have two meanings. It refers both to the SHIORI protocol, which is the standard that the baseware uses to communicate with ghosts, and it is also used as a term referring to the programming languages that ghosts are written in, which are used to create the ghost's personality and functions.
In the case of this guide, we will be using this latter definition. This is the more common usage, and it is easier to say than “ghost programming language”.
Types of SHIORI
There are, in a manner of speaking, two types of SHIORI. There are those which have been created as a programming language specific to ghosts, and there are those which are created to act as a go-between between an existing programming language (such as Ruby), and the SHIORI protocol used by ghosts. These types of SHIORI allow languages such as Ruby to be used to make a ghost, without creating their own unique syntax.
The idea of making ukagaka seems to attract writers and artists the most, so SHIORI that were created to be a programming language specifically for ghosts seem to be much more popular. This is likely due to their simplicity, and being keyed to the kinds of work that ghost authors want to do specifically.
If you are a programmer and want a SHIORI that will allow you to use an existing programming language to make a ghost, you may want to try one of the SHIORI linked on this gist (Japanese), or on our list of SHIORI.
The prevelance of Satori in the Japanese community
It is worth noting that while there are many SHIORI created by the Japanese community, the Japanese community is completely dominated by the SHIORI Satori (里々). This is likely due to Satori's simplicity and ease of writing dialogue, as well as the fact it uses characters from the Japanese keyboard as shortcuts for common SakuraScript tags, and so on. This makes it quick and easy for Japanese developers to write in, because it cuts down on the need to switch keyboards to write tags.
Additionally, there exists a tool in Japanese called Satolist1) (さとりすと), which is a GUI program that makes it much easier and more approachable for non-programmers to make ghosts.
With these factors together, Satori is far and away the most popular SHIORI in the Japanese community, with some estimates claiming it is used in approximately 90% of all Japanese ghosts.
Unfortunately, due to its reliance on Japanese characters, and Satolist's interface being in Japanese, it is not suitable for international development. As such, in the English community, other SHIORI have flourished out of necessity, and Satori is practically never seen.
Which SHIORI should you use?
That depends on what your existing skills are, how much you want to learn, and what best suits your project! Have a look through the list below, and at the resources and templates linked, so that you can make an informed decision. This list will be updated over time as we make resources for more SHIORI.
YAYA
YAYA (やや2)) is a programming language with syntax similar to C, albeit very simplified.
It has been the SHIORI of choice for most English ghosts, because it is the first SHIORI that the English community found documentation for and could understand, as well as being well suited for developers internationally. As such, there are many resources in the English community for YAYA, as well as plenty of ghosts that can be referenced. YAYA has seen use in the Japanese community as well, being one of the more common SHIORI behind Satori.
While it can be very simple and straightforward to work with, it is also very flexible, and powerful for making ghosts in. It can also be used to create MAKOTO, Plugins, and can even be used as a Windows dll file to create non-ukagaka related things.
However, it also tends to intimidate developers who don't know anything about programming yet, due to its structure being like that of C. But with a little willingness to learn, or basic knowledge from other languages such as JavaScript or Python, it is quick to pick up and use.
Resources | |
---|---|
Download | https://github.com/ponapalt/yaya-shiori/releases |
Official documentation | AYAYA wiki |
English guide(s) | YAYA Fundamentals |
English template(s) | Simplicity Template, Minimum YAYA Template, GT Ghost Template, First Child Template, X. Template |
Syntax highlighting | ayaya (VS Code Syntax Highlighting), aya-udl-xml (NotePad++ Syntax Highlighting), see below for Notepad++ recommendations |
YAYA |
Code examples
//This causes 1 of these 3 dialogues to play at random whenever the ghost is booted. OnBoot { "\0Boot dialogue 1" "\0Boot dialogue 2" "\0Boot dialogue 3" }
//This displays a simple menu with just a greeting and a cancel button when the Sakura or Kero is double clicked. OnMouseDoubleClick { if reference5 == 0 //Only happens for left clicks { if reference3 == 1 //Kero { "\1Kero menu greeting\n\n" -- "\![*]\q[Cancel,blank]" } else //Sakura (or other character) { "\0Sakura menu greeting\n\n" -- "\![*]\q[Cancel,blank]" } } }
Code highlighting
When using Notepad++, the built in C language is fairly accurate for YAYA code. It can be enhanced by adding custom keywords in the style configurator.
The following should be added to the INSTRUCTION WORD setting:
elseif when others foreach
The following may be added to the TYPE WORD setting:
parallel random nonoverlap sequential array pool melt all last nonoverlap_pool sequential_pool array_pool pool_nonoverlap pool_sequential pool_array melt_nonoverlap melt_array melt_sequential
AYA
AYA (文) is the language that preceded YAYA. They are effectively the same language, except that YAYA has additional features, as well as important security updates. For this reason, it is not recommended to use AYA to create new ghosts. If you have a ghost in AYA that you would like to convert to YAYA, there is a guide on how to do so here.
The resources listed here are primarily for historical purposes. No code examples are provided because the ones provided for YAYA will work for AYA too.
Resources | |
---|---|
Download | http://umeici.onjn.jp/ (Included with Konno Ayame (紺野あやめ by 文5.8) template) |
Official documentation | aya5 - manual |
English guide(s) | N/A, but the guides listed for YAYA will mostly apply here as well |
English template(s) | GT Ghost Template (An older version exists in AYA, although it is deprecated) |
AYA |
Kawari
Kawari (華和梨) is a writing-focused SHIORI, with an emphasis on flexible “entries” that can be used to create complex dialogue variations. Ghosts made in Kawari also frequently use a “middleware” system, which is an additional layer of coding between the SHIORI and the developer. A middleware enables the developer to write dialogue easily, without needing to write their own code to handle events. This makes it much friendlier for developers that are not inclined towards coding.
This is the second SHIORI to be properly explored by the English community, with resources and ghosts written in it beginning to come out in 2023. It is also a SHIORI that has seen a fair amount of use in Japanese ghosts.
Resources | |
---|---|
Download | https://sourceforge.net/projects/kawari/ |
Official documentation | Kawari (Machine Translated) |
English guide(s) | Kawari no Kawari |
English template(s) | CHIPS Template, MesoMeso |
Kawari |
Code examples
Satori
Satori (里々) is a SHIORI specialized for the Japanese language, and specifically Japanese keyboards. It provides several shortcuts for common SakuraScript tags using full-width Japanese characters (such as full-width parenthesis, colons, asterisks, and more), eliminating the need to switch between input types for writing basic scripts.
It also lessens the need to be familiar with programming to make simple ghosts. Using the IDE Satolist, it is possible to write a ghost using a GUI, making it easier for artists and writers with no coding knowledge to create a ghost.
It is not recommended for developers not writing in Japanese. Its reliance on Japanese characters makes it easier for devs writing in Japanese, however, this necessarily means that any other language must take additional steps to write those Japanese characters, therefore losing time instead of saving it. Additionally, there may be charset issues, etc.
Satori has had some investigation by the English community, but not extensively at this time due to the aforementioned issues. It is extremely prevalent in the Japanese community due to its ease of writing and accessibility, as outlined in a previous section of this guide.
Resources | |
---|---|
Download | https://github.com/ukatech/satoriya-shiori/releases |
Official documentation | Satori wiki |
English guide(s) | Satori (里々) English Guide |
English template(s) | N/A |
IDE | Satolist (Satolist wiki) |
Satori |
Code examples
#This causes 1 of these 3 dialogues to play at random whenever the ghost is booted. *OnBoot :Boot dialogue 1 *OnBoot :Boot dialogue 2 *OnBoot :Boot dialogue 3
#These display simple menus with just a greeting and a cancel button when the Sakura or Kero is double clicked. #(R5)==0 means this will only happen for left clicks. *OnMouseDoubleClick【タブ】(R3)==0&&(R5)==0 \0Sakura menu greeting\n\n\![*]\q[Cancel,blank] *OnMouseDoubleClick【タブ】(R3)==1&&(R5)==0 \1Kero menu greeting\n\n\![*]\q[Cancel,blank]
Aosora
Aosora (蒼空) is a SHIORI that began development at the end of 2024, announced with an article in the 伺か・伺的 Advent Calendar for that year. It aims to allow the ease of writing of Satori, while also being flexible and allowing for powerful processing.
At this time, this SHIORI is still in very early days, and it is noted that specifications may change over time as it is developed, or that development may halt.
One of the advantages for international development is that, unlike Satori, Aosora does not rely on characters from the Japanese character set. This makes it much more accessible, while still letting scripts be written in a very simple fashion.
Special syntax is provided for use in “talk blocks”, which can make the appearance of dialogues much more natural in the file. For example, line breaks are printed as line breaks in the balloon, and a new line starting with a :
will switch which character is speaking. A number may be written before the :
, such as 0:
, to specify a particular character should speak.
Resources | |
---|---|
Download | https://github.com/kanadelab/aosora-shiori/releases |
Official documentation | aosora-shiori ゴースト開発ガイド |
English guide(s) | (en‐us)Tutorial aosora‐shiori |
English template(s) | N/A |
Syntax highlighting | vscode-extension, Aosora talk block UDL, see below for Notepad++ recommendations |
Aosora |
Code examples
//This causes 1 of these 3 dialogues to play at random whenever the ghost is booted. talk OnBoot { Boot dialogue 1 } talk OnBoot { Boot dialogue 2 } talk OnBoot { Boot dialogue 3 }
//This displays a simple menu with just a greeting and a cancel button when the Sakura or Kero is double clicked. function OnMouseDoubleClick { if (Shiori.Reference[5] == 0) //Only happens for left clicks { if (Shiori.Reference[3] == 1) //Kero { return KeroMenu; } else //Sakura (or other character) { return SakuraMenu; } } } talk SakuraMenu { \0Sakura menu greeting \![*]\q[Cancel,blank] } talk KeroMenu { \1Kero menu greeting \![*]\q[Cancel,blank] }
Code highlighting
When using Notepad++, the built in JavaScript language is fairly accurate for Aosora code. It can be enhanced by adding the following keywords to the INSTRUCTION WORD setting in the style configurator:
talk function word for while if else break continue return local const true false try catch finally throw class member init new print
Note that this may not be desirable for files made primarily of talk blocks. In those cases, the Aosora talk block UDL may be preferable.