タスクシステム総合ス ..
[2ch|▼Menu]
1:名前は開発中のものです。
07/03/12 23:09:48 8bV5Boxt
どうぞ

2:名前は開発中のものです。
07/03/12 23:11:13 0dA4mIiS
重複です。

【新人は】ゲーム業界人の実情を吐露するスレ【20♀】
スレリンク(ghard板)

3:名前は開発中のものです。
07/03/13 00:18:53 GEtPEl1r
タスクシステムって基底クラス型ポインタに実オブジェクトを代入したらあかんの?

4:名前は開発中のものです。
07/03/13 01:05:48 lSPAnQVN
暇だったんで書いてみた。添削できる人がいたらよろしく。

タスク

プロセス・スレッド・ファイバなど実行パスの総称。
この用語はシステムによって異なるものを指すため、動作システムを明らかに
するか、「実行する何か」といった抽象的な意味でのみ使うことが推奨される。

古典タスク (別名: ファイバ/軽量スレッド/マイクロスレッド/ノンプリエンプティブスレッド)

→ファイバの項を参照

ただし、ゲームのプロセス管理システムとして実装されたものは、コンテキストスイッチの他に
優先順位や実行順序のソートなど各種管理機能を備えたものが通常である。

擬似タスク (別名: 関数ポインタリスト)

関数ポインタ・クラス・(関数ポインタを持った)構造体などをリストで繋いだもの。
古典タスクの機能のうち個々のタスクをリストで繋ぐ部分のみを継承したものと思われる。
データ構造にツリーや配列などの変種がある。一部のゲームプログラマのローカル用語。

注: Winedows3.1等の擬似マルチタスクとは関数のリターンが必要なところは同じであるが、
コンテキストスイッチが伴わないところが異なるため、同じものとは言い難い。

5:名前は開発中のものです。
07/03/13 01:06:36 lSPAnQVN
プロセス[Process]

Wikipedia項目リンク

注: 組み込み業界ではプロセスをタスクと呼ぶ慣習がある。
ゲーム業界は組み込みに近いシステムから同時代のPC並のものまで主流なシステムが
増えたため、異なる方面のエンジニアが交じり合い用語の混乱を招いていると思われる。

スレッド[Thread] (別名: ライトウェイトプロセス/プリエンプティブスレッド)

Wikipedia項目リンク

ファイバ[Fiber] (別名: 古典タスク/軽量スレッド/マイクロスレッド/ノンプリエンプティブスレッド)

軽量スレッドとも呼ばれる。並列的な記述が可能だが、スレッドで必要な
ロックが必要ない点がメリットである。コンテキストスイッチをOSではなく
アプリケーションが明示的に行うスレッド。WindowsではCreateFiber()で作成できる。


6:名前は開発中のものです。
07/03/13 20:18:34 oceFcbYg
コルーチンってやつだよね>ファイバ
スクリプト言語だと結構実装されてる。

7:名前は開発中のものです。
07/03/14 16:01:25 r4GZS4Co
最近はどうでもよくなってきたな、この辺の話。
どんな方法でやっても絶対どっかで引っかかって、
工数もバグの数も実行性能も結局一緒になるんだよ。

タスク、というかゲームオブジェクト管理周辺って永遠に何か気持ち悪いままなんじゃね。
自分のゲームは薄氷の上で踊ってるようにしか見えんし、
他人のゲームは堅牢に動いてるように見える。そのギャップはたぶん埋まらない。むかつくけど。

8:名前は開発中のものです。
07/03/15 10:57:04 PMeVIICQ
一応、タスク関連ということで、脱タスクな話もいいよね?

実は、最近、タスクは古いかな?という気がして、
今は、ABAさんのソース参考にして書いてる。

Titanion
URLリンク(www.asahi-net.or.jp)

昔から、ABA氏のソースは、追っているんだけど、大分洗練されていて面白い。

・敵、弾、パーティクルなどのActorがあり、タスクの代わりに、それぞれのリストを持つ
・これらのリストはいわゆるオブジェクトプールで、あらかじめ(敵なら敵の)インスタンスを生成しておくもの
・様々な行動パターン(仕様Spec)などは、個別にActorに割り当てられるようになっている。
例えば
パーティクルActor + 四角いパーティクルSpec
パーティクルActor + 線形のパーティクルSpec
みたいな感じ。
・Actor自身は、あまり情報を持っておらず、状態は、Stateオブジェクトに放り込む
別にこれはやらんでもいい気がするけど・・・
Actor自身においてもいいんじゃないの?という気がする


9:名前は開発中のものです。
07/03/15 11:02:03 PMeVIICQ
追記

・実際の動きや、描画は、Actorに随時割り当てられた、Specが担当する
パーティクルActor + 四角いパーティクルSpec なら、四角く描画
パーティクルActor + 線形のパーティクルSpec なら、ラインで描画

といったように

欠点としてはだな。
・Stateは、複数のSpecで共通なので状態は、融通が利かない。
例えば、
パーティクルActor + 四角いパーティクルSpec と
パーティクルActor + 線形のパーティクルSpec とで、
(というか、パーティクルActorに関連するSpecすべて)
Stateが共通なので、メンバなんかが煩雑に増えている

そこで、往年の方々なら、タスクシステムよろしく、ワーク領域用意して、
StateをSpecごとに無理やり定義とかやるんでしょうけど、
遭えてやってない感じ。(ABA氏はけっこう古くからいる人のはずなので)


10:名前は開発中のものです。
07/03/15 11:04:26 PMeVIICQ
ABA氏のゲームは、基本的にゲーム中にメモリの再確保はしない方向になってて、
逆を言えば、初期化時ならば、オブジェクトの生成はバンバンやってます。
それがわかれば、ソースは読みやすいし、理解し易い思います。

11:名前は開発中のものです。
07/03/15 15:40:53 b1+VxKry
最初に確保してあとは使いまわしという事は
リソースプール見たいな感じなのかな

12:名前は開発中のものです。
07/03/15 18:57:37 4gWi6T6s
脱タスクとか、タスクは古いかな、とかもうね。チラ裏じゃん。
僕の肛門も閉鎖しそうです並みの俺ニュースだろ。

まず俺定義・俺解釈・俺実装の「タスク」について補足説明しろ。
脱だの古いだの閉鎖しそうですだの言うのはそれからだ。

13:名前は開発中のものです。
07/03/15 19:16:14 VzhOi8YW
まあ、そもそも、関連リンクもなしに>>1がスレ立てたのが悪いのだが……。

