トップページgamedev
173コメント50KB

★☆ ゲームプログラマのソースは読み辛い ☆★

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。02/04/16 18:27ID:NRtNJn8s
です。処理的に難しいことしてるから、とかではないよ念の為。
0002名前は開発中のものです。02/04/16 18:32ID:???
ソースよりもコメントの方が多い人もいるよ。
ちなみにPS2のコードはあちらこちらにハード依存コードがあって
読みにくい以前の問題。
0003名前は開発中のものです。02/04/16 19:14ID:???
ゲームプログラムは芸術作品なのです
高度な芸術は難解なのです
0004名前は開発中のものです。02/04/16 19:27ID:???
で何?>>1
000502/04/16 19:30ID:???
他人にも読みやすいソースを心がけるにはどうしたら良いのか
貴様等語れ、と言いたいのでは
0006名前は開発中のものです。02/04/16 19:43ID:???
ニーモニックですか?
0007名前は開発中のものです。02/04/16 20:31ID:???
・・・・・
0008名前は開発中のものです。02/04/16 20:49ID:???
>>1
まあね、ゲームプログラムはどうしても汚くなってしまう。
敵の動きとか条件分岐の塊だし、
本来データとして持つべきものを直接コーディングしているのが
汚くなる要因だよな。
0009名前は開発中のものです。 02/04/16 21:35ID:???
>>8
それは禁句だってさ。
>>1の考えてる事はよく分からん。
0010名前は開発中のものです。02/04/16 22:28ID:???
一種の高速化チューニングをしてる、その為の犠牲はしかたない、って意識があったりは?
実際その種の配慮が非常に必要となる部分もあるけど、実は不要な部分まで同様なノリで書いてしまっている、とか。
0011名前は開発中のものです。02/04/16 22:48ID:rMDs665g
ゲームプログラマの書いたソースは "すべて" 読み辛いのか
ゲームのソース "が" 読み辛いのか
まずは、そこんとこはっきりしてくれ。
0012名前は開発中のものです。02/04/16 22:54ID:???
>>10
ゲームに限らず、CPUやメモリが足りなかった時代のプログラマは
そういうけち臭いコードを書きたがる傾向があるね。
スピードやメモリサイズを気にしなくていい部分なのに、
下手なテクを披露してくれちゃったりすると、
却って見にくくなったり他との整合性が悪かったり・・・
0013名前は開発中のものです。02/04/16 22:56ID:???
>>1はVB
0014名前は開発中のものです。02/04/16 22:59ID:???
>>11
「ゲームプログラマの手によって書かれたソースは、一般的に読み辛いものが多い」でないの?
それがゲームプログラムという性質上、仕方がないからなのか、あるいはゲームプログラマが
「読みやすいソースを書くこと」に対する意識が低いからなのかは意見が分かれそうだけど
0015名前は開発中のものです。02/04/16 23:02ID:???
プロの書いたのを見てみたいなあ
0016名前は開発中のものです。02/04/16 23:05ID:???
アマチュアのはヒドいのが多い
コメントがまるでなしとか定数をそのままソース中に散乱させるとか
0017名前は開発中のものです。02/04/16 23:10ID:???
>>15
プロのってなかなか見られないんじゃあ・・・
0018名前は開発中のものです。02/04/16 23:20ID:???
と、ゆーか。
C(もしくはC++)で書いてるソースはあんま変わんねぇよ。
ファミコンのアセンブラソースは壮絶だけどな。
0019名前は開発中のものです。02/04/16 23:21ID:???
何と何が変わらないの?
アマチュアのなら変わらないというのなら分かるけど・・・
0020名前は開発中のものです。02/04/16 23:31ID:???
個人的には
ゲームプログラマ:読みやすいソースコードを書く
一般のプログラマ:とにかくコメントを書く
ってなイメージがあるけど。
0021名前は開発中のものです。02/04/16 23:56ID:???
漏れは
ゲームプログラマ:最適化に命を賭ける
一般のプログラマ:処理速度はあまり重視しない、読みやすいソースを心がける
というイメージだが、完全に想像だから多分実像とは違うんだろうなあ
0022名前は開発中のものです。02/04/16 23:59ID:???
モジュールを知らない人のコードは、
ゲームプログラマでなくても読みにくいです。
0023名前は開発中のものです。 02/04/17 00:24ID:???
>>21
でもそれは言えるかもしれんな。
リアルタイムで動く物が大多数だし。
0024へぼゲームぷろぐらま02/04/17 00:55ID:???
>>1
ぜひ具体的に教えてください。勉強します
0025名前は開発中のものです。02/04/17 01:29ID:Hh/Gvx6Q
>>1
例えば何よ?
意味不明さでは君も似たようなもの。
プログラマとしてのレベルも窺い知れる。
0026名前は開発中のものです。02/04/17 01:35ID:/PI8azi2
仕事かどうかで違うなあ
0027名前は開発中のものです。02/04/17 01:37ID:p7h3xqV6
最初は綺麗に書いていても、構造がまるっきり変わるような仕様変更の
嵐で結局DQNソースになります。
0028名前は開発中のものです。02/04/17 01:51ID:???
ソースの書き方が綺麗かどうかってのは、
プロアマ関係なくまたプログラミング技術とも別問題。

