おんがえしの blog

作ったプログラムと調べた技術情報

マルチメディアアプリケーションをスクリプトだけで簡単に作れるSivScript

この記事はOpenSiv3D Advent Calendar 5日目の記事です。

概要

SivScrtiptはマルチメディアアプリケーションをテキストエディタのみで簡単に開発できるソフトウェアです。 OpenSiv3D 0.3から導入されたAngelScriptによるスクリプト機能を利用して作られています。

  • exeをパスの通った場所にコピーするだけですぐに使える
  • ビルド無しで高速にリロード
  • VisualStudioやOpenSiv3Dのインストール不要
  • AngelScriptはC++と文法が似ているため簡単にC++に移植できる

インストール

  1. https://github.com/ongaeshi/SivScript/releases から最新のzipをダウンロード
  2. 展開してできたsiv.exeをパスの通った場所にコピー

使い方

以下のテキストをコピーして適当な場所にShape.asという名前のテキストファイルを作成します。

void Main()
{
   Window::Resize(640, 640);
   
   while (System::Update()) {
       for (int32 i = 0; i < 9; i++) {
           const Vec2 center(120 + i % 3 * 200, 120 + i / 3 * 200);
           Shape2D::Ngon(5, 80, center).draw();
       }
   }
}

コマンドラインから以下のコマンドを実行します。

$ siv Shape.as

実行画面が表示されます。コマンドラインから簡単に起動、ファイルを保存するたびに実行結果が変わっていくのが分かります。

f:id:tuto0621:20181204231243p:plain

その場で編集

アプリケーションを開いたままスクリプトファイルをエディタなどで編集します。すると自動でアプリケーションがリロードされ変更された結果をその場で確認することができます。

実際にやってみましょう。


SivScriptでリアルタイムプレビューしながらプログラミング

C++で開発するのと比べ、とても速いターンアラウンドで結果を確認することができます。

まとめ

最終的な実行結果とコードです。

f:id:tuto0621:20181204231340p:plain

void Main()
{
   Window::Resize(640, 640);
   double t = 0.0;

   while (System::Update()) {
       t += System::DeltaTime() * 0.2;

       for (int32 i = 0; i < 9; i++) {
           const Vec2 center(120 + i % 3 * 200, 120 + i / 3 * 200);
           Shape2D::Ngon(i + 3, 80, center, t)
               .draw(HSV(i * 80))
               .drawFrame(10, HSV(i * 80, 1.0, 0.7));
       }
   }
}

気軽にマルチメディアアプリケーションを作りたい、VisualStudioをインストールせずにOpenSiv3Dを触ってみたい、C++で本番アプリを書く前に軽く実験したい、などの用途に使いください。