[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 05/09 18:44 / Filesize : 126 KB / Number-of Response : 339
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

タスクシステム総合スレ part4



1 名前:名前は開発中のものです。 mailto:sage [2009/02/01(日) 12:38:10 ID:rVEgp4cM]
タスクシステムについての議論、相談、質問、雑談などのスレです

part3 pc11.2ch.net/test/read.cgi/gamedev/1226199100/
part2 pc11.2ch.net/test/read.cgi/gamedev/1196711513/
part1 pc11.2ch.net/test/read.cgi/gamedev/1173708588/

52 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 00:46:05 ID:/BuTmFOA]
1,2,3を混ぜたい時はどうするんだ?
単一の巡回呼び出しでは呼べないぞ、それじゃ。

というか、3は明らかに不要だろ。
taskの更新処理は1と2以外にないだろ。

53 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 00:48:58 ID:e5oU/vxX]
>>49
何か勘違いしているように思える。

(1)に限らず、(2)でも(3)でも毎フレーム呼び出されると思うのだが。

54 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 00:53:46 ID:/BuTmFOA]
>53
3は論外だが、普通に実装すれば1と2はきちんと呼び出し元に帰るから問題ないんじゃね?

55 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 01:01:17 ID:e5oU/vxX]
>>54
(2)は、1フレームごとに呼び出し元に戻らないのか?戻らないとしたらいつ戻るんだ?

そもそも1フレームごとに呼び出し元に戻すためにcoroutineにしているんだろ?

わけがわからん…。

56 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 01:27:02 ID:9DTLfrVW]
>>52
単一の巡回呼び出しですべて巡回させる必要はないと思う。
もちろん共通のタスクプライオリティを実装して単一巡回にしてもいいのだけれど、
ここではタスクの呼び出し順序に依存しないコーディングを前提としてみた(3はそもそも処理順序を付けられないし)。
んで、今までの慣例的なゲーム開発手法で考えると確かに3は使わないように思えるが、
これから先の開発手法(MTフレームワークとか)もにらんだ話であるし、
「タスク=フレームをまたいだ継続的処理の抽象化」という観点から同列に扱っている。
ただ、現状では貴重な資源であるネイティブスレッドを本当に他と同列に扱えるかというと難しいとは思う。

>>53
いや、3はただのスレッドだよ。2は、なんかごめん。確かに混乱するかもなこれ。
call() は毎フレーム(コンテキスト差し替えの上で)呼ばれる関数で、call() の中では yield し続けると思ってくれ。

57 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 01:37:27 ID:e5oU/vxX]
>>56
毎フレームcallが呼び出されるなら、結局呼び出し側(タスクシステム)からしてみれば、
単なるメソッド呼び出しなわけで、その実装の詳細(coroutineで書かれているか/いないか)は
どうでもいいのでは?

だから、(1)と(2)でinterfaceを変更する意味がわからない。
どう見ても共通のinterfaceで良いように思える。

58 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 01:42:57 ID:e5oU/vxX]
>>56
> 「タスク=フレームをまたいだ継続的処理の抽象化」という観点から同列に扱っている。

についてだけど、タスクはフレームをまたぐが、少なくとも1フレーム以内に制御はいったん呼び出し側に
戻ってこないと困ると思うのだが。

ID:9DTLfrVWは何かここを勘違いしているような気がする。

そもそもスレッドを割り当てるのは、呼び出し側で制御すべき問題であって、
スレッド一つ割り当てて実行させたいからと言って呼び出される側のタスクが勝手に
スレッドを作っていいわけではない。

ここまではわかってる?

59 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 02:02:00 ID:9DTLfrVW]
>>58
んー、古典タスクの定義にこだわりすぎだと思うんですが
あくまで近代的タスクという思考実験なので・・・
暇な時に簡単な参考実装でも作ってみようかな

>タスクは(略)1フレーム以内に制御はいったん呼び出し側に戻ってこないと困ると思うのだが。
1と2は戻ります
3は戻りませんが、ユーザプログラムはそれを分かって3を使うわけなので困らないと思いますよ

>そもそもスレッドを割り当てるのは、呼び出し側(タスクシステム)で制御すべき問題であって、
スレッドの割り当てはユーザプログラムが制御すべき問題であって、
呼び出し側(システムプログラム側)ではない、という考えでこうなっています。
MTフレームワークではシステム側で各スレッドにタスクを振り分けて負荷の分散を
行っているらしいのでそういう場合は仰るとおりですが、
それを前提にすると1と2も排他処理必須になるのでちょっと複雑になりすぎるかなと。

