コンパイラはVisual C++で、ライブラリ→DXライブラリを使っています。
まさか、処理は一々
このとき文字列出して、キー待ち、画像フェードインして、キー待ち、文字列出して、キー待ち、背景フェードバックして、キー待ち、文字列出して、キー待ち、文字列出して、キー待ち、選択させて....
というのを全てソースに書くんじゃないですよね?
実際にはどうなっているんでしょうか。
ついでですが、ツールを使った参考サイトが多く、中々参考サイトが見つかりませんのでお奨めの参考サイト等あれば紹介していただけると幸いです。
No.1
- 回答日時:
ノベルゲームを作るというのが目的なのでしたら、やっぱりNScripterみたいな、そういうゲームを作るためのスクリプトを使った方が良いですよ。
C++は関数とかもかなり細かいレベルで扱う事が出来るから、単調なソースを書こうとしたら、無駄に長くなってしまう。
それでもC++で作るのでしたら、基本的なパターンの処理をすべてクラスとして作っておいて、外部のデータファイルを読み込み、クラスで解析をして、ゲームとして動かす、とか。
そんでもって、実際にノベルゲームの内容そのものは
テキストファイルに書いたりするとか、データファイルを作成するための簡単なプログラムでも作っておくとか、
そんなところじゃないですかねぇ
やはりC++はゲームのようなものには向いていないのですか・・・
クラスを扱ったことがないのですが、自分なりに頑張ってます!
ご回答有難う御座いました。
No.2
- 回答日時:
ノベルゲームを作成したことはないのであくまで推測ですが、
システムとデータは分離するのが一般的だと思われます。
すなわち、シーンごとの文字列と呼び出す画像番号、次のシーン番号などをデータとして置いておく。
システム側ではシーン番号に応じて、
・対応する画像を読み込みフェードイン表示させる
・文字列を読み込み表示する(必要なら1文字ずつ)
・キー入力を待つ(このときに特殊なキーが押されたら保存等のルーチンへ飛ぶ)
・次のシーン番号を読み込み、次の処理へ回す
などの機能を実装するのでは。
No.3
- 回答日時:
VC++ & DirectXで商用ゲームを何本か開発したことがあるプログラマです。
実際そのまさかですよ(笑)
全て手作業で、ユーザのあらゆる動作を想定してコーディングします。
ウィンドウモード、フルスクリーンモード両方とか、
ユーザが最小化してから、元に戻した場合だとか…全てです(笑)
だからゲーム開発には金と時間がかかるんですよ。
徹夜当たり前の業界だというのがお解り頂けたでしょうか(笑)
ちょっとだけ余談で愚痴(?)を書きます。
しかもゲーム会社の場合だとディレクター等が企画したものを
実現させていきます。
「それはないでしょ」ってな仕様も力関係によっては、
実現させなきゃいけません。
こういう実情を知らないユーザが
「クソゲー」だの「プログラマが悪い」だの言うのを聞くと
ちょっとだけイラッとします(笑)
まあ、そんな実情知らなくて当然なんだから仕方ないんですけどね(笑)
参考にするのはDirectX関連の書籍ですね。(高いですが)
膨大なソースになるので、参考になるサイトは無いと思います。
もちろん、処理の一部ならあると思いますが。
簡単なノベルゲームなら1人月といったところでしょうか。
ある程度、自作のライブラリを作られているなら
もっと早いと思います。
ノベルゲームならデバッグ期間もそんなにかからないと思います。
以上、少しでもご参考になりましたら幸いです。
No.4ベストアンサー
- 回答日時:
経験者として言うなら、シナリオの制御とWindowsの制御のC++の部分は分離したほうが作りやすいです。
まず、簡単なスクリプト言語を作成します。
別にCSV形式でも良くて、
コマンド,[テキストとかラベルとか画像ファイル名とか]
コマンドで動作を記述します。テキストを画面に出すとか、ここで入力待ちとか、条件フラグを知らべて分岐とか、指定された画像を表示とか。
で、C++ではこのコマンドに基づいた動作を制御するプログラムを記述します。
rinmaneさんの言われるとおり、Windows周りの制御はC++とDirectXで記述するしか無いですね。
>やはりC++はゲームのようなものには向いていないのですか・・・
>クラスを扱ったことがないのですが、自分なりに頑張ってます!
C++のクラスは、ゲームを作るのに向いていると思いますよ。
No.5
- 回答日時:
No.3です。
他の方のご回答を拝見していて、
ご質問を勘違いしていたことに気付きました(汗
キーイベントや文字列表示等はもちろん1カ所書くだけですよ。
他の方も書かれている通りに、まずはデータをどう持たせるか…
その部分の設計からです。
私の場合なら…
1.エクセルで画面ページ単位のテキストを作る。
この時にキーワード(用語説明画面に飛びたいワード等)は
太字等にしておきます。
2.1を元にExcel VBAでキーワードを独自のタグで囲み、
テキストを出力。
3.上記のテキストをVC++で必要に応じて随時読み込む。
というような感じです。
テキストをバイナリにしたり、暗号化したり…
というのは必要に応じてご自由に。
こうしておけば、
キーイベント処理、読み込み処理、表示処理、フェード処理、等々…
1つの関数で済みますよ。
No.4の方が仰る通り、
ある程度複雑なことをしたい場合はC++のが断然良い…
というか、それ以外の選択肢はほぼないと思います。
まあ、Flash等でもできますが^^;
以上、少しでもご参考になりましたら幸いです。
やはり一つの関数ですむものでしたか!
ではデータの設計の方から頑張りたいと思います(正直Excelは苦手ですw
ご回答有難う御座いました。
No.6
- 回答日時:
DXライブラリのサンプルの中にシナリオのスクリプトエンジンのサンプルがありますよ。
http://homepage2.nifty.com/natupaji/DxLib/dxsamp …
「スクリプトプレーヤー」ってのがそれです。ソースコードが含まれてますので参考になると思いますよ。
まったくC++のクラス化されていないのでC言語記述ですが。
No.7
- 回答日時:
回答No.4とNo.6のzwiですが。
とりあえず落ち着いてください。
何でも言葉の表面で受け取らないで、じっくり考えたり調べたりしてから返事してもらって良いですから。
>スクリプト言語ですか。
>丁度Perlの本を持っているので勉強してみたいと思います!
いや、スクリプト言語と言っても言語仕様を自分で決めて自分でエンジンを作るスクリプト言語なので、Perlを勉強しても意味はありませんよ。Perlの仕様に似せようとしたならスクリプトの作成難易度が高くなりますし。
それこそ、下記サイトの様な高度な世界に。
http://kmaebashi.com/programmer/devlang/index.html
こんなスクリプトまでは必要ないと思うんで簡易型で良いんでよ。No.6で紹介したスクリプトプレーヤー程度で十分です。rinmaneさんが紹介しているExcelを使うのは入力ツールとして便利だからです。別にテキストでも問題は有りませんよ。
はい、落ち着きました。
何しろOKWaveを利用するのは始めてだった為何故か焦っていました。
プログラミング言語...サイトを拝見してきました。
折角ですし、これにも挑戦してみたいと思います。
態々何度もご回答有難う御座いました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel>マクロ>特定のセルで同じ情報が登録されている行を1行にまとめたい(文字連結) 6 2023/01/05 16:30
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- Windows 10 BitLocker 回復キーの入力 1 2022/10/09 15:23
- マウス・キーボード scroll Lockキーを解除したけれど。 1 2022/09/16 09:23
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- その他(パソコン・周辺機器) ウインドウズ10のログオフ画面に現れる画像について教えて下さい ログオフをしてログイン待ちの画面にな 1 2023/05/19 21:37
- その他(コンピューター・テクノロジー) マウスで文章をドラッグしてコピーする際に、横一列全てが選択されるのですが、 2 2023/06/17 18:05
- マウス・キーボード NEC PC-9801とか、昔のパソコンのキーボード 2 2022/09/20 20:13
- その他(プログラミング・Web制作) ラズパイ上の、pythonのエラーについて 1 2023/04/12 23:27
- Excel(エクセル) Excel 複数列のある文字を優先して1列に表示したいです 2 2022/12/03 12:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語(gcc), Linux, FTPプログ...
-
VBAで仕様書は書きますか?
-
例外処理があまり使われない理...
-
テキストの折り返し処理について
-
プログラム動作時のCPU処理時間...
-
インクリメント演算子のみを用...
-
Vba 実数および実数タイプの変...
-
Notepad++の関数リスト表示でC...
-
Stuck
-
自動クエリとはどういうもので...
-
プログラミング
-
ruby
-
正しい五十音順について
-
PICマイコンのコピー(クローン...
-
これはDos攻撃になりますか?
-
Dijkstraて
-
XnViewにwebpを「いつも開く」...
-
m個の数字をn個のグループに分...
-
【JAVA】数字をひし形に出力す...
-
binファイルってiphone専用です...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで仕様書は書きますか?
-
C言語(gcc), Linux, FTPプログ...
-
空elseの有無
-
COBOLのCALL文がいまいちつかめ...
-
プログラミングのコード量に関...
-
VBからシャットダウンさせる方法
-
他人が作ったプログラムのメン...
-
プログラム動作時のCPU処理時間...
-
C++ソースからUMLの設計書を作...
-
変数・オブジェクト名に漢字使用
-
CからJavaの呼び出し
-
ソースコード改造 msペイント
-
プログラミングの読み方、書き...
-
きれいなコード vba vbaを勉強...
-
MFC,C++/CLI,C#の共存
-
ActiveXコントロールの作成(V...
-
BIOSってどんなCPUで処理してる...
-
「ルーチン」という言葉の意味
-
テキストの折り返し処理について
-
Visual Basic で C++ を使いたい!
おすすめ情報