White Paper - Programming
URLリンク(homepage3.nifty.com)

タスクシステム
URLリンク(www5f.biglobe.ne.jp)

CodeZine:本格的なシューティングゲームを実現するタスクシステム(タスクシステム,シューティング,ゲーム)
URLリンク(codezine.jp)

いまどきのタスクシステムの実装
URLリンク(omoikane.my-sv.net)

ゲーム・ノ・シクミ 第11回 C++によるタスクシステムの実現
今は無き C MAGAZINE 2006年1月号
URLリンク(www.cmagazine.jp)


「処理関数へのポインタ付きワーク構造体の連結リスト」ってのがしっくりくる

14:名前は開発中のものです。
07/03/15 21:06:26 ZqsnR0zJ
Javaでやろうとして挫折した。
ワーク構造体とそれをメンバとしてアタッチするラップクラスを作ったんだが
あまりにも気持ち悪くてそこでやめてしまった。

タスクシステムはCで書くから美しく見えるんじゃないかと思ってしまう。

15:名前は開発中のものです。
07/03/15 21:26:14 EXzxsrWu
JAVAってまともな構造体あったっけ?

16:名前は開発中のものです。
07/03/15 22:02:28 qutq4pqL
Javaならインターフェイスとコレクション使えばすぐできるだろ。
ちなみにフレームレートとかは無視する方向で。

17:名前は開発中のものです。
07/03/15 22:05:34 yIBWThbm
>>14
それは設計が悪いだけ。
ワーク構造体なんか作らなくても、
タスクインターフェースを実装した具体クラスに
好きな変数ガンガンぶち込めば済む。

18:名前は開発中のものです。
07/03/15 22:13:03 ZqsnR0zJ
>>15
ByteBufferってクラス使えば共用体っぽく使えるよ。
ベースはchar配列だけどね。

>>16, 17
極力オブジェクトプールしてくのがタスクシステムじゃなくて?

19:名前は開発中のものです。
07/03/15 22:25:27 yIBWThbm
別に>>16>>17の方法でもプールできると思うんだが…。

20:名前は開発中のものです。
07/03/15 22:37:01 PMeVIICQ
>>17
kwsk

動的生成するのかな?

21:名前は開発中のものです。
07/03/15 22:54:30 yIBWThbm
>>20
別になんてことはない。

interface Task {
  public void update();
  public void draw();
};

class Enemy implements Task{
  private int x;
  private int y;
  public void update() {x++; y++};
  public void draw() {/*ごにょごにょ*/};
};

例えばこんな感じで超テキトーに作ったとすると、
xだのyだのの部分がワーク構造体部分で
updateだのdrawだのが処理関数部分。

あとはTaskを格納するコンテナに
new Enemyだのnew MyShipだのぶち込んで
順番にupdateだのdrawだの呼び出せばいい。

22:名前は開発中のものです。
07/03/15 22:58:37 XmQLFBDw
ワークメモリを分割して使うようなやり方は、高級アセンブラたるC言語ならではといっても良いと思う。
C++ですらそのやり方は馴染まない。ましてや、Javaともなると、メモリ管理を極力隠匿してGCで
自動化しているわけで、それをわざわざ迂回しようとしてるのが>18なんだが、わかってる?
慣れたやり方でやろうとしてしまうのはわかるけども、もう少しオブジェクト指向とか勉強して欲しいとちょっと思った。

23:名前は開発中のものです。
07/03/15 23:00:47 b1+VxKry
オブジェクト指向というか言語仕様というか

24:名前は開発中のものです。
07/03/15 23:09:07 ZqsnR0zJ
それが気持ち悪いからまっさきに避けたんだが、平行線っぽいから議論はやめとく。

25:名前は開発中のものです。
07/03/15 23:11:29 yIBWThbm
>>22
そもそもタスクシステム自体は
全然オブジェクト指向ではないし、
なぜその文脈でオブジェクト指向が出てくるのか。

26:名前は開発中のものです。
07/03/15 23:16:11 PMeVIICQ
>>21
あー、やっぱりそれか・・・。
interfaceないころから、俺は、それでやってた。Javaでないけど。

問題は、メンバが変わるような場合なんですよ。

タスクシステムってのは、実行時に、頻繁にメモリ確保しないのが前提だと思うのですが、
>>21のだと、動的にオブジェクト生成しないといけんよなあ。
まあ、いまどきなら、それでもいいんだけど・・・。
プール使うのは、パーティクルぐらいでも十分の最近の現実。

27:名前は開発中のものです。
07/03/15 23:26:21 yIBWThbm
>>26
>>21の場合でEnemyが頻繁に出入りするような場合は
new Enemyで生成するのではなく、
Enemyを管理するEnemyFactoryクラスを作って
そいつからEnemyを引っ張ってくるようにすればいいだけ。
あなたが>>8で言っているActorのリストみたいなものを
EnemyFactoryに持たせればいい。

28:名前は開発中のものです。
07/03/15 23:33:05 XmQLFBDw
>>24
御意。

>>25
>そもそもタスクシステム自体は全然オブジェクト指向ではないし、
>なぜその文脈でオブジェクト指向が出てくるのか。

プロセスやスレッドだってオブジェクト指向じゃないけど、クラスとして実装されている。
Javaというオブジェクト指向言語上でタスクと同じ役割をするもの(大抵クラスだろう)を
実装するなら、オブジェクト指向からやらないと、オブジェクト指向言語と処理系が
やっていることを理解できないんじゃないかな。

29:名前は開発中のものです。
07/03/15 23:40:22 EXzxsrWu
>>21
その書き方だとたしかにJAVAらしいなあ。
ただ、そうすると、最初にワークスペースを全てのタスクで用意して、というやり方と違って
タスクをアクティブにするときメモリを動的に確保しに行く、ってせざるを得ないのかな?

30:名前は開発中のものです。
07/03/16 00:00:01 wlk+IDOq
>>27
Factoryに、敵別にプールつくって、あらかじめ生成しておいて、
そっからひっぱってくる感じ?

出現する敵の最大数をあらかじめ指定しておいて、
最初に敵出る分全部、生成しておくんかな?ステージのはじめとかに。


敵Aと敵Bが最大10体づつ出る場合、
敵Aのプール10体分と、敵Bのプール10体分とをあらかじめ生成しておくんかいな?

