10/01/29 22:52:38 H3puqMBg
適当な意見。
地形タクスのアドレス持つとか、継承させとくとかじゃダメなの?
342:名前は開発中のものです。
10/01/30 00:10:55 Vw2KSwE+
弾タスクリストと地形タスクリスト別々に作りゃいいんじゃね
343:名前は開発中のものです。
10/01/30 01:06:14 +mO4z66u
>>341,342
レスありがとうございます。丁度同じような事が前のスレで議論されていたのでそっち先に見てみます。
344:名前は開発中のものです。
10/01/30 05:58:16 ACjstz4k
>>341
弾タスクは地形タスクがないと存在すら出来ない見事な設計だなw
死ね
345:名前は開発中のものです。
10/01/30 06:10:12 7iJlsIJb
>>344
地形が無いときは見なければいいんじゃないの?
346:名前は開発中のものです。
10/01/30 12:14:19 Zr75YmEa
>>340
静的なマップデータを個々にタスクにする必要ないんじゃないか?
移動する足場とか扉とかアイテムみたいなオブジェはタスクでいいけど。
共通のマップ専用処理+その他オブジェの組み合わせが自然だと思う。
347:名前は開発中のものです。
10/01/30 19:05:55 ACjstz4k
>>345
お前のソース、意味のないヘッダインクルードして癒着が酷いんだな
明らかに無駄なつながりだけどそこになんの疑問ももたずにそういうの
ソースに入れちゃうんでしょ?
カプセル化とか全然わかってないな
348:名前は開発中のものです。
10/01/30 19:18:41 Z5sKkNAh
>>346
たしかに必要ないですね。。。
前スレみた感じだとDBみたいなのを作って検索するというのが結論っぽかったです。
349:名前は開発中のものです。
10/01/30 19:22:05 HDJNxhu9
裸の王様もここまでくるのか
350:名前は開発中のものです。
10/01/30 21:11:22 7iJlsIJb
>>347
普通は抽象化してるから、独立性が高くなるでしょ?
オブジェクト指向の唯一のメリットなんだから。
地形に依存する処理は地形にやらせればいいわけだし
弾はその処理の契機を与えるだけでいいんじゃない?
351:名前は開発中のものです。
10/01/31 01:27:02 030VeqOo
>>350
は?弾が地形のポインタもつのは設計が狂ってるって話してんのに
そんなレス返す辺りお前俺の言ってる意味テキトーにしか理解してないだろ
352:名前は開発中のものです。
10/01/31 01:33:59 3AvaezOm
まず弾が地形のポインタもつのがいけない理由がわからん
バカな俺に説明してくれ
まあ俺だったらグローバルに地形参照してるポインタもしくは地形の変数そのものを置くだろうな
そして必要ならリストにも加える
353:名前は開発中のものです。
10/01/31 01:48:45 030VeqOo
>>352
ああ、君はカプセル化とか気にしない人でしょ?
それじゃまったくわからないだろうね
そしたら全部グローバルにもったらいいで
なにも悪くないよ
ただ、カプセル化とかはわかってないよね
って言ってるだけ
354:名前は開発中のものです。
10/01/31 01:54:01 6qSVPUGq
>>351
地形クラスって限定してるならそうなるだろうけど
もっと抽象化したものをやりとりするものじゃないの?
>>352
グローバルに「地形」と限定したものを持つのはまずいと思う。
宇宙や空には地面は無いかもしれないし。
355:名前は開発中のものです。
10/01/31 02:15:08 PJ5c0R9P
ポインタがNULLなら判定をスキップとかそんなんじゃ駄目なんだろうか
356:名前は開発中のものです。
10/01/31 02:37:55 030VeqOo
逆に考えてみようぜ
地形が弾の情報をほしくなったらどーすんの?
357:名前は開発中のものです。
10/01/31 03:11:53 6qSVPUGq
お母さんに頼んで弾のポインタをもらう。
358:名前は開発中のものです。
10/01/31 03:23:04 Di+guFUQ
どっちか一方が知ればいいんじゃねーの
それか第三者が調停するか
359:名前は開発中のものです。
10/01/31 03:37:51 98e6KIKR
弾タスクが作られたときに一度、地形タスクのポインタを取得すればいいと思ったんだけど
弾が生きている最中に地形が増えていった場合に対応できないから、
弾が衝突する対象のタスクを入れる専用のリストを設ければいいかな?
360:名前は開発中のものです。
10/01/31 04:37:51 Di+guFUQ
俺だったら弾タスクリストも地形タスクリストもグローバルにしちゃうなあ
それやると上の人にカプセル化云々で怒られそうだけど
寧ろグローバルのどこがあかんのですか
大規模集団開発ならともかく、個人の小規模のものなんてグローバルでよくね?
どの道どっかで作ってそのポインタなりを一々渡したりするんだろ
一々面倒じゃん
361:名前は開発中のものです。
10/01/31 05:24:01 WDNFJ5/J
一週間ぶりに見る自分のコードは他人のコード
362:名前は開発中のものです。
10/01/31 05:53:16 CeH4M0fL
ここに居る人達はFSMにならないような記述をどうやって行ってる?
あと今まで古典タスクシステム無視してFSMでしかゲームくんでこなかったから
種類ごとの動作順序がバラバラなのが何だか気持ち悪いよ><
363:名前は開発中のものです。
10/01/31 05:56:28 98e6KIKR
>>362
FSMって有限ステートマシンのこと?
>>FSMでしかゲームくんでこなかったから
具体的にどうやって組むのか教えて。初めて聞いたから知りたい。
364:名前は開発中のものです。
10/01/31 06:04:26 CeH4M0fL
FSMは有限ステートマシンの事だよ。
これでゲームを組むっていうのは、大雑把に例えると
1) タイトル画面を管理するタスクが存在する
2) ゲーム本編を管理するタスクが存在する
3) ゲームオーバーエフェクトを管理するタスクが存在する
の時、タイトル画面からはゲーム開始できるから
(1)->(2)
(2)からはゲームオーバーとゲームリセットが考えられるから
(2)->(1), (2)->(3)
ゲームオーバーするとタイトルに戻されるから
(3)->(1)
こんなFSMができあがる。
ゲーム中の敵みたいなオブジェクトも
敵生成エフェクト->
敵が発生する->
敵が存在する(行動する事が閉じたFSMとして別に繋がっているが省略)->
敵が破壊される
な単純なFSMとして処理の流れを記述できる。
でも、これは一々タスクを4つ作らないといけないし、無理してタスクひとつに詰め込んでも
状態変数を持ってifやswitchなどで内部で分岐処理をしないといけない。
これは非直感的で避けたい。
365:名前は開発中のものです。
10/01/31 06:16:23 CeH4M0fL
ごめん。言葉足らずだったね。
今はFSMの代わりにmicrothreadを使おうと調べているんだけど、
これはタスク中でyieldと言われている処理をする事でタスクの実行をプログラムのその行で中断し
次のタスクへ処理が委ねられる。
次回自分のタスクが回ってきた時、即ち次フレームになると
yieldの次のステートメントから処理を再開する仕組みっていう解釈でおk?
本質的には割り込みのないmulti threadと同じものだから各microthreadは動作順序が保証されない様に思えるんだけれど
どうなんだろう。
勿論動作順序の必要な箇所(描画など)は今までどおりFSMで組むけど、マルチスレッドなんて慣れてないから
「注意しておかないとバグや処理系依存になる」事がありそうで怖い。
366:名前は開発中のものです。
10/01/31 11:51:44 HU8XW/cO
>>これはタスク中でyieldと言われている処理をする事でタスクの実行をプログラムのその行で中断し
古典的タスクシステムの実装での話しなら
yieldで分割される単位で実行関数作って、状態が変わったら登録関数切り替え。
タスクを通して維持される情報はタスクのワークに、が古典的タスクシステムのやり方かと。
ちなみに古典的なリスト形式じゃなくてツリー構造にして子の生存管理を親に任せれば
上で言ってるタイトルとゲームオーバーと、みたいなシーンも君の言うFSMと同じように階層管理できる。
階層タスクはボス戦艦の船体の親タスクと砲台の子タスク、みたいな使い方でもよく使われる。
リストでも同じことできるけど、親の座標が子の座標に影響したり親がやられたら子も全滅、みたいなのは
ツリーで作った方が楽。
367:名前は開発中のものです。
10/01/31 12:17:25 QrJboi/Q
>>364
ここでいうFSMってタイトルの選択とかタイトルローカルの情報はどこで持ってるんだ?
グローバル?タイトル関数のstatic変数?
メインループから呼ばれて毎フレーム抜けるんだよな
静的に関数コールでくっついてるってことはクラスのメソッドでもないんだよな
仮にクラスのメソッドだとしたらタイトルがゲームとかゲームオーバーとかのクラスを所有するのか?
なんか色々タスク方式よりずっと気持ち悪く見えるんだけど。
368:名前は開発中のものです。
10/01/31 14:39:09 3AvaezOm
>>361
なんで先週の俺こんなに一所懸命カプセルかしてたんだっけ?
369:名前は開発中のものです。
10/01/31 14:55:48 CeH4M0fL
>>366
なるほどー。
階層構造にしてしまうのもやり易そうですね。
今の機能と共存する形で実装できそうなので作ってみます。
>>367
うう、すみません。表現の仕方が悪かったみたいです。
タスクシステムを普通に作ったらタスクが状態としてFSMで記述され、
遷移がひたすらタスクの生成と破棄する処理として置き換わる事を言っています。
366さんも言っているように、microthread等を使わなければyieldで分割される単位でタスクを作って記述が分断されます。
タスク方式よりずっと気持ち悪く見えても、これはタスクシステムそのものなんです。
370:名前は開発中のものです。
10/01/31 15:01:40 CeH4M0fL
また誤解を招く表現ですね。
タスクシステムそのものと言っても古典タスクシステムではありません。
実は僕は>>335で、そのレスにあるとおりの機能に依存して今まで開発しておりました・・・。
種類ごとの順序がない、定数時間で同じ種類のタスク全てに対する反復子取得できない、
データ構造がC++風のクラスという型レベルのものではなく処理関数と専用の構造体に分かれている、
汎用ワークエリアの容量が不足している事により起きるバグの回避が自動でできない、
そんな古典タスクシステムからできるだけオーバーヘッドを除きつつ逃げる為にいろいろやっております。
371:名前は開発中のものです。
10/01/31 15:43:20 PBTWOUVl
マイクロスレッド使わなくても、
task::exec() {
switch(state) {
case TITLE:
条件満たしたらstate=STAGE1;
case STAGE1:
case STAGE2:
}
}
こんなのでいいんじゃないの?
372:名前は開発中のものです。
10/01/31 16:32:55 oiLUSXKA
>>371
使わなくても、じゃなく、使わない方が良いだろうね、大概の場合。
FSMでマイクロスレッド使う場合のディメリットは、
FSMのステートをスタックフレームのPCで「代用」するやり方では、
一種類のステートしか保存できない点。だって、PCは一個しかないからな。
だから、マイクロスレッドでFSMやってると、
複数のステートが絡み合うようになる段階で、逆に苦労する。
373:名前は開発中のものです。
10/01/31 16:43:00 CeH4M0fL
>>372
何か勘違いしているみたいですが、マイクロスレッドはyieldが必要なタスクごとに作られます。
釣りな気もしますがマジレス。
374:名前は開発中のものです。
10/01/31 18:17:03 QrJboi/Q
>>370
>タスクシステムそのものと言っても古典タスクシステムではありません。
君の頭の中にあるタスクシステムはずいぶん独特みたいだな。
古典的タスクシステムではタスクローカルのデータはタスクワークで持てるけど
今まで作ってたFSMではない静的な方法とやらではどこで持つの?
375:名前は開発中のものです。
10/01/31 18:23:01 CeH4M0fL
>>374
> 静的に関数コールでくっついてるってことはクラスのメソッドでもないんだよな
クラスのメソッドだよ。型消去使ってるから呼び出せる。
URLリンク(codepad.org)
C++でタスクシステムするからにはこれくらいやるんではないでしょうか・・・。
376:名前は開発中のものです。
10/01/31 18:56:25 QrJboi/Q
何か話が通じない・・・
>クラスのメソッドだよ。型消去使ってるから呼び出せる。
それはC++でタスクシステムつかった時の作り方でしょ。
>あと今まで古典タスクシステム無視してFSMでしかゲームくんでこなかったから
何かしらんが、その非タスクシステムでゲーム作ってたときはシーンローカルのデータは
どこで持ってたの?
377:名前は開発中のものです。
10/01/31 19:09:56 CeH4M0fL
何だか自分の中だけで議論を展開してしまって申し訳ないです。
> 何かしらんが、その非タスクシステムでゲーム作ってたときはシーンローカルのデータは
古典タスクシステムではないけど上のcodepadにあるtemplate classで
タスクをFSMとして扱っているから飽くまでもシーンローカルのデータはタスクとして機能している
C++のオブジェクトが持っています。
ここでいう古典とは、型レベルでの事前操作をしないC言語で書く事が可能な種類ごとの順序を保証しない
タスクシステムです。
C言語でもある程度のコンパイル時のプログラミングはできるんですがチューリング完全ではないので
高度な事はできず、古典タスクシステムしか組めません。
更に、古典タスクシステムを引き合いに出したのは
microthreadでタスクの順序が保証されない事と共通点があったからであって
シーン処理に関しての考察は不必要で的外れです。
378:名前は開発中のものです。
10/01/31 19:29:56 030VeqOo
>>357-358
とりあえず定石として2つのものが互いに参照する可能性がある物体ってのは
正しくインスタンスを配置できたのなら必ず同じ階層に並ぶ
つまり、弾が地形のポインタをもつことはできないし
地形が弾のポインタをもつこともできない
グローバル変数や関数を使えばこういう設計ミスを回避することができてしまうが
これは正しい設計をぶち壊してとりあえずグローバル変数関数に頼るただの突貫工事でしかない
上記の場合は弾と地形の上にいるゲームならシーンクラスとかそういうのが弾と地形のつなぎ処理を
書く部分になるのが正しい
>>360
>寧ろグローバルのどこがあかんのですか
こういうの一度も考えたことないのが設計語ってる現実ってあるからなぁ
今後のためになんでダメなのかちょっとは考えたほうがいいよ
どうしてカプセル化するのか?ってのにその答えがある
379:名前は開発中のものです。
10/01/31 19:35:08 WDNFJ5/J
グローバルはルール無用になるところが問題だけど、
これを理解して実装しているプログラマーがどのくらいいるだろうか。
グローバルをやたら非難するけどシングルトンをやたらめったら使う奴とかいるし。
あと、ポインタを渡したまま消去されてしまうことに関してなんら対策されてないコードもやたらある。
380:名前は開発中のものです。
10/01/31 19:41:42 PBTWOUVl
>>378
シーンタスクが毎フレーム、弾タスクと地形タスクの衝突を判定して、衝突したら弾タスクと地形タスクに通知すればいいの?
381:名前は開発中のものです。
10/01/31 19:42:47 Di+guFUQ
グローバルあかんのやったら何でグローバルが存在すんのよ
別に何でもかんでもグローバルに頼るとは言うてへんやろ
何でもかんでもグローバルあかんと抜かすほうが何も考えてへんのちゃうやろか
382:名前は開発中のものです。
10/01/31 19:55:10 WDNFJ5/J
>>381
グローバルなくてもコードはかけるよ。
グローバルを隠す(さらには静的変数をなくす)のは主に「状態の整合性」の維持かな。
グローバルはとりあえず実装するのには便利だけど、
そのままおいておくと拡張するときに、
状態の整合性の確認のためコードを何度も確認する必要がでてくる。
普通、他人のコードはもちろん自分のコードも細部まで覚えてないからね。
インターフェイスを減らして意味を持たせることによって確認の手間を減らす意味がある。
そういう意味ではこのメリットがほとんどない場合は
グローバルで実装したほうが得ということになる。
また、グローバルを使ってなくても上記のメリットがまったくないコードってのもたくさんある。
やたらメンバ変数の多いクラスとかやたらポインタをすべてにたらい回すとか。
細かく言えばグローバルはオーバーレイでも使わない限りメモリを占有するってのもあるが
これはターゲットによってほとんど無視できることもある。
383:名前は開発中のものです。
10/01/31 19:56:13 030VeqOo
>>381
なんでもかんでもダメだね
ただ、君の方針がそうであるなら下手にカプセル化なんてしないほうがいいと思う
そういう方針であるならもう割り切るべき
設計なんて頭にいれないでデータすべてをエクセルに展開したみたいにすべて並べるように
プログラムを組んだほうがうまくいくと思う
384:名前は開発中のものです。
10/01/31 20:00:04 QrJboi/Q
>タスク方式よりずっと気持ち悪く見えても、これはタスクシステムそのものなんです。
FSMはタスクシステムじゃないけどタスクシステムそのもの・・・
なんだか禅問答みたいですな。
古典的タスクシステム≠FSM=何かの自己流C++タスクシステム
という意味なのかな?
>C言語でもある程度のコンパイル時のプログラミングはできるんですがチューリング完全ではないので
>高度な事はできず、古典タスクシステムしか組めません。
Cでは古典タスクシステムしか組めないとなる理由=Cがチューリング完全でないから?
すいませんがチューリング完全と古典的タスクシステムの関連性が見えません・・・
>microthreadでタスクの順序が保証されない事と共通点があったからであって
つまりタスクシステムというより並列処理の話なのかな?
順番の保証が必要な処理ならスレッドでもタスクシステムでも同期するなり
優先付けるなりする必要があるのでは、という話になるが。
385:名前は開発中のものです。
10/01/31 20:23:36 PBTWOUVl
つーか、現場で働いているゲームプログラマーが実際こうです!って書いてくれたらこんな議論しなくていいのになぁ。
守秘義務ってそうとう厳しいのけ?
386:名前は開発中のものです。
10/01/31 20:30:57 SO046r6f
コードにしたらボロでるじゃん!
387:名前は開発中のものです。
10/01/31 20:38:10 CeH4M0fL
> 古典的タスクシステム≠FSM=何かの自己流C++タスクシステム
> という意味なのかな?
そうです。
> Cでは古典タスクシステムしか組めないとなる理由=Cがチューリング完全でないから?
Cは実行時のプログラミングに関してはチューング完全です。
しかし、コンパイル時ではチューリング完全ではありません。
型に順序を与えたりソートといった動作をするにはチューリング完全である必要があります。
コンパイル時に分かっている情報はその時に処理した方が実行時に処理に負担が掛からず利点があります。
具体的な例を挙げればリストに重複した種類のタスクを単一しか存在できないものとして入れてしまい
それをエラーとして扱いたい場合があります。
assertマクロを使えばその様な事態はとりあえず実行時にエラーが出る事によって検出できますが
設置したそのステートメントを実行するまで気付きませんし、動的にタスクに種類の情報を与える方法では
実行前に意図したものが原因か、あるいはロジックの不正でデータが書き換わったのか区別できません。
回避するにはそもそもコンパイルできない様にすればいいのですが、型の区別、重複検索はチューリング完全でなえれば実装できません。
他にも人間のミスを予め阻止する予防線を作る必要があります。(読み取り専用のメモリに対する不正な型変換など)
> つまりタスクシステムというより並列処理の話なのかな?
OSなどに並列の管理を依存するとゲームプログラム自体が同じ状態でも
ゲームが干渉できない部分が原因でタスクの前後関係が狂い、再現性がなくなってしまうのでは?といった
懸念がありました。
並列処理に関しては僕はまだ勉強不足な様です。
再現性があり予測が可能な並列動作やyieldの方法を探してきます。
388:名前は開発中のものです。
10/01/31 20:38:40 030VeqOo
>>385
前に書いたんだけどなぁ
リンクとってないだろうなぁ
質問あるたびに上げるのも面倒臭いし
ただ、見て理解できるだろうか?
初心者って設計がどういうものか全くわかってないから
void*やグローバルでのアクセスを単純に技だと思っちゃうでしょ?
そういう勘違いから卒業してないと意味ないと思うんだよね
俺も駆け出しのころそうだったし
インクルードも神ヘッダ(総合ヘッダ)作って全部詰め込んでたよ
でもそれは一番やっちゃいけないことなんだよね
もちろん方針として割り切ってるならそれはアリ
ただ、あるところではカプセル化してあるところではグローバル使いまくりとか
するぐらいだったら設計なんて凝らないほうが吉
389:名前は開発中のものです。
10/01/31 21:19:15 QrJboi/Q
>>387
チューリング完全というよりメタプログラミングのことを言ってるみたいだね。
古典的タスクシステム≠メタプログラミング=君のタスクシステム
C++はテンプレートメタプログラミングができるから君のタスクシステムが実装できて
Cはそれが無いから君のタスクシステムは実装できない。
ゆえにCは古典的タスクシステムしか実装できない、と・・・
集合論的に穴がありそうで突っ込みたくなるけど、まぁそこはいいか。
>ゲームが干渉できない部分が原因でタスクの前後関係が狂い、再現性がなくなってしまうのでは?といった
>懸念がありました。
やっぱり並列プログラミングの話題っぽいね。
ゲーム系でいえばカプコンの MT Framework あたりならネットでそこそこ情報集められて参考になりそう。
390:名前は開発中のものです。
10/01/31 22:28:33 6qSVPUGq
>>378
弾が地形に当たったときの処理として
1. 弾が、地形との衝突を判定して自分で消滅する
2. 地形が、弾との衝突を判定して弾を消滅させる
3. お母さんが、弾と地形との衝突を判定して弾を消滅させる
のうちどれを使うか決めようぜ! ってこと?
3の場合、お母さんが概念的にグローバルな存在になるけど
391:名前は開発中のものです。
10/01/31 23:38:16 PJ5c0R9P
>>385
実際に使ってるのをうpして社内の人間にバレたら給料に影響する
下手すりゃクビ。そこまでして説明したく無い
392:名前は開発中のものです。
10/02/01 00:40:11 1MBMZKlv
まぁ自分で書いたコードでも仕事で使ったものなら
会社の知的財産だからねぇ
会社によってはCEDECとか論文とかならいいよ、というのはあるだろうが
匿名掲示板にコードだしていいよという会社はさすがにないだろうね・・・
まぁ今さらタスクシステムをCEDECなりで発表する会社もないとは思うが。
393:名前は開発中のものです。
10/02/01 00:51:51 UISeaDQt
>>390
ならないよね?
まず、ならないってことに同意してもらわないとその先へ進めないよ
394:名前は開発中のものです。
10/02/01 00:52:59 hPvV+L+/
じゃあ、ここで指摘してくれる人は現場の意見ってことでOK?
395:名前は開発中のものです。
10/02/01 01:00:54 UISeaDQt
>>394
そんなの誰も証明できないよね?
頭悪いなら2chやめたほうがいいんじゃない?
396:名前は開発中のものです。
10/02/01 01:20:11 1MBMZKlv
>>393
なんだか極端にみえるんだけど・・・
C言語の標準出力とかヒープとかはどう考えてるんだろう。
stdoutとかmallocやnewで取るヒープとかはグローバル扱いからは除外?
ANSIで規定されてるからOKとかかな?
397:名前は開発中のものです。
10/02/01 01:24:10 ozNWjQIi
>>393
まじで?どうやってお母さんとお話しするの?お手紙?
398:名前は開発中のものです。
10/02/01 01:26:24 hPvV+L+/
>>397
全タスクはお母さんを知ってるとか?
399:名前は開発中のものです。
10/02/01 01:28:32 UISeaDQt
>>397
ちょっと上のレスすら読まないの?
シーンに持たせるって書いたじゃん
馬鹿にレスつけたくないな
話わからないなら入ってくるなっての
400:名前は開発中のものです。
10/02/01 01:33:39 s6RwCqE5
散々アンチをいじり続けて遊んでいた俺が言うのもなんだが
顔も素性も知らん人間にいきなり「タスクシステム作ってテー」「古典タスクシステムでー」
とか言われてもそれは何の理解の補助にも説明の補足にもならんのよな
顔も素性も知らん人間同士ではエターナルフォースブリザードシステムと等価だ
401:名前は開発中のものです。
10/02/01 01:38:54 s6RwCqE5
基本的には、喧嘩の調停はお母さんに任せましょう、で丸く収まる
402:名前は開発中のものです。
10/02/01 01:43:43 ozNWjQIi
>>398
そのとおり。
>>399
シーンタスクが持つ設計ってダメじゃね? シーンが切り替わるとき
面クリアしたりワープしたりするときに弾はどうなるの?消えるの?
ワープアニメ中に回復アイテム消えたら子供泣くよ?
403:名前は開発中のものです。
10/02/01 01:51:18 s6RwCqE5
泣くよね
404:名前は開発中のものです。
10/02/01 01:52:47 BehLiNNh
ゲームタスクが持てばいいのかな
405:名前は開発中のものです。
10/02/01 01:57:45 1MBMZKlv
個人的には今現在のマップ情報の各種問い合わせぐらいはグローバル関数なり経由しても許容範囲。
特定のシーンでしか使わないイベント情報とか、そーいうのがグローバルなのは許せんけど・・・
そのゲームの固有のシステム、として一貫性があればグローバルでも悪い設計とは思わん。
特定のゲーム用に作ったゲームオブジェのタスクを別のゲームに使うことなんて・・・
現実問題、続編作るときぐらいしかありえないし。
406:名前は開発中のものです。
10/02/01 02:02:07 UISeaDQt
>>402
は?お前の中でシーンがどう定義されてるのか知らないけど
シーンの状態の変化レベルの内容で消えられても困る
ワープだってシーンの1状態でしかないだろ
そしたらワープしても弾消えないよな
そもそもお前、会話がおかしい
思い込みが専攻してて他人の話をまともに聞いてない証拠だろ
俺はこの場では弾と地形が存在するクラスをシーンって話の都合上定義しただけで
このときはどうする?このときはどうする?って逐一状態を定義したわけではない
けどお前はかってに自分の中にあるシーンを俺が言ったシーンだと決め付けて
まず、俺にかってに否定意見を押し付けてるけど
正直それはお前が勝手に定義したシーンであって
俺がいったのは弾と地形を包括するもの程度の意味しかもってないんだけど?
それに実際ゲーム作るとなったらシーンは単体再生だけで済むようなゲーム少ないし
ここでその詳しい仕組みまでもってくることないだろ?
話に関係ないから省いたのに無駄なことするよね君
しかも君の指摘した内容いまの話題に関係あるかね?会社でも君みたいな
話題と全然関係ないこと突然言い出す子がいるけどもっと言動考えてしたらどうなの?小学生じゃないんでしょ?
407:名前は開発中のものです。
10/02/01 02:07:22 ozNWjQIi
>>406
つまり「シーン」がお母さんね。了解しました。
それなら何の矛盾も齟齬も無いので大丈夫。
408:名前は開発中のものです。
10/02/01 02:16:37 UISeaDQt
>>407
ほら、また、勝手に決めた
君のお母さんってのはグローバルじゃないの?
違うじゃない?なんで同じっていうの?
違うって
なんでそうやって勝手に思い込みで話進めるの?
409:名前は開発中のものです。
10/02/01 02:33:20 ozNWjQIi
>>408
概念的にグローバルであればよくて、弾や地形がそれぞれ一意の
お母さんポインタを持ってるってことで、実装の話ではないですよ。
弾や地形のお母さんにもお母さんがいたって不思議じゃないし。
410:名前は開発中のものです。
10/02/01 02:34:28 ozNWjQIi
あ、説明が足りないかも。ま、いっか
411:名前は開発中のものです。
10/02/01 02:35:45 s6RwCqE5
グローバルな存在 ≠ グローバル名前空間
つーことなんでねーの。たぶん
国境を越えて存在するもの。長命インスタンス。
例えばハードウェアリソースの制御・分配を行う低層の色々。
ブート→電源断の間、ずっと生き続ける実行待ちキュー。
412:名前は開発中のものです。
10/02/01 02:40:14 s6RwCqE5
かぶったな。
長命インスタンス → 相対的に長命な存在
413:名前は開発中のものです。
10/02/01 06:35:15 UISeaDQt
>>409
はぁ?逃げるなよ
自分で決めた言葉もう一度定義しなおしたいなら
せめて前にした定義をどう変更するのか明確にしろよ
勝手に会話の中で都合いいように変化させてんじゃねーよ
しかも違うし
違うだろ?
>弾や地形のお母さんにもお母さんがいたって不思議じゃないし。
なんだよ
グローバルなんだろ?
グローバルのグローバルってなんだよ
全然わけわかんねんだよ!
お前技術者やめろよ
414:名前は開発中のものです。
10/02/01 07:09:25 UISeaDQt
仮に彼のいうことを汲んでやったとしても
弾クラスや地形クラスでグローバル的にアクセスできるもんなんてないじゃんw
いつまで自分の世界で話してるんだって思うw
415:名前は開発中のものです。
10/02/01 10:19:55 nwK15Q3Z
>>375のコードってどうなの?
メタプログラミングとやらに馴染みがないので、
ものすごく、いや、有り得ないほどにウザく感じるんだが。
率直な感想を聞きたいね。
みんな、あんなのを保守していきたいと思う?
416:名前は開発中のものです。
10/02/01 10:36:30 hPvV+L+/
>>415
なにこれ。コード読めません。。。。。何をしてるんでしょうか