ゲームプログラミングにおいての今の主流

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
土門

ゲームプログラミングにおいての今の主流

#1

投稿記事 by 土門 » 11年前

自分は今C、C++を頑張っていますが、
ゲーム制作プログラミングにおいてはどうやら廃れていってるみたいで
このまま頑張ってていいのかとの最近危機感を持つようになりました。

というのも、10年前まではコンシューマゲームにおいて
C++が主流でどこのゲーム企業でも募集要項にC++は必須と書かれてありました。
そしてネットゲームや携帯やスマフォのアプリゲームが主流となった近年
C#やJavaが知名度を上げてきましたが、
それでもコンシューマレベルのゲーム開発はみんなC++です、と
C++はそのメンツを守ってこれていたように思います。
(なので自分はC,C++を選んだのですが)

が、どうやら今のコンシューマはC#を使っていると聞きました。
ほんとかどうかはわかりませんがwiiUのゲームもそうだと。
もしそうならゲーム制作においてC++は必要性が無くなった言語となりますよね。
だって、iPhoneやアンドロイドなどスマフォでは使えない、
(DirectXを利用するなら)macでも使えない、(openGLを利用するなら)windousでは使えない、
そしてコンシューマでも使えなくなった。
こんな悲しいことありますか?
自分が頑張っている言語がもうすぐ淘汰されようとしている。
C++自慢の処理速度も、最近はC#も変わらないくらいになっているよと聞きました。
悲しいです。

マイコン?とか過去に栄えていても廃れたプログラム言語ってありますが
C++もそうなるのでしょうか?

JavaやC#の弱みが無くなりつつあり、
本来の長所(ネットに強い、Cよりは簡単等)が目立ってきましたね。
それらでPC上で動くゲームも作れます。
ましてやコンシューマでも主流になりつつあるだなんて、、
やっぱこれからの時代はPCゲームやコンシューマゲームを視野に入れても
JavaやC#なんでしょうか?

アバター
usao
記事: 1889
登録日時: 12年前
連絡を取る:

Re: ゲームプログラミングにおいての今の主流

#2

投稿記事 by usao » 11年前

> (DirectXを利用するなら)macでも使えない、(openGLを利用するなら)windousでは使えない、

コンシューマがどうとか知りませんが,とりあえず
DirectXやOpenGLを使うこと  と,  C++が使えるか否か  については関連が無いように思うのですが…(?)

・DirectXをmacで使う手段があるのか知りませんけど,使えないのであれば
 「macではDirectXは使えない」のであって,そこにはC++という単語が出てこないような…
・OpenGLについてはWindowsでも使えるし,何を指して言っているのか不明です.

何を言いたいのかいまいちわかりませんが,
ゲームを作るためだけ  の道具としてのC,C++をやっているのであって,
且つ,仮に他の言語が本当に主流になったのであれば,使う道具を間違っている可能性はあるのかもしれませんね.
(でも仮に他の言語をやることになったとしてもC,C++をやっていた経験というのは無駄ではないとは思いますよ)

beatle
記事: 1281
登録日時: 13年前
住所: 埼玉
連絡を取る:

Re: ゲームプログラミングにおいての今の主流

#3

投稿記事 by beatle » 11年前

ゲーム業界にはあまり詳しくありませんが、僕もC++大好きなので考えてみました。ずばりの答えではありません。

確かにちょっと前はコンシューマーゲームはC++と言われていました。
そして、最近のマシン性能の向上でC#などで十分ゲームが作れるようになったのも事実だと思います。

C++がC#やJava、JavaScriptなどに対して持つ優位性は、マシン性能が上がった今日では「速さ」よりも「低レベル記述が出来ること」かもしれません。Windowsなどのオペレーティング・システム、ゲーム機のファームウェアなど、ハードウェアを直接操作する必要がある場面では、C/C++の「ポインタ」がどうしても必要です。そういう意味で、C/C++が完全に必要無くなることは無いと思います。

しかし、オペレーティング・システムやファームウェア上で動くアプリケーションソフトの開発ではポインタは必須ではありません。(最近の)ゲームもアプリケーションソフトですから、C++で記述する「必然性」は無いと思います。ライブラリなどの資産を活かすためにC++を使うとか、C++プログラマが居たからC++にするとか、そういうレベルの話だと思います。

そこに来て最近はスマホが流行り、Webブラウザ上で動くゲームが流行っています。そういうゲームの開発には寧ろC++が使いづらいのは土門さんの指摘の通りです。C++よりC#やJava、JavaScript、PHPなどが持てはやされるようになるだろうと思います。

