激論!2Dゲームvs ..
[2ch|▼Menu]
219:自己完結野郎
02/01/10 12:41 I3PmJHfM
>だから効率の問題なんだって。
ベースライブラリがしっかりしていれば、かなりの割合を異機種間で共有できる
C,C++と機種間で大幅に違いのあるアセンブラはレベルが違う、といいたかった。
CとC++でそこまで違いはないねぇ。
まぁ、内からこそ嬉しいんだけど。

220:名前は開発中のものです。
02/01/10 12:52
>アセンブラオンリーで複数の機種の移植なんて面倒でやりたくないでしょ?(昔は
>やってたんだろうけどね)
いや、アセンブラオンリーは理論的に可能なだけであって、
今時の市販ソフトでは「現実的に不可能」

に対して、C言語ならば「現実的に可能」

が、とりあえず共通黙認かと。

221:自己完結野郎
02/01/10 13:17 I3PmJHfM
アセンブラオヤジはものすごい勢いでプログラムかけるんじゃなかったっけ?

222:名前は開発中のものです。
02/01/10 15:13 6CvzrGIr
>>221
Cで1行で済むものを、物凄い勢いで10行かかれてもねぇ…

223:名前は開発中のものです。
02/01/10 15:24
ただ貶す相手が欲しかったんだ。
一時でもいいから、惨めな自分を忘れていたかったから。

