初年度CS専攻へのアドバイス[終了]


17

主にJavaベースのコースであったCSの1年目の終わりに近づいています。ゲーム開発で足を踏み入れたいのですが、どこから始めればいいのかわかりません。

一部の人々は、おそらく最も簡単であり、主にゲームの設計とゲーム全体がどのように適合するかに焦点を当てることができるため、Cスタイルのスクリプト言語(簡単に習得できるはずです)を備えたゲームメーカーから始めることを提案しています。

APIを介したopenglとdirectXの抽象化が優れているため、多くの人がXNAを推奨しているようです。また、C#はJavaに非常に似ていると聞きます。

また、Javaでのゲームプログラミングも非常に快適であり、マルチスレッドおよび2DグラフィックスAPIについての追加の読書を行っているため、Javaでのゲームプログラミングも検討しています。

最後に、友人が最近私にpygameを見せてくれました。

C ++が良い出発点であるかどうかはわかりません。初心者のゲーム開発者向けに私が見た投稿の多くは、最初のゲームプロジェクトにC ++を推奨していません。

特にJavaのバックグラウンドからゲーム開発に携わった人たちからのインプットに感謝します。


5
C ++はハードで、非常にハードですが、Javaが実際に設定する前にC ++を心に留めておくと、長期的には簡単になります。C ++のバックグラウンドからJavaを学ぶよりも、JavaのバックグラウンドからC ++を学ぶのは間違いなく難しいです。 joelonsoftware.com/articles/ThePerilsofJavaSchools.html
デイヴィッド・ヤング

1
Javaを始めてからC ++を習おうとして死んでしまったのですが、古いスタイルのC ++から始めて、Javaを学びました。ポインタへのジャンプが心配な場合は、CおよびUnixプログラミングを直接学習することをお勧めします。それはまったく新しい考え方にあなたを置きますので、適用できないJavaの概念を適用する可能性は低くなります。
michael.bartnett

回答:


14

たくさんの良い選択肢があります。(私はCS1とCS2、ゲームプログラミングを教えています。)まず、もちろん、コンピューター科学者のように考えることを学びます。概念は本当に普遍的であるため、言語に縛られすぎないでください。

Javaは非常に優れた言語ですが、Javaでゲームを構築するのは少し面倒です。プロセスを少し簡単にする興味深いエンジンがいくつかあります。残念なことに、ゲームエンジンを編集ツールに接続するのは苦痛を伴う場合があります。

FANGエンジンが好きです(残念ながら、まだハイパーリンクを投稿できないので、Googleで調べてみてください)。このプロジェクトの興味深い部分の1つは、オンラインエディターです。これは、Eclipse設定を台無しにすることなく、すぐに開始できることを意味します。

私は実際にはゲームメーカーのファンではありません。GUIは、プログラミングの方法を学びたくない人にとっては問題なく、まともな(しかし素晴らしいとは言えない)プロトタイピングツールです。しかし、それについて私が好きではない2つのことがあります。まず、商用です。それは悪いことではありませんが、無料のオープンソースの代替物が同じくらい良い(そしてある)場合は、最初にそれらを調べる必要があります。ゲームメーカーの大きな問題は、スクリプト言語です。最終的には、GUIから脱却し、実際にコードの作成を開始したいと思うでしょう。GMのスクリプティング言語はかなり後向きです。あなたはCS専攻なので、コードの再利用、優雅さ、明快さ、効率性、モジュール性に興味があります。GM言語はあなたを失望させます。

PythonとPygameが大好きです。(実際、私はそれらについての本を書きました。必要に応じて私のサイトですべてのメモとオンラインビデオを参照してください。本を持っているかどうかに関係なく、これらのリソースを歓迎します。)学ぶのが難しすぎる(特に、プログラミングの方法を既に知っている場合)。Pygameは、人気のあるSDL 2Dエンジンのラッパーです。実際、2つ目のラッパーをpygameに追加して、Flashと同じくらい簡単に作業できるようにしました。

Flashといえば、それだけの価値はないと思います。(あなたが尋ねなかったことは知っています)それは良いプラットフォームですが、モバイルデバイスでどのように動くかについてのコストと不確実性は、それがそれほど素晴らしい学習ツールではないことを意味します。(私はFlashでゲーム開発についての本も書きましたが、それ以上Flashを教えません。)

