[過去ログ]
C++でRPGゲームを作成する (908レス)
C++でRPGゲームを作成する http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
1: じっち [] 2023/04/11(火) 07:14:50 ID:CCsv+84e 少し前まではHSPで作ろうと思っていたのですが、HSPでRPGゲームを作るのは難しいらしいので、C++で作ろうと思います。 C++のプログラミングは初めてですので、みんなの力が必要です。 お願いします。 あと質問ですが、C++ってMMORPGつくれますか? http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/1
828: 名前は開発中のものです。 [sage] 2011/03/25(金) 00:33:52 ID:DZniurx+ >>825 そこまで出来ました。 >>826-827 グローバル関数にすると、管理が面倒になりませんか? フレームワークとかライブラリみたいな形にする時にも メンバ関数の形の方が良いような気がしますが http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/828
829: 名前は開発中のものです。 [sage] 2011/03/25(金) 00:49:34 ID:VJVVC59h >>828 そりゃルート名前空間に直置きは最悪だが 名前空間でくくればまったく面倒ではない むしろすべてクラスクラスと固執する思考はよくないと思われ http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/829
830: 名前は開発中のものです。 [sage] 2011/03/25(金) 00:51:14 ID:VJVVC59h とはいってもまあデザパタ使っていいならシングルトンでも使えばおk http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/830
831: ◆MBbNHCnf2M [sage] 2011/03/25(金) 01:00:08 ID:DZniurx+ とりあえずトリップを付けてみる >>829 C++で名前空間とか使ったこと無かったです >>830 シングルトンってデザインパターンですか そういうの考えてプログラム作ったこと無かったなぁ ああ、でもMVCでObserverパターンだけ知ってたかも http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/831
832: ◆MBbNHCnf2M [sage] 2011/03/25(金) 01:03:33 ID:DZniurx+ ところで、すごく基本的な質問ですけど staticなメンバ関数だと何が問題なんでしょう? 特に駄目だという理由が思い付かないんですけど http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/832
833: 名前は開発中のものです。 [sage] 2011/03/25(金) 02:00:59 ID:t5g0UlGF C++ でシングルトンなんか持ち出すくらいなら素直にグローバル変数にしといたほうがよくないか? http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/833
834: ◆UUwiUCL1P6 [sage] 2011/03/25(金) 08:07:59 ID:iNPazjrA >>828 私もゲームの作り方を勉強したいと思って、 DirectXをつい最近やり始めたという状況で、 自分のやった事を再確認的にお伝えするのが限界です。 いづれ追いつかれて飽和すると思いますので、 より抽象的な概念や高度な作法はいろいろな意見を参考にしてください。 ちなみにXXXXXの部分は何と命名しました? http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/834
835: ◆MBbNHCnf2M [sage] 2011/03/25(金) 11:19:22 ID:DZniurx+ >>834 クラス名は GameInput としておきました http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/835
836: 名前は開発中のものです。 [sage] 2011/03/25(金) 17:44:09 ID:VJVVC59h 最初からデザイン云々いいだしても進まないから、 とりあえず動くことを目的としてけばええと思う 動き始めてからいくらでもデザインは改良できるし。 最初は処理の手順を覚えるのが先、 アルゴリズムの訓練をするのが先決 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/836
837: ◆UUwiUCL1P6 [sage] 2011/03/26(土) 10:36:17 ID:pvmCllah 必要な変数(静的メンバ)を設定します。 .h public: enum { JOY1,JOY2,JOYMAX,}; private: static IDirectInput8* input; static IDirectInputDevice8* keyboard; static IDirectInputDevice8* mouse; static IDirectInputDevice8* joypad[]; static unsigned int joycnt; .cpp namespace { IDirectInput8* GameInput::input; IDirectInputDevice8* GameInput::keyboard; IDirectInputDevice8* GameInput::mouse; IDirectInputDevice8* GameInput::joypad[JOYMAX]; unsigned int GameInput::joycnt; } http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/837
838: ◆UUwiUCL1P6 [sage] 2011/03/26(土) 11:18:46 ID:pvmCllah DirectInputの初期化です。 GameInput::Init input = NULL; DirectInput8Create( GetModuleHandle( NULL ), DIRECTINPUT_VERSION, IID_IDirectInput8, reinterpret_cast< void** >( &input ), NULL ); GameInput::Free if ( input ) { input->Release(); input = NULL; } >>837 .hに#include <dinput.h>が必要でした。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/838
839: 名前は開発中のものです。 [sage] 2011/03/26(土) 11:36:25 ID:oFPuFWap デザインとか気にするんだったら、まずはDirectInputデバイスを晒すのをやめるべき。 入力を取得する関数かクラスを作って、直接デバイスにアクセスするのはその中だけに制限する。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/839
840: ◆MBbNHCnf2M [sage] 2011/03/26(土) 13:03:14 ID:npmu6kKT >>837 .cpp(GameInput.cppとしている)のnamespace内の定義は 現在のスコープでは定義できませんとなります http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/840
841: ◆UUwiUCL1P6 [sage] 2011/03/26(土) 14:20:22 ID:pvmCllah >>840 では、namespace{}での括りは外してしまってください。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/841
842: ◆UUwiUCL1P6 [sage] 2011/03/26(土) 14:22:30 ID:pvmCllah keyboardの初期化です。 GameInput::Init input->CreateDevice( GUID_SysKeyboard, &keyboard, NULL ); keyboard->SetDataFormat( &c_dfDIKeyboard ); keyboard->SetCooperativeLevel( Window.Handle(), DISCL_FOREGROUND|DISCL_NONEXCLUSIVE ); { DIPROPDWORD dipd = {}; dipd.diph.dwSize = sizeof( DIPROPDWORD ); dipd.diph.dwHeaderSize = sizeof( DIPROPHEADER ); dipd.diph.dwObj = 0; dipd.diph.dwHow = DIPH_DEVICE; dipd.dwData = 8; keyboard->SetProperty( DIPROP_BUFFERSIZE, &dipd.diph ); } keyboard->Acquire(); GameInput::Free if ( keyboard ) { keyboard->Unacquire(); keyboard = NULL; } http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/842
843: ◆MBbNHCnf2M [sage] 2011/03/26(土) 14:36:20 ID:npmu6kKT >>842 SetCooperativeLevelの引数、Window.Handle()って Handleって関数作ってないみたいです http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/843
844: ◆UUwiUCL1P6 [sage] 2011/03/26(土) 14:40:47 ID:pvmCllah WINDOWクラスに下記の関数を作成してください。 public: const HWND Handle( void ) const { return handle; } >>842 GameInput::Init keyboard = NULL // ねんのため追加してください input->CreateDevice( GUID_SysKeyboard, ... GameInput::Free: 解放の順番は初期化と反対にしてください。 input初期化->keyboard初期化 〜 keyboard解放→input解放 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/844
845: ◆MBbNHCnf2M [sage] 2011/03/26(土) 15:28:08 ID:npmu6kKT 変数のスコープとかよく分からなくなってきた・・・ Window.Handle()のWindowって、最初の方で定義したWindow window;の windowっていうインスタンスだと思うんですけど GameInput::Initが書かれているファイルGameInput.cppからアクセスするには インスタンスを渡すしかないと思うんですけど そこの処理はまだ書いてませんよね? あれ、それともなんか勘違いしてるかな http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/845
846: 名前は開発中のものです。 [sage] 2011/03/26(土) 16:01:06 ID:QDwsR5XB いいかげんスレ違い RPGのロジックに入るまでブログでやれ http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/846
847: 名前は開発中のものです。 [sage] 2011/03/26(土) 16:35:54 ID:ai5/F2yB どうせ他に使うやついないのになにいっちゃってんの?アホなの? http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/847
848: ◆UUwiUCL1P6 [sage] 2011/03/26(土) 16:40:45 ID:pvmCllah >>845 下記を宣言してください。 extern WINDOW window; この先いろんなところで参照するので、ヘッダに記載した方がよいです。 (>>846)のような意見も出ていますし、ソースを断片的に記載していくのは効率や誤謬が出やすいので、 別の手段を検討したほうがよいかも知れません。 ブログかアップローダを指定いただければそちらでお渡ししますんで、 ご検討ください。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/848
849: ◆UUwiUCL1P6 [sage] 2011/03/26(土) 16:53:57 ID:pvmCllah extern WINDOW Window; でした(最初大文字) ソース全体でこれだけはグローバル変数にしています。 他の変数はクラスの静的メンバでprivateにしています(IDirectInput8* input等)。 ここに書いてやり取りするのは楽でいいんですけど先々難しそうですね。 スレッドのリサイクル法が適用されて日記帳扱いになればOKかも。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/849
850: ◆MBbNHCnf2M [sage] 2011/03/26(土) 17:11:30 ID:npmu6kKT >>846 >>1の書き込みとスレッドの中身を見る限り、このレベルからやっても 良いように感じましたが・・・ >>1さんもC++のプログラミングは初めてって書いてますし >>848 確かにこのままソース書いていくのは難しいと感じてました どんどん大きくなっていきますからね とりあえず http://gmdev.xrea.jp/ このアップローダが、この板でプログラムを作っている方々が 使用しているアップローダのようです 今後はここにソース置きましょうか >>849 common.hみたいなヘッダを作成して #include "WINDOW.h" extern Window window; として WINDOWクラスにアクセスする必要があるクラス全部に インクルードしたら良いんですね http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/850
851: ◆UUwiUCL1P6 [sage] 2011/03/26(土) 18:14:33 ID:pvmCllah >>850 gmdevにDirectInputの.h/.cppを置きました。 ttp://gmdev.xrea.jp/st/up/245.txt >common.hみたいなヘッダ そうです。自分専用のマクロとか定義とかの置き場にヘッダ作りますよね。 そこに入れておいてください。 ついでに↓もお願いします。 #define ARRAY(a) (sizeof(a)/sizeof(a[0])) 配列の要素数のマクロです。 置いたソースですが現在の自分のソースからいろいろはしょって整形しているので、 部分的に文法がおかしくなったりで、エラーがでるかも知れません。 それはすいませんがうまく直してください。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/851
852: ◆MBbNHCnf2M [sage] 2011/03/26(土) 18:47:47 ID:npmu6kKT >>851 すごく見やすいソースですね、大体の感じは理解出来ました GameInput.cppのunsigned int GameInput::index;で 静的でないメンバーはクラスの外側で定義できませんと出たので ヘッダの宣言でstatic付けときましたけど、staticにして大丈夫ですか? それと、DATA_MAXが未定義だったので、適当に#define DATA_MAX 256 と、とりあえずしておきました 以上でコンパイルできました これからじっくりとソース見ていきたいと思います http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/852
853: ◆MBbNHCnf2M [sage] 2011/03/26(土) 18:59:27 ID:npmu6kKT 今ソース眺めてたら enum { DATAMAX = 0x100, };ってあるけど これがDATA_MAXかな? http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/853
854: ◆UUwiUCL1P6 [sage] 2011/03/26(土) 19:15:55 ID:pvmCllah >>852 index は static です。付け忘れました。 >>853 DATA_MAXです。記述ミス。 入力ワーク回りで間違い多いのは、現在その部分は環状リストで可変長で実装しているので、 急ごしらえで変更したためです。 一部、ヘッダにあって実装されていない関数(JoyPush等)は実際にゲーム中で使用する関数です。 これはGameInput.cppとは別ファイルにした方がよいです。 GameInput.cppはいったん完了するとほとんどいじらなくなります。 ライブラリィ化してもいいかも知れません。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/854
855: 名前は開発中のものです。 [sage] 2011/03/27(日) 19:06:12 ID:7F6awSJl >>825 > InitとFreeの中身は対称(確保⇔解放)になる事が多いです。 なんでコンストラクタとデストラクタ使わないの? http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/855
856: ◆UUwiUCL1P6 [sage] 2011/03/27(日) 22:08:40 ID:In3d1Uaw >>855 インスタンスを作成しないからです。メンバーは変数も関数もstaticだけです。 インスタンスを作成できないように、privateでコンストラクタを記述しておくべきですね。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/856
857: ◆MBbNHCnf2M [sage] 2011/03/27(日) 22:25:46 ID:rtEoqdWq ここ二日でDirectInputについては大体理解できた気がする 今頃気が付いたけど、DirectInputって今後非推奨なのか http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/857
858: 名前は開発中のものです。 [sage] 2011/03/27(日) 22:49:20 ID:7F6awSJl >>856 いや、だからインスタンスを生成しないのはなんで?って話だったんだけど。 まぁプログラム中で1回だけしかやらないなら、 Init()/Free() 呼び忘れや2重呼び出しも そうそう起こらないだろうから、コンストラクタやデストラクタ使ってもそんなにおいしくないの かもね。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/858
859: ◆UUwiUCL1P6 [sage] 2011/03/27(日) 22:58:33 ID:In3d1Uaw >>858 Cで作り始めてからC++にしたのでグローバル関数が自分的にしっくりきたという理由です。 合理的な理由はとくになく、個人の好みの範疇を出ないです。 >>857 続きをおきました。 ttp://gmdev.xrea.jp/st/up/246.txt ゲーム中で使う関数の使い方さえ変えなければ、実装はDirectInputでなくともよいかと思います。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/859
860: 名前は開発中のものです。 [sage] 2011/03/27(日) 23:12:17 ID:BpzKp4Cl 「趣味の範疇」なら何回もつっこまれないと思うけどなぁ 自分も「えー」って思ったし http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/860
861: ◆UUwiUCL1P6 [sage] 2011/03/27(日) 23:39:29 ID:In3d1Uaw >>860 クラスのないCで作ってから、あとでclass{}で括るとこんな感じになりますよ。 そこからC++ならではの形に作り変えるまでに至らずというところです。 >◆MBbNHCnf2Mさん この先こんな感じで趣味っぽいところが満載なので自分流に変更するなり、 他の意見を参考いただくなりで、そこは適当にやってください。 ウィンドウ表示⇒コントローラ入力と来たので、次は描画&ファイル読み込みですが、 ここから私としてはタスクシステムをご提案になります。 すごーく突っ込みが入るテーマのようなんで少々気が重いです。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/861
862: 名前は開発中のものです。 [sage] 2011/03/28(月) 00:17:25 ID:Dt+tXZ6j >>861 わかってるならやめとけばいいのに。どうせ必要性もないんだろ? やるなら自分でわかってる範囲の突っ込み所と、それでも敢えて押し通す意義(必要性)を 最初にひととおり明示しておけば、繰り返しツッコミが入ってグダグダになるのは避けられる、 かもしれない。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/862
863: 名前は開発中のものです。 [sage] 2011/03/28(月) 00:29:53 ID:iY/f3p70 RPGの描画や更新なんてすることもタイミングも決まりきってるのにタスクシステムなんか何に使うんだよw 上の人も言ってるけど、まずどういうものを作ろうとしててそのためにこういう技術が必要だというのを はっきりさせてくれ http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/863
864: ◆MBbNHCnf2M [sage] 2011/03/28(月) 00:30:16 ID:+ECkFPgj >>861 自分的には分かりやすいので、全然問題ないです まあ、細かい実装はそれぞれのやり方があるでしょうからね 私なんかCにしてもC++にしても言語仕様も十分に理解しないまま やってるので、基本的に何でも参考になります 本当はちゃんと勉強した方が良いんでしょうけど タスクシステムは、確かにこの板のスレ見ると荒れてますね そもそも、タスクシステムの定義自体が曖昧というか 人によって微妙に違う感じですね タスクシステムは一度勉強してみたかったので、ちょうど良かったです http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/864
865: ◆MBbNHCnf2M [sage] 2011/03/29(火) 22:24:52 ID:o6OtSixI どうやら風邪をひいてしまったようで、喉が痛い ところで話は今までの流れと急に変わりますけど 今時のRPGってアイテムのデータはどのように持ってるんだろう 昔なら、アイテム番号だけを持ってて(ゲーム全体で256個までなら1バイト 65536個までなら2バイト)、その番号からアイテムデータを参照してたけれど 例えば、武器にランダム性があって、ショートソードに+1とかの強さの幅がある場合 アイテム番号1がショートソード、アイテム番号2がショートソード+1みたいな のだと無駄にアイテムデータ増えるからあり得ないかな 昔だと、メモリも少ないし、データをセーブする媒体の容量も少ないから アイテムのインデックスだけを持っていたけれど、今はデータ全体を そのまま持っているのかな http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/865
866: ◆MBbNHCnf2M [sage] 2011/03/29(火) 22:28:15 ID:o6OtSixI 多分、基本となるデータのみ存在していて、入手時にそのデータ元に ランダムで性能を確定させて、そのデータを全部を持ってるのか http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/866
867: 名前は開発中のものです。 [sage] 2011/03/29(火) 23:19:08 ID:W0uoKekZ これだ!っていうデータ構造なんて無いんじゃないかな ゲームごとにチューニングする必要があるわけで パフォーマンスに余裕があればリレーショナルデータベースとか使っちゃうのかな http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/867
868: 名前は開発中のものです。 [sage] 2011/03/30(水) 00:26:46 ID:jEpUZgct アイテムのインスタンスに持たせた方がいいんじゃないかなぁ 手持ちの装備を強化できるようなシステムが追加したくなった場合とかやりやすいし http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/868
869: 名前は開発中のものです。 [sage] 2011/03/30(水) 01:14:37 ID:fixmLHL7 >>865 仕様に沿って素直なコードを組むのが最強。 リソース制約が顔を出しにくくなった「今時」ならこれでいいでしょ。 "Premature optimization is the root of all evil." http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/869
870: ◆MBbNHCnf2M [sage] 2011/03/30(水) 20:18:14 ID:eH7gPhm2 >>867-869 やっぱりデータが変化するようなものだと、インデックスだけで 管理は無理ですね。よく考えたら当たり前の事だった。 まあ、今ならアイテム程度のバイナリデータいくつ持ってても 問題無いか。携帯とかモバイル環境だと制限あるかもしれないけど そんな環境だと、そもそもそれ程大規模のゲームも作らないだろうし。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/870
871: 名前は開発中のものです。 [sage] 2011/04/03(日) 21:06:06 ID:t0UP3s0y しーん http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/871
872: ◆MBbNHCnf2M [sage] 2011/04/03(日) 21:10:34 ID:wtGWHPRo >>871 ちょうど今書こうと思ってた所です 今週は、風邪をひいてあまり集中して出来なかったので とりあえず、ポリゴン出したりテクスチャ貼ったりというのは理解したと思う これで音を出す以外の大体の事は何とかなるような気がする http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/872
873: ◆MBbNHCnf2M [sage] 2011/04/03(日) 21:17:09 ID:wtGWHPRo で、マップスクロールについて考えていたんですけど http://d.hatena.ne.jp/aidiary/20040918/1251373370 上記のサイトのRPGの項目にあるような、マップ全体を裏画面に描画して そこから表示画面分だけ切り出すという方法が結構検索していると 見つかるのに驚いたわけです これって結構スタンダードな方法なのかな? いくらメモリを気にしなくてもいいPC環境とはいえ、マップ全体を描画って あり得るのだろうか、少なくとも市販作品では無いような気がする http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/873
874: ◆MBbNHCnf2M [sage] 2011/04/03(日) 21:23:57 ID:wtGWHPRo 昔はマップスクロールというと、RPG作成において一番の難所で これが出来たらもうRPGは出来たも同然というような感じだった 特に私が使っていたMSXなんかだと、ハードウェアスクロール機能が 縦方向しかなかったので、1ドットスクロールは厳しかった 本当に最初の頃は、レイヤという概念も無くて(知らなかっただけかも) そもそもレイヤをいくつも重ね合わせられるほどの処理速度もメモリも無かった http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/874
875: 名前は開発中のものです。 [sage] 2011/04/03(日) 21:27:16 ID:/2gPwasz 昔とかどうでもいい話してないでDirectX使えよ。 無理ならDXライブラリでも使え http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/875
876: ◆MBbNHCnf2M [sage] 2011/04/03(日) 21:32:21 ID:wtGWHPRo そこで、どういう風にマップスクロールを実装していたかと言うと 裏画面に表示画面より、縦・横共にマップチップ1個分大きいマップを描画し そこから1ドットずつずらしてコピーするという方法だった ページフリッピングも出来ないわけではなかったけど、VRAM容量を考えると そんなもったいない方法は許されなかった 今でも縦・横でマップチップ一個分だけの裏画面からコピーするのが 定番だと思っていたけれど、マップ全体からコピーするという方法が 多く見つかるというのは、そっちの方が定番のかな http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/876
877: 名前は開発中のものです。 [sage] 2011/04/03(日) 21:34:32 ID:t0UP3s0y >>873 256*256のマップだけで256MB消費ってのは普通じゃないと思う http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/877
878: ◆MBbNHCnf2M [sage] 2011/04/03(日) 22:04:18 ID:wtGWHPRo >>877 そうですか、やはり普通じゃないのか 説明しやすいからそうしているのが多いのかな 今考えている方法は 用意すべき画面 1. 表示画面分の表・裏のサーフェイス(DirectX初期標準) 2. 最終的に合成する画面、ここから1ドットずつすらして裏サーフェイスにコピー (表示画面より縦・横1チップだけ大きい画面を確保) 3. レイヤを3つ使うとして、各レイヤ分の裏画面(これも表示画面より1チップ分だけ大きい) 4. マップチップ・キャラやNPC等のグラフィック 処理 1. まず、方向キーが押されたら、3の各レイヤ用の画面にマップ描画 2. 最下層のレイヤ分を2に画面にコピー 3. 最下層上にいるキャラクタ・NPCを2に描画 4. 2-3をレイヤ分処理 5. 2の画面から1の裏画面にコピーして裏画面を表に 6. 2-5までを1ドットずらして1チップ分処理 無駄がありそうだけれど、これでいけそうな気がする でもテクスチャって座標指定でコピーできないから 1ドットずつコピーするのが難しそうな気が もっとテクスチャについて勉強する必要がありそう http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/878
879: 名前は開発中のものです。 [sage] 2011/04/03(日) 22:06:51 ID:/2gPwasz あのさ?座標にマイナスを指定できるの知ってる? http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/879
880: ◆MBbNHCnf2M [sage] 2011/04/03(日) 22:36:46 ID:wtGWHPRo >>879 失礼、連続で5回以上書き込めないようで テクスチャ座標に負の値が使えるのは知ってます それをどこに使うんですか? まだ勉強中なので教えてください http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/880
881: 名前は開発中のものです。 [sage] 2011/04/03(日) 23:07:20 ID:mqRgK4Gz あなたの文章を読んでいて思ったのだが。 まさか、一枚のテクスチャに複数のレイヤーを重ねて最終的に 画面に描画しようとしている? DirectXのバージョンをいくつ使うか知らないけど いくらなんでも概念が古すぎるよ。 (DirectDrawとか使おうとしてる?) WindiwsXPターゲットのDirectX9ならポリゴンまたはスプライト使えば解決できることを わざわざ難しい方法でやろうとしているように見える。 ここで説明するのは無理があるからいくつかサイトのURL貼っとく DirectX8の解説サイト http://rina.jpn.ph/~rance/directx8/index.html Microsoft本家のゲームプログラミング入門資料(数学の知識必須) http://msdn.microsoft.com/ja-jp/academic/cc998598 まさかとは思うがDirectX7ならこの辺り http://rina.jpn.ph/~rance/directx7/directx7study/index.html 入門者ならDirectXと言わずDXライブラリを使うのもありだと思う。 DXライブラリを使った解説サイト http://dixq.net/g/ あと、ネットの情報は色々不足な部分や整理されていないから 一冊、入門書を買うことをお勧めする。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/881
882: 879 [sage] 2011/04/03(日) 23:08:21 ID:mqRgK4Gz あれID変ったw http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/882
883: ◆MBbNHCnf2M [sage] 2011/04/03(日) 23:49:00 ID:wtGWHPRo 全然連続で書き込めない、この板人が少な過ぎるのか・・・ >>881 DirectX 9.0c でやろうと思ってます つまり、DirectDrawでなくて、DirectX Graphicsですね そのサイトも読んだんですけど、多分ポリゴンにテクスチャに貼り付けて 2Dの処理をするのがよく理解できてないんですね 特にテクスチャの扱いが多分よく分かってないので、勉強しときます ポリゴンに単純にテクスチャ貼るところまでは理解できてる(と思う)んですが http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/883
884: 名前は開発中のものです。 [sage] 2011/04/04(月) 00:57:26 ID:EfnOmkqq だったら素直にD3DXのSprite使えばいいよ 表示範囲内のタイルを毎フレーム全て描画しなおせばいいだけ 一見効率悪そうだけど>>878よりは遥かに効率が良い http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/884
885: 名前は開発中のものです。 [sage] 2011/04/04(月) 01:16:24 ID:EfnOmkqq 一つのレイヤ内で使われるタイルを一つの大きなテクスチャにまとめておいて レイヤ全体を一つの図形とみなしてテクスチャ座標でマッピングするのが 多分一番速くて効率の良い方法 スプライトはそれと同じようなことを自動でやってくれるから 毎フレーム大量の描画を行ってもわりと速い http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/885
886: 名前は開発中のものです。 [] 2011/04/23(土) 16:35:48 ID:CvPk8hGJ ゲーム制作メンバーを募集しています。 http://yuzuru.2ch.net/test/read.cgi/ff/1298538064/l50 http://www31.atwiki.jp/fftsukurou/ ・最近のFFが嫌い ・昔のFFが好き どちらかに当てはまれば誰でも結構です。 昔ながらのFFをみんなで作りましょう。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/886
887: 名前は開発中のものです。 [sage] 2011/04/28(木) 16:06:00 ID:odTXZLNY 募集要項の大雑把さにフイタ http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/887
888: 忍法帖【Lv=18,xxxPT】 [sage] 2011/05/05(木) 11:29:11 ID:Zs6VE70C うん? http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/888
889: 名前は開発中のものです。 [] 2011/07/08(金) 21:16:59 ID:nxuNDnA1 マップ画面から事ある事に戦闘画面に行くよくあるRPGを作ろうと思うんだけど、 戦闘画面を呼び出すのはマップ画面の中で関数呼び出す感じにするもんなの? それともデータ保存してマップ画面終了してから戦闘画面に行くもんなの? 作る時は前者が楽だけど、メモリがちょっと心配。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/889
890: 名前は開発中のものです。 [sage] 2011/07/08(金) 21:29:25 ID:TDxk0CvB メッセージループ内でシーン分岐 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/890
891: 名前は開発中のものです。 [sage] 2011/07/08(金) 21:34:45 ID:nxuNDnA1 ああ、やっぱそれか……ありがとう。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/891
892: 名前は開発中のものです。 [sage] 2011/07/13(水) 17:30:26 ID:7GbeQNs3 > それともデータ保存してマップ画面終了してから戦闘画面に行くもんなの? 毎回状態を記憶した一時セーブデータみたいなの書き出して読み込んで、 オブジェクトの生成と破棄とリソースの読み込みと開放してまた再現するって事? その処理を作ってテストするのが大変そうだなぁ… 所謂普通のセーブデータと共用できればマシそうだけど… 仕様にもよるけど、マップ画面でのbgmを元の位置から再生したい時とかも少し面倒だね。 イベントなんかの途中で戦闘が始まるようなのは復元するの大変そうだなぁ… どんなゲームなのか判らないから一概には言えないけど、 メモリなんてせいぜい該当マップで利用する敵グラや音のリソースが+されるだけなんだし、 そこまで気にする程でも無いような。 昨今のPC事情で考えたらCPUやメモリの容量は異常だよね。 10万満たない簡素なPCでも凄い積んでる。 ところがHDアクセスはまだまだ遅いんだよね。 だから前者でいいんでね? > 戦闘画面を呼び出すのはマップ画面の中で関数呼び出す感じにするもんなの? ↓ > メッセージループ内でシーン分岐 要するにマップ画面に戦闘画面への遷移を固定化するコードを持たさないで部品化した方がいいよねって話かと。 方法はいろいろあって、FSM(有限オートマトン)やstateパターンでシーン単位で切り替えるのが有名だけど、 遷移を管理する側にごちゃごちゃさせたくないなら、マップと戦闘を保持したクラスを用意してやれば済む話だよね。 つーか別に仕様が完全固定化されてるなら戦闘からマップ直接呼んでもいいと思うよ。 あの手の技法なんて納期とか変更とかに厳しい世界の人たちが使ってる苦肉の策なんだしw 難しい事や汎用的な事は手段であって、それが目的化するよりはゲームが動くほうがいいよね。 それからこれも仕様によるけど、 所謂シーン単位での完全切り替えだとマップの上に戦闘を描くスタイルできないけどいいの? あとエンカウントのアニメーションなんか必要な場合、マップ画面側にその処理だけが残るとかキモクない? http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/892
893: 名前は開発中のものです。 [sage] 2011/07/14(木) 16:32:39 ID:0xB3ByY3 ふぅ… http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/893
894: 名前は開発中のものです。 [] 2011/12/06(火) 13:22:55 ID:oDkZLgbY あげ http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/894
895: 名前は開発中のものです。 [sage] 2012/03/26(月) 23:19:50 ID:q+Fv8Yng >>889 グラフィック関連はさすがに解放すると思う でもドラクエみたいな2Dロープレなら何をどう作ってもメモリ不足なんてありえない もう1つの質問の意図はマップ画面の下位に戦闘画面が来るか それともマップ画面と戦闘画面を同じ立場において別途切り替える機構を作るかっていう問題だと思うけど 何らかのイベントやミニゲームなどで戦闘シーンを使う場合に上下関係が密接に関係してると 後で再利用しづらいのにで戦闘画面は独立させておいたほうがいいと思う。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/895
896: 名前は開発中のものです。 [sage] 2012/05/10(木) 12:17:40 ID:CvbrCj71 FFよりダンマスみたいなの作ってよ いっとくけどMSX版の方じゃないよw http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/896
897: 名前は開発中のものです。 [sage] 2012/08/23(木) 21:04:32 ID:8Fyjiw0F MSXのダンジョンマスターをオンライン対応でリメイクして欲しいけど スレ違いだし他力本願だねw http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/897
898: 名前は開発中のものです。 [age] 2012/09/07(金) 19:10:16 ID:M4WerZHY あげ http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/898
899: 名前は開発中のものです。 [sage] 2012/09/16(日) 21:05:26 ID:3z6vfuIt ダンマスならRTC版じゃいかんのか? http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/899
900: あずにゃん ◆PaaSYgVvtw [] 2012/11/29(木) 18:47:56 ID:T/exNI7l c始めたばかりなのですが質問です。 tp//codepad.org/WsNDfYIs これをビルドしたら実行結果が a = 1 &a = 18ff44 *pa = 1 &pa = 18ff3c b = 1 と表示されたんですが&aと&paが何故こう表示されるのか分かりません 16進数で表示される事は分かるんですが printf("&pa = %04x\n",&pa); 実行結果が18ff3c これが特に分かりません^^; 数学的に考えるとpa=&a;でアドレスがaに代入されるからaの16進数表示に ならないんですか? 仕組みはよく分からなくてどなたか教えて下さい。 まずは基礎から勉強してるので宜しくです。 まずはcからなのでc+はまだ先のことですが^^; ゲ制作も遠い道のりです。。。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/900
901: 名前は開発中のものです。 [sage] 2012/11/29(木) 19:15:49 ID:f6gZcj+t paのアドレスじゃん http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/901
902: 名前は開発中のものです。 [sage] 2012/12/01(土) 19:58:04 ID:CrVsmJCK >>900 codepad.org/qZh2vLXf http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/902
903: 名前は開発中のものです。 [sage] 2012/12/01(土) 20:18:25 ID:CrVsmJCK >>900 ごめん、やっぱこっちで codepad.org/UB5JFPnU http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/903
904: 名前は開発中のものです。 [] 2012/12/28(金) 09:37:26 ID:8KDAkRIs ズルするならマップでエンカウント直前のスクリーンを保持しておいて、戦闘画面の背景にあてれば出来るね。 動くマップチップで戦闘中も動かしたいなら見えてる部分をきちんとしたデータで渡して戦闘シーンで再構築しないといけないけどたぶん難しくないか。 やっぱマップと戦闘だと載せるUI違うから分けた方が見やすくなるんじゃないかと思ってる。 背景がマップだと戦闘場面が戦闘UIという意識でマップにのっかってるって感覚が強くなりそうだから一緒に書くのが自然に思えなくもないけど、 ほかのシーンは分けてるのにマップと戦闘はくっついてるというのは汎用的ではないような気がする。 でも面倒になったら分けない。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/904
905: 名前は開発中のものです。 [] 2015/10/16(金) 10:06:10 ID:c5lx3m67 >>1は消息不明? DXライブラリだけど 俺もアクション、シューティングと何作か作って来たので そろそろRPG作ってみたいんだけど、 膨大になるゲーム中の台詞を合理的に管理する方法が思い付かないんだよね。 それが解決するなら重い腰あげられそうなんだけど。。 http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/905
906: 名前は開発中のものです。 [sage] 2015/10/23(金) 21:15:34 ID:yK+GV+yo あえて一度ツクールなりウディタなり触ってみればいい http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/906
907: 名前は開発中のものです。 [] 2017/01/31(火) 20:51:48 ID:D6yECHIX age http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/907
908: 名前は開発中のものです。 [] 2017/12/31(日) 22:42:19 ID:/rN76OKL 簡単にお金が稼げる方法興味ある人だけ見てください。 グーグル検索⇒『来島のモノノリウエ』 LWCSBVOCMR http://mevius.5ch.net/test/read.cgi/gamedev/1101161690/908
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.012s