60 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 02:11:55 ID:e5oU/vxX]
>>59
> 3は戻りませんが、ユーザプログラムはそれを分かって3を使うわけなので困らないと思いますよ

戻らないということは、そのスレッドは呼び出し側で生成したスレッド
そのまま使い切ることになるのだから、「呼び出し側(システムプログラム側)では
ない、という考えでこうなっています」と明らかに矛盾してるんだが。



61 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 02:23:22 ID:9DTLfrVW]
CreateThread()というAPIがあるとして、誰がCreateThread()を呼ぶかと言う話なら
それはシステム側になると思いますけど、
作成タイミングもスタック容量もユーザプログラムが制御するのだから別に矛盾してないと思いますよう

それより、なんか疑問点を出されているというより粗探しをされている気がする
どうして突っかかられてるのかが分からないなあ

62 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 02:38:16 ID:e5oU/vxX]
>>61
粗探しをしているつもりはないので、疑似コードなり何なりを出してもらえれば
協力はさせてもらうが。

threadというのは生成に時間がかかるものであって事前に作ってpoolingして
おくのが普通であって、stack sizeなんか都度指定されたらpoolingしている
threadが使い回せない。

つまり、(3)でスレッドを割り当てて欲しいときにstack sizeの指定はいらない。
タスクシステムからのupdate呼び出しのなかでスレッドを割り当てて欲しいときに

threadPooler.Run(boost::function(&MyClass::Worker));

とするだけのことではないか?

だから、(3)を、普通のタスク(1),(2)と区別する意味が俺にはよくわからないのだが…。

63 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 03:06:56 ID:WlW8taMc]
とりあえずどんな問題を解決したいのか明らかにしてからコード書いてください。おねがいします。

64 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 03:10:28 ID:9DTLfrVW]
>>62
なる、プールされたスレッドってのは考えてなかったです

例に挙げられたコードも分かりやすいと思いますが、
とりあえず>>49の方向でそうした実装を取り入れるなら、
PreemptiveTask のコンストラクタがスタックサイズを引数に取らないようにして、
内部的にプールされたスレッドを使い回すようにすると良さげかもですね
それか、必ずプールされているのも都合が悪いことがありそうだから
PooledPreemptiveTask のような新しいクラスにそうした実装を組み込むか
とりあえず、その辺はより実装に近い部分なので、ゆっくり煮詰めていくたぐいの話ではないですかね

1、2、3をそれぞれ区別するのは、使い手側から見た時に混同せず
明確に区別すべきものだからです(コーディング方法もそれぞれ異なるし)
>>62はシステム側の都合から見てるから区別不要に思えるんじゃないかな

>>63
え、おれ?ごめん

ということですいませんが、そろそろ寝ます
敗北宣言

65 名前:名前は開発中のものです。 [2009/02/05(木) 03:50:41 ID:MYSEarFY]
近代的タスクシステムの構築(2)
d.hatena.ne.jp/yaneurao/20090204

66 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 04:12:57 ID:Ib2V0W+J]
やねうらおの方からきますたw

まあ、ゲームオブジェクト管理周りをどうするかは作るもん次第、銀の弾丸なしってことで、
それはプログラマの仕事がなくならないってことで、いい話なんじゃね。

67 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 07:42:18 ID:V08fWeRa]
やねも昔ほど強く言わなくなってるな
実は必要無いってもう気付いてるな
そもそもタスクシステム、コーティングの手間しか削らない割に記述の複雑さは一級品だからな
ベタガキで誰でも読めるソースになるならそのほうがいいだろ
長い期間強く組む為には構造は単純でないと駄目なんだよね

68 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 07:42:24 ID:/BuTmFOA]
>64
1,2,3を混ぜて巡回呼び出ししたい場合というのが存在するから、同一I/Fから呼び出せないと困るぞ。

例えば、全てのtaskにコンテキスト保存が必要では無い場合に一部taskは1で作成するとかな。

69 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 17:15:53 ID:tABpRsfL]
>>32
現代じゃなくて近代なのか。ずいぶん遠慮がちに書くのだなぁ。最初から後退戦か
敗北主義を匂わせれば、相手は正面から斬り付けるのを躊躇うはず、という計算が
見え隠れすんなぁ

>いまの視点(2009年)で見たときに拙著(ASIN:4798006033)にて不足している部分を補足するため

今までは利得がどこにあるのかを決定的に見誤っていた、と白状したほうが高感度アップな

>成熟したタスクシステム(タスク自体のデバッグを支援するタスクデバッガのような環境を含めて
>「タスクフレームワーク」と呼ぶほうがふさわしいかも知れない)は、ゲーム開発において依然として有用であり

それにしてもタスクフレームワークとか鼻クソみたいな造語を作るの好きな人が多いな
ビデオゲーム開発のためのフレームワークなんだろ?
ビデオゲームというのは何かしらの時間ステップで何かしらの逐次処理(数値積分など)を
繰り返すもの。そしてその処理は複数。だから並行処理ないし並列処理することになる
どんなものであれ、その内部でジョブステップ(タスク)が駆動するなんて当たり前のこと
ありふれたこと。むしろないほうがおかしい

なのにビデオゲーム開発のためのフレームワークの看板にタスクを掲げる
つまり【タスク】が他のフレームワークには存在しない特徴でありウリだと思い込んでる

タスクというキーワードに何か特殊な意味・特定の実装(>>2とか)を連想し、それ以外は
タスクではない、という視野狭窄・自己中・ド田舎ルール・カルト信仰が見え隠れするね
つまりタスク厨

タスクというキーワードに対する思い入れの強さ。これは>>2、松浦本ベースの劣化
トンデモ情報による刷り込みがやねうらおにも及んでいた可能性を示唆する

70 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 20:01:26 ID:1mXFjsrF]
何と戦っているんだ?



71 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 20:05:59 ID:tABpRsfL]
>>32
>現代において、タスクシステムを実装するなら、もう少しタスク間通信を抽象化してタスク側から
>タスクシステムが保持しているlistには直接触れないようにするべきだが

今度は近代じゃなくて現代なのか
はっきり言っちゃうよ。それは時代ではないんだよ。それは開発規模に応じた普遍的な要求なんだよ
例えば大所帯でRPG作るとき、みんながジョブエントリ・タスクエントリのコンテナに直接触れたらどうなる
わかるよな?
15年以上前にはビデオゲームの世界にさえジョブモニタやタスクモニタといったものが存在した
これは汎用機や組み込みシステムのモニタやOS(RTOS)が大昔に進んだ道を踏襲しているに過ぎない

32bit機が登場した頃には中堅どころでさえブクブクと膨れ上がるゲームのボリュームに汲々としており
ジョブを記述するユーザー(スクリプタ含む)にジョブエントリやタスクエントリのコンテナへの自由な
アクセスを許可するなんて蛮勇以外のなにものでもないケースは珍しくなくなっていた
一定以上の規模になればユーザーを中枢から隔離するなんて時代を問わず当たり前のこと
CだのC++だのアセンブリ言語だの関係ない

これを【現代】の流れというなら、それはやねうらおの内なる世界における歴史的系譜を辿る際に
現代の1ページに登場するとある事変に過ぎず。やねうらおの個人的出来事に過ぎない
『やねうらおの歴史 〜やねうらおの近代そして現代〜』というタイトルで出版したほうがいい
みんな買うよ

72 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 21:33:53 ID:HwyPz9yB]
ID:tABpRsfLはなんでそんなに日本語が不自由なの?

73 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 21:44:34 ID:sYm6Gfdu]
タスクというキーワードに対する思い入れwww

74 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 21:48:23 ID:Kg6Z2A1M]
やねが今回タスクシステム(なにそれ?)を語りだしたときに
それがどういう規模のゲーム開発のお話なのか、という部分には
一切言及しなかったよな
この手のお話には必須の大前提なんだけどバサーリ省いた
あらゆる規模にタスクシステムとやらいうものが適用するメリットがあると
考えてるんだろうかね
もうこの時点で彼のタスクシステム(はぁ?)論は敗北確率急上昇だろ

とても残念だ

少人数・ないし一人のプログラマによる小規模開発ではベタ書きのがいい
彼の言うタスクフレームワーク(あ?)とかいうもの。こいつを構築するために
支払うイニシャルコストがペイできる分岐点ってもんがあるわけ

やねはここを見積もってないんだろうね




75 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 21:56:59 ID:Kg6Z2A1M]
誰と作るのか。何人で?そいつらの戦闘力はいくつ?期間は?実装対象は?
開発機材は?既存のライブラリとかのリソースは?買っていいの?

こういうファクターを丸無視してコーディングスタイルとか設計の是非を語ろうったって
解なんて出やしない。だからやねがエロゲ作ってるならエロゲ話のことだと言えばいいんだよ

PC用3Dエロゲにおけるタスクシステムの有効性について

とかな。あ、3Dは駄目なんだっけこのオッサン


76 名前:名前は開発中のものです。 [2009/02/05(木) 22:06:28 ID:Kri4Crxo]
やねうや夫は2Dオヤジだから一般化して語れないぞ

あとゲーム専用ハードのゲーム開発経験もないんじゃないかな

