• ベストアンサー
  • 困ってます

C言語について

ゲームプログラマーを目指しています。 学校ではまだC++とC#での2Dしかならっていなのですが・・・ 3Dゲームを作ってみたいと思っています。 3Dゲームをやるときは処理が早いほうがいいですよね? C++やC#やJAVAなどいっぱいあるのですがどれが一番処理が早いんでしょうか? ここにないものでもいいです。 独学でしようと思っているので批判みたいなのはやめてください。 回答よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数8
  • 閲覧数318
  • ありがとう数8

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.8
  • kmee
  • ベストアンサー率55% (1857/3366)

速度を考えるのは、まだ先でいいです。今やってることを確実に身につけることを考えてください。 どんな言語を使っても、最終的には機械語でないと、CPUには理解できません。 言語の速い遅いは、最終的に実行される機械語群がどれだけ高速にできるか、無駄をはぶけるか、によるものです。 アセンブリ言語は、バイナリーデータでしかない機械語を人間が理解できるように置き換えたもので、ほぼ機械語と同義と言えます。 機械語1命令単位でのチューニングができるので、最も高速になる可能性があります。 C言語は最終的に機械語に翻訳されます。アセンブリほどでは無いですが、最適化によってだいぶ効率のよいコードになります。なので、かなり高速になる可能性があります。 C++はCより複雑な分、若干速度が落ちることがあります。 C#は.NET framwork, JavaはJVMというものが中間に入っています。機械語を直接実行するのではなく、別の形式でかかれたプログラムを、この中間にあるものが解釈して、実行する機械語を決めます。 1段階挟まれるので、どうしても効率が悪くなり、遅くなりがちです。 ただし、これらは、あくまで「可能性」です。 百万個のデータをソートするのに、最高にチューニングしたアセンブリのバブルソートより、基本に忠実に書いたJavaのクイックソートの方が速いでしょう。 機械語でも下手に作れば、遅いはずのJavaに負けます。 また、最高速とプログラムの作りやすさは、おおむね反比例します。 Cが速いのは、「余分なことはしない」からです。 例えば、配列の添字。 C#などで、確保した以上の添字を使おうとすれば(a[10]と宣言したのに、a[100]を指定など)、例外が発生したと思います。これは、添字が範囲内かどうかのチェックをしているからです。 Cでは、このようなチェックはありません。エラーになるかどうかは状況次第です。まるでなにも問題が無いかのように動作することもあります。範囲内になるようにプログラミングする必要があります。 アセンブリとなると、書いてあることしか実行されません。 今はCPUの処理速度も早く、C#やJavaでも十分な速度で遊べるようになりました。 有名なMinecraftはJavaで書かれています。 しかし、基礎ができてなければ、速度以前の問題で、ゲームを作ることすらできません。 特に3Dは、2Dに無い要素がたくさんあります。 基礎を身に付けるのが、結局は近道だと思います。 プログラミングの基礎がわかっていれば、言語はマニュアル見ながらでもなんとかなるものです。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

まずは基礎ですね! それはわかってますw 長文ありがとうございました。 かなり理解できました。

関連するQ&A

  • C言語でゲーム作り

    ゲームを作りたいと思っています。Cを勉強しているのですがC++も覚えた方が良いのでしょうか? また、(CとC++を覚えたとして)CとC++「だけ」でゲームを作ることはできるでしょうか?できるのならその方法がのっている本を、できないのであれば知っておくべきこととそれについて書かれた本を教えてください。 将来は本職のゲームプログラマーになりたいので実際にプロが使っている方法を教えていただきたいと思います。 よろしくお願いいたします。

  • DirectXやWin32API (2Dゲーム作りたいです)

    こんにちは,私は2D(最終的には3D(メインは2D))のゲームを C++,DirectX を利用して作りたいと思っています.  今のところ,プログラミングはC,C++は入門+α, ゲーム関係は『ゲームプログラマになる前に覚えておきたい技術』という本の2D分野を読み実習しました.このゲームの本はDirectXやWin32APIなどを利用せずに,なにやらライブラリなどを用意していてそれを利用する形でした. -- 質問 --  DirectX や Win32API を全然わからないという このくらいの知識の人が本格的に2Dゲームをだんだんと作って行きたいのですが,このそれぞれに対してなにかよい参考書はないでしょうか,またその理由などもいただきたいです. --気になること-- 以下あいまいな知識の質問です. ・最近(DirectX7以降かな)はDirectXは2D描写と3D描写の機能が合体したと聞きました,DirectXの参考書は3Dのばかりで3Dも学べていいのですが,2Dゲームが作れるDirectXの内容も詳しく含んだ参考書が欲しいです. ・Win32APIはゲーム製作にどう影響してくるんですか?まだよくわかっていません.ゲームウィンドウなどを表示するのは必用そうですが,, サウンドやグラフィックを読み込むのに必須なのだろうか, でもそれはDirectXでもできませんか?関係がよくわかりません. --まとめ-- できれば 気になること の回答など簡単にしていただきたいです.  長文ここまで読んでいただきありがとうございました. よろしくお願いします.

  • C#/C++を使って3D画像をゲーム画面に表示

    C#/C++に3Dグラフィック画像を使ってゲーム制作をしようと考えてるんですが、3D画像をゲーム画面に表示させるときに、どのようなプログラム処理内容を打って画像の描画を行わせれば良いのか、そこを教えてください。 後付け足しで、3Dグラフィック画像とドット絵の画像をC++ではどのフォルダーに保存しておけばよろしいですか? 3D画像をどうしてもゲーム画面に表示させるようにしたいので方法をお願いします。 わかりやすいプログラム・説明の回答を待ってます。 宜しくお願いします。

その他の回答 (7)

  • 回答No.7
  • wormhole
  • ベストアンサー率28% (1456/5108)

マシン語とアセンブリ言語はほぼ同義ですよ。 極端にいえば CPUが直接理解できるバイナリのコード(マシン語)に対して人がわかるように名前付けしたものがアセンブリ言語です。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

そうなんですか!ありがとうございます。

  • 回答No.6
noname#208507

学校で学ばれた C++ や C# で作るのがよいと思います。学習段階では。 2Dのプログラミングに比べると3Dは、必要とされる数学の比重が大きいです。描画や衝突判定などの演算はライブラリ等が行ってくれるでしょうが、そもそも数値の意味が分からないと思い通りに描画/操作できません。行列や幾何学が得意な場合を別にして、処理時間の短縮や別の言語に挑戦するより、まず集中して3次元の処理そのものを学ばれる方がよいと思います。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

3次元処理ですね。 頑張ってみます。

  • 回答No.5

C#やJavaは仮想環境で動くので(GJCなどの例外はあるが)そこが速度的なボトルネックになる。 やはりネイティブコンパイルできるC/C++あたりかな。 それと何を対象にするか。 XBOX360のゲームをプロとしてではなくてアマとして作る場合にはXNAが必須になってC#で作る必要が出てきます。 >C言語やアセンブラで同じシーンを表現しても >たいして軽くはなりません。 コンパイラ任せではなくてガッツリとアセンブラでGPUを使う設定(Direct3D/OpenGL)にした方が 速度はでる可能性はあります。 >2Dでも3Dでも、画像処理部分はGPUが行いますので それはゲームによって変わる。 2DならDirectX/OpenGLを使わなくてもゲームが作れるから旧来のWindowsのようなGDIで描画も可能。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

XNAのC#は現在使っています。2Dを作ってますが。。。 アセンブラもよくわかりません・・・ 覚えておいたほうがよさそうなのでこれを機に勉強します。

  • 回答No.4

2Dでも3Dでも、画像処理部分はGPUが行いますので 言語がなんであってもそんなに変わりありません。 たとえば凄いエフェクトがかかるシーンがあったとします。 オブジェクト数も多く、総ポリゴン数も凄い数です。 この時高負荷なのはGPUです。CPUではありません。 ですから、C言語やアセンブラで同じシーンを表現しても たいして軽くはなりません。 このことから、ご自身が扱いやすい言語を選択することを おすすめします。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

C#には少し自信があるのでC#で覚えていきたいと思います。

  • 回答No.3

>いっぱいあるのですがどれが一番処理が早いんでしょうか? 処理スピード順に言ったら当然マシン語です。 1位 マシン語 2位 アセンブリ言語 3位 一応C言語やJAVAあたり ゲームソフト開発に適しているかどうかは別物です。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

マシン語は初めて聞きました・・・ もっと勉強しておきます。

  • 回答No.2
  • wormhole
  • ベストアンサー率28% (1456/5108)

単純に速度を求めるならCだと思うけど、最近はゲームエンジンを使って開発することの方が多いんじゃないかなぁ(3Dの描画などはゲームエンジン任せ)

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ゲームエンジンの事忘れていました。 そう言われればそうかもですね・・・

  • 回答No.1
noname#192508

今はJAVAです。Cはゲームには不向き。むしろ、目に見えないところをカスタマイズするのがCの役割といってもいい。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

Cは不向き何ですか・・・C#は割と簡単なので得意とまではいきませんが自信あったのですが・・・

関連するQ&A

  • 将来ゲームプログラマーになりたいのですが、C++についてアドバイスをください。

    将来ゲームプログラマーになりたいのですが、私の行きたい大学ではjavaやc言語はカリキュラムに入っているのですがC++は入っていません。偏差値が低くてもC++がカリキュラムに入っている大学に変えるべきか、そこそこの大学でC++だけ独学で身につけるべきでしょうか。それともC++は会社に入ってから研修で身につけるようなものなのでしょうか、アドバイスをください。

  • きついです!!!!

    御覧頂ありがとうございます。 私はとある専門学校の情報科に通っているものです。 私の目指す職業はプログラマーorゲームプログラマーなのですが、何気に無理な感じがしてきました。 学科は2年制、プログラム言語はjava,VB,C++(C++はほんの少し)を習っていますが、習いだしたのが2年になってから… 独学でC言語を勉強していますが独学なのでそろそろきつい頃合です。 このまま社会に出て行くのが物凄く不安です。 私は、いったいどうしたらいいんでしょうか? 不安で不安でしょうがないです!

  • C#で3Dゲームを作ることについて

    最近、C++でDirectXをやっているのですが、C#に慣れ親しんだせいか、C++のエグさに失神しそうです。 そこでお聞きしたいのですが、「C#とXNA」「C#とDirectX直接」のようなものは、 「C++とDirectX直接」と比べて、速度はどれくらい違うものでしょうか? 作りたいゲームは3DのFPSゲームみたいなやつですが、 さすがに数千円のFPSゲームのようにハイスペックを要求するものではないです。 それこそピンキリだとは思いますが、個人的な感想などでも構いませんので、暇なときにご回答ください。

  • プログラマーはゲームを作れるのか?

    ゲームプログラマーとプログラマーとでは違いますが プログラマーはゲームプログラマーと同じように ゲームを作ることが可能なのでしょうか? 逆にゲームプログラマーはプログラマーのように 普通のソフトウェアなどを作ることが可能なのでしょうか? (どちらもC+、C#を使ってる点では可能だと自分は思うのですが...) 回答お願いします!

  • C言語の種類と特徴について教えてください。

    java一辺倒なのでぼんやりとしかわからないのですが、 C言語の種類(C、c++、c#他)とそれぞれの特徴(何に向いているか等) を教えてください。 またそういった解説のあるHPも教えていただきたく。

  • ゲーム開発がしたい。学ぶべきはC++かC#か。

    現在、小さな事務系ソフトウェア開発会社でプログラミングをやっている者です。 思う所あって、ゲーム系の会社への転職を考えています。 応募にあたって作品の提出が必要なことは存じていますが、 どの言語を勉強し、開発すべきかで迷っています。 開発したいゲームとしては、STGかRPGで考えています。 2Dか3Dかは特にこだわりがありません。 過去に行ったプログラミングは、ゲームの関係の薄いものばかりで、 「ゲーム開発」について本格的に学んだことはありません。 学生の頃はロボットを制御するために、C言語のプログラムを書いていました。 PCとマイコンのシリアル通信のために、C#でwindowsアプリケーションも作りました。 C++もほんの一時期だけ使っていました。 卒業してから日が浅いので、これらの知識はまだある程度あります。 会社ではaspxとJavaScriptでWebページの外面、内部の動作をVBで行なっています。 触れたことのあるプログラミング言語を理解度順に並べたら多分こんな感じです。 VB≒C#>C>JavaScript>>>C++ C#とVBは似通った言語なので、VB中心の現在でもなんとなく理解できます。 現在最もメジャーらしいC++が最も経験が少なく、自信がないです。 軽く調べた感じでは、現在のゲーム開発はC++が多いが、 今後はC#やJavaも増えるかもという感じでどちらでゲーム開発を本格的に学ぼうか迷っています。 最もメジャーなC++を改めて学ぶべきか、 それともある程度使えるC#での開発方法を学ぶか、 あるいはその他の言語か、助言をお願いします。 また、開発の参考文献なども教えていただけると幸いです。 よろしくお願いします。

  • 課題研究で3Dゲーム製作

    約8ヶ月後に学校で課題研究の発表があります。 そこで私は3Dゲームを製作することにしました。 まず、この期間で3Dゲームを作るとなると開発環境は何が一番適当でしょうか? 自分が考えてたものは  ・C/C++とDirectX(C言語はほぼ勉強済み。C++、DirectXは初めて)  ・C#とXNA(C#、XNAともに初めて) のどちらかにしようかなと思っています。 自分はFPS又はTPSの3Dのアクションゲームを作りたいと思っています。 作成するにあたっていい講座サイトや書籍などもないでしょうか?

  • 目標言語→C#

    私はアセンブラ言語の知識とCを少しかじったくらいの経験しかないのですが、独学でC#の習得は出来るでしょうか?最初はJAVAやVBを勉強しようと思ってたのですが、某サイトではC#のほうがJAVAやVB、C++の長所を引き継いでいるので良いと書いてたので悩んでいます。あとどれくらいの時間があれば習得できるかもしりたいです。どなたかアドバイスお願いします。

  • C言語を覚えたいのですが

    こんばんは、C言語を学び始めようと思っているgcilts8551と申します。 C言語は工業高校時に簡単なものを習った程度の超初心者です。 質問したい事 1、本屋に行ってざっと見た感じ、C言語にはC、C++、C#とあるようですが、一から始めるならどれがお勧めでしょうか。 2、お奨めの本などあれば・・・(本屋で一応何冊か見ましたが、種類が多すぎてどれが良いのか判りませんでした・・・。) 3、お勧めの実行ソフトを御教え下さい。  (フリーは勿論、多少値段が張っても良いので、要素(属性?)別に色がついたりするソフトがあれば教えて頂けると嬉しいです。) 4、独学でも頑張れば本業としてプログラマーを目指せるのか 等、教えて頂けないでしょうか。 工業高校時代にプログラムの面白さを知って、本格的に覚えたいなと思ったのが切欠です。 とりあえず、やった事のあるC言語系から始めようと思い質問させて頂きました。 Cを学んでみて、なお面白かったら他の言語(今興味があるのはJavaやActionScript)も覚えたいと思っています。 ですので、頂けた回答を参考に色々検討して見ようと思いますので、御力を御貸し頂ければと思います。

  • C++とC#

    C,C++と進みC# Visual C#がありますが C++とC#の違いを教えてください. C++とJAVAをたしたようなもの なのでしょうか?