Artemis Engine について

概要

マルチプラットフォーム ノベル/ADV ゲームエンジン Artemis Engine.

簡易なスクリプトを記述することで、ノベルゲーム、アドベンチャーゲームといった「紙芝居的な」アプリケーションを作成することができます。

同じスクリプトで、Windows, iOS, Android で同じように動作します。
また、モダンなWebブラウザ上で動作する WebAssembly 版もあります。
商用版では、PS4, Switch 版もあります。

また、Windowsでは W.Dee様が開発されている「吉里吉里/KAG」が多く使われていますが、Artemis Engineのスクリプト文法は「KAG」を参考にさせて頂いている部分が大きいため、双方のマクロを工夫することで、限定的ではありますが共通のスクリプトを使うことも可能です。

機能一覧

下記は主要な搭載機能です。

アプリケーション

Windows用のアプリ(exe)を作成
現在、x64 + DirectX 11 のexeと、x86 + DirectX 9 のexeがあります。
iOS用のアプリを作成
iPhone専用、iPad専用、iPhone/iPad両対応の各タイプが作成できます。
Android用のアプリ(apk)を作成
Google Playのサーバにゲームデータを置いてそこからダウンロードさせる Play Asset Delivery にも対応しています。
ブラウザ用のWebアプリ(html+js+wasm)を作成
PCやスマホのモダンブラウザで WebAssembly + WebGL を使用して動作するWebアプリが作成できます。
相互互換
一つのスクリプトが、対応している全てのプラットフォームで同じように動作するので、Windows上でほとんどの制作ができます。
それぞれのプラットフォームでなければ調整できない項目もあるので、100%ではありませんが、手数のかかるシナリオスクリプトや演出入れ込みなどの作業がWindows上で完結するため、非常に効率的です。

テキスト

自由な文字描画
任意の大きさ、色のフォントを、任意の範囲に横書きか縦書きで、簡易的なアニメーションを伴って表示できます。
ルビや禁則処理にも対応しています。
TrueTypeフォント、OpenTypeフォントを組み込み
各環境にインストールされていないフォントを使用できます。
任意のフォントを画像化したデータの使用
フォントのライセンス上、ゲーム中に使用している文字のみを画像化している場合に限り、組み込むことが許されているものを利用したり、文字に任意の画像(ハートマークや汗マークなど)を割り当てるときなどに使用します。
クリック待ちグリフ
クリック待ちのときにアイコンを表示できます。

グラフィック

レイヤー
実機性能の許す限りのレイヤー枚数。位置,拡大縮小,回転,レイヤーモードの各プロパティをもち、プロパティ値を連続的に変化させる簡易的なアニメーションが可能です。
レイヤーセット
複数のレイヤーをまとめて扱えます。
グループ化されたレイヤー群をまとめて移動したり、拡大縮小したりできます。
スクリーンショット
ゲーム画面を保存して、セーブロードのサムネイルなどに使用できます。

サウンド

BGM
フェードイン、フェードアウト、クロスフェード、ボリューム変更ができます。
効果音/ボイス
実機性能の許す限りの多重再生が可能で、フェードイン、フェードアウト、チャンネル別のボリューム変更ができます。
A-Bリピート
イントロとループを別のファイルにわけて、最初にイントロを再生したあとは、ループ部分を繰り返し再生できます。

ビデオ

フルスクリーンビデオ
実機が対応するmp4などのビデオを全画面で再生できます。
ビデオレイヤー
Ogg Theora形式のビデオを、レイヤーとして使用できます。
アルファチャンネルも使用できるため、様々な演出に使えます。

ユーザーインターフェース

レイアウトフリー
タイトル画面や各種メニューなどを全てスクリプトで制御でき、自由なレイアウトが可能です。
テキストリンクや画像ボタンなどを使って選択肢や独自UIを構築できます。
タッチインターフェース
フリックやマルチタッチによるオートモード、既読スキップ、強制スキップ、メッセージウィンドウ一時消去、バックログなどをデフォルトで搭載しています。
無効にしたり、割り当てを変えたりもできます。
複雑な操作
レイヤーの、ロールオーバー、クリック、ロールアウト、ドラッグ開始、ドラッグ、ドラッグ終了の各操作に対して自由にスクリプトを割り当てて、独自のUIを構築できます。
これらを駆使して、ボリューム変更やウィンドウ濃度調整のスライダーなども実装できます。

スクリプト

