ゲームの開発はプログラミングを学ぶための最良の方法ですか?[閉まっている]


21

私は最近、ゲームを開発することがプログラミングを学ぶための最良の方法であるというインストラクターの助言を聞いた。すべてをコードで作成しなければならなかったという事実に加えて、彼はあなたが本当にあなたのプログラムにOOPを完全に経験して実装できるようになると言いました。つまり、ゲームで作成するものはすべて、技術的にも概念的にも文字通りのオブジェクトです。この仮定をするのは安全ですか?または、プログラミングを学習するときに常に例外がありますか?

.net / xna / c#開発を対象としたものであることに注意しください


3
「すべてをコードで作成する必要があったという事実」。3Dモデル、テクスチャ、サウンド、その他のリソースについてはどうですか?それらを使用せずにゲームエンジンを作成できますが、リソースが非常に少ない完全なゲームは、不可能ではないにしても、非常に困難です。
POSIX_ME_HARDER

@チェシャー:まあ、あなたはプロセッシングのようなものでそれらをプログラムすることができます。私はそれが非常に実用的だと言っているわけではありません。
アント

2
@チェシャー:はい、一部の人々は、手続き的にすべてを作成することにより、この課題に非常に直接取り組んでいます。(私が知る限り)商用ゲームではあまり一般的ではありませんが、それができることを証明するためだけに人気があり、そのようなかなり印象的なデモを見てきました。
FrustratedWithFormsDesigner

6
ゲームについて尋ねるとき、この質問は「ゲームをプレイする」のではなく「ゲーム開発」を意味すると思いますか?Call of DutyからC ++への知的飛躍をやめることはできません...
HorusKol

1
ゲームをプレイ可能にしたい場合は、速度を優先して純粋なオブジェクト指向デザインを妥協する必要があることに気付くでしょう。
ピーターテイラー

回答:


25

私の意見では、ゲーム開発は最も困難な開発の一部です。一人称シューティングゲームを作成する人が知っておく必要があるすべての概念を見てみましょう。

  • グラフィックス
    • 3D計算
    • 速度の最適化
    • グラフィックスハードウェアとのインターフェイス
  • ゲーム
    • データ構造
    • 保存するファイル形式
    • 一般的なデザイン、または機能を追加することが不可能な混乱を作成します
    • ゲームがマルチプレイヤーの場合のネットワーク知識
  • AIアルゴリズム
    • 経路探索
    • バトルファイティング
  • 出版
    • インストーラーの動作方法などのOSの知識
    • おそらく、ウェブサイトを開発して、その言葉を広める

ご覧のとおり、1つのゲームで同時に多くの領域をカバーできます。あなたが時間を費やし、それを良くすることをいとわないなら、これは優れた学習ツールになります。

OOPに関しては、それがうまく機能する1つのパターンです。ゲームを学習ツールとして使用して、優れた設計テクニックを実践できます。

ただし、質問に答えるために、プログラミングを学ぶ唯一の方法ではありません。中間開発者になると、ゲームを作成することで、プログラミングの概念とレベルの多くに触れることができます。それに、楽しい!


12
あなたは一つのこと、そのゲームの物語を忘れました、そして時々、物語は重要なすべてです。
マフムード

これは、3Dゲームであることを前提としています。
アダムハート

1
@Adam:ありますが、2dにも計算があります。私は現在、テストベースのRPGを意図的に除外しています;)
マイケルK

1
@Mohmoud物語は決して「重要なこと」ではありません。これは、悪い/欠落しているストーリーを持つのと同じくらい大きな間違いです。良いゲームを作るには多くの側面があります。どんなに素晴らしいストーリーであっても、退屈なゲームをしたくありません。また、ほとんどの成功したパズルゲームにはストーリーがありません。
アダムハート

ゲーム理論も便利です。
VirtuosiMedia

46

トートロジーではありませんが、プログラミングを学ぶのがプログラミングです。コンピューターゲームに興味があるなら、プログラミングゲームはプログラミングを学ぶのに最適な方法かもしれません。

私はゲームは好きではありませんが、数学が好きなので、私の学習プロジェクトの多くは本質的に非常に数学的なものでした。

一番下の行は、コードの問題を解決する方法を見つける必要があり、ゲームは多くの人々のために働く。


これは私が元々考えていたものです。しかし、あなたの絶対に新しいプログラミングを検討してください。ゲームは、多くの異なる概念を学ぶための優れたツールのようです。マイケルはそれらのいくつかをリストします。正直に言うと、最初にゲームの観点からOOPを学んだと思います。しかし、それは説明が不十分だったという事実、またはビジネスアプリケーションを開発することで概念を理解するのが少し難しくなったという事実による可能性があります。両方の議論を観察することは明確に興味深いです。
エドワード

@penguinはCall of DutyやHalflifeをプレイすることでプログラミングをどのように教えますか?
11

13

それは他の方法の中で、プログラミングを学ぶための方法。コードを書くとき、物事を学びます。今、それ最良の方法ですか?よくわからない。

