すでに知っている基本的な2Dゲームよりも複雑なグラフィカル2Dゲームをプログラムしたいと思います。3Dプログラミングはしたくありません。より複雑な2Dのもの。たくさんのことを学ぶ前に高校を中退したので、小切手帳のバランスを取り、軽い2Dデカルトプログラミングを行うのに十分な代数の知識を持って立ち去りました。
注意力が限られている人(たとえば、私が非常に興味を持っている主題については、1人あたり20分)がプログラミングで数学を使ってもっと役立つことを徐々に学ぶための良いリソースはありますか?
三角法に精通している必要があります:ウィキペディアとMathworld
3Dプログラミングをしたくない場合でも、2Dゲームはベクトルと行列も使用します。(線形代数から)
線形代数のリソース:Wikepediaと Mathworld
Trigプログラミングで多くの労力を節約できる1つのポイントは、atan()関数ではなくatan2()関数の必要性を認識することです。これは、2点間の方向を決定するときに重要です。
さまざまな座標系間を移動できることは大きなプラスです。これには経験が伴います。人々をつまずかせる2つの一般的なことは次のとおりです。
a)ほとんどのスクリーンシステムは、原点(0,0)を左上隅に配置し、正のx軸は右に伸び、正のy軸は下に伸びます。標準のデカルト座標は、左下の象限1(xとyは常に正またはゼロ)の原点を想定しています。これには、プログラマーがいずれかの段階でy方向を「反転」する必要があります。
b)通常の地理では、北と正の度が時計回りにスイープするため、0度になります。すべてのTrig関数は、0度を東として配置し、正の度は反時計回りにスイープします。
最後に、度で考える傾向がありますが、実際のライブラリではラジアンを使用します。ベストプラクティスは、角度をラジアンとして(「geo」ではなく「math」方向で)格納し、デバッグ情報を表示するときに変換することです。
私は現在、David M. Bourg による「ゲーム開発者のための物理学」を読んでいます。これまでのところ、私はそれをお勧めします。
物理学の背後にある数学的な概念を提供し、2D 領域に簡単に適用してゲームを少し盛り上げることができます。
GameDev.net には、数学と物理のコーディングに関する記事のセクションがあります。実行しようとしていることに関連するものがあるかどうかを確認することは、簡単に確認する価値があります。
アメリカに住んでいるなら、地元のコミュニティ カレッジに入学して、欠席した数学の授業を受けてみませんか? 補習スキルのクラスが必要で、学習障害がある可能性のある学生を支援するためのリソースが用意されています。あなたには学ぶ意欲があり、教育の価値を実感しています。学びたいと思うことは恥ではありません。学術カウンセラーに相談してください。頑張れ。
動画シリーズから学ぶことは、学習するための最速の方法であると確信しています。つまり、学びたいことをすばやく進めたい場合です。ビデオから 1、2 分で得られる小さな情報を得るために、ページを読むのに多くの時間を費やすこともできます。
そのために、この数学チャンネルを見つけました: https://www.youtube.com/user/patrickJMT
また: https://www.youtube.com/playlist?list=PL233FC7AA6FE11E0E
Physics for Game Developers の推奨事項には同意できません。
私はその本がかなりつまらないことに気づきました、そして私自身の集中力がそれほど短いとは言いません.
一番得意なことはベクトルであり、trig を使用してそれらを操作し、その基礎の上に、現在のプロジェクトに固有の物理学を適用します。
グーグル/ウィキペディアを立ち上げて、ランダムなものを吸収しながらウェブを飛び回り始め、限られた注意力がいらいらしたら、再び跳ね返ります。
その本を手に取っても、おそらくあなたを夢中にさせたり、刺激したりすることはありません.
Processingを学ぶことから始めることができます!
次に、Daniel Shiffman による「The Nature of Code」という素晴らしい本に移ります。この本は、Processing.js で書かれたインタラクティブな例とともにオンラインでも入手できます。
ブックカバー
1. VECTORS
2. FORCES
3. OSCILLATION
4. PARTICLE SYSTEMS
5. PHYSICS LIBRARIES
6. AUTONOMOUS AGENTS
7. CELLULAR AUTOMATA
8. FRACTALS
9. THE EVOLUTION OF CODE
10. NEURAL NETWORKS
彼はまた、各章の概念を説明するビデオを Vimeo にアップロードしました! http://vimeo.com/shiffman/videos/sort:date/format:detail
自然界の予測不可能な進化的および創発的な特性をソフトウェアでどのように捉えることができるでしょうか? 物理世界の背後にある数学的原理を理解することは、デジタル世界を作成するのにどのように役立ちますか? この本は、Processing を使用した自然システムのコンピューター シミュレーションの背後にあるプログラミング戦略とテクニックに焦点を当てています。
彼は学習処理の基礎を教える本も書いています。
http://www.learningprocessing.com/
この本には物語があります。これは解放の物語であり、コンピューティングの基礎を理解するための第一歩を踏み出し、独自のコードを記述し、既存のソフトウェア ツールに束縛されずに独自のメディアを作成することです。この話は、コンピュータ サイエンティストやエンジニア向けのものではありません。この物語はあなたのためです。
一般的な数学の Web サイトが必要な場合は、planetmath.orgをお勧めします。そこにある記事は、ウィキペディアよりも高い基準を保持する傾向があり (私の経験では、数学に関してはまったくぞっとする可能性があります)、mathworld よりもユーザーフレンドリーです。Mathworld は、数学者である用語の完全で正しい定義が必要な場合に適していますが、日常的に使用するには、理論的で鈍い傾向があります。
不思議なことに、私はウィキペディアで線形代数に関する多くの有用なものを見つけました:http: //en.wikipedia.org/wiki/Portal :Mathematics
一般的に、それは最良の知識源ではありませんが、数学は大丈夫です。
このトピックに関する OReilly のテキストをチェックしてみてください。彼らはあなたが取り組むことができる良い例を持っています. これにより、プログラミングが自分に適しているかどうかをよりよく知ることができます。ゲームプログラミングを始めたいなら、実際にゲームプログラミングを始めるのが一番です。そこにアクセスして、質問に対する回答を調べてください (他の回答のリンクはこちら)。
Wolfram のリソースをお勧めします: http://mathworld.wolfram.com
それらは分厚いですが、私はこれ以上のオンライン リソースを知りません。