PlayScript

翻訳者のメモ:1週間前、 Zyngaはプロジェクトのソースを公開しました。これにより、Flashからモバイルプラットフォームへのゲームの転送が簡単になりました。 ハブにはフラッシュやモバイルプラットフォームでゲームを書く人がたくさんいるので、このプロジェクトのページのテキストの翻訳を紹介します。 開発で使用する可能性があります。

PlayScriptとは何ですか?


PlayScriptは、Mono .NETで実行されるActionScript互換コンパイラーおよびFlash互換ランタイムであり、MonoTouchおよびMono for Androidを使用してモバイルアプリケーションを作成するように設計されたオープンソースプロジェクトです。 Webアプリケーションを作成するためのAdobe FlashBuilderとモバイル用のXamarin Studioの組み合わせにより、IDEデータのすべての利点を使用してマルチプラットフォームアプリケーションを開発でき、モバイルプラットフォームのネイティブAPIにアクセスできます。


PlayScriptコンパイラーは、コードをC ++およびJavaScript(Haxeに類似)で変換することもできます。これにより、Flashを必要としないWebアプリケーション、およびPCおよびモバイル用のネイティブアプリケーションを作成できます(制限があります)。 注:JSとC ++は現在実験的に開発中です。

PlayScriptコンパイラは、ActionScriptのサポートに加えて、C#とActionScriptの混合である新しい言語PlayScriptをサポートしています。 この新しい言語は、以下を含むC#のすべての機能をサポートしています。
•ジェネリック
•プロパティ
•イベント
•値の種類
•演算子のオーバーロード
•非同期プログラミング
•LINQ

それにもかかわらず、この言語はActionScriptと下位互換性があります。 PlayScriptを使用して、Webアプリケーションおよびモバイルアプリケーションを(JavaScriptおよびMono経由で)作成できます。 既存のFlashアプリケーションは、ファイルを.asから.playに名前を変更し、新しい言語のより厳格な構文とセマンティクスに関連する問題を修正するだけで、簡単にPlayScriptに変換できます。

さらに、PlayScriptランタイムはStage3Dを完全にサポートしているため、ほとんど変更することなくゲームを携帯電話に移植できます。 表示ライブラリの一部も実装され、Starling、Away3D、FeathersなどのサードパーティのStage3Dフレームワークをサポートします。

PlayScriptは、Monoを使用して携帯電話で、Adobe FlashまたはJavaScript / HTML5を使用してWeb上でActionScriptゲームを作成および実行するための完全なツールセットを提供します。

PlayScriptはどのように実装されていますか?


