トップページgamedev
1001コメント319KB

推薦図書/必読書のためのスレッド in ゲ製作技術 4

レス数が1000を超えています。これ以上書き込みはできません。
0001名前は開発中のものです。2009/02/15(日) 16:17:17ID:1D3XRObN
推薦図書/必読書のためのスレッド in ゲ製作技術 3
http://pc11.2ch.net/test/read.cgi/gamedev/1206381315/

推薦図書/必読書のためのスレッド in ゲ製作技術2
http://pc11.2ch.net/test/read.cgi/gamedev/1136546780/

推薦図書/必読書のためのスレッド in ゲ製作技術
http://pc8.2ch.net/test/read.cgi/gamedev/1086023829/

■ゲーム製作に役立った本・雑誌
http://pc5.2ch.net/gamedev/kako/1005/10050/1005061185.html

推薦図書/必読書のためのスレッドinゲ製作技術まとめ
ttp://gamdev.org/w/?%5B%5B%BF%E4%C1%A6%BF%DE%BD%F1%2F%C9%AC%C6%C9%BD%F1%A4%CE%A4%BF%A4%E1%A4%CE%A5%B9%A5%EC%A5%C3%A5%C9in%A5%B2%C0%BD%BA%EE%B5%BB%BD%D1%5D%5D
0957名前は開発中のものです。2009/12/15(火) 10:02:55ID:1ixfJls6

0958名前は開発中のものです。2009/12/15(火) 11:13:30ID:XBnWrNLK
>>954
ゲームっつってもPCかコンシューマか携帯かアーケードかによって違うし
少なくともセーブデータや通信絡みなら、エラーあったんでハングってわけにはいかないかと
必須リソースに関してはゲーム中断でいいと思うけど、NULLアクセスで中断という手法は一般的ではないですとマジレス
0959名前は開発中のものです。2009/12/15(火) 11:25:16ID:c2b2dESz
読めなかったらディスクを入れてくださいのメッセージくらい出してもバチあたらん
0960名前は開発中のものです。2009/12/15(火) 13:13:04ID:0iTPeOfr
>>956
初期のコンシューマー機向けのCコンパイラのC++実装が酷かったら例外使う習慣が無くて、いまいちのゲームでの「致命的例外じゃない」ケースで例外安全が有効な例が思いつかないんですよね。
ご教授頂けるとうれしいです。

>>958
ごめん、コンシューマーって想定で話してました。
その辺りのケースはTRCやTCRの規定で、そもそもNULLアクセスで中断が許されてない上に、適切なメッセージを表示しなければいけないので、例外ってより通常処理のイメージでした。
0961名前は開発中のものです。2009/12/15(火) 23:35:52ID:a9hcntXk
>>960
コンシューマーで動作が止まるケースなんて
ハード的にどっか壊れてるかディスク抜いてるかのどっちかしかないだろ。
0962名前は開発中のものです。2009/12/15(火) 23:50:22ID:S+zubVRM
>>960
> いまいちのゲームでの「致命的例外じゃない」ケースで例外安全が有効な例が思いつかないんですよね。

あんたは、どんだけ素人プログラマなんだ・・。
エラーのかわりに例外を使って返したほうがシンプルに書ける文脈なんていくらでもあるだろうに。

エラーを呼び出し元に伝播しようと思ったら返し値としてどんどん返していかなければならない。とても汚くなる。

例えば次の関数を考えてみるといい。
x = f( g ( h ( i ( 1 ) ) ) ) ;

f,g,h,iは、エラーが発生したときに例外を投げる。もし、そういう仕様になっていないと返し値とは別にエラーコードを
例えば参照渡しした引数などから受け取って、都度エラーが発生していないかどうかを判定しなければならない。
そんなプログラム、俺なら書きたくないがね。
0963名前は開発中のものです。2009/12/16(水) 00:15:24ID:+zLdsz96
ゲームの場合は致命的だろうが致命的じゃなかろうが例外が出たら
ちょっとメッセージ出して強制終了でいいだろ
0964名前は開発中のものです。2009/12/16(水) 00:29:05ID:7OX9D9XJ
>>963
致命的ではない例外でなんで強制終了なんだ。
あんたは、C++の例外の基本すらわかってなさそうだな。
0965名前は開発中のものです。2009/12/16(水) 01:03:33ID:+zLdsz96
ゲームで例外投げるような異常が起きたらゲーム続行しないほうが無難でしょ
09669542009/12/16(水) 01:10:33ID:00Rr/E5M
>>962
ご返答ありがとうございます。
はい、例外に関しては完全に素人プログラマーなもので、具体的な例で説明していただけて助かります。