77 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 22:39:01 ID:tABpRsfL]
やねうらおさんってコンシューマ畑とも縁遠いのか。それは失礼した
DSで死にそうになってるフェードアウトハゲが10年単位の周回遅れで
発明した独自理論を得意げに語ってるのかと思ってた

エロゲの人ならこういう発見もアリなんじゃないかな。煉獄へようこそ

78 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 23:02:22 ID:AceVSe0N]
>>36
前々スレから散々におわせていたことをようやく認識した
ということだろうね

IDだのハンドル云々の話は10年近く前にファミベのよっしんが記事を書いてる
www2.tky.3web.ne.jp/~yosshin/memo/000213.html
アーケードやコンシューマと無縁なやねなら確実に読んでると思うんだけどね
参考リンクとして貼りゃいいのに

よっしん氏が呼んでるタスクシステムという代物と>>2は同一ではないよな
>>2はタスクリストとかいうものを周期的にナメまわしてバッチ処理するだけ
「はいこれでオシマーイ。あとはお前らにお任せだっよーん」みたいなゴミカス
最近じゃこれだけでタスクシステムってことで通用するんだから
タスクシステムはタスクの相互作用なんて気にする必要まったくないわけ
変な通信機能盛り込むなよ

79 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 23:10:23 ID:yvQde++7]
>>74
d.hatena.ne.jp/yaneurao/20090204

> すべてのゲームにタスクシステムが必要なのではない。

はっきりと書いてあるのに

> あらゆる規模にタスクシステムとやらいうものが適用するメリットがあると
> 考えてるんだろうかね

とは、とても残念な理解力ですね。

80 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 23:15:47 ID:/BuTmFOA]
>74
> 彼の言うタスクフレームワーク(あ?)とかいうもの。こいつを構築するために
> 支払うイニシャルコストがペイできる分岐点ってもんがあるわけ
> やねはここを見積もってないんだろうね

逆に、一人で開発してるなら何やってもイイと思うけどね。




81 名前:名前は開発中のものです。 mailto:sage [2009/02/05(木) 23:45:46 ID:/BuTmFOA]
>12
> update();
> で動くのと
> update(jiki,teki,tama,unko);
> で動くのとじゃ
> プログラムとしては絶対に下のがいい

普通に考えると、visitorに共通コンテキストを持たせてコンテナ内のタスクを巡回処理させる。
引数で渡すなんて愚の骨頂。

82 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:09:26 ID:wGKtGJau]
>>81
>>12=スレ主=基地外が前スレで判明している。触るな危険。

83 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:12:08 ID:H1z7Q+5u]
>>81
引数のない関数ってどうよ?
お前、自分が使ってみろって言われたときのこと考えろよ

84 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:15:46 ID:4xm8YBEc]
>83
おまえvisitorの意味判ってないだろ。

85 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:18:56 ID:H1z7Q+5u]
>>84
関係ないね
大事なのは引数で渡すことによって関数無いで変更される恐れのある
インスタンスを明確にすること
お前のような素人はデザパタの前にC言語でも勉強しろ
なにせ引数もよくわからずグローバル変数で渡してるぐらいの低知能なんだからなw

86 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:19:44 ID:4xm8YBEc]
>85
やっぱり判ってないのかw

87 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:20:01 ID:1vVyPOFv]
釣りにしか見えない

88 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:20:20 ID:H1z7Q+5u]
>>86
引数の有効性はわかったかね?

89 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:23:00 ID:H1z7Q+5u]
>>86
前スレよろしく
今回も俺が特別に教えてあげよう

上のupdate()は関数内で何にアクセスしてるのかまったくわからないが
下のupdate(jiki・・・)はアクセスしてるインスタンスを引数に絞ることができる
(グローバル変数を使わないという規約を守れば)
これによってデータの安全性が保障されるというわけだよ
君のようにコーディングの効率ばっかりとって
引数もわからんような低知能は俺と話すようなレベルにないということがわかったかね?

90 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:26:08 ID:ux7UjNgY]
>88
ここまでムキになるということは、>12=スレ主ってヤツかwww
修正コストとか考えたこと無いんだろうなぁ。幸せなヤツw



91 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:26:51 ID:1vrKKSIM]
ID:H1z7Q+5uが噂のスレ主だな
一人だけ極端にレベルが低いのにその自覚なし

92 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:28:03 ID:Cfc6lR6P]
こらこら、触るな危険といってるだろうに。

93 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:31:12 ID:ux7UjNgY]
>89
> 下のupdate(jiki・・・)はアクセスしてるインスタンスを引数に絞ることができる

笑っちゃうなwww
ということは、ID:H1z7Q+5uはtaskの種類によって引数が変わることが前提か。
もしかしてtask保持コンテナも別に持つ派なのか?