31:名前は開発中のものです。
07/03/16 00:00:39 yIBWThbm
>>28
あなたが言っているのはカプセル化やクラス設計の話であって、
オブジェクト指向の話ではない気がする。
タスクシステムの構造自体がオブジェクト同士の通信などを
不自然なものにする要員になっていると思うんだよね…。まあこの話はいいや。

>>29
>>27読んでけれ

32:名前は開発中のものです。
07/03/16 00:15:46 4Zw2Xard
>>30
最大数分を耳を揃えてきっちり用意する必要は必ずしもない。
以下、例えばの流れ。

準備段階。EnemyFactoryのプール容量は5でまだ空。

敵を4体くれという指令が来る。プールが空なので、慌てて4体newして渡す。

敵の出番が終わる。EnemyFactoryが責任を持ってEnemyを回収。プールに4体入る。

敵を3体くれという指令が来る。プールから3体分引っ張り出して、
メンバ変数を適切に設定し直して渡す。

敵を3体くれという指令がまた来る。プールから残りの1体を取り出して渡す。
2体分足りないので仕方なくnewする。

敵6体の出番が終わる。5体回収し、1体はプールに入らないので捨てた。

こんな感じで合計10体が画面に現れる場合だと、
回収して使い回したのでnewしたのは6体分だけで済む。

33:名前は開発中のものです。
07/03/16 00:22:25 wlk+IDOq
>>32
なるほど・・・
完全に動的確保は拒否するわけではなく、
あくまで、メモリ確保を最小限にする方向なのね
キャッシュみたいなものか

34:名前は開発中のものです。
07/03/16 00:26:50 xvDGcZpT
メインループの中でLazy initializationさせるってありえないんだが・・・

35:名前は開発中のものです。
07/03/16 00:43:11 h9V7zR2G
そうか?
メモリ確保は重くないだろうし、オブジェクトの初期化処理が重いと感じるのか?

36:名前は開発中のものです。
07/03/16 00:47:28 4Zw2Xard
>34
>>32は一通りの動作(不足と超過)を示す例としてわざとこうしただけ。
実際はプールが不足しない程度に容量を増やすし、
メインループに入る前にプールは満たしておく。

プールから引っ張り出してメンバ変数を設定し直すことも含めて
Lazy initializationだと言っているのならば、さすがに気にしすぎだと思うが。
っていうか色々工夫したところで更新処理よりも描画処理の方が格段に重いから困る。

37:名前は開発中のものです。
07/03/16 01:18:43 wlk+IDOq
> っていうか色々工夫したところで更新処理よりも描画処理の方が格段に重いから困る。

まあ、そうなんだよなあ・・・。

超絶弾幕シューティングでもないかぎり、
重いのは3D処理だったり当たり判定だったり・・・

38:29
07/03/16 01:29:18 ZxwtzxVV
>>31
つーことは、同時に出現する敵の数は、そのEnemyFactoryの初期化時に生成する
Enemyのインスタンスの数までという制限があるという認識でおk?

古典的つーか、ワークスペースを確保してタスクごとにワークスペースの分割方法を変える場合は、
敵の最大数は、タスクの最大数に近くなるはずなんだけど、そこらへんに対してウィークポイントになるのかな?

いや、もちろん、>>21の場合、JAVAのオブジェクト指向に則った書き方なので、メモリ周りでバグが出にくいというのは理解している。

39:32
07/03/16 01:31:03 ZxwtzxVV
あ、>>30で割と答えが出てたね、失礼。


40:39
07/03/16 01:32:59 ZxwtzxVV
ごめんdでもない書き間違いしたorz

>>39 は、>>32じゃなくて>>29で、
答えがでたのが>>32だった。

一昨日妹が死んでまだ慌ててるのかなあ。

41:名前は開発中のものです。
07/03/16 01:55:58 xob5GmNS
インスタンス変数初めからプールしちゃうとライフサイクル伸びて

じじい世代発見!→フルGC承認!!→光になれー!!

って重量GCシナリオが見えるんだが・・・
俺どこか間違えてる?

42:名前は開発中のものです。
07/03/16 06:47:08 RmBov5WG
×じじい世代発見!→フルGC承認!!→光になれー!!
○じじい世代が世界に溢れる!→フルGC承認!!→光になれー!!

・初期化時に生成してプール→OLD領域に移動(使い回され領域は無駄にならない)

・短寿命のインスタンスを頻繁に生成→Eden領域がすぐに満杯になる→頻繁にGC発生
 →From・Toが短寿命のインスタンスで溢れる→長寿命でない物もOLD領域に押し込まれる
 →OLD領域が不足→フルGC承認!!→光になれー!!

