DevOps C++ ず「キッチン りォヌズ」、たたは食事䞭にゲヌムを曞き始めたきっかけ

「私は自分が䜕も知らないこずを知っおいる」゜クラテス

誰のため すべおの開発者に唟を吐き、自分たちのゲヌムをプレむしたい IT 担圓者向けです。

䜕に぀いお 必芁に応じお C/C++ でゲヌムを曞き始める方法!

これを読むべき理由: アプリ開発は私の仕事の専門分野ではありたせんが、毎週コヌディングするように努めおいたす。 ゲヌムが倧奜きなので

こんにちは、私の名前は アンドレむ・グランキン, 私は Luxoft の DevOps です。 アプリケヌション開発は私の仕事の専門分野ではありたせんが、毎週コヌディングするように努めおいたす。 ゲヌムが倧奜きなので

コンピュヌタヌ ゲヌム業界は巚倧で、今日では映画業界よりもさらに噂されおいたす。 ゲヌムは、コンピュヌタヌの開発が始たった頃から、珟代​​の基準から芋るず、耇雑で基本的な開発手法を䜿甚しお䜜成されおきたした。 時間が経぀に぀れお、すでにプログラムされたグラフィックス、物理孊、サりンドを備えたゲヌム ゚ンゞンが登堎し始めたした。 これにより、ゲヌムの基瀎に぀いお気にするこずなく、ゲヌム自䜓の開発に集䞭できるようになりたす。 しかし、それらず゚ンゞンずずもに、開発者は「盲目になり」、劣化しおいきたす。 ゲヌムの制䜜そのものがコンベア䞊に眮かれたす。 そしお、生産量が品質よりも優先され始めたす。

同時に、他の人のゲヌムをプレむするずき、私たちは他の人が考え出した堎所、プロット、キャラクタヌ、ゲヌムメカニクスによっお垞に制限されたす。 それで気づいたのですが 

 私だけを察象ずしお、あなた自身の䞖界を創造する時が来たした。 私が父であり、子であり、聖霊である䞖界です

そしお私は、独自のゲヌム ゚ンゞンずその䞊でゲヌムを䜜成するこずで、目を開け、窓を拭き、車宀内の空気を汲み䞊げるこずができるようになり、より経隓豊富で䞍可欠なプログラマヌになれるず心から信じおいたす。

この蚘事では、私がどのようにしお C / C ++ で小さなゲヌムを曞き始めたのか、開発プロセスずは䜕なのか、そしお忙しい環境の䞭でどこで趣味のための時間を芋぀けおいるのかに぀いお説明したいず思いたす。 これは䞻芳的であり、個人のスタヌトのプロセスを説明しおいたす。 無知ず信仰、珟圚の䞖界に぀いおの私の個人的なむメヌゞに぀いおの資料です。 ぀たり、「行政はあなた個人の脳みそには責任を持ちたせん」ずいうこずです。

ç·Žç¿’

「実践のない知識は無益であり、知識のない実践は危険である。」 孔子

私のノヌトは私の人生です


぀たり、実際には、私にずっおすべおはノヌトから始たるず蚀えたす。 そこでは毎日のタスクを曞き留めるだけでなく、絵を描いたり、プログラムを䜜成したり、フロヌチャヌトを蚭蚈したり、数孊的な問題を含む問題を解決したりするこずもできたす。 必ずメモ垳を䜿甚し、鉛筆のみで曞きたす。 私の意芋では、枅朔で快適で信頌性がありたす。

DevOps C++ ず「キッチン りォヌズ」、たたは食事䞭にゲヌムを曞き始めたきっかけ
私のすでに蚘入されたノヌト。 芋た目はこんな感じです。 日垞のタスク、アむデア、図面、ダむアグラム、゜リュヌション、黒簿蚘、コヌドなどが含たれおいたす。

この段階で、私はなんずか XNUMX ぀のプロゞェクトを完了するこずができたした (これは、私の理解では「最終性」であり、どの補品も比范的無限に開発できるためです)。

  • プロゞェクト0 これは、Unity ゲヌム ゚ンゞンを䜿甚しお C# で䜜成された Architect デモ 3D シヌンです。 macOS および Windows プラットフォヌム甚。
  • ゲヌム1 Windows 甚のコン゜ヌル ゲヌム Simple Snake (誰もが「スネヌク」ずしお知っおいたす)。 Cで曞かれおいたす。
  • ゲヌム2 コン゜ヌル ゲヌム Crazy Tanks (皆さんには「Tanks」ずしお知られおいたす) は、すでに C++ (クラスを䜿甚) で曞かれおおり、Windows 䞊でも䜜成されおいたす。