>エラーを呼び出し元に伝播しようと思ったら返し値としてどんどん返していかなければならない。とても汚くなる。
ゲームですと多いと30人以上のプログラマがプロジェクトに参加することがあります(一時的なヘルプを含めると、もっと多いかも)。
そのような人数の多いプロジェクトの場合、例外の伝播の管理はどのようにされているのでしょうか?
例えば、例に出されました
>x = f( g ( h ( i ( 1 ) ) ) ) ;
の f h h iとすべて別の人間が作っている場合です。

個人的には、書き方が汚くなっても、呼び出し元に伝播させずに関数内で完結してエラー処理をした方がバグも追いやすいような気がするのですが、こういうのは素人プログラマーの浅知恵なのでしょうか?
0967名前は開発中のものです。2009/12/16(水) 01:19:00ID:7OX9D9XJ
>>965
> ゲームで例外投げるような異常が起きたらゲーム続行しないほうが無難でしょ

例外を投げるのが異常とは限らない。あんたみたいなド素人は、他の人の教育に良くないから
わかってもないことに口出ししてくんなよ。
0968名前は開発中のものです。2009/12/16(水) 01:25:58ID:7OX9D9XJ
>>966
> そのような人数の多いプロジェクトの場合、例外の伝播の管理はどのようにされているのでしょうか?

それ、実は説明するのは簡単なことではない。独特のノウハウが必要。
Exceptional C++ / More Exceptional C++を読んだなら、あとは、Effective Javaあたりを読んでみて。

「呼び出し元に伝播させずに関数内で完結してエラー処理をした方がバグも追いやすい」についてだけど
関数内で完結できるなら、そもそも例外なんか投げない。関数内で完結できない処理っていくらでもあるでしょうに。
0969名前は開発中のものです。2009/12/16(水) 01:32:55ID:T1v+GWVr
>>967
具体的にはどんなケースだと異常ではないのに例外投げる?
0970名前は開発中のものです。2009/12/16(水) 01:36:51ID:7OX9D9XJ
>>969
JavaやC#を使ったことがないのか?
0971名前は開発中のものです。2009/12/16(水) 01:43:07ID:T1v+GWVr
>>970
昔C++で最近はスクリプト言語ばっかりだわ
どっちも個人開発だから例外あんま気にしなくてねえ
0972名前は開発中のものです。2009/12/16(水) 01:53:02ID:KiVcEMZV
相手にすんなよ
例外を通常フローに組み込むとかコイツこそ素人じゃねーか
0973名前は開発中のものです。2009/12/16(水) 01:57:42ID:7OX9D9XJ
>>972
ド素人は黙ってな。
0974名前は開発中のものです。2009/12/16(水) 01:57:59ID:T1v+GWVr
具体例あげてよ
09759542009/12/16(水) 02:10:29ID:00Rr/E5M
>>968
ありがとうございます。
後付で「多人数での開発」という条件を出すのは議論のルール違反だったのに、返答いただけて嬉しいです。

>Exceptional C++ / More Exceptional C++
は読んだこと無いので、注文しました。
まずは自分で簡潔するツール作成等で例外を使って、ノウハウを貯める所から始めてみようと思います。

