Between thought and specification

私が主催するSteel Wheels Project関連の情報や、ソフト開発に関する記録、覚書です。

スクリプトの実行を中断する方法

BattleFieldCodeでは、プレーヤーの実装したスクリプトを繰り返し実行するため、アプリケーションの側でその状態を管理する必要があります。スクリプトが異常終了したり無限ループに陥った場合、それらの実行を破棄し、2度と等が処理を実行しないようにします。

ところが、macOS/iOSJavaScriptCoreは、スクリプトの実行を停止させる方法を提供していない様です。本エントリーではその方法について検討してみます。結果はQuiitaに挙げるつもりです。

現状、例外を使用する事を考えています。ただ、例外を使ってしまうと、ユーザスクリプトcatch文でそれを横取りされてしまいます。これを避ける方法が見つかっていません。

Battlefield code

ゲームの開発に着手しました。名前をBattleField Codeと言います。まだ設計段階ですが、githubにて仕様を公開しています。

BattleField Codeの概要/特徴

対戦型ゲームになります。2チームで対戦します。複数のマシン(戦車や飛行機)を使って戦闘を行うゲームです。 マシンの制御を、リアルタイムのキー入力で行うのではなく、JavaScriptのコードで行うのが本ゲームの特徴になります。

テキスト処理ツール

公開中のソフトのドキュメントは、github markdownで作成しています。シンプルで扱いやすい記法だと思うのですが、ドキュメント生成に再しては次の機能が欲しいと考えてしまいます。

  • 別ファイルの中身を取り込む(importする)機能
  • 指定されたの文字列を、別の文字列に置き換える機能

既存の汎用テキストマクロプロセッサには、m4があります。このツールがmarkdownファイルの生成に使えるかどうか検討中です。

プログラムからshellコマンドを呼び出す方法

AmberPlayerが、AmberScript中のシェルコマンド呼び出しに対応しました。その時の手法をQuiitにて公開しました。

qiita.com

アナザーエデン

私がモバイルアプリで一番気に入っているのは、アナザーエデンです。モバイルのゲームの中ではダントツに面白いです。

現在、ガチャの不正実装疑惑でグダグダになっている様ですが、明日(10/04)から正常状態に戻るらしい。今後もサービス継続、開発継続していただければ嬉しいです。

ドキュメント管理

githubを使用している事もあり、各アプリ、フレームワークに添付するドキュメントのフォーマットには、markdownを使用しています。

APIの説明など、定型的な章立てを使うドキュメントが多いです。この様な文書をフリーフォーマットのテキストで管理するのは管理が困難だと気づき始めました。Domain Specific Formatを定義して、入力テキストがそれに沿っているか確認しつつ、markdown文書を生成するツールが必要だと考えます。

ツールの要求仕様をまとめました。

  • 入力
    1. テキストの入力フォーマット(DSF: domain specific format)の定義
    2. 上記フォーマットをmarkdownフォーマットに変換するルールの定義
    3. 入力テキストファイル (複数指定可)
  • 出力
    1. markdownフォーマットのテキストファイル

DSFとルールの提議方法がキモですね。