Unity3Dへのとげを通して

ご挨拶!







ゲーム開発者と知り合いを共有したいと思います。 XNAでどのように旅を始めたのかを話します。 また、私がプログラマーになり、コンピューターをさらに制御したいという願望や、独自のC ++エンジンの作成方法についても説明したいと思います。 Unity3Dなどの既製のソリューションの知識について説明し、これから何ができるかを例で示します。



まえがき



私の最初の仕事(プログラマー)で、すぐ上司がゲームを書いたことがあるかと尋ねました。 最初と最後の(この瞬間まで)イグロデルと知り合ったのは、BasicのZX Spectrumの20年前でした。 ドキュメント、インターネット、Habrはありません。 プログラミングの基礎知識がすべてです。 一般的に、私はゲームを作りませんでした。 上司は別の明確な質問をしました。C#でゲームを書くことは可能ですか? 私は笑い始めましたが、彼はXNAに言及したフォーラムへのリンクを投げました。



XNA / C#



XNAは私にとって良いスタートでした。 私はすでにC#でかなり良いプログラミングを感じました。 また、このテクノロジーに関するコミュニティもすぐに見つかりました。 判明したように、XNAは3Dグラフィックスを使用した作業を研究するためにMSによって開発されました。 本質的に、XNAはDirectXのラッパーです。



XNAの本には、ゲームを構築するための基本原則が記載されています。 ゲームのすべてのフレームで発生し、オブジェクトのステータスを更新し、完成したフレーム、カメラ、投影、頂点のビデオマップへの転送、空間内の3Dオブジェクトの表示などを行うゲームのライフサイクルなどの概念。 Unity3Dなどの既製のエンジンを使用する場合でも、ゲームの構成方法を低レベルで理解する必要があります。







それで彼は勉強し始めました。 その過程で、特に行列による三角法と少しの数学を思い出さなければなりませんでした。 学校のプログラムはそこで終わりませんでした。 大まかに言えば、ビデオカードで実行されるコードなどのシェーダーがあります。 それらでは、原則として、ピクセルの位置と色で計算が実行されます。 反射やグレアなどを計算するのに便利な場所。 これを行うために、私はより多くの文学と付随的に物理学を研究しなければなりませんでした。



私自身は、 Sean Jamesの本「XNA Game Studio 4.0を使用した3Dグラフィックス」から始めました



材料は整然と配置されています。 必要な数学的知識とシェーダーの両方を説明しています。

そして今、空間内のキューブが最終的に画面に表示されると、次に何をすべきかを考え始めます。 その過程で、タワーディフェンスのジャンルと3Dでゲームを作ることを勉強することにしました。 このジャンルは実装が簡単で、3D-私はアーティストではなく、さまざまな角度からすべてのオブジェクトを描くことが問題だからです。 実際、ここに新しいタスクがあります-3Dエディターを調べることです。 3DMaxまたはBlenderもうまく機能します。 XNAはfbx形式をかじり、これらのエディターはモデルを適切にエクスポートしました。



そして、すべてのアプリケーションとすべてのテクノロジーが知られています。 ゲームを作成するために必要なものはすべて使用可能です。 本とグーグルで武装して...仕事の後に彼の自由な時間をすべて失いました。



取り組みの最初の結果:







ビデオには、インターネットから借用した「男」のモデルがあります。 しかし、後でわかるように、アニメーションを使用して独自のモデルを作成することは、プログラマとしての私にとっても難しくはなく、面白​​くありません。



彼がどのように、何をしたかを詳細に記述する必要はありません。 インターネット上の多くのもの。 はい、ビデオで私のステップを見ることができます。 1点注意したい。 独自のエンジン、シェーダーを作成するときは、おそらく少なからず、それに時間をかける必要があります。 それで、例えば、私は影を作る方法を見つけました。 カスケードシャドウのテクニックを研究しました(このような用語を恐れないでください。聞こえるほど難しくはありません)。







影がそのように落ちるまでにどれだけの時間を費やしたか、正確には覚えていません。 おそらく1か月か2か月。 Unity3Dでは、シーン内のオブジェクトにいくつかのフラグを設定するだけです。



だから、私は少しずつ資料を勉強し、ゲームを書きました。 毎日、絶えず。 このビジネスの主なものは、1つのゲーム、エンジン、コンテンツ、そしてすべてを作成するとき-常にそれを行うことに慣れることです。 そのような状況では、ゲームではなく、何でもしたいことがあります。 「最初のゲームの書き方」というトピックに関するさまざまな記事を読んでください。 これにより、リラックスして刺激を受けることができます。 しかし、そのような記事を悪用すると、夢にとどまり、開発を放棄する機会があります。



最初のゲームを作成して、デバイスで既に起動したいところに到達しました。 ゲームをXBOXに入れることを期待して、XNAでそれを行いました。 その瞬間、ロシアからこの接頭辞の下にゲームをレイアウトすることは不可能であることが判明しました。 しかし、私はそれをWindowsPhoneで市場に出すことができます。 ゲームを完成させて市場に出しました。 私は10ヶ月の結果としてそれをしました。 XNAについて知った瞬間から市場にリリースされるまで。



