変数を微調整し、数分かかるコードをコンパイルし、コードを実行し、微調整が間違った方向にあることを認識し、プロセスを繰り返し実行するルーチンとはまったく異なります。
セッションの進行中にゲームロジックとの対話を開始したいと思います。これをどのように処理しましたか?
iOS、C / C ++、およびC#/ XNAのソリューションを聞くことができます。
変数を微調整し、数分かかるコードをコンパイルし、コードを実行し、微調整が間違った方向にあることを認識し、プロセスを繰り返し実行するルーチンとはまったく異なります。
セッションの進行中にゲームロジックとの対話を開始したいと思います。これをどのように処理しましたか?
iOS、C / C ++、およびC#/ XNAのソリューションを聞くことができます。
回答:
iOS開発者向けにこれを発見しました-
AsyncSocket
アプリケーションにサーバーをセットアップし、ターミナル経由でサーバーに接続します。その後、リモートコマンドを使用して、リアルタイムで変数の操作を開始できます。なめらか。
完全に解釈された言語を統合すると、ゲーム要素を非常に、非常に簡単にその場で書き直すことができます。
Python、Luaなどはすべて、このために明示的に利用できます。Angel Engineはおそらく一例になります。
ホットローディングは、チェックアウトする別の要素です(基本的に、アセットが変更されたことを通知するイベントが発生します-構成ファイル、アート要素など-そして、それを変更する一連のコンディショナーを介して実行します既存のものを新しいものに置き換える前の最終フォーマット。
ホットローディングを使用するラピッドプロトタイピングエンジンを使用してきましたが、それは喜びでした。
XNAを使用したC ++、C#、およびC#に関する限り、Visual Studioには優れたデバッグツールがあります。コードの任意の時点でアプリケーションをリアルタイムで一時停止し、いつでも変数に割り当てられた値を確認し、関数呼び出しをステップスルーします、コールスタックの分析など。さらに、PixやCLR Profilerなどのツールは、DirectX(Pix)およびCLRベースの言語(CLR Profiler)での開発を素晴らしいものにします。
さらに、ゲームでの作業で特に役立つ部分の1つは、デバッグテキスト、グラフィックスなどを書き込むためのこの巨大な領域があることです。メモリ使用量、描画されるオブジェクト/頂点の数、フレームレートなどのリアルタイムグラフは、画面に描画する一般的なものです。
C / C ++での簡単なトリックは、調整可能変数を静的変数に入れ、ブレークポイントをトリガーし、デバッガーで静的変数を変更し、終了するまで持続することです。
HTTPロギングは大きな助けであり、起動して実行するのは難しくありません。Google App Engineを使用して、これをすばやく実行することもできます。データは常に役立ちます。
スクリプトとXMLは、オンザフライでリロードでき、リセットする必要はありません。ゲームをダウンさせることなく失敗させます。これは、アーティスト、テスター、デザイナーに多くの力を与えます。
ゲーム内デバッグメニューシンプルなゲームデバッグメニューで、子供としてスポーンし、エンジンスライダーとゲームスライダーの両方でゲームをフリーズできます。実行時にキー番号を微調整し、1つまたは2つのデバッグ機能または情報ダンプを実行できます。
Davidの答えで述べたように、ASYNCソケットも大好きです。
使いやすいゲームチームは、これらのツールに追加して非常に簡単に使用できるようにする必要があります。そうしないと、使用できなくなります。
ショーンジェームスが既に言っていることを知っています。しかし、真剣に、Visual Studio(具体的にはデバッグツール)はこれに最適です。
私は最近C ++をあまり使用していないので、これらがそこでどれだけうまく適用されるかはわかりません。ただし、C#(C#Expressを含む)には次のものがあります。
そして、これはあなたの心を吹き飛ばすかもしれません(私がそれについて知ったとき、それは私のものを吹き飛ばしました):
イミディエイトウィンドウは、実際には見つけるのが困難です([デバッグ/ Windows]メニューにあります)。
Visual C#デバッガーを使用することの唯一の大きな欠点は、const
値を変更するのが好きではないことです。そのため、通常は、ゲームプレイに関連する値static
を調整しながら作成します。
(また、2台のモニターを使用すると非常に役立ちます。)
ここで、上記の方法にはアプリケーションの一時停止が含まれることを認める必要があります。これは、いくつかの特に厄介なことに満足できないほど遅い場合があります。
これらのまれな機会に、私が行うことは(XNAで)少しコードをハックして(おそらく上記のようにEdit and Continueを使用して)つかみKeyboard.GetState().IsKeyDown()
(実際には、このために入力しやすいラッパーがあります)、調整しますキーストロークによる値。もっと複雑なものは努力する価値はありません。
実際に私が通常非常に重要だと感じるのは、リアルタイムで値を(変更するのではなく)視覚化できることです。このために、フレームの最後に描画される行とテキストをバッファリングできる素敵な小さなクラスがあります。また、迅速なプロトタイピングにも役立ちます。
(そして、もう一度、実行時にこれらの視覚化を「編集して続行」できることは素晴らしいことです。)
(ソース:andrewrussell.net)
(ここから)
私は、現時点では(おそらく後で)公開する「いい」ソースを持っていないのではないかと心配しています。ただし、基本的には(このラウンドラインライブラリの)行と(XNAの組み込みSpriteBatchの)文字列のリストにすぎません。ただ、それを作るpublic static
のどこかに、適切なですべてを描き、すべてが「ワールドスペース」で表示されるように変換(その後、次のフレームのリストをクリアします)。
変数のロードと読み取りをテキストファイルにバインドし、コンソールから特定のキーバインディングまたはコマンドを使用して起動します。