例えば敵タスクがあったとして、雑魚敵Aと雑魚敵Bが異なるコンテキストを必要とする場合とか
考えたこと無いのか? 雑魚敵Aと雑魚敵Bで最小公倍数的な引数を取るupdate関数をつくったら、
それはID:H1z7Q+5uが>89で言っていることと矛盾するって気づかないのか?

94 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:34:26 ID:1vVyPOFv]
残念なスレ主と遊ぼうのスレはここですか?

95 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:52:39 ID:nWDkACnD]
押すなよ! 絶対押すなよ!

96 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:53:38 ID:ZPF/rc3n]
>>80
その一人開発ってことは趣味の世界の話でいいよな?
プロの一人開発ったってフリーランスという名のプーでもなければ
自分一人の問題じゃねーし、他と折り合い付けないと会社つぶれるしな
>>2ベースのゲロゲロフレームワークなんて誰も使いたがらないから作らないよ

で、趣味野郎でオナニーフレームワーク?これもあんま意味ないよ女子高生
大多数のパンピースペックの趣味プログラマは無難にサクっとゲーム一本
作りあげる方法を模索する
パンピースペックの趣味野郎がオナニーフレームワークとかいうハマリ道に
進んだら大半は生きて還ってこれん。終わり無きライフワークになるだろ
まぁそれはそれで楽しい人生なのかもね。否定はしない

ゲームではなく部品を作ることに情熱燃やして技巧に走って茨の道へ突進して
何年もの歳月をかけて山篭りして誰にも使われないフレームワークを構築する人生
悪くない。でもその結果が>>2ベースのゲロゲロシステムじゃな。成仏できんの?w


97 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 00:59:04 ID:1vrKKSIM]
96もスレ主じゃね?こいつ本当に頭おかしいんだな。

98 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 01:00:52 ID:ZPF/rc3n]
引数君と一緒にすんなハゲ

99 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 01:05:33 ID:1vrKKSIM]
>>98
じゃあ、この残念な引数君にも何か言ってやってくれ

100 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 01:17:02 ID:ZPF/rc3n]
引数君がアンチタスクだということは知っているが、前スレ終わりごろの
議論の内容がよくわからん
俺は>>2=チンカスゴミカス だと思ってるが引数君とは批判のベクトルが違うようだ
彼は数種類のクラスに共通のインターフェースを与え、共通のコードから呼び出す
というメカニズムを全否定してるのだろうか?だとしたらそれは仮想関数の全否定であり
わけわからん

引数君の主張内容がよく分かってない



101 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 01:25:06 ID:1vrKKSIM]
>>100
>>12

102 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 01:29:48 ID:ZPF/rc3n]
あぁ?

103 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 01:34:39 ID:1vrKKSIM]
引数君の主張なら>>12のリンク先を見れば十分わかると思うんだが、わからないのか?

それとも、あんたも日本語の残念な人か?

104 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 01:39:11 ID:ZPF/rc3n]
俺は前スレの>>823だ。何なら他の発言も発掘してこようか?

105 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 01:43:50 ID:OdnmQxD5]
引数君の方がまだ技術に近い話をしてる分マシだな。
もしかして彼はひらしょー氏の言うデータと処理の分離を
超まわりくどく主張しているのかな。

106 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 01:50:49 ID:1vrKKSIM]
>>104
前スレ823か。

引数君よりは能力的にマシだということはわかるが、説明がくどく、わかりにくい。

俺はこんな内容の薄い、回りくどい説明を読むのはまっぴらごめんなので、さいなら。

107 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 02:08:15 ID:EVIE955W]
ESP能力に問題があるID:1vrKKSIM は
すべてのアンチタスクがスレ主に見える病気を克服するべき

108 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 02:09:41 ID:ZPF/rc3n]
超能力能力か

109 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 02:12:05 ID:EVIE955W]
くっ…。どうして「お前はバカを克服するべき」って言ってくれないの?
内容の薄い、回りくどい指摘を読むのはまっぴらごめんなので、さようなら

110 名前:名前は開発中のものです。 [2009/02/06(金) 07:38:45 ID:RQ4iGJCo]
お前等馬鹿は、プログラミングで一番時間がかかるのはどこですか?
と聞かれてコーディングとは絶対に答えないくせに
コーディングの手間ばかり減らすことに執着している
なかなか読めないプログラムってなんだ?
構造が複雑なプログラムじゃないの?
お前等馬鹿は全く逆のことを自己満足のためにやっているオナニストだ
プログラマならせめて理詰めで動けよ
お前等凡人から理性まで抜いたら猿と変わらないだろ