注目に値する点が1つあります。 ゲームを市場に出すこともまた別の話です。 マーケティング、プロモーション。 これは記事全体であり、一言で言えばここではできません。



すべてが素晴らしいようです。私のゲームのコンテンツの品質は電話で確認できます(まあ、私はアーティストではありません)。 ただし、XNA電話には制限があり、画面解像度で独自のシェーダーを使用することはできません。 そして、制限がないようにするために何が必要ですか? このOSにはネイティブ言語を使用する必要があります。 これらの目的のために、C ++言語は完璧であり、グラフィックスにはDirectXです。



DX11 / C ++







そこで、プラットフォームに制限はなく、完全な自由を感じることにしました。 必要なだけで作成できるシェーダー、ロジック。 とても魅惑的でしたが、他の言語の学習にどれだけの時間を費やすかを実感しました。 それは少し私を怖がらせ、その上、私はすでにUnity3Dに会っていて、それが彼と一緒にいたのがどれほど簡単かを感謝することができました。 XNAで私の最初のエンジンを書いた後、私はすでにそれを感謝することができました。 そしてここで、さらに低いレベル、そして言語、そしてグラフィックスで動作します。



少し迷った後、私はC ++で、それからUnityでそれを始めましたが、それから私はまだ苦しみ、完全な自由を望んでいることに気付きました。 決めた。



原則として、私はすでに基礎と数学と物理学の必要な知識に精通しており、シェーダーを書く経験もありました。 私が学ぶ必要があったのは、C ++言語自体(特にリンクを操作する)とDirectXでした。 幸いなことに、これに関する優れた書籍があります。 「Direct3D 11.0を使用した3Dゲームプログラミングの概要」Frank Luna著



本とグーグルと忍耐力で武装して、ゲームを作り始めました。 このゲームを作ることは、最初のものと感情的に似ていることが判明しました。 彼は大きな熱意で始まりましたが、キャンペーンと休息を放棄するという考えがありました。 私にとって最も難しい部分は、モデルを作ることでした。 私は単にそれらを考えることができませんでした。 ただし、モデル自体を生きたキャラクターで作成し、骨格アニメーションをそれに追加することはそれほど難しくありません。







エンジンとゲームのロジック全体が追加されたときの心理的に難しい瞬間は、モデルを作成するのが甘いように思えますが、それだけです。 しかし、これは最も面倒でした。 私はこのモデルに1日しか費やしたくありませんでした。 結局のところ、ゲーム内のレベル数(一意であることが望ましい)、オブジェクトの数、「敵」などを数えると、6か月間モデリングを開始できます。 これは私には合わず、できるだけ早くプロジェクトを終了したかったのです。 これは私のゲームに反映されています。 アーティストはひどく欠けていました。



初めてのように、「もう二度とゲームを作らない」という思いで、このプロジェクトは完成しました。 私はすぐにモデルが私の手でさえ良くなるかもしれないと言いますが、私はそれをやったことを非常にうれしく思います。







その結果、私は再び10か月でゲームを作りました。 これは、知識がすでに存在することを考慮しています。 私のエンジンには多くの時間が費やされました。 この記事の一部は、ゲームの開発に費やされた労力をまったく反映していません。 たとえば、Unityでは、1日でモデルをシーンに「投げ」、スクリプトをそれらに添付し、シェーダーを使用することもできます-レベルは準備完了です。 このペースで、私はこれらのモデルで約3か月間(非常に控えめな基準で)同じゲームを作ることができました。 この場合、ゲームはWPの下だけでなく、少なくともAndroidの下で実行されます。



Unity3D / C#



このように(仕事の後、自宅でゲームを作り、残りを2年間犠牲にするなど)行った後、既成のエンジン(ある種の単純なエンジン)でゲームを作りたいと思いました。 これを行うために、私は「3行連続」というジャンルのゲームを作成することにしました。 ジャンルはどこにも単純ではないようで、特に地下鉄や片手で携帯電話で遊ぶのが便利です。



エンジン自体は直感的だと思います。 はい、コミュニティは大規模です。初心者でも、ほぼすべてをGoogleで検索できます。 デザイナーのようにゲームを作成する場合-本当に簡単で、さらにすてきです。「ジャンルが簡単に思える」で、私は推測しませんでした。 しかし、この複雑さはゲームのロジックコードに関係しています。







だから私はゲーム開発で私に興味のある経験を得ました。 エンジンを書くことは(既存のエンジンの背景に対して)意味がなく、そのような目的と欲求はありません。 ゲームの仕組みが理解できました。 ゲームを書くのは趣味のままです。 そして、そのようなエンジンがあれば、もう書く必要はほとんどありません。 基本スクリプト-それだけです。 影、反射、レンダリング後、法線マッピングなどは単なる「ティック」になります。 安全にコンテンツに集中できます。



エピローグ





私自身、いくつかの結論を出しました。



これがどのように機能し、どのように機能するかを完全に理解することに関心がある場合は、下位レベルでOSと通信したいという要望があります。その後、XNAまたは他のプラットフォームの同様のツールを使用できます。



お金を稼ぐことを目的とする場合、チーム(少なくともアーティスト)がいる場合、またはゲームの詳細を記述せずにゲームを「すばやく作成する」場合は、既製のエンジンから始めることをお勧めします。



All Articles