08/12/04 00:21:20 J8DrEDup
数年前のとある同人STGのメイン関数。趣味だから何も考えてないね。仕方ないね
int _tmain(int argc, _TCHAR* argv[]){
boost::shared_ptr<GAMEENV> gameenv(new GAMEENV); //D3D,SOUND,INPUT,USERDATA,etc
boost::scoped_ptr<SCENE> logo(new LOGO(gameenv)); //ロゴ画面
boost::scoped_ptr<SCENE> demo(new DEMO(gameenv)); //デモ画面
boost::scoped_ptr<SCENE> title(new TITLE(gameenv)); //タイトル画面
boost::scoped_ptr<SCENE> config(new CONFIG(gameenv)); //コンフィグ画面
boost::scoped_ptr<SCENE> stage1(new STAGE1(gameenv)); //ステージ1
(…中略…)
boost::scoped_ptr<SCENE> stage8(new STAGE8(gameenv)); //ステージ8
boost::scoped_ptr<SCENE> ending(new ENDING(gameenv)); //エンディング
logo->Run(); //ロゴ画面再生
try{
while(1){
demo->Run(); //デモ画面再生
switch(title->Run()){ //タイトル画面再生
case TITLEOPTIONTYPE_GAMESTART: //ゲームスタート
try{ //STAGEEXCEPTIONTYPE_GAMEOVERという例外を投げるまでゲーム続行
stage1->Run();stage2->Run();stage3->Run();stage4->Run();
stage5->Run();stage6->Run();stage7->Run();stage8->Run();
ending->Run(); //エンディング画面再生
}catch(STAGEEXCEPTIONTYPE){;}break; //GAMEOVER例外投げてきた
case TITLEOPTIONTYPE_CONFIG: //オプション画面再生
config->Run();break;
}
}
}
catch(GAMEEXCEPTIONTYPE){;}catch(...){return EXIT_FAILURE;}//糞ゲーだからやめるらしい
return EXIT_SUCCESS;
}
175:名前は開発中のものです。
08/12/04 00:28:18 J8DrEDup
_tmainじゃなくて_tWinMainだったかな。よくおぼえてないや
各シーンはいわゆるベタベタの配列厨コード。元HSパーだから仕方ないね
でもメモリもGPUリソースもジャブジャブ使いまくったおかげで
見た目はバリバリのイケイケになったよ。動作も軽快だったよ。自惚れだね
176:名前は開発中のものです。
08/12/04 02:00:33 yi3zavJ4
>>174
たのむ
なにが言いたいのか最後に書いてくれ
俺が気になるのは、メインループが本当に必要なのかどうかだな
タスクシステムも、それ以外のC++コードでも、なんでメインループ作るん?いらなくね?
普通に書けばいいじゃん(普通ってなによ)
177:名前は開発中のものです。
08/12/04 02:16:23 vVwN1TZ0
stage1->Run()はstage1が終わるまで返ってこないんだろ。
いずれにせよゲームなんて毎フレームの同じ処理の繰り替えしなんだから
どこぞかにループは存在するのが当たり前だと思うが。
178:名前は開発中のものです。
08/12/04 02:16:58 iyneYGG1
>>176が言う普通ってどんなコードなんだろうね
179:名前は開発中のものです。
08/12/04 03:27:17 yi3zavJ4
あーすまん
メインループはどんなプログラムにもあんね
なんかさ、1フレームごとに回るループを作るやり方と
作らないやり方(あちこちでupdateする)について
急に気になって言ってみたんだが
やっぱどっちでもいい気がしてきたからいいや
180:名前は開発中のものです。
08/12/04 04:04:02 BYcsjOha
スレッド作るにしろなんにしろ
どこかでスケジューラが回ってるがな
181:名前は開発中のものです。
08/12/04 10:56:55 vVwN1TZ0
>>179
> 作らないやり方(あちこちでupdateする)について
> 急に気になって言ってみたんだが
それは使ってるフレームワークが裏でループ回してupdate()呼んでるんだろ。
あるいは割り込み駆動の可能性もあるが。
182:名前は開発中のものです。
08/12/04 22:22:51 wPvA+LuT
>>175
>見た目はバリバリのイケイケ
気になるな。
183:名前は開発中のものです。
08/12/05 00:50:08 Vt/x/8eI
>>176
>たのむ
>なにが言いたいのか最後に書いてくれ
地域担当の教団勧誘員に>>174を見せると彼の顔はみるみる青ざめ、ついには目を背けてしまいました。
ただごとでない様子を感じ取った私は恐る恐るその訳を尋ねました。すると彼はおずおずと耳元で囁くのです。
「それはいけない。凶兆が見えます。そのようなものを作っていては遠からず仏罰が下るでしょう。南無妙法蓮華」
>>174は彼らの"先生"の教義に反する、知性体として恥ずべきお猿さんコードなのだそうです。私は狼狽してみました。
幼少の砌よりツクラーにしてHSPerである私の深層に眠る劣等感の残滓の存在をESPで見抜いたのか、彼は目を細め
「安心なさい。今からでも間に合う。私共のように三宝( * )に帰依なさい。そうすれば必ず道は開けますよ」
と仏様のような微笑みを湛えながらビール券とこの案内状をくれたのです
184:名前は開発中のものです。
08/12/05 00:51:18 Vt/x/8eI
>>183続き
(∀・ *)【三宝】…■松浦本■やね本■逆引き本
┌─────────────────────┐
│ 【集会のご案内】 │
│ タスクシステム(>>2)こそ失われた聖杯、伝説の神器、至高のオーパーツ、現代のエクスカリバー |
│ 私どもの教団では、身も心も何もかも唯一無二のリンクリストに捧げることで驚きのTCBがプライ |
| オリティすることをお約束します。奮ってご参加ください |
│ タスクシステム総合スレ part3 |
│ スレリンク(gamedev板)l50 │
| |
| 【社説】反動分子の煽動記事に惑わされてはならない |
| URLリンク(diary.imou.to) |
| URLリンク(d.hatena.ne.jp) |
| URLリンク(qo.sakuratan.com)タスクシステムのこと。/ |
| 万物を支配するは唯一無二のリンクリストをおいて他に無く、秩序をもたらすはTCBのプライオリテイのみ。|
| この崇高なる輪廻転生の法を冒涜し踏み躙る邪教徒共はママの愛情が足りなかったに違いない。 .|
| 敬虔なる信徒諸君は彼らの妄言に惑わされることなく修行に励みたまえ。そして最終解脱者となっ.|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ビール券に弱い僕は誘われるままホイホイとこのスレにやって来たんだね
185:名前は開発中のものです。
08/12/05 03:20:55 JyB7wu71
そろそろタスクシステム総合スレじゃなくて
ゲームシステム総合スレに名前変えね?
>>2を使ってる人は皆無なわけだし
186:名前は開発中のものです。
08/12/05 04:47:21 U4VbVISL
いや、ここ隔離スレだから…
187:名前は開発中のものです。
08/12/05 05:37:33 lg/+bi94
>>185
あー、ゲームシステム総合とか間抜けたスレタイいちいち考えなくていいから
既存スレちゃんとあるんで。こっちでは撲殺天使の人もあっちでは普通だから
ゲームにおけるデータ構造・クラス設計・パターン2
スレリンク(gamedev板)l50
既存スレからタスクシステムを隔離するためにこのスレは作られたんで
このスレが誘蛾灯として機能するにはこのスレタイは好都合この上ないんで
悪いけどお前が思ってる以上にそこそこ需要あるんだわ
>>>2を使ってる人は皆無なわけだし
は?お前が憤死しても代わりは幾らでも湧いてくるから心配しなくていいって
188:名前は開発中のものです。
08/12/05 09:54:30 bKzmksBZ
やね本はプレミア付く程のレア物
189:名前は開発中のものです。
08/12/06 00:08:37 AlgIGpgY
>>166
何がいいたいかわからん。動的インスタンスリスト巡回アップデートwの具体的なメリットデメリットを指摘すればいいんじゃないか?
URLリンク(www.issei.org)
そのひらしょ氏の本を手伝ったらしいPGさんのブログ。タスクシステムらしきソースがある。
問い詰めた知人てこのひとかな?
例えば>>174をタスクシステムで書いたとして、単純に比較すればそりゃ
>直感的でない、変に抽象化されてデバグしにくい、実行順がコードの形で書かれておらずメンテしにくい
コードだと思うんだよ。んで、それでも使いたいメリットあるのか?て話だよな。
俺は本職のゲーム屋さんじゃないんで失礼かもしれないが、わかりにくいところもあるけど、
結構融通が利いて便利かもと思ったよ。
ためしにプロトタイプを作ってて、「ここで一発エフェクトが欲しいな」と思ったところで、new してリストにつなぐだけで動くってのはちょっと感心した。
あと、メインループ周りを作ってしまえば、そこをいじらなくても別のゲームが作れるのは
なれれば安心感があるな。
ただ、万人にお勧めできるかつと、それはちょっと難しいかもとは思う。
190:名前は開発中のものです。
08/12/06 00:15:03 +2mVCqZ1
>>189
>ためしにプロトタイプを作ってて、「ここで一発エフェクトが欲しいな」と思ったところで、new してリストにつなぐだけで動くってのはちょっと感心した。
これホントは動かないのが普通なんだよ
裏でグローバル変数でつながってるからnewするだけで動くように見えるだけ
可能でしょ?そういうの?
本来あるべき手続きを見た目見えなくするもんだから
後で「え?そんなところと関係あるの?」っていう部分がボロボロ出てくる
結果これ以上ないデスマになる
191:名前は開発中のものです。
08/12/06 00:28:23 AlgIGpgY
>>190
レス早すぎるだろw
>後で「え?そんなところと関係あるの?」っていう部分がボロボロ出てくる
そういう不安は、まあ、あるな。自分が把握していられる範囲ならともかく、
「3日前のコードは他人のコード」な人(俺だ)とか。
>裏でグローバル変数でつながってるから
これ、このスレでよく批判の対象になってるけど、俺が見た範囲では
それぞれ listはprivateにしたり一応保護する工夫をしているように見えるけど
「オブジェクト同士が相互参照できるならグローバルと同じで無意味」ってこと?
192:名前は開発中のものです。
08/12/06 03:37:13 +2mVCqZ1
>>191
タスクシステム云々ってよりグローバル変数の駄目な理由そのものじゃん
193:issei
08/12/06 07:28:54 wah4ZAkA
>>189
> タスクシステムらしきソースがある。
どこに?
私は、いまどきのハードウェアならタスクシステムは捨てて、役割ごとに std::list<> なり
配列なり作った方が良いと思ってる。
URLリンク(www.issei.org)
194:名前は開発中のものです。
08/12/06 11:22:47 r2noZKmJ
>>193
名前欄入れてらっしゃるけど、ご本人様で?
そのエントリによると、新人研修でタスクシステムのようなものを教えてる
ところは実在するわけですかね。
195:名前は開発中のものです。
08/12/06 12:02:44 +2mVCqZ1
散々タスクシステムを崇拝してきた人間も
ひらしょーさんの「なにそれ?」で完全に散ったなw
196:名前は開発中のものです。
08/12/06 12:40:25 r2noZKmJ
入門を脱したばかりの奴が入門記事を書く悪循環に、
ちょうどタスクシステムがはまっていた感はあったな。
CodeZineとか。