少し前まではHSPで作ろうと思っていたのですが、HSPでRPGゲームを作るのは難しいらしいので、C++で作ろうと思います。
C++のプログラミングは初めてですので、みんなの力が必要です。
お願いします。
あと質問ですが、C++ってMMORPGつくれますか?
探検
C++でRPGゲームを作成する
■ このスレッドは過去ログ倉庫に格納されています
1じっち
04/11/23 07:14:50ID:CCsv+84e749名前は開発中のものです。
2006/06/18(日) 09:52:01ID:kWRvX99Z おいおい、初心者をミスリードするな。
visiRPGとNew CUIRPGも参考にならないだろう。
反面教師ならまだしも、作者の良識を疑う。
visiRPGとNew CUIRPGも参考にならないだろう。
反面教師ならまだしも、作者の良識を疑う。
750名前は開発中のものです。
2006/06/20(火) 05:44:49ID:yRy3miB7 鬼はどうなったん?
751名前は開発中のものです。
2006/06/20(火) 11:04:29ID:annU3c5h ステフが捨てました。
752名前は開発中のものです。
2006/06/21(水) 17:03:09ID:b0spWjUO >>749の作るゲームに期待
753名前は開発中のものです。
2006/06/21(水) 18:05:51ID:HFz2n3fa754名前は開発中のものです。
2006/06/21(水) 18:07:40ID:HFz2n3fa ヘッダに実装を書かない方法を知らないんジャマイカ
755名前は開発中のものです。
2006/06/22(木) 19:56:56ID:UpYDoT5s756名前は開発中のものです。
2006/06/25(日) 17:33:37ID:cfrlOTij ドラゴンクエストノスタルジア
とか創ったら略語がDQNにw
とか創ったら略語がDQNにw
757名前は開発中のものです。
2006/08/01(火) 04:11:10ID:lqTlZ2D0 きっと鬼ぃは喉を餅に詰まらせて診断だ
758名前は開発中のものです。
2006/08/01(火) 16:04:04ID:dyzvPv2P ですよねー
759名前は開発中のものです。
2006/08/04(金) 18:42:33ID:W6nuuaJ8 うんうん ^^
760名前は開発中のものです。
2006/10/14(土) 17:56:19ID:TyTVrLwQ ワロタ
761名前は開発中のものです。
2006/10/26(木) 21:13:09ID:ssyUOzfl C++でRPGシステムを作ろうと思っています。
汎用性重視で描画処理はすべてフレームバッファ(Win32ではDIBとして表示。LinuxとかMacは知らんw)。
フォントも安心して使える固定サイズのフリーフォント内蔵で画面イメージも統一できます。
シナリオエディタも搭載、ツクール感覚でオリジナルのRPGを作ることが可能。
設計書書くんで、誰かプログラミングしてください。
汎用性重視で描画処理はすべてフレームバッファ(Win32ではDIBとして表示。LinuxとかMacは知らんw)。
フォントも安心して使える固定サイズのフリーフォント内蔵で画面イメージも統一できます。
シナリオエディタも搭載、ツクール感覚でオリジナルのRPGを作ることが可能。
設計書書くんで、誰かプログラミングしてください。
762名前は開発中のものです。
2006/10/26(木) 23:08:33ID:5Uv1F1QJ クラス設計は人の書いたの見てみたいなあ
763名前は開発中のものです。
2006/10/27(金) 15:19:29ID:PMSzIrz+764名前は開発中のものです。
2007/01/28(日) 23:04:23ID:LYBCO2KL 自分のスキルあげるならどういうゲーム作ったら良いのさ
765名前は開発中のものです。
2007/01/30(火) 11:53:29ID:C4TtFAJ1 一定の経験値でスキルあがるようにするとか。
……と微妙にボケてみる。
……と微妙にボケてみる。
766名前は開発中のものです。
2007/04/12(木) 17:49:52ID:ZybyQoX6 >>764
今のレベルによるが、
ある程度も組めないようなら、本買ってきてそれに載ってるコードを読めるようになるとか
AngBandなどオープンソースの奴を頑張って読む。
その後は、何か2週間で作れるゲームを自力で作る(設計も自分でする)。
ここまで、できれば、あとはだいたいどんなRPGでも時間や物理的障害を除いて出来るようになると思うよ。
今のレベルによるが、
ある程度も組めないようなら、本買ってきてそれに載ってるコードを読めるようになるとか
AngBandなどオープンソースの奴を頑張って読む。
その後は、何か2週間で作れるゲームを自力で作る(設計も自分でする)。
ここまで、できれば、あとはだいたいどんなRPGでも時間や物理的障害を除いて出来るようになると思うよ。
767名前は開発中のものです。
2007/04/12(木) 17:50:34ID:bCgTq/qC 盛りage
768名前は開発中のものです。
2007/04/12(木) 18:43:46ID:MaYb13RL >>764
作りたいゲーム作れば?
作りたいゲーム作れば?
769名前は開発中のものです。
2007/11/21(水) 16:03:51ID:74vDcPF7770名前は開発中のものです。
2007/11/26(月) 14:03:23ID:uhzP5Hxh ドミノ10万個を見ても圧倒されない精神力
771名前は開発中のものです。
2008/04/25(金) 07:51:24ID:CbC63WhO ほ
772名前は開発中のものです。
2008/06/04(水) 20:15:51ID:xVETCOHb 新しい gamedeve一応かきかき
TopPage - game-develop.com wiki
http://wiki.game-develop.com/
GameDevWikiを何とかするスレ
http://pc11.2ch.net/test/read.cgi/gamedev/1156117275/
TopPage - game-develop.com wiki
http://wiki.game-develop.com/
GameDevWikiを何とかするスレ
http://pc11.2ch.net/test/read.cgi/gamedev/1156117275/
773名前は開発中のものです。
2008/10/04(土) 03:04:33ID:6CC7noIJ world
774名前は開発中のものです。
2008/11/10(月) 13:58:56ID:CM/VVTpv めんどいから紙芝居から練習するよ
775名前は開発中のものです。
2009/03/04(水) 08:57:47ID:BIR8YGwO RPGを作る前にミニゲームなどを作れるようにしたほうがいいよ。
ミニゲームで作った技術はRPGで応用できると思う
いきなり、 大作を作ろうとしても無理
ミニゲームで作った技術はRPGで応用できると思う
いきなり、 大作を作ろうとしても無理
776名前は開発中のものです。
2009/03/04(水) 09:02:17ID:WGe6HWau その通りではあるが
こんな過疎スレで言わんでも
こんな過疎スレで言わんでも
777名前は開発中のものです。
2009/04/08(水) 14:56:30ID:3KQiReEr 過疎ってるなー。
778名前は開発中のものです。
2009/07/02(木) 02:09:35ID:TZX2GARh とりあえず完成形が何かというを考え直した方がいいとレナは思うの
779名前は開発中のものです。
2010/08/04(水) 16:06:44ID:uZVXPzys780名前は開発中のものです。
2010/09/13(月) 20:52:54ID:M+I9V0GA 旧態依然としたコマンド&ターン戦闘が激しくつまらないと思う今日この頃
781名前は開発中のものです。
2010/10/14(木) 12:24:18ID:/y1Wbqlm JavaScriptでも作れそう?
ttp://www.programmingmat.jp/game_dev/webgame_dev/mapevt.html
ttp://www.programmingmat.jp/game_dev/webgame_dev/mapevt.html
782名前は開発中のものです。
2010/10/23(土) 15:44:45ID:A2QO4U5x >>781
HTML5の威力はこっちのが判りやすいよ
http://www.publickey1.jp/blog/10/html5javascriptakihabaraiphoneandroid.html
HTML5の威力はこっちのが判りやすいよ
http://www.publickey1.jp/blog/10/html5javascriptakihabaraiphoneandroid.html
783名前は開発中のものです。
2011/01/21(金) 23:01:50ID:MHt2IGM0 その通りではあるが
こんな過疎スレで言わんでも
こんな過疎スレで言わんでも
784名前は開発中のものです。
2011/03/09(水) 22:15:31.71ID:hobFeZxC このスレもらっていいかな?
C++とDirectXでRPGを作りたいんだが
誰か一から作り方を教えてくれる奇特な人はいる?
C++とDirectXでRPGを作りたいんだが
誰か一から作り方を教えてくれる奇特な人はいる?
785名前は開発中のものです。
2011/03/09(水) 23:09:17.54ID:gadIXpQZ >>784
一緒に考えるくらいでよければ協力しますよ。
一緒に考えるくらいでよければ協力しますよ。
786名前は開発中のものです。
2011/03/09(水) 23:38:44.90ID:hobFeZxC787名前は開発中のものです。
2011/03/10(木) 00:15:24.30ID:zj8b7q7C >>786
まったく一からと仮定して下記を試してみてください。
#include <windows.h>
#include <stdio.h>
class WINDOW {
public:
WINDOW();
};
WINDOW window;
WINDOW::WINDOW(){
AllocConsole();
freopen( "CONOUT$", "w", stdout );
freopen( "CONIN$", "r", stdin );
}
int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){
printf( "hello world\n" );
do {
;
} while ( 1 );
return 0;
}
まったく一からと仮定して下記を試してみてください。
#include <windows.h>
#include <stdio.h>
class WINDOW {
public:
WINDOW();
};
WINDOW window;
WINDOW::WINDOW(){
AllocConsole();
freopen( "CONOUT$", "w", stdout );
freopen( "CONIN$", "r", stdin );
}
int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){
printf( "hello world\n" );
do {
;
} while ( 1 );
return 0;
}
788名前は開発中のものです。
2011/03/10(木) 00:23:55.03ID:zj8b7q7C (787続き)
いろんなアプローチがあるかと思うのでいろんな意見を参考にされるとよいと思います。
わたしはまずはprintfから作るオールドタイプです。
あと、DirectXはver9しか知らないです。
VisualC++は使ったことないのでまったくわからないです。
いろんなアプローチがあるかと思うのでいろんな意見を参考にされるとよいと思います。
わたしはまずはprintfから作るオールドタイプです。
あと、DirectXはver9しか知らないです。
VisualC++は使ったことないのでまったくわからないです。
789名前は開発中のものです。
2011/03/10(木) 00:26:00.17ID:LV/Xv7hB >>787
はい、試しました
はい、試しました
790名前は開発中のものです。
2011/03/10(木) 00:29:26.99ID:LV/Xv7hB >>788
DirectXは9.0cで作ろうと思っているので、ちょうど良いです
自分はもっとオールドタイプですね
MSXの頃にプログラムしてたので、Windows環境はさっぱりです
まあVC++が吐き出すWin32APIの雛形くらいは理解できますが
DirectXは9.0cで作ろうと思っているので、ちょうど良いです
自分はもっとオールドタイプですね
MSXの頃にプログラムしてたので、Windows環境はさっぱりです
まあVC++が吐き出すWin32APIの雛形くらいは理解できますが
791名前は開発中のものです。
2011/03/10(木) 00:36:07.62ID:zj8b7q7C 次はとりあえずWindowを作成してしまいましょう。
WINDOWクラスに下記のメンバーを追加してください。
private:
HWND handle;
MSG message;
bool sync;
struct {
unsigned int X,Y,W,H;
unsigned int x,y,w,h;
} screen;
変数名とか関数名は自分のポリシーにあわせて変更してください。
WINDOWクラスに下記のメンバーを追加してください。
private:
HWND handle;
MSG message;
bool sync;
struct {
unsigned int X,Y,W,H;
unsigned int x,y,w,h;
} screen;
変数名とか関数名は自分のポリシーにあわせて変更してください。
792名前は開発中のものです。
2011/03/10(木) 00:49:20.74ID:zj8b7q7C メンバー関数を作成します。
public:
bool open( void );
ゲームの名称が決まっているならプロジェクト名をつけておくと愛着が湧きますよ。
#ifndef PROJECT
#define PROJECT "お好きな名前"
#endif
そろそろファイルを.hと.cppに分割したほうがよいかも知れません。
public:
bool open( void );
ゲームの名称が決まっているならプロジェクト名をつけておくと愛着が湧きますよ。
#ifndef PROJECT
#define PROJECT "お好きな名前"
#endif
そろそろファイルを.hと.cppに分割したほうがよいかも知れません。
793名前は開発中のものです。
2011/03/10(木) 00:51:12.61ID:zj8b7q7Cbool WINDOW::open( void ){
HINSTANCE hi = GetModuleHandle( NULL );
WNDCLASSEX wc;
wc.cbSize = sizeof( wc );
wc.style = CS_HREDRAW|CS_VREDRAW;
wc.lpfnWndProc = Proc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hi;
wc.hIcon = ( HICON )LoadImage( NULL,IDI_APPLICATION,IMAGE_ICON, 0,0,LR_DEFAULTSIZE|LR_SHARED );
wc.hIconSm = wc.hIcon;
wc.hCursor = ( HCURSOR )LoadImage( NULL,IDC_ARROW, IMAGE_CURSOR,0,0,LR_DEFAULTSIZE|LR_SHARED );
wc.hbrBackground= ( HBRUSH )GetStockObject( BLACK_BRUSH );
wc.lpszMenuName = NULL;
wc.lpszClassName= _T( PROJECT );
794名前は開発中のものです。
2011/03/10(木) 00:52:43.01ID:LV/Xv7hB795名前は開発中のものです。
2011/03/10(木) 00:55:08.70ID:zj8b7q7C RegisterClassEx( &wc );
handle = CreateWindow(wc.lpszClassName,
wc.lpszClassName,
WS_OVERLAPPEDWINDOW,
screen.X = screen.x = ( GetSystemMetrics( SM_CXSCREEN ) - SCREEN_W )/ 2,
screen.Y = screen.y = ( GetSystemMetrics( SM_CYSCREEN ) - SCREEN_H )/ 2,
screen.W = screen.w = SCREEN_W + GetSystemMetrics( SM_CXFRAME ) * 2,
screen.H = screen.h = SCREEN_H + GetSystemMetrics( SM_CYFRAME ) * 2 + GetSystemMetrics( SM_CYCAPTION ),
NULL,NULL,hi,NULL);
ShowWindow( handle, SW_SHOW );
UpdateWindow( handle );
return true;
}
これでコンパイルしてみてください。
"Procという関数がないよ"でエラーになります。
handle = CreateWindow(wc.lpszClassName,
wc.lpszClassName,
WS_OVERLAPPEDWINDOW,
screen.X = screen.x = ( GetSystemMetrics( SM_CXSCREEN ) - SCREEN_W )/ 2,
screen.Y = screen.y = ( GetSystemMetrics( SM_CYSCREEN ) - SCREEN_H )/ 2,
screen.W = screen.w = SCREEN_W + GetSystemMetrics( SM_CXFRAME ) * 2,
screen.H = screen.h = SCREEN_H + GetSystemMetrics( SM_CYFRAME ) * 2 + GetSystemMetrics( SM_CYCAPTION ),
NULL,NULL,hi,NULL);
ShowWindow( handle, SW_SHOW );
UpdateWindow( handle );
return true;
}
これでコンパイルしてみてください。
"Procという関数がないよ"でエラーになります。
796名前は開発中のものです。
2011/03/10(木) 00:57:21.06ID:LV/Xv7hB797名前は開発中のものです。
2011/03/10(木) 00:59:49.27ID:n38lezle windows.hのインクルード前に
#define WIN32_LEAN_AND_MEAN
を入れておくとコンパイルが早くなったりとか
_WIN32_WINNTを定義しておかないと勝手にVistaとか7専用にされたりとか
#define WIN32_LEAN_AND_MEAN
を入れておくとコンパイルが早くなったりとか
_WIN32_WINNTを定義しておかないと勝手にVistaとか7専用にされたりとか
798名前は開発中のものです。
2011/03/10(木) 01:00:15.45ID:zj8b7q7C >>794
MinGW g++というコンパイラです。VCのような統合環境が苦手なんです。
静的メンバー関数としてProcを追加してください。
private:
static LRESULT CALLBACK Proc( HWND hWnd, UINT msg, WPARAM wp, LPARAM lp );
LRESULT CALLBACK WINDOW::Proc( HWND hWnd, UINT msg, WPARAM wp, LPARAM lp ){
switch ( msg ) {
case WM_DESTROY:
PostQuitMessage( 0 );
return 0;
}
return DefWindowProc( hWnd, msg, wp, lp );
}
MinGW g++というコンパイラです。VCのような統合環境が苦手なんです。
静的メンバー関数としてProcを追加してください。
private:
static LRESULT CALLBACK Proc( HWND hWnd, UINT msg, WPARAM wp, LPARAM lp );
LRESULT CALLBACK WINDOW::Proc( HWND hWnd, UINT msg, WPARAM wp, LPARAM lp ){
switch ( msg ) {
case WM_DESTROY:
PostQuitMessage( 0 );
return 0;
}
return DefWindowProc( hWnd, msg, wp, lp );
}
799名前は開発中のものです。
2011/03/10(木) 01:04:37.18ID:zj8b7q7C >>796
スクリーン用の定数定義を忘れていました。
WINDOWクラスに下記の定義を追加してください。
private:
enum {
SCREEN_W = 800,
SCREEN_H = 600,
};
数値はお好みで変更ください。
ファイルや環境変数で外部から取り込む方法もあるかと思いますが、
面倒くさいんでやってないです。最後の方で対応すればよいかと。
スクリーン用の定数定義を忘れていました。
WINDOWクラスに下記の定義を追加してください。
private:
enum {
SCREEN_W = 800,
SCREEN_H = 600,
};
数値はお好みで変更ください。
ファイルや環境変数で外部から取り込む方法もあるかと思いますが、
面倒くさいんでやってないです。最後の方で対応すればよいかと。
800名前は開発中のものです。
2011/03/10(木) 01:14:43.71ID:LV/Xv7hB801名前は開発中のものです。
2011/03/10(木) 01:21:28.74ID:zj8b7q7C802名前は開発中のものです。
2011/03/10(木) 01:25:17.77ID:LV/Xv7hB >>801
できました
できました
803名前は開発中のものです。
2011/03/10(木) 01:30:45.13ID:zj8b7q7C >>802
そうですか。。。コンパイラの差異かも知れないです。
先々、この手の差異でどうにもわからない場合は、
申し訳ないですが自己解決か他に助言を求めてください。
下記の2つのメンバー関数を追加してください。
private:
bool peek( void ); //ウィンドウのメッセージを処理します
bool sync( void ); //タイマーの同期を取ります
そうですか。。。コンパイラの差異かも知れないです。
先々、この手の差異でどうにもわからない場合は、
申し訳ないですが自己解決か他に助言を求めてください。
下記の2つのメンバー関数を追加してください。
private:
bool peek( void ); //ウィンドウのメッセージを処理します
bool sync( void ); //タイマーの同期を取ります
804名前は開発中のものです。
2011/03/10(木) 01:36:52.24ID:LV/Xv7hB805名前は開発中のものです。
2011/03/10(木) 01:39:12.81ID:zj8b7q7C 最終的に作成した3つのメンバー関数はWinMaiに以下のように組み込みます。
window.open();
do {
GameSystemInit();
while ( window.peek() ) {
if ( !window.sync() ) { continue; }
if ( !GameSystemMain()) { break; }
}
GameSystemFree();
} while ( window.sync() );
↓これらがゲームっぽいプログラムを入れるところです。
bool GameSystemInit( void ){ return true; }
bool GameSystemMain( void ){ return true; }
bool GamaSystemFree( void ){ return true; }
とりあえず空関数を適当に作成しておきます。
window.open();
do {
GameSystemInit();
while ( window.peek() ) {
if ( !window.sync() ) { continue; }
if ( !GameSystemMain()) { break; }
}
GameSystemFree();
} while ( window.sync() );
↓これらがゲームっぽいプログラムを入れるところです。
bool GameSystemInit( void ){ return true; }
bool GameSystemMain( void ){ return true; }
bool GamaSystemFree( void ){ return true; }
とりあえず空関数を適当に作成しておきます。
806名前は開発中のものです。
2011/03/10(木) 01:41:06.36ID:zj8b7q7C807名前は開発中のものです。
2011/03/10(木) 01:47:57.19ID:zj8b7q7C (806続き)
混乱するので、以降はそのまま持ってくるようにします。
sync変数と関数は下記になります。
private:
bool sync;
public:
bool Sync( void ) const { return sync; }
混乱するので、以降はそのまま持ってくるようにします。
sync変数と関数は下記になります。
private:
bool sync;
public:
bool Sync( void ) const { return sync; }
808名前は開発中のものです。
2011/03/10(木) 01:51:46.72ID:LV/Xv7hB809名前は開発中のものです。
2011/03/10(木) 01:53:56.05ID:zj8b7q7C Peek関数の中でタイマーを処理しているので、WINDOWクラスに下記のメンバーを追加してください。
struct {
unsigned int old;
unsigned int now;
} time;
コンストラクターで初期化します。
WINDOW::WINDOW() {
timeBeginPeriod( 1 );
time.old = timeGetTime();
}
で、デストラクターで後始末します。
WINDOW::~WINDOW(){
timeEndPeriod( 1 );
}
struct {
unsigned int old;
unsigned int now;
} time;
コンストラクターで初期化します。
WINDOW::WINDOW() {
timeBeginPeriod( 1 );
time.old = timeGetTime();
}
で、デストラクターで後始末します。
WINDOW::~WINDOW(){
timeEndPeriod( 1 );
}
810名前は開発中のものです。
2011/03/10(木) 07:13:10.95ID:zj8b7q7C811名前は開発中のものです。
2011/03/10(木) 22:22:49.60ID:zj8b7q7C Peekの実装です。これでWindowsが表示されると思います。
bool WINDOW::Peek( void ){
sync = false;
if ( PeekMessage( &message, NULL, 0, 0, PM_NOREMOVE ) ) {
switch ( GetMessage( &message, NULL, 0, 0 ) ) {
case 0:
case -1:
return false;
}
TranslateMessage( &message );
DispatchMessage( &message );
}
time.now = timeGetTime();
if ( time.now - time.old >= 1000/60 ) {
time.old = time.now;
sync = true;
}
return true;
}
bool WINDOW::Peek( void ){
sync = false;
if ( PeekMessage( &message, NULL, 0, 0, PM_NOREMOVE ) ) {
switch ( GetMessage( &message, NULL, 0, 0 ) ) {
case 0:
case -1:
return false;
}
TranslateMessage( &message );
DispatchMessage( &message );
}
time.now = timeGetTime();
if ( time.now - time.old >= 1000/60 ) {
time.old = time.now;
sync = true;
}
return true;
}
812名前は開発中のものです。
2011/03/11(金) 00:55:58.78ID:jGNSe99R >>811
Window表示できました
Window表示できました
813名前は開発中のものです。
2011/03/11(金) 07:34:09.43ID:tT3vlqKS >>812
VC++上でのデバッガー実行はよくわからないんで自前でやっていただくとして、
先々、デバッグ目的で何かを表示するのに、よくprintfとMessageBoxを使ったりします。
これらに加えて、Windows上で表示されるフォントがあると便利なので、
デバッグ用にSpriteによる文字表示を作成するのがよいかと思います。
SpriteはDirectXの機能を使います。
VC++上でのデバッガー実行はよくわからないんで自前でやっていただくとして、
先々、デバッグ目的で何かを表示するのに、よくprintfとMessageBoxを使ったりします。
これらに加えて、Windows上で表示されるフォントがあると便利なので、
デバッグ用にSpriteによる文字表示を作成するのがよいかと思います。
SpriteはDirectXの機能を使います。
814名前は開発中のものです。
2011/03/11(金) 11:57:07.06ID:cb9oR2jl #include <windows.h>
OutputDebugStringA("これはデバッグ出力\n");
OutputDebugStringA("これはデバッグ出力\n");
815名前は開発中のものです。
2011/03/19(土) 10:31:39.54ID:zpjTizC+816名前は開発中のものです。
2011/03/19(土) 10:35:30.95ID:zpjTizC+ それにしても、意外とDirectX9の解説サイト少ないですね
8以前だと結構あるんですが
特にプログラマブルシェーダーに対応したサイトは少ない
固定機能パイプラインとかもう廃止なので使いたくないし
DirectXの知識は全くないので、情報が無いとなかなか進まない
8以前だと結構あるんですが
特にプログラマブルシェーダーに対応したサイトは少ない
固定機能パイプラインとかもう廃止なので使いたくないし
DirectXの知識は全くないので、情報が無いとなかなか進まない
817名前は開発中のものです。
2011/03/19(土) 10:41:37.55ID:zpjTizC+ マップチップとかって、どうやって読み込むんだろう
RPGツクールVXなどを見てみると、マップチップ数に制限が無い
仮に32*32ドットのマップチップ数が65536個だとすると
RPGツクール仕様だと、横8個分のチップを縦方向に無限なので
256*262144ドットの巨大テクスチャとして読み込むのだろうか
こんな巨大なテクスチャ作れるのかな?
RPGツクールVXなどを見てみると、マップチップ数に制限が無い
仮に32*32ドットのマップチップ数が65536個だとすると
RPGツクール仕様だと、横8個分のチップを縦方向に無限なので
256*262144ドットの巨大テクスチャとして読み込むのだろうか
こんな巨大なテクスチャ作れるのかな?
818名前は開発中のものです。
2011/03/19(土) 11:54:43.83ID:tf/j5S+W 俺なら複数枚のテクスチャを切り替えて表示するかな >817
1枚目のテクスチャにあるチップを描画して、SetTextureで切り替えて2枚目とか
どんな方法がベストなのかは知らないけど
1枚目のテクスチャにあるチップを描画して、SetTextureで切り替えて2枚目とか
どんな方法がベストなのかは知らないけど
819名前は開発中のものです。
2011/03/19(土) 12:16:09.47ID:zpjTizC+820名前は開発中のものです。
2011/03/21(月) 11:39:21.38ID:t1zoR9O5 ここ数日DirectXの情報サイトばかり見ているけど
リソースの解放とか凄い面倒そうだ
ある程度フレームワーク化しなきゃ駄目なのかな
HLSLとかもさっぱりだし、先はかなり長そうだ・・・
リソースの解放とか凄い面倒そうだ
ある程度フレームワーク化しなきゃ駄目なのかな
HLSLとかもさっぱりだし、先はかなり長そうだ・・・
821名前は開発中のものです。
2011/03/21(月) 11:47:38.69ID:KbfIo3Ze 楽をしたいならOgreとかirrlichtとかDXLibとか高レベルライブラリを使うべき
Directxばかりに固執するといいことは何も無い
それに良いフレームワークに触れない限り、
自分でフレームワークを組み立てることなどできないしな
Directxばかりに固執するといいことは何も無い
それに良いフレームワークに触れない限り、
自分でフレームワークを組み立てることなどできないしな
822785
2011/03/23(水) 21:00:30.42ID:NMGIfDjO Window表示が出来たなら、次は入力回りを整備するのがよいかと思います。
DirectInputでよいですかね?(他はわからないです)
DirectInputでよいですかね?(他はわからないです)
823名前は開発中のものです。
2011/03/23(水) 21:36:41.78ID:iioYpWXA824名前は開発中のものです。
2011/03/23(水) 21:40:39.44ID:iioYpWXA >>821
ゲーム自体をすぐに作りたいというよりは
DirectXと最近のゲームの作り方を勉強したいので
Win32API+DirectXでやっていきたいと思います
DXライブラリは便利そうですね、いずれこういうライブラリも作りたいです
ゲーム自体をすぐに作りたいというよりは
DirectXと最近のゲームの作り方を勉強したいので
Win32API+DirectXでやっていきたいと思います
DXライブラリは便利そうですね、いずれこういうライブラリも作りたいです
825785
2011/03/23(水) 22:48:06.18ID:NMGIfDjO >>823
入力関連をまとめるクラスを作成しましょう。
クラス名(XXXXX)はお好みで変えてください。
class XXXXX {
public:
static bool Init( void ); // 初期化処理を記述する関数
static bool Main( void ); // 毎ループ呼び出される関数
static bool Free( void ); // 終了時処理を記述する関数
};
bool XXXXX::Init( void ){ return true; }
bool XXXXX::Free( void ){ return true; }
bool XXXXX::Main( void ){ return true; }
上記の関数はそれぞれ前述(>>805)のGameSystem系の対応する関数内で呼び出します。
InitとFreeの中身は対称(確保⇔解放)になる事が多いです。
また、Mainはどうしても記述量が多くなります。
なので、Init/Free/Mainの順に記載するとソースの見通しがよくなります。
入力関連をまとめるクラスを作成しましょう。
クラス名(XXXXX)はお好みで変えてください。
class XXXXX {
public:
static bool Init( void ); // 初期化処理を記述する関数
static bool Main( void ); // 毎ループ呼び出される関数
static bool Free( void ); // 終了時処理を記述する関数
};
bool XXXXX::Init( void ){ return true; }
bool XXXXX::Free( void ){ return true; }
bool XXXXX::Main( void ){ return true; }
上記の関数はそれぞれ前述(>>805)のGameSystem系の対応する関数内で呼び出します。
InitとFreeの中身は対称(確保⇔解放)になる事が多いです。
また、Mainはどうしても記述量が多くなります。
なので、Init/Free/Mainの順に記載するとソースの見通しがよくなります。
826名前は開発中のものです。
2011/03/24(木) 12:02:48.79ID:+jtjlJX2 入力関連なんてゲーム内で一つあればいいんだからグローバル関数でもなんでもいいよ
827名前は開発中のものです。
2011/03/24(木) 17:44:17.05ID:7A5Wm0Sp 全部staticにするくらいなら潔くグローバル関数でいいな
シングルトンでもいいが
シングルトンでもいいが
828名前は開発中のものです。
2011/03/25(金) 00:33:52.87ID:DZniurx+829名前は開発中のものです。
2011/03/25(金) 00:49:34.24ID:VJVVC59h830名前は開発中のものです。
2011/03/25(金) 00:51:14.65ID:VJVVC59h とはいってもまあデザパタ使っていいならシングルトンでも使えばおk
ところで、すごく基本的な質問ですけど
staticなメンバ関数だと何が問題なんでしょう?
特に駄目だという理由が思い付かないんですけど
staticなメンバ関数だと何が問題なんでしょう?
特に駄目だという理由が思い付かないんですけど
833名前は開発中のものです。
2011/03/25(金) 02:00:59.85ID:t5g0UlGF C++ でシングルトンなんか持ち出すくらいなら素直にグローバル変数にしといたほうがよくないか?
>>828
私もゲームの作り方を勉強したいと思って、
DirectXをつい最近やり始めたという状況で、
自分のやった事を再確認的にお伝えするのが限界です。
いづれ追いつかれて飽和すると思いますので、
より抽象的な概念や高度な作法はいろいろな意見を参考にしてください。
ちなみにXXXXXの部分は何と命名しました?
私もゲームの作り方を勉強したいと思って、
DirectXをつい最近やり始めたという状況で、
自分のやった事を再確認的にお伝えするのが限界です。
いづれ追いつかれて飽和すると思いますので、
より抽象的な概念や高度な作法はいろいろな意見を参考にしてください。
ちなみにXXXXXの部分は何と命名しました?
>>834
クラス名は GameInput としておきました
クラス名は GameInput としておきました
836名前は開発中のものです。
2011/03/25(金) 17:44:09.60ID:VJVVC59h 最初からデザイン云々いいだしても進まないから、
とりあえず動くことを目的としてけばええと思う
動き始めてからいくらでもデザインは改良できるし。
最初は処理の手順を覚えるのが先、
アルゴリズムの訓練をするのが先決
とりあえず動くことを目的としてけばええと思う
動き始めてからいくらでもデザインは改良できるし。
最初は処理の手順を覚えるのが先、
アルゴリズムの訓練をするのが先決
必要な変数(静的メンバ)を設定します。
.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;
}
.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;
}
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>が必要でした。
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>が必要でした。
839名前は開発中のものです。
2011/03/26(土) 11:36:25.84ID:oFPuFWap デザインとか気にするんだったら、まずはDirectInputデバイスを晒すのをやめるべき。
入力を取得する関数かクラスを作って、直接デバイスにアクセスするのはその中だけに制限する。
入力を取得する関数かクラスを作って、直接デバイスにアクセスするのはその中だけに制限する。
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;
}
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;
}
WINDOWクラスに下記の関数を作成してください。
public:
const HWND Handle( void ) const { return handle; }
>>842
GameInput::Init
keyboard = NULL // ねんのため追加してください
input->CreateDevice( GUID_SysKeyboard, ...
GameInput::Free:
解放の順番は初期化と反対にしてください。
input初期化->keyboard初期化 〜 keyboard解放→input解放
public:
const HWND Handle( void ) const { return handle; }
>>842
GameInput::Init
keyboard = NULL // ねんのため追加してください
input->CreateDevice( GUID_SysKeyboard, ...
GameInput::Free:
解放の順番は初期化と反対にしてください。
input初期化->keyboard初期化 〜 keyboard解放→input解放
変数のスコープとかよく分からなくなってきた・・・
Window.Handle()のWindowって、最初の方で定義したWindow window;の
windowっていうインスタンスだと思うんですけど
GameInput::Initが書かれているファイルGameInput.cppからアクセスするには
インスタンスを渡すしかないと思うんですけど
そこの処理はまだ書いてませんよね?
あれ、それともなんか勘違いしてるかな
Window.Handle()のWindowって、最初の方で定義したWindow window;の
windowっていうインスタンスだと思うんですけど
GameInput::Initが書かれているファイルGameInput.cppからアクセスするには
インスタンスを渡すしかないと思うんですけど
そこの処理はまだ書いてませんよね?
あれ、それともなんか勘違いしてるかな
846名前は開発中のものです。
2011/03/26(土) 16:01:06.60ID:QDwsR5XB いいかげんスレ違い
RPGのロジックに入るまでブログでやれ
RPGのロジックに入るまでブログでやれ
847名前は開発中のものです。
2011/03/26(土) 16:35:54.83ID:ai5/F2yB どうせ他に使うやついないのになにいっちゃってんの?アホなの?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 自民 国会議員の歳費 月額5万円引き上げ 今国会での成立目指す [どどん★]
- 「クラウンに乗りたかった」東京・足立の車暴走 男性、容疑を否認★2 [七波羅探題★]
- 志らく、高市首相を批判する人々は「日本人じゃないの?」SNSで賛否 野党議員が一斉批判「差別発言」「非国民扱いするコメンテーター」 [muffin★]
- 相次ぐ中国公演中止に、シンガーソングライターらが続々高市首相に怒り表明「隣国の仲間たちに対して申し訳ない」★3 [muffin★]
- 東京・足立区の盗難車死亡ひき逃げ事件 11人死傷のうち死亡した男女の身元を発表 80代の男性と20代フィリピン国籍の女性 警視庁 [どどん★]
- 【サッカー】2026年W杯組み合わせ抽選 。日本は初のポット2確定! 欧州PO4チームはポット4へ [阿弥陀ヶ峰★]
- 俺氏、アンチネトウヨ・反高市のインフルエンサーとしてXで危険視される。ネトウヨからのコメント1万も [805596214]
- 🖐( -᷄ὢ)>>2の>>3とか効かないんで……
- 人生って試練ばかりだよね
- 量産型アイドルグループメンバーの収入って
- 【悲報】統一教会幹部「安倍官房長官(2005年~06年)はうちの教義を知っている。我々の味方だ」山上に話す [115996789]
- うつ病オレ、日々の生活に刺激が足りないことが原因だと判明するw
