高校三年生です。C#でゲームプログラミングをできるようになりたいです。 進路が既に決まったので、予習としてCとC#を勉強しています。

高校三年生です。C#でゲームプログラミングをできるようになりたいです。 進路が既に決まったので、予習としてCとC#を勉強しています。 苦しんで覚えるC言語、猫でもわかるC#プログラミングという参考書を読み終えたところです。 春までになるべく、Unityやツクールなどを使わずに簡単なゲームのコードを組んでみたいと考えております。 そこでvisual studioのWPFに挑戦してみましたが、ネットで調べてもフォームに画像を表示することすらできませんでした。 そこで質問です。 1) ゲームプログラミングに繋がりそうで、CかC#の比較的易しめな参考書かサイトがあれば教えてください。 私は最低限の基本レベルまでしか知らないと思います。例えば、EventArgs e の意味も本に載っていなかった(調べても難しくて分からなかった)ので知りません。 2)大学に入学する前に勉強しておいた方が良いことはありますか? 私の学力は河合で英数(Ⅲまで)理(物化生)偏差値64以上,留学経験があるので、勉強面は問題ないと感じプログラミングを始めました。制作に関係ありそうなイラストや作曲の勉強と、ゲームをたくさん買って作品研究としてプレイしています。 3)大学または職場で、どのようにプログラミングを勉強なさったのか、愛用した参考書も含めて教えてください。

C言語関連 | 大学、短大、大学院295閲覧xmlns="http://www.w3.org/2000/svg">250

ベストアンサー

このベストアンサーは投票で選ばれました

1