でも、C++を学んで時間を損した、とは思わないで良いと思います。C++で培った低レベル記述とか効率のよいプログラムの作り方は、他の言語を使った時に役立つはずです。C#で作ったプログラムの性能が悪いとき、低レベルな部分から見なおしていけるのは低レベル記述が分かる人だけです。C#向けゲームライブラリのバグは、ハードウェアを知らないと直せないかもしれません。

C++が使いこなせれば他の言語に移っても素晴らしいプログラマになれると思います。がんばってください。

最後に幾つか指摘。
土門 さんが書きました: だって、iPhoneやアンドロイドなどスマフォでは使えない、
(DirectXを利用するなら)macでも使えない、(openGLを利用するなら)windousでは使えない、
そしてコンシューマでも使えなくなった。
iPhoneやAndroidでもC++で開発可能です。(iPhoneはむしろObjective-Cが主流なのでC++は歓迎されるのでは)
MacではそもそもDirectXが動きません。
WindowsでC++を使ってOpenGLを利用するゲームを作れます。
コンシューマ機でC++を使えなくなったのではなくて、使わない場合もある、程度では?
土門 さんが書きました: マイコン?とか過去に栄えていても廃れたプログラム言語
マイコンは言語ではなく、小さいコンピュータという意味です。組み込み向けのコンピュータ。マイコンは全く廃れていませんよ?自動車には数百のマイコンが組み込まれていると聞きますし、冷蔵庫、洗濯機などにも入っています。マイコンはそう簡単には無くなりませんので、C++もしばらくは使われます。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: ゲームプログラミングにおいての今の主流

#4

投稿記事 by softya(ソフト屋) » 11年前

ゲームと言ってもスマホも有るのでC++だけとは限りません。
iPhoneならObjectiv-Cであり、AndroidならJavaとC++も有るでしょうし、両方で開発するならUnity3DでC#かjavascriptもあるでしょう。
ゲームエンジンであるUnity3Dもそうですが、アンリアルエンジンなども含めてLuaなど何年も前からC++以外の言語で組む場面は家庭用ゲーム機のゲーム開発において結構ある当たり前のことです。
ただ、ゲームエンジンやら本体はC++で開発されているので使われていないわけではありません。
あるいは、ゲームエンジンに頼っていなさそうな3DSなどはC++が無いと始まらないでしょう。
どちらにしてもC++を知っていて不利な事はありませんし、多数の言語を使えないゲームプログラマもありえないと思います。C++を使いこなせるならJavaやC#を使いこなせないはずが無いからです。
開発ツールはC#などが多いですし、この言語が出来ません。とか言ってられないです。

>が、どうやら今のコンシューマはC#を使っていると聞きました。
>ほんとかどうかはわかりませんがwiiUのゲームもそうだと。

それはunity3Dの話だと思います。
WiiUでも開発に使えますのです。

>もしそうならゲーム制作においてC++は必要性が無くなった言語となりますよね。
>だって、iPhoneやアンドロイドなどスマフォでは使えない、

上に書いたように前からC++だけで済んだことはないです。
すごくリサーチ不足じゃないでしょうか。

>(DirectXを利用するなら)macでも使えない、(openGLを利用するなら)windousでは使えない、
>そしてコンシューマでも使えなくなった。

DirectXが使えるのはWindowsとXboxでゲームを作るときだけです。
これはライブラリ/APIなのでC++である事と本質的に何の関係もないです。
OpenGLはPS3などで使われていますし、Windowsでも使えます。

>マイコン?とか過去に栄えていても廃れたプログラム言語ってありますが
>C++もそうなるのでしょうか?

マイコンは小さなコンピュータであり今も現役です。
クルマや家電のなかで活躍します。
マイコンの場合は、CやC++での開発は多いですけどね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

土門

Re: ゲームプログラミングにおいての今の主流

#5

投稿記事 by 土門 » 11年前

ありがとうございます。
皆さんの回答を読んでまず、
気になった(自分の認識不足せいか)ことがあるのですが
自分はC++(C含む)でゲーム制作レベルの画像処理を行う場合
なにかしらインターフェイスの力を借りなければならないという認識です。
それがDirectXなり、openGLだと。ここからもう誤解ですかね?
C++言語でゲームを作るほとんどの場合
DirectXかopenGLを利用しているということじゃないんでしょうか。