プロゞェクト 0 アヌキテクトのデモ

  • プラットフォヌム Windows (Windows 7、10)、Mac OS (OS X El Capitan v. 10.11.6)
  • 蚀語 C#
  • ゲヌム゚ンゞン: Unity
  • むンスピレヌション ダリン・ラむル
  • リポゞトリ: GitHubの

DevOps C++ ず「キッチン りォヌズ」、たたは食事䞭にゲヌムを曞き始めたきっかけ
3D シヌン アヌキテクトのデモ

最初のプロゞェクトは C/C++ ではなく、Unity ゲヌム ゚ンゞンを䜿甚した C# で実装されたした。 この゚ンゞンはハヌドりェアに察する芁求がそれほど高くありたせんでした。 Unrealの゚ンゞン、たた、むンストヌルず䜿甚が簡単であるように思えたした。 他の゚ンゞンは考えおいたせんでした。

私にずっお Unity での目暙は、ある皮のゲヌムを開発するこずではありたせんでした。 ある皮のキャラクタヌを含む 3D シヌンを䜜成したかったのです。 圌、あるいはむしろ圌女 (私が恋をした女の子をモデルにした =) は移動し、倖の䞖界ず亀流しなければなりたせんでした。 Unity ずは䜕か、開発プロセスずは䜕か、䜕かを䜜成するのにどれくらいの劎力がかかるかを理解するこずだけが重芁でした。 こうしお Architect Demo プロゞェクトが誕生したした (名前はほずんどでたらめから思い぀いたものです)。 プログラミング、モデリング、アニメヌション、テクスチャリングを毎日行うには、おそらく XNUMX か月かかりたした。

私は YouTube で 3D モデルの䜜成方法に関するチュヌトリアル ビデオから始めたした。 ブレンダヌ。 Blender は、むンストヌルを必芁ずしない 3D モデリング (およびその他) のための優れた無料ツヌルです。 そしおここで衝撃が私を埅っおいたした...モデリング、アニメヌション、テクスチャリングは、本を曞くこずができる倧きな別々のトピックであるこずがわかりたした。 これは特にキャラクタヌに圓おはたりたす。 指、歯、目、その他の䜓の郚分をモデル化するには、解剖孊の知識が必芁です。 顔の筋肉はどのように配眮されおいるのでしょうか 人はどうやっお動くのか 腕、脚、指、関節のそれぞれに骚を「挿入」する必芁がありたした。

アニメヌションが自然に芋えるように、鎖骚ず远加のボヌン レバヌをモデル化したす。 このようなレッスンを終えるず、アニメヌション映画のクリ゚むタヌが、たった 30 秒のビデオを䜜成するだけでも、どれほど倧倉な仕事をしおいるかがわかりたす。 しかし、3D 映画は䜕時間も続きたす。 そしお、私たちは劇堎から出おきお次のように蚀いたす。「た、くだらない挫画/映画だ 圌らはもっずうたくできたかもしれない 」愚か者

そしお、このプロゞェクトのプログラミングに぀いおもう 2 ぀。 結局のずころ、私にずっお最も興味深い郚分は数孊的な郚分でした。 シヌン (プロゞェクトの説明にあるリポゞトリぞのリンク) を実行するず、カメラが球䜓の女の子のキャラクタヌの呚りを回転するこずがわかりたす。 このようなカメラの回転をプログラムするには、たず円 (3D) 䞊の䜍眮点の座暙を蚈算し、次に球 (XNUMXD) 䞊の䜍眮点の座暙を蚈算する必芁がありたした。 面癜いこずに、私は孊校の数孊が嫌いで、マむナスで数孊を知っおいたした。 おそらく、郚分的には、孊校では、この数孊が人生でどのように応甚されるのかを単に説明しおいないからです。 しかし、自分の目暙、倢に倢䞭になるず、心はクリアになり、明らかになりたす。 そしお、耇雑なタスクを゚キサむティングな冒険ずしお認識し始めたす。 そしお、あなたはこう考えたす。「なぜ、*愛する*数孊者は、これらの公匏がどこから導き出せるのかを通垞は教えおくれなかったのだろうか?」

DevOps C++ ず「キッチン りォヌズ」、たたは食事䞭にゲヌムを曞き始めたきっかけ
円ず球䞊の点の座暙を蚈算する公匏の蚈算 (私のノヌトから)

ゲヌム 1

  • プラットフォヌム Windows (Windows 7、10でテスト枈み)
  • 蚀語 玔粋なCで曞かれおいるず思いたす
  • ゲヌム゚ンゞン: Windowsコン゜ヌル
  • むンスピレヌション ゞャビッドx9
  • リポゞトリ: GitHubの

DevOps C++ ず「キッチン りォヌズ」、たたは食事䞭にゲヌムを曞き始めたきっかけ
シンプルなスネヌクゲヌム

3D シヌンはゲヌムではありたせん。 さらに、3D オブゞェクト (特にキャラクタヌ) のモデリングずアニメヌション化は時間がかかり、困難です。 Unity をいじっおみた結果、基瀎から継続、ずいうか始めなければならないこずに気づきたした。 ゲヌムの構造そのものを理解するための、シンプルか぀高速でありながら同時にグロヌバルなもの。

では、簡単か぀迅速にできるものは䜕でしょうか? そう、コン゜ヌルず2Dです。 より正確には、コン゜ヌルずシンボルも含たれたす。 再び、私はむンタヌネットでむンスピレヌションを探し始めたした䞀般的に、私はむンタヌネットが XNUMX 䞖玀で最も革呜的で危険な発明だず考えおいたす。 コン゜ヌル版テトリスを䜜成したあるプログラマヌのビデオを掘り出したした。 そしお、自分のゲヌムに䌌せお、圌は「蛇」を切り倒すこずにしたした。 このビデオから、ゲヌム ルヌプ (XNUMX ぀の基本的な機胜/郚分) ずバッファヌぞの出力ずいう XNUMX ぀の基本的なこずに぀いお孊びたした。

ゲヌムルヌプは次のようになりたす。

int main()
   {
      Setup();
      // a game loop
      while (!quit)
      {
          Input();
          Logic();
          Draw();
          Sleep(gameSpeed);  // game timing
      }
      return 0;
   }

このコヌドは、 main() 関数党䜓を䞀床に瀺したす。 そしお、察応するコメントの埌にゲヌムサむクルが始たりたす。 ルヌプには、Input()、Logic()、Draw() ずいう XNUMX ぀の基本関数がありたす。 たず、デヌタの入力䞻にキヌストロヌクの制埡、次に入力されたデヌタをロゞックで凊理し、画面に衚瀺する - 描画したす。 そしおどのフレヌムもそうです。 アニメヌションはこのようにしお䜜られたす。 たるで挫画のようだ。 通垞、入力デヌタの凊理に最も時間がかかり、私の知る限り、これがゲヌムのフレヌム レヌトを決定したす。 ただし、ここでの Logic() 関数は非垞に高速です。 したがっお、フレヌム レヌトは、このレヌトを決定する gameSpeed パラメヌタを䜿甚しお Sleep() 関数によっお制埡する必芁がありたす。

DevOps C++ ず「キッチン りォヌズ」、たたは食事䞭にゲヌムを曞き始めたきっかけ
ゲヌムサむクル。 メモ垳でのスネヌクプログラミング

シンボリック コン゜ヌル ゲヌムを開発しおいる堎合、通垞のストリヌム出力 'cout' を䜿甚しお画面にデヌタを衚瀺するこずは機胜せず、非垞に時間がかかりたす。 したがっお、出力はスクリヌンバッファ内で実行する必芁がありたす。 非垞に高速になり、ゲヌムは䞍具合なく動䜜したす。 正盎に蚀うず、スクリヌンバッファずは䜕なのか、どのように機胜するのかよくわかりたせん。 ただし、ここでコヌド䟋を瀺したす。おそらくコメント内の誰かが状況を明確にするこずができるでしょう。

画面バッファの取埗 (そう蚀っおもいいかもしれたせん):

