ばけねこ探偵事務所

デジタルゲーム/音楽創作サークル

ユーザ用ツール

サイト用ツール


article:20251201-adventcalendar2025emacs

ゲーム台本執筆用Emacsメジャーモード mz-scripter-mode


2025/12/1, 0:00

本記事は Emacs Advent Calendar 2025 の初日の記事です

この記事はQiitaのEmacs好きなIT技術者、インディーゲーム開発者(特にRPGツクールMZを使っているツクラー)向けに発信しております。


はじめに

こんにちは! デジタルゲーム/サウンド創作サークルのサークル主、たちやまと申します。

趣味の一環でRPGツクールMZを使って謎解きアドベンチャーゲームを開発しています。
謎解きの実装やグラフィックの処理など、メインのゲーム開発はMZ上で行うのですが、キャラクターの台詞や、立ち絵の処理のスクリプトなどの執筆については、テキストエディタであるEmacsを使用しています。
執筆に当たって使用しているメジャーモードは、私が自作したmz-scripter-mode1)です。

Emacsは学生時分から10年以上2)使っていますが、メジャーモードは初めて自作しました。
Lispの基本的な部分は書けるので、「やさしいEmacs-Lisp講座」3)でメジャーモード開発周りの知識を仕入れてから、ライブラリ関数などの簡単な調べものはcopilotを併用しつつ開発しました。

Emacs好きな皆さんへ
私が初めて開発したメジャーモードの紹介記事です。
elisp的に新しいもの、目立つものは無いと思います。4)
「初心者がなんか作っとんな」という生暖かい目でお読みください

インディーゲーム開発界隈の皆さんへ
アドベンチャーパートが有るゲームであれば、シナリオを書く系の作業はどのゲームエンジン5)を使用していても手間が掛かる部分だと思います。

私はRPGツクールMZが大好き6)ですが、アドベンチャーパートの開発に多大な時間が掛かっていました。
MZの会話ウィンドウは一般的なテキスト入力のUIなのですが、私のゲーム開発がテキストと同時に各種演出をたくさん入力するものであったためです。

そこで、テキストを入力するためのソフトウェアであるテキストエディタEmacsでシナリオ執筆用の専用モードを開発してみた、という記事です。
技術的な部分は中々伝わりづらいと思いますが、ゲーム開発効率化の何かのヒントになれば幸いです。


コード

2ファイルで構成しています。github でも公開中

コード全文(クリック/タップで全行を展開します)

mz-scripter-mode.el

mz-scripter-mode-highlight.el


機能

  • キーワードハイライト
  • 表情一覧の確認・挿入
  • スイッチ、演出番号の確認・挿入
  • MZへのエクスポート
  • マイルストーン表示

台本の一例とエクスポート後の動画

実際にEmacs上で書いている台本はこんな感じです。
呪文みたいなものが多いけど、MZのエディタに直接打ち込むよりは
こっちで書いた方が速く書けます。

/* シナリオ行 アイデアやTODOなどのMZに反映しないが書き残したい事など */
;; 注釈行 こちらはMZの注釈としてゲームデータに反映する
tc
se15sw48サクシャが開発した
tbtbrr台本執筆,だいほんしっぴつbbtsts用メジャーモードの紹介です。
;; スクリプト行 立ち絵のポーズを回転しながらジャンプに変更
ssskit flip tc f 2 skit pose tc f jump 11 cc
tc
sw85sw43シナリオ台本書きがだいぶ効率化したらしいですよー!

この台本を

C-c !

でMZプロジェクトにエクスポートしてテストプレイした動画がコチラ


文法

台本の基本的な文法は以下の通りに設定しました。
EBNFっぽく表記しましたが、自分用にテキトウに定義したものなので穴があると思います

  • <台本>:<台本行> | <台本行> <台本>
  • <台本行>:(<キャラ名行> | <セリフ行> | <注釈行> | <スクリプト行> | <シナリオ行> | <ウェイト行> | <空行> | <改行>
  • <キャラ名行>:キャラクターの略称をひとつ記入。MZの会話ウィンドウキャラクター名に変換
  • <セリフ行>:セリフを記入。制御文字や表情、スイッチ処理、ルビも記入可能。MZの会話ウィンドウテキスト部分に変換
  • <注釈行>:MZの注釈に変換
  • <スクリプト行>:MZのスクリプトに変換
  • <シナリオ行>:コメントやメモを記入。MZのjsonには反映されない。
  • <ウェイト行>:MZのウェイトに変換
  • <空行>:空行。MZのjsonには反映されない
  • <改行>:改行。MZのjsonには反映されない

台本の主な行について説明します

キャラ名行

tc
キャラクター名の略称をメジャーモードのキャラ辞書に登録しておくことで、MZへのエクスポート時にキャラ辞書で対応する名前に変換します。
今回の例では、略称を「tc」を書いておくことで、ゲームの主人公名「たま」へ変換しています。

また、私の作品ではキャラクター毎にテキストの文字色を変更しています。
この例では、キャラクターのたまは青色と対応させているため、エクスポート後の動画ではテキストが青色で表示されてます。

セリフ行

se15sw48サクシャが開発した
tbtbrr台本執筆,だいほんしっぴつbbtsts用メジャーモードの紹介です。

sw85sw43シナリオ台本書きがだいぶ効率化したらしいですよー!

キャラクターのセリフ文章と一緒に、メジャーモードで定義した専用のコマンドによってセリフと共に実行する各種制御を指定します。

表:指定できる制御

コマンド 概要 サンプル
se表情番号 立ち絵の表情番号を指定する se1
sw演出番号 効果音、演出の番号を指定する sw2
tb 文字サイズの拡大 tb
ts 文字サイズの縮小 ts
rrテキスト,ルビbb テキストにルビを振る rr猫,ニャンコbb

せんでん

ばけねこたちが元気に謎を解いていく、謎解きアドベンチャーフリーゲームを開発、公開しています。

今年の11月に第2作目が完成したのでぜひプレイしてみてね!
2025/12/1現在 WindowsのDL版のみ公開中
Webブラウザ版を近日公開予定

詳細ページはコチラ!


return to top

copyright© 2025 tachiyama, BAKENEKO Detective Agency All Rights Reserved.

1)
コメントやメモ書きがそのまま残っていて見づらいと思いますがご容赦を
2)
ギュっとすると5年くらい? 仕事のメインはIDEですが、仕事のメモ書きやログの閲覧などパッと行うテキスト処理はEmacsが一番
3)
新版出ないかなぁ
4)
めちゃくちゃに書きなぐってます
5)
ツクール、ウディタ、Unity、UE、NScripter・・とか
6)
販売後すぐ購入、5年くらい使い続けてます
article/20251201-adventcalendar2025emacs.txt · 最終更新: by たちやま