[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2ch.scのread.cgiへ]
Update time : 09/28 23:53 / Filesize : 245 KB / Number-of Response : 908
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++でRPGゲームを作成する



1 名前:じっち [04/11/23 07:14:50 ID:CCsv+84e.net]
少し前まではHSPで作ろうと思っていたのですが、HSPでRPGゲームを作るのは難しいらしいので、C++で作ろうと思います。
C++のプログラミングは初めてですので、みんなの力が必要です。
お願いします。
あと質問ですが、C++ってMMORPGつくれますか?

625 名前:名前は開発中のものです。 mailto:sage [2006/02/24(金) 20:06:00 ID:C8YKetOx.net]
簿記は日商1級なら凄い。
だがシナリオ案は・・

626 名前:名前は開発中のものです。 mailto:sage [2006/02/24(金) 20:55:08 ID:oHMJlfK9.net BE:188755182- ]
じゃあボクは、神話に埋もれた古代民族の足跡を辿りつつ世界の謎を解き明かしていく伝奇ファンタジーマロンがいいNA!

627 名前:新妻好み ◆IQwhCnTrnE [2006/02/24(金) 21:50:40 ID:JVlrc1wP.net]
>>622
却下。気にいらねぇ。

>>623
ああ、ああ?ああ・・・


    |                    \
    |  ('A`)           ギシギシ
   / ̄ノ( ヘヘ ̄ ̄        アンアン/


>>624
俺のモチベーションが維持できんから却下。

>>625
簿記1級のすごさがワカンネ

>>626
ああ、ああ?ああ・・・

>>623,>>626
ある程度具体的なストーリー考えてるのか?

628 名前:名前は開発中のものです。 mailto:sage [2006/02/24(金) 21:53:47 ID:oHMJlfK9.net BE:495483067- ]
ストーリーとシステムを切り離して考えるのは生産的じゃないと思うよ
「こーゆーシステムがやりたいから、こーゆーストーリーにする」ってアプローチもあるし、
逆もまた真なりではあるまいか。
システムとストーリーがチグハグなRPGはなんかアレだからモニョっちゃうんじゃないかなー

629 名前:新妻好み ◆IQwhCnTrnE [2006/02/24(金) 22:00:22 ID:JVlrc1wP.net]
>>628
ああ、ああ?
ワカンネ
ストーリーとシステムって関連性いるか?
どっちかってーと、設定とストーリーだろ。


    |                    \
    |  ('A`)           ギシギシ
   / ̄ノ( ヘヘ ̄ ̄        アンアン/


中世をモチーフにしたストーリーなのに戦闘で衛星砲とか使ってたらオカシイからな。

630 名前:名前は開発中のものです。 mailto:sage [2006/02/24(金) 22:03:33 ID:oHMJlfK9.net BE:377510584- ]
>>629
例えばだけど、
「世界を救う為、竜を育てるRPG」には
「竜を飼育するシステムを作りたいから、そーいうストーリにするぜー」ってアプローチと
「世界を竜で救うストーリーやりたいから、竜育成システム作るぜー」ってアプローチがあるわけじゃない。
このスレはあなたさんが主体でやってるんだから、
プログラマーのあなたてきには、どういうシステムが作りたいのよ?
ってわけ

631 名前:名前は開発中のものです。 mailto:sage [2006/02/24(金) 22:08:17 ID:oHMJlfK9.net BE:637049669- ]
>>中世をモチーフにしたストーリーなのに戦闘で衛星砲とか使ってたらオカシイからな。

FFなんかだとよくあるね。
この手のミスマッチも、世界のフレーバー作りに結構使えたりするのではあるまいか。

632 名前:名前は開発中のものです。 mailto:sage [2006/02/24(金) 22:17:31 ID:20U3HIwQ.net]
つーか新妻落とすRPGでいいじゃん

633 名前:名前は開発中のものです。 mailto:sage [2006/02/24(金) 22:17:52 ID:oHMJlfK9.net BE:743224379- ]
キター!!!



634 名前:新妻好み ◆IQwhCnTrnE [2006/02/24(金) 22:35:41 ID:JVlrc1wP.net]
>>630-631
システム周りは普通のRPGだ。
拘るのは戦闘だ。
環境や仲間のステータスを考慮した戦略を組まなきゃならんようなシステムだな。

あとは、普通にアイテムを手に入れたり、技を習得したり。
まあ最終的には強くなって悪い香具師を倒すわけよ。
だから「魔王を倒してお姫様を助けるRPG」と思ったんだが。


    |                    \
    |  ('A`)           ギシギシ
   / ̄ノ( ヘヘ ̄ ̄        アンアン/


>>632
ワケワカンネ

>>633
きてねぇ

635 名前:名前は開発中のものです。 mailto:sage [2006/02/24(金) 22:38:09 ID:oHMJlfK9.net BE:330321874- ]
>>634
じゃー戦闘システム晒してよ。
世界観の発想もそこから起こそうぜ
魔法の様式からでも世界を想像するきっかけになるもんだ

636 名前:新妻好み ◆IQwhCnTrnE [2006/02/24(金) 22:43:06 ID:JVlrc1wP.net]
>>635
まとめサイトに妄想がうpしてある。
どうせ満足いかねーだろうから後で更新しておく。


    |                    \
    |  ('A`)           ギシギシ
   / ̄ノ( ヘヘ ̄ ̄        アンアン/


ちなみに魔法を入れる予定はねぇ。
技(攻撃系)とアイテムのみだ。

637 名前:名前は開発中のものです。 mailto:sage [2006/02/24(金) 22:47:20 ID:oHMJlfK9.net BE:165160872- ]
こりゃまたエラく画像枚数が必要そうなシステムだね。
絵描きのアテはあるのかい?

638 名前:新妻好み ◆IQwhCnTrnE [2006/02/24(金) 22:55:52 ID:JVlrc1wP.net]
>>637
ないね。
場合によっちゃキャラの画像を使いまわすつもりだ。
描画位置やエフェクトを工夫して。


    |                    \
    |  ('A`)           ギシギシ
   / ̄ノ( ヘヘ ̄ ̄        アンアン/


あーあーあーあーあーあー・・・
ここまでにゲームデザイナーが現れなかったな。
仕方ない、万事休すだ俺が犯る。


◆DDSファイルのお陰で敬遠している絵描き共へ。
  DDSファイルはBMPさえ渡してくれればこっちで作れる。
  「Manual Fashion of Convert to DDS」が使えるからな。
  後で仕様を公開する。仕様って程でもねぇけど。
  まぁ待ってろ。

639 名前:名前は開発中のものです。 mailto:sage [2006/02/24(金) 22:58:05 ID:doymvPQu.net]
>>DDS
DXSDKにフォトショの読み書きプラグインやユーティリティが入ってなかったか?

640 名前:新妻好み ◆IQwhCnTrnE [2006/02/24(金) 23:02:40 ID:JVlrc1wP.net]
>>639
フォトショもってないからシラネ。
見てくる、ちょっと待ってろ。


    |                    \
    |  ('A`)           ギシギシ
   / ̄ノ( ヘヘ ̄ ̄        アンアン/

641 名前:新妻好み ◆IQwhCnTrnE [2006/02/24(金) 23:04:08 ID:JVlrc1wP.net]
>>639
英語ばっかりでワカンネ。


    |                    \
    |  ('A`)           ギシギシ
   / ̄ノ( ヘヘ ̄ ̄        アンアン/

642 名前:名前は開発中のものです。 mailto:sage [2006/02/24(金) 23:06:18 ID:vaTRnv7/.net]
絵師募集しているんですヵ?

643 名前:新妻好み ◆IQwhCnTrnE [2006/02/24(金) 23:07:58 ID:JVlrc1wP.net]
>>642
ああしてる。


    |                    \
    |  ('A`)           ギシギシ
   / ̄ノ( ヘヘ ̄ ̄        アンアン/



644 名前:名前は開発中のものです。 mailto:sage [2006/02/24(金) 23:10:57 ID:vaTRnv7/.net]
どのレベルをお望み?

645 名前:新妻好み ◆IQwhCnTrnE [2006/02/24(金) 23:12:40 ID:JVlrc1wP.net]
>>644
上限は問わないが、俺の糞絵以上。
タイプで言えば鋭い系がいいが、欲は言わん。


    |                    \
    |  ('A`)           ギシギシ
   / ̄ノ( ヘヘ ̄ ̄        アンアン/

646 名前:名前は開発中のものです。 [2006/02/24(金) 23:14:45 ID:N/DUyZu/.net]
戦闘に拘るのはしんどいだろうな。
プログラムより戦闘バランスの方が時間かかりそうだ。

複雑になれば取っ付きにくくもなるしな。

647 名前:名前は開発中のものです。 mailto:sage [2006/02/24(金) 23:15:05 ID:vaTRnv7/.net]
俺の絵ってどれ

648 名前:新妻好み ◆IQwhCnTrnE [2006/02/24(金) 23:20:14 ID:JVlrc1wP.net]
>>646
うんしんどいな。
俺は「ゲーム」つったら真髄は勝つか負けるか、その駆け引きにあると思うんよ。
だからストーリーも重要だし、グラフィックも重要だと思うけど、戦闘にこそ力を入れたい。


    |                    \
    |  ('A`)           ギシギシ
   / ̄ノ( ヘヘ ̄ ̄        アンアン/


>>647
俺の糞絵(マシなほう)
ttp://homepage3.nifty.com/catfood/up/src/up2375.jpg

649 名前:名前は開発中のものです。 mailto:sage [2006/02/24(金) 23:25:02 ID:vaTRnv7/.net]
レベル高いな
諦めとこう。

650 名前:名前は開発中のものです。 mailto:sage [2006/02/24(金) 23:25:36 ID:N/DUyZu/.net]
俺もゲームは駆け引きを楽しみたい派だな。
楽しみしてる、頑張ってくれ。

651 名前:新妻好み ◆IQwhCnTrnE [2006/02/24(金) 23:27:48 ID:JVlrc1wP.net]
>>649
>レベル高いな
嬉しいよ。
>諦めとこう。
悲しいよ。


    |                    \
    |  ('A`)           ギシギシ
   / ̄ノ( ヘヘ ̄ ̄        アンアン/


>>650
オーイエー♪

652 名前:新妻好み ◆IQwhCnTrnE [2006/02/25(土) 00:07:28 ID:JVlrc1wP.net]
>>635
更新は明日の夜になる。


    |                    \
    |  ('A`)           ギシギシ
   / ̄ノ( ヘヘ ̄ ̄        アンアン/


ああ、眠い。とりあえず風呂だ。

653 名前:名前は開発中のものです。 mailto:sage [2006/02/25(土) 00:08:33 ID:rJx0/l3U.net]
毎日よくがんばるね〜。
完走まで長いと思うけど、がんばってください。



654 名前:名前は開発中のものです。 mailto:sage [2006/02/25(土) 00:25:59 ID:T+Y3sQyN.net]
ddsはDirectX SDKの TextureToolでbmpから作れる。
つーかtgaを作る方法がわかんねーw
tgaとddsってどっちがいいんだろか。

655 名前:新妻好み ◆IQwhCnTrnE [2006/02/25(土) 02:08:48 ID:5+8ABeDs.net]
>>653
サンクス。


    |                    \
    |  ('A`)           ギシギシ
   / ̄ノ( ヘヘ ̄ ̄        アンアン/


>>654
tgaは使ったことないからシラネ
tgaってddsみたくわざわざ変換して作るのか?
俺の愛用しているフリーのペイントソフトはtgaで保存できるみたいだが。

ねるぽ

656 名前:名前は開発中のものです。 mailto:sage [2006/02/25(土) 12:12:26 ID:F6qtQ50M.net]
>>654
便乗して質問だけど、アルファ付のA4R4B4G4のテクスチャを
作ろうと思ったら、どうやって作るか知らない?
フルカラーPNGから変換すると劣化して酷いことになってしまう。

657 名前:新妻好み ◆IQwhCnTrnE [2006/02/25(土) 12:45:58 ID:IMwKJpRS.net]
てめぇら移動だ。

RPGを作ろうぜ!
pc8.2ch.net/test/read.cgi/gamedev/1140839113/


    |                    \
    |  ('A`)           ギシギシ
   / ̄ノ( ヘヘ ̄ ̄        アンアン/


658 名前:名前は開発中のものです。 mailto:sage [2006/02/25(土) 23:10:13 ID:dy/EUvOt.net]
>>656
まともなツールで減色しろ。
別のピクセルフォーマットのほうがいいと思うがな。

659 名前:名前は開発中のものです。 mailto:sage [2006/02/26(日) 11:15:51 ID:NeCglQbO.net]
>>658
ありがとう。
でもツールで減色→別ツールでDDSに変換という手順にすると、
減色時にアルファが失われてしまう。
一気にアルファ付フルカラーPNGから、16bitDDSに変換してくれる
ツールがないかなぁ。

660 名前:名前は開発中のものです。 mailto:sage [2006/02/26(日) 11:38:43 ID:tncj1ZkL.net]
>>659
別のピクセルフォーマットにはできないのか?

減色時には、アルファと RGB を別々に減色しろ。
で、アルファは赤画像にして、DDS 変換するときに合成しろ。

661 名前:名前は開発中のものです。 [2006/02/26(日) 18:41:48 ID:ZPA9hZNG.net]
test

662 名前:名前は開発中のものです。 mailto:sage [2006/03/01(水) 13:19:16 ID:wbpYRebn.net]
くだらね
今更個人でショボイ二次元RPG作って飯が食えるわけでもないし

663 名前:名前は開発中のものです。 mailto:sage [2006/03/01(水) 17:05:48 ID:cTHc5rUn.net]
間違いなく662はくだらねー人間だって事は分かった
このスレと飯を食う事に何の関係があるんだ?



664 名前:名前は開発中のものです。 mailto:sage [2006/03/01(水) 17:56:36 ID:T7LigeWy.net]
華麗に見切ってスルー。それが誇り高き武士の末裔である我等が使命。夢々忘れる事勿れ。

665 名前:名前は開発中のものです。 mailto:sage [2006/03/01(水) 20:10:58 ID:qSXqEEUp.net]
>>1があまりに叩かれすぎて、正義の使者に見えて来るという錯覚。

666 名前:名前は開発中のものです。 mailto:sage [2006/03/01(水) 21:20:44 ID:qSXqEEUp.net]
嗚呼スレ間違えた悪寒。

667 名前:名前は開発中のものです。 mailto:sage [2006/03/02(木) 15:43:09 ID:/MJGriJx.net]
>>664
>高き武士の末裔

誰がだ誰がww

668 名前:名前は開発中のものです。 mailto:sage [2006/03/05(日) 11:07:36 ID:6YkaEnqD.net]
(・∀・) ハイーキョ

669 名前:名前は開発中のものです。 mailto:sage [2006/03/06(月) 09:02:48 ID:6CYFfwHu.net]
おにぃタンが、おにぃタンがきっとなんとかしてくれる・・

670 名前:名前は開発中のものです。 mailto:sage [2006/03/07(火) 04:32:03 ID:cLZjYS/r.net]
すたれたな

671 名前:名前は開発中のものです。 mailto:age [2006/03/08(水) 22:46:15 ID:S71q6Va9.net]
おにぃタソの「ちょっと」は、どれぐらいなのでしょうか・・・。

672 名前:名前は開発中のものです。 mailto:sage [2006/03/08(水) 23:08:48 ID:oR9bkqy4.net]
亀仙人級。

673 名前:名前は開発中のものです。 mailto:sage [2006/03/09(木) 20:39:04 ID:d4bY0DQQ.net]
そろそろ新キャラが登場しそうな悪寒。



674 名前:名前は開発中のものです。 mailto:sage [2006/03/09(木) 20:51:07 ID:x6AO3fB7.net]
来るか!?

675 名前:名前は開発中のものです。 mailto:sage [2006/03/22(水) 01:26:22 ID:Lx7sTZUU.net]
鬼ってどうなった??

676 名前:名前は開発中のものです。 mailto:sage [2006/03/22(水) 02:04:30 ID:G9AZUAcV.net]
>>675
>>384

677 名前:名前は開発中のものです。 mailto:sage [2006/04/03(月) 00:57:05 ID:tvaCUklG.net]
C++で、リスト構造とクラスを使ってキュー構造が作れたぜぇー
いや、かろうじてメンバ関数やコンストラクタを使ってる程度なので
きちんとオブジェクト指向ができる人からしてみれば突っ込みどころ満載なコードなんだろうけど・・・

キューの機能やコードが一つにまとまっていて
今後はこのクラス一つで簡単にキューが作れるかと思うと意味もなくワクワクする。
オブジェクト指向が有り難がられる訳がちょっぴり判った。

あまりの感動にチラシの裏にしてしまった
ゴメン

678 名前:名前は開発中のものです。 mailto:sage [2006/04/03(月) 02:00:49 ID:LDN8zLo6.net]
>>677
STLにあるだろ?

679 名前:名前は開発中のものです。 mailto:sage [2006/04/03(月) 08:42:09 ID:CKBeZKS6.net]
>>678
STLは、出来の良いマニュアルがなかなか見つからないんだよ

680 名前:名前は開発中のものです。 mailto:sage [2006/04/03(月) 09:11:29 ID:T6kZ1H14.net]
双方向リストは自作できるとちょっと感動するよね

681 名前:名前は開発中のものです。 mailto:sage [2006/04/03(月) 09:40:48 ID:g7abFtvJ.net]
>>677
あるあるwww

682 名前:名前は開発中のものです。 mailto:sage [2006/04/09(日) 21:24:14 ID:Lt7EoIG5.net]
>>677
そういうのを車輪の最発明というのだが

683 名前:名前は開発中のものです。 mailto:sage [2006/04/09(日) 22:45:09 ID:1V2X1UAY.net]
682の前ではhello world!もおちおち作れやしない



684 名前:名前は開発中のものです。 mailto:sage [2006/04/09(日) 22:49:53 ID:3HyFIhhb.net]
車輪の再発明が楽しいんじゃないの!
プロだったらそんな暇ないだろーけどさ

685 名前:名前は開発中のものです。 mailto:sage [2006/04/09(日) 22:50:02 ID:be1tglRI.net]
春夫ワールド!にしておけば無問題。

686 名前:名前は開発中のものです。 mailto:sage [2006/04/09(日) 22:51:14 ID:MXsEBMtL.net]
hello world!をわざわざ実装するなんて車輪の再発明の極みだろ。
www.gnu.org/software/hello/hello.html

687 名前:名前は開発中のものです。 mailto:sage [2006/04/09(日) 22:57:24 ID:ycPVA4Cd.net]
むちゃくちゃ凝った Hallo World !! を作れば良いんじゃね?
それこそメガデモみたいなヤツを作れば、あるいは・・・

688 名前:名前は開発中のものです。 mailto:sage [2006/04/09(日) 23:02:46 ID:be1tglRI.net]
車輪の再発明云々言って何もしないより、
車輪の再発明をしたほうが100倍マシ。
車輪の再発明の利点は基礎PG力を養えると同時に、
車輪の再発明という比較的少ないコストで、
次の段階に進める点だ。

 決して、いきなりターボ・ファン・ジェットエンジンを発明しようとしてはいけない。

ネタにマジレス格好良すぎ>>688


689 名前:名前は開発中のものです。 mailto:sage [2006/04/10(月) 03:57:42 ID:lfYd5Zi2.net]
Hello World Online

690 名前:名前は開発中のものです。 mailto:sage [2006/04/10(月) 09:53:19 ID:AHBnGV60.net]
Hello World .NET

691 名前:名前は開発中のものです。 mailto:sage [2006/04/11(火) 13:41:43 ID:PstvrHnB.net]
極小規模の車輪の再発明ならしたほうが実装が楽な場合が多い。
OOPで全て再利用できるなんてのは妄想。鼻で笑っちゃうね。


692 名前:名前は開発中のものです。 mailto:sage [2006/04/12(水) 06:54:43 ID:9QUP8TDy.net]
>>691
急にこんなさびれたスレでどうしたんだ。
なんか嫌な事でもあったのか。

693 名前:名前は開発中のものです。 mailto:sage [2006/04/12(水) 15:22:40 ID:f7IjJuzw.net]
流れの読めない奴が来たか



694 名前:名前は開発中のものです。 mailto:sage [2006/04/13(木) 00:52:17 ID:rwJMefBv.net]
CでSTLのlistとdequeを作った。
ちゃんとテンプレートになってて要素の型は何でもよい奴。
CでOOは楽しい。

695 名前:名前は開発中のものです。 mailto:sage [2006/04/13(木) 08:55:19 ID:dZeLRBkL.net]
C++ではなくCで、って所が味噌だな
C++の方が実装は楽だから


696 名前:名前は開発中のものです。 mailto:sage [2006/04/13(木) 22:40:54 ID:FJcZQR8t.net]
既存のものと同じものを作るのは無駄といえば無駄だが、
手を動かす無駄は身になる無駄だからなぁ。

697 名前:名前は開発中のものです。 mailto:sage [2006/04/13(木) 22:43:39 ID:9aE152aa.net]
車輪発明しないで、いきなりグレートなモノを作れると思ってる奴なんているの?

698 名前:名前は開発中のものです。 mailto:sage [2006/04/13(木) 23:39:35 ID:Ouapx6Vq.net]
>>696
>手を動かす無駄は身になる無駄だからなぁ。
それは無駄とは言わないのでは?

699 名前:名前は開発中のものです。 mailto:sage [2006/04/14(金) 20:45:32 ID:gD0XdipS.net]
アヤちゃんですよアヤちゃん

700 名前:1/2 mailto:sage [2006/04/29(土) 21:45:04 ID:qFFRsKPk.net]
class player
{
 private:
  char name[32];
 public:
  int inputName( char* );
  char* outputName();
  // 実装は省略
};

class gameInitialization
{
 public:
  char* setPlayerName();
};

char* gameInitialization::setPlayerName()
{
 char buff[32];
 printf( "名前を入力してください" );
 gets( buff );
 return &buff[0];
}

// ゲーム本体での処理
p_player->input( p_gameInitialization->setPlayerName );


701 名前:2/2 [2006/04/29(土) 21:55:01 ID:qFFRsKPk.net]
C++の練習としてRPGを作ってみようと思っていまして
こんな感じのコードを書いてみました。

プレーヤークラスにはゲーム本編で色々処理を組み込むことになるだろうから、
一度しか使わない初期化処理はできるだけ外に追い出したいと思い
最低限、変数名の入出力をするメソッドだけを残しました。
そして、「名前を入力してください」の表示など一度しか行わない処理は
ゲーム初期化クラスを作ってそこに入れてみました。

自分としては、ポーカーの親のようなプレーヤーを超越した存在を想定して
ゲーム初期化クラスというのを作ってみたのですが、いざ書きあがってみると
本当にこのクラスが必要だったのだろうか、別に本当に親がいる訳じゃないのだから
main関数に直接
> printf( "名前を入力してください" );
> gets( buff );
なんかを転がしても良かったんじゃないかとも思えてきました。


要するにクラス化する方がよいのかどうかですが
どう思われますか?

702 名前:名前は開発中のものです。 mailto:sage [2006/04/29(土) 22:11:48 ID:BSsZtvjj.net]
ゲーム製作のためのクラスか、
クラスのためのゲーム製作か、それが問題だ。

703 名前:名前は開発中のものです。 mailto:sage [2006/04/30(日) 06:24:46 ID:az6nWba+.net]
>>701
個人的な意見になるけど
ゲーム全体を管理する「親クラス」と初期化クラスは別物だと思う。
親クラスはゲーム中常に実体を持つけど、初期化クラスは初期化中にしか
実体を持たないような印象がある。

ところで
> return &buff[0];
これはまずいのでは?buffは関数内でしか保持されない確保のされ方を
してるから戻り値では返せない。



704 名前:御津凪 mailto:sage [2006/04/30(日) 10:23:49 ID:r4UIi4mb.net]
はじめまして。

個人的事情により、ネットにつながっている時間がほとんどと言っていいほど無いので、
ほとんど書き込めませんが、よろしくおねがい。

さて、
私が作った発展途上のRPG・SRPG総合制作ツールをうpしました。

gamdev.org/up/img/5482.zip

これを話のネタにしたり制作に使ったり参考にしたりしてください。
あと、特徴ですが、

・RPG・SRPG・ADV等制作可能。主にRPGの制作に特化している(と思う)。
・一つのソフトでスクリプトとマップエディタとプレビューが可能(になると思う)。
・特別必要なDLL無し。必要なライブラリは Boost のみ。

Boost は、ググるか、うpしたファイル内のReadMeの中にあるURLから手に入れられる。

では。


705 名前:名前は開発中のものです。 mailto:sage [2006/04/30(日) 15:56:52 ID:Rmcj9mo1.net]
>>704
>現在、起動時ロゴ画面・メイン画面・新規作成画面しかありません。

これでいったい何を議論しろと?


706 名前:名前は開発中のものです。 mailto:sage [2006/04/30(日) 16:00:04 ID:4wrj94cG.net]
>私が作った発展途上…
>…(と思う)。
>…(になると思う)。

お察しください。

707 名前:名前は開発中のものです。 mailto:sage [2006/04/30(日) 16:13:30 ID:gjG8Ha5v.net]
開発状況報告スレの方がよくね?

708 名前:名前は開発中のものです。 [2006/05/04(木) 21:07:51 ID:4iqaj+kF.net]
質問です。

Item クラス
┣ Kougekiクラス
┗ Kaihuku クラス
  ┣ Yakuso クラス
  ┗ Poshon クラス

こんな感じで、アイテムクラスを基底に、効能別、名前別のクラスを作り
ゲーム内では Item* 型ポインタを使ってアイテムを一括管理しようと一度計画しました。

しかし、実際に拾えるアイテム( Yakusoオブジェクト等 )をランダムに生成しようとすると
クラスの外に switch( rand()%2 ){ case 0 : item = .... のようにずらずら書くしかなくなってしまいました。
最初は、 Item クラス自体に、ランダムでアイテムの種類を決定するメソッド(というかコンストラクタ)を
持たせたかったのですが、よく考えてみると子クラスを触らせることができないので手詰まりしました。


クラスの数をもっと減らして、アイテム名や効果(回復量など)を引数で渡すことで
オブジェクトの種類を稼いだ方がいいのだろうかとか(今は1クラス1アイテムだから)、
多少トリッキーなコードを書いてでも Item クラスにランダム生成メソッドを持たせられないかとか
色々考えているのですが、
ランダムに発生するアイテムを管理するクラスについて、何か定番みたいなものはないでしょうか

709 名前:名前は開発中のものです。 mailto:sage [2006/05/04(木) 21:19:36 ID:5IsqMDd3.net]
static Item Item::CreateItem(int id)
{
case 0:...
}
みたいにやれば?

710 名前:名前は開発中のものです。 mailto:sage [2006/05/04(木) 21:43:38 ID:MIihhrBb.net]
アイテムを生成するクラスを使う。

その中で、switch〜caseの羅列になっても、外部からは
隠すことが出来るので、トリッキーなコードを書くより
ずっといい。


711 名前:名前は開発中のものです。 mailto:sage [2006/05/05(金) 04:52:08 ID:kC2BXK6h.net]
case分の羅列でもいいけど、それよりはメソッドへのポインタでテーブルを作成しる。

712 名前:名前は開発中のものです。 mailto:sage [2006/05/05(金) 09:52:19 ID:/fNbso43.net]
pc8.2ch.net/test/read.cgi/tech/1133286541/
次スレはここと合併すべきじゃない?

713 名前:名前は開発中のものです。 mailto:sage [2006/05/05(金) 10:24:09 ID:1M0+6Jiy.net]
埋まったら合流で良し



714 名前:名前は開発中のものです。 mailto:sage [2006/05/05(金) 12:18:33 ID:yx9WHGs4.net]
でも、あっちは板が違うしな。
さらに言えば、昔はあっちの方がこっちに行くように言われてたわけだし・・・。


715 名前:名前は開発中のものです。 mailto:sage [2006/05/05(金) 21:43:00 ID:LicKzfcD.net]
>>711
ねぇねぇ、それってさ何か親クラスを作ってそのポインタに子クラスの参照先を入れて行くのと同じですか?


716 名前:名前は開発中のものです。 [2006/05/27(土) 23:42:11 ID:TAx3htqU.net]
がんばれ俺!今日明日で戦闘を作るんだ!
ここが踏ん張りどころだ!完成するぞ!完成するぞ!

717 名前:名前は開発中のものです。 mailto:sage [2006/05/28(日) 00:00:25 ID:SbFom2eu.net]
C++でっていうけど、ウインドウズで動作させようと思ったら
APIの勉強もいるんだよね?orz

718 名前:名前は開発中のものです。 [2006/05/28(日) 00:40:31 ID:lcSvizP1.net]
>>716 がんばれ、超がんばれ、世界がおまえを待ってるぞ!

719 名前:名前は開発中のものです。 mailto:sage [2006/05/29(月) 15:15:30 ID:eI7Wuh/Q.net]
>>717超いるよ

720 名前:名前は開発中のものです。 [2006/05/29(月) 19:45:46 ID:qsL/g3xF.net]
さて、716の見苦しい言い訳を聞こうか

721 名前:名前は開発中のものです。 mailto:sage [2006/05/29(月) 21:13:55 ID:zEiBbzn5.net]
二日っていうと五時間ずつやったとしても10時間だよね。
10時間で完成可能なことだったの?

722 名前:名前は開発中のものです。 mailto:sage [2006/05/29(月) 21:51:20 ID:mBWO4XJP.net]
で、まずは>>720-721よ。
この板に何しに来たのか説明してもらおうか。

723 名前:716 mailto:sage [2006/05/30(火) 14:31:56 ID:kpb46nhc.net]
(^^;
完成できなかったけど、だいぶ進んだ
摂のRPGはドラクエ3みたいな単純なシステムではなかったことが敗因



724 名前:名前は開発中のものです。 mailto:sage [2006/05/30(火) 18:30:24 ID:/JTGRSEu.net]
単純・・・だとぉ!

725 名前:名前は開発中のものです。 mailto:sage [2006/05/30(火) 18:35:27 ID:A1fjl0vL.net]
システムを単純化させるのがプログラマの腕

726 名前:名前は開発中のものです。 mailto:sage [2006/05/30(火) 18:40:33 ID:XHx1vsq2.net]
やっぱ沢山RPGやったほうがいい?
FFとDQの典型しかした事無いけど

727 名前:名前は開発中のものです。 mailto:sage [2006/05/30(火) 19:40:27 ID:hZJKdy+m.net]
>>726
どうせ最後はDQに集約されるんだから気にするな。
ただ、新しい(と思える)システムを作って『俺SUGEEE』ってやると、
後で絶対泣くことになる。ゲーム業界はすでに20年歩んでるんだからな。

728 名前:名前は開発中のものです。 mailto:sage [2006/05/30(火) 19:44:19 ID:XHx1vsq2.net]
>>727
流石にもう出尽くしたのかな
あんまり新しいの作ろうとすると今度はRPGでなくなるかもね・・・
最初はDQみたいなの作るよ

729 名前:名前は開発中のものです。 mailto:sage [2006/05/30(火) 20:06:53 ID:hZJKdy+m.net]
>>728
ああ、でもWizardryをやったことがないならやっておくのがいいよ。
和製RPGの原点だから。

730 名前:名前は開発中のものです。 mailto:sage [2006/05/30(火) 20:18:52 ID:PgwMBF7v.net]
wizって洋ゲーじゃなかったっけ
ワードナは逆読みすると開発者の名前になるとか聞いたことあるんだが

731 名前:名前は開発中のものです。 mailto:sage [2006/05/30(火) 20:20:15 ID:hZJKdy+m.net]
>>730
トレボーもワードナも開発者の名前をひっくり返したやつだな。
WizardryとUltimaはどちらも洋ゲーだけど、それを組み合わせたのがDQ
特に戦闘関係はWizardryから引っ張ってきてる。

732 名前:716 mailto:sage [2006/05/30(火) 21:00:58 ID:kpb46nhc.net]
摂のはアクションRPGだった(^^;
グラフィックは8方向分用意(^^;
グラフィックだけで死にそう(^^;;

733 名前:名前は開発中のものです。 mailto:sage [2006/05/30(火) 21:41:22 ID:uSUZilj0.net]
>>732
とりあえず、ドラクエ(の簡易版)から始めた方がよさそう。

あの系統のゲームは、マップ処理やイベントシステムなんかの基礎を
実際に作ってみるのに好都合で、プログラムの難易度も低い。




734 名前:名前は開発中のものです。 mailto:sage [2006/05/30(火) 22:09:25 ID:RATgowud.net]
ちょっとまてw
作り始めるまで戦闘がアクションなのかDQ風なのか判別できなかったのか?www

735 名前:名前は開発中のものです。 mailto:sage [2006/05/31(水) 18:37:35 ID:kqnlPuDw.net]
いやそれは、アクションもDQ並に単純にできると思ったいたんじゃまいか。
DQを単純といえるほどの腕があるのかは知らないが。


736 名前:名前は開発中のものです。 mailto:sage [2006/05/31(水) 18:41:52 ID:dXTIpZ6p.net]
ARPG作ってますが
当たり判定を人型にするにはどうしたらいいですか?

737 名前:名前は開発中のものです。 mailto:sage [2006/05/31(水) 19:13:27 ID:fUZxD/GV.net]
厳密にやりたいならキャラクタ同士のテクセルが重なっているかどうかを一ドットずつ調べる
大雑把にやりたいなら頭、胴体、足、手それぞれの当たり判定を矩形や円で作る
もっと大雑把にやるなら胴体だけ矩形で作ればいい

738 名前:名前は開発中のものです。 mailto:sage [2006/05/31(水) 19:17:20 ID:dXTIpZ6p.net]
1ドットずつやろうとしたら泣きたくなるほど膨大になりそうでした・・・

>頭、胴体、足、手それぞれの当たり判定を矩形や円で作る
これ参考に組みます!

739 名前:名前は開発中のものです。 mailto:sage [2006/05/31(水) 20:53:14 ID:OyxnCHMf.net]
まあ、厳密に当たり判定とる労力を他の調整に回した方が
最終的には面白いゲームができるからなぁ。

プレイヤーは見た目が不自然じゃなければ、そこまで
厳密な部分は見ない。見るのは解析マニアが弾幕シューターだ。

740 名前:名前は開発中のものです。 mailto:sage [2006/05/31(水) 21:37:10 ID:fvp1fd0u.net]
アクションRPGは単純な紙芝居RPGとは違うパフォーマンス上の配慮が必要で大変ですね(^^;
冗長なことやってるとパフォーマンスガタ落ちで手抜きができません(^^;;
普通のRPGでは通っていたことが通らなくなりました(^^;;;


741 名前:名前は開発中のものです。 mailto:sage [2006/05/31(水) 23:54:17 ID:VkKcen7a.net]
たぶん>>736のARPGは8頭身モナーみたいのが入り乱れるんだろうな・・・

742 名前:名前は開発中のものです。 mailto:sage [2006/06/01(木) 01:26:31 ID:1wKUdWEf.net]
たぶん>>716は釣り師なんだろうなぁ

743 名前:名前は開発中のものです。 mailto:sage [2006/06/17(土) 01:55:24 ID:gghwP/lw.net]
>>716
参考にドウゾ。ただコードの構造化が糞だから気をつけたほうがいい。
ttp://www.geocities.jp/amazonium011001/page1.htm



744 名前:716 mailto:sage [2006/06/17(土) 12:45:56 ID:A7FmLv2E.net]
ありがとうございます・・・ってどれが参考になりますか?
forループをウェイトに使っているのには思わず吹いてしまいました(><)

アクションRPGできてきました(><)
PDAと互換性保つため自前DIB描画の拡縮やアルファブレンドなので激重です(><)
誰か下のやつ最適化してください(><)

途中で宣言なしに出現する変数は事前に計算されていて、意味は以下のようになっております。
unsigned char alpha・・・アルファ値。
float mag_x、 mag_y・・・X、Y軸の拡大幅
unsinged char* dest_buffer 、 src_buffer・・・転送先,転送元イメージのバッファ。
int dest_offset・・・転送先データのオフセット。
int src_offset・・転送元データのオフセット。
int max_x ,max_y ・・・ 書き込みする範囲の最大バイト数
int bufW、srcW・・・転送先、転送元画像の幅。

unsigned char t = 255-alpha ;
for(int i=0;i<max_w;i+=3)
{
for(int j = 0;j<max_y;j+=3)
{
base_dest = dest_offset + i + j * bufW;
base_src = src_offset + ((int)((i / 3) / mag_x) + (srcW * (int)((j/3) /mag_y )))*3 ;

dest_buffer[base_dest] = (( t * dest_buffer[base_dest] ) >> 8) + (( alpha * src_buffer[base_src] ) >> 8 );
dest_buffer[base_dest+1] = (( t *dest_buffer[base_dest+1] ) >> 8) + (( aplhal * src_buffer[base_src+1] ) >> 8 );
dest_buffer[base_dest+2] = (( t * dest_buffer[base_dest+2] ) >> 8) + (( alpha * src_buffer[base_src+2] ) >> 8 );
}
}

誤字脱字があるかもしれません(><)

745 名前:名前は開発中のものです。 [2006/06/17(土) 13:11:36 ID:MX8Yl6AK.net]
>>716
ループの中心で割り算などは極力控えるべき
ブレゼンハム使おう。
というかなぜ自前?

746 名前:名前は開発中のものです。 mailto:sage [2006/06/17(土) 13:12:23 ID:MX8Yl6AK.net]
PDAと互換性ってかいてあるな、すまん

747 名前:名前は開発中のものです。 mailto:sage [2006/06/18(日) 00:38:44 ID:kJEJ2x/f.net]
ブレセンハムが応用できるなんて知りませんでした(><)
改良してみます(^^)

748 名前:名前は開発中のものです。 [2006/06/18(日) 03:00:50 ID:DrGgvxn8.net]
>>744
それダウンロードしたの?俺も同じところで吹いたw
参考になりそうなのはvisiRPGとNew CUIRPGってやつだけだよ。

749 名前:名前は開発中のものです。 [2006/06/18(日) 09:52:01 ID:kWRvX99Z.net]
おいおい、初心者をミスリードするな。
visiRPGとNew CUIRPGも参考にならないだろう。
反面教師ならまだしも、作者の良識を疑う。


750 名前:名前は開発中のものです。 [2006/06/20(火) 05:44:49 ID:yRy3miB7.net]
鬼はどうなったん?

751 名前:名前は開発中のものです。 mailto:sage [2006/06/20(火) 11:04:29 ID:annU3c5h.net]
ステフが捨てました。

752 名前:名前は開発中のものです。 mailto:sage [2006/06/21(水) 17:03:09 ID:b0spWjUO.net]
>>749の作るゲームに期待

753 名前:名前は開発中のものです。 mailto:sage [2006/06/21(水) 18:05:51 ID:HFz2n3fa.net]
pc8.2ch.net/test/read.cgi/tech/1133286541/793-794



754 名前:名前は開発中のものです。 [2006/06/21(水) 18:07:40 ID:HFz2n3fa.net]
ヘッダに実装を書かない方法を知らないんジャマイカ

755 名前:名前は開発中のものです。 [2006/06/22(木) 19:56:56 ID:UpYDoT5s.net]
俺たちでドラクエ作ろうぜ
game10.2ch.net/test/read.cgi/ff/1149874021/

スタッフ募集!
シナリオ班・ツクール班・音楽班・ドット絵班


756 名前:名前は開発中のものです。 mailto:sage [2006/06/25(日) 17:33:37 ID:cfrlOTij.net]
ドラゴンクエストノスタルジア
とか創ったら略語がDQNにw

757 名前:名前は開発中のものです。 [2006/08/01(火) 04:11:10 ID:lqTlZ2D0.net]
きっと鬼ぃは喉を餅に詰まらせて診断だ

758 名前:名前は開発中のものです。 mailto:sage [2006/08/01(火) 16:04:04 ID:dyzvPv2P.net]
ですよねー

759 名前:名前は開発中のものです。 mailto:sage [2006/08/04(金) 18:42:33 ID:W6nuuaJ8.net]
うんうん ^^

760 名前:名前は開発中のものです。 [2006/10/14(土) 17:56:19 ID:TyTVrLwQ.net]
ワロタ

761 名前:名前は開発中のものです。 mailto:sage [2006/10/26(木) 21:13:09 ID:ssyUOzfl.net]
C++でRPGシステムを作ろうと思っています。
汎用性重視で描画処理はすべてフレームバッファ(Win32ではDIBとして表示。LinuxとかMacは知らんw)。
フォントも安心して使える固定サイズのフリーフォント内蔵で画面イメージも統一できます。
シナリオエディタも搭載、ツクール感覚でオリジナルのRPGを作ることが可能。







設計書書くんで、誰かプログラミングしてください。


762 名前:名前は開発中のものです。 mailto:sage [2006/10/26(木) 23:08:33 ID:5Uv1F1QJ.net]
クラス設計は人の書いたの見てみたいなあ

763 名前:名前は開発中のものです。 mailto:sage [2006/10/27(金) 15:19:29 ID:PMSzIrz+.net]
>>761
それは津クールXPやDxLib・SDLと何が違うんだ?
もし、おもしろそうなら、合間合間にcodingはしてもいいが。



764 名前:名前は開発中のものです。 mailto:sage [2007/01/28(日) 23:04:23 ID:LYBCO2KL.net]
自分のスキルあげるならどういうゲーム作ったら良いのさ

765 名前:名前は開発中のものです。 mailto:sage [2007/01/30(火) 11:53:29 ID:C4TtFAJ1.net]
一定の経験値でスキルあがるようにするとか。
……と微妙にボケてみる。

766 名前:名前は開発中のものです。 mailto:sage [2007/04/12(木) 17:49:52 ID:ZybyQoX6.net]
>>764
今のレベルによるが、
ある程度も組めないようなら、本買ってきてそれに載ってるコードを読めるようになるとか
AngBandなどオープンソースの奴を頑張って読む。
その後は、何か2週間で作れるゲームを自力で作る(設計も自分でする)。

ここまで、できれば、あとはだいたいどんなRPGでも時間や物理的障害を除いて出来るようになると思うよ。


767 名前:名前は開発中のものです。 [2007/04/12(木) 17:50:34 ID:bCgTq/qC.net]
盛りage

768 名前:名前は開発中のものです。 mailto:sage [2007/04/12(木) 18:43:46 ID:MaYb13RL.net]
>>764
作りたいゲーム作れば?

769 名前:名前は開発中のものです。 mailto:sage [2007/11/21(水) 16:03:51 ID:74vDcPF7.net]
>>764
ピアノと一緒で、練習曲を色々やるべき。
大曲を練習してもうまくならない。

770 名前:名前は開発中のものです。 mailto:sage [2007/11/26(月) 14:03:23 ID:uhzP5Hxh.net]
ドミノ10万個を見ても圧倒されない精神力

771 名前:名前は開発中のものです。 mailto:sage [2008/04/25(金) 07:51:24 ID:CbC63WhO.net]


772 名前:名前は開発中のものです。 mailto:sage [2008/06/04(水) 20:15:51 ID:xVETCOHb.net]
新しい gamedeve一応かきかき
TopPage - game-develop.com wiki
wiki.game-develop.com/

GameDevWikiを何とかするスレ
pc11.2ch.net/test/read.cgi/gamedev/1156117275/

773 名前:名前は開発中のものです。 [2008/10/04(土) 03:04:33 ID:6CC7noIJ.net]
world




774 名前:名前は開発中のものです。 mailto:sage [2008/11/10(月) 13:58:56 ID:CM/VVTpv.net]
めんどいから紙芝居から練習するよ

775 名前:名前は開発中のものです。 [2009/03/04(水) 08:57:47 ID:BIR8YGwO.net]
RPGを作る前にミニゲームなどを作れるようにしたほうがいいよ。
ミニゲームで作った技術はRPGで応用できると思う
いきなり、 大作を作ろうとしても無理

776 名前:名前は開発中のものです。 mailto:sage [2009/03/04(水) 09:02:17 ID:WGe6HWau.net]
その通りではあるが
こんな過疎スレで言わんでも

777 名前:名前は開発中のものです。 mailto:sage [2009/04/08(水) 14:56:30 ID:3KQiReEr.net]
過疎ってるなー。


778 名前:名前は開発中のものです。 mailto:sage [2009/07/02(木) 02:09:35 ID:TZX2GARh.net]
とりあえず完成形が何かというを考え直した方がいいとレナは思うの

779 名前:名前は開発中のものです。 [2010/08/04(水) 16:06:44 ID:uZVXPzys.net]
>>107 のサイトにあったマップエディタって誰か持ってない?

うっかり消してしまったから誰かうp頼む

780 名前:名前は開発中のものです。 [2010/09/13(月) 20:52:54 ID:M+I9V0GA.net]
旧態依然としたコマンド&ターン戦闘が激しくつまらないと思う今日この頃


781 名前:名前は開発中のものです。 [2010/10/14(木) 12:24:18 ID:/y1Wbqlm.net]
JavaScriptでも作れそう?

ttp://www.programmingmat.jp/game_dev/webgame_dev/mapevt.html


782 名前:名前は開発中のものです。 mailto:sage [2010/10/23(土) 15:44:45 ID:A2QO4U5x.net]
>>781
HTML5の威力はこっちのが判りやすいよ
www.publickey1.jp/blog/10/html5javascriptakihabaraiphoneandroid.html

783 名前:名前は開発中のものです。 mailto:sage [2011/01/21(金) 23:01:50 ID:MHt2IGM0.net]
その通りではあるが
こんな過疎スレで言わんでも



784 名前:名前は開発中のものです。 [2011/03/09(水) 22:15:31.71 ID:hobFeZxC.net]
このスレもらっていいかな?

C++とDirectXでRPGを作りたいんだが
誰か一から作り方を教えてくれる奇特な人はいる?

785 名前:名前は開発中のものです。 mailto:sage [2011/03/09(水) 23:09:17.54 ID:gadIXpQZ.net]
>>784
一緒に考えるくらいでよければ協力しますよ。

786 名前:名前は開発中のものです。 mailto:sage [2011/03/09(水) 23:38:44.90 ID:hobFeZxC.net]
>>785
おお、ありがたいです

とりあえずDirectXの知識とか皆無なので
ドラクエ1-4程度の2DRPGを作ってみようと思う
ゲーム性とか関係なく、コンパクトな物を完成させることを目標に

787 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 00:15:24.30 ID:zj8b7q7C.net]
>>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;
}

788 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 00:23:55.03 ID:zj8b7q7C.net]
(787続き)
いろんなアプローチがあるかと思うのでいろんな意見を参考にされるとよいと思います。
わたしはまずはprintfから作るオールドタイプです。

あと、DirectXはver9しか知らないです。
VisualC++は使ったことないのでまったくわからないです。


789 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 00:26:00.17 ID:LV/Xv7hB.net]
>>787
はい、試しました

790 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 00:29:26.99 ID:LV/Xv7hB.net]
>>788
DirectXは9.0cで作ろうと思っているので、ちょうど良いです

自分はもっとオールドタイプですね
MSXの頃にプログラムしてたので、Windows環境はさっぱりです
まあVC++が吐き出すWin32APIの雛形くらいは理解できますが

791 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 00:36:07.62 ID:zj8b7q7C.net]
次はとりあえずWindowを作成してしまいましょう。
WINDOWクラスに下記のメンバーを追加してください。

private:
HWND handle;
MSG message;
bool sync;

struct {
unsigned int X,Y,W,H;
unsigned int x,y,w,h;
} screen;

変数名とか関数名は自分のポリシーにあわせて変更してください。

792 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 00:49:20.74 ID:zj8b7q7C.net]
メンバー関数を作成します。
public:
bool open( void );

ゲームの名称が決まっているならプロジェクト名をつけておくと愛着が湧きますよ。

#ifndef PROJECT
#define PROJECT "お好きな名前"
#endif

そろそろファイルを.hと.cppに分割したほうがよいかも知れません。

793 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 00:51:12.61 ID:zj8b7q7C.net]

bool 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 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 00:52:43.01 ID:LV/Xv7hB.net]
>>791-792
できました

ちなみにどんな環境でコンパイルしてるんですか?
自分はVisual C++ Express 2010でやってます

795 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 00:55:08.70 ID:zj8b7q7C.net]
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という関数がないよ"でエラーになります。

796 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 00:57:21.06 ID:LV/Xv7hB.net]
>>795
そこまで出来ました

ProcとSCREEN_WとSCREEN_Hが定義されていないので
エラーになりますね

797 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 00:59:49.27 ID:n38lezle.net]
windows.hのインクルード前に
#define WIN32_LEAN_AND_MEAN
を入れておくとコンパイルが早くなったりとか
_WIN32_WINNTを定義しておかないと勝手にVistaとか7専用にされたりとか

798 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 01:00:15.45 ID:zj8b7q7C.net]
>>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 );
}



799 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 01:04:37.18 ID:zj8b7q7C.net]
>>796
スクリーン用の定数定義を忘れていました。
WINDOWクラスに下記の定義を追加してください。

private:
enum {
SCREEN_W = 800,
SCREEN_H = 600,
};

数値はお好みで変更ください。
ファイルや環境変数で外部から取り込む方法もあるかと思いますが、
面倒くさいんでやってないです。最後の方で対応すればよいかと。

800 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 01:14:43.71 ID:LV/Xv7hB.net]
>>798-799
できました
LRESULT CALLBACK WINDOW::Proc〜の行で
同じパラメーターの型で静的な、または動的なメンバー関数をオーバーロードできません。
とのエラー


801 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 01:21:28.74 ID:zj8b7q7C.net]
>>800
すいません原因よくわからないです。
ProcをWINDOWクラスのメンバーから外して、単なる外部関数にしてみてください。


802 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 01:25:17.77 ID:LV/Xv7hB.net]
>>801
できました

803 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 01:30:45.13 ID:zj8b7q7C.net]
>>802
そうですか。。。コンパイラの差異かも知れないです。
先々、この手の差異でどうにもわからない場合は、
申し訳ないですが自己解決か他に助言を求めてください。

下記の2つのメンバー関数を追加してください。

private:
bool peek( void ); //ウィンドウのメッセージを処理します
bool sync( void ); //タイマーの同期を取ります




804 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 01:36:52.24 ID:LV/Xv7hB.net]
>>803
syncが再定義でエラーになりますね
以前にbool変数として定義されていますが

805 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 01:39:12.81 ID:zj8b7q7C.net]
最終的に作成した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; }

とりあえず空関数を適当に作成しておきます。

806 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 01:41:06.36 ID:zj8b7q7C.net]
>>804
あまり自分の色が出ないように自分のソースからそのまま名前を持ってこないようにしています。
すいませんが適宜お好みの命名規則で回避してください。

807 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 01:47:57.19 ID:zj8b7q7C.net]
(806続き)
混乱するので、以降はそのまま持ってくるようにします。
sync変数と関数は下記になります。

private:
bool sync;

public:
bool Sync( void ) const { return sync; }


808 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 01:51:46.72 ID:LV/Xv7hB.net]
>>807
そこまでできました

peekもpublicになりますか?
今のままだと静的関数なんでアクセスできないですけど

809 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 01:53:56.05 ID:zj8b7q7C.net]
Peek関数の中でタイマーを処理しているので、WINDOWクラスに下記のメンバーを追加してください。

struct {
unsigned int old;
unsigned int now;
} time;

コンストラクターで初期化します。

WINDOW::WINDOW() {
timeBeginPeriod( 1 );
time.old = timeGetTime();
}

で、デストラクターで後始末します。

WINDOW::~WINDOW(){
timeEndPeriod( 1 );
}


810 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 07:13:10.95 ID:zj8b7q7C.net]
>>808
Peekはpublicです。privateは間違いでした。
あと静的(static)ではないです。

811 名前:名前は開発中のものです。 mailto:sage [2011/03/10(木) 22:22:49.60 ID:zj8b7q7C.net]
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;
}


812 名前:名前は開発中のものです。 mailto:sage [2011/03/11(金) 00:55:58.78 ID:jGNSe99R.net]
>>811
Window表示できました

813 名前:名前は開発中のものです。 mailto:sage [2011/03/11(金) 07:34:09.43 ID:tT3vlqKS.net]
>>812
VC++上でのデバッガー実行はよくわからないんで自前でやっていただくとして、
先々、デバッグ目的で何かを表示するのに、よくprintfとMessageBoxを使ったりします。

これらに加えて、Windows上で表示されるフォントがあると便利なので、
デバッグ用にSpriteによる文字表示を作成するのがよいかと思います。

SpriteはDirectXの機能を使います。



814 名前:名前は開発中のものです。 mailto:sage [2011/03/11(金) 11:57:07.06 ID:cb9oR2jl.net]
#include <windows.h>
OutputDebugStringA("これはデバッグ出力\n");

815 名前:名前は開発中のものです。 mailto:sage [2011/03/19(土) 10:31:39.54 ID:zpjTizC+.net]
皆様お元気でしょうか
ちょっとゴタゴタしてましたが、再開です

>>813
スプライトによる文字表示がよく分からなかったので
とりあえずDrawTextで文字列表示できました
まあ、とりあえずデバッグ用としてこれでいいかなと

>>814
VisualStudioだとそれでコンソール出力できるみたいですね
参考にします

816 名前:名前は開発中のものです。 mailto:sage [2011/03/19(土) 10:35:30.95 ID:zpjTizC+.net]
それにしても、意外とDirectX9の解説サイト少ないですね
8以前だと結構あるんですが

特にプログラマブルシェーダーに対応したサイトは少ない
固定機能パイプラインとかもう廃止なので使いたくないし

DirectXの知識は全くないので、情報が無いとなかなか進まない

817 名前:名前は開発中のものです。 mailto:sage [2011/03/19(土) 10:41:37.55 ID:zpjTizC+.net]
マップチップとかって、どうやって読み込むんだろう
RPGツクールVXなどを見てみると、マップチップ数に制限が無い

仮に32*32ドットのマップチップ数が65536個だとすると
RPGツクール仕様だと、横8個分のチップを縦方向に無限なので
256*262144ドットの巨大テクスチャとして読み込むのだろうか
こんな巨大なテクスチャ作れるのかな?

818 名前:名前は開発中のものです。 mailto:sage [2011/03/19(土) 11:54:43.83 ID:tf/j5S+W.net]
俺なら複数枚のテクスチャを切り替えて表示するかな >817
1枚目のテクスチャにあるチップを描画して、SetTextureで切り替えて2枚目とか
どんな方法がベストなのかは知らないけど

819 名前:名前は開発中のものです。 mailto:sage [2011/03/19(土) 12:16:09.47 ID:zpjTizC+.net]
>>818
なるほど、やはり適当な大きさに分割するのが良いんですね

昔のゲームなら全部VRAMに読み込んでコピーとか普通だったけど
今のゲームの規模ならそれはないですね

820 名前:名前は開発中のものです。 mailto:sage [2011/03/21(月) 11:39:21.38 ID:t1zoR9O5.net]
ここ数日DirectXの情報サイトばかり見ているけど
リソースの解放とか凄い面倒そうだ
ある程度フレームワーク化しなきゃ駄目なのかな

HLSLとかもさっぱりだし、先はかなり長そうだ・・・

821 名前:名前は開発中のものです。 mailto:sage [2011/03/21(月) 11:47:38.69 ID:KbfIo3Ze.net]
楽をしたいならOgreとかirrlichtとかDXLibとか高レベルライブラリを使うべき
Directxばかりに固執するといいことは何も無い
それに良いフレームワークに触れない限り、
自分でフレームワークを組み立てることなどできないしな

822 名前:785 mailto:sage [2011/03/23(水) 21:00:30.42 ID:NMGIfDjO.net]
Window表示が出来たなら、次は入力回りを整備するのがよいかと思います。
DirectInputでよいですかね?(他はわからないです)

823 名前:名前は開発中のものです。 mailto:sage [2011/03/23(水) 21:36:41.78 ID:iioYpWXA.net]
>>822
はい、お願いします
DirectInputはまだ未着手なので勉強しておきます



824 名前:名前は開発中のものです。 mailto:sage [2011/03/23(水) 21:40:39.44 ID:iioYpWXA.net]
>>821
ゲーム自体をすぐに作りたいというよりは
DirectXと最近のゲームの作り方を勉強したいので
Win32API+DirectXでやっていきたいと思います

DXライブラリは便利そうですね、いずれこういうライブラリも作りたいです

825 名前:785 mailto:sage [2011/03/23(水) 22:48:06.18 ID:NMGIfDjO.net]
>>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の順に記載するとソースの見通しがよくなります。

826 名前:名前は開発中のものです。 mailto:sage [2011/03/24(木) 12:02:48.79 ID:+jtjlJX2.net]
入力関連なんてゲーム内で一つあればいいんだからグローバル関数でもなんでもいいよ

827 名前:名前は開発中のものです。 mailto:sage [2011/03/24(木) 17:44:17.05 ID:7A5Wm0Sp.net]
全部staticにするくらいなら潔くグローバル関数でいいな
シングルトンでもいいが

828 名前:名前は開発中のものです。 mailto:sage [2011/03/25(金) 00:33:52.87 ID:DZniurx+.net]
>>825
そこまで出来ました。

>>826-827
グローバル関数にすると、管理が面倒になりませんか?
フレームワークとかライブラリみたいな形にする時にも
メンバ関数の形の方が良いような気がしますが

829 名前:名前は開発中のものです。 mailto:sage [2011/03/25(金) 00:49:34.24 ID:VJVVC59h.net]
>>828
そりゃルート名前空間に直置きは最悪だが
名前空間でくくればまったく面倒ではない
むしろすべてクラスクラスと固執する思考はよくないと思われ

830 名前:名前は開発中のものです。 mailto:sage [2011/03/25(金) 00:51:14.65 ID:VJVVC59h.net]
とはいってもまあデザパタ使っていいならシングルトンでも使えばおk

831 名前: ◆MBbNHCnf2M mailto:sage [2011/03/25(金) 01:00:08.60 ID:DZniurx+.net]
とりあえずトリップを付けてみる

>>829
C++で名前空間とか使ったこと無かったです

>>830
シングルトンってデザインパターンですか
そういうの考えてプログラム作ったこと無かったなぁ
ああ、でもMVCでObserverパターンだけ知ってたかも

832 名前: ◆MBbNHCnf2M mailto:sage [2011/03/25(金) 01:03:33.95 ID:DZniurx+.net]
ところで、すごく基本的な質問ですけど
staticなメンバ関数だと何が問題なんでしょう?

特に駄目だという理由が思い付かないんですけど

833 名前:名前は開発中のものです。 mailto:sage [2011/03/25(金) 02:00:59.85 ID:t5g0UlGF.net]
C++ でシングルトンなんか持ち出すくらいなら素直にグローバル変数にしといたほうがよくないか?



834 名前: ◆UUwiUCL1P6 mailto:sage [2011/03/25(金) 08:07:59.07 ID:iNPazjrA.net]
>>828
私もゲームの作り方を勉強したいと思って、
DirectXをつい最近やり始めたという状況で、
自分のやった事を再確認的にお伝えするのが限界です。

いづれ追いつかれて飽和すると思いますので、
より抽象的な概念や高度な作法はいろいろな意見を参考にしてください。

ちなみにXXXXXの部分は何と命名しました?

835 名前: ◆MBbNHCnf2M mailto:sage [2011/03/25(金) 11:19:22.92 ID:DZniurx+.net]
>>834
クラス名は GameInput としておきました

836 名前:名前は開発中のものです。 mailto:sage [2011/03/25(金) 17:44:09.60 ID:VJVVC59h.net]
最初からデザイン云々いいだしても進まないから、
とりあえず動くことを目的としてけばええと思う
動き始めてからいくらでもデザインは改良できるし。
最初は処理の手順を覚えるのが先、
アルゴリズムの訓練をするのが先決

837 名前: ◆UUwiUCL1P6 mailto:sage [2011/03/26(土) 10:36:17.74 ID:pvmCllah.net]
必要な変数(静的メンバ)を設定します。

.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;
}

838 名前: ◆UUwiUCL1P6 mailto:sage [2011/03/26(土) 11:18:46.58 ID:pvmCllah.net]
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>が必要でした。

839 名前:名前は開発中のものです。 mailto:sage [2011/03/26(土) 11:36:25.84 ID:oFPuFWap.net]
デザインとか気にするんだったら、まずはDirectInputデバイスを晒すのをやめるべき。
入力を取得する関数かクラスを作って、直接デバイスにアクセスするのはその中だけに制限する。

840 名前: ◆MBbNHCnf2M mailto:sage [2011/03/26(土) 13:03:14.90 ID:npmu6kKT.net]
>>837
.cpp(GameInput.cppとしている)のnamespace内の定義は
現在のスコープでは定義できませんとなります

841 名前: ◆UUwiUCL1P6 mailto:sage [2011/03/26(土) 14:20:22.37 ID:pvmCllah.net]
>>840
では、namespace{}での括りは外してしまってください。



842 名前: ◆UUwiUCL1P6 mailto:sage [2011/03/26(土) 14:22:30.73 ID:pvmCllah.net]
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;
}

843 名前: ◆MBbNHCnf2M mailto:sage [2011/03/26(土) 14:36:20.30 ID:npmu6kKT.net]
>>842
SetCooperativeLevelの引数、Window.Handle()って
Handleって関数作ってないみたいです



844 名前: ◆UUwiUCL1P6 mailto:sage [2011/03/26(土) 14:40:47.38 ID:pvmCllah.net]
WINDOWクラスに下記の関数を作成してください。

public:
const HWND Handle( void ) const { return handle; }

>>842
GameInput::Init
keyboard = NULL // ねんのため追加してください
input->CreateDevice( GUID_SysKeyboard, ...

GameInput::Free:
解放の順番は初期化と反対にしてください。

input初期化->keyboard初期化 〜 keyboard解放→input解放


845 名前: ◆MBbNHCnf2M mailto:sage [2011/03/26(土) 15:28:08.48 ID:npmu6kKT.net]
変数のスコープとかよく分からなくなってきた・・・

Window.Handle()のWindowって、最初の方で定義したWindow window;の
windowっていうインスタンスだと思うんですけど
GameInput::Initが書かれているファイルGameInput.cppからアクセスするには
インスタンスを渡すしかないと思うんですけど
そこの処理はまだ書いてませんよね?

あれ、それともなんか勘違いしてるかな

846 名前:名前は開発中のものです。 mailto:sage [2011/03/26(土) 16:01:06.60 ID:QDwsR5XB.net]
いいかげんスレ違い
RPGのロジックに入るまでブログでやれ

847 名前:名前は開発中のものです。 mailto:sage [2011/03/26(土) 16:35:54.83 ID:ai5/F2yB.net]
どうせ他に使うやついないのになにいっちゃってんの?アホなの?

848 名前: ◆UUwiUCL1P6 mailto:sage [2011/03/26(土) 16:40:45.61 ID:pvmCllah.net]
>>845
下記を宣言してください。

extern WINDOW window;

この先いろんなところで参照するので、ヘッダに記載した方がよいです。

(>>846)のような意見も出ていますし、ソースを断片的に記載していくのは効率や誤謬が出やすいので、
別の手段を検討したほうがよいかも知れません。
ブログかアップローダを指定いただければそちらでお渡ししますんで、
ご検討ください。



849 名前: ◆UUwiUCL1P6 mailto:sage [2011/03/26(土) 16:53:57.96 ID:pvmCllah.net]
extern WINDOW Window; でした(最初大文字)

ソース全体でこれだけはグローバル変数にしています。
他の変数はクラスの静的メンバでprivateにしています(IDirectInput8* input等)。

ここに書いてやり取りするのは楽でいいんですけど先々難しそうですね。
スレッドのリサイクル法が適用されて日記帳扱いになればOKかも。

850 名前: ◆MBbNHCnf2M mailto:sage [2011/03/26(土) 17:11:30.81 ID:npmu6kKT.net]
>>846
>>1の書き込みとスレッドの中身を見る限り、このレベルからやっても
良いように感じましたが・・・
>>1さんもC++のプログラミングは初めてって書いてますし

>>848
確かにこのままソース書いていくのは難しいと感じてました
どんどん大きくなっていきますからね
とりあえず
gmdev.xrea.jp/
このアップローダが、この板でプログラムを作っている方々が
使用しているアップローダのようです
今後はここにソース置きましょうか

>>849
common.hみたいなヘッダを作成して
#include "WINDOW.h"
extern Window window;
として
WINDOWクラスにアクセスする必要があるクラス全部に
インクルードしたら良いんですね

851 名前: ◆UUwiUCL1P6 mailto:sage [2011/03/26(土) 18:14:33.03 ID:pvmCllah.net]
>>850
gmdevにDirectInputの.h/.cppを置きました。
ttp://gmdev.xrea.jp/st/up/245.txt

>common.hみたいなヘッダ
そうです。自分専用のマクロとか定義とかの置き場にヘッダ作りますよね。
そこに入れておいてください。

ついでに↓もお願いします。
#define ARRAY(a) (sizeof(a)/sizeof(a[0]))
配列の要素数のマクロです。


置いたソースですが現在の自分のソースからいろいろはしょって整形しているので、
部分的に文法がおかしくなったりで、エラーがでるかも知れません。
それはすいませんがうまく直してください。


852 名前: ◆MBbNHCnf2M mailto:sage [2011/03/26(土) 18:47:47.52 ID:npmu6kKT.net]
>>851
すごく見やすいソースですね、大体の感じは理解出来ました

GameInput.cppのunsigned int GameInput::index;で
静的でないメンバーはクラスの外側で定義できませんと出たので
ヘッダの宣言でstatic付けときましたけど、staticにして大丈夫ですか?

それと、DATA_MAXが未定義だったので、適当に#define DATA_MAX 256
と、とりあえずしておきました

以上でコンパイルできました
これからじっくりとソース見ていきたいと思います

853 名前: ◆MBbNHCnf2M mailto:sage [2011/03/26(土) 18:59:27.28 ID:npmu6kKT.net]
今ソース眺めてたら
enum { DATAMAX = 0x100, };ってあるけど
これがDATA_MAXかな?



854 名前: ◆UUwiUCL1P6 mailto:sage [2011/03/26(土) 19:15:55.16 ID:pvmCllah.net]
>>852
index は static です。付け忘れました。

>>853
DATA_MAXです。記述ミス。

入力ワーク回りで間違い多いのは、現在その部分は環状リストで可変長で実装しているので、
急ごしらえで変更したためです。

一部、ヘッダにあって実装されていない関数(JoyPush等)は実際にゲーム中で使用する関数です。
これはGameInput.cppとは別ファイルにした方がよいです。

GameInput.cppはいったん完了するとほとんどいじらなくなります。
ライブラリィ化してもいいかも知れません。

855 名前:名前は開発中のものです。 mailto:sage [2011/03/27(日) 19:06:12.75 ID:7F6awSJl.net]
>>825
> InitとFreeの中身は対称(確保⇔解放)になる事が多いです。

なんでコンストラクタとデストラクタ使わないの?

856 名前: ◆UUwiUCL1P6 mailto:sage [2011/03/27(日) 22:08:40.18 ID:In3d1Uaw.net]
>>855
インスタンスを作成しないからです。メンバーは変数も関数もstaticだけです。
インスタンスを作成できないように、privateでコンストラクタを記述しておくべきですね。


857 名前: ◆MBbNHCnf2M mailto:sage [2011/03/27(日) 22:25:46.92 ID:rtEoqdWq.net]
ここ二日でDirectInputについては大体理解できた気がする
今頃気が付いたけど、DirectInputって今後非推奨なのか

858 名前:名前は開発中のものです。 mailto:sage [2011/03/27(日) 22:49:20.93 ID:7F6awSJl.net]
>>856
いや、だからインスタンスを生成しないのはなんで?って話だったんだけど。

まぁプログラム中で1回だけしかやらないなら、 Init()/Free() 呼び忘れや2重呼び出しも
そうそう起こらないだろうから、コンストラクタやデストラクタ使ってもそんなにおいしくないの
かもね。

859 名前: ◆UUwiUCL1P6 mailto:sage [2011/03/27(日) 22:58:33.14 ID:In3d1Uaw.net]
>>858
Cで作り始めてからC++にしたのでグローバル関数が自分的にしっくりきたという理由です。
合理的な理由はとくになく、個人の好みの範疇を出ないです。


>>857
続きをおきました。
ttp://gmdev.xrea.jp/st/up/246.txt

ゲーム中で使う関数の使い方さえ変えなければ、実装はDirectInputでなくともよいかと思います。


860 名前:名前は開発中のものです。 mailto:sage [2011/03/27(日) 23:12:17.94 ID:BpzKp4Cl.net]
「趣味の範疇」なら何回もつっこまれないと思うけどなぁ
自分も「えー」って思ったし

861 名前: ◆UUwiUCL1P6 mailto:sage [2011/03/27(日) 23:39:29.93 ID:In3d1Uaw.net]
>>860
クラスのないCで作ってから、あとでclass{}で括るとこんな感じになりますよ。
そこからC++ならではの形に作り変えるまでに至らずというところです。

>◆MBbNHCnf2Mさん
この先こんな感じで趣味っぽいところが満載なので自分流に変更するなり、
他の意見を参考いただくなりで、そこは適当にやってください。

ウィンドウ表示⇒コントローラ入力と来たので、次は描画&ファイル読み込みですが、
ここから私としてはタスクシステムをご提案になります。
すごーく突っ込みが入るテーマのようなんで少々気が重いです。

862 名前:名前は開発中のものです。 mailto:sage [2011/03/28(月) 00:17:25.15 ID:Dt+tXZ6j.net]
>>861
わかってるならやめとけばいいのに。どうせ必要性もないんだろ?

やるなら自分でわかってる範囲の突っ込み所と、それでも敢えて押し通す意義(必要性)を
最初にひととおり明示しておけば、繰り返しツッコミが入ってグダグダになるのは避けられる、
かもしれない。

863 名前:名前は開発中のものです。 mailto:sage [2011/03/28(月) 00:29:53.10 ID:iY/f3p70.net]
RPGの描画や更新なんてすることもタイミングも決まりきってるのにタスクシステムなんか何に使うんだよw
上の人も言ってるけど、まずどういうものを作ろうとしててそのためにこういう技術が必要だというのを
はっきりさせてくれ



864 名前: ◆MBbNHCnf2M mailto:sage [2011/03/28(月) 00:30:16.73 ID:+ECkFPgj.net]
>>861
自分的には分かりやすいので、全然問題ないです
まあ、細かい実装はそれぞれのやり方があるでしょうからね

私なんかCにしてもC++にしても言語仕様も十分に理解しないまま
やってるので、基本的に何でも参考になります
本当はちゃんと勉強した方が良いんでしょうけど

タスクシステムは、確かにこの板のスレ見ると荒れてますね
そもそも、タスクシステムの定義自体が曖昧というか
人によって微妙に違う感じですね
タスクシステムは一度勉強してみたかったので、ちょうど良かったです

865 名前: ◆MBbNHCnf2M mailto:sage [2011/03/29(火) 22:24:52.26 ID:o6OtSixI.net]
どうやら風邪をひいてしまったようで、喉が痛い

ところで話は今までの流れと急に変わりますけど
今時のRPGってアイテムのデータはどのように持ってるんだろう

昔なら、アイテム番号だけを持ってて(ゲーム全体で256個までなら1バイト
65536個までなら2バイト)、その番号からアイテムデータを参照してたけれど
例えば、武器にランダム性があって、ショートソードに+1とかの強さの幅がある場合
アイテム番号1がショートソード、アイテム番号2がショートソード+1みたいな
のだと無駄にアイテムデータ増えるからあり得ないかな

昔だと、メモリも少ないし、データをセーブする媒体の容量も少ないから
アイテムのインデックスだけを持っていたけれど、今はデータ全体を
そのまま持っているのかな

866 名前: ◆MBbNHCnf2M mailto:sage [2011/03/29(火) 22:28:15.54 ID:o6OtSixI.net]
多分、基本となるデータのみ存在していて、入手時にそのデータ元に
ランダムで性能を確定させて、そのデータを全部を持ってるのか

867 名前:名前は開発中のものです。 mailto:sage [2011/03/29(火) 23:19:08.33 ID:W0uoKekZ.net]
これだ!っていうデータ構造なんて無いんじゃないかな
ゲームごとにチューニングする必要があるわけで
パフォーマンスに余裕があればリレーショナルデータベースとか使っちゃうのかな

868 名前:名前は開発中のものです。 mailto:sage [2011/03/30(水) 00:26:46.80 ID:jEpUZgct.net]
アイテムのインスタンスに持たせた方がいいんじゃないかなぁ
手持ちの装備を強化できるようなシステムが追加したくなった場合とかやりやすいし

869 名前:名前は開発中のものです。 mailto:sage [2011/03/30(水) 01:14:37.31 ID:fixmLHL7.net]
>>865
仕様に沿って素直なコードを組むのが最強。
リソース制約が顔を出しにくくなった「今時」ならこれでいいでしょ。

"Premature optimization is the root of all evil."

870 名前: ◆MBbNHCnf2M mailto:sage [2011/03/30(水) 20:18:14.12 ID:eH7gPhm2.net]
>>867-869
やっぱりデータが変化するようなものだと、インデックスだけで
管理は無理ですね。よく考えたら当たり前の事だった。

まあ、今ならアイテム程度のバイナリデータいくつ持ってても
問題無いか。携帯とかモバイル環境だと制限あるかもしれないけど
そんな環境だと、そもそもそれ程大規模のゲームも作らないだろうし。

871 名前:名前は開発中のものです。 mailto:sage [2011/04/03(日) 21:06:06.82 ID:t0UP3s0y.net]
しーん

872 名前: ◆MBbNHCnf2M mailto:sage [2011/04/03(日) 21:10:34.12 ID:wtGWHPRo.net]
>>871
ちょうど今書こうと思ってた所です
今週は、風邪をひいてあまり集中して出来なかったので

とりあえず、ポリゴン出したりテクスチャ貼ったりというのは理解したと思う
これで音を出す以外の大体の事は何とかなるような気がする

873 名前: ◆MBbNHCnf2M mailto:sage [2011/04/03(日) 21:17:09.28 ID:wtGWHPRo.net]
で、マップスクロールについて考えていたんですけど

d.hatena.ne.jp/aidiary/20040918/1251373370

上記のサイトのRPGの項目にあるような、マップ全体を裏画面に描画して
そこから表示画面分だけ切り出すという方法が結構検索していると
見つかるのに驚いたわけです

これって結構スタンダードな方法なのかな?
いくらメモリを気にしなくてもいいPC環境とはいえ、マップ全体を描画って
あり得るのだろうか、少なくとも市販作品では無いような気がする



874 名前: ◆MBbNHCnf2M mailto:sage [2011/04/03(日) 21:23:57.58 ID:wtGWHPRo.net]
昔はマップスクロールというと、RPG作成において一番の難所で
これが出来たらもうRPGは出来たも同然というような感じだった

特に私が使っていたMSXなんかだと、ハードウェアスクロール機能が
縦方向しかなかったので、1ドットスクロールは厳しかった

本当に最初の頃は、レイヤという概念も無くて(知らなかっただけかも)
そもそもレイヤをいくつも重ね合わせられるほどの処理速度もメモリも無かった

875 名前:名前は開発中のものです。 mailto:sage [2011/04/03(日) 21:27:16.75 ID:/2gPwasz.net]
昔とかどうでもいい話してないでDirectX使えよ。
無理ならDXライブラリでも使え

876 名前: ◆MBbNHCnf2M mailto:sage [2011/04/03(日) 21:32:21.82 ID:wtGWHPRo.net]
そこで、どういう風にマップスクロールを実装していたかと言うと
裏画面に表示画面より、縦・横共にマップチップ1個分大きいマップを描画し
そこから1ドットずつずらしてコピーするという方法だった
ページフリッピングも出来ないわけではなかったけど、VRAM容量を考えると
そんなもったいない方法は許されなかった

今でも縦・横でマップチップ一個分だけの裏画面からコピーするのが
定番だと思っていたけれど、マップ全体からコピーするという方法が
多く見つかるというのは、そっちの方が定番のかな

877 名前:名前は開発中のものです。 mailto:sage [2011/04/03(日) 21:34:32.01 ID:t0UP3s0y.net]
>>873
256*256のマップだけで256MB消費ってのは普通じゃないと思う

878 名前: ◆MBbNHCnf2M mailto:sage [2011/04/03(日) 22:04:18.84 ID:wtGWHPRo.net]
>>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ドットずつコピーするのが難しそうな気が
もっとテクスチャについて勉強する必要がありそう

879 名前:名前は開発中のものです。 mailto:sage [2011/04/03(日) 22:06:51.98 ID:/2gPwasz.net]
あのさ?座標にマイナスを指定できるの知ってる?

880 名前: ◆MBbNHCnf2M mailto:sage [2011/04/03(日) 22:36:46.84 ID:wtGWHPRo.net]
>>879
失礼、連続で5回以上書き込めないようで

テクスチャ座標に負の値が使えるのは知ってます
それをどこに使うんですか?
まだ勉強中なので教えてください

881 名前:名前は開発中のものです。 mailto:sage [2011/04/03(日) 23:07:20.50 ID:mqRgK4Gz.net]
あなたの文章を読んでいて思ったのだが。
まさか、一枚のテクスチャに複数のレイヤーを重ねて最終的に
画面に描画しようとしている?

DirectXのバージョンをいくつ使うか知らないけど
いくらなんでも概念が古すぎるよ。
(DirectDrawとか使おうとしてる?)

WindiwsXPターゲットのDirectX9ならポリゴンまたはスプライト使えば解決できることを
わざわざ難しい方法でやろうとしているように見える。

ここで説明するのは無理があるからいくつかサイトのURL貼っとく

DirectX8の解説サイト
rina.jpn.ph/~rance/directx8/index.html
Microsoft本家のゲームプログラミング入門資料(数学の知識必須)
msdn.microsoft.com/ja-jp/academic/cc998598

まさかとは思うがDirectX7ならこの辺り
rina.jpn.ph/~rance/directx7/directx7study/index.html

入門者ならDirectXと言わずDXライブラリを使うのもありだと思う。
DXライブラリを使った解説サイト
dixq.net/g/

あと、ネットの情報は色々不足な部分や整理されていないから
一冊、入門書を買うことをお勧めする。


882 名前:879 mailto:sage [2011/04/03(日) 23:08:21.00 ID:mqRgK4Gz.net]
あれID変ったw

883 名前: ◆MBbNHCnf2M mailto:sage [2011/04/03(日) 23:49:00.27 ID:wtGWHPRo.net]
全然連続で書き込めない、この板人が少な過ぎるのか・・・


>>881
DirectX 9.0c でやろうと思ってます
つまり、DirectDrawでなくて、DirectX Graphicsですね

そのサイトも読んだんですけど、多分ポリゴンにテクスチャに貼り付けて
2Dの処理をするのがよく理解できてないんですね
特にテクスチャの扱いが多分よく分かってないので、勉強しときます
ポリゴンに単純にテクスチャ貼るところまでは理解できてる(と思う)んですが



884 名前:名前は開発中のものです。 mailto:sage [2011/04/04(月) 00:57:26.26 ID:EfnOmkqq.net]
だったら素直にD3DXのSprite使えばいいよ
表示範囲内のタイルを毎フレーム全て描画しなおせばいいだけ
一見効率悪そうだけど>>878よりは遥かに効率が良い

885 名前:名前は開発中のものです。 mailto:sage [2011/04/04(月) 01:16:24.28 ID:EfnOmkqq.net]
一つのレイヤ内で使われるタイルを一つの大きなテクスチャにまとめておいて
レイヤ全体を一つの図形とみなしてテクスチャ座標でマッピングするのが
多分一番速くて効率の良い方法
スプライトはそれと同じようなことを自動でやってくれるから
毎フレーム大量の描画を行ってもわりと速い

886 名前:名前は開発中のものです。 [2011/04/23(土) 16:35:48.28 ID:CvPk8hGJ.net]
ゲーム制作メンバーを募集しています。

yuzuru.2ch.net/test/read.cgi/ff/1298538064/l50
www31.atwiki.jp/fftsukurou/

・最近のFFが嫌い
・昔のFFが好き

どちらかに当てはまれば誰でも結構です。
昔ながらのFFをみんなで作りましょう。


887 名前:名前は開発中のものです。 mailto:sage [2011/04/28(木) 16:06:00.10 ID:odTXZLNY.net]
募集要項の大雑把さにフイタ

888 名前: 忍法帖【Lv=18,xxxPT】 mailto:sage [2011/05/05(木) 11:29:11.77 ID:Zs6VE70C.net]
うん?

889 名前:名前は開発中のものです。 [2011/07/08(金) 21:16:59.44 ID:nxuNDnA1.net]
マップ画面から事ある事に戦闘画面に行くよくあるRPGを作ろうと思うんだけど、
戦闘画面を呼び出すのはマップ画面の中で関数呼び出す感じにするもんなの?
それともデータ保存してマップ画面終了してから戦闘画面に行くもんなの?
作る時は前者が楽だけど、メモリがちょっと心配。

890 名前:名前は開発中のものです。 mailto:sage [2011/07/08(金) 21:29:25.17 ID:TDxk0CvB.net]
メッセージループ内でシーン分岐

891 名前:名前は開発中のものです。 mailto:sage [2011/07/08(金) 21:34:45.63 ID:nxuNDnA1.net]
ああ、やっぱそれか……ありがとう。

892 名前:名前は開発中のものです。 mailto:sage [2011/07/13(水) 17:30:26.96 ID:7GbeQNs3.net]
> それともデータ保存してマップ画面終了してから戦闘画面に行くもんなの?

毎回状態を記憶した一時セーブデータみたいなの書き出して読み込んで、
オブジェクトの生成と破棄とリソースの読み込みと開放してまた再現するって事?
その処理を作ってテストするのが大変そうだなぁ…
所謂普通のセーブデータと共用できればマシそうだけど…
仕様にもよるけど、マップ画面でのbgmを元の位置から再生したい時とかも少し面倒だね。
イベントなんかの途中で戦闘が始まるようなのは復元するの大変そうだなぁ…

どんなゲームなのか判らないから一概には言えないけど、
メモリなんてせいぜい該当マップで利用する敵グラや音のリソースが+されるだけなんだし、
そこまで気にする程でも無いような。

昨今のPC事情で考えたらCPUやメモリの容量は異常だよね。
10万満たない簡素なPCでも凄い積んでる。
ところがHDアクセスはまだまだ遅いんだよね。
だから前者でいいんでね?

> 戦闘画面を呼び出すのはマップ画面の中で関数呼び出す感じにするもんなの?

> メッセージループ内でシーン分岐

要するにマップ画面に戦闘画面への遷移を固定化するコードを持たさないで部品化した方がいいよねって話かと。
方法はいろいろあって、FSM(有限オートマトン)やstateパターンでシーン単位で切り替えるのが有名だけど、
遷移を管理する側にごちゃごちゃさせたくないなら、マップと戦闘を保持したクラスを用意してやれば済む話だよね。
つーか別に仕様が完全固定化されてるなら戦闘からマップ直接呼んでもいいと思うよ。
あの手の技法なんて納期とか変更とかに厳しい世界の人たちが使ってる苦肉の策なんだしw
難しい事や汎用的な事は手段であって、それが目的化するよりはゲームが動くほうがいいよね。

それからこれも仕様によるけど、
所謂シーン単位での完全切り替えだとマップの上に戦闘を描くスタイルできないけどいいの?
あとエンカウントのアニメーションなんか必要な場合、マップ画面側にその処理だけが残るとかキモクない?

893 名前:名前は開発中のものです。 mailto:sage [2011/07/14(木) 16:32:39.19 ID:0xB3ByY3.net]
ふぅ…



894 名前:名前は開発中のものです。 [2011/12/06(火) 13:22:55.40 ID:oDkZLgbY.net]
あげ

895 名前:名前は開発中のものです。 mailto:sage [2012/03/26(月) 23:19:50.12 ID:q+Fv8Yng.net]
>>889
グラフィック関連はさすがに解放すると思う
でもドラクエみたいな2Dロープレなら何をどう作ってもメモリ不足なんてありえない

もう1つの質問の意図はマップ画面の下位に戦闘画面が来るか
それともマップ画面と戦闘画面を同じ立場において別途切り替える機構を作るかっていう問題だと思うけど
何らかのイベントやミニゲームなどで戦闘シーンを使う場合に上下関係が密接に関係してると
後で再利用しづらいのにで戦闘画面は独立させておいたほうがいいと思う。



896 名前:名前は開発中のものです。 mailto:sage [2012/05/10(木) 12:17:40.31 ID:CvbrCj71.net]
FFよりダンマスみたいなの作ってよ
いっとくけどMSX版の方じゃないよw

897 名前:名前は開発中のものです。 mailto:sage [2012/08/23(木) 21:04:32.49 ID:8Fyjiw0F.net]
MSXのダンジョンマスターをオンライン対応でリメイクして欲しいけど

スレ違いだし他力本願だねw

898 名前:名前は開発中のものです。 mailto:age [2012/09/07(金) 19:10:16.76 ID:M4WerZHY.net]
あげ

899 名前:名前は開発中のものです。 mailto:sage [2012/09/16(日) 21:05:26.04 ID:3z6vfuIt.net]
ダンマスならRTC版じゃいかんのか?

900 名前:あずにゃん ◆PaaSYgVvtw [2012/11/29(木) 18:47:56.93 ID:T/exNI7l.net]
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+はまだ先のことですが^^;
ゲ制作も遠い道のりです。。。

901 名前:名前は開発中のものです。 mailto:sage [2012/11/29(木) 19:15:49.60 ID:f6gZcj+t.net]
paのアドレスじゃん

902 名前:名前は開発中のものです。 mailto:sage [2012/12/01(土) 19:58:04.77 ID:CrVsmJCK.net]
>>900

codepad.org/qZh2vLXf

903 名前:名前は開発中のものです。 mailto:sage [2012/12/01(土) 20:18:25.61 ID:CrVsmJCK.net]
>>900
ごめん、やっぱこっちで
codepad.org/UB5JFPnU



904 名前:名前は開発中のものです。 [2012/12/28(金) 09:37:26.68 ID:8KDAkRIs.net]
ズルするならマップでエンカウント直前のスクリーンを保持しておいて、戦闘画面の背景にあてれば出来るね。
動くマップチップで戦闘中も動かしたいなら見えてる部分をきちんとしたデータで渡して戦闘シーンで再構築しないといけないけどたぶん難しくないか。
やっぱマップと戦闘だと載せるUI違うから分けた方が見やすくなるんじゃないかと思ってる。
背景がマップだと戦闘場面が戦闘UIという意識でマップにのっかってるって感覚が強くなりそうだから一緒に書くのが自然に思えなくもないけど、
ほかのシーンは分けてるのにマップと戦闘はくっついてるというのは汎用的ではないような気がする。
でも面倒になったら分けない。

905 名前:名前は開発中のものです。 [2015/10/16(金) 10:06:10.59 ID:c5lx3m67.net]
>>1は消息不明?

DXライブラリだけど
俺もアクション、シューティングと何作か作って来たので
そろそろRPG作ってみたいんだけど、
膨大になるゲーム中の台詞を合理的に管理する方法が思い付かないんだよね。
それが解決するなら重い腰あげられそうなんだけど。。

906 名前:名前は開発中のものです。 mailto:sage [2015/10/23(金) 21:15:34.15 ID:yK+GV+yo.net]
あえて一度ツクールなりウディタなり触ってみればいい

907 名前:名前は開発中のものです。 [2017/01/31(火) 20:51:48.28 ID:D6yECHIX.net]
age






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<245KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef