Papyrus による世界の創造 - Skyrim MOD 制作

Papyrus スクリプトと多言語の比較

最終更新: 2015-04-02 (木) 21:36:12 (1630d)

概要

Papyrus スクリプトには他の言語と大きく確実に違う点が1点あります。

それはゲーム上で動作するということです。

Java も似たような特性を持っています。例えばアプレットやサーブレットなど、特定の環境上で動くということです。

しかし、Ruby も Java もコンソール上で単体で動作させることができます。Papyrus スクリプトにこれはできません。

これはとても大きな違いです。単体で動作させることができないということは確認のために毎回ゲームを起動する必要があるということです。

ゲームに深く関わる部分は仕方ありませんが、計算を主体とした中核ロジックの確認をゲーム内で行うのは大変です。

計算を主体とした中核ロジックに際してのみ他言語で記述し、確認してから Papyrus スクリプトに移行するという方法を僕は推奨したいと思います。

そのためには事前に Papyrus スクリプトで実現できる形にしておく必要があります。

Papyrus スクリプトは一般に普及している言語よりも非力です。

比較

実際、同じことを実現するプログラムを書く際に注意が必要だった点に着目して列挙します。

性質PapyrusRubyJava共通部分/推奨対応方法
言語特性コンパイラインタプリタコンパイラなし
型特性静的型付け動的型付け静的型付けなし、動的型付け言語ではコメント等での明確化を推奨*1
ポリモフィズムあり*2ありありあり*3
繰り返し処理whilewhile, each, イテレータ等for, foreach, イテレータ等while 文
繰り返し処理制御returnreturn, redo, breakreturn, continue, breakreturn
条件分岐if-elseif にて実現case-when, if-elsifswitch-case, if-else ifif-elseif
関数ありありありあり
デフォルト引数ありありありあり
静的配列*4あり*5なしありあり*6
動的配列なしありありなし
クラスありありありあり
コンストラクタなしありありなし
三項演算子なしありありなし
複数行記述要文末記号ありあり単一行記述統一を推奨
キャスト硬い*7緩い*8緩い硬く行うことを推奨

試行

  • ruby2papyrus トランスレータプロジェクト進行中