本人がコーディング作法に興味があるかどうかが重要だろー?
0029名前は開発中のものです。02/04/17 01:58ID:???
コメント多いソースって読みにくいよな
0030名前は開発中のものです。02/04/17 02:07ID:???
プログラマがDQNだというケースは置いといて、
マスター上がれば終わりのゲームプログラムと、保守も仕事に含まれる
ビジネスプログラマとでは美しさの目的が違うのではない?
見やすくてもタラタラ書いてるソースなんて、動いてもバグの内。
0031名前は開発中のものです。02/04/17 02:16ID:Hh/Gvx6Q
例えば、高速化で

{
float inv = 1.0f / 2.5f;

for (int i= 0; i< 10; i++) {
foo( a[i] * inv );
}
}

こういう書き方が駄目?常識だと思うけど
0032名前は開発中のものです。02/04/17 02:21ID:p7h3xqV6
インデント無いから駄目。
0033名前は開発中のものです。02/04/17 02:44ID:???
それって何から高速化してんの?
0034名前は開発中のものです。02/04/17 02:46ID:Hh/Gvx6Q
>>32
書き込むと取れるみたい。(タブ派だし)

>>33
float 割り算の回数を減らしてる。
0035名前は開発中のものです。02/04/17 02:50ID:???
それなら、
for(int i=0; i<10; i++) foo(a[i]*(1.0f/2.5f));
の方がイークナイ?float1個分メモリ削れるヨ。
割り算は最適化の時にあらかじめ割ってくれてるので問題ナシ
0036名前は開発中のものです。02/04/17 02:59ID:Hh/Gvx6Q
>>35
コンパイラに依存するコードは、良くないと思う。
そうやってもメモリは削れんしw
大概のコンパイラは、foo()がインライン関数だったりしたら、
最適化されないし。
0037名前は開発中のものです。02/04/17 03:03ID:???
最適化を期待するなら>>31ので十分。
最適化を期待しないなら
const float inv = 1.0 / 2.5;
float *cur = &a[0] , *end = &a[10];
do{ *cur *= inv; } while( ++cur != end );
ぐらいかな。(register とかつけるかも)
中途半端がいちばんカッコワリィと思うぞ。
00383502/04/17 03:11ID:???
怒られっぱなし。
最適化考える前に、あんなコード書こうとする俺は逝ってヨシですか?
0039名前は開発中のものです。02/04/17 03:15ID:Hh/Gvx6Q
それって、配列のアドレス計算の掛け算を回避(プラス終端判定)て事?
流石にそれはやってくれるでしょ。