少なくとも、先生から与えられ2つの理由は無効です

  • 「すべてのものはコードで作成する必要がありました」:ビジネス・アプリケーションを書くとき、あなたは実際にコードを書いています。魔法によって書かれることはありません。はい、自動生成コードを使用できるヘルパーがあります。いいえ、それらを使用することは必須ではありません。ちなみに、自動生成された部分は一般的にプログラミングで最も面倒です(Windows Formsコントロールにコントロールを追加することではなく、エキサイティングで便利なことを学びます)。

  • 「あなたは本当にあなたのプログラムにOOPを完全に経験し実装することができます」:誰かがこれがゲームにのみ有効であるが、他には何も無効である理由を私に説明しなければなりません。OOPを理解していて使用したい場合は、ビジネスアプリケーションでも使用できます。あなたがそれを手に入れない、またはそれを使いたくない(そして、例えば関数型プログラミングを使うことを好む)ならば、ゲーム開発はあなたに変更を強制しません。

しかし:

ゲームの開発は楽しいかもしれません。ほとんどの若者はゲームが好きなので、ビジネスアプリを書くよりもゲームの開発を楽しんでいます。これを見て、教師は実際にゲームがプログラミングを学ぶための最良の方法であると信じ始め、それから論理的な説明を見つけようとします。

そうは言っても、これらの教師は、ゲーム開発をビジネスアプリの開発として若者にとって退屈なものにすることで終わります。OOPなど学ぶためにゲームをする必要があると彼らが信じる場合、彼らは生徒たちに、まったく楽しくない種類のプロジェクトを行うように頼みます。これは、私が大学にいたときの教師の最大の間違いの1つでした。コンソールモードでAdaで作成するゲームプロジェクトを頻繁に提供してくれました。グラフィックなし。楽しくない。ユーザーエクスペリエンスなし。私の人生と私のキャリアの中で、それほど退屈なプロジェクトを見たことはありませんでした。


4
それはすべての方法を確認することは非常に簡単ですので、ゲームはOOPでうまく動作しBadGuyWeaponPowerUp、ゲーム内およびその他の項目を簡単にオブジェクトにすることができます。オブジェクト間の相互作用をプログラムし、画面上でそれらを見ることができます。視覚的な部分が魅力的だと思います。型階層持ってビジネスアプリケーションServerTaskSchedulerAbstractDataProcessorUserQueryAgent、などが...としてではないエキサイティングな彼らはゲームと同じOOPの概念を教えることにもかかわらず、。
-FrustratedWithFormsDesigner

4
@FrustratedWithFormsDesigner:私はビジネスアプリケーションを開発し、あまりにも多くの時間を費やしたので、多分私はちょうどそれを得ることはありませんが、私はどのように見ることがより困難になる理由を理解していないCustomerか、ProductまたはTransactionオブジェクトすることができます。しかしBadGuy、退屈なTransactions よりもs を扱う方がはるかに楽しいことを理解しています。
アルセニムルゼンコ

抽象的思考のレベルについてもっとやることがあります。一部のプログラマーは、何に関連するのかわからないため、名前にこだわる場合があります。たとえば、何がTransaction必要なのかわからない開発者に会ったことがあります。
スポイケ

7

ゲームプログラミングは、ゲームプログラミングを学ぶ最良の方法です。Web開発を学びたい場合は、それを行います。システムプログラミングを学びたい場合は、それを繰り返します。

ゲームプログラミングはやりがいのあるものであり、多くのことを教えてくれるでしょう(Michaelは答えで多くを指摘し、それらの多くは非常にやりがいがあり、外部のゲームでも使用できます)。RPGまたはタイクーン(または同様のゲーム)を作成すると、OOP設計について多くのことを学ぶことができます。なぜなら、それらはそのパラダイムに非常に適しているからです。また、グラフィックスと物理学の複雑さに応じて、パフォーマンスの考慮事項、ゲームのハードコア数学などについて多くを学ぶことができます。

これは良い方法であり、いくつかのことを学ぶ最良の方法ですが、プログラミングを学ぶための優れた方法ではありません。プログラムしたゲームの数に関係なく、オペレーティングシステムの作成方法についてはまったくわからない可能性があります。ほとんどの開発者は、時間がある限り、ゲームの主な専門分野としてそれを行わなくても、ゲームを開発することで何かを得ることができると思います。


7

質問:プログラミングを学ぶ最良の方法は何ですか

回答: 実際に行う方法

つまり、何かを学んだり何かをしたりするとき、実際に経験する方法である限り、どの方法を選択するかはそれほど重要ではありません。

ゲームがあなたにとって本当に楽しいように思える場合は、ぜひ行ってください。数学の問題の解決がより満足できるものであると思う場合は、それから始めてください。プログラミングにはさまざまな種類があり、それぞれに異なるスキルが必要なので、最も面白いと思うものから始めるのが良い方法です。

...しかし、はい、ゲームは数学、並行性、アルゴリズム、OOP、グラフィックスなどを組み込んでいるので、かなり幅広いプログラミングを学ぶのに良い方法です


4