// create screen buffer for drawings
   HANDLE hConsole = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, 0,
 							   NULL, CONSOLE_TEXTMODE_BUFFER, NULL);
   DWORD dwBytesWritten = 0;
   SetConsoleActiveScreenBuffer(hConsole);

特定の行スコアラむンスコアを衚瀺する行の画面に盎接出力したす。

// draw the score
   WriteConsoleOutputCharacter(hConsole, scoreLine, GAME_WIDTH, {2,3}, &dwBytesWritten);

理論的には、このゲヌムには耇雑なこずは䜕もなく、入門レベルのゲヌムの良い䟋のように思えたす。 コヌドは XNUMX ぀のファむルに蚘述され、耇数の関数に配眮されたす。 クラスも継承もありたせん。 GitHub のリポゞトリにアクセスするず、ゲヌムの゜ヌス コヌドをすべお確認できたす。

ゲヌム 2 クレむゞヌタンクス

DevOps C++ ず「キッチン りォヌズ」、たたは食事䞭にゲヌムを曞き始めたきっかけ
クレむゞヌタンクスゲヌム

コン゜ヌルに文字を出力するこずは、おそらくゲヌムに倉えるこずができる最も単玔なこずです。 しかし、その埌、問題が 1 ぀発生したす。それは、文字の高さず幅が異なる (高さが幅よりも倧きい) ずいうこずです。 したがっお、すべおが䞍均衡に芋え、䞋たたは䞊に移動する方が、巊たたは右に移動するよりもはるかに速く芋えるようになりたす。 この効果は「スネヌク」ゲヌム 2で非垞に顕著です。 「タンク」ゲヌム XNUMXでは、画面のピクセルを異なる色でペむントするこずで出力が敎理されおいるため、そのような欠点はありたせん。 私がレンダラを曞いたず蚀っおもいいかもしれたせん。 確かに、これはすでに少し耇雑ですが、はるかに興味深いものです。

このゲヌムでは、画面䞊にピクセルを衚瀺するためのシステムを説明するだけで十分です。 ここがこのゲヌムのメむン郚分だず思いたす。 その他、すべお自分で思い぀くこずができたす。

したがっお、画面䞊に衚瀺されるのは、動く色付きの長方圢のセットにすぎたせん。

DevOps C++ ず「キッチン りォヌズ」、たたは食事䞭にゲヌムを曞き始めたきっかけ
長方圢セット

各四角圢は、数字が入った行列で衚されたす。 ずころで、興味深いニュアンスを XNUMX ぀匷調しおおきたす。ゲヌム内のすべおの行列は XNUMX 次元配列ずしおプログラムされおいたす。 二次元じゃなくお䞀次元 XNUMX 次元配列の方がはるかに簡単か぀高速に操䜜できたす。

DevOps C++ ず「キッチン りォヌズ」、たたは食事䞭にゲヌムを曞き始めたきっかけ
ゲヌムタンクマトリックスの䟋

DevOps C++ ず「キッチン りォヌズ」、たたは食事䞭にゲヌムを曞き始めたきっかけ
ゲヌムタンクの行列を XNUMX 次元配列で衚珟する

DevOps C++ ず「キッチン りォヌズ」、たたは食事䞭にゲヌムを曞き始めたきっかけ
XNUMX 次元配列による行列衚珟のよりわかりやすい䟋

ただし、配列の芁玠ぞのアクセスは、XNUMX 次元配列ではなく XNUMX 次元配列であるかのように、二重ルヌプで行われたす。 これが行われるのは、ただ行列を凊理しおいるためです。

DevOps C++ ず「キッチン りォヌズ」、たたは食事䞭にゲヌムを曞き始めたきっかけ
二重ルヌプで XNUMX 次元配列を走査したす。 Y は行 ID、X は列 ID

通垞の行列識別子 i、j の代わりに、識別子 x ず y を䜿甚するこずに泚意しおください。 したがっお、それは目にはより心地よく、脳にはより明確であるように私には思えたす。 さらに、このような衚蚘法により、䜿甚される行列を XNUMX 次元画像の座暙軞に投圱するこずが簡単に可胜になりたす。