C# でゲームを作成するならば、WPF か、Unity を選ぶと言う考え方で正解だと思います。 クラウドコンピューティングのゲームが本格的になると見込むのならば、WPF を選択して下さい。 まだ当分先と思うのであれば、Unity を選んで下さい。 [クラウドコンピューティングについて] インターネットでは、様々なOSに対応して、ホームページを閲覧することが可能です。 これに対して、クラウドコンピューティングは、ホームページではなく、アプリケーションシフト(ゲームを含む)を様々な環境で使えるようにするものです。 (正確には、SaaSと言うタイプのクラウドコンピューティングのことです) そのSaaSと言うタイプのクラウドコンピューティングが普及すると、具体的にどうなるのかは、以下を参照して下さい。 「.NETってなんでしょうか?」 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1341035493 [Xboxが誕生した経緯] 上記のクラウドコンピューティング(SaaS)を実現するのに、一番適した分野は、ゲームです。 上記参照先の「.NETってなんでしょうか?」での事柄をゲームで実現すれば、かなり面白いことになるからです。 そこで、Microsoft は、各種ゲームメーカーに、クラウドコンピューティングを提案しました。 しかし、どのゲームメーカーも拒絶しました。 まだクラウドコンピューティングと言う言葉自体がない時代でしたので、理解するのは厳しくて当然です。 そこで、Microsoft 自身がゲーム市場に参加しました。 それが、ゲーム機Xboxです。 C# でXNAと言うゲーム開発環境で、プログラミングを行ないます。 PCゲームとスマートフォンゲームとXboxゲームが作れます。 前述の通り、様々な環境に適合しています。 そう言う意味では、クラウドコンピューティングと言えるかも知れません。 しかし、幾つかの環境に適している程度では、クラウドコンピューティングの初歩の段階に過ぎません。 インターネットの世界で技術仕様が認められて、様々な機能がサーバーから提供される構成である必要があります。 クラウドコンピューティング対応と言う意味では、あまりにも御粗末なので、Microsoft は、XNA の新規バージョンを出すことを取り止めました。 (Xbox用ゲームソフトを作成するため、XNA自体は続行するが、新規バージョンは出さない) XNAの新規バージョンが出ないことが発表された途端に、Unity の人気が急上昇しました。 ただし、Unity は、クラウドコンピューティング対応ではありません。 本来のクラウドコンピューティングは、前述の参照先の通りです。 すなわち、様々な機能が部品化されて、サーバに配置されます。 そして、必要な部品(機能)が、必要な時に、クライアント側に組み込まれて行きます。 (こう言う構成を「サービス指向アーキテクチャ」と言います) [WPFについて] Microsoft は、クラウドコンピューティング自体を断念した訳ではありません。 ゲーム機Xboxは、廃止されていません。 また、ゲーム以外(企業向けのビジネス系サービス)のクラウドコンピューティングならば、世界でトップクラスです。 幾つかのIT企業が成功していますが、Microsoft は、その内の一社です。 (クラウドコンピューティングは、企業向けでは既に普及しているが、ゲームを含めた一般向けのサービスは、まだ普及していない) そこで、Microsoft は、WPF と言う開発環境を作りました。 WPF は、XNA の後継と言うレベルではありません。 また、クラウドコンピューティング対応として、インターネットの世界で認可はされていません。 しかし、現時点では、WPF が、XNA の後継に一番近いです。 WPF は、XAML と言うマークアップ言語でユーザーインターフェイス(ユーザーが直接操作するプログラム分部)を作成するので、インターネット仕様への対応は意識している。 また、クラウドコンピューティング仕様のサーバ機と連携するアプリケーションソフトが作れます。 一般のアプリケーションソフトや、2Dゲームや、3Dゲームが作れます。 よって、将来的には、「クラウドコンピューティング対応」と認められる可能性はあります。 まだ、Microsoft 固有仕様が残っていますが、段々にインターネット側に近付いています。 残念なのは、XNA や Unity のように、ゲームをすらすらと作れる開発環境ではありません。 よって、「XNA の後継ではないが、一番近い存在」と前述した次第です。 [WPF の勉強方法] 私は、XNA の後継が出るのを待つつもりでした。 しかし、そうも言っていられないので、WPF の勉強も始めています。 と言いますのは、WPF の親戚的な立場であるC++/CX(C++/WinRT)が重要視されて来たためです。 WPF は、C# 又は、VB.NET をXAMLと組み合わせてプログラミングするものです。 これに対して、C++/CXは、C++ をXAMLと組み合わせてプログラミングするものです。 XAML関連で、クラウドコンピューティングが進展して行くのであれば、今の内から、ある程度は勉強して行くことが望ましいと思います。 そこで、私の勉強方法としては、Microsoft Silverlight の資料(本)で勉強しています。 Silverlight は、WPF の兄弟のような立場で、かなり近い存在です。 実際は、Silverlight とWPF の使い方は違うのですが、資料がないよりは、ましですので。 Silverlight の本は、結構出版されていますので。 [質問1の件] WPF の資料が少ないので、C#の勉強から始めたほうがよいと思います。 すなわち、WPF ではなく、Windowsフォームアプリケーションソフトのほうで。 C#で、Windowsフォームアプリケーションを作成する資料ならば、沢山あります。 C#の基礎を終えた時に、クラウドコンピューティング対応ゲームの様子が見えてくると一番よいのですが。 まだ様子が見えてこない場合は、2Dゲームの作成にチャレンジしては、どうでしょうか。 Unity や XNA の機能を使わなくても、2D ならば、Windowsフォームアプリケーションの機能で作れます。 ここで、よく行われる間違いは、各キャラクターごとに、PictureBox(意味は下記)を割り振るやり方です。 PictureBoxとは、写真や絵を表示するコントロールのことです。 PictureBoxは、かなり重いので、各キャラクターごとにPictureBoxを用意すれば(沢山PictureBoxを使えば)、画面がおかしくなります。 キャラクター画像が、ついたり消えたりを繰り返します。 よって、PictureBoxは、1個のみ(多くても2、3個)にします。 PictureBoxは1個のみで、背景画像を描画します。 その上に、各種のキャラクター画像を合成して行きます。 この方法(合成の方法)でも、まだ画面はちらつきますが、この方法では、ダブルバッファ(画面のちらつきを防止する手法)が使えますので、問題ありません。 [質問2の件] 質問者さんの言われる通り、少しでも、プログラミングに慣れ親しむことが重要です。 受験勉強に支障がない範囲で。 [質問3の件] 私は、スペースインベーダーが登場した時代の世代です。 すなわち、ゲームセンターのゲームは、機械的なゲーム(ビンボールゲーム等)が中心でした。 ビデオゲームは、ピンポンゲームと呼ばれる、弾をラケットで跳ね返すだけの単純なゲームだけでした。 そこに、インベーダーゲームが登場して、ビデオゲームらしいゲームが始まりました。 当時、パソコンは、車の価格程度で高額でした。 なんとかして、パソコンを購入して、C言語で、インベーダーゲームもどきを作りました。 しかし、当時は、2Dですら、ゲーム環境に恵まれていません。 そこで、Microsoftが、パソコンでのゲーム環境を整え始めました。 当時のMicrosoft系は、BASICが手ごろでしたので、BASICに移行しました。 BASICでゲームプログラミングを学び終えたあとに、C言語に戻って、本格的にゲームプログラミングを始めました。 昔のことなので、現代では、何の役にも立たない技術です。 ただし、当時、地道に努力して来たことが、今の土台になっています。 例えば、当時に、ゲーム機能に頼らずに、数学的に三次元を表現する手法(三次元形状処理工学)を学んでみました。 今は、ゲーム機能側(DirectX等)で、三次元表現を行なってくれるので、あまり訳に立ちません。 しかし、三次元形状処理工学を学んでいる人なら、DirectXと無縁な環境(スクリプト系)で、DirectX機能を呼び出して3Dを実現することが可能です。 また、DirectXプログラミングで、一方向からのカメラ視線だけではなく、別の方向から見た二画面構成にすることも可能です。 ようするに、インサイド(内部)から理解しているので、いくらでも応用がききます。 質問者さんの場合においても、今学んでいることは、将来では古臭くって訳に立ちません。 しかし、その反面、それまで地道に努力して来たことが、自身の技術力の土台になって行きます。

1人がナイス!しています

その他の回答(4件)

0