例えば、自分はDirectX(によるDXライブラリ)を利用してゲームを作っているわけですがDirectXはwin専用だということで、
制作ゲームのプラットフォームはwin一択(すみません、XBOXは省いてください)となってしまいますね。
「 (DirectXを利用するなら)macで使えない」、と妙な言い回しになったのは
ゲーム制作する上で使わざるを得ないはずのDirectXのおかげで
自分は汎用性の高いC++で作ったにも関わらず
そのゲームがwin一択になっていたことへの不満からですね。
ただ、ここで誤解があり、openGLはmacとwinの両方で利用出来るとは知りませんで、
mac上でゲームを作る場合はopenGLを利用するということで専用かと勘違いしてました。
(ただ、mac上で動くゲームをC++で開発する場合のインターフェイスはopenGL一択になるのですか?)

ここで思ったのですが、ということはopenGLを利用してC++でゲームを制作出来るスキルがあれば
Javaのごとく、macやwinと両方のプラットフォームでいけるゲームを作れる、ということでよろしいのでしょうか?

そう聞くと、なぜインターフェイスにわざわざDirectXを選ぶ人々がいたのか、疑問なんですが。
DirectX(DXライブラリを利用せず)をかじったことがありましたが、
描画ひとつでも非常に面倒でした(なのでDXライブラリの便利さは実感出来てます)。
一から頑張る状況とするならopenGLを覚えた方がメリットばかりじゃないか、と思うのですが。
それともその時代はXBOXがブイブイ言わせていて、そのXBOXで遊べるゲームが作れるってメリットがデカかったのでしょうか。
それともopenGLはDirectXよりさらに面倒な記述になるのでしょうか。

あと、間違いなく、
コンシューマゲームにおいてC++で作ったゲームが主流の時代は
ありましたよね?
DirectXがwin専用なら、それらのインターフェイスには
openGLが使われていた、ということで間違いないでしょうか。

>マイコン
これについてはすみません、認識不足というかほとんど知らないので。
(以前、DSでプチコンだかポケコン?というプログラムを打ってゲームが作れるソフトが出ていて
その時にネットで、懐かしい、よくゲーム作ってた、みたいな感想を見受けたので
廃れた古い言語かと思い込んでしまっていました)
ただ、C,C++が電化製品などで未だ重宝されているのは知っています。
だから今回はゲーム制作において、と限定しておりました。

>DirectXが使えるのはWindowsとXboxでゲームを作るときだけです。

そういうことですね、、、。
しかし、マイクロソフト戦略はまったく知りませんが、
XNAの開発はやめてしまいましたよね?Xboxoneというのが出るみたいで、
そこではXNAは使えないのかわかりませんがC#でXNAを利用してゲームを制作していた方々はどう思われたのでしょう。
いろんな言語を手広くやってれば、まあいっかですが、
そこに全力投球していた者はどれだけガッカリしたでしょう。
自分もなんだか今はそんな気分なんです。
C++でDirectXを利用してゲームを作っていたが、気がついたらwindousの形見が狭くなっており、
他のプラットフォームを意識するも、ソコ以外では機能出来ないAPIを利用していた自分がいた、と。
DirectXの存在価値が危ういのでは無いか、と自分は思いましたから。
そりゃ、別の言語に移れば?と思われるでしょうが、
DXライブラリを覚えたら他に行けないとか言う人を見かけるように
自分も大変便利なこのDXライブラリが利用出来る
DirectXでC++でゲームを作り続けたいと思っているのです。

…しかし、スマフォのおかげで今の若者はPC離れしてwinが廃れてってる感じがします。
(それを危惧してスマフォサイズのWindows Phoneなるものを販売してますがぜんぜん売れてないみたいです、、
売れりゃ良かったのに)

一生懸命覚えようとしているのに人口が減ってるプラットフォームでしか遊べない、
しかも淘汰されつつある言語だと気付かされる、、自分はどうすればいいだって感じなんです。

ずっとC++でゲーム開発を続けるとして、
●インターフェイスをopenGLにしてプラットフォームを広げる。
●C++とDirectXを取るなら…今後さらに形見が狭くなりそうなwinオンリーでそれと共に、沈んでいく運命を背負わなければならない。
この二択しかないってことですよね?

それか、すべてを捨ててC#に乗り換える選択。

自分が選んだ選択が間違っていたとまでは言いませんが
悲しい現実が待っていましたね。
汎用性、移植性も高いということでC++を選んだんですけど
インターフェイスにDirectXを選んでしまったことで
それらの長所が殺されて、、まあ自分が馬鹿だったんですけど。
メモリを直接叩けるって言われても、
そのメリットはいまいちピンと来ませんし、、

そうそう、「Unity」に関心が出たので調べてみると
なんともすごいプラットフォームの数。。。。
これこそ、昔のC,C++並の万能加減じゃないですか?
これを勉強すれば、なにもかも解決しそうですよね。
、、でもこんなイメージだったんですが、自分にとってC,C++は。

