<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: HALO</title>
    <description>The latest articles on DEV Community by HALO (@halo1234).</description>
    <link>https://dev.to/halo1234</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3810693%2F74cfb246-d184-4e8b-bb1b-20be1c9818f0.jpeg</url>
      <title>DEV Community: HALO</title>
      <link>https://dev.to/halo1234</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/halo1234"/>
    <language>en</language>
    <item>
      <title>ADV Development with GOKI2 [ModTitle Introduction]: Implementing the Title Screen and Defining Button Layouts</title>
      <dc:creator>HALO</dc:creator>
      <pubDate>Sat, 18 Apr 2026 08:27:52 +0000</pubDate>
      <link>https://dev.to/halo1234/adv-development-with-goki2-modtitle-introduction-implementing-the-title-screen-and-defining-2nl6</link>
      <guid>https://dev.to/halo1234/adv-development-with-goki2-modtitle-introduction-implementing-the-title-screen-and-defining-2nl6</guid>
      <description>&lt;h1&gt;
  
  
  Download
&lt;/h1&gt;

&lt;p&gt;Avalanches &amp;amp; GOKI2 can download the latest environment from the Assets link of Avalanches-GOKI2-Release2.x.y.y.zip based on the release tag on the following site (written as Avalanches (GOKI2) release version 2.x.y.y).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/halo1234/Avalanches/releases" rel="noopener noreferrer"&gt;https://github.com/halo1234/Avalanches/releases&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Title Screen
&lt;/h1&gt;

&lt;p&gt;In GOKI2, ModTitle implements the title screen.&lt;br&gt;
First, load the module.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;tjs:/src/goki2/system/construct.gs&lt;br&gt;
; Title Screen&lt;br&gt;
@load_module name=ModTitle&lt;br&gt;
&lt;/code&gt;`plaintext&lt;br&gt;
Now the title screen is available.&lt;/p&gt;
&lt;h3&gt;
  
  
  Title Screen Settings
&lt;/h3&gt;

&lt;p&gt;First, specify the sound effects.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
@title_option click_sound=se001.ogg enter_sound=se002.ogg&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;plaintext&lt;br&gt;
Here, we specify the click sound and the sound effect for mouse enter.&lt;/p&gt;
&lt;h3&gt;
  
  
  Title Screen Layout
&lt;/h3&gt;

&lt;p&gt;The title screen can have five buttons: "Start," "Load," "CG/Recollection," "System," and "Exit."&lt;br&gt;
For example, you can do it like this:&lt;/p&gt;

&lt;p&gt;`&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@title_screen start_caption=Start start_left=370 start_top=400 start_width=60 start_height=20 start_target=*start
@title_screen load_caption=Load load_left=370 load_top=430 load_width=60 load_height=20
@title_screen cgmemory_caption=CG/Reminiscence cgmemory_left=370 cgmemory_top=460 cgmemory_width=60 cgmemory_height=20
@title_screen system_caption=System system_left=370 system_top=490 system_width=60 system_height=20
@title_screen exit_caption=Exit exit_left=370 exit_top=520 exit_width=60 exit_height=20 exit_target=*exit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The start and end options require specifying the scenario storage and label name to execute when selected.&lt;br&gt;
Otherwise, the screen display will be executed directly internally.&lt;/p&gt;

&lt;p&gt;Let's look at each option using the start option as an example.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;start_caption=Start&lt;/em&gt;&lt;/strong&gt; specifies the button's caption.&lt;br&gt;
This is mostly unnecessary if you're using an image for the button.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;start_left=370 start_top=400 start_width=60 start_height=20&lt;/em&gt;&lt;/strong&gt; specifies the button's position and size.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;start_target=*start&lt;/em&gt;&lt;/strong&gt; specifies the label name to execute when Start is selected.&lt;br&gt;
If the scenario storage is omitted, the scenario storage at the time &lt;strong&gt;&lt;em&gt;title_screen show&lt;/em&gt;&lt;/strong&gt; is called is assumed to be the one specified.&lt;br&gt;
This attribute is only valid for Start and End.&lt;/p&gt;

&lt;h3&gt;
  
  
  Displaying the Title Screen
&lt;/h3&gt;