次に、ピクセル、色、ディスプレむに぀いお説明したす。 出力には、StretchDIBits 関数 (ヘッダヌ: windows.h、ラむブラリ: gdi32.lib) が䜿甚されたす。 ずりわけ、次のものがこの関数に枡されたす: 画像が衚瀺されるデバむス (私の堎合、これは Windows コン゜ヌル)、画像の衚瀺開始の座暙、その幅/高さ、画像それ自䜓はビットマップ (ビットマップ) の圢匏であり、バむトの配列で衚されたす。 バむトの配列ずしおのビットマップ!

動䜜するStretchDIBits()関数:

// screen output for game field
   StretchDIBits(
               deviceContext,
               OFFSET_LEFT, OFFSET_TOP,
               PMATRIX_WIDTH, PMATRIX_HEIGHT,
               0, 0,
               PMATRIX_WIDTH, PMATRIX_HEIGHT,
               m_p_bitmapMemory, &bitmapInfo,
               DIB_RGB_COLORS,
               SRCCOPY
               );

メモリは、VirtualAlloc() 関数を䜿甚しおこのビットマップに事前に割り圓おられたす。 ぀たり、すべおのピクセルに関する情報を保存するために必芁なバむト数が予玄されおおり、その情報が画面に衚瀺されたす。

m_p_bitmapMemory ビットマップの䜜成:

// create bitmap
   int bitmapMemorySize = (PMATRIX_WIDTH * PMATRIX_HEIGHT) * BYTES_PER_PIXEL;
   void* m_p_bitmapMemory = VirtualAlloc(0, bitmapMemorySize, MEM_COMMIT, PAGE_READWRITE);

倧たかに蚀えば、ビットマップは䞀連のピクセルで構成されたす。 配列内の XNUMX バむトごずが RGB ピクセルです。 赀の倀ごずに XNUMX バむト、緑の倀ごずに XNUMX バむト (G)、青の色ごずに XNUMX バむト (B)。 さらに、むンデントごずに XNUMX バむトがありたす。 これら XNUMX ぀の色 - èµ€/緑/青 (RGB) - が異なる割合で互いに混合され、その結果ずしおピクセルの色が埗られたす。

ここでも、それぞれの四角圢、぀たりゲヌム オブゞェクトは数倀行列で衚されたす。 これらのゲヌム オブゞェクトはすべおコレクションに配眮されたす。 そしおそれらは競技堎に配眮され、8 ぀の倧きな数倀マトリックスを圢成したす。 マトリックスの各数倀を特定の色にマッピングしたした。 たずえば、数字の 9 は青、数字の 10 は黄色、数字の XNUMX は濃い灰色などです。 したがっお、各数字が䜕らかの色である競技堎のマトリックスがあるず蚀えたす。

したがっお、䞀方では競技堎党䜓の数倀行列があり、もう䞀方では画像を衚瀺するためのビットマップがありたす。 これたでのずころ、ビットマップは「空」です。目的の色のピクセルに関する情報がただありたせん。 これは、最埌のステップで、競技フィヌルドの数倀行列に基づいお各ピクセルに関する情報をビットマップに入力するこずを意味したす。 このような倉換の実䟋を以䞋の図に瀺したす。

DevOps C++ ず「キッチン りォヌズ」、たたは食事䞭にゲヌムを曞き始めたきっかけ
競技堎の数倀マトリックス (デゞタル マトリックス) に基づく情報でビットマップ (ピクセル マトリックス) を埋める䟋 (カラヌ むンデックスはゲヌム内のむンデックスず䞀臎したせん)

ゲヌムの実際のコヌドも玹介したす。 ルヌプの各反埩における倉数 colorIndex には、競技堎の数倀行列 (mainDigitalMatrix) からの倀 (カラヌ むンデックス) が割り圓おられたす。 次に、むンデックスに基づいお色自䜓が color 倉数に曞き蟌たれたす。 さらに、埗られた色は赀、緑、青の比率 (RGB) に分割されたす。 そしお、むンデント (pixelPadding) ずずもに、この情報がピクセルに䜕床も曞き蟌たれ、ビットマップ内にカラヌ むメヌゞが圢成されたす。

コヌドではポむンタヌずビット単䜍の挔算が䜿甚されおいるため、理解するのが難しい堎合がありたす。 したがっお、そのような構造がどのように機胜するかをどこかで別途読むこずをお勧めしたす。

競技堎の数倀行列に基づいた情報をビットマップに入力したす。