111 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 09:47:48 ID:SpEabv2C]
>>32
えーと、この人ってイイ歳した何者なの?プロ?パソゲー専門なんじゃない?

>ビデオゲーム黎明期においては、オールアセンブラで書くことが普通だったので、
>std::listのような便利なコンテナがあるわけでもなく、技巧的な方法でstd::list
>みたいなことを実現していただけ

えっえー?この人のいうビデオゲーム黎明期っていつごろのお話なのかな?
70年代?だったらまずZ80アセンブリで>>2を書いてみればいいのに。おかしな人だよ
16bit機時代?intrusiveなコンテナを使った理由がオールアセンブラだから?本当に?

最近は想像だけで昔話を書いても教科書になるのかしら?
どこのゲー専の子が犠牲になるのかしら。ちょっと可哀相ね
知らないことは知らないって言えばいいし、足を使って取材しに行けばいいと思う
んで、頭下げて監修してもらえばいいと思う。このままじゃあんまりだよ

>古典的なタスクシステムにおいてはタスクに番号(プライオリティ)が振られており
>番号を指定して特定のタスクのポインタを得ることが出来た

えっえー?つーか古典的タスクシステムってなんじゃい?ファンタジーゾーンなの?



112 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 10:34:43 ID:wGKtGJau]
>>111
あんた、何かがしゃべり方がキモイんだけど。

それはそうと、相手は年収何千万もある凄腕のプログラマらしいので、
技術的な反論は是非どこかのブログでやっちゃってください。

113 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 21:26:12 ID:+KF0MHRv]
タスクシステムでグローバル変数使うから駄目だって意見が多いけど、
でも見渡してみると、ウィンドウズのウィンドウだってそういうしくみだしなぁ。

114 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 22:07:10 ID:H/Ui7lv7]
エロゲー製作は大変ナリよ
d.hatena.ne.jp/yaneurao/searchdiary?word=%a5%a8%a5%ed%a5%b2%a1%bc%c0%bd%ba%ee

115 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 22:31:40 ID:RQ4iGJCo]
>>113
ウィンドウ同士であまりやりとりしなくてもあの複雑さだぞ
リストコントロール2つを連動させるだけでもやばいくらいの手間
基本的にウィンドウズの作り自体関連がたくさん生まれる処理に向いてない
あくまでも独立した動作が前提

116 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 22:36:12 ID:nWDkACnD]
>>113
そう思ったのなら両方とも自分で実装してみて比較検討だ!

でも数千行レベルでは使いやすかったやり方が数万行レベルでも同じように使いやすいままかどうかはまた別問題だ!
そこは注意な! 王道はグローバル変数使わないことだぞ!

117 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 23:12:31 ID:ux7UjNgY]
また引数クンの登場か。

>93について、具体例を挙げて答えてよ。

118 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 23:44:30 ID:H1z7Q+5u]
>>117
はぁ?何言ってるのかわからない
俺が言いたいのは関数に引数つけろってそんだけだけど?
コンテキスト?は?
そんなもん使った時点で負けだ馬鹿
設計死んでるんだよ
俺の価値観ではそんなもん使った時点で負け
void*となにも変わらない

119 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 23:45:58 ID:H1z7Q+5u]
まあ、用は固定でない引数に意味がないんだよね
俺の価値観からすると

120 名前:名前は開発中のものです。 mailto:sage [2009/02/06(金) 23:53:12 ID:4xm8YBEc]
>118
> はぁ?何言ってるのかわからない

じゃ、具体的に質問するけど、雑魚敵Aと雑魚敵Bに関係性が出てきたらどうするの?
例えば雑魚敵Aは雑魚敵Bを殺すことがある、となった場合に、雑魚敵Aのupdate関数の引数に
雑魚敵Bのリストを渡すの?



121 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 00:21:27 ID:lLkuERdr]
>>120
>雑魚敵Aのupdate関数の引数に雑魚敵Bのリストを渡すの?
それをやってはダメ
哲学的になるけど
基本的に雑魚敵Aが雑魚敵Bを殺す現象ってのは
雑魚敵Aの中の処理でも雑魚敵Bの中の処理でもないでしょ?
つまり雑魚敵ABに書くべき処理ではない

このアクションはあくまでも雑魚敵Aと雑魚敵Bが存在する空間で起こったことであって
それをシーンクラスとしたらそこに書くべき処理じゃねぇかな?
オブジェクト指向的にはよ