&lt;p&gt;After configuration is complete, display the title screen at any time.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;br&gt;
@title_screen show&lt;br&gt;
@s&lt;br&gt;
&lt;/code&gt;`plaintext&lt;br&gt;
After displaying the title screen, stop using the &lt;strong&gt;&lt;em&gt;s&lt;/em&gt;&lt;/strong&gt; tag or similar.&lt;/p&gt;

&lt;h3&gt;
  
  
  Events
&lt;/h3&gt;

&lt;p&gt;When the Start and End buttons are pressed, they execute the specified scenario storage and label.&lt;br&gt;
For example, like this:&lt;br&gt;
&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
*exit&lt;br&gt;
@close !ask&lt;br&gt;
*start&lt;br&gt;
@go_to_start !ask&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;br&gt;
In this case, the &lt;em&gt;start label simply returns to the start, but in reality, it's better to use the *&lt;/em&gt;&lt;em&gt;que&lt;/em&gt;** tag in the default tags to execute the next scenario.&lt;/p&gt;

&lt;h3&gt;
  
  
  In Conclusion
&lt;/h3&gt;

&lt;p&gt;We've written a series of articles up to this point, and I think we've finished setting up most of the screens.&lt;br&gt;
From here on, there's a long road ahead where we'll be diligently writing scenario scripts.&lt;br&gt;
However, if you've followed the articles this far, you should be able to overcome this long road.&lt;br&gt;
In the next articles, we'll explain how to implement the game parts, such as choices and video playback.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>softwaredevelopment</category>
      <category>tutorial</category>
      <category>ui</category>
    </item>
    <item>
      <title>ADV Development with GOKI2 [ModCGMemory Intro]: Implementing CG/Recollection Mode and Data Management via Excel</title>
      <dc:creator>HALO</dc:creator>
      <pubDate>Sat, 11 Apr 2026 04:39:04 +0000</pubDate>
      <link>https://dev.to/halo1234/adv-development-with-goki2-modcgmemory-intro-implementing-cgrecollection-mode-and-data-2i74</link>
      <guid>https://dev.to/halo1234/adv-development-with-goki2-modcgmemory-intro-implementing-cgrecollection-mode-and-data-2i74</guid>
      <description>&lt;h1&gt;
  
  
  Download
&lt;/h1&gt;

&lt;p&gt;Avalanches &amp;amp; GOKI2 can download the latest environment from the Assets link of Avalanches-GOKI2-Release2.x.y.y.zip based on the release tag on the following site (written as Avalanches (GOKI2) release version 2.x.y.y).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/halo1234/Avalanches/releases" rel="noopener noreferrer"&gt;https://github.com/halo1234/Avalanches/releases&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  CG/Reminiscence
&lt;/h1&gt;

&lt;p&gt;In GOKI2, ModCGMemory implements the CG/Reminiscence screen.&lt;br&gt;&lt;br&gt;
First, load the module.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;; CG/Reminiscence screen
@load_module name=ModCGMemory
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this, the CG/Reminiscence screen can be used.  &lt;/p&gt;

&lt;h3&gt;
  
  
  CG/Reminiscence Data
&lt;/h3&gt;

&lt;p&gt;First, you need the data for the CGs or reminiscences to be shown on the CG/Reminiscence screen.&lt;br&gt;&lt;br&gt;
In Avalanches, you can input the data using Excel.&lt;br&gt;&lt;br&gt;
First, please open the following file.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;/src/data/cgmemory/list.xlsx&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;For now, the default content is as follows.&lt;br&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqhbxxp5whd5mpx2i24m1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqhbxxp5whd5mpx2i24m1.png" alt="image.png" width="426" height="149"&gt;&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;Do not edit the headers. (Strictly speaking, it is okay to edit them, but there is a procedure, so it will be omitted here.)  &lt;/p&gt;

&lt;p&gt;&lt;code&gt;thum_CG_A&lt;/code&gt; is the file name of the thumbnail.&lt;br&gt;&lt;br&gt;
Do not enter the extension.&lt;/p&gt;

&lt;p&gt;CG_A000/CG_A001 are the file names of the CGs to be displayed on the screen.&lt;br&gt;&lt;br&gt;
Do not enter the file extension here either.&lt;br&gt;&lt;br&gt;
Specify one file per line for each CG.  &lt;/p&gt;

&lt;p&gt;ModImageTest specifies the scenario file name to be played back as a replay.&lt;br&gt;&lt;br&gt;
Do not enter the file extension here either.  &lt;/p&gt;

&lt;p&gt;The sheet name will be the output file name.&lt;br&gt;&lt;br&gt;
You can add as many sheets as you like, so for example, if you want to switch CG screens for each character, it is good to separate the sheets.  &lt;/p&gt;
&lt;h3&gt;
  
  
  Data Output
&lt;/h3&gt;

&lt;p&gt;There is a tool that converts the input Excel data into a format that Kirikiri can read.&lt;br&gt;&lt;br&gt;
If you enter data into the default &lt;strong&gt;/src/data/cgmemory/list.xlsx&lt;/strong&gt;, you can use the following batch as it is.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;/tools/make_cgmem/run.bat&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;If you change the file name or create an Excel file from scratch, you need to update the batch contents to the new file path.&lt;br&gt;&lt;br&gt;
Running &lt;strong&gt;/tools/make_cgmem/run.bat&lt;/strong&gt; will generate *.dic files from Excel.  &lt;/p&gt;

&lt;p&gt;Execution screen&lt;br&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiiy1eoln5565qhbx3znu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiiy1eoln5565qhbx3znu.png" alt="image.png" width="594" height="246"&gt;&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;By default, the following two files are generated:&lt;br&gt;&lt;br&gt;
main.dic&lt;br&gt;&lt;br&gt;
sub.dic  &lt;/p&gt;

&lt;p&gt;Copy the generated files to the project folder.&lt;br&gt;&lt;br&gt;
You can copy them to any folder that is included in the automatic search path.&lt;/p&gt;
&lt;h3&gt;
  
  
  CG/Recall Screen Layout
&lt;/h3&gt;

&lt;p&gt;We will write the GOKI2 script.&lt;br&gt;
First, we will load the CG/recall data we created earlier.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@load_cgmemory key=halo storage=ハロ.dic
@load_cgmemory key=2nd storage=2番目のCG
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The key attribute and storage attribute are required attributes.&lt;br&gt;
Be sure to specify them.&lt;br&gt;
The key attribute should be any string that serves as the data key.&lt;br&gt;
The storage attribute specifies the generated CG/recall data.&lt;br&gt;
The file extension is optional.&lt;/p&gt;

&lt;p&gt;Next, we define the UI.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@cgmemory_option item_width=120 item_height=120
@cgmemory_option blank_thumbnail=thum_blank memory_button=memory_button
@cgmemory_option item_count=8 memory_count=3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;First, &lt;strong&gt;item_width=120 item_height=120&lt;/strong&gt; specifies the size of each item. &lt;br&gt;
This is the size that will contain the CG thumbnail and recall button.&lt;br&gt;
Next, &lt;strong&gt;blank_thumbnail=thum_blank memory_button=memory_button&lt;/strong&gt; specifies the images for the thumbnail (unopened) and the recall button.&lt;br&gt;
Please refer to the manual for image formats.&lt;br&gt;
Finally, &lt;strong&gt;item_count=8 memory_count=3&lt;/strong&gt; specifies the number of items per page and the number of recall buttons.&lt;/p&gt;

&lt;p&gt;There were two CG/recall data created initially. We will place buttons to select each of those data.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@cgmemory halo_left=370 halo_top=270 halo_caption=Halo's CG halo_width=60 halo_height=20
@cgmemory 2nd_left=370 2nd_top=300 2nd_caption=2nd's CG 2nd_width=60 2nd_height=20
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, the value of the key attribute specified in &lt;strong&gt;load_cgmemory&lt;/strong&gt; appears. Each attribute is specified in the format key_xxx. For instance, for the left position attribute of Halo's CG button, it is halo_left.&lt;/p&gt;

&lt;p&gt;The recall buttons will be displayed below the CG thumbnails.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@cgmemory mem0_left=10 mem0_top=100 mem1_left=30 mem1_top=100 mem2_left=50 mem2_top=100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This specifies the positions of the CG thumbnails.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@cgmemory item0_left=20 item0_top=10
@cgmemory item1_left=160 item1_top=10
@cgmemory item2_left=300 item2_top=10
@cgmemory item3_left=440 item3_top=10
@cgmemory item4_left=20 item4_top=200
@cgmemory item5_left=160 item5_top=200
@cgmemory item6_left=300 item6_top=200
@cgmemory item7_left=440 item7_top=200
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It is indicated as itemN_xxxx, but this N can be specified from 0 up to the number specified in &lt;strong&gt;cgmemory_option item_count=8&lt;/strong&gt; minus 1. Here, it will be arranged in 4 columns and 2 rows.&lt;/p&gt;

&lt;p&gt;With this, the CG/recollection screen has been defined.&lt;/p&gt;

&lt;h3&gt;
  
  
  Registering CGs
&lt;/h3&gt;

&lt;p&gt;If entered in Excel, the CG file name will be automatically registered. To open it, use the load_cg tag to display the CG.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@load_cg layer=cg_layer_0 storage=CG_A001.png visible
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you use the above tag to display the CG, it will open in the CG/recollection screen.&lt;/p&gt;

&lt;h3&gt;
  
  
  Recollection Script
&lt;/h3&gt;

&lt;p&gt;You need to specify the script range that will be played in recollection (from which part of the script to which part is recollection). First, write the &lt;strong&gt;open_memory&lt;/strong&gt; tag at the starting position. Keep in mind that this tag must be written immediately after some label. The ending position can be specified arbitrarily using the &lt;strong&gt;end_memory&lt;/strong&gt; tag.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;*label|
@open_memory

[Hello] This is during recollection.

[Hello] It's ending.

@end_memory
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this, you have specified the recollection range. Once the script enclosed by this tag is executed even once, the button will be activated on the CG/recollection screen.&lt;/p&gt;

</description>
      <category>data</category>
      <category>gamedev</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Starting ADV Development with GOKI2 [Introduction to ModSaveLoad/ModSystemButtons] Layout of Save/Load Screens and Placement of System Buttons</title>
      <dc:creator>HALO</dc:creator>
      <pubDate>Sat, 04 Apr 2026 23:31:40 +0000</pubDate>
      <link>https://dev.to/halo1234/starting-adv-development-with-goki2-introduction-to-modsaveloadmodsystembuttons-layout-of-24i9</link>
      <guid>https://dev.to/halo1234/starting-adv-development-with-goki2-introduction-to-modsaveloadmodsystembuttons-layout-of-24i9</guid>
      <description>&lt;h1&gt;
  
  
  Download
&lt;/h1&gt;

&lt;p&gt;If you are interested, you can download the latest environment from the link in the Avalanches-Release2.x.y.y.zip in Assets from the release tag of the following site (Avalanches release version 2.x.y.y).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/halo1234/Avalanches/releases" rel="noopener noreferrer"&gt;https://github.com/halo1234/Avalanches/releases&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Save/Load
&lt;/h1&gt;

&lt;p&gt;In GOKI2, the &lt;strong&gt;ModSaveLoad&lt;/strong&gt; module implements the save/load screen.&lt;br&gt;
First, load the module.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;; Save/Load Screen
@load_module name=ModSaveLoad
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, the save/load screen can be used.&lt;/p&gt;

&lt;h3&gt;
  
  
  Save/Load Screen Layout
&lt;/h3&gt;

&lt;p&gt;We will arrange the UI for the save/load screen, but first, define the area where the UI will be placed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@save_load_option client_left=10 client_top=10 client_width=780 client_height=580
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This sets the UI placement area from (10, 10) to (780, 580).&lt;/p&gt;

&lt;p&gt;Next, set the size of a record.&lt;br&gt;
One record corresponds to one save data.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@save_load record_width=780 record_height=140
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, the record is defined.&lt;br&gt;
Next, we will continue to place the UI within the record.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@save_load index_left=10 index_top=60
@save_load date_left=180 date_top=10
@save_load summary_left=180 summary_top=30
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From top to bottom, this specifies the positions of the index, date, and summary. The summary displays the last shown text (more precisely, the content output to the message layer). If nothing is set here, nothing will be displayed for the records.&lt;/p&gt;

&lt;p&gt;Finally, you define the thumbnail. (You don’t have to specify it if unnecessary.) You can specify the position and size, as well as the background color when blank.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@save_load thumbnail_left=30 thumbnail_top=0 thumbnail_width=150 thumbnail_height=120 thumbnail_color=0xFF0000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this, the save/load screen is complete.&lt;/p&gt;

&lt;h1&gt;
  
  
  System Buttons The system buttons familiar from ADV games are implemented with &lt;strong&gt;ModSystemButtons&lt;/strong&gt;. First, load the module.
&lt;/h1&gt;

&lt;p&gt;&lt;br&gt;
 &lt;code&gt;goki2:/src/goki2/system/construct.gs ; System Buttons @load_module name=ModSystemButtons&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
 Now the system buttons can be used. ### Placing System Buttons Next, place the system buttons on the screen.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;; System Buttons
@system_button log_left=10 log_top=390 log_width=60 log_height=20 log_caption=History
@system_button skip_left=80 skip_top=390 skip_width=60 skip_height=20 skip_caption=Skip
@system_button auto_left=150 auto_top=390 auto_width=60 auto_height=20 auto_caption=Auto
@system_button hidden_left=220 hidden_top=390 hidden_width=60 hidden_height=20 hidden_caption=Erase
@system_button system_left=290 system_top=390 system_width=60 system_height=20 system_caption=System
@system_button save_left=360 save_top=390 save_width=60 save_height=20 save_caption=Save
@system_button load_left=430 load_top=390 load_width=60 load_height=20 load_caption=Load
@system_button qsave_left=500 qsave_top=390 qsave_width=60 qsave_height=20 qsave_caption=Quick Save
@system_button qload_left=570 qload_top=390 qload_width=60 qload_height=20 qload_caption=Quick Load
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For now, let's take a look at the definition of the "History" button.&lt;/p&gt;

&lt;p&gt;First, specify the button's position with &lt;code&gt;log_left=10 log_top=390&lt;/code&gt;.&lt;br&gt;
Next, specify the button's size with &lt;code&gt;log_width=60 log_height=20&lt;/code&gt;.&lt;br&gt;
Specifying the size is not necessary if you use an image for the button.&lt;br&gt;
Finally, specify the caption with &lt;code&gt;log_caption=履歴&lt;/code&gt;.&lt;br&gt;
With this, the History button has been defined.&lt;/p&gt;

&lt;p&gt;Other buttons are defined in the same way, specifying their position, size, and caption.&lt;br&gt;
For the available buttons, please refer to the manual (/doc/goki2/index.html).&lt;/p&gt;
&lt;h3&gt;
  
  
  Displaying the System Buttons
&lt;/h3&gt;

&lt;p&gt;Finally, display the system buttons defined with the following tag:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@system_button_option visible
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To hide them, execute the following tag:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@system_button_option !visible
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>kirikiri</category>
      <category>goki2</category>
    </item>
    <item>
      <title>Starting ADV Development with GOKI2 [ModSystem Introduction] Building System Screens and Defining Configuration Items</title>
      <dc:creator>HALO</dc:creator>
      <pubDate>Sun, 29 Mar 2026 00:32:18 +0000</pubDate>
      <link>https://dev.to/halo1234/starting-adv-development-with-goki2-modsystem-introduction-building-system-screens-and-defining-4g2c</link>
      <guid>https://dev.to/halo1234/starting-adv-development-with-goki2-modsystem-introduction-building-system-screens-and-defining-4g2c</guid>
      <description>&lt;h1&gt;
  
  
  Download
&lt;/h1&gt;

&lt;p&gt;If you are interested, you can download the latest environment from the link in the Avalanches-Release2.x.y.y.zip in Assets from the release tag of the following site (Avalanches release version 2.x.y.y).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/halo1234/Avalanches/releases" rel="noopener noreferrer"&gt;https://github.com/halo1234/Avalanches/releases&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  System Screen (ModSystem)
&lt;/h1&gt;

&lt;p&gt;Normally, games have a system screen to change settings and such.&lt;br&gt;
&lt;strong&gt;ModSystem&lt;/strong&gt; is what implements that.&lt;/p&gt;
&lt;h3&gt;
  
  
  Building the System Screen
&lt;/h3&gt;

&lt;p&gt;When you load ModSystem, several tags become available.&lt;br&gt;
Building the system screen is done with the &lt;strong&gt;system&lt;/strong&gt; tag.&lt;br&gt;
For now, we will continue the explanation using GOKI2's default buttons and sliders without images.&lt;br&gt;
It is also possible to use images. (In the manual, the &lt;code&gt;&amp;lt;id&amp;gt;_storage&lt;/code&gt; attribute is the item where you specify the image file)&lt;/p&gt;
&lt;h3&gt;
  
  
  Setting the Page Size and Other Properties of the System Screen
&lt;/h3&gt;

&lt;p&gt;First, set the position and size of the page.&lt;br&gt;
After that, specify things like the sound effect for clicks.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@system_option page_left=0 page_top=30 page_width=800 page_height=570 click_sound=se001.ogg enter_sound=se002.ogg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ページ定義
&lt;/h3&gt;

&lt;p&gt;システム画面は、ページ単位で構築する事になります。&lt;br&gt;
まずは、ページ0を定義します。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@system page=0 page_tab_caption=システム page_tab_left=0 page_tab_top=0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Page 0 has been defined with this.&lt;br&gt;
The display name is 'System'.&lt;/p&gt;
&lt;h3&gt;
  
  
  Setting Item Definition
&lt;/h3&gt;

&lt;p&gt;Next, let's make it possible to adjust the sound volume.&lt;br&gt;
Add a slider to page 0 as shown below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@system page=0 master_left=400 master_top=10 master_caption="Master Volume" master_slider_left=530 master_slider_top=10 master_slider_width=160 master_slider_height=20 master_slider_color=0xFF0000
@system page=0 bgm_left=400 bgm_top=40 bgm_caption="BGM Volume" bgm_slider_left=530 bgm_slider_top=40 bgm_slider_width=160 bgm_slider_height=20 bgm_slider_color=0xFF0000
@system page=0 se_left=400 se_top=70 se_caption="Sound Effects" se_slider_left=530 se_slider_top=70 se_slider_width=160 se_slider_height=20 se_slider_color=0xFF0000
@system page=0 vo_left=400 vo_top=100 vo_caption="Voice" vo_slider_left=530 vo_slider_top=100 vo_slider_width=160 vo_slider_height=20 vo_slider_color=0xFF0000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Specify the position and size of the slider caption and the slider itself. &lt;br&gt;
&lt;strong&gt;master_left=400 master_top=10 master_caption="Master Volume&lt;/strong&gt;"** specifies the position of the caption and the caption text. &lt;br&gt;
&lt;strong&gt;master_slider_left=530 master_slider_top=10 master_slider_width=160 master_slider_height=20 master_slider_color=0xFF0000&lt;/strong&gt; specifies the position, size, color, and other properties of the slider.&lt;/p&gt;

&lt;p&gt;With this, you can now change the sound volume.&lt;/p&gt;
&lt;h3&gt;
  
  
  From Page 1 Onward
&lt;/h3&gt;

&lt;p&gt;You can use page=1, etc., just like on page 0. Make sure not to forget to add the page tab.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;; Add page tab
@system page=1 page_tab_caption=Message page_tab_left=80 page_tab_top=0

; Add items to page 1
@system page=1 message_speed_left=400 message_speed_top=10 message_speed_caption="Message Speed" message_speed_slider_left=530 message_speed_slider_top=10 message_speed_slider_width=160 message_speed_slider_height=20 message_speed_slider_color=0x00FF00
@system page=1 auto_speed_left=400 auto_speed_top=40 auto_speed_caption="Auto Mode Speed" auto_speed_slider_left=530 auto_speed_slider_top=40 auto_speed_slider_width=160 auto_speed_slider_height=20 auto_speed_slider_color=0x00FF00
@system page=1 message_sample_left=400 message_sample_top=70 message_sample_width=300 message_sample_height=40 message_sample_caption_color=0xFFFFFF message_sample_shadow_color=0x808080 message_sample_edge_color=0x808000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Loading Configuration Values
&lt;/h3&gt;

&lt;p&gt;After defining the system screen, please load the configuration values with the &lt;strong&gt;load_system_config&lt;/strong&gt; tag.&lt;/p&gt;

&lt;h3&gt;
  
  
  Finally
&lt;/h3&gt;

&lt;p&gt;Since the configurable items are extensive, please refer to the manual (&lt;strong&gt;/doc/goki2/index.html&lt;/strong&gt;) under "ModSystem Tags".&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>softwaredevelopment</category>
      <category>tutorial</category>
      <category>ui</category>
    </item>
    <item>
      <title>Starting GOKI2 ADV: Defining Backgrounds, Time Zones, and Screen Update Control Tags [Mod ADV Introduction]</title>
      <dc:creator>HALO</dc:creator>
      <pubDate>Thu, 19 Mar 2026 21:57:51 +0000</pubDate>
      <link>https://dev.to/halo1234/starting-goki2-adv-defining-backgrounds-time-zones-and-screen-update-control-tags-mod-adv-1gi5</link>
      <guid>https://dev.to/halo1234/starting-goki2-adv-defining-backgrounds-time-zones-and-screen-update-control-tags-mod-adv-1gi5</guid>
      <description>&lt;h1&gt;
  
  
  Download
&lt;/h1&gt;

&lt;p&gt;If you are interested, you can download the latest environment from the link in the Avalanches-Release2.x.y.y.zip in Assets from the release tag of the following site (Avalanches release version 2.x.y.y).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/halo1234/Avalanches/releases" rel="noopener noreferrer"&gt;https://github.com/halo1234/Avalanches/releases&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;The definition of a background is simple.&lt;br&gt;
You just need to specify the name and the storage name (file name) as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@make_stage name=white storage=white.png
@make_stage name=black storage=black.png
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Additionally, you can also specify a time zone for the background.&lt;br&gt;
For time zones, specify the name and suffix as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@make_time_zone name=morning suffix=''
@make_time_zone name=evening suffix=ev
@make_time_zone name=night suffix=ng
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this, you can now use five tags: "white", "black", "morning", "evening", and "night".&lt;br&gt;
When a time zone tag is specified, the background storage will load with the corresponding suffix added to the storage name.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@evening
@white

[halo] Loaded the white background for the evening.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this case, the "white" tag will load &lt;strong&gt;whiteev.png&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Timing of screen updates
&lt;/h2&gt;

&lt;p&gt;ModADV updates (transitions) backgrounds and character sprites at the timing when text is processed.&lt;br&gt;
So, if you do the following, the screen will transition before displaying "あ".&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@white

@halo pose1 expression1 middle show
[halo]abcdefg。
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want the background and character sprites to transition separately,&lt;br&gt;
you can also use the [&lt;strong&gt;run_reserved_transition&lt;/strong&gt;] tag to forcibly trigger a transition.&lt;/p&gt;

&lt;h2&gt;
  
  
  Control tags
&lt;/h2&gt;

&lt;p&gt;ModADV has several tags for control purposes (with &lt;strong&gt;run_reserved_transition&lt;/strong&gt; being one of them).&lt;br&gt;
If you understand how they work, using them is fine.&lt;br&gt;
If you don't understand how they work, it might be difficult to use them properly.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>gamedev</category>
      <category>tooling</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Mastering ADV Development with GOKI2: Manage Character Assets, Audio Paths, and Dialogues Like a Pro</title>
      <dc:creator>HALO</dc:creator>
      <pubDate>Fri, 13 Mar 2026 22:16:10 +0000</pubDate>
      <link>https://dev.to/halo1234/mastering-adv-development-with-goki2-manage-character-assets-audio-paths-and-dialogues-like-a-pro-1and</link>
      <guid>https://dev.to/halo1234/mastering-adv-development-with-goki2-manage-character-assets-audio-paths-and-dialogues-like-a-pro-1and</guid>
      <description>&lt;h1&gt;
  
  
  Download
&lt;/h1&gt;

&lt;p&gt;If you are interested, you can download the latest environment from the link in the Avalanches-Release2.x.y.y.zip in Assets from the release tag of the following site (Avalanches release version 2.x.y.y).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/halo1234/Avalanches/releases" rel="noopener noreferrer"&gt;https://github.com/halo1234/Avalanches/releases&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;For more information on syntax extension, please refer to the following link:&lt;br&gt;
&lt;a href="https://dev.to/halo1234/getting-started-with-adv-development-in-goki2-system-architecture-understanding-module-structure-1olc"&gt;https://dev.to/halo1234/getting-started-with-adv-development-in-goki2-system-architecture-understanding-module-structure-1olc&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  ModADV
&lt;/h2&gt;

&lt;p&gt;GOKI2 includes a module called &lt;strong&gt;ModADV&lt;/strong&gt;, which is specifically designed for ADV (Adventure) and Visual Novel games. Since ModADV depends on ModMessage, ModImage, and ModSound, these modules are automatically loaded whenever ModADV is initialized.&lt;/p&gt;
&lt;h2&gt;
  
  
  Character Definition
&lt;/h2&gt;

&lt;p&gt;First, define a character using the &lt;strong&gt;&lt;code&gt;make_character&lt;/code&gt;&lt;/strong&gt; tag. For this example, let's extend the syntax of &lt;code&gt;make_character&lt;/code&gt; to simplify the descriptions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@!make_character image=with_image-&amp;gt;true,without_image-&amp;gt;false
@!make_character voice=with_voice-&amp;gt;true,without_voice-&amp;gt;false

; Create mob tag (redirect)
@redirect alias=mob name=make_character
; If no variables are specified with a pattern, the specified values will always be expanded.
@!mob /mob=true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, define the character. Do it as follows.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@make_character name=halo with_image with_voice
@make_character name=halo sub_directory_name=images part_of_directory_path=A
@make_character name=halo voice_sub_directory_name=testcase
@make_character name=halo shadow_color=0x808080 edge_color=0xFF0000
@make_character name=halo history_shadow_color=0x808080 history_edge_color=0xFF0000
@make_character name=halo history_icon=history_icon_halo history_icon_left=18
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's go through it line by line.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@make_character name=halo with_image with_voice
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This defines that the character "halo" is a character that has a standing picture and a voice.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@make_character name=halo sub_directory_name=images part_of_directory_path=A
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the information necessary to calculate the path when a character illustration is placed in a subdirectory of the automatic search path. In this case, the character illustration will have the following folder structure:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;images/A/CharacterIllustrationFileName.png&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;br&gt;
!Note!&lt;br&gt;
If you place the character illustration in a subdirectory, you will need to rename the file when releasing. The /tools/make tool automatically does this for you. The /tools/make tool is used to generate master data.&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@make_character name=halo voice_sub_directory_name=testcase
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the information required to calculate the path when the voice is placed in a subdirectory. In this case, the voice folder structure is as follows:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;testcase//halo000.ogg&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt; specifies the file name of the currently running scenario script (without the extension). If the scenario being executed is test.gs,  will be set to test, and the final path will be as follows:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;testcase/test/halo000.ogg&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@make_character name=halo shadow_color=0x808080 edge_color=0xFF0000
@make_character name=halo history_shadow_color=0x808080 history_edge_color=0xFF0000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This specifies the text color for the character "halo"'s dialogue and history.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@make_character name=halo history_icon=history_icon_halo history_icon_left=18
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This specifies the icon to be displayed next to the history text.&lt;/p&gt;

&lt;h2&gt;
  
  
  Character Tag
&lt;/h2&gt;

&lt;p&gt;This defines the character "halo". (The tag "halo" can now be used.)&lt;br&gt;
We extend the syntax for the tags "character" and "halo".&lt;br&gt;
By the way, internally, "halo" is redirected to "character".&lt;br&gt;
If syntax extensions are made to the "character" tag here, they will also apply to "halo".&lt;br&gt;
Conversely, if syntax extensions are made to the "halo" tag, they will apply to "halo" but not to "character".&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@!character center_x=left-&amp;gt;200,middle-&amp;gt;400,right-&amp;gt;600,middleleft-&amp;gt;300,middleright-&amp;gt;500,leftend-&amp;gt;100,rightend-&amp;gt;700
@!character gray_scale=sepia-&amp;gt;true r_gamma=sepia-&amp;gt;1.5 g_gamma=sepia-&amp;gt;1.3
@!character visible=show-&amp;gt;true,erase-&amp;gt;false
@!character no_voice=nv-&amp;gt;true

@!halo /storage=A_&amp;lt;POSE&amp;gt;_&amp;lt;FACE&amp;gt;
@!halo face=expression1-&amp;gt;face1,expression2-&amp;gt;face2
@!halo target=pose1-&amp;gt;*target
@!halo pose=pose1-&amp;gt;pose1,pose2-&amp;gt;pose2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I don't need any more explanations.&lt;br&gt;
The scenario script should now look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;; Handling Scenario Text with ModADV
; If you don't do this, you won't see any text
@using_mod_adv
; If you also want to omit the [r] and [p] tags, run the following tags:
@cr_handling !ignore

; Define a character "mob" that is only valid within this scenario
@mob name=mob without_image without_voice

@halo pose1 expression1 middle show
[halo] halo's line.

; Make the standing picture sepia and move it to the left
@halo pose1 expression2 left Sepia
[halo] The voice will play if configured.

[mob] This is the line of the mob. There are no standing pictures or voices.

@halo pose1 expression2 medium
[halo nv] does not play the voice.

@halo erase
[halo] erases the standing picture.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is how to define a character using ModADV.&lt;/p&gt;

&lt;p&gt;If you want to try GOKI2, you can download the latest environment from the following.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/halo1234/Avalanches/releases" rel="noopener noreferrer"&gt;https://github.com/halo1234/Avalanches/releases&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  List of Related Articles
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://dev.to/halo1234/getting-started-with-adv-development-in-goki2-system-architecture-understanding-module-structure-1olc#in-conclusion"&gt;List of related articles on GOKI2&lt;/a&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>gamedev</category>
      <category>opensource</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Getting Started with ADV Development in GOKI2: System Architecture – Understanding Module Structure and Custom Syntax Extensions</title>
      <dc:creator>HALO</dc:creator>
      <pubDate>Fri, 06 Mar 2026 23:34:46 +0000</pubDate>
      <link>https://dev.to/halo1234/getting-started-with-adv-development-in-goki2-system-architecture-understanding-module-structure-1olc</link>
      <guid>https://dev.to/halo1234/getting-started-with-adv-development-in-goki2-system-architecture-understanding-module-structure-1olc</guid>
      <description>&lt;h1&gt;
  
  
  GOKI2
&lt;/h1&gt;

&lt;p&gt;I am developing a framework called &lt;strong&gt;GOKI2&lt;/strong&gt; to enable the creation of games other than ADVs/visual novels using KiriKiri Z.&lt;/p&gt;

&lt;p&gt;If you are interested, please download "&lt;strong&gt;Avalanches-Release2.x.x.x.zip&lt;/strong&gt;" from the site below.&lt;br&gt;
Extracting this file will provide you with the Avalanches source code and binaries (the development environment), as well as the tools required for development. We recommend reading &lt;code&gt;readme.txt&lt;/code&gt; first.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Avalanches&lt;/strong&gt;: The development environment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GOKI2&lt;/strong&gt;: The game framework.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Download
&lt;/h3&gt;

&lt;p&gt;If you are interested, you can download the latest environment from the "Assets" section of the release tag (labeled as &lt;em&gt;Avalanches release version 2.x.y.y&lt;/em&gt;) on the site below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Halo1234/Avalanches/releases" rel="noopener noreferrer"&gt;https://github.com/Halo1234/Avalanches/releases&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Modules
&lt;/h3&gt;

&lt;p&gt;In GOKI2, each tag is managed as a "module," and each module implements the necessary tags for its specific function.&lt;br&gt;
Currently, a large number of modules have been developed. Users can build their own unique game configuration by importing only the modules (features) they require.&lt;br&gt;
Modules are loaded in &lt;code&gt;/src/goki2/system/construct.gs&lt;/code&gt;.&lt;br&gt;
For a standard ADV game, the configuration would typically look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;; Snapshot feature
@load_module name=ModSnapshot
; Bookmark feature
@load_module name=ModBookmark
; Image-related features
@load_module name=ModImage
; Message layer-related features
@load_module name=ModMessage
; Sound-related features
@load_module name=ModSound
; Video-related features
@load_module name=ModVideo
; Right-click-related features
@load_module name=ModRightClick
; ADV features
@load_module name=ModADV
; System buttons
@load_module name=ModSystemButtons
; Save/Load screen
@load_module name=ModSaveLoad
; System screen
@load_module name=ModSystem
; Choices
@load_module name=ModSelect
; Title screen
@load_module name=ModTitle
; CG/Gallery screen
@load_module name=ModCGMemory
; Version window
@load_module name=ModVersionWindow
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For details on each tag, please refer to the manual &lt;strong&gt;/doc/goki2/index.html&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;GOKI2 implements its own tags, but with GOKI2's syntax extension features, tags compatible with KAG3 can also be provided. By default, GOKI2 provides a script called KAGCompatible.gs, which allows writing GOKI2 tags in KAG3 format.&lt;/p&gt;

&lt;p&gt;The content is as follows, specifying scripts to create KAG3-compatible tags for the modules that are loaded.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@que unshift storage=KAGCompatibleDefault.gs
@que unshift storage=KAGCompatibleBookmark.gs
@que unshift storage=KAGCompatibleImage.gs
@que unshift storage=KAGCompatibleMessage.gs
@que unshift storage=KAGCompatibleRightClick.gs
@que unshift storage=KAGCompatibleSnapshot.gs
@que unshift storage=KAGCompatibleSound.gs
@que unshift storage=KAGCompatibleVideo.gs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's take a quick look at the contents of the file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@!cursor /default_cursor=&amp;lt;DEFAULT&amp;gt; /pointed_cursor=&amp;lt;POINTED&amp;gt; /click_cursor=&amp;lt;CLICK&amp;gt; /draggable_cursor=&amp;lt;DRAGGABLE&amp;gt;

@redirect alias=loadplugin name=load_plugin
@!load_plugin /name=&amp;lt;MODULE&amp;gt;

@redirect alias=resetwait name=reset_wait

@!wait /skip=&amp;lt;CANSKIP&amp;gt; /no_skip=&amp;lt;NO_CANSKIP&amp;gt; /!skip=&amp;lt;!CANSKIP&amp;gt;

@redirect alias=waitclick name=wait_click
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Utilizing &lt;code&gt;syntax&lt;/code&gt; and &lt;code&gt;redirect&lt;/code&gt; Tags in GOKI2
&lt;/h2&gt;

&lt;p&gt;GOKI2 has a basic policy of "&lt;strong&gt;not omitting tag names or attribute names&lt;/strong&gt;," but to simplify descriptions that tend to become long, it adopts a style that combines the &lt;strong&gt;&lt;code&gt;syntax&lt;/code&gt; tag&lt;/strong&gt; and &lt;strong&gt;&lt;code&gt;redirect&lt;/code&gt; tag&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;code&gt;syntax&lt;/code&gt; Tag: Tag Syntax Extension
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;syntax&lt;/code&gt; tag is used to define new syntax patterns for existing tags to simplify descriptions. However, extended syntax is not saved in the save data, so be sure to set it during initialization.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Expanding Syntax by Adding &lt;code&gt;!&lt;/code&gt; to Tag Names
&lt;/h4&gt;

&lt;p&gt;When using the &lt;code&gt;syntax&lt;/code&gt; tag, you can define new description patterns by adding &lt;strong&gt;&lt;code&gt;!&lt;/code&gt;&lt;/strong&gt; to the tag name you want to define.&lt;br&gt;
&lt;strong&gt;Example of Syntax Extension:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Extension Definition (&lt;code&gt;@!&lt;/code&gt;)&lt;/th&gt;
&lt;th&gt;Actual Description&lt;/th&gt;
&lt;th&gt;Interpreted After Conversion (&lt;code&gt;@&lt;/code&gt;)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@!make_character image=imgebl-&amp;gt;true,imgdis-&amp;gt;false&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;@make_character imgebl&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;@make_character image=true&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;@make_character imgdis&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;@make_character image=false&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  2. Specify a pattern by adding a &lt;code&gt;/&lt;/code&gt; symbol to an attribute (pattern replacement)
&lt;/h4&gt;

&lt;p&gt;By using the &lt;strong&gt;&lt;code&gt;/&lt;/code&gt;&lt;/strong&gt; symbol in a &lt;code&gt;syntax&lt;/code&gt; tag attribute, you can specify a &lt;strong&gt;pattern replacement for the attribute value&lt;/strong&gt;. The &lt;code&gt;&amp;lt;KEY&amp;gt;&lt;/code&gt; part will be replaced with the value of the specified attribute.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example of pattern replacement:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Extended definition (&lt;code&gt;@!&lt;/code&gt;)&lt;/th&gt;
&lt;th&gt;Actual notation&lt;/th&gt;
&lt;th&gt;Interpreted after conversion (&lt;code&gt;@&lt;/code&gt;)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@!halo/storage=A_&amp;lt;POSE&amp;gt;_&amp;lt;FACE&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;@halo pose=Pose1 face=Face1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;@halo storage=A_Pose1_Face1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  3. Combined Usage
&lt;/h4&gt;

&lt;p&gt;These can be used in combination.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example of combination:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Extended Definition (&lt;code&gt;@!&lt;/code&gt;)&lt;/th&gt;
&lt;th&gt;Actual Description&lt;/th&gt;
&lt;th&gt;Converted Interpretation (&lt;code&gt;@&lt;/code&gt;)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;@!halo /storage=A_&amp;lt;POSE&amp;gt;_&amp;lt;FACE&amp;gt; pose=Pose1-&amp;gt;p1 face=Face1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;@halo Pose1 Face1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;@halo storage=A_p1_Face1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  &lt;code&gt;redirect&lt;/code&gt; Tag: Shortening Long Tag Names
&lt;/h3&gt;

&lt;p&gt;As a basic principle of GOKI, we try not to abbreviate tag names or attribute names, but we adopt a style of shortening names using the &lt;strong&gt;&lt;code&gt;redirect&lt;/code&gt; tag&lt;/strong&gt; and the &lt;strong&gt;&lt;code&gt;syntax&lt;/code&gt; tag&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;redirect&lt;/code&gt; tag is used in combination with the &lt;code&gt;syntax&lt;/code&gt; tag to convert GOKI2's long tag names and attribute names into &lt;strong&gt;arbitrary short names for the user&lt;/strong&gt;. This allows both concise writing and code clarity.&lt;/p&gt;

&lt;p&gt;Data specified with the &lt;code&gt;redirect&lt;/code&gt; tag is saved in the save data, so it doesn't matter where it is written.&lt;/p&gt;




&lt;h3&gt;
  
  
  Support for KAG3 Compatibility
&lt;/h3&gt;

&lt;p&gt;Since GOKI2 tags have longer names compared to KAG3, a configuration file is provided in advance so that you can write in the conventional KAG3 format. &lt;br&gt;
Make sure to load only what is necessary. For example, if you are not loading the &lt;strong&gt;ModBookmark&lt;/strong&gt; module, you do not need to load &lt;strong&gt;KAGCompatibleBookmark.gs&lt;/strong&gt;. (It will result in an error)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This is mainly handled in the &lt;code&gt;/src/goki2/system/KAGCompatible***.gs&lt;/code&gt; files.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  In Conclusion
&lt;/h3&gt;

&lt;p&gt;For now, we have briefly introduced &lt;strong&gt;GOKI2&lt;/strong&gt;. &lt;br&gt;
Going forward, we will periodically post about &lt;strong&gt;GOKI2&lt;/strong&gt; and &lt;strong&gt;Avalanches&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://qiita.com/halo1234/items/09fd22503ed3ac11014d" rel="noopener noreferrer"&gt;Latest Articles (Japanese)&lt;/a&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>gamedev</category>
      <category>showdev</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