// set pixel map variables
   int colorIndex;
   COLORREF color;
   int pitch;
   uint8_t* p_row;
 
   // arrange pixels for game field
   pitch = PMATRIX_WIDTH * BYTES_PER_PIXEL;     // row size in bytes
   p_row = (uint8_t*)m_p_bitmapMemory;       //cast to uint8 for valid pointer arithmetic
   							(to add by 1 byte (8 bits) at a time)   
   for (int y = 0; y < PMATRIX_HEIGHT; ++y)
   {
       uint32_t* p_pixel = (uint32_t*)p_row;
       for (int x = 0; x < PMATRIX_WIDTH; ++x)
       {
           colorIndex = mainDigitalMatrix[y * PMATRIX_WIDTH + x];
           color = Utils::GetColor(colorIndex);
           uint8_t blue = GetBValue(color);
           uint8_t green = GetGValue(color);
           uint8_t red = GetRValue(color);
           uint8_t pixelPadding = 0;
 
           *p_pixel = ((pixelPadding << 24) | (red << 16) | (green << 8) | blue);
           ++p_pixel;
       }
       p_row += pitch;
   }

䞊蚘の方法により、Crazy Tanks ゲヌム内で XNUMX ぀の画像 (フレヌム) が圢成され、Draw() 関数で画面に衚瀺されたす。 Input() 関数でキヌストロヌクを登録し、その埌 Logic() 関数で凊理するず、新しいピクチャ (フレヌム) が圢成されたす。 確かに、ゲヌム オブゞェクトは競技フィヌルド䞊ですでに別の䜍眮にある可胜性があり、それに応じお別の堎所に描画されたす。 これがアニメヌション動きの仕組みです。

理論的には (䜕も忘れおいなければ)、最初のゲヌム (「スネヌク」) のゲヌム ルヌプず 2 番目のゲヌム (「タンク」) の画面䞊にピクセルを衚瀺するシステムを理解するだけで、任意のゲヌムを䜜成するこずができたす。 Windows 甹 XNUMXD ゲヌムの。 無音 😉 残りの郚分は単なる空想です。

もちろん、「Tanks」ずいうゲヌムは「Snake」よりもはるかに耇雑に蚭蚈されおいたす。 私はすでに C++ 蚀語を䜿甚しおいたした。぀たり、さたざたなゲヌム オブゞェクトをクラスで蚘述したした。 私は独自のコレクションを䜜成したした。コヌドは headers/Box.h にありたす。 ちなみに、このコレクションにはメモリ リヌクが発生しおいる可胜性が高くなりたす。 䜿甚されたポむンタヌ。 蚘憶を䜿っお䜜業したした。 この本は私にずっおずおも圹に立ったず蚀わざるを埗たせん。 ゲヌムプログラミングによるC ++の開始。 これは、C++ の初心者にずっお最適なスタヌトです。 小さくお面癜く、よく組織されおいたす。

このゲヌムの開発には玄XNUMXか月かかりたした。 䞻に職堎のランチやおや぀の時間に曞いおいたした。 圌はオフィスのキッチンに座り、食べ物を螏み鳎らし、コヌドを曞きたした。 たたは家で倕食を食べたす。 それで、そのような「キッチン戊争」が起こりたした。 い぀ものようにノヌトを積極的に䜿いたしたが、すべおのコンセプチュアルなものはノヌトから生たれたした。

実践的な郚分の最埌に、ノヌトをスキャンしおいく぀か取り出したす。 私が正確に䜕を曞き留め、絵を描き、数え、デザむンしおいたかを瀺すために 

DevOps C++ ず「キッチン りォヌズ」、たたは食事䞭にゲヌムを曞き始めたきっかけ
戊車をむメヌゞしたデザむン。 そしお、各戊車が画面䞊で䜕ピクセルを占めるべきかの定矩

DevOps C++ ず「キッチン りォヌズ」、たたは食事䞭にゲヌムを曞き始めたきっかけ
タンクの軞を䞭心ずした回転のアルゎリズムず公匏の蚈算

DevOps C++ ず「キッチン りォヌズ」、たたは食事䞭にゲヌムを曞き始めたきっかけ
私のコレクションの図 (おそらくメモリリヌクのあるもの)。 コレクションはリンクされたリストずしお䜜成されたす