PlayScriptコンパイラは、Mono MCSコンパイラ用の追加のプリプロセッサとして実装されています。 MonoのPlayScriptバージョンをインストールすると、MCSコマンドラインに.cs、.as、および.play拡張子を持つファイルを追加するだけで、3つすべての言語(C#、ActionScript、PlayScript)をコンパイルできます。

同様に、Xamarin Studio IDEのフレームワークバージョン選択ページでは、「PlayScript Mono」を選択できます。これにより、.asおよび.playファイルを任意のC#プロジェクトに追加し、MonoTouchまたはMono for Androidを使用してコンパイルできます。 ActionScriptコードはC#コードを直接呼び出すことができ、その逆も可能です。

Stage3Dはどのように実装されていますか?


PlayScriptには、PlayScript.Dynamic_aot.dllとpscorlib.dllの2つのライブラリが含まれています。これらはOpenGLを介してランタイムとStage3Dを実装します。 プロジェクト内のこれらのライブラリへのリンクにより、Stage3Dを使用して既存のコードを変更せずに実行できます。

現状


PlayScriptおよびActionScriptコンパイラは現時点では非常に安定しています(成熟したMonoに基づいて構築されている場合)が、実装されていないActionScript機能がまだいくつかあります。 これらの顕著な問題に対処し、ActionScriptとの完全な互換性を提供するための作業が進行中です。

ActionScriptサポート

•動的クラスはコンパイルされますが、まだ実装されていません。
•[Embed]タグはまだ実装されていません。
•ガードクラスを使用したシングルトンパターンはサポートされていません(パブリックコンストラクターでプライベートパラメーターを使用)
•同じ名前の静的および非静的メンバーはサポートされていません。
•クラスおよびパッケージレベルの命令はサポートされていません。
•さまざまな軽微なエラー。

PlayScriptのサポート

•安全でないコードはサポートされていません(ActionScriptで*文字を使用する競合)。
•多次元配列に関するいくつかの問題。
•JavaScriptおよびC ++での翻訳は実験的です。

ランタイムサポート

•Stage3Dをサポートし、HLSLを通じてAGALを実装するために多くの作業が行われました。
•StarlingおよびAway3Dフレームワークは完全に機能します。
•ネットライブラリおよびその他のカーネルライブラリではほとんど作業が行われていません。

PlayScriptのインストール方法は?


現在のバイナリはこちらからダウンロードできます。

Mac OSX 0.1.2(Mono 3.0.8)

Windows:(予定)

パッケージには、Mono SDK、ツールキット、およびライブラリが含まれます。 フレームワークを使用するには、Xamarin Studioをインストールし、指示(下記を参照)に従ってPlayScriptモノフレームワークをデフォルトフレームワークにします。

ソースからのアセンブリ

PlayScriptはMonoおよびMCSの一部であるため、Xamarinの適切な指示を使用してビルドできます。

Mac:

www.mono-project.com/Compiling_Mono_on_OSX

Windows:

www.mono-project.com/Compiling_Mono_on_Windows

さらに、ベースライブラリpscorlib.dllおよびPlayScript.Dynamic.dll(Stage3Dを除く)がコンパイルされ、最終的なMonoインストーラーのGACに追加されます。 これらのライブラリの「monotouch」、「monomac」または「monoandroid」バージョンを使用するには、リポジトリの「mcs / class」フォルダーにある.csprojファイルを使用します。

Xamarin StudioでPlayScriptを使用する方法は?


•指示に従ってMonoをビルドします。 --prefix = / Users / myname / playscript-mono-instを使用して、ハードドライブの便利な場所にフレームワークをインストールします。
•Xamarin Studioを開き、「設定」を選択します。
•「.NETランタイム」タブを選択します。
•[追加]ボタンをクリックして、PlayScriptモノフレームワークがあるフォルダーを選択します。
•「デフォルトに設定」ボタンをクリックします。
•Xamarin Studioを再起動します。

これで、プロジェクトに.asおよび.playファイルを追加してコンパイルできるようになります。

機能:


性能

•「安全でない」コードの使用。
•マシンコード(cocos2d-X、Page44など)との直接対話。
•JavaScriptを生成するための最適化されたコンパイラ。
•最小のアプリケーションサイズと最小の起動オーバーヘッドでC ++に変換する機能。

高度なサポートツール

•MonoDevelop IDEの構文強調表示やIntellisenseを含むツールの完全サポート。
•すべてのプラットフォームでのソースコードのデバッグ(FlashBuilder for Flash)。
•リリースでの高速コンパイル。

完全なAPIサポート

•MonoTouchおよびMono for Androidを介したiOSおよびAndroid APIの完全サポート。
•Windows / MacOSX APIの完全サポート。
•Xamarin Studioを介したUIビルダー(iOS)およびAndroid GUIビルダーとの完全な統合。

PlayScriptとActionScriptの違い

•PlayScriptは、C#5のほとんどの機能をサポートしています。
•PlayScriptでは、指示の終了後にセミコロンが必要です。
•PlayScriptは変数に可視性ブロックを使用します。
•PlayScriptでは、switchステートメントでbreakを使用する必要があります。
•PlayScriptは、AS3構文(。<>)を使用してジェネリックをサポートします。C#機能を使用します。
•PlayScriptは、「property」キーワードを使用したプロパティをサポートしています。
•PlayScriptは、キーワード「indexer」および「operator」を使用したインデクサーと演算子のオーバーロードをサポートしています。
•PlayScriptは、AS3の名前空間を.NET名前空間に変換することで実装します。

PlayScriptとC#の違い

•PlayScriptでは、オーバーロードされたメソッドに対してoverloadキーワードを使用する必要があります。
•PlayScriptはusingステートメントをサポートしていません。
•PlayScriptブラウザーは、checkedステートメントとuncheckedステートメントをサポートしていません。
•PlayScriptは安全でないコードをサポートしていません(サポートは将来追加されます)。
•PlayScriptでは、System.Object型にキャストするまで、ベースオブジェクト(ToString()、GetType()、GetHashCode())のプロパティに直接アクセスできません。 ただし、このアプローチを使用すると、コードをC ++またはJavaScriptに変換できなくなります。

免許


このZyngaプロジェクトは、Apacheライセンスの下でリリースされています。

PlayScriptサンプルコード


// Basic types var b:byte; var sb:sbyte; var s:short; var us:ushort; var i:int; var u:uint; var l:long; var ul:ulong; var f:float; var d:double; // Conditional compilation #if DEBUG #else #endif // Fixed arrays var a:int[] = new int[100]; // Properties public property MyProperty:int { get { return _myInt; } set { _myInt = value; } } // Events public event MyEvent; // Delegates public delegate MyDelegate(i:int):void; // Operators public static operator - (i:int, j:int):int { } // Indexers public indexer this (index:int) { get { return _a[index]; } set { _a[index] = value; } } // Generics public class Foo.<T> { public var _f:T; public function foo<T>(v:T):void { } } // Async async function AccessTheWebAsync():Task.<int> { var client:HttpClient= new HttpClient(); var getStringTask:Task.<String> = client.GetStringAsync("http://msdn.microsoft.com"); var urlContents:String = await getStringTask; return urlContents.Length; } 

Source: https://habr.com/ru/post/J176323/


All Articles