俺はオブジェクト指向原理主義者(テロリストではないw)だけど
基本的にオブジェクト指向を変な解釈をしないとしたら
種類の異なる(=クラスの違う)雑魚敵A、雑魚敵B、雑魚敵C、雑魚敵Dといたとして
それらの関連、つまりAxB、AxC、AxD、BxC、BxD、CxDの関連は全部シーンクラスに書くべきじゃないのかな?
そこはオブジェクト指向は手伝ってくれないと思うんだけどね(原理主義者的には)
昔ながらのC言語風味に書いたほうがうまくいくと思うよ

122 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 00:23:19 ID:UFXAc++2]
>121
> 種類の異なる(=クラスの違う)雑魚敵A、雑魚敵B、雑魚敵C、雑魚敵Dといたとして
> それらの関連、つまりAxB、AxC、AxD、BxC、BxD、CxDの関連は全部シーンクラスに書くべきじゃないのかな?
> そこはオブジェクト指向は手伝ってくれないと思うんだけどね(原理主義者的には)
> 昔ながらのC言語風味に書いたほうがうまくいくと思うよ

今はっきりわかった。キサマはクズだ。


123 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 00:30:10 ID:lLkuERdr]
>>122
なんでだよ
いいこと教えてやったのに
何がどうダメなのか言ってみろ
勉強になるぞ
なにせ俺は10年以上もやってんだからな

124 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 00:32:45 ID:NuBn44S3]
10年以上ワナビー君ですかwww
ヒッキーニートで親のスネカジリ。楽しそうですねwww

125 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 00:35:05 ID:lLkuERdr]
>>124
不毛な会話したくないんだ
どこがどうダメなのか思ったこと言ってみろ
なんとなく漠然とある自分にとっての常識なんて大抵間違ってる場合が多いぞ

126 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 00:38:14 ID:NuBn44S3]
>125
雑魚敵が20種類くらいいるとして、それが相互に関係しあうことを考えてみろよwww
20種類くらいなら、RTSとかだと当たり前にいるぞ。

127 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 00:38:49 ID:XPRCk6pD]
というか、どういえばいいんだろう。
あっちのスレでも書いたんだけど、どの処理を誰が担当するかが難しいわけであって、
タスクシステム云々、グローバル変数云々はあんま関係ないと思うんだが。
たとえば、石クラスと、マップクラスと、それらを管理するシーンクラスがあったとして、
・石に重力を働かせる処理
・石と石の衝突処理
・石とマップの衝突処理
は、それぞれどのクラスが担当すべきだろうか。


128 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 00:39:00 ID:qvO9PNvj]
ヒッキーだが有能なゲームプログラマの発言>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>(越えられない壁)>>>無能な社会人もどきヘタレグラマの妄言

それがここのルールだ。覚えておきな。

129 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 00:39:49 ID:lLkuERdr]
>>126
そりゃ当然それだけの処理が必要になるだろうね
仮にプログラムの組み方が変わったところで
その数が少なくなることは絶対にないからね

それを踏まえて何が問題?

130 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 00:40:05 ID:qe8S2N76]
>雑魚敵が20種類くらいいるとして、それが相互に関係しあうことを考えてみろよwww
>20種類くらいなら、RTSとかだと当たり前にいるぞ。
ダブルディスパッチ




131 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 00:41:54 ID:XPRCk6pD]
>>126
その莫大な組み合わせを纏めるかどうかは書く人の力量次第だが、
書く場所としてはシーンクラスが良いのでは?ってはなしだろ。
お前が読解力ないだけ。

132 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 00:42:20 ID:lLkuERdr]
>>127
全部シーンだろうな

133 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 00:43:44 ID:NuBn44S3]
>128
ヒッキーで無能はどこにいるんだ?

134 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 00:46:56 ID:XPRCk6pD]
>>132
となると、シーンクラスが肥え太って困る。
モジュール化する何かいい方法は無いですか?

オブジェクト指向ってのは、オブジェクト(リソース)の管理は上手いんだが、
オブジェクトとオブジェクトの関連の記述には向いていないんだよなぁ。

135 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 00:48:05 ID:qvO9PNvj]
>>133
居たら教えてくれ。

136 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 00:48:40 ID:cn84NiHO]
>>79
どうでもいいけど、やねうらおの文章の引用部分さ

> すべてのゲームにタスクシステムが必要なのではない。

これ文脈読めばわかると思うけど、規模じゃなくて種類の話だよね
あと、残念な○○っていう表現が大好きなブログがあるよね


137 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 00:49:07 ID:lLkuERdr]
>>134
ないね
オブジェクト指向ではそこが限界
原理主義者の俺が言うんだから間違いない
後はC言語風味にうまく分離して書くしかない

138 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 00:50:51 ID:UFXAc++2]
>137
> ないね

単にモノを知らないだけだな。