他にも試してみてください。MITからスクラッチのコピーを入手してください: scratch.mit.edu これは子供向けに作られていますが、先送りしないでください。それは絶対に信じられないほどのゲームとアニメーションのツールです。プログラミングではタイルを使用するため、使い始めるのは簡単です。あなたはそれを使って何ができるのかに驚くでしょう。

カーネギーメロンのアリスwww.alice.orgも試してみてください。最新(第3版)は、実際にはJavaの拡張で、Sims2モデルを使用しています。

スクラッチとアリスはどちらも無料です。

調べるべきもう1つの優れたツールはBlender www.blender.orgです。

3Dモデリングツールですが、多くの人は、ドラッグアンドドロッププログラミングインターフェイスを備えた完全なゲームエンジンであることも知りません。タイルが大きくなりすぎると、Pythonサポートが組み込まれます。

今、私はHTML5に非常に興味を持っています(これはかろうじてHTMLです-これは実際にはHTML、CSS、およびJavaScriptです)。ゲーム開発環境としてはまだありませんが、大きなプレーヤーになると思います。次の本は、HTML5でのゲーム開発に関するものです。

幸運を祈ります。さらに質問がある場合はお知らせください。


ご意見をお寄せいただきありがとうございます。私たちが話している間、あなたのサイトをチェックしています。私は確かにそれはあなたの経験がここに貢献して誰かを持つ非常に貴重になりますよ
avatarX

