<?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>GOKI2 Gameplay: ModBookmark &amp; KAG3 Variable System for Data Persistence</title>
      <dc:creator>HALO</dc:creator>
      <pubDate>Fri, 01 May 2026 23:45:39 +0000</pubDate>
      <link>https://dev.to/halo1234/goki2-gameplay-modbookmark-kag3-variable-system-for-data-persistence-1o15</link>
      <guid>https://dev.to/halo1234/goki2-gameplay-modbookmark-kag3-variable-system-for-data-persistence-1o15</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;
  
  
  ModBookmark and ModSnapshot
&lt;/h1&gt;

&lt;p&gt;ModBookmark is a module related to save data.&lt;br&gt;
ModSnapshot is a module related to snapshots.&lt;/p&gt;

&lt;p&gt;First, load the modules.&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
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this, snapshot and save data features are incorporated.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setting the Save Data Format
&lt;/h3&gt;

&lt;p&gt;First, set the format for 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;@bookmark format=bmp24 width=150 height=auto keep_aspect_ratio mode=z quick=quick store_skipping
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's go through it step by step. First, &lt;strong&gt;&lt;em&gt;format=bmp24&lt;/em&gt;&lt;/strong&gt; specifies bmp24 for the format attribute. Other options include bmp32/bmp8/bmp (same as bmp32). This means that a thumbnail will be included in the save data.&lt;/p&gt;

&lt;p&gt;Next, we specify the size of the thumbnail with &lt;strong&gt;&lt;em&gt;width=150 height=auto&lt;/em&gt;&lt;/strong&gt;.&lt;br&gt;
The width is set to 150, and the height is calculated automatically.&lt;/p&gt;

&lt;p&gt;We specify &lt;strong&gt;&lt;em&gt;keep_aspect_ratio&lt;/em&gt;&lt;/strong&gt; to fix the aspect ratio of the thumbnail.&lt;br&gt;
When this attribute is specified, the size is calculated while maintaining the aspect ratio.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;mode=z&lt;/em&gt;&lt;/strong&gt; specifies the format in which the data is saved.&lt;br&gt;
Specifying z compresses the data.&lt;br&gt;
Specifying c encrypts the data.&lt;br&gt;
Both cannot be specified at the same time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;quick=quick&lt;/em&gt;&lt;/strong&gt; specifies the name of the so-called quick save data.&lt;br&gt;
If a quick save is performed, the data is saved under the name specified here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;store_skipping&lt;/em&gt;&lt;/strong&gt; specifies whether to store save data during skipping.&lt;br&gt;
This functions as a hint for speeding up.&lt;br&gt;
If you set this attribute to true, save data will not be stored during skipping.&lt;br&gt;
This can thus provide faster skipping.&lt;br&gt;
However, when stopping at an s tag, for example, it is necessary to store the final state of the save data.&lt;br&gt;
Including force_store in the name of a savable label allows save data to be stored even if this attribute is true.&lt;br&gt;
For instance, when using choices, the following method is recommended:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;*force_store|
@select caption=Choice 1 target=*choice1
@select caption=Choice 2 target=*choice2
@select show
@s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By doing this, even if &lt;strong&gt;&lt;em&gt;store_skipping&lt;/em&gt;&lt;/strong&gt; is true, the save data will be forcibly stored by &lt;em&gt;force_store&lt;/em&gt; during skipping.&lt;/p&gt;

&lt;h3&gt;
  
  
  Thumbnails
&lt;/h3&gt;

&lt;p&gt;The thumbnail module manages the capturing and releasing of snapshots. Normally, it is a module you don't need to pay particular attention to.&lt;/p&gt;

&lt;p&gt;You can also manually take snapshots.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;; Capture a snapshot of the current screen
@lock_snapshot
; Release the snapshot
@unlock_snapshot
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the number of calls to lock_snapshot and unlock_snapshot does not match, malfunctions may occur. You will probably rarely use this tag directly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Variable Areas
&lt;/h3&gt;

&lt;p&gt;The variable areas managed by ModBookmark include three areas: user variables, system variables, and temporary variables. User variables are stored in save data. System variables are stored in system save data. Temporary variables are disposable variables that can be used temporarily and are not saved to files. This design is the same as KAG3.&lt;/p&gt;

&lt;p&gt;The contents stored in user variables are saved in each save data. To store a value in a user variable, do the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;eval&lt;/span&gt; &lt;span class="nx"&gt;exp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;f.testVal = 99999&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The contents saved in system variables are stored in the system save data. The system variable area stores settings that affect the entire game. For example, information such as whether the game has been cleared is not very meaningful to save in individual save data. It is used in cases where you want to access the same information regardless of which save data is loaded. The actual script for saving a value in the system variable area is as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;eval&lt;/span&gt; &lt;span class="nx"&gt;exp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sf.gameClear = true&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As the name suggests, temporary variables are a variable area used temporarily. Since they are not saved, they are used when you just want to temporarily store a value. They are not saved, so the information is lost when the game is restarted. The usage is as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;eval&lt;/span&gt; &lt;span class="nx"&gt;exp&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;tf.tempVal = 'string'&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Return to Previous / Return to Title
&lt;/h3&gt;

&lt;p&gt;The "Return to Previous" and "Return to Title" functions are also managed by ModBookmark. The Return to Previous function uses the &lt;strong&gt;&lt;em&gt;record&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;go_back&lt;/em&gt;&lt;/strong&gt; tags. The &lt;strong&gt;&lt;em&gt;record&lt;/em&gt;&lt;/strong&gt; tag saves the state of the last savable label before it was written. The &lt;strong&gt;&lt;em&gt;go_back&lt;/em&gt;&lt;/strong&gt; tag returns to the previous state.&lt;/p&gt;

&lt;p&gt;The function to return to the title uses the &lt;strong&gt;&lt;em&gt;start_anchor&lt;/em&gt;&lt;/strong&gt; tag and the &lt;strong&gt;&lt;em&gt;go_to_start&lt;/em&gt;&lt;/strong&gt; tag.&lt;br&gt;&lt;br&gt;
The &lt;strong&gt;&lt;em&gt;start_anchor&lt;/em&gt;&lt;/strong&gt; tag saves the state of the previous saveable label before it.&lt;br&gt;&lt;br&gt;
The &lt;strong&gt;&lt;em&gt;go_to_start&lt;/em&gt;&lt;/strong&gt; tag returns to the location where &lt;strong&gt;&lt;em&gt;start_anchor&lt;/em&gt;&lt;/strong&gt; was written (the previous saveable label).&lt;br&gt;&lt;br&gt;
For example, you would write it 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;*game_start|
@start_anchor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Normally, returning to the previous point or back to the title would be done by the user from the menu.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dialog
&lt;/h3&gt;

&lt;p&gt;In ModBookmark, you can display a confirmation dialog to the user when performing actions like returning to the start or saving.&lt;br&gt;&lt;br&gt;
If you want to use original images in the dialog, it is recommended to use the &lt;strong&gt;&lt;em&gt;ask_save&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;ask_start&lt;/em&gt;&lt;/strong&gt;, and &lt;strong&gt;&lt;em&gt;ask_record&lt;/em&gt;&lt;/strong&gt; tags.&lt;br&gt;&lt;br&gt;
These tags allow you to specify images for each UI.&lt;br&gt;&lt;br&gt;
For the values to assign to each attribute, please refer to the manual (/doc/goki2/index.html).&lt;br&gt;&lt;br&gt;
If you do not use these tags, the default UI will be used.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>github</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Expanding Gameplay with GOKI2 [Introduction to ModSelect] Implementing Branching Scenarios and Choices with ModSelect</title>
      <dc:creator>HALO</dc:creator>
      <pubDate>Fri, 24 Apr 2026 22:17:51 +0000</pubDate>
      <link>https://dev.to/halo1234/expanding-gameplay-with-goki2-introduction-to-modselect-implementing-branching-scenarios-and-19hc</link>
      <guid>https://dev.to/halo1234/expanding-gameplay-with-goki2-introduction-to-modselect-implementing-branching-scenarios-and-19hc</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;
  
  
  Choices
