This page is for the Pose Matrix. For the Pose Maker, go here.

Basics

Stripping away (ha!) all the game's fancy whistles, at its heart a character consists of a bunch of lines of dialogue, where each line contains some text and a corresponding pose. Before you jump into writing dialogue, it's generally useful to at least have a few poses at your disposal, because looking at your character's reactions can inform your writing.

Poses can either be image files (.PNG or .GIF) or a real-time animation created by the Pose Maker that is built from one or more image files. Images use a specific naming convention #-emotion where # is the stage the image belongs to, and emotion is the name of the pose.

In order to maintain a consistent art style across characters, we use a paper doll tool known as Kisekae / KKL for generating the PNGs used by the game. You can find this in the tools folder of the SPNATI repository that you downloaded. This guide will not include details about creating models. There are many resources online, and a dedicated Discord channel for using KKL with SPNATI.

Remember, SPNATI does not use KKL.
KKL is merely the tool used for producing the image files that SPNATI does use. The game does not know or care where an image originated from. Indeed, many characters are touched up in Photoshop after being created in KKL.

Your primary friend when using Kisekae to interact with the editor is the Export button found in the file menu:

Kisekae export button

This will display a textbox containing a bunch of gibberish code. You will be copying this code and pasting it into the relevant fields in the Poses tab of the editor.

You can filter out pieces of the scene by clicking the buttons at the bottom of the Export window. This is important when generating templates, but for simply getting an image generated, you typically want everything selected.

Kisekae codes are essentially the entire model information (face, clothing, pose, etc.) encoded into a text format. The editor can in turn take these codes and convert them into PNG files (or rather, tells Kisekae to convert them).

An example code for SPNATI-chan, the SPNATI Character Editor mascot:

86**aa13.84.0.0.59.8.82.0.14.59_ab_ac_ba68_bb10.1_bc410.500.8.0.1.0_bd2_be189_bf_bg_bh1_ca63.1.16.63.0.9.31.18.31.1.60.80_daf7dcd0.0.25.100_db_dd9.1.32.-30.10.17_dheb9e8c.20.50.43.3_di6_qa_qb_dc5.4.f7dcd0.f9c3c7.e6826c.0_eh_ea2.6.6.56.0.0_ec6.29.6.6.56.42.63.1_ed17.22.1.1.6.56_ef0.2.22.6.6.56.0.1_eg0.2.22.6.6.56.0.1_r00_fa15.54.65.54.23.36.56_fb_fh_fc1.32.55.1.32.55.42.61.61.42.50.50_fj0.0.0_fd2.0.20.5.5_fe48.82_ff0000010000_fg1.45.56.50.56.1.0.0_fi1.71.18.25.25_pa0.55.8.51.10.50.85.78.0.0_t00_pb_pc_pd_pe_ga0_gb0.0.10.40.65_gc10.0_ge0000000000_gh0_gf_gg_gd000000_ha100.100_hb50.1.50.50.50.50.50_hc0.50.48.0.50.48_hd0.1.50.50.2.60.50.50_ad0.0.0.0.0.0.0.0.0.0_ae1.0.0.0.0_ia_if10.c3ffe4.3f253c.973636.1.12.b2e9d0.55.12.b2e9d0.55.1.1.1.0.0.0.0.1_ib_id10.55.3f1e4b.3f1e4b.0.0.1.3.02218b.55.3.02218b.55.2.0.0.0.0.1_ic32.260134.3f1e4b.260134.0_jc_ie4.56.51.48.19.1b0c23.43.0.19.1b0c23.43.0.0_ja_jb_jf_jg_jd11.55.3f1e4b.55.4.6e5e63.58.59_je11.55.3f1e4b.55.4.6e5e63.58.59_ka2.14.14.14.0_kb2.14.14.14_kc_kd_ke_kf_la_lb_oa_os_ob_oc_od_oe_of_lc_m004.1b0c23.2.42.1.2.-15.28.280.99.1.61.0.500.0.2.1_m014.1b0c23.2.42.2.2.-15.17.862.136.1.61.0.500.0.2.1_n00_s150.55.55.43.0.0.144.604.911.1.11.0.25.0.61.500_og_oh_oo_op_oq_or_om_on_ok_ol_oi_oj_f00

