1 名前:名前は開発中のものです。 mailto:sage [2012/02/23(木) 21:35:32.53 ID:Si08WDH/] Cを習得した程度のスキルでも、 ゲームのグラフィックを比較的容易に描画する事のできる、 「DXライブラリ」に関するスレッドです。 DXライブラリに関するテクニックなどの情報交換などを行う事で、 多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。 【公式】 homepage2.nifty.com/natupaji/DxLib/ 【過去スレ】 DXライブラリ 総合スレッド pc11.2ch.net/test/read.cgi/gamedev/1197468399/ DXライブラリ 総合スレッド 2008 pc11.2ch.net/test/read.cgi/gamedev/1224923873/ DXライブラリ 総合スレッド その3 pc11.2ch.net/test/read.cgi/gamedev/1238429676/ DXライブラリ 総合スレッド その4 pc11.2ch.net/test/read.cgi/gamedev/1249822550/ DXライブラリ 総合スレッド その5 pc11.2ch.net/test/read.cgi/gamedev/1259912953/ DXライブラリ 総合スレッド その6 hibari.2ch.net/test/read.cgi/gamedev/1267108154/ DXライブラリ 総合スレッド その7 hibari.2ch.net/test/read.cgi/gamedev/1286180687/ DXライブラリ 総合スレッド その8 hibari.2ch.net/test/read.cgi/gamedev/1301818631/ DXライブラリ 総合スレッド その9 hibari.2ch.net/test/read.cgi/gamedev/1310904069/ DXライブラリ 総合スレッド その10 hibari.2ch.net/test/read.cgi/gamedev/1313655495/ DXライブラリ 総合スレッド その11 toro.2ch.net/test/read.cgi/gamedev/1322844235/
846 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 02:43:46.36 ID:m1rxCUFY] その前に、自分のできる方法でゲーム完成させて経験値増やしたほうがよいように見える
847 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 03:09:05.33 ID:b4J8kKZD] >>846 キャラクターのクラスをラウンドクラスで配列で持って管理するっていう方法を想定して作ったんだよ ラウンドクラスをコンストラクタの引数で指定されたファイルでマップやキャラクターや武器を初期化して このラウンドクラスはその名の通りラウンド中は保持してラウンドが切り替われば新しく作る。 というのがしたいんだ。 だから switch(hoge){ case 0: hoge=func(); case 1: Round round=new Round(); hoge=2; break; case 2: hoge=round.main(); break; case 3: delete round; hoge=0; break; } これがしたい case0がメニューで1で初期化(つまりロード画面?)2がメインゲーム、3がリザルト画面 みたいな
848 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 03:12:36.92 ID:b4J8kKZD] でもswitchスコープ抜けると開放されちゃうんよ( ;´Д`) staticにすれば、ひょっとしたら言語特性でできるかもしれないし でもそうするとdeleteしても消えないかもしれないし
849 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 03:26:03.65 ID:m1rxCUFY] そういう概念をどこかで齧ったのなら、 そのソースごと真似すればいいんじゃないかな スコープはC/C++では割と基礎的なところなんで、そこの理解がまだ足りないうちに そこまで高度・大規模なことを「そらで」やろうとしても挫折してしまうと思う 手本があるなら手本を理解するまでやったほうがいい、その意味で、手本の真似が足りない
850 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 04:19:36.26 ID:rvG7rk61] >例えば >>816 なら関数ポインタ or クラス継承して >ストラテジーパターンのポインタを使うべきだ。 switchをやめろ。
851 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 04:32:17.32 ID:ETYUDOJj] LILO and switch
852 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 05:20:07.65 ID:J67XAZ6b] なんでローカルにnew
853 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 06:11:28.75 ID:rvG7rk61] まず、メモリリークチェックしたほうがいいな。 >>847 のプログラミングからは駄々漏れ臭いがぷんぷんする。 _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); ゴリ押しおまじないプログラミングは危険だぜ。
854 名前:名前は開発中のものです。 [2012/05/20(日) 08:54:21.16 ID:jxpb7tAX] >>847 無理すんな。普通にやれw
855 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 09:17:03.32 ID:GdVgJDsL] 綺麗に書く素人が「綺麗に」とか考えて作っても読みやすくはならんと思うぞ
856 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 09:24:37.57 ID:rvG7rk61] DXライブラリのC++ラッパー作ってます。よろしく。 mint.ninja-web.net/dpp/index.html
857 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 09:33:19.40 ID:QwDamEGA] >>847 メンバ変数にでも保持しておかないと、 スコープ抜けたらローカル変数は保持できないので、結果的にメモリリークする まあ、>>849 がFAだと思うが
858 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 09:47:55.18 ID:b4J8kKZD] >>849 確かにswitchはオススメしないって言われた お手本のコードは無いです。 メインループのこの部分(タイトル画面やメインゲームやオプション画面の変異)って どのようにした方がいいですか? 他の方法がわからない 今思いついたのは NowState=&Start(); while(~~~){ NowState=NowState();//次に実行するべき関数のアドレスを返す }
859 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 09:49:23.86 ID:b4J8kKZD] タスクシステム?というのは聞いたけど昔のものだとかする必要が無いとか言われた
860 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 09:50:46.90 ID:GdVgJDsL] グローバルにenumでモード切り替え用の変数作ってswitchが一番簡単
861 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 10:17:37.19 ID:K5FhX9FA] シーン管理でggr
862 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 10:21:43.19 ID:b4J8kKZD] c#やjavaでいいんじゃないかってくらい全部クラス化してる。 クラスは自分が管理クラス(今回の場合はラウンドクラス)から渡されたデータを使って処理を行う。 例えば一連の流れをいうと キャラクターが攻撃を行ったら判定クラスのメソッドが呼ばれ 判定クラスのメンバ変数ポインタからキャラクターの情報を貰って 判定結果がtrueならダメージ処理クラスに攻撃方法と対象と攻撃者が渡されるメソッドが呼ばれ ダメージ処理クラスが持っているキャラクターの情報を貰って HPが0ならキャラクターに死亡フラグを立て、UIクラスのメソッドに攻撃者と対象を渡す。 つまりキャラクタークラス→判定クラス→ダメージ処理クラス→UIクラス とバトンリレーになってる。 この時、キャラクタークラスや判定クラスやダメージ処理クラスは、キャラクターの情報を持ってないと仕事にならないのでラウンド管理クラスが保持している。 イメージとしてはクラゲと、クラゲの触手 class RoundAdmin{ Character character[]; Judge judge; Damage damage; public: void SetCharaNum(int); void SetJudgeClassChara(Character* hoge){damage.SetChara(hoge);}; void SetDamageClassChara(Character*); } 以上のことを踏まえて誰か中央部の設計お願いします。もう設計の最初からやり直しするのは嫌ですヽ(;▽;)ノ
863 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 10:39:42.64 ID:b4J8kKZD] >>861 d.hatena.ne.jp/selvaggio/touch/20060821/1156148509 関数ポインタ?をスタックしまくるんですか でもタイトルシーン→ゲームシーン→リザルトシーン という流れがあった場合リザルトシーンを予めタイトルシーン時にリザルトをpushしなきゃならないってことですよね
864 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 10:48:07.65 ID:rvG7rk61] 昨日はアクションでstd::mapが速い遅いの話だったが、今日はRPGの戦闘か? C++だと相互参照するのに嫌な制限あるから難しいよね。 >>856 のサンプルに入ってるソースではデータと振る舞いを分けちゃってますが、 クラスを名前だけ前方宣言してダブルディスパッチするほうが一般的なのかなぁ。
865 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 11:49:53.71 ID:rvG7rk61] >>862 こうか? class Charactor { __int HP; __bool isDead; __void Attack(Charactor* target, How* how) __{ ____Judge judge; ____bool is = judge.IsHit(target); ____if( is ) ____{ ______Damage damage; ______damage.Set(this, target, how); ______if( HP == 0 ) ______{ ________isDead = true; ________UI ui; ________ui.Set(this, how); ______} ____} __} };
866 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 11:56:57.34 ID:rvG7rk61] だめだ、エスパーよろ。
867 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 14:50:25.73 ID:b4J8kKZD] >>865 それぞれの返り値がないから 例えばjudge.ishit()っていうメソッドの中でdamageを定義してメソッドを呼んでる こう・・・ class Charactor { int HP; int x,y; double Angle; bool isDead; RoundAdmin* Admin; void Attack(int Kind){ Admin->judge.IsHit(this,x,y,Angle,Kind); } }; class Judge{ RoundAdmin* Admin; void Judge(RoundAdmon tmpAdmin){ Admin=tmpAdmin; } void IsHit(Attacker,x,y,Angle,Kind){ for(int i=0;i<Admin->CharaNum;i++){ if(~~~){ Admin->damage.func(Attacker,i,Kind); } } } }
868 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 14:50:56.96 ID:b4J8kKZD] 説明が下手でスパゲティで死にたい
869 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 14:54:58.64 ID:d1pNr8pV] enum { TITLE, MAIN, ENDING, }; int state = TITLE; int main(void) { while() { func[state](); } }
870 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 15:33:37.24 ID:GdVgJDsL] >>863 ゲームオーバー処理の時にゲームシーンをpopして、そのままゲームオーバーをpushすればいいんじゃないの?
871 名前:名前は開発中のものです。 [2012/05/20(日) 16:09:24.24 ID:b4J8kKZD] >>870 逆だと思ってました(popしたものが実行されると思ってた) そういうことですか >>869 func[MAIN]関数内で保持したい変数ってどうすればいいんですか? func[MAIN]以外が呼び出されたら消えて欲しいです。 あと今更ですが質問厨でウザいですし基本設計の質問はDxlibスレでスレチだった・・・
872 名前:名前は開発中のものです。 mailto:age [2012/05/20(日) 18:03:42.86 ID:B+9uILOG] Charactor*のようにポインターのマークが後ろにつくのはどういう意味だっけ?
873 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 18:16:08.20 ID:eBiE/F9z] Character* x; // Characterのポインタ型を表す型名 Character*30 // Characterという変数と30の乗算(演算子オーバーロードがされていない場合) Character*=10 // Characterという変数に30を乗算し代入(演算子オーバーロードがされていない場合) /*Character*/ // コメントの終端 どれでもお好きな物をどうぞ C++のスレがないってのは ここで質問して良いって言う理由にはならないからな?
874 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 18:30:54.34 ID:rvG7rk61] 中高生の黒歴史
875 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 18:44:31.78 ID:iNm25OoA] いい加減、スレ立てるか。>>841 でいい?
876 名前:名前は開発中のものです。 mailto:age [2012/05/20(日) 18:44:39.45 ID:B+9uILOG] ありがd Character* x; // Characterのポインタ型を表す型名 ですよね しかし↓このように書くのはどうなんだろう? Charactor *target
877 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 18:56:48.04 ID:m1rxCUFY] >>876 個人でゲーム作ってるなら、どっちか好きなほうを選べばいい ttp://www.henshi.net/k/hiki.cgi?GoogleCppStyleGuide#l99 ttp://ockeysprogramming.blog42.fc2.com/blog-entry-607.html
878 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 19:16:26.37 ID:/AOQLV8Q] >>875 スレタイに「ゲーム製作」入れて、 C/C++ゲーム製作総合スレッド Part1 でいいんじゃない?
879 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 19:19:04.91 ID:B+9uILOG] これは参考になりますね。どうもありがとうございます〜 C++の本には載ってない文法なので疑問でしたが 人それぞれの考え方なんですね
880 名前:名前は開発中のものです。 [2012/05/20(日) 21:23:14.14 ID:iNm25OoA] 立てた C/C++ゲーム製作総合スレッド Part1 toro.2ch.net/test/read.cgi/gamedev/1337516528/l50
881 名前:名前は開発中のものです。 mailto:sage [2012/05/20(日) 21:29:41.56 ID:m1rxCUFY] >>880 乙
882 名前:名前は開発中のものです。 mailto:sage [2012/05/21(月) 01:56:01.80 ID:ZnI/WkSf] >>880 おつ
883 名前:名前は開発中のものです。 mailto:sage [2012/05/21(月) 16:15:45.24 ID:L5xx/kw7] >>879 手元の入門書(2種類)だと載ってるけどな
884 名前:名前は開発中のものです。 mailto:sage [2012/05/21(月) 18:26:14.29 ID:ffV6Y48y] キャラクターを一瞬真っ白にして描画する方法ってわかる? 例えばダメージを受けたときなんかに使うアレ
885 名前:名前は開発中のものです。 mailto:sage [2012/05/21(月) 18:30:28.40 ID:I9dpNaEz] >>884 明るさを0にして色反転ってできなかったっけ?
886 名前:名前は開発中のものです。 mailto:sage [2012/05/21(月) 18:51:02.98 ID:ffV6Y48y] >>885 フィルタか、サンキュー
887 名前:名前は開発中のものです。 mailto:sage [2012/05/21(月) 18:58:22.65 ID:ffV6Y48y] 違った、ブレンドモードか。危ない危ない…
888 名前:名前は開発中のものです。 mailto:sage [2012/05/21(月) 22:19:42.57 ID:47wV3n9Q] SetDrawBright()とSetDrawBlendMode()使って、 一時的に他の色っぽく表示っていうのがこのスレか前のスレかにあったね 参考にさせてもらったわ
889 名前:名前は開発中のものです。 mailto:sage [2012/05/21(月) 23:13:34.24 ID:yadbYRsO] 別の画像を表示
890 名前:名前は開発中のものです。 mailto:sage [2012/05/22(火) 00:28:56.82 ID:fGZyqonm] 画像を指定した角度座標でマスクできる関数教えてください! 四角く作ったミニマップがダサいです!
891 名前:名前は開発中のものです。 mailto:sage [2012/05/22(火) 15:12:29.46 ID:mXIdZtP1] 上からマスク画像を表示
892 名前:名前は開発中のものです。 mailto:sage [2012/05/22(火) 20:41:55.22 ID:KEARhB46] >>890 すまんが、その質問からだとどういうふうに描きたいのか分からない。 「○○っていうゲームの△△みたいに」っていう例えでも良いんで もう少し詳しくやりたいことを説明してはくれまいか。
893 名前:名前は開発中のものです。 mailto:sage [2012/05/22(火) 23:11:59.34 ID:fGZyqonm] AVAのミニマップ表示と EXVSの画面右上のミニマップの両方お願いします。
894 名前:名前は開発中のものです。 mailto:sage [2012/05/22(火) 23:33:05.27 ID:GwTouD/j] EXVSってただの丸だろ。マスクする必要なしw
895 名前:名前は開発中のものです。 mailto:sage [2012/05/23(水) 10:34:59.14 ID:b4o10B2o] 構造体のポインタを引数にする関数がうまく使えない。 クラスのメンバ構造体のポインタを渡そうとしても「CClass::TStructからTStructへ変換できません」と言われる。 わけわからん。お助けくだせえ
896 名前:名前は開発中のものです。 mailto:sage [2012/05/23(水) 10:36:23.94 ID:b4o10B2o] おっと、それ用のスレがあったんか。スレ汚しすまん
897 名前:名前は開発中のものです。 mailto:sage [2012/05/23(水) 12:41:41.58 ID:0bw1KTX7] >>889 以前他のライブラリで試そうとしたんだけどどうやっても白いくり抜いたような画像は得られませんでした。 やっぱり出来ないんですよね? たとえば赤い色の敵がいるとすると青と緑の要素がないからキレイに白くならなかったような そのときの結論は、手作業で白い敵の絵も作ってダメージのとき そちらを表示するしかないということでした
898 名前:名前は開発中のものです。 mailto:sage [2012/05/23(水) 13:39:40.92 ID:fw4B82cQ] シェーダを使うw
899 名前:名前は開発中のものです。 mailto:sage [2012/05/23(水) 13:59:04.47 ID:EJDtoHbk] >>897 DXライブラリのメモリイメージAPIから作り出すことができる。 ただしDirect3Dは、同じテクスチャを同じ描画モードで 連続して描画すると効率が良いので、 一枚の敵画像の中に白く塗り潰した敵の絵も一緒に入れてしまったほうが 描画するときの効率はいい。
900 名前:名前は開発中のものです。 mailto:sage [2012/05/23(水) 14:07:34.09 ID:EJDtoHbk] Direct3D9の固定パイプラインがもっている、 あるいはHLSL書いてピクセルシェーダ使うのも描画モードが切り替わるので、 Direct3Dの一括描画を止めてしまう。 手作業で白い敵の絵も作って、アルファブレンドで二枚塗りして フェードさせるのが最も望ましいんじゃないかな。
901 名前:名前は開発中のものです。 mailto:sage [2012/05/23(水) 17:25:41.49 ID:0bw1KTX7] >>898 わかりません・・・Directx7レベルPGなのでw >>899 >>900 よくわかりました。ありがとうございます。 おかげでこないだ詰まってた問題も原因がわかりました。 スプライト処理クラスを作って一枚表示ごとに描画モードを SetRenderStateで変えていたのですが、去年買ったi5パソコンで数百程度の 小さい画像表示で処理落ちし始めてビビリました。 このスレで「描画モードを変えると処理が重くならないか?」という話題があったのを うっすら記憶していて、SetRenderStateをまとめてやるようにしたら改善されました。 いま「SetRenderState 重い」で検索したらたしかに重たいと警告を発してる開発者さんがいました。
902 名前:名前は開発中のものです。 mailto:sage [2012/05/23(水) 21:39:28.35 ID:oEFLuczz] スプライトの色を一時的に白っぽくするとかはここを参考にした覚えがある ttp://dixq.net/forum/viewtopic.php?t=9714&p=78319
903 名前:名前は開発中のものです。 mailto:sage [2012/05/23(水) 21:52:32.24 ID:fw4B82cQ] 画像ロードする関数を少しラップしてソフトイメージ経由で白マスク画像を作成、連結したもの作らせると結構良さそうかな
904 名前:名前は開発中のものです。 mailto:sage [2012/05/23(水) 22:29:47.19 ID:hXbSVptG] ファミコンだったらパレットチェンジでデータ量少なくかつ高速に処理できるのに最新PCって駄目だな
905 名前:名前は開発中のものです。 mailto:sage [2012/05/23(水) 22:42:46.64 ID:kOpBPT9L] 全くだw いちいち色違いのキャラを用意しないといけないとか、面倒だわ。 俺もこの白点滅のやり方について公式とかで質問した人間だから、同類。
906 名前:名前は開発中のものです。 mailto:sage [2012/05/23(水) 22:49:16.12 ID:EJDtoHbk] >>903 いくつかポイントがあって、合成する元の画像がそれを意識して作られる必要あり。 テクスチャは2の累乗であるwidth, height の正方形である。 だから長方形とかだと裏で大きめの正方形を確保してしまうから、 合成後の画像が正方形のスペースを有意義に使うこと。 カラーパレットが空いている必要がある。 つまり256色を白以外で使いつくされてるとだめ。
907 名前:名前は開発中のものです。 mailto:sage [2012/05/23(水) 22:50:09.77 ID:pwt5T56h] 今だってピクセルシェーダー使えば同じこと出来るだろ
908 名前:名前は開発中のものです。 mailto:sage [2012/05/23(水) 23:13:59.87 ID:hXbSVptG] そんな高度なテクニックは使いこなせねえよ
909 名前:名前は開発中のものです。 mailto:sage [2012/05/23(水) 23:18:06.90 ID:0ldDGJ6S] 白抜きしたいキャラクタをまずブレンドモードInvで反転で描くだろ? その上にもっぺん同じキャラクタをこんどはAddで加算描画するだろ? そうすると抜き色以外255で埋まるって寸法よ
910 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 00:14:49.78 ID:OTDx3X8F] 別に白画像作ればいいじゃん
911 名前:名前は開発中のものです。 mailto:sage [2012/05/24(木) 00:37:40.90 ID:YnP/Ncq+] アルファブレンドのON,OFFの切り替えが頻繁に起きるぐらいなら 全部アルファブレンドONで描画したほうがいいんだな。 マップタイルだけOFFとか。
912 名前:名前は開発中のものです。 mailto:sage [2012/05/25(金) 00:25:55.82 ID:rg8OJbTJ] >>909 頭やわらかいねきみ
913 名前:名前は開発中のものです。 mailto:sage [2012/05/25(金) 20:12:45.46 ID:9VSOgWxy] Allegroには、グラフィックの背景色以外の部分を指定の色一色にして描画する関数があって、 ビットマップでフォントを用意してそれを指定の色で描いたり、 そのシューティングゲームでダメージを受けて一瞬#fffだか#f00だかのシルエットになるときとか使い道があった
914 名前:名前は開発中のものです。 mailto:sage [2012/05/27(日) 08:25:16.10 ID:/36TiFsh] でも白画像でいいよね
915 名前:名前は開発中のものです。 mailto:sage [2012/05/27(日) 11:50:59.78 ID:6LUkVEJp] 作るの面倒くさい。少なくとも自動生成じゃないと。
916 名前:名前は開発中のものです。 mailto:sage [2012/05/27(日) 16:01:26.83 ID:jTp1UMkC] 俺はゲーム内で自動派だけど、 ゲーム外でツールで生成する派とかもいるかもしれんな 要はゲームで実現できればいいし
917 名前:名前は開発中のものです。 [2012/05/28(月) 03:51:16.27 ID:xvuBoj/+] ゲームではかなりよくある表現だから関数があってもいいかもな
918 名前:名前は開発中のものです。 mailto:sage [2012/05/28(月) 05:01:17.17 ID:fvu7wQ0B] 関数作ったよー>< // r, g, bの色を透過色とみなした白マスクを下に繋げて作成。alphacheckを1にするアルファ値0も透過する。 // AllNum以降はLoadDivGraph系と同じ(ただし複製後の画像を想定して指定すべし)。 int LoadDivGraphWhiteMaskDup(const wchar *infile, int r, int g, int b, int alphacheck, int AllNum, int XNum, int YNum, int SizeX, int SizeY, int *HandleBuf) { int inhandle = LoadSoftImage(infile); int w, h; GetSoftImageSize(inhandle, &w, &h); int outhandle = MakeARGB8ColorSoftImage(w, h*2); BltSoftImage(0, 0, w, h, inhandle, 0, 0, outhandle); for (int y = 0; y < h; y++) { for (int x = 0; x < w; x++) { int tr, tg, tb, ta; GetPixelSoftImage(inhandle, x, y, &tr, &tg, &tb, &ta); if ((tr == r && tg == g && tb == b) || (alphacheck && ta == 0)) DrawPixelSoftImage(outhandle, x, y+h, 0, 0, 0, 0); else DrawPixelSoftImage(outhandle, x, y+h, 255, 255, 255, 255); } } int outgraph = CreateDivGraphFromSoftImage(outhandle, AllNum, XNum, YNum, SizeX, SizeY, HandleBuf); DeleteSoftImage(inhandle); DeleteSoftImage(outhandle); return outgraph; }
919 名前:名前は開発中のものです。 mailto:sage [2012/05/28(月) 06:51:35.69 ID:mvM7MJU+] マリオみたいな感じのゲームを作ろうと思ったけどジャンプができない。 色々サイトとか回ってみたけど中々分からない。 誰か教えてくれると幸いです。
920 名前:名前は開発中のものです。 mailto:sage [2012/05/28(月) 08:13:51.39 ID:fvu7wQ0B] 重力と地面に立つことを作ればあとは飛ぶだけ
921 名前:名前は開発中のものです。 mailto:sage [2012/05/28(月) 08:21:05.78 ID:IVkwT0S2] >>919 v=gt 速度の上限を定める 落下しすぎたら戻す ジャンプで難しいのは着地だけ どうしてもダメなら最初は加速させずに等速ジャンプでいいと思うよ 押してる間だけ上昇、離したら下降とかね
922 名前:名前は開発中のものです。 mailto:sage [2012/05/28(月) 08:40:00.71 ID:c9K0Nu9s] アクションゲームの最初の壁はジャンプ 次の壁は坂道
923 名前:名前は開発中のものです。 mailto:sage [2012/05/28(月) 08:52:55.29 ID:6YRysOIW] 最初の壁は床だろう……。
924 名前:名前は開発中のものです。 [2012/05/28(月) 10:20:42.61 ID:rvNFgryv] どこから作りかで変るだろ マップチップ並べた床作らなくても地面にする座標決めればキャラの動きは作れる >>919 てかDXライブラリの公式ページにサンプルあるじゃん homepage2.nifty.com/natupaji/DxLib/dxprogram.html 2.ジャンプ処理
925 名前:名前は開発中のものです。 mailto:sage [2012/05/28(月) 10:21:04.96 ID:90lU+KxT] 床てY軸の位置こていしとくだけじゃないか
926 名前:名前は開発中のものです。 mailto:sage [2012/05/28(月) 10:32:44.25 ID:6YRysOIW] それを言うなら、ジャンプだって下方向へ加速させるだけだ。 さらに言うなら、昔のゲームみたいに(等加速度でなくて)等速直線運動だとしてもジャンプはジャンプだ。
927 名前:名前は開発中のものです。 mailto:sage [2012/05/28(月) 11:25:52.97 ID:uXHACx8T] yが毎フレーム5マイナスされる時 厚さ1の床をどうやって判定するんだ
928 名前:名前は開発中のものです。 mailto:sage [2012/05/28(月) 11:28:20.73 ID:9WGXBrjP] 5以内に地面があれば5-距離だけ移動してジャンプ終了、でよくね?
929 名前:名前は開発中のものです。 mailto:sage [2012/05/28(月) 11:53:09.06 ID:aojI3MeF] for(i=0; i<5; i++) { y++; if(isAtari()) { y--; } }
930 名前:名前は開発中のものです。 mailto:sage [2012/05/28(月) 11:59:48.69 ID:b7wzF1nG] ちょっと横から失礼 >>902 これで真っ白な画像を得られました。ありがとうございます。 #include "DxLib.h" int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int) { ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK); int x = 0; int Handle = LoadGraph("char.png"); while (ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0) { SetDrawBright(255, 255, 255); SetDrawBlendMode(DX_BLENDMODE_INVSRC, 255); DrawGraph( x, 100, Handle, TRUE ); SetDrawBlendMode(DX_BLENDMODE_ADD, 255); DrawGraph( x, 100, Handle, TRUE ); SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 ) ; x = x + 1; } DxLib_End(); return 0; } ブレンドモード切替の負荷の重さにはびっくりしたので ゲームの最初にこれで白い画像を作って表示することにしました。
931 名前:名前は開発中のものです。 mailto:sage [2012/05/28(月) 13:04:49.57 ID:b7wzF1nG] >>918 ちょっとだけ直して動きました。 ttp://www1.axfc.net/uploader/Sc/so/349786 使えそうです。ありがとうございます。
932 名前:名前は開発中のものです。 [2012/05/28(月) 14:53:28.29 ID:WnycGPJc] DXについて勉強するのにオススメの書籍とかありますか? 横スクロールのアクションゲームを作ってみたいんですが
933 名前:名前は開発中のものです。 mailto:sage [2012/05/28(月) 15:02:03.10 ID:jUTN7lVO] 14才からはじめるわくわく〜 みたいなやつ
934 名前:名前は開発中のものです。 [2012/05/28(月) 20:02:07.96 ID:GTiho4az] >>932 俺の結論として本は要らない Dxライブラリは覚えること余りないから必要なのはサンプルでしょ ネットで他言語でもなんでも見たらいいと思う
935 名前:名前は開発中のものです。 mailto:sage [2012/05/28(月) 21:06:10.30 ID:51O+Wupn] 公式にあるサンプル全部やって、全部ちょこっとずつ改造してみれば、 次に何を勉強すればいいか道が見えてくるかもね
936 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 01:46:18.53 ID:L7O/xZHN] >>927 そんな半端な場所に床を設置すんな
937 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 01:50:59.85 ID:BLevQqxO] うお、仮とはいえPMXに対応してきたのか すげーな
938 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 02:00:46.52 ID:ajD2ZMcH] >>933 あれ買うなら東方もどきのサイトの方が1000倍マシ
939 名前:名前は開発中のものです。 mailto:sage [2012/05/29(火) 16:38:49.14 ID:0ZCTZE5+] >>932 DXってのはDXライブラリのことを指してるのかな? DXライブラリ自体は画像の描画や音楽の再生、キー操作の取得なんかを簡単にできるものだと思えばいい。 リファレンスを読めばわかるから、書籍など全く必要ない。 問題は各ゲーム(シューティング、横スクロールアクション、落ち物、パズル、etc...)の構造なんだけど、 この辺は当然ながら言語もDXライブラリも全く関係ないから、ひたすらググればいいと思う。 もちろんシューティングに特化した書籍なんかも売ってるとは思うから、 どうしても本がいいならそういうのを買えばいいと思うよ。
940 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 23:01:39.68 ID:sRt+VGOO] 【ゲームバグ集】私達の知ってるゲームとは違う【吹いたら負け】 www.youtube.com/watch?v=kN29n-Gnv6A&feature=related これ見るとゲームのバグのほとんどが地形かキャラ同士の変な判定でめり込むことによって起きてるんだね 横アクションを作るとき注意ですね
941 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 23:29:00.29 ID:RKMJ5hGw] 勢い良くぶつかったら吹っ飛んだとか、 しゃがみジャンプで天井ぶつかったら吹っ飛んだとか、 ブロックとブロックの間に挟まって吹っ飛んだとか、 よくある光景ですよね
942 名前:名前は開発中のものです。 mailto:sage [2012/05/30(水) 23:38:12.13 ID:0DxYP3XJ] 敵とブロックに挟まれたと思ったらキャラが消えたとか
943 名前:名前は開発中のものです。 mailto:sage [2012/05/31(木) 00:16:28.28 ID:X2kmab9H] それは大統領
944 名前:名前は開発中のものです。 mailto:sage [2012/05/31(木) 05:19:34.98 ID:LR2h9MNT] いつのまにか3.08aが出ていたのね
945 名前:名前は開発中のものです。 mailto:sage [2012/05/31(木) 07:52:32.75 ID:AnVA06dY] 前回からの違いは主に3D関係か
946 名前:名前は開発中のものです。 mailto:sage [2012/05/31(木) 08:24:03.27 ID:xNmKjSKJ] SetBlendGraphParamが便利そう
947 名前:名前は開発中のものです。 mailto:sage [2012/05/31(木) 12:26:15.74 ID:vux5Qb/R] まだリファレンスに反映してない?
948 名前:名前は開発中のものです。 [2012/05/31(木) 14:24:38.29 ID:LR2h9MNT] 3.08a で x64 のプログラムをビルド出来た Release だと駄目みたいだけど
949 名前:名前は開発中のものです。 mailto:sage [2012/05/31(木) 14:59:29.76 ID:AjXSR+Ss] x64のメリットはなに? スピードは同じでメモリがいっぱいとれるとかかな?
950 名前:名前は開発中のものです。 mailto:sage [2012/05/31(木) 15:35:46.17 ID:WauJ0XKH] X
951 名前:名前は開発中のものです。 mailto:sage [2012/05/31(木) 18:52:53.60 ID:M5YppKNB] VirtualAllocでも使わないとメモリーはいっぱい取れないな
952 名前:名前は開発中のものです。 mailto:sage [2012/05/31(木) 20:19:50.42 ID:qSE9w4FD] プレイヤーの最低動作環境がメモリ4GBを超える場合だろ。 超広大なシムシティでも作るのか?
953 名前:名前は開発中のものです。 mailto:sage [2012/05/31(木) 23:26:55.30 ID:aJXCPyxU] x64の環境なら、x64で動かしたいと考えるのは自然かもしれない
954 名前:名前は開発中のものです。 mailto:sage [2012/06/01(金) 00:54:10.39 ID:2QrPWAJY] 周辺機器とかソフトとか全部x64対応してないとダメなんだっけ
955 名前:名前は開発中のものです。 mailto:sage [2012/06/01(金) 12:25:56.05 ID:MdBdhEQE] >>952 マインクラフトみたいなマップで 1ブロック4byte 256*256*256*4で65M 1Gで16マップ分4Gで64マップ分 使おうと思ったらすぐじゃね?
956 名前:名前は開発中のものです。 mailto:sage [2012/06/01(金) 13:02:28.40 ID:xFvEu29T] マイクラならプレイヤーの周辺だけマップが読み込めてれば良いんだし、 その64マップ分をメモリに展開しておく理由がないだろう
957 名前:名前は開発中のものです。 mailto:sage [2012/06/01(金) 14:29:24.03 ID:t4LYu1LP] 多くのSLGは遅延ロードで済むようにゲーム側の仕様を工夫しているな。 リアルタイムに全タイルを更新するとしたらCPUもハイスペック、 マルチスレッドで効率を落とさないゲーム仕様に工夫する必要がある。
958 名前:名前は開発中のものです。 mailto:sage [2012/06/03(日) 19:27:01.91 ID:ErglFbvU] 64bitOS使ってるとデバッグ実行の起動時と終了時がx64の方がスムーズ 俺はそれだけの為にx64lib使ってる んで配布するときはx86libでビルド
959 名前:名前は開発中のものです。 mailto:sage [2012/06/05(火) 08:00:34.11 ID:5hghPcJi] DXライブラリはいいけど本体のC++の方で詰んでワロタ
960 名前:名前は開発中のものです。 mailto:sage [2012/06/05(火) 08:03:10.54 ID:pHV+t2m+] C++なんて関数の途中で変数宣言できるCとして使ってりゃいいんだよ
961 名前:名前は開発中のものです。 mailto:sage [2012/06/05(火) 12:59:37.44 ID:s+a7RtxR] いわゆるbetter Cか。 C99未対応でも、//のコメントアウトやら関数途中での変数宣言が出来るコンパイラは多いけどね・
962 名前:名前は開発中のものです。 mailto:sage [2012/06/05(火) 17:33:28.60 ID:NAR8NRh/] DrawStringって変数使えないんだね 使えるのはFormatの方だけか
963 名前:名前は開発中のものです。 mailto:sage [2012/06/05(火) 21:43:16.29 ID:rfga7AAZ] えっと思ってソース検索してみたが、変数使えてるお std::stringの変数に代入して、c_str()メソッドで使ってる
964 名前:名前は開発中のものです。 mailto:sage [2012/06/05(火) 22:32:10.63 ID:rQvv9pU4] マジかー でも分かりやすいし俺はFormatだけでいいや…
965 名前:名前は開発中のものです。 mailto:sage [2012/06/07(木) 06:57:25.54 ID:/OyZ/OLF] 文字を3Dモデルにして表示してくれる関数があれば絵が描けないのをごまかせるのに
966 名前:名前は開発中のものです。 mailto:sage [2012/06/07(木) 07:51:26.78 ID:Jv6ss4Bc] 要望送ればいいんじゃね?
967 名前:名前は開発中のものです。 mailto:sage [2012/06/07(木) 10:48:51.49 ID:BJcvBZeM] Direct3Dにあるやつなら簡単に追加できそうだけどな。
968 名前:名前は開発中のものです。 mailto:sage [2012/06/07(木) 21:30:58.85 ID:Kz7+CKZO] そういう外部ツール作って画像にしちゃうほうが加工とかもできていい気がする
969 名前:名前は開発中のものです。 mailto:sage [2012/06/07(木) 21:34:42.53 ID:Krec27v1] DXライブラリで攻撃する時の剣のエフェクト作りたいんだけど、 三日月作って表示するだけでいいのかな?外側にいくほど透明度を高くしたい 事前加工とか必要だろうか
970 名前:名前は開発中のものです。 mailto:sage [2012/06/07(木) 21:47:47.85 ID:+N/ekzeb] DXライブラリ使うならDirectXのSDKは入れなくていいんですか?
971 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 03:14:22.43 ID:9m0hwklY] >>970 DirectX SDKはいらない。
972 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 07:58:58.18 ID:q3HoT9+Z] >>969 透明にするのは内側じゃね?
973 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 12:17:16.75 ID:DZv8KWRM] 内側だと東方の穴あき弾みたいになるだろ
974 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 13:04:25.61 ID:c9EZhUJi] どうでもええがなw 本人の好きにさせれば。
975 名前:972 mailto:sage [2012/06/08(金) 14:04:03.64 ID:q3HoT9+Z] 東方は分からんのだ、申し訳ない。 どういうエフェクトを想定しているかで、三日月の内側と外側のどちらを透明にするか決まるのかもしれない。 gmdev.xrea.jp/st/up/775.jpg そういえばそろそろ次スレか。
976 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 14:48:43.82 ID:j/2x2bX+] アルファチャンネル付きの画像を用意するか、諦めて手抜き
977 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 16:39:50.77 ID:SmPCWrti] 俺ならエフェクトを何重かに重ねるかな。
978 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 17:13:50.81 ID:T8O66D4g] 透明度50%の画像を10%ずつ小さくして5枚重ねるとそれっぽいよね あとはレベル補正でなんとかなるかな?
979 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 17:28:02.08 ID:vKWIOWMy] フォトショ
980 名前:名前は開発中のものです。 mailto:sage [2012/06/08(金) 21:34:17.48 ID:zMZgxXcw] >>975 そういう内側なのか ドーナツ状にする方かと思ってた
981 名前:名前は開発中のものです。 [2012/06/09(土) 02:23:31.12 ID:PDT8+LE/] DXライブラリって物理エンジンも積んでないんでしょ。 しょっぼー。しょぼしょぼりんwwww
982 名前:名前は開発中のものです。 mailto:sage [2012/06/09(土) 08:23:21.97 ID:vgner5vs] でっけー釣り針だなおいwwww
983 名前:名前は開発中のものです。 mailto:sage [2012/06/09(土) 12:51:13.15 ID:dFKH+tB5] 物理エンジンを使わないゲームすら作れないので問題ない
984 名前:名前は開発中のものです。 mailto:sage [2012/06/09(土) 12:53:12.28 ID:0k6AwNTO] むしろDxLib側のBulletは使わず自前ビルドしたもの使ってる
985 名前:名前は開発中のものです。 mailto:sage [2012/06/09(土) 14:41:45.94 ID:x2dTOO+E] 自分はBox2D積んでるなー。C++用じゃないけど日本語資料多くて助かる。
986 名前:名前は開発中のものです。 mailto:sage [2012/06/09(土) 17:08:19.76 ID:6h//v8O2] マルチメディアとそれ以外(圧縮ファイルとか物理エンジン)は 別ライブラリで分けても良さそうだけどね。
987 名前:名前は開発中のものです。 mailto:sage [2012/06/10(日) 12:46:20.13 ID:ER7Sq7YO] マップエディターを作ってたんですけどできたマップが1280*480で SaveDrawScreenを使って640*480の2枚の画像にしてるのですが この画像を1枚にあわせて保存するにはどうすればいいでしょうか 毎回ペイント開いて合わせるのもなんか気持ちよくないので
988 名前:名前は開発中のものです。 mailto:sage [2012/06/10(日) 12:50:20.86 ID:2yVVzMFu] できたマップが1280*480ならいいじゃん
989 名前:名前は開発中のものです。 mailto:sage [2012/06/10(日) 13:18:42.73 ID:lZ191AJm] そのマップエディタが、マップチップ並べる方法のものなら、 二次元配列にそれぞれのマップチップの情報を記録すれば済みそうな物だけど (1マップチップのサイズが40*40なら、640*480が[16][12]の、1280*480が[32][24]の配列になる)、 画像ファイルで保存する方がやりやすい方法にしてるの?
990 名前:名前は開発中のものです。 mailto:sage [2012/06/10(日) 13:52:35.29 ID:ER7Sq7YO] >>989 マップチップを並べる方法です チームで製作しているのですがお互いまだ慣れておらず絵の担当さんから頂いた画像が細かい座標調整が必要でした そのためマップエディターで良い感じの位置に調整してスクリーンショットを取る方法にしようと思い至りました
991 名前:名前は開発中のものです。 mailto:sage [2012/06/10(日) 15:10:48.73 ID:ER7Sq7YO] 探し回っていたら同じような質問を発見して無事解決できました ありがとうございました ttp://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=past&no=471
992 名前:名前は開発中のものです。 mailto:sage [2012/06/10(日) 21:09:31.17 ID:2yVVzMFu] パッドでキー入力を一回だけ判定させる方法ってみんなどうやってる? 1F前のキーをとっておいて判定する方法にしようかと思ってるんだが
993 名前:名前は開発中のものです。 mailto:sage [2012/06/10(日) 21:18:35.76 ID:SZ2/XFTS] それでいいと思う。 ついでに押してる長さとかも一緒に数回分の入力履歴をとっておくようにしたら 今は役に立たなくても、今後使えるようになるかもしれない。 (格闘ゲームのコマンド入力みたいに)
994 名前:名前は開発中のものです。 mailto:sage [2012/06/10(日) 22:08:56.34 ID:/6oGWGHY] 俺はパッドデータ保存・判定クラスを作った。 まず、用途をはっきりさせて、次に、それに合うデータ保存形式を決めた。 あとは、毎フレームで、保存メソッドを呼び出し、データを保存。 判定したい場所で、判定メソッドを呼び出し、保存データを元に判定。 俺の場合はキーリピート的なものが欲しかったので、 ボタンごとに、押しっぱなしになってから何フレ経過しているかをデータで保存するようにした。 保存メソッドでそれを保存。 判定メソッドでは保存したデータを元に、リピート発生の有無などを算出。 流用とか変更がしやすいから楽だったな。
995 名前:名前は開発中のものです。 mailto:sage [2012/06/10(日) 22:12:04.25 ID:1lLcj/tG] elのキー入力を参考にしてる getkeystate?をDxLibのものに変えて ttp://ponk.jp/cpp/el/
996 名前:名前は開発中のものです。 mailto:sage [2012/06/10(日) 23:59:50.33 ID:lj7hTC+Q] 自分も>994に似た感じだなー。むしろ俺いつの間に書きこんだんだ?くらい。 ところで次スレ立てないとやばい。が、俺は弾かれたので、テンプレだけ貼っとく。誰か頼む。 ---- Cを習得した程度のスキルでも、ゲームのグラフィックを比較的容易に描画する事のできる、 「DXライブラリ」に関するスレッドです。 DXライブラリに関するテクニックなどの情報交換などを行う事で、 多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。 【公式】 homepage2.nifty.com/natupaji/DxLib/ 【前スレ】 DXライブラリ 総合スレッド その12 toro.2ch.net/test/read.cgi/gamedev/1330000532/ 【過去スレ】 01 pc11.2ch.net/test/read.cgi/gamedev/1197468399/ 02 pc11.2ch.net/test/read.cgi/gamedev/1224923873/ 03 pc11.2ch.net/test/read.cgi/gamedev/1238429676/ 04 pc11.2ch.net/test/read.cgi/gamedev/1249822550/ 05 pc11.2ch.net/test/read.cgi/gamedev/1259912953/ 06 hibari.2ch.net/test/read.cgi/gamedev/1267108154/ 07 hibari.2ch.net/test/read.cgi/gamedev/1286180687/ 08 hibari.2ch.net/test/read.cgi/gamedev/1301818631/ 09 hibari.2ch.net/test/read.cgi/gamedev/1310904069/ 10 hibari.2ch.net/test/read.cgi/gamedev/1313655495/ 11 toro.2ch.net/test/read.cgi/gamedev/1322844235/ 【関連スレ】 C/C++ゲーム製作総合スレッド Part1 toro.2ch.net/test/read.cgi/gamedev/1337516528/
997 名前:名前は開発中のものです。 mailto:sage [2012/06/11(月) 00:13:05.05 ID:vfjk5rjT] 押したキーと押したフレーム数だと 同時押しとか対応できなくない? AとBを押して2秒、とか
998 名前:名前は開発中のものです。 mailto:sage [2012/06/11(月) 01:25:16.17 ID:t2KXIcta] そんな特殊な入力判定必要になったことないからわかんない。
999 名前:名前は開発中のものです。 mailto:sage [2012/06/11(月) 01:36:44.56 ID:KU83wIZ2] ソース書いてみなよ。ここに
1000 名前:名前は開発中のものです。 [2012/06/11(月) 02:09:46.59 ID:t30FF6fH] 、ゞヾ'""''ソ;μ, ヾ (●) (●)彡 ミ " □ " ミ クワッ! 彡 ミ /ソ,, , ,; ,;;:、ヾ` "'"'"
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。