139 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 00:51:10 ID:e1gHG0fD]
>>127
衝突したかの判定はシーンクラスで、衝突に伴う処理は
オブジェクト同士のメッセージ交換ってのが俺のやり方だな。

140 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 00:55:40 ID:UFXAc++2]
>127
物理エンジンで本物っぽく動かすつもり?
それとも2Dのマリオやソニックみたいに、それっぽく動けばいいの?



141 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 00:55:51 ID:lLkuERdr]
>>138
関連をオブジェクトに見立てて・・・とか馬鹿なこと始める気?
俺、そういうの読み手にわかりにくくなるだけであんまり意味ないと思うぜ
折角オブジェクトが誰にでもわかる表現にするためにオブジェクト指向を使ったのに
変にトリッキーな解釈(関連=オブジェクトだ!)してわかりにくくしたら
本末転倒じゃね?

って勝手に関連=オブジェクトの話するだけこいつ馬鹿だなー的
先読みをしてみたけど言いたいことあってる?

142 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 00:56:33 ID:XPRCk6pD]
でもちょっとまって。
この流れでいくと、タスクシステムで行うべきことは、
・描画順序の管理
のみ、ということになるな。
その他の処理はすべてシーンクラスで行うと。
晴れて、タスクシステム=グラフィックエンジン
ということになり、みんな幸せになると。

143 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 00:56:47 ID:hO/vsQBF]
>>127
俺なら重力は重力クラスが担当、衝突は衝突クラスが担当するようにする。

重力に引かれたい奴は重力クラスに登録するように!

144 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 00:56:49 ID:vE7+xmqT]
オブジェクト指向的には、当たり判定は関連をクラス化すればおk

145 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:00:11 ID:vE7+xmqT]
>>127
石に重力が働くというのなら地面みたいなものがあるはずだから、
石ー重力ー地面としてこの重力をクラスにすれば使いまわしも出来ていい

146 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:03:06 ID:UFXAc++2]
>143
つ 【オールドタイプの魂】


147 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:04:31 ID:cn84NiHO]
>>121
>基本的に雑魚敵Aが雑魚敵Bを殺す現象ってのは
>雑魚敵Aの中の処理でも雑魚敵Bの中の処理でもないでしょ?
>つまり雑魚敵ABに書くべき処理ではない

YES

>それらの関連、つまりAxB、AxC、AxD、BxC、BxD、CxDの関連は全部シーンクラスに書くべきじゃないのかな?

シーンでも神でも何でもいいけど、ゲーム世界の物理現象の調停者wが
介在し、結果を双方(作用する2体)に通知するというのは全くもって普通
珍しくない

148 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:06:44 ID:lLkuERdr]
ていうか目をさませ
もしオブジェクトが20種類いてそれぞれが関連をもつとしたら
少なくとも
a=オブジェクトの状態の数の総和
aC2(aの中から2つ選んだときの重複のない組み合わせだっけ?)
の数だけ処理を書かなきゃいけないことには
どう組んであろうが変わりはないんだぞ

>>147
なんのメリットがあってそんなわかりにくい書き方をするんだ
無駄だろ

149 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:09:32 ID:lLkuERdr]
あ、aC2じゃ同じオブジェクト同士が抜けてるなw

150 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:10:08 ID:XPRCk6pD]
>>145
重力をクラス化するのは個人の趣味だろうが、
使いまわせるかどうかは怪しいな。

細切れの小さなクラスが1000個ぐらいあって、
それぞれにそれぞれが関係しあって一つの生態系をなし、
結果としてゲームになっている・・・とか。
そういうのって想定外の仕様変更には弱いからなぁ。
まぁゲームの方向性にも寄るのだろうが。



151 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:13:32 ID:cn84NiHO]
>>148
ゲームワールドをゲームエンジン内部で時間発展させてるからさ
衝突イベントでユーザー定義のコールバック関数が呼ばれるやつだ

152 名前:名前は開発中のものです。 mailto:sage [2009/02/07(土) 01:14:32 ID:UFXAc++2]
>147
普通に考えてそれか。

じゃ俺も普通に考えてみるかな。

雑魚敵Aが雑魚敵Bを攻撃して殺す場合、Aは攻撃判定用不可視オブジェクトXを作成する。
BにはXに対する応答のみ、つまりXに当たったら死ぬ、という処理を書く。

攻撃判定用不可視オブジェクトを必要に応じて複数作り、それぞれ攻撃する側はそれを作成し、
攻撃を受ける側はそれに対する応答処理を書く。

シーンクラスには、雑魚敵コンテナと同じレベルで攻撃判定用オブジェクトのコンテナを追加して、
そこで相互の判定をする。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<126KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef