ページ 11

C++とゲームプログラミングのどっちをとるか

Posted: 2013年7月19日(金) 20:20
by Lawliet
今私は「ローベルのC++入門講座」という本を使って「C++」を勉強しています。
この本はプログラミングの本としては2冊めで一冊目で「C言語」はとりあえず理解しています。

「ローベルのC++入門講座」という本はとてもページ数が多いです。
なので少し息抜き的にこのサイトの「新・ゲームプログラミングの館」をやってみようと思っていますが

「C++を勉強中にC言語のゲームプログラミングの勉強をする」ということについてどう思いますか?
別にいいと思いますか?
それとも知識がごちゃごちゃになってしまうと思いますか?

「ローベルのC++入門講座」は文字コードのあたりまでやっています。
C++の新要素としては参照渡しぐらいしかやっていません。

Re: C++とゲームプログラミングのどっちをとるか

Posted: 2013年7月19日(金) 20:33
by softya(ソフト屋)
新ゲームプログラミングの館であれば、C++の事も意識して書かれているので混乱はしないと思いますが、自分で今理解しているC++に書き換えながらってのも面白そうです。
C++の理解が進むほどに、コードが変わってくると思いますので平行でやって見ると良いかと。

C言語のコードをC++のコードに書き換えるためには、C言語、C++、プログラムコード自体の理解がセットになっていないと出来ませんので大変勉強になります。

【補足】
まぁ、ぶっちゃけ学校の勉強じゃないので好きにやって良いんですよ。
楽しめないと独学なんてうまく行きませんから。

Re: C++とゲームプログラミングのどっちをとるか

Posted: 2013年7月19日(金) 20:49
by Lawliet
そうですね。
やっぱり楽しむことはかなり大事なポイントですね
新ゲームプログラミングの館であれば、C++の事も意識して書かれているので混乱はしないと思いますが、自分で今理解しているC++に書き換えながらってのも面白そうです。
C++の理解が進むほどに、コードが変わってくると思いますので平行でやって見ると良いかと。
もしも、新ゲームプログラミングの館のようにC++について意識されていないような
Cのゲームプログラミングのサイトで勉強しようと思った時にCとC++がごちゃごちゃになってしまう
もしくは
自分ではわからないうちにCとC++がごちゃごちゃになってしまう

といったようなことを防ぐためにこういうことはやったほうがいい、意識した方がいいことはありますか?

Re: C++とゲームプログラミングのどっちをとるか

Posted: 2013年7月19日(金) 21:06
by softya(ソフト屋)
Lawliet さんが書きました: もしも、新ゲームプログラミングの館のようにC++について意識されていないような
Cのゲームプログラミングのサイトで勉強しようと思った時にCとC++がごちゃごちゃになってしまう
もしくは
自分ではわからないうちにCとC++がごちゃごちゃになってしまう

といったようなことを防ぐためにこういうことはやったほうがいい、意識した方がいいことはありますか?
それは難しい質問ですね。
C++的なのはオブジェクト指向ですから、そこを意識できると言うことはオブジェクト指向をある程度理解していないといけないわけです。
と言うことで意識するためにはオブジェクト指向を知らないと難しいです。
※ オブジェクト指向を知るということとC++の文法を知るのは実は別の知識です。混同されていると思いますが、別個に勉強することも可能です。

「オブジェクト指向」
http://www.aerith.net/design/object-j.html

Re: C++とゲームプログラミングのどっちをとるか

Posted: 2013年7月19日(金) 21:40
by Lawliet
オブジェクト指向ですか・・・
見慣れていないJAVAや用語なとでなんとなく難しいというイメージが強く敬遠気味だったのですがやはり避けていくのは無理ですね。
使いこなせたらその分見返りも大きいでしょうし。

突然ですが私は学生です。私だけかもしれませんが、長期的なスタンスで物事に取り組むことができません。
例えば「3DMMORPGなら〇年は覚悟しなければいけない」と言われても覚悟出来ません。
私の場合だと1年というのはとても大きいものです。学年が一つ上がり、クラスも変わったり、進学で学校が変わったりもします。
そのために〇年なんてものは果てしないもののように感じます。
大変失礼なことを申します。すみません。
しかし大人は何十年間も人生を経験させており、一年というものが比較的軽い印象を私は受けております。
なので先ほどのとうり「3DMMORPGなら〇年は覚悟しなければいけない」と言われたとしても比較的覚悟できるのではないかと勝手に思っています。
大変失礼なことを申し上げ、すみませんでした。

大きめなゲーム制作を短いスタンスで考えるのはとても無理のあることだとわかってはいますがどうしてもそう考えたいです。

なので効率よく勉強するには「C++、 ゲームプログラミング、 オブジェクト指向」のなかで
どのような順番でやっていくと良いでしょうか?

Re: C++とゲームプログラミングのどっちをとるか

Posted: 2013年7月19日(金) 21:48
by softya(ソフト屋)
学生時代には何年後なんて考えていませんでしたよ。
と言うより、目標はMMORPG!とか大層な目標なんて掲げたこともありません。
その時その時でやりたい事、面白そうなことを積み重ねたに過ぎません。
効率のよい方法? なんて無いのではないとかと思います。
例えば、C++をちゃんと使うにはオブジェクト指向を切っても切り離せない物なので別々になどと考えられないですが、とりあえずC++の文法を覚えて、そこを足がかりにオブジェクト指向を理解していった(未だに道半分ぐらいで一生続きそうの予感)って感じです。本当に何年も掛かるので、ゲームを作りながら悪戦苦闘して自分なりに身につけるしか無いと思います。
効率よくなんて考えないほうが良いと言うのが私の意見です。

Re: C++とゲームプログラミングのどっちをとるか

Posted: 2013年7月19日(金) 21:59
by Lawliet
そうですね。
やっぱり効率のことについて考えるよりも目先のプログラムを良くしていくことを考えたほうがいいですね。

~だから、・・だからというのにとらわれず興味を持ったり面白そうなことからやっていこうと思います。

いろいろ変な質問や失礼なことも言ってしまいましたが
最後まで答えていただきありがとうございました。

Re: C++とゲームプログラミングのどっちをとるか

Posted: 2013年7月19日(金) 22:24
by softya(ソフト屋)
Lawliet さんが書きました:そうですね。
やっぱり効率のことについて考えるよりも目先のプログラムを良くしていくことを考えたほうがいいですね。

~だから、・・だからというのにとらわれず興味を持ったり面白そうなことからやっていこうと思います。

いろいろ変な質問や失礼なことも言ってしまいましたが
最後まで答えていただきありがとうございました。
ちょっと矛盾してそうなこ事も書いたので補足しておきます。
オブジェクト指向とC++は別に勉強できると書きましたが、オブジェクト指向を実践できる様になるためにはプログラミング言語でのオブジェクト指向を色々と試す期間が必要です。
つまり、最終的には切り離せないのです。あとオブジェクト指向設計とオブジェクト指向プログラミングは別だとか色々とあります。これもやらないと実感出来ません。

あと例えばMMORPGを作ることにおいてC++やオブジェクト指向は必須ではありません。C言語で十分に可能です。
C++とオブジェクト指向をすると何が良いかというと、ちゃんと使いこなせば大規模プログラミングで柔軟でバグが少なくメンテナンス性の高いプログラムが組める可能性があると言うことです。
あくまで可能性であって、使いこなせないとかテクニックに走ると逆に効率が悪くなるシロモノです。
結局、今自分がやりたい、必要だと思うことをやって行き詰まったらここで聞いてください。
とにかく、楽しんでくださいって事ですね。

【付記】
プログラミング言語で何かを作る上げるのは、ものすごい労力を必要とします。
特に初期は、その労力が半端ないです。

参考に管理人(Dixq)さんの自作ゲーム紹介を上げておきますが、かなり時間がかかっているものがあるのが分かると思います。
「C言語 自作ゲーム紹介・ダウンロード」
http://dixq.net/sakuhin.html
つまり、好きでもこのぐらい精力を傾けないとゲームは作れないのです。

なので、「3DMMORPGなら〇年は覚悟しなければいけない」と言う言葉が出てくるのですね。
片手間に成し遂げるには時間が掛かり過ぎるのです。

Re: C++とゲームプログラミングのどっちをとるか

Posted: 2013年7月20日(土) 13:59
by softya(ソフト屋)
【付記の付記】
ついでにここを読む人のために例え話をしたいと思います。
ゲームを作る=家を建てるだと考えてみてください。
そうすると言語は何に当たるかというと、ノコギリやカンナなどの道具に当たります。
じゃあ、家を建てるには他に何が必要でしょうか?
構想 = ゲームデザインですね。
レイアウトやら家のモデル作成 = これもゲームデザインですね。
家の設計図・図面を描くだと、プログラムの設計段階で書かれるオブジェクト指向設計だとUMLなどでしょうか。
ここで使うテクニックとしてはプログラミングだと構造化設計やら、オブジェクト指向設計などの手法がありますね。
設計図が出来たらする仕事は、実際に家を組み上げる事ですね。
材料=画像や音などなどを用意して、家を現場で組んでいきます。
この時、現場での技術はアルゴリズムとかオブジェクト指向プログラミングなどが該当すると思います。

何を言いたいかというと言語で何を使うかは、ノコギリやカンナをどうしようかと言っているのに近いごく一部分の話になると言うことです。
新しくて色んなことが出来る道具であるC++(だか使いこなしが難しい)と古いけど仕様がシンプルなC言語を使うのかって話だけをしていると、そんなにC++にしたからって最初から効率が上がるわけは無いですし逆に当面の間はゲームの開発において効率が下がる可能性の方が高いわけです。
つまり、C++を選ぶということは数年という長い目でみた時に効率を上げる事を選択すると言っても過言ではないと思うわけです。