なんかスレが荒れてしまって、すいません。
スレ違いですし、これで退散します。
0976名前は開発中のものです。2009/12/16(水) 05:06:11ID:qp4C1wMu
「DirectX9必携」は書店で買えないのか…(´・ω・`)
Amazonだとkonozamaになりそうだし、
公式サイト見ると直接注文も発送が遅れそうな気配。

>>961
PS2の型番とかハード周りでなくても結構あるような。
ドラクエ8とか結構問題になってたような。
主観だけどバンピートロットとかのアイレム製品、
VPやラジアータのトライエースの製品はフリーズ
多いイメージある。ゲームの面白さは別にして。
0977名前は開発中のものです。2009/12/16(水) 10:22:53ID:5pOZNWNR
終了するような異常じゃないのに例外を投げる事なんて一杯ある。
例をあげればboost::lexical_cast
0978名前は開発中のものです。2009/12/17(木) 18:18:08ID:reBxf2/y
ひらしょーは、どうせそのウチ破綻するんだから
不具合出たら即終了するコード書いてデバッグに使えって書いてたな。
製品版のバイナリもそういう仕様にするべきだとは言い切れないみたいに補足してたけど
0979名前は開発中のものです。2009/12/17(木) 19:30:32ID:RW6ODOFz
>978
だからC++例外は「不具合が出た」から出るとは限らないということさえわからないのか。
本当に馬鹿多いんだな、これスレは。
0980名前は開発中のものです。2009/12/17(木) 19:48:36ID:jgX634HJ
不具合じゃないならわざわざメモリ食う例外なんてとばさなくていいじゃん。
GOTO過敏症だっつーなら何もいわないが。
0981名前は開発中のものです。2009/12/17(木) 20:00:08ID:c0aJDbOu
いやいや不具合じゃなくても例外は便利。
STLもboostも不具合じゃない事で例外投げてる。
0982名前は開発中のものです。2009/12/17(木) 20:15:00ID:RW6ODOFz
>>980
ほんと、ド素人はもう書き込むなよ。初心者がド素人の妄言を本気にしたらどうすんだよ。
0983名前は開発中のものです。2009/12/17(木) 20:16:56ID:yBAbnJn6
この自称プロ様何とかしてくれ
0984名前は開発中のものです。2009/12/17(木) 20:19:03ID:RW6ODOFz
>>983
馬鹿はもう書き込むなよ。氏ねよ。
0985名前は開発中のものです。2009/12/17(木) 20:20:19ID:I303ZRLi
また面白いのが沸いてるな
ド素人って言うしか能がないんだろうな
0986名前は開発中のものです。2009/12/17(木) 20:20:34ID:M3M//yPv
糞スレ晒しあげ
0987名前は開発中のものです。2009/12/17(木) 20:23:25ID:XiETB13f
STLやboostの例外がゲームの中で出てきたら
止めちゃうほうがよくね
0988名前は開発中のものです。2009/12/17(木) 21:02:48ID:RW6ODOFz
>>987
まだこんな馬鹿がいたとは。ほんと、ゲーム板はレベル低いな。C++入門以下だ。
0989名前は開発中のものです。2009/12/17(木) 21:03:15ID:RW6ODOFz
>>985
湧いてんのはお前の頭だろ。
0990名前は開発中のものです。2009/12/17(木) 21:07:45ID:ycZWIi9d
0991名前は開発中のものです。2009/12/17(木) 21:08:15ID:oMspc2hJ
C++の例外安全性の一番の問題は統一されたガイドラインが無いことだと思う。

1:例外を投げることは一切禁止
2:復旧不可、もしくはプログラムを停止すべき場合のみ例外を投げることを許可
3:通常のフロー、シンタックスシュガーとして例外を投げることも許可
個人的には設計を複雑にしたくないし、「2」のルール辺りがギリギリ許容範囲だと思う。
あと「不具合が出たから例外を投げるとは限らない」という表現は誤解を与えてしまいそう。
0992名前は開発中のものです。2009/12/17(木) 21:08:28ID:ycZWIi9d
0993名前は開発中のものです。2009/12/17(木) 21:09:09ID:ycZWIi9d
0994名前は開発中のものです。2009/12/17(木) 21:11:04ID:ycZWIi9d
0995名前は開発中のものです。2009/12/17(木) 21:12:50ID:Hb1UiJxr
ふーん
0996名前は開発中のものです。2009/12/17(木) 21:13:56ID:Hb1UiJxr
スレ違いじゃボケ
0997名前は開発中のものです。2009/12/17(木) 21:14:44ID:0BAovbyi
wwww
0998名前は開発中のものです。2009/12/17(木) 21:15:25ID:0BAovbyi
ワロタ
0999名前は開発中のものです。2009/12/17(木) 21:16:52ID:0BAovbyi
プ
1000名前は開発中のものです。2009/12/17(木) 21:17:54ID:wtSOJ6E+
ゲラ
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。