。ポインタの扱いは、ユニバーサル=(持ち込むまでの私のJavaの呪いではありません
デビッド・ヤング

Javaでゲームを構築するのは退屈だと思う理由を知りたいと思います。また、Pythonの面倒さを軽減するよう提案しているようです。非常に多くの優れたJavaゲーム中心のフレームワークとライブラリが存在するため、非常に大胆な発言のように思えます。
zfedoran

1
初心者プログラマーにとって、Javaのすべてはより退屈です。printfのようなものを比較します。Pythonでは、これはprintステートメントの一部です:print "%s、your score is%d"%(生徒、スコア)。PHPでは、すべてのプリミティブをラッパークラスにキャストし、それらをオブジェクトにキャストし、匿名オブジェクト配列を作成する必要があります。私はJavaが好きです。(私は長年教えてきましたが、それについての本を書きました。)しかし、目標が誰かをゲームプログラミングに参加させることであるなら、できるだけ邪魔にならない言語が欲しいです。
2パイ

コメントをお寄せいただきありがとうございます。あなたの出身地を理解するのに役立ちました。しかし、私の大学の教員が1年生のために最近行ったPythonへの変更に疑問を呈しているのと同様に、Pythonが学生にとってより良い言語であるという点ではまだ十分に売れていません。おそらく、生徒たちは単に新しい問題にこだわっています。以前はすべてを「パブリックスタティック」にする学生でしたが、今では型の違いを理解するのに苦労しています。
zfedoran

5

それはあなたの目標が何であるか、そしてあなたがゲーム開発のどの部分に参加したいかによって異なります。

ゲームエンジンがどのように機能し、ゼロから何かを構築するかについての実際の要点にもっと興味がありますか、または開発のゲーム部分にできるだけ早く入り込みたいですか。

ナットとボルト: XNAは、つま先をそのアリーナに浸すのに最適な方法です。フレームワークは多くのことを行いますが、C#に慣れてきたら、各部分を独自のコードにゆっくりと置き換えることができます。多くの場合、ツールはC#で構築されるため、C#の学習は将来のゲーム開発のポジションに適しています。

ゲームプレイプログラミング: ここではUnityが適切なオプションです。無料で、JavaScriptやC#を含む複数の言語でコーディングできます。あなたは物事をすぐに立ち上げて実行できるようになります。これはいい動機付けになります。さらに、別の言語に移行したり、言語を混ぜて理解を広げることができます。

良い点は、両方とも自由に遊ぶことができ、非常に低いコストでさまざまなハードウェアに接続できることです。


4

常にいくつかのJavaベースのゲームを行うことができますが、それらに問題はありません(http://zetcode.com/tutorials/javagamestutorial/)

XNAとAS3は非常に近く、必要に応じて複雑または単純なゲームを作成できます。(Javaでも同様です)

覚えておくべきことの1つは、常に練習することであり、コードをいじるだけです。


3

Java Monkeyエンジン

Javaに最も慣れている場合は、ゲームを作成するときに使用するフレームワークにJava Monkey Engineを使用できます。また、NetbeansおよびEclipseと統合するための手順を含む、かなりの量のドキュメント/チュートリアルがあります。


JMonkeyEngineは見栄えが良いと言わなければなりません。間違いなくチェックします。あなたの入力をありがとう
avatarX

2

団結

Unityを試してみてください。無料版があり、Unityが提供する2つのチュートリアルに従って、数時間で足を濡らして基本的なアイデアを得ることができます。

Unityのもう1つの素晴らしい点は、JavaScriptをスクリプト言語として使用でき、Windows、MacOS、Web、iPhoneでゲームを公開でき、Androidデバイスでもバージョン3でゲームを公開できることです。

また、Unity AnswersにはStackExchangeエンジンを使用しており、Unityに関連するすべての質問に素晴らしいコミュニティがあります。


1

これらのいずれも、最初のCS教育がJavaで行われた開発者として言えば、良いスタートになるでしょう。

C#はJavaに非常に近い(私は時々、より優れたライブラリを備えたプラットフォームが制限されたJavaであると冗談を言います)ので、XNAが良い選択かもしれません。MinecraftはJavaでlwjglゲームライブラリを使用して開発されているため、Javaに固執したい場合は、これが良い方法です。もちろん、3D開発はやや複雑です。知識、経験、忍耐力に応じて、3D(または3Dベースのシステムでは2Dでも)を待って、より多くの教育を受けることができます。

2Dソリューションの場合:Game Makerは非常にシンプルで、優れたゲームの作成に使用されています。スクリプト言語を簡単に習得できるはずですが、1年のJavaの経験がある人にとっては簡単すぎるかもしれません。私は、純粋なAS3(チュートリアル)を使用してFlashで開発します。これは、スキルを簡単に翻訳できるようにJavaに十分に近いものです。


1

XNAを使用することを強くお勧めします。コミュニティが成長している、非常に有能で十分にサポートされているプラ​​ットフォームです。XNAは、フレームワークがこれまで以上に多くのプラットフォーム(Windows Phone 7を含む)で出荷されるようになったため、エコシステムの「場所」を見つけ始めています。ただし、さらに重要なのは、XNAを使用すると、C#および一般的な.NET開発を学ぶことを余儀なくされることです。.NET開発は成長しており、非常に健全な求人市場があるため、ゲーム開発に進むかどうかに関係なく、このプラットフォームでの経験を積むことができます。一方、Javaはしばらくの間ゆっくりと死に、最近の出来事はその終miseを早めるのに役立っただけです。私が完成したようなCSプログラムがJava中心である場合、C#/。NETを自分の時間で習得するのに役立ちます。

Javaが生き続けていて、Java開発のキャリアを追求することに決めたとしても、結局は.NETシステムと統合しなければならなくなるでしょう。したがって、結果がどうであれ、経験は長期的にはあなたを助けるだけです。


Indeed.com/jobtrends?q=java&l=Indeed.com/jobtrends?q=.net&l=は、両方の市場需要を非常によく表しています。Javaが実際に成長しているようです。
デビッドヤング

Androidプラットフォームの成功によってもたらされるJava開発の流入については考えていませんでした。これはおそらく、2008年後半から2009年初めに関連する求人が急増したことと関係があると考えられます。
マイクストロベル

1

ゲームデザインに興味がある場合は、カードゲームを作成することから始めてください。これにより、慣れていないAPI、言語、フレームワークを使用して戦うのではなく、ゲームの設計と仕組みに集中することができます。


1

http://Processing.orgを使用して楽しむこともできます。これは、グラフィックプログラミングを学ぶのに最適な環境です。厳密にはゲーム開発ツールではありませんが、提供できるものはたくさんあります。言語はJavaの拡張/単純化であり、すぐに習得できます。


0

私からの非プログラミング関連のアドバイス:

きちんとしたプロジェクトを作成して、教授に見せてください。

それが、学校での1年目と2年目の後に、プログラマーとして夏の仕事を得た方法です。


これは便利かもしれませんが、OPがやってくる言語/ APIの危機に実際には取り組んでいません。
共産主義のダック

0

ゲーム開発を探しているだけなら、なぜ別の言語を同時に学ぶのですか?あなたが新しい言語を学びたいのでない限り、私はJavaに固執するでしょう。

私が知っているJavaの主なオプションはjMonkeyEngineです。jMonkeyEngineは3Dグラフィックエンジンであり、一般的にかなり良いと考えられています。

また、OpenGLのJavaラッパーであるjOGLがあります。これは当然、はるかに低いレベルです。

始めたばかりで、バッファーやシェーダーバインディングなどを扱うよりもロジックを操作したい場合は、jMonkeyEngineを使用してください。深く始めたい場合は、jOGLを使用してください。

C#とPythonから新しい言語を学びたいなら、おそらくC#と言うでしょう。構文はJavaに非常に似ており、XNAとSlimDXはグラフィックスに非常に適しています。XNAはより高いレベルであり、いくつかのことを行っています。ただし、これにはWindowsのみの制限があり、Monoはありません。

Pythonは非常に簡単に入手できる言語です(C ++の1年から来た本にほとんど注意を払わずに、最大で約1週間かかりました)。PygameはCのSDLライブラリのラッパーなので、おそらくXNAと同じ量の機能を備えていません。


0

Unityに対する別の投票。今後数年間のCS研究では、C ++や他の言語を使用するのに十分な時間があります。ゲームの開発が目標である場合、基本的にエンジンの開発作業に縛られるのは時間がかかりすぎます。エンジンデザイナーになりたい場合は、ぜひ戻って低レベルの実装を試してください。

Unityエンジンを使用すると、ゲームプレイプログラミングに集中できるように、詳細の大部分を抽象化できます。フォーラムのコミュニティとStack ExchangeベースのUnity Answersは非常に役立ちます。JavascriptまたはC#でプログラミングできます。Javaから来た私は、多くのチュートリアルが書かれていたのでJavascriptを使い始めましたが、C#に切り替えました(非常に簡単な切り替えでした)。

XNAとPygameも良いものになると思います(退屈なものをいくつか抽象化するため)が、経験はありません。

最後に、最初のゲームであまり大きく狙わないでください。ゲームに機能を実装するのに時間がかかることを過小評価するのは非常に簡単です。ゲームをすぐにプレイ可能な状態にすることができるコアゲームメカニックから始めます。その後、他の要素の追加を開始できます。

楽しんで!


0

XNAは、Javaを使用しない場合に最適なソリューションです。C#はjavaとほぼ同一の見た目と読み取りを行うため、新しい構文を学習しなくても非常に高速にジャンプできます。XNAフレームワークは、動作する多くの優れたAPIを提供し、いくつかのプロジェクトを開始するための無料の「マイクロソフト許可ライセンス」オープンコードが多数あります。

Javaを使用することはお勧めしません。ほとんどのグラフィックスAPIはひどいものであり、3Dサポートが大量にあるわけではありません。通常、Javaの動作は遅くなります。ほとんどのJavaアプリでは大したことではありませんが、ビデオゲームには多くのパフォーマンスが必要です。

C ++は、ほとんどの期間、ビデオゲームを作成する方法です。ただし、java-> C ++を使用すると、かなり不快になります。低レベルのハードコアグラフィックスプログラミングのほとんどがC ++ではなく、実際にはCスタイルであるということは言うまでもありません。したがって、より多くのパフォーマンスを絞り出すために、多数のポインター演算を実行します。面白いかもしれませんが、時間がかかります。また、開始するのにかなり時間がかかる場合があります。

Ogreのような優れたゲームエンジンはたくさんありますが、そのためにはまず大量の時間をかけてそれを使って物事を行う方法を学ぶ必要があります。

あなたのゲームのアイデアの多くは素晴らしいかもしれませんが、ビデオゲームは高価であり、開発に時間がかかり、大規模な開発チームがあることに注意してください。

あなたがゲームを作り、それに取り組んでいる唯一の人になりたいなら、あなたはそれを2Dゲームにしなければなりません(とにかく2Dで始めるべきですが)、あなたは本当に始めなければなりません、本当に簡単です。

楽しいだろうと想像できるほとんどすべてのものは、今のところ野心的すぎます。

私のアドバイス:持っていない場合は、無料のVisual Studio 2010 Expressを入手してください。XNAゲームスタジオ、および.net framework 4をダウンロードします。XNAデモをダウンロードします。デモを実行し、コードを調べて、何が何をするのかを確認してください。XNAが2Dゲームを行う方法に関するドキュメントをいくつかお読みください。

その後、お気に入りの古い学校、超簡単なゲームを選んでください。パックマン?ポン?小惑星?スペースインベーダーズ?マリオ?STUPID、STUPIDを簡単に選択してください。その後、ゲームを正確にリメイクします。ゲームの設計に煩わされる必要のない新しいAPIのプログラミングと学習について心配するのに十分です。気が散るだけです。

次に、マリオクローンを作成するか、作成したものをすべて取得したら、ゲームプレイを試し、新しいものを追加してみます。

小さな小さなステップから始めれば、もっと楽しくなり、より多くを学ぶことができます。

ゲームを作成するためにC ++でQuake3ソースコードを変更することを試してみると、非常にイライラします。それを機能させても、それを行うことから多くを学ぶことはありません。

ただ楽しいです:D


0

閃光

FlashのAS3は、メモリ管理やヘッダーファイルの作成を心配することなく、重要なOOP概念に頭を包む素晴らしい言語です。また、ディスプレイツリー、イベントシステム、その他の便利な機能を備えた、完全な2Dゲームエンジンでもあります。

Flashゲーム開発者の巨大なコミュニティがあり、一般的な考えに反して、オープンソースツールを使用してFlashゲームを開発できます。Windowsを使用している場合は、FlashDevelopをお勧めします。

私は、FlashはJavaやUnityを除く他のどのテクノロジーよりもクロスプラットフォームに優しいと主張しています。99%の人がデスクトップブラウザでFlashを閲覧できるため、作成した作品を世界中の人と簡単に共有できます。ほとんどのスマートフォンはゆっくりとFlashをサポートしています。iOSでは、Flashブラウザーをサポートしないプラットフォームの1つで、Flash CS5でアプリを作成できます(ただし費用はかかります)。

AS3で今すぐゲーム作成の基礎を学び始めることができるのに、C ++やC#のようなもっと複雑なものと格闘しなければならないのは残念だと思います。AS3を理解したら、後で他の言語に簡単に切り替えることができます。私の場合、私はFlash開発者でしたが、Objective-Cでプログラミングする方法を学び、ヒットしたiPhoneゲームを作成することができました。あなた自身に感謝し、http: //www.flashgamedojo.com/にアクセスしてください -あなたが失望することはないと思います!

団結

UnityにはFlashと同じ多くの利点がありますが、3Dにあります。

Unityを使用すると、C#またはUnityScript(javascript-y)でプログラムできます。オープンソースではありませんが、無料です。非常によくサポートされており、素晴らしいコミュニティがあります。3Dゲームの開発に関する問題は、ほとんどのゲームで多くのアートとアセットが必要になることです。これは2Dゲームでも問題になる可能性がありますが、一般に、3Dアートにはかなり時間がかかり、「プログラマーアート」を作成するのは非常に困難です。

オープンソースに関する注意

オープンソースソフトウェアを使用しても何も問題はありませんがそれがオープンソースであるためにそれだけを使用している場合、あなたは自分自身を傷つけています。最小限の摩擦で最速の学習に役立つ最高の言語とツールを選択してください。同じ方針に沿って、「最も難しいことを最初に学ぶ」(つまりC ++)という考え方はおかしいです。あなたが本当に学ばなければならないのは、構文ではなく論理です。ですから、どの言語でも手荷物と参入障壁が最も低い言語を学んでください。私の意見では、それはAS3です。

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