あなたがゲームを楽しむなら、ゲームを書くことは開発に着手する良い方法ですが、私はそれが最良の方法だとは言いません。私が考える最善の方法は、トレーニングとジュニアスタッフの指導に投資するソフトウェアハウスでの仕事が続くCSの学位コースです。

確かに気前の良い返事は別として、はい、ゲーム開発は私が思うに多くの良いスキルを教えてくれます。コンピューターゲームを楽しむなら、開発プロセスに興味を持ち続けるでしょう。本で見る他の多くのシンプルなアプリよりももっと面白くなければなりません。


2

コーディングを学ぶ最良の方法は、それをあなたに面白くすることだと思います。それは本物のゲームである必要はありませんが、あなたにとって何らかのゲームです。私にとっては、複雑な問題を可能な限り迅速に解決できるように、アルゴリズムを開発する数学の問題を解決するゲームです。自分に挑戦して、問題を解決しようとするたびに、より良いコーダーになります。問題が難しいほど良い。

コードの学習(ベストプラクティス)に関しては、より大きな課題に取り組む必要があると思います。単一の入出力/出力が必要な課題


2

HalflifeやCall of Dutyをプレイすることがプログラミングスキルを教えてくれるという主張を聞いたことはありません。

それらをプログラミングするかもしれませんが、そのようなものをプログラミングすることは、初心者が少しでも試みるべきことではありません。特に初心者は、多くの場合、存在しないプログラミングの知識で次の大ヒットを作成できるという印象を受けます。最初にPacManまたはTetrisのクローンを作成してみて、彼らはそれが彼らのやりたいことではなく、「私に与えてください」と叫びます。


1

本当にない。そこではないのプログラミングを学ぶためのプロジェクトの最高のタイプは。最良のタイプのプロジェクトは、あなたの興味に関連するものです。

たとえば、私はゲームをプログラムすることを学ぶなど、いくつかの異なる方法でプログラミングを学ぼうとしました。それは決して固執するようには見えなかった。

それから、自分の研究で何をしていたかをプログラムする方法を学ぶ必要があったときは?今、私は2つの言語を知っていると言って十分に快適で、3番目の言語に取り組んでいます。どうして?それは私の興味に関連していたからです。私はそれにこだわる理由、学ぶ理由、そして本の「演習8」よりも多くの問題を試してみました。

ちなみに、これは、流行モデルのプログラミングがプログラミングを学ぶ最良の方法であることを意味するものではありません。しかし、それは私にとって最良の方法でした。あなたを見つけます。ゲームかもしれませんが、そうではないかもしれません。


「最良のタイプのプロジェクトはあなたの興味に関連するものです」の+1。アーメン。
ブライアンオークリー

0

私自身の経験では、ゲームを書くことで(あなたが自分の小さなチームの開発者でこれを行っていると仮定して)、プログラミングのアルゴリズム/分析的な部分だけでなく、ユーザーエクスペリエンスとデザインについても考えざるを得ません。

それに加えて、もしそれがかなり複雑なゲームであれば、あなたはこれに数ヶ月かけて取り組みます。そしてあなたはあなたがするすべてを文書化することの重要性を認識します。


...しかし、ユーザーと対話するプログラムを作成する場合、ユーザーエクスペリエンスとデザインについて考えることを余儀なくされていませんか?あなたは、従来のクライアント・アプリケーションとあなたが本当にこれらのことについて考える必要がないことを言ってますが、賭博ているあなたはに?また、大規模なデスクトップアプリケーションも数か月に渡り、ドキュメントの作成が必要になることはありませんか?これはゲームにどのように適用されますか?
ブライアンオークリー


0

私は...に同意します

多くの人がこれまでに経験した最初のプログラミング体験は、レゴロボット(Mindstorms)の構築とプログラミングでした。

一般的な用語「ゲーム」は、ほとんどすべてのプログラミングを網羅するほど大きなカテゴリを定義できますが、元のポスターのコンテキストで使用される場合、常に「Doomスタイルのゲームを書く」ことを意味するようです。

前にここで述べたように、プログラミングを学ぶ最良の方法は、プログラムを必要とする本当に欲しいものを持つことです。つまり、あなたが望むプログラムを書くことでプログラミングを学びます。

最初のWindowsプログラムの1つはMIDIコントローラープログラムでした。MIDIコントローラープログラムが本当に必要だったので、Windowsは完璧にフィットしているように見えました(スライダー、ボタン、MIDIのSDKサポートなど)。私はそのプログラムからWindowsプログラミング(これはWin 3.1の時代に戻っていました)について多くのことを学びました。

ここで述べた理由でゲームプログラミングに不満を感じたことは一度もありません。あまりよく描いていないので、作成するゲームのグラフィックスはアーティストのものより劣ります。「ゲーム構築チーム」を管理するのではなく、プログラムすることを学びたい(称賛に値するが、まったく異なるエクササイズ)。

結局、私は先生の声明にまったく同意しません。プログラミングを学ぶ最良の方法は、本当に欲しいプログラムを書くことです。

-R

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.