それと言語以外に学ぶことは多いので、C++だとそれを増やすことになりかねません。ゲームに取り掛かるのが更に遅れる事を意味する訳です。そういう意味でもC++を選ぶのは短期的に見ると非効率化を起こす可能性が高い選択だと言えると思います。

C++を止めてC言語にしろと言っているのではなく、選択の意味を考えて欲しいという話でした。
以上長くなりましたが、参考になれば幸いです。

Re: C++とゲームプログラミングのどっちをとるか

Posted: 2013年7月20日(土) 15:41
by ISLe
わたしは小学生の頃からゲームプログラミングをしていますから学生さんのたいへんさは分かるかもしれません。

「3DMMORPGなら〇年は覚悟しなければいけない」といった例えは一日に4時間くらいはプログラミングに費やせることを前提にしているので、学生さんならさらに3倍はかかると思ったほうが良いでしょう。
一日8時間プログラミングに費やせば単純に半分にはなりませんが、大幅に短縮できると思います。

Re: C++とゲームプログラミングのどっちをとるか

Posted: 2013年7月20日(土) 17:07
by ISLe
ところで、ヒットアンドブローのプログラムの改良はしないのでしょうか。
トピックが放置されたままですけど。
ヒットアンドブローのプログラム

Re: C++とゲームプログラミングのどっちをとるか

Posted: 2013年7月20日(土) 21:37
by Lawliet
ヒットアンドブローのプログラムではトピックスと立てた直後定期テストのテスト期間になってしまいそのまま放置してしまいました。

もう正直興味が別の方向(C++)に行ってしまっています
それでもやはり改良した方がいいですか?

Re: C++とゲームプログラミングのどっちをとるか

Posted: 2013年7月20日(土) 21:44
by softya(ソフト屋)
改めてC++で挑戦されては? あっちのトピックはC++で再挑戦しますと言うことで解決すれば良い気がします。
ただし、C++で挑戦するならクラスにまとめただけではダメですよ。

しかし、未完成かも?なプログラムを途中で放置するのは少し不安な要素ではありますね。
今後どんどん増えて行かないと良いのですが。 → プログラムを完成できない症候群のことです。

Re: C++とゲームプログラミングのどっちをとるか

Posted: 2013年7月20日(土) 21:55
by Lawliet
やはり経験者様たちからするとあのプログラムでは未完成なのでしょうか?

個人的にすれば「覆歴」の機能は未実装の予定でしたので
投稿する前にはとりあえずは完成しているつもりで
さらに投稿直前位は
覆歴機能も追加しましたのでもう十分な感があったのですが・・・

Re: C++とゲームプログラミングのどっちをとるか

Posted: 2013年7月20日(土) 22:06
by softya(ソフト屋)
少なくともbeatleさんやusaoさんの指摘部分はC++で組むなら改善されているべきですね。
今回の場合は、どちらかと言うとリファクタリング(ソースコードの内部構造の整理)に属する問題ですが、これを気にしない人のプログラムは読み辛いです。
機能の問題ではなくて、綺麗な構造のプログラムを書くという事は、実務で良いオブジェクト指向の使い方でコードを組む事に通じる物があると私は思います。

Re: C++とゲームプログラミングのどっちをとるか

Posted: 2013年7月20日(土) 22:33
by Lawliet
確かに参考書に乗っていたりするプログラムは変数名だけで何をするのかわかるものがたくさんありますからね。

意識していきたいと思います

良かったら参考までに皆様がコードを綺麗に書くために意識している点などを教えていただけないでしょうか?
例えば関数の名前の付け方のルールみたいなものでお願いしたいです。

「それは自分で見つけていくこと」と言われてしまえば何も言えませんが、
それでもベースがあるのと無いのではやはり違うと根拠もなく思っているので教えて欲しいです。お願いします。

Re: C++とゲームプログラミングのどっちをとるか

Posted: 2013年7月20日(土) 22:39
by softya(ソフト屋)
過去ログで何回か出ているの読んでみてください。
「コーディング規約」とか「リファクタリング」とか「可読性」とか「命名規則」で検索出来ます。
同じ事を何度も書かなくて済むための検索システムのですので、検索システムがページ下部に常に表示される様に成っています。
その上でわからない要件をまとめて質問してもらえますか?

Re: C++とゲームプログラミングのどっちをとるか

Posted: 2013年7月20日(土) 22:53
by Lawliet
こんなにたくさんの過去ログがあったのですね。
すみません。検索スペースに全く気づいていなかったもので・・・

ありがとうございます。