WPFは使われていない気がします。 WPFってiPhoneの成功にMSが感化されてスマホと統合的に開発できるアプリの系統ですよね?・・・間違っていたらごめんなさい。 http://www.kumei.ne.jp/c_lang/index_sdk.html 猫でものC言語が最初は良いと思います。 >2)大学に入学する前に勉強しておいた方が良いことはありますか? ブール代数はみっちりやっておいてください。 集合、ベン図を高校でブール代数で高度に習っているはずです。 プログラム言語ってブール代数を元に機能強化した手順書だと思ってください。

0

英語に堪能とのことなので、WPFでプログラミングをするなら、洋書を探してみてはいかがでしょうか? https://www.amazon.co.jp/Pro-WPF-4-5-Presentation-Foundation-ebook/dp/B00ACC69B0/ref=sr_1_5?ie=UTF8&qid=1544447198&sr=8-5&keywords=WPF https://www.amazon.co.jp/WPF-4-5-Unleashed-Adam-Nathan/dp/0672336979/ref=sr_1_12?ie=UTF8&qid=1544447198&sr=8-12&keywords=WPF しかし、WPFは、実務向けのアプリケーションの開発環境です。 C#のゲーム開発環境は、以前、少しだけ調べたことがあるのですが、Unity、Xamarin 、UWPになるのではないかと思います。 //vdlz.xyz/Csharp/Porpose/Game/GameDevelopmentEnvironment.html 現在のXBoxの開発環境がどうなっているかよくわかりませんが、UWPの可能性があります。確認して見てください。 //docs.microsoft.com/ja-jp/windows/uwp/xbox-apps/getting-started ゲーム向きではなく、一般のプログラミングの本ですが、UWPでしたらこちらの本が良いのではと思います。 本自体は、Windowsアプリの内容です。こちらは、市立図書館など公共の図書館にある可能性があるので、蔵書検索をしてみると良いと思います。 https://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0Windows%E7%AC%AC6%E7%89%88-%E4%B8%8A%EF%BD%9EC-%E3%81%A8XAML%E3%81%AB%E3%82%88%E3%82%8BWindows%E3%82%B9%E3%83%88%E3%82%A2%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA-%E3%83%81%E3%83%A3%E3%83%BC%E3%83%AB%E3%82%BA-%E3%83%9A%E3%82%BE%E3%83%AB%E3%83%89-ebook/dp/B01BD54ZYC/ref=sr_1_2?ie=UTF8&qid=1544447999&sr=8-2&keywords=WPF 大まかに、 3Dで、グルングルンするゲームが、Unity スマホゲームが、Xamarin Windowsパソコンやタブレット(おそらく、Xbox Oneも)が、UWP もう少し、古いものだと taoフレームワークというゲームフレームワークもあったと思います。 ゲーム市場が一番大きいのが、おそらくスマホなので、スマホをターゲットにしたほうがよいのかもしれません。 作成した作品は、GitHubにアカウントを作り、その中にいれておきます。このアカウントの作品が、あなたのホートフォリオ(デザイナーが自分をアピールするための作品集)になります。 音楽やグラフィックデザインなども含めるとやることは多いのではと思います。 試験まで期間が短いので、今からプログラミングを始めても、気分が中途半端になると思います。 英語や数学は、プログラミングにも役に立ちますので、今は、試験勉強をしていたほうが、心が落ち着くのではないでしょうか。

詳しく回答ありがとうございます。 洋書は英語の勉強もしなきゃいけないので入学してから触れてみます。 開発環境について情報ありがとうございます。参考になります。 勉強期間が短くて中途半端になりそうなのはなんとなく感じていました。少し焦っていたのだと思います。期間内にキリよく終わらせられそうな勉強を考えてみます。

0

こんな所とかどうでしょう http://www.greenowl5.com/gprogram/vcs/visualCsharp010.html 学校でプログラムを学んだ世代では無いので以降の質問はわかりません。 学んだのは主にパソコン雑誌と書籍からでした。

0

>1と3 自分は教材なしですね こちらのサイト https://ufcpp.net/study/csharp/ と.NETの公式ドキュメント https://docs.microsoft.com/ja-jp/dotnet/ の睨めっこで勉強しています。 あとは関東お住まいならMicrosoftのセミナーで話聞いてくるとかも 役に立つんじゃないかと。 https://www.microsoft.com/ja-jp/mic/seminar/seminar.aspx >Unityやツクールなどを使わずに簡単なゲームのコードを組んでみたい 勉強目的なら構いませんが、本格的なゲーム開発を目的としているのなら ちょっと待ったと言いたいです。 Unityやツクールを利用することで開発コストの削減になります。 1度使ってみてはどうでしょう。 機能面で不満があるから自作する…とかそういう次元の人なら何も言いませんが。

回答ありがとうございます。 サイト参考にさせていただきます。 関東近辺の者ではないので、セミナーに参加できなくて残念です。 大学にも入っていないので本格的なゲーム開発を目的としてはいません。あくまで予習です。私が志望するいくつかのゲーム会社はUnityやツクールでゲーム制作していません。視野が狭くて恐縮ですが、仕事に直結することから手をつけていきたいと考えています。ゲーム制作のイメージを掴めそうですし、面白そうなのでもちろんいずれ挑戦してみますが、後回し、といったところです。