(チューニングしてEden領域を大きくして(New領域を大きくして)、MaxTenuringThreshholdを増やせばFullGCは起きにくくなるか?

Javaには詳しくないから、嘘書いてたらエロイ人突っ込みヨロシク

43:名前は開発中のものです。
07/03/17 00:02:48 ZM3wMuqd
>>41
殿堂入りしたオブジェクトがゲーム終了まで参照を持つのに何故フルGCが起きる?
キャッシュさせたいインスタンスはさっさと殿堂入りさせる。
そしてキャッシュしないと決めたインスタンスは短いスパンで確実に使い捨てする。
フルGCを起こさせないための基本的なリソース管理だよ。

FPSを意識するゲームであるなら、ピーク時に的を絞ればいいだけだから簡単だよ。

44:名前は開発中のものです。
07/03/18 13:30:17 opYiOvzt
ゲームにおけるデータ構造・クラス設計・パターン
スレリンク(gamedev板)

話題的に上記のスレが適当だと思う。
っていうかタスクシステム単体で語るようなことが思い浮かばない。

45:名前は開発中のものです。
07/03/21 19:40:49 v8Vhdcv6
トラックバック:スレリンク(gamedev板)

46:名前は開発中のものです。
07/03/23 12:53:45 28C6AFOi
敵といってもたくさん種類いるし
敵以外にも色んなタスクがある場合、それぞれ個別にプールしとけってのか?

47:名前は開発中のものです。
07/03/23 13:23:37 vxAgs8Dc
>>46
そんなのは場合によるだろ。
ただ、たくさん種類がいるからめんどくせーって理由だけで
プーリングを放棄するのはただの怠け者。

48:名前は開発中のものです。
07/03/23 20:59:09 V2teaCuf
>>46
俺もそれ悩んだことがある。

で、悩んだ結果オブジェクトのプーリングはやめてnew/deleteを乗っ取って
自分でフリーリストを実装することにした。(キャッシュするものを一段低レベルな
ところに持っていくってことね。) C++の話でJavaでできるかは知らん。

ただ、敵が何体以上は出ないってゲームも割と当たり前なんで、プーリングの
数をハードコーディングしてしまっても別にいいとも思う。

49:名前は開発中のものです。
07/03/23 21:08:45 ZM8fpxF3
new/delete 置き換えてできることなんて、大抵はデフォルトの実装でも
同じことやってるんじゃないの?

明確なボトルネックを見つける前から独自のメモリ管理を追加するのは
面倒なバグの元になるだけで終わる可能性がある。
もうちょっとコンパイラ(ライブラリ)実装者を信用してもいいんじゃないかと思う。

50:名前は開発中のものです。
07/03/23 21:36:19 V2teaCuf
>>49
> new/delete 置き換えてできることなんて、大抵はデフォルトの実装でも
> 同じことやってるんじゃないの?

フリーリスト自体はCRT内にもあるものだし、汎用の用途ならdlmallocが最強(?)かも
しれないけど、例えば確保のサイズが大部分固定だったり、確保開放のパターンが
FIFO的だったりとか文脈に依存したパターンを見つけることで、もっと高速にする余地が
あるんだ。

> 明確なボトルネックを見つける前から独自のメモリ管理を追加するのは
> 面倒なバグの元になるだけで終わる可能性がある。
> もうちょっとコンパイラ(ライブラリ)実装者を信用してもいいんじゃないかと思う。

これは至極もっともだ。俺も自分でなんでも作りすぎるのはちょっと悪い癖だと思ってる。

51:名前は開発中のものです。
07/03/23 21:57:58 P2V386bO
ある程度組み終わった後でも使用するアロケータを楽に変更できるように
組むことなんて可能なのかいな?

52:名前は開発中のものです。
07/03/23 22:32:14 V2teaCuf
>>51
アロケータをオブジェクトにして種類別に派生させる。
生成部分を取り替えられるようにするって意味で、デザパタでいうところのアブストラクトファクトリに近いかな。

53:名前は開発中のものです。
07/03/23 22:53:52 vxAgs8Dc
メモリ確保方法によらず、常に同じ記述で
オブジェクトの生成・破棄が行えると楽だな。
オブジェクト毎にメモリ確保方法が異なっていて、
さらに生成・破棄手順が違うとかだと悲惨だ。

自前でメモリ確保機構を作りたいって人は、
通常のnew、boostのobject_pool、LokiのSmallObj、
Efficient C++のMemoryPoolのソースを全部見てからにした方がいい。
大抵はこいつらで事足りる。
個人的に、boostのobject_poolが最強だと思う。

54:名前は開発中のものです。
07/03/24 00:17:00 OuD128ry
自分で作ると最速のコードに出来ることがあっても
準標準級のライブラリに似たようなのがあれば作らないってのも勇気だわね

55:名前は開発中のものです。
07/03/24 00:46:35 SQuGfhfH
>>50
> しれないけど、例えば確保のサイズが大部分固定だったり、確保開放のパターンが
> FIFO的だったりとか文脈に依存したパターンを見つけることで、もっと高速にする余地が

operator new にはサイズしか渡されないし operator delete にはポインタひとつしか
渡されないので、そういう文脈に依存した処理を組み込むのは難しい。
「new/delete 置き換えてできること」と限定したのはそういう意味だったんだが。

56:名前は開発中のものです。
07/03/24 01:18:26 8HwaAyp8
>>55
> operator new にはサイズしか渡されないし operator delete にはポインタひとつしか
> 渡されないので、そういう文脈に依存した処理を組み込むのは難しい。
> 「new/delete 置き換えてできること」と限定したのはそういう意味だったんだが。

俺が>49で言ってた「乗っ取って」というのは字面通りの単純な置換って意味じゃなくて
生成機構を変更するって意味なので、まぁ、ほんとに置換しかやらないのなら、
そうですね、としか。
というか、オブジェクトプールがどうこうって流れだったんだからその辺は変更できるってのが
前提じゃないの?

57:名前は開発中のものです。
07/03/24 01:21:37 8HwaAyp8
アンカーミスった。>49じゃなくて>48っすね。

58:名前は開発中のものです。
07/03/24 02:30:22 oJPw3lLB
お前らはplacement newを知らないのか?

59:名前は開発中のものです。
07/03/24 05:25:57 SQuGfhfH
>>56
グローバル opeartor new/delete の置き換えと勘違いしてたみたい。ごめんよ。

60:名前は開発中のものです。
07/03/24 05:27:06 SQuGfhfH
>>58
知ってるけど、この流れでは当たり前というか関係ないというか、どうでもいい。

61:名前は開発中のものです。
07/03/26 22:37:04 sS1yrghH
タスカー様を復活させるのだ

62:名前は開発中のものです。
07/03/26 23:35:38 15IZtZoB
タスク・オム

63:名前は開発中のものです。
07/04/02 00:01:32 xHA5oFU3
タスケテシステムとスレタイ読み違えた

64:名前は開発中のものです。
07/04/02 22:36:55 rjkFdofu
いや、実は読み違えていない。スレ主が書き間違えてるんだ。

65:名前は開発中のものです。
07/04/02 22:55:04 QJ3NujtS
誰かボスケテシステムスレも建ててよ

66:名前は開発中のものです。
07/04/10 21:51:55 DVQJ95h4
Javaでタスクシステムをつくるとき、
各タスクに描画させるのか?(敵のタスクならその機体の描画とか。)

それともタスクは座標だけupdateして、別にTimerとかでPanelをrepaintさせるのか?

67:名前は開発中のものです。
07/04/11 08:50:01 0dv8Cb9u
>>66
ちらつく。
ダブルバファリングしても無理。

68:名前は開発中のものです。
07/04/11 09:13:43 J3mbPVHZ
LWJGL使えよ

69:名前は開発中のものです。
07/04/11 21:16:36 S5YhMrov
スプライトシステムか。

70:名前は開発中のものです。
07/04/11 23:21:45 S5YhMrov
YaneuraoGameSDK.NETのタスクシステムってどうよ。

URLリンク(yanesdkdotnet.sourceforge.jp)

こういうののJava版とかないかね?


71:名前は開発中のものです。
07/04/11 23:58:37 qhNv6z5v
至って普通。フレームワークにするまでもないというか、使い方覚えるほうが面倒くさくね?というか。
でも、やね氏の作るものは氏が飽きたらそれまでなので今ならXNAでも使っといたほうがいいんじゃないかな。

72:名前は開発中のものです。
07/04/12 09:21:05 gzUpXrks
「シューティングゲームマニアックス」にタスクシステム結構詳しく載ってて、構造体キャスト使ってたけど、結構きつい様な気もする
どうなんだろう


73:名前は開発中のものです。
07/04/12 20:30:27 mQKUb85m
Javaの場合だとひとつのGraphics2Dをコンテキストとするから
タスクが描くってよりも、フレームワークが取り込むって形になりそう

74:名前は開発中のものです。
07/04/14 17:35:53 F0D9RwXy
統合開発環境やデバッガとの連携を全く考慮していない
聳え立つ糞のようなタスクシステムをしこしこ作ってる
孤独なオナニープログラマ諸君。
 
デバッグの容易さとか、保守のしやすさを考えて作ってますか?

75:名前は開発中のものです。
07/04/14 17:53:16 3N17piRe
>>74
あたりまえじゃん

76:名前は開発中のものです。
07/04/14 18:33:42 tHggo9K5
>>74
君はそんなものしか作れなかったのかな?
それはタスクシステムが悪いんじゃなくて、
君のセンスがないだけだから心配することないよ!

77:名前は開発中のものです。
07/04/14 18:56:15 KurcdpHU
そういや、今は亡きCマガにトンデモなタスクシステム紹介記事があったが
あれが出た辺りからタスクシステムというキーワードがすっかり香ばしくなったな。
今では>>13のリンク先の通り、厨房技術用語としての地位は不動のものだな。

78:名前は開発中のものです。
07/04/14 20:10:39 KVgw3R/b
Cマガの記事を書いたライターはおそらく、つか間違いなくド素人。

当時ウェブ上に転がってた情報を拾い集めて書いただけの内容だった。
Logician何とかというサイトの記述漏れや記述ミス(というか独自解釈か)
をご丁寧に全て継承していた。

ウェブ上で都市伝説のように紹介されていたものをまんま丸写しして
「いまどきwのプロが使うゲーム開発の秘技」みたいに神格化して
紙媒体を使って流布したおかげで、言葉だけが一人歩きを始めた。

実装方法は千差万別のローカル用語なのにね。

79:名前は開発中のものです。
07/04/14 20:19:46 g5jEBpoC
フレームワークみたいなもんだろ。
使えるというのは自前の実装で言ってるから判るんだが
使えないというのは自前の実装がへぼいと宣伝してるのかね。

それともあまりにもひどい実装を見たのだろうか。

80:名前は開発中のものです。
07/04/15 02:36:38 0Q+hD2uu
タスクシステムに限らず、こういうフレームワーク的なものは
利点や欠点を見極めた上で採用不採用を決定するのが当然なわけだけど、
それを怠って何でもタスクシステムにすりゃいいと思っている
初心者が絶賛大量量産中だから困る。
そういう馬鹿どもが勝手に困る分には全く構わないが、
blogで上級者ぶって布教活動をしたり、
頓珍漢な質問をして場を混乱させたりするのは勘弁してくれ。

81:名前は開発中のものです。
07/04/15 02:43:26 KRgQ3nwE
使えるというのは自前の実装で言ってるから判るんだが
使えないというのは自前の実装がへぼいと宣伝してるのかね?

82:名前は開発中のものです。
07/04/15 03:12:12 vOubHFUU
>>81
まあ、そうなんだろう。
結局タスクシステムにしたってオブジェクト指向にしたって、理解できなかった奴が否定しているんだしね。

83:名前は開発中のものです。
07/04/15 03:38:07 ib4ZSVvj
タスクシステムやオブジェクト指向よりも
ちょっと前のレスをわざわざコピペした>>81の真意が理解できません><

84:名前は開発中のものです。
07/04/15 04:14:42 xBb5xlIW
ヒント:自作自演

85:名前は開発中のものです。
07/04/15 04:28:01 vOubHFUU
そういや、単発IDが連続してるなここ

86:名前は開発中のものです。
07/04/15 04:39:19 W1PnAJQl
同一ID:配列
単発ID:リスト→このスレで言うところのタスクシステム。

うむ、スレ違いじゃない。問題無い

87:名前は開発中のものです。
07/04/15 04:47:32 0Q+hD2uu
>>86の例えが理解できる人、解説プリーズ

88:名前は開発中のものです。
07/04/15 04:59:44 KRgQ3nwE
日付が変わってID変わっただけだアホ。

89:名前は開発中のものです。
07/04/15 05:00:52 W1PnAJQl
まぁまぁ、隔離スレで熱くなるなよ。

90:名前は開発中のものです。
07/04/15 05:45:42 5XtjNBFQ
82 : 「●●を正しく理解しない者が●●を否定するのだ。」

 

( ^??^?)…
●●を魔法か何かと勘違いして布教する厨房が否定されてるだけだろ。

タスクシステムの定義もOOと同様に抽象的なものでしかないわけだが
カビの生えた糞実装(しかも驚くほど似たものばかりが蔓延している)付きで
布教する厨房が頑張ってくれたおかげで、いつの間にかその糞実装込みで
タスクシステムという言葉が定義付けられてしまった感があるな。

91:名前は開発中のものです。
07/04/15 07:11:04 3dsdfwPB
同列に語るならデザインパターンとだろう。

92:名前は開発中のものです。
07/04/15 07:21:05 5XtjNBFQ
例えばだけどさ
複数の有限状態機械の相互作用・状態遷移を時間刻み冲の数値積分などで
逐次計算していく(時間発展させる)仕掛けになっていれば、皆タスクシステム
としての体を成してるんじゃないか?
 
>>13のリンク先の連中は、言っちゃ悪いが頭の引き出しが少ないんじゃないかな。
一般化して説明できるはずのものを遠まわしに分かりづらく説明してしまってるね。

結果、頭の引き出しが少ない視野偏狭な読者は、タスクシステムをゲーム業界固有の
ハイパーテクノロジーであるかのように錯覚する。>>13のリンク先を聖経のように
有難がってる趣味プログラマの人はもう少し見識を広めたほうがいいよ。

93:名前は開発中のものです。
07/04/15 11:33:45 vOubHFUU
>>90
だから、おまいさんがタスクシステムを理解しているというのなら、
何が糞実装なのか教えてくれよせっかくだからさ。

後学のために俺も知りたい。

94:名前は開発中のものです。
07/04/15 12:09:21 bzLlTmPF
>>93
それは俺もしりたい。

上では、糞実装っというより、方言があるものを統一の定番のものように見せているのを
怒っているようにも思うけど。

95:名前は開発中のものです。
07/04/15 12:59:53 vOubHFUU
>>94
そうかもねえ。
とにかく、具体的なことを、ID:5XtjNBFQが一切書かないおかげで、
なんか偉そうなことを長文で言っているように見えるけど、
実際に何を言いたいのか訳わからんし。

96:名前は開発中のものです。
07/04/15 15:01:20 +CRNM9AG
>>82みたいなレスをする奴が何を叫んでも
まともに相手にされないだけだと思うが

97:名前は開発中のものです。
07/04/15 15:07:19 vOubHFUU
はいはい

あいかわらず具体的な話が全く出てこなくなったなここは

98:名前は開発中のものです。
07/04/15 16:27:50 I+ZXuliP
他人を否定したい。
でも具体的な話をすると自分が否定されるから絶対出来ない。
人間とはそういうもの。

99:名前は開発中のものです。
07/04/15 16:35:35 5XtjNBFQ
   ∧,,∧
  (・∀ ・) < はいはい、あいかわらず具体的な話が
.  ノ(  )ヽ   全く出てこなくなったなここは。わろすわろすw
   <  >

スレリンク(gamedev板:82番)n
スレリンク(gamedev板:85番)n
スレリンク(gamedev板:93番)n
スレリンク(gamedev板:95番)n
スレリンク(gamedev板:97番)n

●理解できなかった奴が否定しているんだ
●偉そうなことを言っているように見える
●実際に何を言いたいのか訳わからん

      ズコー
   ヽ(・ω・)/ 
   \(.\ ノ

100:名前は開発中のものです。
07/04/15 16:45:56 vOubHFUU
ID:5XtjNBFQ は、相変わらず顔真っ赤にして必死だなあw
早くどういう実装が糞実装なのか教えてよwww

101:名前は開発中のものです。
07/04/15 19:44:58 n9DKuG7P
>>90>>92
暇だからググってみたけど、関数アドレス+汎用ワークのリンクリストという
環境(ゲーム)依存のひとつの手段に過ぎなかったものを、やたら例として
あげたがる所が多いみたいね。ちょっと意外だったわ。ネット文化なのかね。

これ、情報(都市伝説)の出所を辿れば同じところに行き着くんじゃないの。

102:名前は開発中のものです。
07/04/15 20:39:48 n9DKuG7P
タスクシステムはゲームを駆動させるコア部分=ゲームエンジンなんだから
Quake系あたりの有名どころのオープンソースなゲームエンジンの実装を
引き合いに出して解説すればいいのに、ネット上で「タスクシステム」と
名の付く解説文って何故かそういうことはしないんだよね。単に別物だと
勘違いしてるのか、アーケードゲーム創成期の懐古趣味者だからなのか
アンテナ張れてない脳味噌コチコチのフェードアウトおやじだからなのか
酸素欠乏症に陥ったテム・レイだからなのか。

103:名前は開発中のものです。
07/04/15 21:47:11 PxGC7SLd
オブジェクト指向やデザパタの説明するのに、
有名オープンソースアプリを引き合いにしないのと一緒ってことじゃない?

104:名前は開発中のものです。
07/04/15 21:51:00 /fPrY/bJ
確かに、タスクシステムと他のゲームエンジンを比較する記事は
全く目にしないな。タスクシステムを解説するサイトのほとんどが
ゲームエンジンという概念を持たない奴を対象としているみたいだから、
仕方の無いことだとは思う。
問題なのは、解説者自身が、解説の対象となる連中と
さほどレベルが変わらないということ。

105:名前は開発中のものです。
07/04/15 22:03:11 TiBHGm8x
>>102
おまえはコンパイラの仕組みを解説するのにいちいちgccのソースを持ち出すのか?

106:名前は開発中のものです。
07/04/15 22:05:22 /fPrY/bJ
>>103
お前はオープンソースって単語につられすぎ。
タスクシステムと他のゲームエンジンって組み合わせなんだから、
オブジェクト指向の対となるのは構造化プログラミングとか
アスペクト指向とかだろ。

107:名前は開発中のものです。
07/04/15 22:13:00 PxGC7SLd
>>106
???

誰かエスパーの人翻訳ぷりーず

108:名前は開発中のものです。
07/04/15 22:37:34 BFtC8cga
うちでもタスクシステムという用語自体は
今でもゲームエンジンとほぼ同義で使ってるな。

キャラクタのオブジェクトのことをタスクと呼んだり
ユニットと呼んだりエンティティと呼んだりするのと
同じで、他所では意味合いはすこし違うかもだが。

ま、所詮はローカル用語だな。
確固たる経典があるわけでもなく無理矢理普及
させようとしても都市伝説化するのが関の山だろ。

大人しくゲームエンジンとでも呼んどけってこった。

>>92
>複数の有限状態機械の相互作用・状態遷移を時間刻み冲の数値積分などで
>逐次計算していく(時間発展させる)仕掛け

共通の定義を模索していくとそんな感じになるかな。

仮想空間内に配置したエンティティを時間ステップ毎に
駆動させたり、エンティティ同士の情報のやりとりを仲介したり。
ゲームエンジンは自己駆動粒子系のシミュレータの一種だね。

109:名前は開発中のものです。
07/04/15 23:49:58 oEvaf3OR
ウェブ上で出回ってるタスクシステム講座はたしかに
どれも一様に古臭いな。統制が取れた古臭さとでもいうか。

一線を退いて久しいオサーンが昔を懐かしむ人向けの
読み物と断わった上で公開してるページもあるみたいだが
Code Zineの記事の中の子はガチで浦島太郎になってて
ちょっとカワイソス。
彼には最新のUnrealのMOD開発用ゲームソースでも
読ませてやりたい。

110:名前は開発中のものです。
07/04/16 01:16:12 W5lbbWwm
主張・文体・時間帯・改行の癖・その他諸々を考慮して、
IDを隠して眺めてみると面白いな。
昨日19時からのログわ。

111:名前は開発中のものです。
07/04/16 01:27:08 MDcwQB1m
のちのコナンである。

112:名前は開発中のものです。
07/04/16 01:59:47 B1Dtb12v
タイガアドベンチャーだね

113:名前は開発中のものです。
07/04/16 02:25:04 QiSCSZ7+
>>104
いや、ある意味、タスクシステム自体が、ゲームエンジンの一種なのでは?


114:名前は開発中のものです。
07/04/16 04:52:10 I2bg0tSF
19時からのログよりも>>79-100の方が面白い。
何故か同じことを繰り返して言った>>79>>81
2回目の方にレスをつける>>82(ID:vOubHFUU)。
>>93で再登場したID:g5jEBpoCに向けて
定期的に書き込まれる単発IDによる援護射撃。
そして、ID:g5jEBpoCがいない時間帯には
決して現われない上記のような面々。

115:名前は開発中のものです。
07/04/16 05:02:51 I2bg0tSF
ID:g5jEBpoCじゃなくてID:vOubHFUUだったわ。
ってどうでもいいか。周りのスルー力を見習お。

116:82
07/04/16 11:01:09 5cCE7ez3
え、全部俺の自作自演?
そいつはすごいやw

117:名前は開発中のものです。
07/04/16 23:49:42 vg95lefp
タスクとリフレッシュレートはゲ製の鬼門

118:名前は開発中のものです。
07/04/17 08:47:02 Aek8raYd
>>117
KWSK

119:名前は開発中のものです。
07/04/18 23:28:57 jsz7ODUC
 
 
     菊門と聞いて飛ん来ますた
 
 


120:名前は開発中のものです。
07/04/19 00:02:19 jsz7ODUC
…。
 
 
 
>>104
>>113
ゲームエンジンなんて御洒落な言葉を耳にするようになったのはPS1末期のあたりだな。
それ以前は△△ドライバだの△△君だのタスクシステムだの皆好き勝手に呼んでたぞ。

121:名前は開発中のものです。
07/04/19 01:15:58 7k3O26Dk
ようするにタスクシステムって、ゲーム内のいろんな要素をオブジェクトとして扱って、それをリストにして管理してフレーム毎に実行するだけ?
俺の場合、古めのゲームプログラマが連載形式で解説してるのをネットで見たのが最初だった。
そのちょっとあとぐらいに、やね氏がそのサイトを紹介してた気がする…。

それに感化されてやってみたんだけど、親子関係にあるオブジェクトの場合、平等な関係のタスクで扱うのが面倒くさかった。
素人なんで俺がへっぽこなだけだとおもうけど。
ゲームごとに、オブジェクトごとに最適な管理方法を考える方が楽な気がする。

122:名前は開発中のものです。
07/04/19 01:18:17 0zzWAwAX
タスクがタスクを扱えるようにすればいくらでも楽勝っす。

123:名前は開発中のものです。
07/04/19 02:06:27 Pm183gqV
タスクシステムを最初に見たときは、オブジェクト指向とは全く違う
自由度と再利用性の高い汎用的な管理の仕方だなと感心したよ。
それ以前の俺は、ゲームプログラミングなんて言ったら

CWaitCtrl WaitCtrl;
CRander Rander;
CPlayerCtrl player;
CEnemy enemy[NumofEnemy];
for(;;){
 player.func();//プレイヤーの移動処理など
 for(int i=0;i<NumofEnemy;i++)
  enemy.func(&player);//敵の移動処理など

 Rander.Draw(&player);//うっふん描画
 Rander.Draw(&enemy);//あっはん描画
 WaitCtrl.func();//フレームレート調整
}

みたいにやってたからな・・・。
タスクシステムと比べたらまるでイソギンチャクとメガマウスの差だよ。

124:名前は開発中のものです。
07/04/19 02:25:55 EeW/BzCK
>>120
それ以前というか、今でもそんな感じです。うちの場合。
 
PS2用RPGのチームに異動したときは内製エンジンをタスクシステムと呼んでた。
>>13で紹介されてるそれとはかけ離れた代物になってたけどね。
 
>>121
タスクシステムとゲームエンジンは等価。
ゲームエンジンという単語は元々は海外で使われてたの。
それが日本にも浸透したってだけ。
浸透する以前は内製のゲームエンジンはそれぞれ別の呼び方していた。
タスクシステムとか俺様ライブラリとか様々な方言があったと思うよ。
 
>リストにして管理して
 
竹やりで万歳突撃?

125:名前は開発中のものです。
07/04/19 02:26:33 vUHs3Nla
>>123
メガマウスの具体的な例をお願いします…。
ぱっと見だけど、かなり場数を踏んでる(プロの)方?


126:名前は開発中のものです。
07/04/19 02:35:14 Pm183gqV
>>125
メガマウスってでかいんだぜ。
ジンベエザメよりも、シロナガスクジラよりもでかいんだぜ。
でもイソギンチャクって小さいんだぜ。
あと俺みたいな奴がプロだったら
日本はもっとデフレ状態になっても誰も就職に困らないだろうな。

127:名前は開発中のものです。
07/04/19 02:36:33 Pm183gqV
あ、メガマウス小さかった。
なんだったけな、最大の海洋生物って。

128:名前は開発中のものです。
07/04/19 02:54:09 EeW/BzCK
>>123
タスクシステムは特定の実装方法を指すものではない。
 
「古代の究極奥義、ダイエットシステムでこんなに痩せた!」
 
とか言わないのと一緒。


129:名前は開発中のものです。
07/04/19 08:09:39 E/KhOlb0
>>123
コンテナクラスを内包したEnemyFactoryを作って
処理ループではメンバ関数一つ呼べば管理が楽にならん?
Class EnemyFactory {
Vector<CEnemy> EnemyArray;
(略)
public:
func(CPlayerCtrl& player)
}

enemyfactory.func(&player);を一回呼び出せば全てを処理してくれるように。
って、これがタスクシステムなのか?

130:名前は開発中のものです。
07/04/19 14:16:22 KkZ4qP8H
だからさー、お前の脳内定義でのタスクシステムに必須条件って何よ。
ダンボール紙の盾をイージスシステムと名付けるのはお前の自由だが
他人に同意を求めるような話じゃねーだろと。

たかがローカル用語に、具体的な実装も含めた意味付けをして
再定義して普及させようとする仕切り行為は全て徒労に終わる。
 
ゲームプログラマは基本的に天邪鬼だからな。

131:名前は開発中のものです。
07/04/19 21:20:45 I+5EKnEr
>>127
スレと関係ないけどメガロドンじゃね?大昔の巨大サメ。

>>130
>必須条件
これじゃ駄目なのか?

URLリンク(en.wikipedia.org)

>A task is "an execution path through address space".In other words, a set of program instructions that is loaded in memory.
>タスクは「アドレス空間を通る実行パス」です。言いかえれば、メモリにロードされるプログラム命令のセット。

風呂桶でも紙コップでもなくて「入れ物」に相当する用語がタスクなんだけど、
それを「俺んちの風呂桶」の意味で使う奴がいるのが問題なんじゃないかと思う。

132:名前は開発中のものです。
07/04/19 21:56:37 let+IdBl
そういうこったな。
taskはprocess並に汎用的な技術用語。
そのケツにsystemを付け加えるだけで

>タスクシステムを最初に見たときは、オブジェクト指向とは全く違う
>自由度と再利用性の高い汎用的な管理の仕方だなと感心したよ。

↑こんな胡散臭い話になる。マジでお勧め。
「去年まで金無し君だったけど」の改造コピペ文が作れるな

133:名前は開発中のものです。
07/04/19 22:42:06 EeW/BzCK
>>123
なんか釣りっぽいが、君の言うタスクシステムってのはこんなやつ?
URLリンク(codezine.jp)
 
これ、ゲームプログラミングの基礎教材としては優良だとは思うが
タスクシステムという単語の使われ方はキッパリ忘れたほうがいい。
 
これ読んで「タスクシステムすげー!」「マジ感動!」
と歓喜して許されるのはリア厨、リア工まで。

それ以上なら技術者(の卵)として最低限のリテラシーが
欠けてるかもしれないと疑ったほうがいい。

何でもいいからオペレーティングシステムの教科書でも
一冊買ってみて読んだほうが遥かに勉強になると思うよ。

134:名前は開発中のものです。
07/04/19 22:47:04 Pm183gqV
リア工なので許されるという

135:名前は開発中のものです。
07/04/19 22:48:45 EeW/BzCK
アンカーミス。>>132じゃなくて>>129

136:名前は開発中のものです。
07/04/19 22:49:58 EeW/BzCK
>>134
RTOSの本が面白いと思うよ。

137:名前は開発中のものです。
07/04/19 22:58:21 let+IdBl
>>135
俺かいw

つーのは冗談として。。。
組み込み系の書籍はたしかに参考になるな。

俺も井の中の蛙にならんように精進せんと。

138:名前は開発中のものです。
07/04/19 23:00:12 GlQD7rdS
タスクシステムってメモリに対して最適化した設計スタイルなんじゃねーの?
ギャラガとかの古の時代の産物なんだから、言葉自体を葬った方がいいんじゃないかと。

139:名前は開発中のものです。
07/04/19 23:02:37 let+IdBl
>>138
>タスクシステムってメモリに対して最適化した設計スタイルなんじゃねーの?
>タスクシステムという言葉自体を葬った方がいいんじゃないかと。

本来はタスクシステムのローカル定義

140:名前は開発中のものです。
07/04/19 23:04:29 let+IdBl
途中で送信しちまった。
 
>タスクシステムってメモリに対して最適化した設計スタイルなんじゃねーの?

そのタスクシステムのローカル定義を葬ったほうがいいのであって
タスクシステムという言葉自体に罪は無いぞ。立派な技術用語だ。

141:名前は開発中のものです。
07/04/19 23:37:23 EeW/BzCK
「ギャラクシアン」「タスクシステム」でぐぐると
ナムコ信者とかレトロゲーマニアの知ったかウンチク話として
「タスクシステム」が再定義され広まったのがよく分かる。

こういう出典不在&伝聞のみで造られたゲームファン用語を
真に受けた素人がCマガの記事を書いて更に広めたのは
致命的だったね。

142:名前は開発中のものです。
07/04/19 23:54:13 9JdMu3w7
どっかのスレで「古典タスク」とかいう謎の言葉を見かけたな。
あとは「タスクシステムはもう古い」とかいう珍発言もたまに見る。

ゲームファン用語というより知ったかワナビー用語だろ。

143:名前は開発中のものです。
07/04/20 00:01:20 cgQq0Bo+
ローカル定義だけ葬るのはもう無理か。
ゲームエンジンでいいよもう。

というわけで関数アドレス+汎用ワークメモリのリンクリストが〜とか
どうでもいい仕掛けを車輪の再発明して延々その素晴らしさを語ってる
オナニストが作ってるのはセンズリシステムでいいよもう。

Irrlicht使おうぜ。

144:名前は開発中のものです。
07/04/20 00:16:48 65Qprn+K
俺はCrysis Engineを触りたい。

145:名前は開発中のものです。
07/04/20 02:10:06 cGzgTfv7
しかしデリゲートをベクターコンテナにぶち込んで使う

146:名前は開発中のものです。
07/04/20 03:42:12 RUahNebB
オレはIrrlichtに自前のタスクシステムを乗せるよ。

147:名前は開発中のものです。
07/04/20 07:42:04 ZqUifK9K
関数ポインタだとか汎用ワークメモリだとかは
初心者にとって勉強になるから再発明上等なんだが、
その程度のレベルの奴が悟った気になって
中途半端な理解で解説を書いて広めるからタチが悪い。

148:名前は開発中のものです。
07/04/20 11:42:46 EI0MmUU2
>>147
そこまでおっしゃるんなら
是非みんなの目が覚めるような解説サイトを作ってください
ID:ZqUifK9K先生!

149:名前は開発中のものです。
07/04/20 12:17:21 ohBEpQ/x
タスクシステムを紹介してる人を叩くスレはここですか

150:名前は開発中のものです。
07/04/20 13:19:25 J62A1B0A
また>>82が来たのか

151:名前は開発中のものです。
07/04/20 13:44:21 EI0MmUU2
また>>90が来たのか

152:名前は開発中のものです。
07/04/20 14:51:16 ignHfO5a
確かにタスクシステムは可用性の高いやり方ではあると思うけど、
実態は単なるリストのデータ構造なので(勿論それから拡張された高度なものも存在するけど)、
「タスク」やら「システム」やらの単語は不似合いに思えないことも無い。
そしてそういう単語で付け上がるような中二病野朗は非常にたちが悪い。
死んでくれとは言わないけど、考えを改め直して現実を見て欲しい。


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

5329日前に更新/120 KB
担当:undef