224:名前は開発中のものです。
02/01/10 18:00
>>222
ただのアホにしか見えんよな(w
まぁ、腱鞘炎には気を付けて、とだけ注意してあげよう。

225:名前は開発中のものです。
02/01/10 20:45
しかしおれら3D厨房もシェーダーはアセンブラだけど
どうなのよ。将来的にはCになるからいいのか。

226:名前は開発中のものです。
02/01/10 21:44 9A2ATft5
>>225
C++使ってても、インラインアセンブラは使うよ。
それと同じじゃねーの。ようは適材適所。

227:名前は開発中のものです。
02/01/10 22:49 rzSa1OdO
最適化されたコンパイラよりも速いアセンブラが書けるとお思いですか?
オホホホホホホ

228:名前は開発中のものです。
02/01/10 23:02 DXI9/Yxc
書けるよ。
出力コード読んだことある?
ヒープホール最適化しようが、インライン展開しようが、手書きにはかなわんぜ。
ただ、実行速度が速くても、コーディング速度で大笑いだがな。

229:名前は開発中のものです。
02/01/10 23:04 9A2ATft5
>>227
書ける。

・SIMDとかの並列演算命令を使用する場合
最適化ベクトルコンパイラでもかなり限定した範囲でしか使ってくれないからね。

・コンパイラには予測できない情報を持っている場合。
例えば、defaultのないswitchとか。

230:名前は開発中のものです。
02/01/10 23:09
227はネタですので

231:C++8年、アセンブラ1年
02/01/10 23:09
>>227
最適化というのは「より最適」にすることであり、
「絶対的に最適」にするものではないと思う。

232:名前は開発中のものです。
02/01/10 23:10 9A2ATft5
>>228
キャッシュヒット率や分岐予測率、
アウトオブオーダー実行やフォワーディング、ペアリングを考慮した
インストラクションのパイプライン配置とか
最近のプロセッサは死ねるけどな。

しかもCPUのアーキテクチャが変われば、逆に遅くなることも。
Cで書いときゃ常に最適に近い性能が出せるのにね。

233:名前は開発中のものです。
02/01/10 23:29
(int)float_number を多用されるとIA32では効いてきそう…
おのれμソフト。

234:名前は開発中のものです。
02/01/10 23:40
最適化の最適っつうコトバも曖昧なもんだな

235:79
02/01/10 23:51 9A2ATft5
>>233
GameProgrammingGems2に興味深い記事があったよ。

(int)fは60サイクル使うけど、
IEEEの特徴を使ったトリックを使えば5サイクル程度でできるってよ。

typedef union{
 int i;
 float f;
}INTORFLOAT;

INTORFLOAT n;
INTORFLOAT bias;
bias.i = (23 + 127) << 23;

n.f = 123.456f; // 変換する浮動小数点値
n.f += bias.f;
n.i -= bias.i;

バイアスは固定だから、実質、
・浮動少数点加算
・浮動小数点レジスタから整数レジスタに転送
・整数減算
でできるってことみたい。

236:233
02/01/10 23:58
あ、その手よく使う(汗
あと0-1への正規化とか、floatから直にテーブルルックアップとか。
ゲームだと結構効いてくるよね。

237:79
02/01/11 00:03 Lt9LHkle
>>236
をを、自分で発見されたんですか。
俺はその記事みて目がうろこでした。

238:233
02/01/11 00:04
実は大学時代に助教授に教わった(w

239:233
02/01/11 00:12
うーむ。悩んでたんだけどやっぱセットで買っときます>GPG
いま注文してきたっす。

240:名前は開発中のものです。
02/01/11 00:23
C++はCの便利なプリプロセッサ程度にしか捉えてないです。
所詮、++って感じで、その名のとおりです。

241:名前は開発中のものです。
02/01/11 00:28
最近、ソース公開されたQuakeが事実上、
C言語+アセンブラで記述されているよ。

242:名前は開発中のものです。
02/01/11 00:48
>>241

最近公開されたのはQuake2のほうかな。
>>174にもその関連の話が出てたけど、あそこはQuake3以降は
どういうスタイルになってるんやろうね。美しいクラスライブラリ群を
見てみたい。ハァハァ

243:fastmath
02/01/11 00:56 MXkB9lH7
URLリンク(developer.nvidia.com)

知らない人がいたら一度。

244:名前は開発中のものです。
02/01/11 01:01
告解します。
漏れはQuake(元祖のほう)のソースが公開された時に乞食のように
ソースを舐めまわしたし、業務の中でも影響を受けた例は少なくありません。
上品な言い方に留めていますが、つまりはデザインをパク・・

他の人達はどうだろうか。
カミングアウトしてみないか。

245:名前は開発中のものです。
02/01/11 01:03
>>240
OOPはやらんって事?

246:名前は開発中のものです。
02/01/11 01:22
んー、OOPはやってるけど〜、なくてもなんとかなったな、って
結果ばかり見てきたもので。なんていうのかな、アセンブラからCへ
移行した時のような生産性の向上っていうのが感じられなかった。

247:Cおやじ
02/01/11 01:30
Quake2のソースも生Cだったってことで。
あれ?ところで、C++信者なガキども、どこいった?出てこいや、こら。



※って、仕事ではC++使ってるけどさ。便利なC言語程度にしか
理解できてないし、それで何にも困っとらんのよ。それじゃ駄目?
リストラ対象?

248:名前は開発中のものです。
02/01/11 02:09
やはりこの後はおやじ(エサ)に食い付くという展開になるのか。

249:名前は開発中のものです。
02/01/11 02:31
C++信者な餓鬼は、カーマックによって潰されましたとさ。
匿名で煽ることすらできないインポ野郎どもに少しは同情しちゃうわー

250:名前は開発中のものです。
02/01/11 02:40
みんな釣りが目的か。
248のエサで入れ食い状態になるということなのか。
そうするとやはり穴場ということなのか。

251:名前は開発中のものです。
02/01/11 02:52
まぁ、最近C++つかえる程度でいい気になってる新人が多いんで
正直むかついてはいる。
糞みたいなコード管理するこっちの身にもなれよってことだな。
無理してクラスなんぞ使わずとも構造体で十分だろが。ガキめ。

252:名前は開発中のものです。
02/01/11 02:54
オヤジ達はバグも沢山出すし仕事も遅く質も低い。

253:名前は開発中のものです。
02/01/11 03:03 Lt9LHkle
>>251
理解できないコードは糞ですか…新人が可哀想だ(w

クラスってのは無理して使うんではなく、便利だから使うんだよ。

254:釣堀主人
02/01/11 03:03
エサまきすぎっとよぉ、ハラァいっぺぇーになって
寄ってこなくなっからよぉー、きぃつけぇなぁー。

255:名前は開発中のものです。
02/01/11 03:57
カーマックに踏み潰されたC++オタ・ウジムシが、今度は
「エサまき」ということにしたがっているらしい。

まぁ、ウジムシは餌にもならんわな。

256:251
02/01/11 04:34
>>253
理解できないわけじゃない。
必要ないから勉強する価値もないってだけのこと。
まぁ、その気になれば3日もあれば十分だしな。

逆に、C++ガキ共にはまともなアセンブラコード組めるのかって聞きたいよ(爆

257:スーパー名無しさん
02/01/11 04:41
>>251
最近
struct Enemy{
int m_x,m_y;
Enemy( void )
{
 m_x = 0;
 m_y = 0;
]

move( int x , int y )
 {
 m_x += x;
 m_y += y;
 }
} enemy;
とかやってますが何か?

構造体でもこんな表記しか出来ない体になってしまいました

258:名前は開発中のものです。
02/01/11 04:55
コンシューマハードでSTL&stringを使うとどんな怖い事が
待ち受けているか知らないプログラマは多いね。ふう。

259:名前は開発中のものです。
02/01/11 05:19
カーマックは、次回作(DOOM III)ではC++を採用するつもりだって公言していたよ。
ただし、描画ドライバについてはC言語ベースを維持するんだとか。

ディープなハックが必要な部分はやっぱCだけど、他の部分は、
もうさすがにC++でもいいや、って考え方らしい。

ちなみに、彼は、QuakeのレベルエディタはObjective-Cで書いてたよ。

260:名前は開発中のものです。
02/01/11 07:49
>>259
ガーン!!そんなもんかい。

261:233
02/01/11 08:43
アホくさい。技術屋だったら両刀にしときないさいな。

>>243
サンクス。やっぱ自前のルーチンよりきれい…鬱じゃ

262:名前は開発中のものです。
02/01/11 09:11
確かに....
相手にすべき人種じゃないよな。お互い。

263:名前は開発中のものです。
02/01/11 09:21
>>251 みごとオヤジが釣れたか?と思ったらメアド欄・・・ワロタ

264:名前は開発中のものです。
02/01/11 09:42
>>166
それ、フィギアヲタでは?
普通、二次元ヲタはポリゴンなんぞに萌えんよ。
セル シューダー ハ マダマダ ハッテントジョウ ダシ・・・

265:名前は開発中のものです。
02/01/11 11:48 noXepMWo
>>257
そうゆう中途半端な構造体を見ると、キレイなクラスに直したくて
ウズウズしちゃう… 私はそんな体になっちゃいました。

class Enemy
{
public:
 Enemy(void);
 virtual ~Enemy(void);
 void Move(const int& x, const int& y);
 const int& GetX(void) const;
 const int& GetY(void) const;

private:
 int m_x;
 int m_y;
};

Enemy::Enemy(void)
 : m_x(0),
  m_y(0)
{
}

Enemy::~Enemy(void)
{
}

Enemy::Move(const int& x, const int& y)
{
 m_x += x;
 m_y += y;
}

const int& Enemy::GetX(void) const
{
 return m_x;
}

const int& Enemy::GetY(void) const
{
 return m_y;
}

266:名前は開発中のものです。
02/01/11 11:57
正直 inline のこともあるし、余りにお教科書通りってのもちと…

267:名前は開発中のものです。
02/01/11 11:59
>Enemy(void);
>virtual ~Enemy(void);

・・・void?

268:名前は開発中のものです。
02/01/11 12:27
というかとりあえず、Objective-Cはすばらしい。と言いたい。

269:名前は開発中のものです。
02/01/11 12:51
継承はあまり使ってない。使っていたらとしても1回継承して
終わり。じゃないと、構造が見えなくなってねぇ。
で、俺みたいなのはC++厨房なんだろ?
でもさ、最近、オープンされているいろいろなソース見るけどさ、
継承しまくって有効活用しているソースなんて見たことないのよ。

270:名前は開発中のものです。
02/01/11 13:03
>そうゆう中途半端な構造体を見ると、キレイなクラスに直したくて
>ウズウズしちゃう… 私はそんな体になっちゃいました。
出たよ、ニセ潔癖症厨房が。
なんで、Enemy仮想クラスからの派生を作らんよ?

271:名前は開発中のものです。
02/01/11 13:21
ゲーム屋なら生成子は可能な限り軽く、実際の generate は後から、
じゃねーの? 何故みんなそっちを突っ込まん?

272:名前は開発中のものです。
02/01/11 15:01 noXepMWo
>>270
っていうか、コレがベースクラスで、
こっから各敵クラスが派生されるんだけど。

273:名前は開発中のものです。
02/01/11 15:27
>const int& GetX(void) const;

・・・参照型?

274:名前は開発中のものです。
02/01/11 16:41
>>272
潔癖症なら純粋仮想化しろってことじゃない?

275:名前は開発中のものです。
02/01/11 16:50
> Enemy(void);
Cなら引数なしの関数はHoge(void)にせにゃならんが、
C++は必要ないよん。Hoge()を推奨。

276:名前は開発中のものです。
02/01/11 18:04
>>255

ウジムシ(サシ)も立派な釣りエサだよ。

277:名前は開発中のものです。
02/01/11 19:21
おいおい、継承だとか仮想関数だとか言い出すと
オヤジ達が付いてこれてねーよ。
273は大丈夫か?

278:名前は開発中のものです。
02/01/11 21:25
>オヤジ達が付いてこれてねーよ。

  ∧∧
 (..、)    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  |  |)〜 <  チガウモン・・・
  U U      \___________

279:名前は開発中のものです。
02/01/11 21:53 Lcgyf5ht
>>277
273をイジメルな!

280:名前は開発中のものです。
02/01/11 22:49 Vwcmcf2w
>>258
ものすごく興味がある。是非聞かせてくれ。

281:名前は開発中のものです。
02/01/11 22:50
>>280
258をイジメルな!(藁

282:名前は開発中のものです。
02/01/11 22:57
実行効率を最適化したいならアセンブラ、
最速を諦めるなら開発効率のいいC++でいいとおもうょ。
Cはどちらもそれなりで半端モノ。ヘタすりゃ実行効率でC++に負けたりするし。

283:名前は開発中のものです。
02/01/11 23:10
…C,C++はコンパイル結果が予測しやすく、アセンブラとの
相性がいい処理系つーだけで。。。

>ヘタすりゃ実行効率でC++に負けたりするし。

のは単に理解が足りないだけじゃないのか?
こーゆー事を理解せずに完全なブラックボックスとして言語つかう
奴は何使ったって一緒。

284:273
02/01/11 23:43
つかさ、おかしいって思ったのおれだけか?

>void Move(const int& x, const int& y);
ここんとこ。
素直に
void Move(const int x, const int y);
のほうが速いだろ?
(sizeof(int)がレジスタのサイズと一致してる場合)

上司に「こっちほうがキレイだろー」とかいわれて参照型に
直されたら、はげしくおちこみますけど。

285:名前は開発中のものです。
02/01/11 23:44
アセンブラは気合入れて書かないと早くなんないからなぁ。
マターリアセンブラで書いてたら、Cの最適化のほうが早くてあせったときがあったよ(ムカーシ)。

286:名前は開発中のものです。
02/01/12 00:01
>>284
そだねぇ。その参照は無駄だね。
inlineだったら、参照の方が最適化かかりやすいんだけど。

287:282
02/01/12 00:06
>>283
「ヘタすりゃ」≒「理解が足りなきゃ」、でよろしいか?
逆に、Cでどんなアセンブリか理解しながらかけるなら
C++でもおんなじことはできるしなぁ。

288:名前は開発中のものです。
02/01/12 00:22
教科書どおりにコンストラクタに詰め込む奴とか、それをループ
の中で宣言する奴とか痛いよね。確かに言語は関係ないかも。

289:名前は開発中のものです。
02/01/12 01:31
       ∧_∧
      (´Д` ;;),′''´
――― ⊂ )*∴――>>288
      / /  /ヽ``
     (_(__)

290:名前は開発中のものです。
02/01/12 01:38
>>273
>const int& GetX(void) const;
ここって書いてたじゃん。
単に参照型を返すのに疑問感じてると思ったのに。

291:名前は開発中のものです。
02/01/12 03:11
>教科書どおりにコンストラクタに詰め込む奴とか、それをループ
>の中で宣言する奴とか痛いよね。確かに言語は関係ないかも。
あとデストラクタも。どっちかっていうと、ゲームの場合、終了処理の方が
重要だったり。

292:名前は開発中のものです。
02/01/12 06:21
つーか、C++のメリットはなにか?っていう質問に対して
純粋仮想関数だと清潔だの、参照型だのっていうつまらない
答えしか返せないのだろうか?C++信者って。
痛い、痛すぎるぞ!何が?って、C++厨房な俺でも、ツッコメルような
内容しか挙げられてないのが痛い!

293:namespace だけでも嬉しい
02/01/12 10:10
そーゆー質問だったの? ただの駄弁りと思って参加してましたが(藁

てーかメリットもクソも、ごみコードに埋もれないためのセーフティ
に決まってるような気が・・・少なくとも自分の領域だけは守れる、と。
メリットを感じない人ってプチプロジェクトしかやったことないの?

294:名前は開発中のものです。
02/01/12 10:21
>>292
わかるんだったら291にツッコミ入れて。

295:273
02/01/12 10:50
>290
うん。intを参照型で返すのもどうか?と思うけど。
よくみたら、引数のとこも参照型じゃん。
こっちのほうがもっとおかしいなっと思って。

296:名前は開発中のものです。
02/01/12 11:00
隔離スレなのに。さらに隔離スレが必要とは・・

297:名前は開発中のものです。
02/01/12 13:21
ワラタ そういえばここ何のスレだっけか

298:名前は開発中のものです。
02/01/12 14:16 yCvEWiif
>>295
C++知らない人発見。

299:273
02/01/12 14:53
>298
うわまじ?大恥?スレ違いなのはわかってるけど、
const int& GetX(void) const;
これの理由をすまん!おしえてくれ!!

300:273
02/01/12 15:05
すんません。自己解決。はー恥かいちゃった。

301:名前は開発中のものです。
02/01/12 15:42 7u6OTazs
ま、2Dのヘタレは、Click&Createでも使ってなさい、ってこった。

302:名前は開発中のものです。
02/01/12 19:16 HH/fh3KR
>>299
クラスのメンバー変数を返す関数は参照にするのが普通だよ。
すでにメモリにあるものをわざわざ複製して返す意味がないでしょ?

303:名前は開発中のものです。
02/01/12 20:17
>>302
…場合に依るだろ?

304:名前は開発中のものです。
02/01/12 20:58
>>303
C++知らない人発見。

305:名前は開発中のものです。
02/01/12 21:02
まあ、あれだ、

この板、カキコ自体をゲーム感覚で楽しんでる奴らばっかりだろ。

306:名前は開発中のものです。
02/01/12 21:54
>>304
アセンブリレベル知らない人発見。

307:age
02/01/13 01:59
>>303-306
上げ足取り厨ハケーン

308:名前は開発中のものです。
02/01/13 02:37
 参照も変数返しもコンパイラの最適化かかったら
何の違いも無いよ。というかそれ以前にintとint*なんか返す
時になんの違いも無いしね。

だとしたら、可読性の高い変数返しの方がコーディングとして
は正解。

 ま、キャッシングやレジスタ効率まで考えてるんだったら話
は別だろーけどね。

309:名前は開発中のものです。
02/01/13 03:00
実際問題、どのくらい最適化かかるのか、とターゲットマシンの
特性にもよると思う。MIPSで引数4つ以上の関数書きまくる奴なん
かもうアホか馬鹿かと…
てわけで場合による、は正解じゃないか?

310:名前は開発中のものです。
02/01/13 03:35 im9lWsOv
      ∧■∧  おーっとそのスレ!
   非  ━━ m  2chじゃぁー2番目だ!!
  . _|||_ (ー゚  )(っjj    
  ( ||| とl <V> ノ
  .)(|||)(. |___l___|
  (___)(__)_)
★早川 健★
全てにおいて2ch一の男。そして2ch一の水差し魔

311:名前は開発中のものです。
02/01/13 03:48
あえて言うのならば
>const int& GetX(void) const;
この記述はメンバ変数(もしくはグロバル変数)しか返せない訳だから
取得時の値がメンバに保持されている値である事を明示的に出来る訳だね。
まぁ、そんな事を明示的にする必要は全然無いわけだが、
const int& GetX(void) const{ return X; }
int& GetX(void) { count++;return X; }
時によってはこうゆう宣言をして、代入された回数をカウントする
事はあるかな?

しかし、2DゲームとC++の関連性がよーわからんな。つまり、古い技術に
固執する事への嘲笑な訳?

 オレもC++習得時にはなんでもクラス化してたけど、今はデータクラスと
ゲームオブジェクトとイベント管理をクラス/テンプレートで設計して後は
Cで設計してるよ。C++信仰に陥ると構造化言語のいいところが見えなくなる
のが欠点だね。
 同じく、3D信仰に陥ると2Dの良いところが見えなくなるもんさ。程々が一番だね。

312:名前は開発中のものです。
02/01/13 04:06
3D信者っているかぁ?
それも仮想敵??

313:名前は開発中のものです。
02/01/13 04:08
intの参照返すとprotectedの領域にも読み書き
出来て便利でしょ。

314:名前は開発中のものです。
02/01/13 04:15
>>313
それを禁止する為にわざわざインタフェースメンバー用意してん
じゃないのん?読み書きの必要があるなら>>311の方法かpublic
で公開してしまうが吉。

315:名前は開発中のものです。
02/01/13 04:16
>313
それって駄目駄目じゃん。

316:名前は開発中のものです。
02/01/13 04:20
つか、GetXってメンバなんだから「Xの値を取得する」という
目的に特化すべきだわな。だとすれば参照返しはアウトだね。

317:名前は開発中のものです。
02/01/13 04:34
>>312

あるいは君のことなのかもしれない。

318:名前は開発中のものです。
02/01/13 04:43
■の連中は?

319:名前は開発中のものです。
02/01/13 05:14
>MIPSで引数4つ以上の関数書きまくる奴なん
>かもうアホか馬鹿かと…
確かにクリティカルな場所だと5つ以上は痛いけど、
知ってて敢えて引数をづらづら並べてしまうことならあるよ。
引数専用の構造体を定義するのも面倒な場合ってやっぱりあるし。

320:名前は開発中のものです。
02/01/13 06:12
3Dについていけない人たちが携帯機に逃げたなどという意見を
時々目にするけれど(それはあまりに酷い言い草だと思う)、
どうせあと2、3年もすれば(いや、下手すると1、2年で)、
最後の楽園は失われるんだろうな。

321:名前は開発中のものです。
02/01/13 06:33
>>320
近頃は転載元を明かさずにコピペするのが流行ってるのか?
なんか粘着っぽいぞ。

URLリンク(www.geocities.co.jp)

322:名前は開発中のものです。
02/01/13 08:04 BOtYrdYX
242 :スペースNo.な-74 :02/01/09 01:05
上手い絵は人に感動、萌え、尊敬などを与える。
普通の絵は人になんも感じさせない。
ヘタな絵は人に寒さ、吐き気、痛み、苦笑いを与える。


243 :スペースNo.な-74 :02/01/09 04:56
寒さ、吐き気、痛み、苦笑いを与えるのは合わない絵もそうだよな
恐怖マンガ大嫌いな奴がそう言う絵見たらそうなるし
下手だなーと思っても、微笑ましいのもあるし。
とか書いてみるテスト


244 :スペースNo.な-74 :02/01/12 01:18
そういえばたまに、目が極端に大きいキャラを、
気持ち悪いと言う人がいるね。

あと漏れ的には、米人の書くキャラは、
非常に不気味に思えるキャラが多い。
特に洋ゲー。


246 :スペースNo.な-74 :02/01/12 02:01
アメリカ人はあの絵でハァハァしてるので
許してやってください。

323:名前は開発中のものです。
02/01/13 08:08 BOtYrdYX
> それ、フィギアヲタでは?
> 普通、二次元ヲタはポリゴンなんぞに萌えんよ。

324:名前は開発中のものです。
02/01/13 10:41 q8fBykB+
>>316
const付いてんだけど…

325:名前は開発中のものです。
02/01/13 11:48
>>324
同じだろ?

326:名前は開発中のものです。
02/01/13 15:27 GVnNIJNs
>>325
この場合constがついても値書き換えられるんですか?

327:名前は開発中のものです。
02/01/13 16:13
>>325

const referenceなら、参照先を書き換えるようなードを書いても
コンパイル時にエラーが出るので、問題はないのでは。ダメ?

328:名前は開発中のものです。
02/01/13 17:08
>>325
釣りしてるの?

329:名前は開発中のものです。
02/01/13 18:11 xI5bVNxm
ま、こういうことが論理的に可能ですな。実際にはやらないけど。

#include <iostream>
using namespace std;

class Test
{
private:
    int n;
public:
    Test(){ n = 0; }
    const int& getN() const { return n; }
};

int main()
{
    Test test;
    const_cast<int&>(test.getN()) = 5;
    cout << test.getN() << endl;
    
    return 0;
}

330:名前は開発中のものです。
02/01/13 18:17
>>329
俺たまにソレやっちゃう。(ワラ

331:名前は開発中のものです。
02/01/13 18:30
>>330
絶対やらないんですけど。

332:名前は開発中のものです。
02/01/13 18:54
>>330みたいなのがいるのでこの場合の参照返しは禁止

333:名前は開発中のものです。
02/01/13 19:18
>>330はテンプレートを使わなくて良い(使わせるわけにはいかない)に一票。

334:名前は開発中のものです。
02/01/13 19:39
>>328
何をこわがっているのだろう?

335:名前は開発中のものです。
02/01/13 19:41
(・∀・)コワイイ!!

336:名前は開発中のものです。
02/01/13 20:26
・・・わかってるとは思うが、const_castをそういう目的で使うなYO!

337:名前は開発中のものです。
02/01/13 21:03
>>332
メモリに直接アクセスすればクラスのプライベート変数を
変更することなど容易にできる。参照返し禁止したって
何も変わらん。

338:名前は開発中のものです。
02/01/13 21:10
アフォか。。。

339:名前は開発中のものです。
02/01/13 21:12
>>337
管理もろくにできないならそんなアクセス使わなくて良い。
危険PGのいい例だね。

340:名前は開発中のものです。
02/01/13 21:14
337みたいな奴は一生Cでグローバル変数まみれで遊んでロ、って
感じだな。

341:337
02/01/13 22:07 kF8A0y6A
おお、釣れた釣れた!(・∀・)

342:名前は開発中のものです。
02/01/13 22:09
わざわざAGEちゃってカッコわる(w

343:釣堀主人
02/01/13 22:11
あ、持って帰っちゃだめだよぉー!
お持ち帰りは一匹二千円だからねー。

344:名前は開発中のものです。
02/01/13 22:15
た、タケェ。。。

345:名前は開発中のものです。
02/01/13 23:11
ヲチしてる人、この板荒らすのはやめれw
煽りに反応してるのが住民かも怪しいもんだ

346:名前は開発中のものです。
02/01/14 00:28
どこでオチしてるんだ?

347:名前は開発中のものです。
02/01/14 01:18
>>346
サイレントマジョリティというやつですな。

348:名前は開発中のものです。
02/01/14 05:10
アニメな2Dよりリアルな3Dのキャラ使ってる
ゲームの方が売れていると思うけどみんなどっちが好き?
ゲーム機の進化的には3Dのキャラでゲーム作らないと
ダメな環境になってきてるけど実は2Dキャラでゲーム
作りたいんだよぉっていう3D開発者とかいそう。
でも2Dだと100万本以上とかは無理そうだけど。

349:名前は開発中のものです。
02/01/14 05:41 7B6UZ5Sp
   <               ヽ
  ∠ハハハハハハハ_      ゝ
   /          ∠_     |    348さんってさぁ・・・
  /           ∠_    |
  |  ̄\  / ̄ ̄ ̄  /      |    なんかそこら辺の連中と
.  |__   ____  | |⌒l. |    匂い違いますよね・・・・・・
  | ̄o /   ̄ ̄o/  | l⌒| . |
   |. ̄/     ̄ ̄    | |〇|  |    厨房というか
.   | /            |,|_ノ   |    ドキュソっていうか・・・
.   /__, -ヽ        ||     |    もっとはっきり言うと・・・
.   ヽ――一    /\   |\
    /ヽ ≡       /   \_|  \ バカの匂いがするっていうか・・・・・・
   / ヽ      /      |   |ー―
   /   ヽ    /        |    | ̄ ̄
      /ヽ_,/        /|     |

350:名前は開発中のものです。
02/01/14 08:45
>>348
そんなアナタの為のトゥーンレンダリング。

351:名前は開発中のものです。
02/01/14 13:41
348は2D、3D言い出す以前に、これ以上ないぐらいに、
終わっていると思うが・・・

352:名前は開発中のものです。
02/01/14 15:07
348はいまどき珍しい可愛いゲーハー厨だな。

353:名前は開発中のものです。
02/01/14 15:32
ときメモのトゥーンで萌える奴はいるのか?

354:名前は開発中のものです。
02/01/14 20:06 Jlum854X
>>353
全員同じ顔に見えるのは俺がオヤジだからか?

355:名前は開発中のものです。
02/01/14 21:33
>>354
全員同じ顔だからです。

356:354
02/01/14 22:51
>>355
やっぱりそうなんだね。良かった(ホッ

357:名前は開発中のものです。
02/01/15 03:08
>>近頃は転載元を明かさずにコピペするのが流行ってるのか?
>>なんか粘着っぽいぞ。
>>URLリンク(www.geocities.co.jp)
ジオのページって、無条件にジオに著作権が帰属するんですよー
転載元もクソもないかもです。
匿名性の高いHPサービスはイッテヨシ。

358:名前は開発中のものです。
02/01/15 03:30
>337みたいな奴は一生Cでグローバル変数まみれで遊んでロ、って
>感じだな。
グローバル変数まみれで作れるならいーんじゃん?結構便利だよ、グローバル変数。
ソース中、一個所にまとめて記述するなどの小さな工夫は必要だけど。

359:名前は開発中のものです。
02/01/15 03:44
>>358
そして、いろんなところから変数書き換えられて、デバッグで氏ぬ。と。

360:名前は開発中のものです。
02/01/15 03:56
>そして、いろんなところから変数書き換えられて、デバッグで氏ぬ。
それで死ぬような頭の弱さだったら素直に、クラスこしらえて
変数R/Wメソッドを作成して・・・いわゆる産業的設計をすべきだね。
流れをきちんと把握できてる頭のいいヤツのソースは
そこかしこ、グローバルなりstatic宣言でサクっと、手速く済ませている。

361:名前は開発中のものです。
02/01/15 04:22
まぁあれだ。

本質的には品質管理の問題なのであって
その原因が「全て」言語仕様にあると考える奴がいるとすれば・・・・

いないだろ?な。

362:名前は開発中のものです。
02/01/15 09:16
妄想ヤメレ

。。。って言って通じる奴は本職だろうな。

363:名前は開発中のものです。
02/01/15 17:58

無職ですが、それが何か?
 

364:名前は開発中のものです。
02/01/16 00:41
 プロのゲームプログラマならゲームは「オブジェクト」で「構造化」さ
れたアプリケーションだって知ってるはずだからねぇ。C++はデータ/キャラ
管理には向くけど、ゲームを組み立てるのには向いてない。

365:名前は開発中のものです。
02/01/16 01:14
・・何度かゲームをオブジェクト指向的に構築してみようと試みたが、なかなか成功しない。いまいち綺麗に書けない。C的になってしまふ・・・

366:名前は開発中のものです。
02/01/16 01:16
Cの上位互換なんだからゲームを組み立てるのに
向いているんじゃないか?
それともCの方が速度的に速いからってなのか?
これからは速度より開発効率だと思うが。

367:名前は開発中のものです。
02/01/16 04:48
>>366
えっとね。ゲームの処理ってのは大雑把に3つに分けられると思ってる。

1、データ管理(グラフイックとかマップデータとかスクリプトetc)
2、キャラクタ管理(自立型スプライトみたいなのね)
3、ゲームシーケンス(タイトルからエンディングまでのゲームの流れ)

この中で1,2は確実にオブジェクト指向向きだけど、3のような部分は
ゲームの構造を構築する訳だから、構造化言語、つまりC的な組み方が向い
ている(言語仕様の話じゃなくて)。つーのが、オレの今のところの結論。

スレッドがからんでくるともーちょっと話は変わるけどね。

こーゆー大事なところって2Dでも3Dでもかわんねーんだけどね。

368:名前は開発中のものです。
02/01/16 08:00
>>367
3、はスクリプトで処理すべきだろ。

369:名前は開発中のものです。
02/01/16 08:19
3.をOOでやってる方の意見キボンヌ。
擬似タスク(つーかStateか)で状態遷移してるけど
その部分、どうも汚くなる。

370:名前は開発中のものです。
02/01/16 08:21
ごめん。こっちでやってるところでした。見てなかった
スレリンク(gamedev板)

371:名前は開発中のものです。
02/01/16 08:32
367の言ってる「ゲームシーケンス」と
368の言ってるそれは少し違うような気がする。

372:名前は開発中のものです。
02/01/16 22:16
オブジェクト指向的にはStateパターンを使うべきなんだろうなぁ・・・

373:名前は開発中のものです。
02/01/16 22:58
>>368
エロゲーじゃあるまいし・・・。
ACTやSLG、RPGなゲームならスクリプトは1の部類。
仮にスクリプトだとしてもOO寄りな仕様じゃなくて構造化言語よりだしょ?

374:名前は開発中のものです。
02/03/03 23:12
2次元まんせー

375:名前は開発中のものです。
02/03/04 00:16
確かに格ゲーは、人体モデルさえ表示してしまえば完成だからね。
コリジョンだって、その処理量は3世代前ぐらいのCPUで
できるものだし(実際、してたし)


376:名前は開発中のものです。
02/03/04 00:56
2Dと3Dってどっちが売上いいんだよ?
やっぱり今後は3D化していって2Dが沙汰されるんか?
それとも2Dでも売れるからと3D廃止するメーカーが出るとか。

377:名前は開発中のものです。
02/03/04 02:08
>>375
3世代前って、いったいどの程度の物なんです?。


378:名前は開発中のものです。
02/03/04 03:14
>3世代前って、いったいどの程度の物なんです?
例えばVF4の格ゲーのコリジョン判定のみの処理程度であれば、
FPUさえ積んでれば10MHz相当のチップでお釣が来る、
と瞬時に判断できなければプロとして失格。


379:名前は開発中のものです。
02/03/04 11:23
なんかプログラマーの溜まり場になってきたな。モデリングしてるだけの
オレッチはついてけないや


380:名前は開発中のものです。
02/03/05 13:04
おもしろさに2Dも3Dもないだろ

381:377
02/03/09 20:25
Z80(10Mz) + FPU で十分お釣りが来るんですか…
少し勉強不足だったみたいです。
プロに成られる為には、色々知っていないと駄目なんですね。


382:名前は開発中のものです。
02/03/09 22:26
なぜZ80・・・?


383:名前は開発中のものです。
02/03/13 22:59
>>378
( ´D`)ノ<先生!その計算はどっからきたのれすか?
( ´D`)ノ<職人の勘ってやつですか?
( ´D`)ノ<それともただの経験談ですか?

384:名前は開発中のものです。
02/03/21 19:21
え?3世代前ってZ80じゃ無いのか?
聞いても答えてくれないから、
今のが(64Bit)→(32bit)→(16bit)→(8bit) = z80 って思ったんだけど。

まあ、ネタだけどね。
ネタニマジレスカコワルイ

385:名前は開発中のものです。
02/03/24 03:02
10MHzでもいいけど最低でもFPUは欲しいな。

386:384
02/03/25 04:05
>>385

>>378
>FPUさえ積んでれば10MHz相当のチップでお釣が来る、
って書いてあると思いま〜す。

とりあえずデータが8bitなので、
マトリクスの計算だけでも大変そうですよね。
内積も外積も、8bitレジスターを通して渡すんだし。
どーするんだろー。

とか悩んでました。

って、俺って粘着してる。
宇津だ氏脳


387:名前は開発中のものです。
02/04/15 01:31 ManN.RtI
2Dのシューティングとかを最近のスプライトを持ってないコンシューマに移植した際、
(まぁ移植の仕方によるんだろうけど)レンダリングフレームが絶対に入るから
操作感がおかしいって知人の(ベテランゲーム)プログラマが言うんだけど、どう?

自分ではそんなに気にした事はなかったんだけど・・・
なんでもコリジョンとってる時と表示されてる絵がズレてるからおかしいって。
うーん、詳しく知りたい

388:名前は開発中のものです。
02/04/15 02:07
>>387
それはスプライトオヤジなので放置してよし。
タイムライン描いてみれば、スプライトだろうがフレームバッファだろうが
入力から出力までの時間差にはなんら関係ないのが分かるはず。
PS1なんかは1フレーム遅れで並列処理してたからその問題あったけどね。

389:名前は開発中のものです。
02/04/15 02:25
>>388
だよね。
一瞬、垂直帰線期間中にスプライトを移動させているのかとも思ったけど、
それじゃあ描画がずれるし、結局V-Blank期間にレジスタの内容を書きかえるわけだから、
スプライトレジスタに書きこもうが、バックバッファにレンダリングしようが、
入力タイミングも表示が更新されるタイミングも一緒。

一時期、その手の話しが良く聞かれたのはPS1のハードウェア特性からだったんだね。

390:名前は開発中のものです。
02/04/15 04:18
>>388,389
いや、そうでもないよ。
V-Blank抜けた直後に入力を保持し、各処理をした後、描画変更までを
次のV-Blank突入前までにレジスタに設定すれば、その結果は
次のフレームにはユーザーには反映してたのです。(ラスター式ハードで)
が、PS1以降の場合、次のフレームでは裏画面に描画をしているだけで、
実際にユーザーの目に結果が反映するのは明後日のフレームなのです。

一応、明日のフレームまでに間に合わせる方法があるにはあるのですが
PS1時代はちと厳しいです

391:390
02/04/15 04:22
つまり、ラスター時代では、1Frame遅れで反映できたのに、
今の時代は最低2Frame遅れてしまうということです。

>レンダリングフレームが絶対に入るから
おそらくそれが、裏画面へのレンダリングフレームのことだと思いますよ
ただ、390のところで書いてある「明日までに間に合わせる方法」が
PS2以降では比較的、現実的です。

392:名無しさんWBS
02/04/15 05:15
■フレームバッファ機
 垂直表示期間 入力・ゲーム処理進行・バックバッファ描画
 垂直帰線期間 バッファ切り替え
 垂直表示期間 ここで反映

■ハードウェアスプライト機
 垂直表示期間 入力・ゲーム処理進行
 垂直帰線期間 スプライト/スクロールレジスタ更新
 垂直表示期間 ここで反映

なのでどっちでも同じでわ。
PS1の1フレーム遅延はCPUとGPUのパイプライン動作によるもので、
これはフレームバッファ方式それ自体の問題ではないっしょ。

>PS2以降では比較的、現実的です。

現実的というか、そうするのが普通ちゃうん?(知らんけど)
Zバッファ機ではPS1のような並列アーキテクチャは無意味だもの。

393:名前は開発中のものです。
02/04/15 05:58
>■フレームバッファ機
>垂直表示期間 入力・ゲーム処理進行・バックバッファ描画
>垂直帰線期間 バッファ切り替え
>垂直表示期間 ここで反映

これって、ゲーム処理進行処理している間はバックバッファ描画は
お休みしているってこと?コンシューマ機では普通、そんなことしないよ。
(いや、分かっててすることあるけどさ)

>PS1の1フレーム遅延はCPUとGPUのパイプライン動作によるもので、
>これはフレームバッファ方式それ自体の問題ではないっしょ。
それいったら、ラスター式も、CPUとVDPのパイプライン動作だよ。
PS1でも遅延なし描画はできるんだけど、それだとフレームバッファ式の
ポテンシャルがまるで発揮できず、数世代前の古いゲームすら実現が
現実的でないから、「できない」という断定に近い結論が出ているのだと
思われ

394:名前は開発中のものです。
02/04/15 08:12
スプライトオヤジの理想のゲームは売れない。

395:名前は開発中のものです。
02/04/15 13:51
脳内に住む架空人物(スプライトオヤジ)をみんなに紹介しないと
盛り上がるものも盛り上がらないじゃん、

というわけで394の気配りに涙が止まらない。

396:名前は開発中のものです。
02/04/15 14:41
>>393
>コンシューマ機では普通、そんなことしないよ。

だからそれは、PS1という1つのハードが
1フレーム遅れの並列処理かませるという解法を用いているだけでしょ。
OTへの登録がすべて終わるまで描画開始できないのだから仕方ない。

Zバッファなら遅延かます必要なんかどこにもないのは分かる?

397:387
02/04/15 23:03 ManN.RtI
お答えありがとうございます。
なるほど、興味深く拝見しました、確かにPS1の事で出てきた話です。
ただ「だからポリゴンマシンは・・・」という話をしていたので、
多分PS1の事だけで最近の全ての事を判断しているのかな?とは思います。

PS1だけの話か・・・?とGoogleなんかでフレームバッファを検索しながら
このスレをじっくり読んでいる所(当方、プログラマでは無いもので・・・)

398:名前は開発中のものです。
02/04/16 01:00
とにかくゲームは全部クソ

399:PS2未経験PG
02/04/16 09:41
>>396
>Zバッファなら遅延かます必要なんかどこにもないのは分かる?
すまん、いまいち良くわかってないんだが
これって、Zバッファ使った場合はフロントバッファに直で描いちゃえって事?
Zバッファの場合(つーか、PS2の場合)だとなんで遅延がなくなるのか教えて欲しいです。
PS2ってダブルバッファ使ってないのかな・・・

400:名前は開発中のものです。
02/04/16 10:06 dOXB8y2A
URLリンク(www.ne.jp)

401:名前は開発中のものです。
02/04/16 11:29
よく知らないけど、
ハードウェアスプライト機の場合は次フレーム用のスプライトパラメータが決定した順にバッファに書き溜めるなどしておいて、
帰線期間でドサっと切りかえるんでしょ?
フレームバッファ機の場合だと、表示キャラのパラメータが決定した順にどんどん描画バッファに描画していってしまって、
帰線期間で表示バッファを切り替えれば、同じ事になるのでは。
十分に描画速度が速くなくてはならないし、半透明を用いる場合にはやはり描画前のZソートが必要だったりするんだろうけど。

402:良く知らんが
02/04/16 15:47
PS1: 1フレーム単位の同期パイプライン
PS2: 非同期パイプライン

1フレーム単位の同期ってのは、
 n:  CPU:nフレ計算 、GPU:n-1フレ描画、画面:n-2フレ表示
 n+1: CPU:n+1フレ計算、GPU:nフレ描画 、画面:n-1フレ表示
 n+2: CPU:n+2フレ計算、GPU:n+1フレ描画、画面:nフレ表示
かな?
Zソートとかしないと逝けないから、CPU,GPU処理を分けたほうが効率的ってことだね。

PS2では、計算し終わったデータを順次GPUに渡して、その場で裏に描画するから、
遅延は発生しないってことだよね。
普通に計算するとZ値ばらばらになるけど、Zバッファあるならそのまま描画すれば
いいので、順次GPUに渡してってことができる、と>>396は言いたいのでしょう。

403:名前は開発中のものです。
02/04/16 15:51 c61K4KNM
>>399
Zソートだと全プリミティブが確定するまで描画開始できないから
CPUとGPUが一緒にうまく働けない。模式化すると、

CPU **1*----- **2*----- **3*----- **4*-----
GPU ----**1*- ----**2*- ----**3*- ----**4*-

これじゃマシンパワー半分遊んでるわな。そこで、描画を遅らせて
2段のパイプライン組んじまえってのがPSのアーキテクチャ。

CPU ***1***-- ***2***-- ***3***-- ***4***--
GPU        ***1***-- ***2***-- ***3***-- ***4***--

Zバッファだと描画順序関係ないからガンガン命令繰り出せる。
間にキューかましちゃったりとかして、こんなカンジ?

CPU ***1***-- ***2***-- ***3***-- ***4***--
GPU --***1*** --***2*** --***3*** --***4***

404:387
02/04/17 00:02
どうやらPS1のオーダリングテーブルの性らしいってのはわかってきました。

N64もZバッファマシンだったんですねぇ・・・DCはどうなんだろ?PowerVR2?

405:名前は開発中のものです。
02/04/17 13:19
DCはさらに1フレーム遅れると聞いたことがあるが、詳しくは知らない。

406:名前は開発中のものです。
02/04/17 14:01
>>405
でも、DCってZ-Bufferで普通に書き込めるんですよね?

407:名前は開発中のものです。
02/04/19 14:05
タイルベースアーキテクチャがなんか災いしているらしい。
詳しい人来て教えてクレー(ゲーハー板のほうがよかったりして(w

408:名前は開発中のものです。
02/04/19 15:21
PowerVRの場合だと、一通りのポリゴンのデータをグラフィックプロセサ側のメモリに貯め込み終えて(タイル別に仕分けして)、初めてZ値比較、描画を始めるんですよね、たしか。
PowerVR3以降でZバッファも使えるようになったんでしたっけ?

409:名前は開発中のものです。
02/04/19 18:28
ゲームのタイプによって違うと思うけど
マリオとかゼル伝は2Dのほうがよかったな

410:名前は開発中のものです。
02/04/19 22:18
半透明物体が入るとZソートかけないとダメなんでは

411:名前は開発中のものです。
02/04/20 14:49
>>409
同意。
マリオやソニックタイプのアクションゲームは2Dの方がおもしろい。
3Dだと視点が狭いから全体を把握しにくいよね。

412:名前は開発中のものです。
02/04/20 14:58
>>411
3Dグラフィック能力を用いて2D的自由度のゲームを作るケースは少なく無いよね。
マリオ、ゼルダはそうしなかった訳だけど。
ゲーム空間の自由度にマンマシンインターフェイスが対応できない場合にストレスを感じるね。
ゲーム空間の自由度と操作性の自由度が隔離してしまう。
2Dの場合は、十分にシンクロさせる事が出来る。
マリオ、ゼルダは良く出来ている方だとは思うけど、
自由度の少ない2D版に比べれば、自由度の隔離が目立つね。

413:名前は開発中のものです。
02/04/20 17:51 gnFfZCwA
>>411
2Dマリオやソニックって、全体を把握することが重要なゲームかな?

ゼルダのようなゲームは画面要素のすべてに細心の注意を払う必要があり、
3Dにするとそれが苦痛となりかねないのは同意だけれど。

でも、探索のリアリティは格段に増すんだよね。3D。

414:名前は開発中のものです。
02/04/20 21:54
>>413
3Dアクションゲームって、とりあえずマップを探索するところから始まるじゃない。
まず行くべき場所を見つけなくちゃならない。それが何か無駄っぽいんだよね。
もっとアクションに集中させてくれよって感じ。

415:名前は開発中のものです。
02/04/21 12:49
3Dになってからゲームがつまらなくなった気がする。

416:名前は開発中のものです。
02/04/21 12:50
ゲームはやっぱ2Dでしょ?
もっとも製作都合上、技術的には3Dでも。

417:名前は開発中のものです。
02/04/21 13:24
表現が3Dになっても、入力装置は2Dのままなんだよね。
その辺のギャップからストレスを感じてしまうことは多い。
もちろん、そこをがんばっていると感じるゲームもあるが。

418:名前は開発中のものです。
02/04/21 16:49 qaIK0b5I
それを補うかのように、最近のゲーム機のパッドはスティックが2本ついておりますな。
2軸操作は慣れると縦横無尽に3D空間を駆け回ることができていいですよ。

419:名前は開発中のものです。
02/04/21 16:52 qaIK0b5I
スレリンク(famicom板)
スレリンク(ghard板)

420:名前は開発中のものです。
02/04/21 17:33
>>418
軸が増えれば比較的自由にはなるだろうけど、
軸操作の為に重要な指が一本割り当てられてしまう。
コントローラーを持つスタイルの自由度も失われる。
その上でも扱いやすいコントローラ、のデザインは摸索され続けている訳だけど。

話しが外れますが・・・・
既に存在してるんだろうけど、
スティック型の傾き2軸、捻り1軸に加えて、根元の水平シフト2軸、を加えたコントローラが、ロボの操作に向いてるんじゃないかと思うんだけど、どうだろう。
別に水平シフトで無くても、スティックに1つ関節が付いているイメージで良いです。
従来の自由度を上半身の方向制御に(1軸余るかな?)、根元の自由度を下半身の移動速度制御に。
鉄騎の専用コントローラは是非そのようにしていただきたい!
あー全然スレ違い・・・・

421:名前は開発中のものです。
02/04/21 19:53
最近は右アナログスティックで視点を変えるゲームが多いけど、
ゲームによって押した方向と向く方向が違うんだよね。
カメラ視点かプレイヤー視点かって違いなんだろうけど、なんかウザくない?
統一しようよ。

422:名前は開発中のものです。
02/04/21 19:56
環境設定できれば良いんじゃない?
友達の家で交互に設定切り替えて遊ぶのは辛いだろうけど。
(切り替え専用スイッチを割り当てれば良いかな・・・・)

423:名前は開発中のものです。
02/04/21 19:58
それは親切に見せかけた思考停止でしかないと思う

424:名前は開発中のものです。
02/04/21 20:08
思考停止ってあんた・・・・・・
統一が反思考停止なのかね
気が遠くなってきた・・・


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4966日前に更新/125 KB
担当:undef