ていうか、例として書いただけで、実際は配列なんか使わんし。
(Vector使うからコード的にはそれと同じ)
0040名前は開発中のものです。02/04/17 06:38ID:NDGDglUg
ところで、そこまでしないと本当にいけないの?
0041名前は開発中のものです。02/04/17 07:43ID:???
>>40
それは己で判断すればいいだけの話であって。
0042名前は開発中のものです。02/04/17 08:11ID:???
1はプロの作品見たこと無いな
ほんとに芸術品だぞ。
0043名前は開発中のものです。02/04/17 08:33ID:???
しなびた糞古いダメコンパイラを使わざるを得ないという
ショボーンな状況下で威力を発揮するテク満載のスレはここですか?

GPL恐怖症でgccが使用禁止とか
0044名前は開発中のものです。02/04/17 08:55ID:???
 過去の歴史を振り返るに、覇権を握るハード程ろくな開発環境を
提供してくれないジンクスが。儲けてるんだからコンパイラぐらい
自作して提供しる。
0045名前は開発中のものです。02/04/17 12:21ID:???
ところで、ゲーム機向けの、キャッシュの小さなCPUなんかだと
コードのコンパクトさが実行速度に影響する事も結構あるのかな?
例えば1バイトの差で頻繁な主RAMアクセスが発生してしまっていた、とか....
セットアソシアティブ方式のキャッシュに最適化したコード配置とか、する事はあるんでしょうか。無いか。
0046名前は開発中のものです。02/04/17 12:57ID:cHjhAfCs
ゲームのコードは保守・再利用する機会が少ないから
ガリガリとハードコーディングして作り捨てしちゃっても
特に不都合なかったってだけの話。