DevOps C++ ず「キッチン りォヌズ」、たたは食事䞭にゲヌムを曞き始めたきっかけ
そしお、これらは人工知胜をゲヌムに組み蟌む無駄な詊みです

ТеПрОя

「千里の道も最初の䞀歩から」叀代䞭囜の知恵

実践から理論ぞ移りたしょう 趣味の時間をどうやっお芋぀けたすか

  1. 本圓に欲しいものを決めおください残念ながら、これが最も難しいのです。
  2. 優先順䜍を蚭定したす。
  3. より高い優先順䜍のために、すべおの「䜙分なもの」を犠牲にしたす。
  4. 毎日目暙に向かっお進みたしょう。
  5. 趣味のための自由時間が XNUMX  XNUMX 時間あるずは期埅しないでください。

䞀方で、䜕が欲しいのかを決めお優先順䜍を付ける必芁がありたす。 䞀方で、これらの優先事項を優先しお、䞀郚のケヌスやプロゞェクトを攟棄するこずも可胜です。 蚀い換えれば、「䜙分な」ものはすべお犠牲にしなければならないずいうこずです。 人生の䞻芁な掻動は最倧 XNUMX ぀であるべきだずどこかで聞いたこずがありたす。 そうすれば、最善の方法でそれらに察凊できるようになりたす。 そしお、远加のプロゞェクトや指瀺により、陳腐な負荷がかかり始めるでしょう。 しかし、これはおそらくすべお䞻芳的で個人的なものです。

特定の黄金埋がありたす。それは、0% の日を決しお蚭けないこずです。 むンディヌズ開発者の蚘事で知りたした。 プロゞェクトに取り組んでいる堎合は、毎日それに぀いお䜕かをしたしょう。 そしお、どれだけ皌いだかは関係ありたせん。 XNUMX ぀の単語たたは XNUMX 行のコヌドを曞く、チュヌトリアル ビデオを XNUMX ぀芋る、たたはボヌドに釘を打ち蟌むなど、䜕かを実行するだけです。 最も難しいのは始めるこずです。 䞀床始めるず、おそらくあなたが望んでいた以䞊のこずをするでしょう。 したがっお、あなたは垞に目暙に向かっお、そしお信じおください、非垞に早く前進するでしょう。 結局のずころ、すべおのこずに察する䞻なブレヌキは先延ばしです。

そしお、5、10、15分の時間の無料の「おがくず」を過小評䟡したり無芖したりしないで、XNUMX〜XNUMX時間続くいく぀かの倧きな「䞞倪」を埅぀べきであるこずを芚えおおくこずが重芁です。 列に䞊んでいたすか あなたのプロゞェクトのために䜕かを考えおください。 ゚スカレヌタヌを䞊りたすか ノヌトに䜕かを曞き留めたす。 バスの䞭で食事したすか さお、䜕か蚘事を読んでください。 あらゆる機䌚を利甚しおください。 YouTube で犬や猫を芋るのはやめたしょう。 頭を混乱させないでください

そしお最埌。 この蚘事を読んで、ゲヌム ゚ンゞンを䜿甚せずにゲヌムを䜜成するずいうアむデアが気に入った堎合は、Casey Muratori の名前を思い出しおください。 この男は持っおいたす сайт。 「芋る -> 前の゚ピ゜ヌド」セクションには、プロフェッショナルなゲヌムをれロから䜜成する方法に関する玠晎らしい無料ビデオ チュヌトリアルがありたす。 倧孊で XNUMX 幎間勉匷するよりも、Windows 向け C 入門の XNUMX 回のレッスンでより倚くのこずを孊べるかもしれたせん (ビデオの䞋のコメントで誰かがこれに぀いお曞いおいたす)。

Casey 氏はたた、独自のゲヌム ゚ンゞンを開発するこずで、既存の゚ンゞンをより深く理解できるようになるず説明したす。 誰もが自動化を詊みおいるフレヌムワヌクの䞖界では、䜿甚する方法ではなく、䜜成する方法を孊ぶこずになりたす。 コンピュヌタヌの本質を理解したす。 そしお、あなたはより知的で成熟したプログラマヌ、぀たりプロになるこずもできたす。

遞んだ道で頑匵っおください そしお䞖界をよりプロフェッショナルにしたしょう。

著者 グランキン・アンドレむ、DevOps



出所 habr.com