HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0718
 RPGのイベント部分も#includeしたHSPコードで書いてるけど将来的に問題ある?8解決


 

リンク

2013/7/18(Thu) 08:58:35|NO.55728

現状。

ステージは初期化用とメインループ部分用(=イベント部分)の2つに分けている。

RPG部分はモジュールを用いていない。
全てのオブジェの全ての値をMAD( ObjNo, POS_X )やMAD( ObjNo, MODEL_NO )みたいに実数型の配列変数で管理している。
画像のパスやイベントでのセリフなどに用いる文字列は、初期化用とメインループ部分用の中でHSPコードとして直に書いている。

共通して用いる全ての動作は配列化している。指定したオブジェ番号分だけの動作もある。
内部状態を保持しておくことが要る動作にも先の実数型の配列変数で対応できている。


どうでしょうか?



この記事に返信する


菊岡万次郎

リンク

2013/7/18(Thu) 10:50:39|NO.55729

速度とかわかんないけど
MAD( ObjNo, POS_X )
これ好きです。
けど
OBJ(No,POS_X)
とかでもいいんじゃないかな?



KA

リンク

2013/7/18(Thu) 11:03:22|NO.55730

その将来的な問題を作り出すのも自分自身です。
現状で納得している以上、他人には判断できません。



check

リンク

2013/7/18(Thu) 12:19:41|NO.55732

イベント用の文字列は別ファイルに記録しておいたほうが、
後々変更するときに再コンパイルせずに済む。

モジュール使っていないと、ある特定の処理をするコードを沢山書く必要が出てくるかも。

それ以外は何も言えん。
MAD( ObjNo, POS_X )とか書かれてもこちらには何のことだかさっぱりわからない。



 

リンク

2013/7/18(Thu) 23:38:59|NO.55742

>けどOBJ(No,POS_X)とかでもいいんじゃないかな?
俺も改めてなぜObjNo以外の可能性も取ってるのかなって思って調べてみたら
#define global ctype MAD( %1, %2 )	MemAreaDbl( %1 * ObjDblNum + %2 )
という実は1次元配列だったw

>イベント用の文字列は別ファイルに記録しておいたほうが、後々変更するときに再コンパイルせずに済む。
その動的に生成や改変できる利点は特にマップエディタで活用されるのでしょうね。
ゲーム中にセリフを動的に生成や改変することは現実的な範囲だとプログラムで対応できますし。
その動的な利点は費用と比べると効率が低いから、#includeしたHSPコードでイベントを直に書いて簡単にイベントをプログラマブルに指定できる方が良いと思っています。

>モジュール使っていないと、ある特定の処理をするコードを沢山書く必要が出てくるかも。
サブルーチンとして、共通して用いる全ての動作は配列化(=オブジェの個数分repeatで、動作に用いる値は作業変数以外全て先の実数型配列変数)しているのでその必要はなく出来ています。
比較として例えばサブルーチンを用いるのでなくて、1つのモジュール内で#deffuncとかの新規命令を用いる場合、加算中の値などの保持しておくことが要る内部状態を用いる動作の場合、結局その値にHSPでは配列変数を用いることになると思います。(#modfuncを用いたり1つの動作毎にモジュール化したりしても、HSPでは構造体がないからか利点がないっぽい。)
で、結局その現状になったと思います。

ということで、特にRPGを実際に作った人の意見も知りたいと思っています。



あり

リンク

2013/7/19(Fri) 01:16:44|NO.55745

一般的にモジュールを利用しない&ソースコード内に全てのデータを記述した場合に
起りえると想像される最大の問題点は、システムを変更したり作り直す場合に
全てのソースコードを確認・修正しなければならなくなるという点でしょうか。

特にRPGのような規模の大きいプログラムだとソースコードが数千から数万行に
なる事も予想されるので、その手間を軽減する為に処理をモジュール化したりデータを
外部に保存するという手段が確立されていったのだと思います。

逆に言えばこの点についての対処法が確保(もしくは手間をかける覚悟が)
できているのであれば自分の好きな方法で自由にプログラムすればいいと思いますし
誰かがとやかく言える問題でもないでしょうね。
趣味である以上、他人がどう思おうと自分がやりやすい方法で
最終的に目標を達成できれば良いのですから。


他の問題点については経験者(Veさんとか)がレスしてくれる事を期待しましょう。



Ve

リンク

2013/7/20(Sat) 12:42:45|NO.55776

およびがかかったので・・・

自分が作った時は、アイテム・スキル・敵・マップ(使用BGM・敵種類・イベント含む)をそれぞれのエディタを用意。
それらを外部データにして、ゲーム中で読み込んで反映という形。
モジュール化はしてません。データ内容が様々で利用が少ないので。

▼アイテム・スキルデータ内容はこんな感じ

名前,アイコン画像,説明,販売価格,種類,パラメーター

▼イベント

#18 ←イベントID 0,0 ←フラグあり・なし,あった場合のフラグID 2,11,35,28,0 ←イベント種類,画像,X座標,Y座標,向き @会話,0,そとには モンスターが いっぱいだ。@ちゃんと そうびを かったほうがいいよ。 @終了

データ内容は「,」で区切った文字列を1行ずつ読み込んで、それぞれの配列に入れていく。
アイテム等は読み込んだ行=IDという感じにして、後の呼び出し方法はまったく一緒かな?


>画像のパスやイベントでのセリフなどに用いる文字列は、初期化用とメインループ部分用の中でHSPコードとして直に書いている。

某HSP製大作RPGもセリフは直ソースでしたし、根気があれば問題ないでしょう。

僕がエディタにこだわったのは、極力作業の手間を減らす為だったのですが、エディタ自体を作るのが凄く大変でした。

そう考えると直ソースでも製作スピードが速いなら、無理にエディタにこだわらなくてもよいと思います。



 

リンク

2013/7/22(Mon) 00:01:29|NO.55801

ありさん、Veさん、回答ありがとうございます。
MGは知ってたけどやったことはなくて、VeさんのWDは11時間くらい連続で最後までやったことがありますw


イベント部分について俺はモジュール化と外部化(=規格化?)のことが混ざっていたのかも知れません。

モジュール化については、標準命令だけでの描画とhgimg3での描画という複数の手段を考えるだけで、どの部分が本質かが分かりやすくなりました。
(hgimg3のためだけに必要になる変数とかが出てきますからね。)

新規命令に配列の1要素を渡せると確認しましたし(渡せないと勘違いしていた)、
回答を見ていろいろ考えてモジュール化も良いなと思って、いろいろ考えたり試したりしているところです。

改めて、ありがとうございました。



Ve

リンク

2013/7/22(Mon) 02:29:55|NO.55805

RPGの評価点のひとつとして、

・移動速度は可変できた方が良い←ダッシュ等
・メッセージ速度も可変できた方が良い←メッセージ表示速度
・敵とエンカウントさせないほうが良い

割と一般公開されているRPGは、サクサク進むRPGが多いので、
それに習った感じのほうが、ウケが良いです。

当初はそんな事をあまり考えて設計してなかったのですが、
公開後、そんな意見がチラホラ出てたので、後に手直しする作業が・・・

当初から、サクサク進めるように設計しておくと、後々楽かもしれません。



ONION software Copyright 1997-2023(c) All rights reserved.