&lt;/h1&gt;

&lt;p&gt;In the previous "Introduction to ModADV" series, we completed the basic screen settings that make up a game. From this point on, we will start a new series that dives deeper into the "gaming experience"!&lt;/p&gt;

&lt;p&gt;The first installment explains the &lt;strong&gt;choice function (ModSelect)&lt;/strong&gt;, which allows you to implement "scenario branching," the core appeal of ADV (adventure games).&lt;/p&gt;

&lt;p&gt;There is a module called ModSelect that manages choices. 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;; Choices
@load_module name=ModSelect
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you can use choices.&lt;/p&gt;

&lt;h3&gt;
  
  
  Choice Settings
&lt;/h3&gt;

&lt;p&gt;You can preset various sound effects and button sizes for choices. As an example, we will use the following settings:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@select_option base_left=10 base_top=10 base_left_step=80 button_width=70 button_height=40
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's go through them one by one. &lt;strong&gt;&lt;em&gt;base_left=10 base_top=10&lt;/em&gt;&lt;/strong&gt; specifies where the choices will start. Here, the first button is placed at position (10, 10).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;base_left_step=80&lt;/em&gt;&lt;/strong&gt; specifies that the next choice will be displayed 80 pixels away from base_left. Although not specified here, there is also a &lt;strong&gt;&lt;em&gt;base_top_step&lt;/em&gt;&lt;/strong&gt; attribute. Set it if necessary.&lt;/p&gt;

&lt;p&gt;Finally, &lt;strong&gt;&lt;em&gt;button_width=70 button_height=40&lt;/em&gt;&lt;/strong&gt; specifies the size of the buttons.&lt;/p&gt;

&lt;p&gt;This completes the choice settings. If necessary, you can also specify sound effects, so please refer to the manual.&lt;/p&gt;

&lt;p&gt;By the way, to specify sound effects, you will need to separately load &lt;strong&gt;&lt;em&gt;ModSound&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating Choices
&lt;/h3&gt;

&lt;p&gt;You can write choices at any point in the scenario script. Choices are placed on the background layer rather than the message layer (more precisely, on a choice-specific layer with the primary as the parent).&lt;/p&gt;

&lt;p&gt;You can create choices at any point in the scenario 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;@select caption="Choice 1" target=*choice1
@select caption="Choice 2" target=*choice2
@select show
@s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will write the &lt;strong&gt;&lt;em&gt;select&lt;/em&gt;&lt;/strong&gt; tag for the number of choices you have. Specify the caption of the choice in &lt;strong&gt;&lt;em&gt;caption&lt;/em&gt;&lt;/strong&gt;. Specify the label name to execute when selected in &lt;strong&gt;&lt;em&gt;target&lt;/em&gt;&lt;/strong&gt;. You can also specify the scenario storage in &lt;strong&gt;&lt;em&gt;storage&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Once you have created the choices, they will be displayed and paused. Use &lt;strong&gt;&lt;em&gt;select show&lt;/em&gt;&lt;/strong&gt; to display the choices and &lt;strong&gt;&lt;em&gt;s&lt;/em&gt;&lt;/strong&gt; to pause.&lt;/p&gt;

&lt;p&gt;Finally, define the labels that will be executed when a choice is selected.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;*choice1
You chose Choice 1.
@s

*choice2
You chose Choice 2.
@s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Currently, when a choice is executed, it will show the execution content and then pause, but in practice, you will likely write some other tags.&lt;/p&gt;

&lt;p&gt;Now you can use choices.&lt;/p&gt;

&lt;p&gt;Was that too simple this time? Choices are an important feature for implementing gameplay. Please make sure you can use them proficiently.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>gamedev</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <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>