自分は開発環境はどうでもいいんです。
ただ作ったゲームが遊べる環境は多い方が良いに決まってます。
最近なんかはmacのBoot Campでwin環境も作れますよね?
だからプラットフォームがwin限定のゲームでも
それを遊ぶってのはmacでも容易になったとは思います。
そんな感じで、DirectX(DXライブラリ)で作ったゲームを、
iPhoneやらアンドロイド、コンシューマでも実行出来るようになる
時代がくれば良いのに。。。。。。切に願いますね。

自分はまだC++がお茶の子さいさいってわけでは無いです。
とりあえず、C++で何本もゲーム作り終えるくらいになれば
Unityとかラクに覚えられるようになってますかね?
でもUnityって使用言語にC#があるみたいですし、
だったら今からC#ヤレよって感じじゃないですか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: ゲームプログラミングにおいての今の主流

#6

投稿記事 by softya(ソフト屋) » 11年前

昔ほどC/C++で組んだものはハード依存が激しく、今みたいにPCでもPS3でもXbox360でも販売なんて簡単には出来ませんでした。
昔ならC/C++で幅広くなんて幻想だと思います。WinとMacなんて最初から互換性皆無でした。

>なにかしらインターフェイスの力を借りなければならないという認識です。
>それがDirectXなり、openGLだと。ここからもう誤解ですかね?

GCとかには特別なのがあったり無かったり。
つまりハードを直接制御するので無いのも有ります。

>C++言語でゲームを作るほとんどの場合
>DirectXかopenGLを利用しているということじゃないんでしょうか。

それは誤解かなぁ。なんらかのライブラリは使いますけど。
PS3やXboxからやっと統一化されてきた感じです。
携帯ゲーム機は、まだ途上ですね。

> ゲーム制作する上で使わざるを得ないはずのDirectXのおかげで
> 自分は汎用性の高いC++で作ったにも関わらず
> そのゲームがwin一択になっていたことへの不満からですね。

こんなのも有るんですよね。日本では余り知られてませんけど。
「Irrlicht Engine - Wikipedia」
http://ja.wikipedia.org/wiki/Irrlicht_Engine
「OGRE - Wikipedia」
http://ja.wikipedia.org/wiki/OGRE
こういうのを使えば、PCであればクロス開発できます。
DirectXやOpenGLを直接叩くより効率的です。
まぁ、DXライブラリみたないラッパーなんですけどね。

>そう聞くと、なぜインターフェイスにわざわざDirectXを選ぶ人々がいたのか、疑問なんですが。

OpenGLがゲーム用にもシフトしたのは最近で元々は画像処理、CGやCAD用なんです。
DirectXはゲーム用として最初から登場しています。
つまり、2000年ぐらいの時はDirectXしか選択肢は無かったのです。

>コンシューマゲームにおいてC++で作ったゲームが主流の時代はありましたよね?

PS2の時代ですかね。
今でもC++でゴリゴリ組んでいる所はあると思いますけど。

>自分も大変便利なこのDXライブラリが利用出来る
>DirectXでC++でゲームを作り続けたいと思っているのです。

それは、それで良いと思うんですけどね。
明日に無くなるとかじゃなく10年後もあり続けるわけですから。

> 一生懸命覚えようとしているのに人口が減ってるプラットフォームでしか遊べない、
> しかも淘汰されつつある言語だと気付かされる、、自分はどうすればいいだって感じなんです。

マイコン時代(この場合のマイコンはマイコンピュータ。一昔前のパソコン)のマイクロソフトBASICの時代の人も同じように思ったと思いますよ。
その頃に出てきた有名人とかだと、ドラクエの堀井雄二とか。
その頃よりはるかにマシですよ。
C++は相変わらず利用できます。Irrlicht Engineなどでクロス開発も可能です。

> そんな感じで、DirectX(DXライブラリ)で作ったゲームを、
> iPhoneやらアンドロイド、コンシューマでも実行出来るようになる
> 時代がくれば良いのに。。。。。。切に願いますね。

DXライブラリの作者さんは、そんな事目指していない気がしますね。
HSPは既にiPhoneにもAndroidにも対応しています。
無い物ねだりかなと思うんですが、少し冷静になられたほうがよいかもしれません。
時代は変わるので永遠はありません。これだけは間違いないです。

なんか話が言語とライブラリでぐっちゃになっているので分けて考えてほしかなと思うんですが。
iPhoneやAndroidで提供したいならUnityとC#を勉強すれば良いです。ほんとうにしたいことなのか?って所が問題です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ISLe
記事: 2650
登録日時: 14年前
連絡を取る:

Re: ゲームプログラミングにおいての今の主流

#7

投稿記事 by ISLe » 11年前

C/C++はライブラリ次第でどんなプラットフォームにも対応できるというものです。
同じライブラリをどのプラットフォームでも使えることを保証するものではありません。

土門さんが求めるのは、Javaの「一度書けばどこでも動く」という触れ込みと同じものですよね。
それも幻想ですが。

OpenGLはグラフィック周りだけなので、DirectXと単純に比較できないかと。
もはやDirectXというカテゴリがどこまで指すのか分かりませんが。

C/C++言語でSDLというライブラリを使って作ったソフトは、WindowsでもUbuntu(Linux)でも動きました。
たぶんMacでも動くと思います。

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 14年前
住所: 北海道札幌市
連絡を取る:

Re: ゲームプログラミングにおいての今の主流

#8

投稿記事 by Dixq (管理人) » 11年前

読んでて気になった点が一つ。
「インターフェイス」という言葉を使われていますが「グラフィックライブラリ」のことですよね。
インターフェイスとは何か両者の間に立って情報の仲介をする物のことを言います。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: ゲームプログラミングにおいての今の主流

#9

投稿記事 by softya(ソフト屋) » 11年前

Dixq (管理人) さんが書きました:読んでて気になった点が一つ。
「インターフェイス」という言葉を使われていますが「グラフィックライブラリ」のことですよね。
インターフェイスとは何か両者の間に立って情報の仲介をする物のことを言います。
たぶん、API(アプリケーション・プログラミング・インタフェース)の事を言われているんだと思います。


そう言えば最初の問いに答えてないですね。

> やっぱこれからの時代はPCゲームやコンシューマゲームを視野に入れても
> JavaやC#なんでしょうか?

ソレだけではないです。C++もjavascriptもActionScriptも必要に応じて使われます。
ケースバイケースで多用なプログラミング言語を使うマルチ言語の時代にだいぶ前から突入している感じです。
オンラインのゲームが多いのでサーバーサイドで動いてる言語も考慮しないとゲーム開発は成り立ちません。
つまり、サーバサイドjavaやらC#やら、C++で書いたサーバ、PHPやPerlやRuby、Pythonなど規模と開発の容易性、求められる性能で使い分けられているのが現状です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

土門

Re: ゲームプログラミングにおいての今の主流

#10

投稿記事 by 土門 » 11年前

usao さんが書きました:でも仮に他の言語をやることになったとしてもC,C++をやっていた経験というのは無駄ではないとは思いますよ
beatle さんが書きました:C++が使いこなせれば他の言語に移っても素晴らしいプログラマになれると思います
softya(ソフト屋) さんが書きました:多数の言語を使えないゲームプログラマもありえないと思います。C++を使いこなせるならJavaやC#を使いこなせないはずが無いからです。
私は本来プログラマに向いてないところを無理矢理頑張っているだけなので
将来いろんな言語出来ますみたいなところまで行けるわけも、行くつもりもありませんが
それでも必要性を感じC#やJavaをやることになった時に
自分がC++をシッカリ理解出来るようになってさえいれば、
恐れることはなにも無いということですよね。
ならば少しでもそうなるために今はC++でゲームを作りまくって
プログラミングを学んでいこうと思います。C++が好きですし。
softya(ソフト屋) さんが書きました:なんか話が言語とライブラリでぐっちゃになっているので分けて考えて
そうなんです、自分はまだその辺慣れてないので
言語とインターフェイスやライブラリとか、セットで考えてしまうんです。
ISLe さんが書きました:C/C++言語でSDLというライブラリを使って
調べましたが、いいですね!教えてくださり、ありがとうございます。
現段階で一番理想的なライブラリでした。
が、肝心なSDL_image、SDL_mixerなどの資料というか参考サイト、書籍等
がえらく不足というか、あまり無くて、、、海外サイトならあるのでしょうけども、、、
今の自分が独学で向かうにはちょと無謀に近いです。。
でもC++で経験を積めば、きっとそこも今より理解出来るようになると思いますので
その時、SDLを学んでみようと思います。
いずれはmacとwinくらいの垣根は超えるゲームを作りたいですから。


皆様ありがとうございました。非常に勉強になりました。
特にコンシューマゲーム開発について
詳しく解説してくださいましたsoftya(ソフト屋)さん、ありがとうございました。
よーし、がんばるぞー。

閉鎖

“C言語何でも質問掲示板” へ戻る