セーブ/ロード
各セーブごとに独立した変数、各セーブにひもづかないグローバル変数、セーブされない一時変数の各種変数が使用できます。
オートセーブが可能で、スマートフォンなどでホーム画面に戻る際に自動的にセーブしたりできます。
演算/条件分岐/ループ
フラグ管理や四則演算、単純な文字列編集などができます。
サブルーチン/マクロ
頻繁に使う処理をひとまとまりにして新しい命令を定義できます。
この機能を駆使することで、文法の似ている吉里吉里+KAGのスクリプトの移植を省力化することもできます。
スクリプト作成支援
スクリプト上の改行、空行、行頭にマクロを割り当てることができ、改行タグや改ページタグなどを毎回入れていく作業などが不要になります。
Lua
Artemis Engineのスクリプトは柔軟ですが、シナリオを記述することを主眼において設計されているため、複雑な処理を多く記述するには向いていません。
そのようなときのために、本格的な組み込み向けプログラミング言語Luaを搭載しています。
Luaを使用すると、オブジェクト指向のコードを書いたり、再利用性のあるコードを書いたりできます。
Artemis Engineのスクリプトと比較して、圧倒的に高速に動作します。

その他

ユーザー文字入力
プレイヤーに任意の文字を入力させることができます。
主人公の名前入力などで使用できます。
通信
簡易的なHTTP通信が可能です。GETやPOSTでデータを送り、結果を変数に受け取って処理できます。
(SSLには対応していません)
アプリ内課金
iOS版では In App Purchase に、Android版では Google Play の In App Billing に対応しています。
ネイティブ連携
簡易的ではありますが、iOSならObjective-C、AndroidならJavaの、一緒にリンクされたネイティブメソッドを呼ぶことができます。
また、iOSならビュー、AndroidならActivityとして独立していますので、Artemis自体をサブモジュールとして組み込むこともできます。
(Windowsの場合は外部DLL内のメソッドを呼ぶことができます)
NVIDIA Image Scaling
Windows版のみ、超解像技術 NVIDIA Image Scaling に対応しています。内蔵しており、NVIDIA以外のGPUでも動作します。
E-mote
WebAssembly版以外の商用版では、E-mote対応版もあります。実装及びライセンスの都合上、個別のご相談が必要となります。

スクリプト例

[lyc id=0 file=logo]	// メーカーロゴを読み込む
[trans type=1 time=1000]	// クロスフェードで表示
[wait input=1 time=1000]	// 1秒待つ (クリックでスキップ可)

	// オープニングムービーの全画面再生

[wait input=1 time=1000]	// 1秒待つ (クリックでスキップ可)

[lyc id=0 file=title]	// タイトルを読み込み
[trans type=1 time=1000]	// クロスフェードで表示

[splay file=title time=1000]	// BGMを1秒かけてフェードイン

[call file=title_button label=setup]	// ボタン表示のサブルーチンを呼ぶ
[stop]	// ボタンが押されるのを待つ

*main
// ここから本編

[sxfade file=bgm0 time=1000]	// 1秒かけてクロスフェードしながらBGMを変更

[アルテミス]	// マクロでキャラの立ち絵を表示
「Artemis Engineは、こんなふうに簡単なスクリプトを書いて、
ノベルゲームやADVゲームを作成できるゲームエンジンよ」

[var name=t.os system=os]	// 実行中のOSを取得
[シンシア]	// マクロでキャラの立ち絵を表示
「いま実行中のOSは [print data=$t.os] だね!」

[アルテミス]
「あなたのお名前を教えてくださる?」

[dialog title="名前入力" textfield=name]	// プレイヤーに文字を入力させる
[アルテミス]
「[print data=$name]さんね」	// 変数内の文字列をシナリオとして表示

[アルテミス]
「ところでシンシア、カピバラさん、って100回言ってみなさい」
[シンシア]
「えっ、急になんですかお姉さま…」

[var name=i data=0]	// 変数 i を 0 に初期化
[loop estimate="$i < 100"]	// i が 100 以内なら実行
	[シンシア]
	「カピバラさん」
	[var name=i data="$i + 1"]	// i に 1 を足す
[/loop]

採用実績

こちらに掲載しておりますiPhone/iPadアプリは、全てArtemis Engine採用タイトルとなります。

こちらに掲載しておりますAndroidアプリは、全てArtemis Engine採用タイトルとなります。

システムのご提供について

採用して頂けるサークル様を募集しています。

基本的に「趣味」で開発しているものですので、報酬などは特に頂きません。(企業さんは別途ご相談ください)
基本的に「趣味」で開発しているものですので、営利を主目的としない個人様、任意団体様(同人サークル様等)の場合は、報酬などは特に頂きません。
営利を主目的とした企業様、個人事業主様は別途ご相談ください。
2011年1月9日 修正

現在、不特定多数に対する一般公開は行っておりません。メールにてご連絡頂いた方に、順次ご案内を差し上げております。

Artemis Engineや、ノベル/ADVゲーム制作にご興味がおありの方は、お気軽にご連絡ください。

mikage@ies-net.com

補足

iOS用のアプリについては、スクリプト開発及び一次検証はWindowsのみで可能ですが、最終的に App Store にてリリースする際には、下記のものが必要です。

  • 最新か、最新の一つ前のバージョンの macOS
  • 最新の Xcode 及び iOS SDK (Xcodeでの開発経験は不要です)
  • 有料の Apple Developer Program 契約

コメントは受け付けていません。