今後はそうはいかんでしょうよ。ネットゲーとか。
今そこで汚いコード書いてるヤツ、覚悟しとけよ。
0047名前は開発中のものです。02/04/17 15:24ID:???
ライブラリ部分はきれいに書くよ。
でもゲーム部分はぐちゃぐちゃ、設計段階で想定してない処理がしょっちゅう追加されるから。
0048名前は開発中のものです。02/04/17 23:49ID:???
そだな。ゲームの特に見える部分のプログラムは
「「とりあえず」動くもん見せてよ」攻撃がいろんな人からかけられるからな…(鬱
0049sage02/04/18 01:30ID:9kHN.ahQ
>>45
>セットアソシアティブ方式のキャッシュに最適化したコード配置とか、する事はあるんでしょうか。無いか。
あるよ。
インストラクション側はクリティカルなところは「全部乗せる」が
基本だし、パイプラインも絡むのでインライン展開する事が多いけど、
データ側は局所的に扱われるデータ系列数がウェイ数を超えていた場合は
配置で調整する(出来る)。

まぁ「無い事は無い」ってだけで、極一部であることも事実。
0050名前は開発中のものです。02/04/18 01:31ID:???
あいたたた、あげちゃったよ
0051名前は開発中のものです。 02/04/18 05:02ID:???
>>48
そしてそれをそのまんま使うはめになるんだわな。
「動く」から。

鬱。
0052名前は開発中のものです。02/04/18 05:54ID:???
自分は整理整頓する脳細胞が壊れてるらしいので、
ソースが読みにくい以前に、設計段階でぐちゃぐちゃですわ。
重要な定数も、BASIC時代ライクにそのまんま書いちゃうことなんて茶飯事。
インデントのつけ方は大抵、統一されてるけど、変数や関数の命名規則なんて
グチャグチャですよ。かといって、別に高速化を目指した結果でもないんだけどね。

ソース添削の結果、使われなくなった変数なんてそこら中に散在してるし、
呼び出されることのない関数もたくさんある。まぁ後者ならリンカが気利かして
除いてくれるのかな?

ちなみに、自分の場合、家の中もめちゃ汚いです。
もう床なんて見えないね。
0053名前は開発中のものです。02/04/18 07:12ID:???
>ライブラリ部分はきれいに書くよ。
>でもゲーム部分はぐちゃぐちゃ、設計段階で想定してない処理がしょっちゅう追加されるから。
あう〜
確かにライブラリ部分だとかミドルウェア部分ならそこそこ綺麗に
まとめられるのだが、ゲーム部分はグッチャグチャ。
すっきりとモジュール分割できるものは頭使わなくて楽でいいよ。
精神的にも清潔でいられるし〜
0054名前は開発中のものです。02/04/18 12:42ID:???
>>52
趣味で一人でプログラミング、ならそれでもいいような気もするがな
俺は保守で後々苦労するのが嫌だから自分なりに気を使っているけど
仕事でそんな感じだったら、同僚に文句言われたりしないの?
0055名前は開発中のものです。02/04/19 01:53ID:???
>>53
ゲーム部分の各タスクはそうなりがちだね。
各々依存関係が複雑になってカオス状態になるからね。
0056名前は開発中のものです。02/04/19 08:02ID:???
>各々依存関係が複雑になってカオス状態になるからね。
特にゲームプログラムの場合、他のソフトウェアとは違って
依存関係が妙に多いよー

例えばさ、10年前のSFC時代のRPG一つ見ても
分業が難しそうなプログラムだったりする。
0057名前は開発中のものです。02/04/19 08:30ID:???
>52
安心しろ。
簡潔に要点をまとめる能力ゼロでも、なんとかなるぞ。
0058名前は開発中のものです。02/04/20 04:12ID:XCIk0FgM
うちはソースめっちゃ読みやすいよ。
コメント書式も統一されてるし、クラス設計思想も徹底させてるし。
他人のソース見ても簡単に理解できる。
そうでなきゃ何人ものプログラマで作業できない。
システムでタスク単位の処理時間が出るからボトルネックがどこかすぐわかる。
処理にして1μsも無いようなとこ最適化しても意味無いよ。
いつまでも10年前のゲームプログラマのイメージ持たないで欲しい。
0059名前は開発中のものです。02/04/20 05:18ID:???
プログラマのソースの書き方、10人10色だね、普通。
コメント書式も変数命名ルールもクラス設計思想も全員バラバラ。
見た目も全員バラバラ。
0060名前は開発中のものです。02/04/20 11:30ID:???
>>58
すばらしいです!是非そういう会社で働きたい!会社名を教えてください!
え、今時どこの会社もそんな感じ?本当ですか?
0061名前は開発中のものです。02/04/21 06:46ID:4j.0wvZU
大手だけ
0062名前は開発中のものです。02/04/21 07:11ID:dDCMvgNY
>>58
ワンダースワンとかGBAとかをゲームと思ってない差別発言とみなします。
0063名前は開発中のものです。02/04/21 11:40ID:???
>>62
あちらはおいておいてほすぃ。
0064名前は開発中のものです。02/04/23 03:25ID:???
if(i==1)
{
  j=1;
}
else
{
  j=2;
}
0065名前は開発中のものです。02/04/23 08:48ID:???
>>37
んな中途半端はいかんといったろう!
const float fInv = 1.0f/2.5f;
a[0] *= fInv;
a[1] *= fInv;
a[2] *= fInv;
a[3] *= fInv;
a[4] *= fInv;
a[5] *= fInv;
a[6] *= fInv;
a[7] *= fInv;
a[8] *= fInv;
a[9] *= fInv;

ブランチはキャッシュミスのもと。
0066名前は開発中のものです。02/04/23 08:56ID:???
>65
最速目指すならこれだね、最近は。
アドバンスでも3〜4回の簡易なループ処理なら展開しとく。
0067名前は開発中のものです。02/04/23 15:38ID:8zPBRBi2
    _     ∧  _,,,、-一 、  }  _,,_
    〈    j |'´  / , -へ丶亅/,.‐'`、 、
     `、 ,.'´' ' / /   `i、レ  `丶亅|
     | .'´/ /, ' , '    , '       `i、ノ
     |,'〜丶,/ , '  , ' , ' ,'         \
    , ' ⌒ヽ / /  /  /  /    l l 、、、、 `、
   ,.' / l 1 ,'  ,'  '  '     ' '  ' ' ' '`.、
   |1/   !{  l  i   |  |     | |  | | | | | | `、
   |/\  l1 |  |  i1  |     .| |  | | | | | |  i、
   i、 _ノノ  | _,.-一'''~ ̄|`i    l l  i ii ii ii iii  |1|
    |`''ーイ  -''´`i !|`、| i    ノ一、 ','', ',''j   l !l
   ,| ,    ´  | ,|-';;0ヽ`i| {   /jノ ノ|ン、/ /j  ,j l|
    |!  | イイ{:;;iiiiii::;} `|  },ノ ,ノ;0`jノ / /,' , } l
   j l 1    リ、`'ー+'      {:iiii} iノイ lノ ノノ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   ,  l 1    |`、       ,   ̄ ,‐'´   l     < だきまくらにされるの、嫌なんですけど。
   | l 1 1  ` 、\      -     ノ   1  i      \____________
  /ノ l 1     '、 ` 、      _, .- '     | 人
/~ノ///     ノ\  ` ' ー 'i、_    __| ハ
, -'~    _...,,,.‐'´ \\         ̄'´ ̄ l`j丶、
   ,.‐'´       \\     ,.‐'´   //   i
  イ           `i`、         〃
0068名前は開発中のものです。02/04/23 22:46ID:???
言っちゃいけないこと言って良いかな・・・・
もしかしてゲーPGって



     コ ー デ ィ ン グ が 下 手 糞




なんじゃない? あ、ゴメソ。
0069名前は開発中のものです。02/04/23 23:28ID:???
いまさら何を言うとるのかねチミは。
0070名前は開発中のものです。02/04/24 00:36ID:???
>もしかしてゲーPGって
>コ ー デ ィ ン グ が 下 手 糞

一理あり。
アセンブラ時代がついこの間まであって、
今でもアセンブラ書かないといけない部分がある。
だから、お行儀のいいCのソースって書けない。
ご多分に漏れず、あたしは縦方向に整然としたソースを書くかな。
学生ソースから発展した御仁には理解できないかもしれないけど。
お武家は作法に拘るんだよね。
0071名前は開発中のものです。02/04/24 00:54ID:???
>>70
作法にこだわらないコードはクソです。
アセンブラだとかCだとか、言語以前の問題です。
0072名前は開発中のものです。02/04/24 02:00ID:???
>>71

for(i = 0 ; i < 32 ; i++)
{
printf("%d\n", i);
}



for ( i=0;i<32;i++ ) {
printf("%d\n",i);
}



for(i = 0 ; i < 32 ; i++) printf("%d\n", i);

どれが一番無作法?
0073名前は開発中のものです。02/04/24 02:03ID:???

上(72)の、インデントつかなかったのは、ご愛嬌ね。
インデントつけたとしての話で。
0074名前は開発中のものです。02/04/24 08:52ID:???
>>72
それは無作法とかの問題じゃないだろ・・・
0075名前は開発中のものです。02/04/25 01:00ID:???
int main() //メイン
{
for(;;) //ループ
return 1; //リターン
}

すいません、初心者なもので、ほんとごめんなさい・・・。
こんな感じでコメントすれば褒めていただけますかぁ?
朝っぱらから2ちゃんねるの見てる皆さんみたいに、
ばりばり仕事できるように頑張りますぅ。えへ。
0076名前は開発中のものです。02/04/25 02:14ID:???
つまらない。
もう少し頑張りましょう
0077名前は開発中のものです。02/04/30 02:25ID:cZ4aGl2c
>>72
最初のが一番いいかなあ。真ん中のは見にくいから嫌い、最後のはまあ許容範囲
0078 02/04/30 02:42ID:BWs4XuyY
>>72
プリントアウトしてデバグする人は2番目、3番目を使用する人も多い
他人の目や協調性を重視するなら臨機応変に
0079名前は開発中のものです。02/04/30 03:01ID:???
あ、見にくいってのはカンマの後にスペース入っていないのがね。
forの書式自体は漏れもこれかな、forとカッコの間にスペース入れないけど。

つーか、この辺まで来ると作法云々よりは完全に好みの問題なのかな。
0080名前は開発中のものです。02/04/30 08:10ID:???
for(i = 0; i < 32; i++)
  printf("%d\n", i);

ってのもあるにょ。
0081名前は開発中のものです。02/05/01 01:25ID:???
俺は
for (i= 0; i< 32; i++) {
printf( "%d \n", i );
}

こんな感じ。(ほぼ2番目タイプ)
{ごときで改行してたら、カナリ高解像度でもソース見渡せないし、
改行なしだと、ステップ実行し難い。
0082名前は開発中のものです。02/05/01 01:35ID:???
重箱の隅。
0083KD02/05/03 21:21ID:D4fiAOPg
この板の人は分かりきってるだろうが、結局は普通の開発と同じように
分かりやすくシンプルに設計すべきだね。ちゃんとオブジェクト指向の機能を使って。
0084結局02/05/03 21:30ID:???
>>1
は立て逃げ
0085名前は開発中のものです。02/05/04 01:37ID:???
>>83
処理対象、つまりは企画が分かりやすくシンプルなら、
そんな事は容易いのですが・・・ね
0086あぼーんNGNG
あぼーん
0087名前は開発中のものです。02/05/05 09:10ID:???
シンプルで分かりやすい企画って
企画通す段階とか、営業さんとか
メチャクチャ苦労しそうですね。

誰でも理解できる
-> 誰でも考えつく
-> 既に誰かがやってる可能性高し
-> シンプルさだけでは売れないよな
とかいう思考で。
0088名前は開発中のものです。02/05/08 11:15ID:???
んなこたーない。
0089名前は開発中のものです。02/09/08 22:43ID:PDC/9AEU
反証スレ

ゲームプログラマーの技術レベルは高い。
http://game.2ch.net/test/read.cgi/gamedev/1018670878/l50
0090名前は開発中のものです。02/09/08 22:50ID:???
神は細部に宿る。
0091名前は開発中のものです。02/09/16 03:20ID:???
The devil is in the details. -- old proverb
0092名前は開発中のものです。02/09/19 02:59ID:1d+0jVP5
ハンショーはだめだよぅ、おじゃんになるから。
0093名前は開発中のものです。02/09/19 03:08ID:???
個人的な意見だけど、DirectXのサンプルみたいにインデントにスペース使ってたり、
さらにインデントがみみっちいスペース2つとかだったりするとすごいイライラする。
0094名前は開発中のものです。02/09/19 03:33ID:???
GNU のコーディング規約はインデントがスペース2つ。
0095名前は開発中のものです。02/09/19 04:18ID:???
>>94
マジか!?なんてこった
0096名前は開発中のものです。02/09/19 08:57ID:???
インデント調整するツールぐらいもっとけよ
0097実用APIのプログラマー02/09/19 09:03ID:???
べつにさ、使いまわす以外のソースは読みにくくても、
いいんじゃないのか?
0098名前は開発中のものです。02/09/19 09:43ID:???
>>97
保守の必要が無ければね・・・
0099名前は開発中のものです。02/09/19 10:08ID:???
いいかげん、インデントにタブとスペースまぜて使うなよ
見づらくてたまらん
ま、整形ツールでなおすけど
0100名前は開発中のものです。02/09/19 10:30ID:???
ゲーム開発ってOOPL(C++?)でされてるんですか?
0101名前は開発中のものです。02/09/19 13:04ID:???
お勧めのインデント調整ツール教えてください
■ このスレッドは過去ログ倉庫に格納されています