フリーゲーム・フリーソフトの開発過程を記録していく、TDtechnic公式ブログです。製品はカテゴリの「ダウンロード場」からダウンロードして頂けます。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

こんばんは。もう一ヶ月経ってしまいましたがまだスクリプト言語の仕様を考えているところです。
ただ、ずっと一貫してスランプ続きというわけではありません。先日までは確かに何の収穫もない日が続いていたのですが、数日前に大きな進展がありまして、それからは結構順調に仕様が決まっていっています。以下にこの言語の概要を述べます。

まず断っておきたいのは、前回申し上げた「タイムライン」システムはやっぱりボツになったということです(笑)自由度がないせいか、制御がしにくいせいか、とにかくサンプルコードを書くにも至りませんでした。発想としては(自分の中では)面白かったんですが、残念。

ではどのようなシステムかというと、やっぱり基本は、王道を征く、命令列の逐次実行です。そして、条件分岐を始めとする制御構文が存在するというのもセオリー通りです。ただ、ラベルは低水準すぎるので不採用としました。ちゃんとスコープのある構造化しかサポートしていません。

ですが、単なる逐次実行と制御構造であればCやC++で書けばいいだけのことです。ゲームで求められる複雑な制御構造に対応するため、この言語では擬似マルチタスクを言語レベルでサポートしています。つまり、別々のスクリプトを、見かけ上並列的に実行することができるのです。ただし、あくまで「擬似」なので、マルチスレッドやマルチコアの恩恵を得ることはできません。その代わり、命令レベルでの実行順が一意に定まるというメリットが有ります。

そして、この言語の最大の特徴は、擬似マルチタスクとメッセージシステムが統合されている点です。この言語でプロセスを中断する際は、処理を再開するためのメッセージを指定します。そして、他のプロセスからそのメッセージが送信されるまで再開することはないのです。しかし、実はこれを繰り返すことでマルチタスクを実現することができるのです。

要するに、複数のプロセスが存在する状態では、メッセージを送っているメインのプロセスの他は、基本的に全て中断状態にあるわけです。そして、メインプロセスから送られるメッセージを毎フレーム処理していくことで、マルチタスクとなるわけです。文章で説明するのは難しいんですが、このようにして逐次実行とメッセージシステムを融合させることに成功したのです。

現段階では、サンプルコードを書きながら仕様を決めていっているだけで、そのコードを実行できる処理系はまだ作っていません。もちろん実際にゲームを作って試すこともできていません。ですから実用性のほどについてはまだまだわからないんですが、机上の空論の限りではなかなか良いものになりそうです。では今日はこの辺で失礼します。
関連記事

[2016/08/29 19:58] | (コードネーム:モンジュラ)
|
コメント:
この記事へのコメント:
コメント:を投稿
URL:

パスワード:
非公開コメント: 管理者にだけ表示を許可
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。