- 1 名前:1 ◆SLnV723rxg mailto:sage [03/07/26 20:18 ID:PRWX91og.net]
- やる気だけはあるぞ。
- 226 名前:名前は開発中のものです。 mailto:sage [04/03/23 08:41 ID:PMWtRlHb.net]
- >>225
もっと先の話だよ。 イベントシーンとかそのへん(応用先はそれだけじゃないよ?) スレ違いだが、シューティングの敵の動きの記述に使ったりもした。
- 227 名前:名前は開発中のものです。 mailto:sage [04/03/23 09:03 ID:PMWtRlHb.net]
- あぁ、でもこの場合、少なくてもマップ移動はまとめられるね。
ヘンテコ擬似コードだけど、こんな感じ?(描画はメインファイバ側でやるという前提) void MapMove() { while(1) { //方向キーが押されるまで待つ while (!CheckHitCursorKey()) SwithFiber(mainFiber); MoveMap(GetKeyState());//スクロール方向を決める処理 //ここからスクロール処理 for (int i = 0; i < MAP_CHIP_SIZE; i++) { ScrollMap();//1ドット分スクロール SwitchFiber(mainFiber); } } } この場合にまとめるのが正しいかは議論ありそうだがそれはおいといて、例としてね。
- 228 名前:練習帳著者 mailto:sage [04/03/23 09:10 ID:R4NaancD.net]
- >>220
別スレッドの利点は、他のスレッドと同期する必要をなるべく生じさせ ない、ゲームに関する処理を一本道の流れに分離しておくような形式に できた場合、Windowsのシステムの流れをあまり意識しないでゲームの 処理に集中できるかな、と。 実際、戦闘やスクリプトベースのイベント処理も含めてRPGのデータ処理 やバックバッファ(あとはウインドウのDCに出力するだけのDIBSection) への描画処理をすべて別スレッド内で行うシステムを作ってみたんですが、 比較的単純なシステムではプログラムも一本道の単純なものにまとめられ そうで、これはこれでよさそう。 小規模で単純なRPG/ADVでは、こういったタイプの処理もありかも。 まあ、一定時間ごとに呼び出す処理用関数で状態を管理しながら処理して いく、という形にまとめられればその方がよさそうですけどね(ただ、 ゲーム本体の処理以外の部分でたいしたことをしていなければ毎回状態を 管理しながら一定時間ごとに処理を行う、という流れはスレッドで連続的 に実行しているように書く、というのと流れとしては同じになりそう)。 私もメインループ内で一定時間ごとに状態に応じて振り分け、という設計 を考えていましたが、別スレッドで処理する実験結果を見ると意外にうま くいきそうだったんで、とりあえず別スレッドを作る方向で作っています。 ゲームの処理の流れを本格的に管理するつもりなら、フレームワークの開発 からやる方がよさそう・・・。
- 229 名前:名前は開発中のものです。 mailto:sage [04/03/23 11:14 ID:PfXAGYNf.net]
- エェー?本当にちゃんと同期できてる?データの整合性もちゃんと保ててる?
マルチCPUの場合は、同じデータをアクセスするコードが「同時に」2つ以上走ることも あるんだよ? マルチスレッドは、データの不整合性、デッドロック、抜け出せないロッキング、 優先順位の逆転などなど気をつけないといけない罠が多すぎるので、どうしても必要 なところ意外では使わないことにしてるよ。 スレッドがだめって言ってるわけじゃないけど、初心者向けでは無いよね。 「処理の流れ」を記述したいときは、大概スクリプトにするかなぁ? マイクロスレッドでもいいと思う。
- 230 名前:名前は開発中のものです。 mailto:sage [04/03/23 12:01 ID:JCV/36ob.net]
- >>227
んー・・・なんとなく言いたいことは分かった、ありがとう けどやっぱタスクシステムから乗り換えるほどの理由じゃないっす #スレ違いすまんがSTGの敵の動き制御部分は特に意味がなさそう #理由はたとえば同じ種別の敵が10いたら同じ関数を10回実行しなきゃいけない。 #けど同じ関数を回すわけだから結局状態データは外部に置かなきゃいけない #同じ関数を10個ファイバとして登録して再利用するにしても、 #結局被弾したとかの状況によって初期化するわけだから外部で制御しても大差なし #そもそも最近のハードだと敵の動きは外部データで持つことが多いので #違う敵でも同じ関数で処理する >>228 Windowsのシステムの流れってぶっちゃけメッセージループだよね なら別スレッドにする必要はないかと PeekMessage(およびそれに付属する処理)を1タスクとして考えればいいだけ たとえばバックバッファを作った後でPeekMessageを呼び出せばいい
- 231 名前:名前は開発中のものです。 mailto:sage [04/03/23 12:25 ID:rzkxl8IS.net]
- >>230
>けどやっぱタスクシステムから乗り換えるほどの理由じゃないっす いや、タスクシステムと併用するんだよ当然。 タスクシステムからタスク関数を呼び出すと思うけど、それをファイバにするという話。 >#同じ関数を10個ファイバとして登録して再利用するにしても、 >#結局被弾したとかの状況によって初期化するわけだから外部で制御しても大差なし まぁ、被弾とか非同期で状態が変わる部分は、別関数にせざるを得ないよね。「例外(Exception)」だし。 でも、多数の状態が(ほぼ)シーケンシャルに切り替わっていく状態なんかでは、状態ごとに関数分けたり 状態変数作ってswitchで分けたりするよりは、すっきりしたプログラムになると思う。 まぁ、もちろん、 >#そもそも最近のハードだと敵の動きは外部データで持つことが多いので なので>>224ではスクリプトでやる場合が多いと書いたわけだけど… どっちにしろ「使いようによっては便利なときもある」って話だ。 全ての場合で使えると言ってるわけでもない。ファイバはメモリ食うしね。
- 232 名前:名前は開発中のものです。 mailto:sage [04/03/23 16:31 ID:cY6fF1y+.net]
- マルチスレッドにする利点はタイトルバーをクリックしても処理がとまらないことかな
- 233 名前:98 mailto:sage [04/03/23 21:04 ID:s4+zR2jB.net]
- よく分からないんですけど、マルチスレッド使えないとやばいっていうことでしょうか?
今度こそマップスクロール完成版↓ www.geocities.co.jp/SiliconValley-Bay/2736/zz78.txt www.geocities.co.jp/SiliconValley-Bay/2736/rpg_a5.zip ・静止状態にCPU100%になっていたのを修正(Sleep(1);をつけた) ・メッセージウィンドウ表示時にCPU100%になっていたのを修正(Sleep(1);をつけた) ・描画関数を2つに分割 なんか処理が重くなったような気がする・・・
- 234 名前:名前は開発中のものです。 mailto:sage [04/03/23 21:12 ID:PMWtRlHb.net]
- んじゃ、次は、DrawMapの、「〜スクロール時描画」を「静止マップ表示」ひとつにまとめよう!
これでかなりすっきりするはず。
- 235 名前:98 mailto:sage [04/03/24 22:18 ID:w/FFfgKd.net]
- すっきりしたかどうか分かりませんが、まとめてみました↓
www.geocities.co.jp/SiliconValley-Bay/2736/zz79.txt ・描画方法を少し変更 メッセージウィンドウ表示は置いといて、次はNPCを作ってみる予定
- 236 名前:98 mailto:sage [04/03/29 19:11 ID:hm6pjM86.net]
- ログが消えてる(´・ω・`)
NPCの移動をなめらかに描画するのが難しいんですが、 なんかいい方法とかないでしょうか・・・
- 237 名前:98 [04/03/30 22:16 ID:W6u+pmd7.net]
- NPCがどうしてもうまく描画できないので、マップ自体の描画方法を
「何か起こったら描画」から「常に一定時間おきに描画」に変更してみた。 www.geocities.co.jp/SiliconValley-Bay/2736/zz88.txt www.geocities.co.jp/SiliconValley-Bay/2736/rpg_a7.zip 方向性が間違ってるような気がしないでもないんですが、 こういう描画方法でもいいんでしょうか
- 238 名前:98 mailto:sage [04/04/01 21:53 ID:xdIEUIEH.net]
- NPCなめらか移動
www.geocities.co.jp/SiliconValley-Bay/2736/zz91.txt www.geocities.co.jp/SiliconValley-Bay/2736/rpg_a8.zip NPCの移動がランダムではないような気がする。 気のせいかもしれないけれど、ある方向にいったん進んだら、 次に進む方向も同じになる確率が高い。 次は当たり判定をつけようと思う。
- 239 名前:200 mailto:sage [04/04/02 00:46 ID:HxQygUy0.net]
- srand((unsigned)time(NULL));
は、最初に一回だけね。ループには入れないで。 srandは乱数ジェネレータの初期値。 rand()関数はsrandを実行しなくても一回一回違う値を返すけど、もう一度プログラムを実行してもまた同じ値を返してきてしまう。 一回目の結果:7,2,5,6,4,1... 二回目の結果:7,2,5,6,4,1... こんなカンジで。 srandでtime(NULL)を与える理由は、プログラムを起動するごとに違う値を出力するようにするため。 一回目の結果:7,2,5,6,4,1... 二回目の結果:5,1,8,4,3,7... ってカンジで。 timeは確か秒単位だったから1秒以内ならrandが同じ結果を返すことになる。 って、コレも猫でもわかるプログラミングで説明されていたような・・・
- 240 名前:200 mailto:sage [04/04/02 00:49 ID:HxQygUy0.net]
- あ、別のサイトだったっぽいです。
- 241 名前:98 mailto:sage [04/04/02 20:19 ID:RjQBCx/D.net]
- おまじない程度の認識しかなかったので、ここが原因とは思いませんでした。
ランダムに動くようになりました。 ふと思ったんですが、WINAPIなら timeGetTime()%10; でも0~9のほぼ乱数ができるような 気がするんですが、これって邪道でしょうか。
- 242 名前:98 mailto:sage [04/04/02 22:26 ID:OS/Q3nYt.net]
- ↑自己レス 同時に複数の乱数を得たいときに不便なのでやっぱりだめ
当たり判定をつけた。ついでに歩行アニメーションもつけた。 www.geocities.co.jp/SiliconValley-Bay/2736/zz94.txt www.geocities.co.jp/SiliconValley-Bay/2736/rpg_a9.zip 次はマップエディタを作る予定。
- 243 名前:98 [04/04/03 22:19 ID:eDSQOtXr.net]
- マップエディタセーブ機能なし
www.geocities.co.jp/SiliconValley-Bay/2736/zzz2.txt www.geocities.co.jp/SiliconValley-Bay/2736/map_ed_1.zip マップエディタ作る時間 > テキストでマップを作る時間 な気がしてきた。 APIのファイル操作はできれば避けたいんですが、 #include <window.h>をすると#include <fstream>できなくなるんでしょうか?
- 244 名前:練習帳著者 mailto:sage [04/04/03 23:40 ID:ClmmNDdO.net]
- >>243
マップエディタはイベント配置機能なども含めRPG開発では必須 になるけど、開発するのは本体よりも大変かもしれませんね。 まあ、開発自体が良い練習になるしマップの仕様はゲーム設計で いくらでも変わるから、時間はかかっても独自のマップエディタ を作るのも良いでしょう。 あと、バイナリファイルは、特に理由がなければAPIで扱うのが 一番楽な気がw
- 245 名前:名前は開発中のものです。 mailto:sage [04/04/04 00:10 ID:8gkVG1Fa.net]
- 私も参戦してよいでしょうか。
環境はVC++6だけど、DirectX(8or9)つかうかWinAPI(SDK)だけで行くか悩み中。 SDKだけでいけそうだけど、勉強のためにDX使おうかなぁとも。 覚えたほうが後々いいですかね。。(どうでしょう?) とりあえずマップチップ表示してその上を歩き回れるようなものを作ろうと思ってるんですが。
- 246 名前:98 mailto:sage [04/04/04 19:29 ID:mMmF0Gyi.net]
- >>244
マップエディタも奥が深いんですね・・ 作成したマップをどういう形式で保存するかっていうのも悩みどころです。 >>245 言語問わず参戦歓迎です。 マターリがんがりましょう
- 247 名前:98 mailto:sage [04/04/04 23:33 ID:t/HUZNZd.net]
- 右クリックすると、直前に描画したマップの種類をテキストに出力するようにした。
www.geocities.co.jp/SiliconValley-Bay/2736/zzz3.txt www.geocities.co.jp/SiliconValley-Bay/2736/map_ed_2.zip 保存の仕方がいまいちよく分からないので、 配列で記録しておいて、こぴぺでソースに貼り付けれるようにする予定。
- 248 名前:245 mailto:sage [04/04/05 00:00 ID:Exj/seSL.net]
- ども。
では最初の目標として、 なんか表示してキーボードで動かせる奴を作ってうpします。 DX使うかまだ未定。訳わかんなかったらSDKでやります。
- 249 名前:名前は開発中のものです。 mailto:sage [04/04/05 12:22 ID:qkWA7QuF.net]
- SDK -> Software Development Kit
- 250 名前:245 mailto:sage [04/04/05 13:40 ID:Exj/seSL.net]
- WinAPIどぅえす。
どっかのサイトでAPIのみでつくるのをSDKって言ってんの見て変な癖ついちゃいました。 それで、やっぱDirectXはこのくらいの規模の2Dもので使うにはめんどいだけで 恩恵無さそうな気がしてきたので使わないかもしれません。 (突っ込みが欲しい所であります。)
- 251 名前:98 mailto:sage [04/04/05 20:25 ID:jO2LaB8o.net]
- 俺はDirextX使えないけど、将来的にすごいもの作ろうとしたら
避けて通れない道な気がするから、敢えて使ってみるのもいいかも
- 252 名前:245 mailto:sage [04/04/06 14:51 ID:I/KdK9GY.net]
- 実は超最終的な目標は3Dのネットゲー作りたいんですよねぇ。
だからDXは絶対覚えないと・・・ でもCのプログラミング自体基本ができてないから とりあえず難しいDXは抜きに多少使った事があるAPIでやって、 C自体の基本的なところの習得に集中してからDXに移ろうかなぁ なんて気分になってきました。
- 253 名前:98 [04/04/06 20:50 ID:VKrLl24Q.net]
- >>252
教材が見つからなかったんで、俺は諦めたけどELっていう手も。 でもAPIの知識が必要だった気がするから、結局APIだけでやってみるのが 一番いいのかもしれません・・・ 初期化ファイル(MapDataAlpha.ini)にセーブするようにした。操作方法はソースの上のほうに書いてあります。 www.geocities.co.jp/SiliconValley-Bay/2736/zzz8.txt www.geocities.co.jp/SiliconValley-Bay/2736/map_ed_3.zip ・WM_RBUTTONDOWN時に POSITION[0][0] = ... POSITION[1][0] = ... POSITION[2][0] = ... のように記録させたいんですが、どうすればいいんでしょうか?
- 254 名前:名前は開発中のものです。 mailto:sage [04/04/07 03:10 ID:6G2QeT26.net]
- RPG製作に興味あってこのスレきますた。
後半部を流し読みしかしてませんが、なにやらAPIやDXベースで話がすすんでるようですが それらを学習しながらはたしてモノが完成するのかなぁと思ったので。 最初は253氏が触れてるようなEL等のライブラリを使用するのがいいかと思います。 ゲームの中身の処理以外で悩むのつまんないし。
- 255 名前:245 mailto:sage [04/04/07 05:36 ID:RS4YRj46.net]
- >>253>>254
結局APIで作り始めますた。 私のほうは、あくまで技術の学習・習得が第一の目的でして、 特にゲームを完成させることに拘りはないです。 でも「作るスレじゃ」なくて「作れるようにするスレ」なので あんまり矛盾はないかなぁなんて。 現状ですが、とりあえず超適当ですがPCの画像を表示できました。(うpする価値なし) 次はテキストファイルを読み込み、それにしたがって マップチップを敷き詰めてみようと思います。
- 256 名前:98 mailto:sage [04/04/07 20:26 ID:MMz7Nn2x.net]
- >>255
一応、目安ということで見ておくといいかも↓ gamdev.org/w/?%5B%5BFF%C9%F7RPG%A4%F2%BA%EE%A4%EC%5D%5D 最低限の機能しかないけどマップエディタ完成 www.geocities.co.jp/SiliconValley-Bay/2736/zzz8.txt www.geocities.co.jp/SiliconValley-Bay/2736/map_ed_3.zip 次はメッセージウィンドウを表示させようと思う。
- 257 名前:98 mailto:sage [04/04/07 20:27 ID:MMz7Nn2x.net]
- URLミス・・・
www.geocities.co.jp/SiliconValley-Bay/2736/zzz10.txt www.geocities.co.jp/SiliconValley-Bay/2736/map_ed_4.zip
- 258 名前:245 mailto:sage [04/04/08 05:12 ID:rdLQdFbl.net]
- >>256
おぉそこは知りませんでした。凄く参考になります。 現状ですがテキストファイルからマップデータを読み込み、 表示することができました。 gamdev.org/up/img/426.zip 本当はバイナリにして暗号化したりした独自形式にしりたいんだけど よくわかんないのでとりあえず放置。 次はキーボードでキャラを移動して画面をスクロールさせてみようと思います。 しかし98さんは進歩早いですね。私も早く追いつけるようにがんばります。
- 259 名前:98 mailto:sage [04/04/08 20:18 ID:GQOUbMkn.net]
- 2ヶ月前からやっててまだこの程度なので、かなり遅いと思われます・・
保存形式ですけど、 XML→難しい割りにメリットなさそう バイナリ→シラネ レジストリ→怖い ってことで、消去法で初期化ファイル使ってます。 データ書き換えが簡単で、ゲームとして成り立たなくなりそうですが。
- 260 名前:245 mailto:sage [04/04/08 22:58 ID:rdLQdFbl.net]
- ファイル操作の辺りって結構でかい壁ですよね。(俺だけかも)
いずれ絶対やらなきゃなんないし、かなり面倒くさそう。。。 今回はPCを矢印キーで操作して画面をスクロールできるようにしました。 ついでに当たり判定もつけました。 ttp://gamdev.org/up/img/439.zip 現状はまだ隣のマスへワープしてる状態なので、 つぎは滑らかに移動できるようにしたいと思います。
- 261 名前:98 mailto:sage [04/04/09 00:11 ID:vWYKL39D.net]
- 俺もファイル操作で何回も挫折してます。
バイナリでの保存方法教えて。エロイ人。 >ついでに当たり判定もつけました ダウソしてみたんですが、実行前の注意必読.txt読んだら 怖くて実行できなくなってしまったorz
- 262 名前:200 mailto:sage [04/04/09 00:16 ID:PDI25ArR.net]
- うぃっす。そのうち暇になったら俺も晒そうかな。今は忙しいが。
>>259 XMLはHTMLと同じようなマークアップ言語のことじゃないん? だから出力形式としてはテキストorバイナリになると思うんだけど。 あと、ツール関係もC言語で作るって言うのはどうかと。 ツールは他の言語で作って出力データだけ使うのが良いと思われる。 テキストで出力するのであれば、マップチップ番号をカンマで区切って出力したり すればいいんじゃない。 コレが有名なCSVファイルね。 ちょうど245の晒しているマップデータをカンマで区切ったような形式。 もちろん、出力するデータの桁が決まっていれば区切る必要はない。 バイナリはただ単に数値をそのまま出力しただけのデータ。 通常のテキストファイルは文字コードによって人間の理解できる文字になっているが、 コンピュータで扱っている数字はそのまま出力した場合、テキストファイルのように 数字を読み取ることは出来ない。 しかし、プログラムから読み込む場合は余計な数字>数値変換を行わなくて済むのと、 サイズが小さくなると言うメリットがある。
- 263 名前:200 mailto:sage [04/04/09 00:23 ID:PDI25ArR.net]
- 発言が前後しちまったーヨ。
出力・・・猫でもわかるミレ
- 264 名前:245 mailto:sage [04/04/09 06:14 ID:PD92y+NK.net]
- >>261
何があるかわかんないので、一応、免責事項を書いておいたほうがいいかなと思って。 フリーソフトに限らず書いてあるのが多いので見習いました。 多分大丈夫だと思います。多分。。。(でもやっぱり責任はもてませんw) >>262 CSVにしようと思ったんですけど、まんどくせのでとりあえずあんな感じに。 カンマとかって普通に文字列操作でくっ付けて〜.CSVでWilteFileすれば 出来上がるんですかね。そのうちやってみようと思います。 ちなみに私のほうはVC++でやってるので、 マップツールの方はダイアログベースで作るか APIでクライアントにコントロール直張りにして作るか、 普通のクライアントウィンドウ+モーダレスダイアログで作る予定。 MFCは使わない。というか使い方知らない。 「猫でもわかる」に「MFCの使い方覚えてるうちにAPIで1000個くらいアプリ作れちゃう!」 とか書いてあるので、それを信じてひとまずMFCは放置しようかな、と。 ところで↓みたいに ttp://www.nurs.or.jp/~urara/sbo/grp/sbo086.png チップをスクロールバー付きで並べて表示して、 それを選択したりするようにするのって「リストビュー」をつかうのかなぁ、、、 ↑のはどうやってやってんだろう。ここが難関。誰か教えてたもれ。
- 265 名前:練習帳著者 mailto:sage [04/04/09 08:53 ID:NNIXc1rk.net]
- >>261
バイナリファイル保存は、CreateFile()でファイルハンドルを作って バイナリデータ(データを記録したバッファ)をWriteFile()で書き 出し、ファイルハンドルを閉じる、という流れでできます。 lpszFilePathをファイルパス、lpDataをデータの先頭アドレス、dwSize をデータのバイト数とすればこんな感じ。 HANDLE hFile = CreateFile(lpszFilePath, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); WriteFile(hFile, lpData, dwSize, &dwWrote, NULL); CloseHandle(hFile); ファイル操作は、標準関数よりAPIの方が楽ですね。
- 266 名前:200 mailto:sage [04/04/09 18:37 ID:PDI25ArR.net]
- >>264
VBとかもっとらんの? VCしかもってなくて、C言語しかやってないっていうのなら、しょうがないけど。 チップセレクトは多分スクロールバーとBMPをあわせているだけだと思う。 スクロールされたらそれに合わせてプログラム内でBMPの表示位置を変えてるんじゃない?
- 267 名前:245 mailto:sage [04/04/09 21:40 ID:PD92y+NK.net]
- 滑らかにスクロールするようになった。
けど、なんか無理矢理できてる感が強し。やたら重いし、 デバイスコンテキストとかこんなに何枚も作る必要あるのだろうか。。 hdc//一番表。ディスプレイ hdcMem//一枚裏。ここにいろいろ合成して最終画像を作る。 hdcMap//マップの画像ファイル読み込んでおいておく所。 hdcChr//キャラの画像ファイル読み込んでおいておく所。 hdcFld//マップデータにしたがってマップを描く所。スクロールに備えて一マスでかい。 ttp://gamdev.org/up/img/443.zip 次はNPCを勝手に歩き回らせようと思います。 次回はきつそうだからソース晒して助けを求めることになるかも。 >>266 リストビュー使ってないんですかねぇ。 でも使ってもできそうな感じです。なんとなく。
- 268 名前:98 mailto:sage [04/04/09 22:43 ID:Hsbv26Yj.net]
- >>262
>ツール関係もC言語で作るって言うのはどうかと C++以外だとJavaScriptしか使えないです。保存できない・・・ >>265 ありがとうございます。バイナリと思われる意味不明な文字列で保存までできますた。 読み込みもたぶんできそうです。 >>267 特に重いとは思いませんでした。 つか、あと2,3日で追い抜かれそうな気がしてきたorz
- 269 名前:245 mailto:sage [04/04/10 18:02 ID:rQAMSH7v.net]
- 適当に動くNPCを追加して、キャラの余白は透過するようにしました。
ttp://gamdev.org/up/img/447.zip 次はキャラ同士で当たり判定をつけて、 NPCの数を動的に増やしたり減らしたりできるようにしようかと思ってますが、 めんどいだけで特に得るものは無さそう。。。 でも見た目楽しそうなのでやってみようと思います。 >>つか、あと2,3日で追い抜かれそうな気がしてきたorz ふぉぉぉぉぉぉおおおお!!!
- 270 名前:98 [04/04/11 21:26 ID:ih6xwcUu.net]
- >>269
左移動・上移動はいいんですが、右移動・下移動の時の画面に現れてくる部分の描画が遅いような感じです。 ・エンターキーを押すとコマンドが出るようにした。 ・マップデータはバイナリのまま読み込むようにした。 ・ソースを修正しやすいように修正した。 www.geocities.co.jp/SiliconValley-Bay/2736/zz101.txt www.geocities.co.jp/SiliconValley-Bay/2736/rpg_a10.zip 次はスクリプトを使ってNPCと話せるようにしようと思う。
- 271 名前:245 mailto:sage [04/04/11 22:41 ID:OD43hm2K.net]
- 今日はハマリ中でうpできそうにない・・・
>>270 試してみてもらえたようで、ありがとうございます。 起動時のままのウィンドウサイズでも変になってますか? 家でもウィンドウを広げると確かに下とか右の方の描画が変なんですが、 一応起動時のサイズが標準なので、普通だったら見えないところだから そのままでいいやと思って直してなかったんですが、 標準サイズのままでおかしくなってるとしなら直さないといけませんね・・・ ちなみにソース拝見しましたが、APIのCreateWindowでゲーム内ウィンドウを 作ってるのが新鮮ですた。こういうのって自力で原始的に作んなきゃならないと 思い込んでたので作るのを逃避してきたのですが、 APIのウィンドウを使えるならマウスドラグで位置移動とかサイズ変更とか もできそうですね。
- 272 名前:98 mailto:sage [04/04/12 00:16 ID:A/n3T6P2.net]
- >>245
あ、起動時のままなら問題ないです。 >APIのCreateWindowでゲーム内ウィンドウ 自力で描画っていうのもやってみたんですが、いろいろ問題があったので 子ウィンドウにしました。 ただ、子ウィンドウを使うとウィンドウが無効になったときの処理が 面倒だったりするので自力で描画したほうが楽なのかもとか思ってます。
- 273 名前:名前は開発中のものです。 mailto:sage [04/04/12 00:35 ID:4A1duCG6.net]
- 君らまだまだ先は遠いぞ
- 274 名前:245 mailto:sage [04/04/12 01:08 ID:+oNLbu0z.net]
- >>272
環境によってウィンドウの出方とか違うのかと思ってましたが、 よかったです。安心しました。 >面倒だったりするので自力で描画したほうが楽なのかもとか思ってます。 そうですか。。。今の課題をクリアしたら私も色々テストしてみるとします。 段階的学習っていうの見てますが、もっと先のレベルも欲しい所ですね。 別に無くてもやらなきゃならないことは山ほど見つかりますけど、、、
- 275 名前:245 mailto:sage [04/04/12 18:29 ID:+oNLbu0z.net]
- キャラ同士に当たり判定をつけ、移動するとき向きを変えるようにした。
NPCをテンキーの+-キーで増減できるようにした。(お遊びで。でも予想外に辛かった。。) なぜか12,3体辺りでバグるので10体までに制限してあります。 ttp://gamdev.org/up/img/471.zip ちなみに前回のバージョンでは キャラの透過転送にGetPixel,SetPixelをつかって原始的にやっていたんですが、 キャラの数が増えるとかなり重かったので今回はTransparentBltなる関数を使うようにしました。 でも環境によっては(Win98とか)リークを起こすいわく付きの関数らしいので 実行時は自己責任でおながいします。うちは2000ですが、特に問題ないです。
- 276 名前:98 mailto:sage [04/04/12 22:51 ID:Zs0PVIFw.net]
- >>275
XPですが、いい感じでした。 NPC増やすのって何気に難しそう・・・
- 277 名前:とおりすがりの親父PG mailto:sage [04/04/13 00:14 ID:MuenDC6+.net]
- >>252
オジサンはAPIで作るほうがめんどいと思いますorz...
- 278 名前:245 mailto:sage [04/04/13 00:54 ID:4GaN7j22.net]
- >>276
どもです。 あれをちょっと改良したらへぼいARPGみたいなのができそうかなという気が。 でもとりあえずなんかウィンドウを表示してみようかなぁ。 次に何をやるか迷い中です。 >>277 >オジサンはAPIで作るほうがめんどいと思いますorz... まじですか。通りすがりなんていわないで、 オラのためにDX習得までの段階的学習目標を50段階くらい作って下さい。 お願いします。お願いします。 ところでDirectXの画面ってAPIのコントロール類って貼れないんでしたっけ。
- 279 名前:とおりすがりの親父PG mailto:sage [04/04/13 01:19 ID:MuenDC6+.net]
- >>278
では、DirectXのSDKを落としてきてインストール デモをコンパイルして 三角形を回してみる。 とりあえずここまでかな。
- 280 名前:245 mailto:sage [04/04/13 21:24 ID:4GaN7j22.net]
- >>279
できました!サンプルをほんのちょっと改造して矢印キーで回転するようにしました。 実行時にカーソルが砂時計なのは何ででしょう。 支障ないみたいだけど激しく気持ち悪い。 ttp://gamdev.org/up/img/480.zip 次の、、次の課題をください! それまで今までの2Dを改造してます。
- 281 名前:とおりすがりの親父PG mailto:sage [04/04/13 22:39 ID:qfExSMIG.net]
- >>280
それでは、頂点の数を増やしてみる あとは5種類ある頂点の種類をそれぞれ試してみる。 次にこのサンプルはSDKが供給する「ライブラリソース」をインクルードしていますが それを別フォルダにコピー(複製)して、自分用のライブラリファイルとすべし 自分用(スケルトン)フレームを作成する
- 282 名前:98 mailto:sage [04/04/13 23:17 ID:eA8EtTKv.net]
- DirectX早くやりたい(´・ω・`)
www.geocities.co.jp/SiliconValley-Bay/2736/zz105..txt www.geocities.co.jp/SiliconValley-Bay/2736/rpg_a11.zip ・NPCと話せるようにした。 ・タイトル画面をつけた ・スクリプトのメリットがよく分からないので使わなかった。 ・ソースが多くなったせいか、汚いせいか、自分でも読みにくくなってきた。 次はNPCに話しかけたらエンディング、という流れを作ろうと思う。 あとはごりごり作っていけば完成しそう
- 283 名前:245 mailto:sage [04/04/13 23:53 ID:4GaN7j22.net]
- >>281
さっきうpした奴に頂点一個追加して正方形を表示するのはできました。 5種類ある頂点の種類っていうのが何をさしているかちょっとわかんないのですが、 トライアングルストリップとかトライアングルファンとかの事だとしたら 試してみて違いを確認しました。 >>282 なんかウィンドウ表示が変ですた。 NPCに隣接しててもしてなくても、コマンドを実行すると 下の会話ウィンドウにもコマンド一覧があらわれるみたいです。 古いバージョンがうpされてるのかも。。。
- 284 名前:98 mailto:sage [04/04/14 00:12 ID:ASstlwbG.net]
- >>283
ぁ、ほんとですね・・・タイトル画面作るのに集中してて気づきませんでした。 原因調査してみます
- 285 名前:98 mailto:sage [04/04/14 00:54 ID:ASstlwbG.net]
- やっとバグとれた('A`)
lpszClassNameがかぶってるのが原因でした。 今までかぶってても平気だったのは何でだろう・・・
- 286 名前:通りすがりの親父PG mailto:sage [04/04/14 05:41 ID:EE4mRz9N.net]
- >>283
それですそれです。線分と点などもあると思います。 あるものは偶数しかNGなものもあります。 ではライブラリソースを自分用にしてください。 それを改造していきます。
- 287 名前:245 mailto:sage [04/04/14 17:34 ID:TCeeFkNf.net]
- >>親父PG
正直に言うであります。 意味が分からないであります! 壁| 〇 =3 | ̄|_ 開発にはVCを使ってますが、 現在のソースでは、一つのヘッダファイル(d3dx9.h)を SDKの入ってるフォルダからインクルードしてまして、 コンパイルしたら「外部依存関係」の所に他のヘッダファイルが色々追加されました。 これらを自分のプロジェクトのフォルダの方などにコピペするってことでしょうか。。。 こんなヘタレですいません。
- 288 名前:とうりすがりの親父PG mailto:sage [04/04/14 19:01 ID:EE4mRz9N.net]
- >>287
そうです。自分用のライブラリフォルダを作ってそこに複製します。 (元の位置のものは残しておかないと、他のサンプルが動かなくなる) d3dapp.cppを覗くとフル画面モードの切り替えやウインドサイズの変更 ポーリングループの部分等があり、なかなか面白いものがありますよ。
- 289 名前:245 mailto:sage [04/04/14 22:05 ID:TCeeFkNf.net]
- >>親父PG
できました。一応、画像です。点とか線にもなりました。 d3dapp.cpp見てみましたが、かなりムズイです。そんなレベルです。 ですが、がんばって習得するので課題を、、課題を下さい! ttp://gamdev.org/up/img/483.jpg 2DPRG、ちょっとだけ改造しました。 「+」キーを押すと適当なHPをもったNPCが発生します。 NPCに向かって「-」キーを押すとHPが減って、0になると倒せます。 けど連射が効いちゃってるので押しっぱで移動してるだけで事がすみます。 ttp://gamdev.org/up/img/484.zip 環境によって速度も一定じゃないし、ソースも描画部分とか入力部分とか バラバラなのでその辺を一旦綺麗にできたらウィンドウを描画してみようと思います。
- 290 名前:とうりすがりの親父PG mailto:sage [04/04/14 23:45 ID:EE4mRz9N.net]
- >>290
ここのサイトを参考にしてポリゴンを貼ってみると良いですよ ttp://www.realdigital.co.jp/densi2/index.html
- 291 名前:245 mailto:sage [04/04/15 23:47 ID:DNQtOokO.net]
- >>とうりすがりの親父PG
テクスチャ張れました。 gamdev.org/up/img/488.jpg もっと、、、、もっと課題をください! ShadowbaneとかWorcraftみたいなカッチョいいゲームを作りたいのであります!
- 292 名前:名前は開発中のものです。 mailto:sage [04/04/16 00:28 ID:HZnOSJqT.net]
- 課題
フレームレートを一定に保ち、フレームスキップを実装せよ
- 293 名前:245 mailto:たまにはage [04/04/16 15:24 ID:rC4Ao3Jo.net]
- とりあえずFPS測ってみました。
前の課題作ってるときから「どうも遅い」と薄々感じてたんですが、 DX9SDKに入ってるチュートリアルの三角が回るやつを改造して測ってみたら 案の定40fpsしか出てませんでした。 試しに、DX8に入ってる同じ三角が回るサンプルに同じ改造をして測ったら 400fpsとか出てる模様・・・ ビデオボードがGF2GTSだからDX9だとダメなのかなぁ。。。 8と9のサンプルで特別違う事をしてるとは思わないんですが、なんでですかね?
- 294 名前:98 mailto:さらにあげてみる [04/04/16 18:11 ID:Lk4Qkb2j.net]
- 完成しますた。クソゲーです。
www.geocities.co.jp/SiliconValley-Bay/2736/zz109.txt www.geocities.co.jp/SiliconValley-Bay/2736/rpg_a12.zip 全然ドラクエじゃねえ・・・・ 次はDirectXやります。
- 295 名前:親父PG mailto:sage [04/04/17 01:25 ID:N6rYd7aK.net]
- >>293
テクスチャ貼れましたか。頑張っているようですね。 ではスプライトもついでにやっておきましょう。 DirectXのほうが簡単という私の前の意見に、そろそろ納得していただけると思います。 さてこのサンプルでは高精度タイマーユーティリティが使われています。 どこに在るか確かめ、どのように使われているかを探し出せば、自ずと遅くなっている原因もわかるかもしれません。
- 296 名前:245 mailto:sage [04/04/17 15:31 ID:UZYSuoQB.net]
- >>親父PG
ありがとうございます。 fps抑えられてた原因がわかりました。(というか教えてもらいました) 危うくビデオボード買うところでした。スプライトも表示できました。 gamdev.org/up/img/498.jpg 楽なのかどうかはまだ慣れてないのではっきりと実感できないのですが、 はやく自由に使いこなせるようにがんがります。ので、ので、何か適当に課題を下さい! >>294 ふぉおおおおぉおぉぉぉぉぉぉ!!俺も仕上げるぞー!
- 297 名前:98 mailto:sage [04/04/17 17:56 ID:lFucyLLi.net]
- 三角形って
\Samples\C++\Direct3D\Tutorials\Tut02_Vertices\Vertices.cpp ↑これですか?そのままだとコンパイルできないんですが・・・ エラー E2209 Vertices.cpp 14: インクルードファイル 'd3d9.h' をオープンできない エラー E2141 Vertices.cpp 22: 宣言の構文エラー あと6行ほど続く。 もしかしてbccだとDirectX使えないっていうオチですか?
- 298 名前:名前は開発中のものです。 mailto:sage [04/04/17 20:44 ID:O0XDlP+3.net]
- therpg.sourceforge.jp/pukiwiki/index?%5B%5B%B3%D0%BD%F1%A1%A7BorlandC%2B%2B5.5%A4%C7%A4%CE%A5%B3%A5%F3%A5%D1%A5%A4%A5%EB%5D%5D
↑これやってみそ
- 299 名前:とおりすがりの親父PG mailto:sage [04/04/17 22:47 ID:mXcf9nch.net]
-
>>296 245さん お疲れさまでした。 さてここから先ですが、それは作る対象によって異なると思います。 今の状態でBGとスプライトが表示できるわけですから、最低条件である「表示」に関してはクリアできたわけです。 ではこの先何をすべきでしょう?。 純粋に表示能力を学習したいのであれば、3D表示>ピクセルシェーダー>キューブテクスチャ 他にランドスケープのライブラリを設計するなど またRPG等などスクリプトが必要なシステムであれば、そちらの設計も必要です。 「マウスクリックの場所を検地した後、どのように振舞うか」この部分を内部でインラインで処理するか、 「処理データ-(外部ファイルの読み込み等)」によってコントロールするようにするか? など また包括的なシステムというのも念頭において、全体のクラス設計も必要になります。 ということで、私が教えた?(実は何も教えていないw)事はここで一旦終了です。 DirectXの導入と実際にPGを組む事ができたという事で、当初の目的は達成できました。 おめでとう! 不詳、私もここの板でスレッドを立てていますので、おひまな時には覗いてみてください。
- 300 名前:245 mailto:sage [04/04/17 23:39 ID:UZYSuoQB.net]
- >>親父PG
今までありがとう! まだまだ先は長そうですががんばります。Shadowbaneみたいなゲームを作るまで! 親父PGさんもたまには私の成長っぷりを見にきてください。 これからはまたシコシコ取り組みます。 とりあえずはハイトフィールドを歩けるくらいになるまでを大きな目標にしようかなぁ。 つうことでモーション無しXファイルを読み込んでみる事にします。 >>297 私が弄ってたのはそれです。DXがんばってマスターしましょう!
- 301 名前:98 mailto:sage [04/04/18 20:41 ID:6QlIhFIw.net]
- >>300
むしろ挫折しそうですorz >>298 4.のmakeでCommand syntax errorというのが出てmakeできません。 で、bccは諦めてVC++が無料なのでインスコしてみたんですが、 clのパスはたぶん通ったんですが、ヘッダファイルのパスが通せなくて苦戦してます・・・
- 302 名前:245 mailto:sage [04/04/19 00:12 ID:3QCXa6Lb.net]
- ウチはVC++6使ってるんですが、
「ツール」→「オプション」→「ディレクトリタブ」内で、 「表示するディレクトリ」を「インクルードファイル」に指定し、 下のところの「新規作成」でDXSDKのIncludeディレクトリを追加。 同様に「表示するディレクトリ」を「ライブラリファイル」に指定し、 DXSDKのLibディレクトリを追加。 そしてプロジェクト毎の設定として、 「プロジェクト」→「設定」→「リンクタブ」内で、 オブジェクトライブラリモジュールのところに d3d9.lib d3dx9.lib dxerr9.lib dxguid.lib などを追加してます。 ウチと環境違ってたら私はヘタレなのでよく分んないです。スマソ。
- 303 名前:98 mailto:sage [04/04/19 18:57 ID:x8GMNOCf.net]
- 無料版なので、dos窓でいろいろやらないとだめなんです・・・
VC++ ->DirectXどころか、coutすらまだ使えない状態(printfは使える) bcc ->三角形をコンパイルしようとすると Fatal: オプションが必要 : LD:\directx9sdk\Lib\Borland といわれる。 ここを参考にしてみた。↓ ttp://www.geocities.co.jp/Milano/8000/bcc/
- 304 名前:名前は開発中のものです。 mailto:sage [04/04/19 20:17 ID:eJn0oU39.net]
- >303
VCでのライブラリモジュールのリンクは #pragma comment(lib, "ライブラリ名.lib") を使うと少し楽できるかも。(正しいやり方じゃないかもしれないけど・・・・)
- 305 名前:245 mailto:sage [04/04/19 20:55 ID:3QCXa6Lb.net]
- >>303
あぁ、無料のVC++ってなんだろうと思ってたら コンパイラが無料配布されてるんですか。。。 お役に立てずに申し訳。
- 306 名前:親父PG mailto:sage [04/04/19 23:42 ID:HvqP5Z0m.net]
- >>301
Visual Studio 6.0 を使う場合 インクルード ファイルの検索パス ヘッダー ファイルのパスが正しいこと、DirectX のヘッダー ファイルのディレクトリがコンパイラに最初に検索されるパスになっていることを確認すること。 インクルード パスを確認するには、[ツール] メニューの [オプション] をクリックし、[ディレクトリ] タブをクリックする。これにより、次のようなダイアログ ボックスが表示される。 ここでリストの先頭に表示されているパスが、最新の DirectX のヘッダー ファイルを置いているフォルダになっていなければならない。 このデフォルト パスは、C:\DXSDK\Include である。このパスが表示されていない場合は、それをリストに追加し、[ディレクトリ] タブ内のツールバー コントロールを使ってそのパスをリストの先頭へ移動すること。 ↓ エヂエタ|タブ|デバック|互換性|ビルド|ディレクトリ|ワークスペース||| プラットホーム 「WIN32」 ディレクトリ C:\DXSDK\Include ←これ リンカの検索パス リンカがリンク ライブラリを検索する際に使う検索パスと、その検索順を確認すること。リンクの検索パスのリストも、[ディレクトリ] タブで確認できる。 これを行うには、[ツール] メニューの [オプション] をクリックし、[ディレクトリ] タブをクリックする。ダイアログ ボックスが表示されたら、[表示するディレクトリ] ボックスの [ライブラリ ファイル] をクリックする。 これにより表示されたリストの先頭のパスが、最新の DirectX のリンク ライブラリを置いているフォルダになっていなければならない。このデフォルト パスは、C:\DXSDK\Lib である。 プロジェクトのリンク ライブラリ サンプルと一緒に提供されたプロジェクト ファイルを使う場合は、この設定を確認する必要はない。この設定値はプロジェクト ファイル内で指定されている。 新しいアプリケーションをコンパイルする場合は、[プロジェクト] メニューの [設定] をクリックする。これにより、次のようなダイアログ ボックスが表示される。
- 307 名前:98 mailto:sage [04/04/20 00:31 ID:2oyWdrfK.net]
- >>304
#pragma comment(lib , "libcp.lib") をつけてみたんですが、だめでした。 自分でもよく分からないんですが、環境変数いじってたらいつの間にか coutが使えるようになってました。 >>305 clとかvccとか言ったほうが分かりやすかったですね >>306 ありがとうございます。でもVisualStudioではないんです・・・ bccはDirectX8以上と相性が悪いらしいのでさっきアンインストールしてしまったんですが、 clでwindows.hが使えるようになったら再びインスコしてみます。
- 308 名前:名前は開発中のものです。 mailto:sage [04/04/20 01:42 ID:TlrWn8fZ.net]
- goldfly.ld.infoseek.co.jp/program/program.html#directx
ガイシュツ?
- 309 名前:名前は開発中のものです。 mailto:sage [04/04/20 22:55 ID:eL87iK8i.net]
- >307
私の環境では、インストール先のディレクトリに出来る”vcvars32.bat”と言うバッチファイルを実行しただけで、 環境変数がすべて設定されました。
- 310 名前:98 mailto:sage [04/04/21 18:22 ID:bfgLD/fX.net]
- >>308
やってみたんですが、 外部シンボル 'Direct3DCreate9' が未解決 というエラーが出ます。意味が分からないんですが、何がいけないんでしょうか? >>309 そうだったんですか・・・必死に自分でやってましたorz PlatformSDKも、XMLが読めないとか言われて落とせないので、 VC++(製品版)を買ったほうがいいような気もしてきました・・・
- 311 名前:名前は開発中のものです。 mailto:sage [04/04/21 18:29 ID:+YydXBKM.net]
- 「プロジェクトの設定」のリンクのところで、d3d9.libをリンクすればいいハズ。
あと、必要に応じてほかのLibもリンクしてやる。 関数ごとに必要なLibはドキュメントに書いてある。
- 312 名前:311 mailto:sage [04/04/21 18:38 ID:+YydXBKM.net]
- >>310
BccDevの設定のことな。 これでDX9がBCCで使えるはずだが、 できたプログラムがDLLを導入した環境じゃないと動かないかも知れない。 試してないのでわからん。スマン。
- 313 名前:98 mailto:sage [04/04/21 18:56 ID:TkqwtIOq.net]
- >>311
コンパイルできました。 でもVertices.exeをダブルクリックしても何も起きないです。 \Samples\C++\Direct3D\Binのファイルも半分ほど開けないので、 ビデオカードのせいでしょうか?
- 314 名前:311 mailto:sage [04/04/21 19:08 ID:+YydXBKM.net]
- Vertices.exeはハード依存ではないハズなので、
起動しないのはどこかがおかしいのかも。 俺も初心者なのでBinのプログラムやビデオカードについては正直わからん。
- 315 名前:98 mailto:sage [04/04/21 19:33 ID:TkqwtIOq.net]
- >>314
別のPCでやったら三角形が表示されました。 なんでだろう
- 316 名前:245 mailto:sage [04/04/21 19:46 ID:KyjgQXxH.net]
- 意味があるかわかんないけど、
Windowsの「スタート」メニューから「ファイル名を指定して実行」で dxdiagっていれるとDirect3dとかDrawの環境テストができますよ。 ダメだったらビデオボードのドライバを新しいのに更新してみるとか。
- 317 名前:98 mailto:sage [04/04/21 23:45 ID:HhcihRE8.net]
- >>316
テストしてみたんですが、問題なしでした。 ドライバを更新したら、今まで見れなかったサンプルが見れるようになったんですが、 Vertices.exeはまだ見れないです・・
- 318 名前:98 mailto:sage [04/04/22 00:12 ID:56TmnEhv.net]
- 画面の色数のようなものをいじってたら見れるようになりました。
やっとスタートラインに立てました。 教えてくれた人ありがとうございます。
- 319 名前:311 mailto:sage [04/04/22 00:31 ID:bRXr1w99.net]
- おお、原因はわからんが(w、とりあえず動いてよかった。
これからもガンガレ!
- 320 名前:245 mailto:sage [04/04/24 22:29 ID:jIgXjODn.net]
- Xfileのロードができた。
今更ながらクラスをちょっと勉強したので、 一つのモデルを読み込み、オブジェクトとして沢山配置したり 位置とか向きを管理できるようにしてみようと思う。
- 321 名前:名前は開発中のものです。 mailto:sage [04/04/25 13:27 ID:kOXdBOhy.net]
- ある点のRGB値を取得するときに使うGetPixelってありますよね
あれのRの値のみ取得する方法ってあるんですか? あったら教えてください
- 322 名前:名前は開発中のものです。 mailto:sage [04/04/25 15:10 ID:pLOIoMuL.net]
- GetRValue
- 323 名前:321 mailto:sage [04/04/25 19:05 ID:kOXdBOhy.net]
- >>322
マジありがと
- 324 名前:98 mailto:sage [04/04/26 21:10 ID:bAZf+D6a.net]
- サンプルのソース見ててもさっぱり分からん・・・
DirectXのお勧めの本とかサイトあったら教えてください
- 325 名前:とおりかかった親父PG mailto:sage [04/04/27 23:00 ID:6oVtyqti.net]
- ところで気になるのですが、メモリ内に仮想的にDIBを造る方法をご存知ですか?
HDC hDC = CreateCompatibleDC( NULL ); DWORD* pBitmapBits; BITMAPINFO bmi; ZeroMemory( &bmi.bmiHeader, sizeof( BITMAPINFOHEADER ) ); bmi.bmiHeader.biSize = sizeof( BITMAPINFOHEADER ); bmi.bmiHeader.biWidth = ( int )tW; bmi.bmiHeader.biHeight = ( int )-tH;//ここを-すると左上頂点のDIBができるマジお勧め bmi.bmiHeader.biPlanes = 1; bmi.bmiHeader.biCompression = BI_RGB; bmi.bmiHeader.biBitCount = 16;//1 pixcel あたりのBit数 // Create a bitmap for the font hbmBitmap = CreateDIBSection( hDC, &bmi, DIB_RGB_COLORS,( void** )&pBitmapBits, NULL, 0 ); これでメモリの中にDIBが作成されます。 先ほどからGetPixcel 関数の話が出ているので書き込みました。 画像を扱う場合は一気に転送がセオリーだと思います。 もし既出であればスレ汚しすみません
- 326 名前:親父PG mailto:sage [04/04/27 23:02 ID:6oVtyqti.net]
- >>324
ttp://www.realdigital.co.jp/densi2/
|

|