• ベストアンサー

C言語について

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

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

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

速度を考えるのは、まだ先でいいです。今やってることを確実に身につけることを考えてください。 どんな言語を使っても、最終的には機械語でないと、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に無い要素がたくさんあります。 基礎を身に付けるのが、結局は近道だと思います。 プログラミングの基礎がわかっていれば、言語はマニュアル見ながらでもなんとかなるものです。

double002
質問者

お礼

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

その他の回答 (7)

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

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

double002
質問者

お礼

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

noname#208507
noname#208507
回答No.6

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

double002
質問者

お礼

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

回答No.5

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

double002
質問者

お礼

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

  • jjk65536
  • ベストアンサー率59% (66/111)
回答No.4

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

double002
質問者

お礼

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

回答No.3

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

double002
質問者

お礼

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

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

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

double002
質問者

お礼

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

noname#192508
noname#192508
回答No.1

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

double002
質問者

お礼

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

関連するQ&A

  • C言語

    はじめに 真剣にプログラムに取り組んでる方、プログラマとして収入を得てる方、軽率な発言ですいません。 自分は今C言語を独学(本・ネット)で勉強してます。 自分でなにかツールみたいなのがつくれたらいいなぁくらいの考えで始めました。 プログラムに取り組んでる方、プログラマの方はどんな心境で始め、またどのような勉強方法で学びましたか? ぜひ参考にさせてください。 よろしくお願いします。

  • C言語/C++,JAVAのどちらが役立つか

    失業中で職業訓練校へ行こうと考えている29歳の者です。 プログラマーとして働きたいと思いましたがプログラムはCを 多少やった事はあるだけでほぼ素人なので訓練校へ行こうと思いました。 年齢の事もあり、なるべく早く就職をしたく訓練校も一度通うと1年は 通えなくなるため学校選びも失敗したくありません。 また手に職を付けたいと考えておりどこでもある程度働ける技術が 欲しいと思っています。 前置きが長くなりましたが、 C/C++を2月まで学ぶ訓練校(企業内実習付き)、JAVA/Cを4月まで学ぶ訓練校、 CとLINUXを使って組み込みソフト作成を学ぶ訓練校があります。 どれも10月から11月開講です。 プログラムの基礎と言われているC/C++のみをみっちり学ぶか、 3年ほど前から主流と言われているJAVAとCを時間をかけてでも学んだ方がいいのか、 組み込みソフトウェアを専門的に学ぶか迷っています。 私自身はまずC言語を学んでおけばとりあえずは選択肢が広がるのではないか、 また学習期間も短めなのですぐに就職活動を始められるのではないかと考えています。 (即戦力の技術が手に入るかどうかは入ってみないと分かりませんが) ですが今の時代のプログラマ、SE業界でC言語のみで就職ができるのか? 将来的な事を考えると多少時間がかかってもJAVAも習っておくべきでは?など 考えると悩んでしまいます。 何かアドバイスをいただけないでしょうか。

  • きついです!!!!

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

  • 目標言語→C#

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

  • C言語でゲーム作り

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

  • C言語って何に使うの??

    僕は中2で、C言語を独学で学んでいるのですが、よく考えるとC言語って何に使うんですか?? 本に書いてあるのは簡単な計算や石取りゲームなどの実用的ではない物です。 どんなことに使っていますか?

  • C言語が解りません。。。

    こんにちは。 現在、僕は30歳でコンピュータの専門学校に通ってます。 当初、プログラマー志望でしたが、C言語が解らないので、プログラマー職には就けそうにないです。 最初の授業を休んでしまい基礎が身に付いてないので、今ではC言語が全然解らなくなりました。 自宅でのC言語の勉強方法は、教科書や参考書を読んで勉強する方法です。 自宅のパソコンでは、実際に実行コンパイルする方法が解らないので、教科書などを読んで勉強してます。 この方法だと、構文などの基礎的な事は解るのですが、応用が解りません。 この方法だと、いくら教科書を読んで勉強しても、自由にプログラムを書ける様になるとは思えないです。 専門学校を卒業するまでの、残り約半年間でこの方法で僕は、C言語をマスターできるでしょうか?。 マスターできればプログラマーを目指そうかなと思ってます。 良ければアドバイスお願いします。

  • java PHP CGI C言語

    プログラマーに興味を持っています。ただ、仕事内容が漠然にしか分かりません。 javaプログラマーとwebプログラマー、仕事の内容は全く違いますか? 具体的な内容など、よければ教えて下さい。 あと、よければプログラマーの現状の求人率はjava PHP CGI C言語では高いででしょうか?教えて頂ければ嬉しいです。 初歩的な質問ですみませんが宜しくお願いします。

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

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

  • C言語でゲーム

    今、独学でC言語を勉強しているんですが。 大きく、 条件処理、繰り返し処理、配列、関数、2次元配列、文字列、構造体、ファイル処理、乱数、検索、バブル・ソート、ポインタ を勉強したんですが。 もしも、ゲームを作るとしたら・・ もし、ボンバーマンみたいなのを作るとなるとどういう勉強をすればいいんでしょうか? もうひとつはHALOみたいなxbox関係などはどの様な勉強をすればいいんでしょうか? 質問が多いですが、よろしくお願いします。