Pose Matrix

The pose matrix is a sort of spreadsheet for managing your codes where each column is a pose/emotion and each row is a clothing stage. The screen can be broken down as follows:

Pose Matrix
  1. Cell: Each cell represents a single image for an emotion + stage. In this screenshot, stage "0", pose "calm" is selected. When imported, this will therefore create "0-calm.png". You can edit a cell's KKL code, cropping bounds, etc. by clicking on it and then editing the fields that appear below (6).
  2. Column: A column represents a single emotion or pose. You can drag columns around to reorder them. Clicking a column header allows you to rename it, export the pose as a lineup of all stages in Kisekae, or import a lineup from Kisekae.
    • Export lineup: Exports the pose across all stages (excluding Masturbating and Finished) as a single character lineup in Kisekae.

      Florina Lineup
      Florina's "happy" pose exported as a lineup.

    • Import lineup: Imports the code from a character lineup in Kisekae. When exporting the code from Kisekae, be sure that ALL is selected. This will extract the code for each character in the sequence and insert them into the stage rows in order for that column.
  3. Row: A row is automatically created for each stage in the character's stripping sequence based on their wardrobe. Clicking the row header will allow you to provide a code for that stage's clothing. If you supply this, then that clothing will be automatically applied to every pose in that row when importing (similar to templates).
  4. Sheet: Clicking this blank area displays sheet-wide properties such as its name. You can optionally provide a base code representing your character's naked appearance. If supplied, this will be automatically applied to every pose in the sheet when importing. This lets you make basic changes to your model (ex. tweaking the skin tone) in one place (similar to templates).
  5. Preview: Clicking a cell will display its pose in the preview sidebar, if one has been imported.
  6. Context-Sensitive Edit Form: This displays properties for the currently selected sheet, row, column, or cell.
  7. Import tools:
    • Import New: Imports poses from Kisekae, creating images for any cells that have not been imported yet.
    • Import All: Imports poses from Kisekae, creating images for all cells even if they had been previously imported.
  8. Status icon: Indicates the presence of a .PNG for a pose cell.
    • Checkmark: Indicates the pose has been imported to a .PNG. This does not necessarily mean the .PNG is up to date with the current code.
    • Missing file: Indicates that the cell has a KKL code defined but no .PNG has been imported yet. When using "Import New", only these cells will be imported.
    • Blank: No icon means that the cell has no KKL code defined. For some poses (ex. "gameover"), it doesn't make sense to include a code for a stage, so it's fine to leave blank for stages that don't apply.
  9. Sheet Tools: Provides interaction with the current sheet
    • Add Pose Column: Adds a new column to the sheet
    • Remove Pose Column: Deletes the current selected column.
    • Sort Columns: Sorts the columns alphabetically.
  10. Sheets: Each sheet in the matrix has its own tab. Sheets let you organize your poses rather than using one giant grid. Use the + button to add a new sheet. Subsequent sheets can be deleted by clicking the X while selected.

Importing Poses

Kisekae must be running for image import to work correctly!
A pose is just data describing a character's current appearance and pose; it is not the actual image used in the game, nor is it used by the game in any way. To convert poses information to actual images, you must import the poses. You can import one image at a time, or in bulk.
  1. Bulk Import Use the Import New or Import All buttons to convert multiple poses into images. New will convert poses for images that don't exist yet. All will convert all poses into images, even if they already have one.
  2. Single Import Use the Import (or Reimport) button in a pose's row. Importing this way will open the Cropping Tool prior to generating the image.

Cropping Tool

You can interactively adjust an image's cropping by importing or reimporting that single image. This will open the Cropping Tool, which shows the character in a red box. Drag the box to adjust the cropping region.
There are three methods of dragging:
  1. Drag Edge: Drag an edge with the left mouse button to move it
  2. Mirror: Drag an edge with the right mouse button to move it while moving the opposite edge the same distance in the other direction. This is useful to keep the character centered.
  3. Move: Drag with the left mouse button inside the box to move the whole box.
Click Accept to finish importing. The cell in the matrix will be updated with the new crop values, and the image will be loaded.