• ベストアンサー

ノベルゲームを作成中なのですが、

コンパイラはVisual C++で、ライブラリ→DXライブラリを使っています。 まさか、処理は一々 このとき文字列出して、キー待ち、画像フェードインして、キー待ち、文字列出して、キー待ち、背景フェードバックして、キー待ち、文字列出して、キー待ち、文字列出して、キー待ち、選択させて.... というのを全てソースに書くんじゃないですよね? 実際にはどうなっているんでしょうか。 ついでですが、ツールを使った参考サイトが多く、中々参考サイトが見つかりませんのでお奨めの参考サイト等あれば紹介していただけると幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.4

経験者として言うなら、シナリオの制御とWindowsの制御のC++の部分は分離したほうが作りやすいです。 まず、簡単なスクリプト言語を作成します。 別にCSV形式でも良くて、 コマンド,[テキストとかラベルとか画像ファイル名とか] コマンドで動作を記述します。テキストを画面に出すとか、ここで入力待ちとか、条件フラグを知らべて分岐とか、指定された画像を表示とか。 で、C++ではこのコマンドに基づいた動作を制御するプログラムを記述します。 rinmaneさんの言われるとおり、Windows周りの制御はC++とDirectXで記述するしか無いですね。 >やはりC++はゲームのようなものには向いていないのですか・・・ >クラスを扱ったことがないのですが、自分なりに頑張ってます! C++のクラスは、ゲームを作るのに向いていると思いますよ。

interface3
質問者

お礼

スクリプト言語ですか。 丁度Perlの本を持っているので勉強してみたいと思います! ご回答有難う御座いました。

その他の回答 (6)

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.7

回答No.4とNo.6のzwiですが。 とりあえず落ち着いてください。 何でも言葉の表面で受け取らないで、じっくり考えたり調べたりしてから返事してもらって良いですから。 >スクリプト言語ですか。 >丁度Perlの本を持っているので勉強してみたいと思います! いや、スクリプト言語と言っても言語仕様を自分で決めて自分でエンジンを作るスクリプト言語なので、Perlを勉強しても意味はありませんよ。Perlの仕様に似せようとしたならスクリプトの作成難易度が高くなりますし。 それこそ、下記サイトの様な高度な世界に。 http://kmaebashi.com/programmer/devlang/index.html こんなスクリプトまでは必要ないと思うんで簡易型で良いんでよ。No.6で紹介したスクリプトプレーヤー程度で十分です。rinmaneさんが紹介しているExcelを使うのは入力ツールとして便利だからです。別にテキストでも問題は有りませんよ。

interface3
質問者

お礼

はい、落ち着きました。 何しろOKWaveを利用するのは始めてだった為何故か焦っていました。 プログラミング言語...サイトを拝見してきました。 折角ですし、これにも挑戦してみたいと思います。 態々何度もご回答有難う御座いました。

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.6

DXライブラリのサンプルの中にシナリオのスクリプトエンジンのサンプルがありますよ。 http://homepage2.nifty.com/natupaji/DxLib/dxsample.html 「スクリプトプレーヤー」ってのがそれです。ソースコードが含まれてますので参考になると思いますよ。 まったくC++のクラス化されていないのでC言語記述ですが。

  • rinmane
  • ベストアンサー率56% (64/113)
回答No.5

No.3です。 他の方のご回答を拝見していて、 ご質問を勘違いしていたことに気付きました(汗 キーイベントや文字列表示等はもちろん1カ所書くだけですよ。 他の方も書かれている通りに、まずはデータをどう持たせるか… その部分の設計からです。 私の場合なら… 1.エクセルで画面ページ単位のテキストを作る。 この時にキーワード(用語説明画面に飛びたいワード等)は 太字等にしておきます。 2.1を元にExcel VBAでキーワードを独自のタグで囲み、 テキストを出力。 3.上記のテキストをVC++で必要に応じて随時読み込む。 というような感じです。 テキストをバイナリにしたり、暗号化したり… というのは必要に応じてご自由に。 こうしておけば、 キーイベント処理、読み込み処理、表示処理、フェード処理、等々… 1つの関数で済みますよ。 No.4の方が仰る通り、 ある程度複雑なことをしたい場合はC++のが断然良い… というか、それ以外の選択肢はほぼないと思います。 まあ、Flash等でもできますが^^; 以上、少しでもご参考になりましたら幸いです。

interface3
質問者

お礼

やはり一つの関数ですむものでしたか! ではデータの設計の方から頑張りたいと思います(正直Excelは苦手ですw ご回答有難う御座いました。

  • rinmane
  • ベストアンサー率56% (64/113)
回答No.3

VC++ & DirectXで商用ゲームを何本か開発したことがあるプログラマです。 実際そのまさかですよ(笑) 全て手作業で、ユーザのあらゆる動作を想定してコーディングします。 ウィンドウモード、フルスクリーンモード両方とか、 ユーザが最小化してから、元に戻した場合だとか…全てです(笑) だからゲーム開発には金と時間がかかるんですよ。 徹夜当たり前の業界だというのがお解り頂けたでしょうか(笑) ちょっとだけ余談で愚痴(?)を書きます。 しかもゲーム会社の場合だとディレクター等が企画したものを 実現させていきます。 「それはないでしょ」ってな仕様も力関係によっては、 実現させなきゃいけません。 こういう実情を知らないユーザが 「クソゲー」だの「プログラマが悪い」だの言うのを聞くと ちょっとだけイラッとします(笑) まあ、そんな実情知らなくて当然なんだから仕方ないんですけどね(笑) 参考にするのはDirectX関連の書籍ですね。(高いですが) 膨大なソースになるので、参考になるサイトは無いと思います。 もちろん、処理の一部ならあると思いますが。 簡単なノベルゲームなら1人月といったところでしょうか。 ある程度、自作のライブラリを作られているなら もっと早いと思います。 ノベルゲームならデバッグ期間もそんなにかからないと思います。 以上、少しでもご参考になりましたら幸いです。

回答No.2

ノベルゲームを作成したことはないのであくまで推測ですが、 システムとデータは分離するのが一般的だと思われます。 すなわち、シーンごとの文字列と呼び出す画像番号、次のシーン番号などをデータとして置いておく。 システム側ではシーン番号に応じて、 ・対応する画像を読み込みフェードイン表示させる ・文字列を読み込み表示する(必要なら1文字ずつ) ・キー入力を待つ(このときに特殊なキーが押されたら保存等のルーチンへ飛ぶ) ・次のシーン番号を読み込み、次の処理へ回す などの機能を実装するのでは。

interface3
質問者

お礼

システムとデータは分離するものなのですか! 危うく一緒にするところでした。 ご回答有難う御座いました。

  • mizutaki
  • ベストアンサー率33% (111/333)
回答No.1

ノベルゲームを作るというのが目的なのでしたら、やっぱりNScripterみたいな、そういうゲームを作るためのスクリプトを使った方が良いですよ。 C++は関数とかもかなり細かいレベルで扱う事が出来るから、単調なソースを書こうとしたら、無駄に長くなってしまう。 それでもC++で作るのでしたら、基本的なパターンの処理をすべてクラスとして作っておいて、外部のデータファイルを読み込み、クラスで解析をして、ゲームとして動かす、とか。 そんでもって、実際にノベルゲームの内容そのものは テキストファイルに書いたりするとか、データファイルを作成するための簡単なプログラムでも作っておくとか、 そんなところじゃないですかねぇ

interface3
質問者

お礼

やはりC++はゲームのようなものには向いていないのですか・・・ クラスを扱ったことがないのですが、自分なりに頑張ってます! ご回答有難う御座いました。