X



DXライブラリでアクションRPGを作る
0053名前は開発中のものです。
垢版 |
2018/11/19(月) 04:16:23.48ID:bEhLp9Ag
あと良かったら教えてください

膨大になるであろうNPCたちの台詞って
外部ファイルで用意するの?
>>22
>Luaと言うスクリプト言語で管理
とあるけど、Lua使ったら
台詞DATAの外部ファイル用意しなくていいってわけじゃないと
思うんだけど、違います?
00571 ◆UQLL.hKNIk
垢版 |
2018/11/20(火) 01:18:34.34ID:bar2632g
>>53
function search()
msg("こんにちは")
msg("今日もいい天気ですね")
keyWait()
clearMessage()
end

上記はLuaスクリプト(test.lua)の一部です。参考になりましたらどうぞ。

セリフは例のようにLuaファイルに全部べた書きしています。 テキストファイル等から読み込む方法は知らないのでやっていません。 『外部ファイル』の意味がザックリしてて、よく分からないかったので あのように答えました。

C言語からLuaがどのように呼び出されているか説明します。 function search()関数はプレイヤーがNPC等を調べた時にC言語側からLuaを呼び出す ようにしています。

msg("こんにちは")
次のmsg関数はC言語で定義されています。 ここでLuaからC言語を呼び出しています。 C言語側でメッセージを表示します。

メッセージが表示されたら次に
keyWait()
が実行されます。キー入力があるまで待機します。

キー入力があったら次の行の
clearMessage()
が実行されてメッセージを消去します。

基本的に
C言語 ⇒ Lua ⇒ C言語
の順番で呼び出す事によりLuaとの連携が実現されます。この説明で分かりましたでしょうか?
0058名前は開発中のものです。
垢版 |
2018/11/21(水) 17:43:44.89ID:qaJCec5N
>>57
ありがとう、すごくわかりやすい。
そうか、備え付けのフォント打ち出す分には
テキスト直打ちでいいのかー
それはラクそう!
00591 ◆UQLL.hKNIk
垢版 |
2018/11/22(木) 00:05:00.88ID:qBtTzCkW
>>58
わかってもらえて良かったです^^
楽でいいですよ
0062名前は開発中のものです。
垢版 |
2018/11/30(金) 02:34:08.56ID:lH6FeEMp
お疲れ様です!
PG歴20年だそうですが、過去に同人ゲームを完成させたり、
イベント販売した経験がある?
結構売れたりした??
00631 ◆UQLL.hKNIk
垢版 |
2018/12/01(土) 01:29:46.27ID:gO6NoQRi
>>62
過去に完成させた同人ゲームは23本です
未完成を合わせると100本ぐらいです
大手サイトに登録したのが5本で、雑誌に載った事が2回あります
その内の1本は雑誌の後ろの方のちょっと良い所に載せてもらいました
イベントで販売した事はありません
00641 ◆UQLL.hKNIk
垢版 |
2018/12/01(土) 02:19:28.00ID:gO6NoQRi
そろそろこのスレのルールを決めます。
ゲーム製作技術以外の書き込みを禁止します。
もしあった場合はスルーしますのであらかじめご了承ください。
0066名前は開発中のものです。
垢版 |
2018/12/02(日) 12:47:34.64ID:o/n4MA2t
>>64
俺もDXライブラリかじってるんですが
アクションRPG作りたいです
広いマップの描画方法はどうしてますか?
一気に描画はしてないと思いますが、エリアごとに切り替え描画してるんですか?
制作技術の話ですよね?
教えてほしいです

あと、今回のゲーム制作で参考にしてる参考書、
サイト等あります?
0067名前は開発中のものです。
垢版 |
2018/12/02(日) 12:51:22.64ID:o/n4MA2t
あと、ゲーム製作技術以外の書き込みを禁止ってことは
応援レスや進行具合への感想レスもしちゃいけないってことですか??
00681 ◆UQLL.hKNIk
垢版 |
2018/12/03(月) 01:53:40.14ID:KyuaEvMn
#define CHIP_SIZE 16

int v = 0, h = 0;

int map_dat[8][8] =
{
0,0,0,0,0,0,0,0,
0,0,0,0,0,1,1,0,
0,0,1,0,0,0,0,0,
0,0,0,0,2,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,
0,0,0,0,0,1,0,0,
0,0,0,0,0,0,0,0,
};

for (int y = 0, vw = v, i = 0; i < 4; i++, vw++, y += CHIP_SIZE)
{
for (int x = 0, hw = h, j = 0; j < 4; j++, hw++, x += CHIP_SIZE)
{
int dat = map_dat[vw][hw];
Draw(x, y, dat);
}
}

0 : 草原
1 : 森
2 : 家

こんな感じでどうでしょうか?
v,hの値を変化させるとマップがスクロールします。
00691 ◆UQLL.hKNIk
垢版 |
2018/12/03(月) 01:56:19.35ID:KyuaEvMn
>>67
…続き

マップの広さは関係ありません。
エリアごとに切り替えて描画はしてませんよ。
今回参考にしている本やサイトは特にありませんが、何か分からない事があったら、その都度ネッ
トで調べています。今まで参考にしたサイトは余りにも膨大過ぎて自分でも分かりません。

>>ゲーム製作技術以外の書き込みを禁止
これに関しては中途半端な状態にしておくと、変な書き込みも増えてしまうので
仕方がないです。
0070名前は開発中のものです。
垢版 |
2018/12/03(月) 21:05:17.29ID:fyG8by9I
>>68
map、自分も同じようにしてます。

ただ、RPG並みのmapサイズで作ったことは無いんですよ
全フィールドを作ってるなら
mapの配列の要素数、そうとうな数になってませんか?
例えば、こんな感じの桁数じゃないですか?
map_dat[100000][100000]

>>69
ストイックですね、すごいです
00711 ◆UQLL.hKNIk
垢版 |
2018/12/04(火) 01:14:13.70ID:Oou+PYs5
>>70
ゲームの画面サイズ : 640 * 640
マップチップのサイズ : 32 * 32
640 / 32 = 20チップ

1画面、横の列が20チップになります。横に256画面あるとします
20チップ * 256画面 = 5120Byte

縦 * 横で、
5120B * 5120B = 26214400B

100万で割ると、
26214400B / 1000000 = 26.2MB

Int型は4バイトなので、
26.2MB * 4B = 104.8MB

レイヤ3つ分で、
104.8MB * 3レイヤ = 314.4MB

最終的にこうなります
int map_dat[3][5120][5120];
サイズ : 314.4MB

今の環境ならメモリが 314MB は大丈夫だと思いますよ。それに256 * 256画面は相当大きいです。
そんな壮大なRPG作り切れますか?

3 * 5120 * 5120 = 約7千900万
100000 * 100000 = 100億

>>ストイックですね、すごいです
どうも^^>>70
0072名前は開発中のものです。
垢版 |
2018/12/05(水) 12:43:31.49ID:ojS8GHOx
>>71
解説上手ですね、納得しました。
あと三次元配列、便利そうですね。
自分はMapのレイヤー分けは別の配列宣言して最終的に重ねて描画してましたが、
2Dゲームにおいてもそんな使い方があったとは勉強になりました、ありがとうございます。
00731 ◆UQLL.hKNIk
垢版 |
2018/12/06(木) 00:14:13.91ID:0befijOQ
>>72
参考になってよかったです
ゲーム制作お互いに頑張りましょう^^
0075名前は開発中のものです。
垢版 |
2018/12/07(金) 14:40:45.28ID:US4pEEV+
>>74
イベント配置エディタの動画見ました
解説が無いのでわからないんですが
あのツールでできることはどんなものですか?
面白そうなので教えてください
00761 ◆UQLL.hKNIk
垢版 |
2018/12/08(土) 00:26:13.92ID:v+qgbxoN
>>75
void IObject::Save(CBinaryFile& binaryFile){
//モデルID
binaryFile.writeString(m_modelID);

//スクリプトファイル名
binaryFile.writeString(m_scriptFileName);

//向き
binaryFile.writeString(m_strDir);

//ランダム移動
binaryFile.writeChar(m_bRandomMove ? 1 : 0);

//イメージ番号
binaryFile.writeShort(m_imageIdx);

//座標
const int CHIP_SIZE = 16;
binaryFile.writeShort(m_x / CHIP_SIZE);
binaryFile.writeShort(m_y / CHIP_SIZE);

//有効か?
binaryFile.writeChar(m_bEnable ? 1 : 0);

//固有ID
binaryFile.writeString(m_uniqueID);

//接触範囲拡張
binaryFile.writeShort((short)m_contactRangeExt.x);
binaryFile.writeShort((short)m_contactRangeExt.y);
}
00771 ◆UQLL.hKNIk
垢版 |
2018/12/08(土) 00:35:37.48ID:v+qgbxoN
>>75
…続き
上記がイベント配置エディタのセーブの部分です。
内容はキャラクターのID(種類)、座標、向き、使用するスクリプトファイル名等がバイナリ形式で書き出されます。
非常に単純なファイルなので、ジャンルは問わずどんなゲームにも対応出来ると思います。
0088名前は開発中のものです。
垢版 |
2019/03/02(土) 19:59:17.21ID:PupBt1Lh
゚ ・ 。: .゚:. 。* o・ :゚゚ 。゚  :∴゚ ・ 。: . ゚:. 。*  o・:゚゚ 。 ゚:∴。:  ゚。
 ∴ 。o .゚ :.   。 o  ・ :゚゚   ・ : ゚゚ 。゚   :   ゚∴ ゚  ・ 。 : . *゚
o・ 。 ゚: .゚ ・  。 *: o・ :゚゚  。  /    ゚∴.゚ :.   。 o・ :゚゚ 。゚: ゚∴ ゚:
。 :゚。 ゚ ・o゚ ・ 。:  .゚:. 。*  / o・:  ゚゚ 。゚ :∴。:  ゚。  ゚∵: 。o゚  ・ 。
   。 o・    :゚゚   。゚:  ゚  /  ∴゚  ・ 。:   *∵   ゚∵     *。 :。 o゜゚
∴ 。 o・ :゚゚ 。  ゚:   ゚   /   ∴゚    。: .          *゚:.。  ゚∵* :
    。゚: ゚∴.    ゚:.   /   。 o゚ ・     o・。 ゚: .゚ ・  ・: ゚゚  。゚:
        ・ 。:.゚:   /     .。  o・:゚゚          。゚:゚ ∴ ゚ : ゚ ∵
 ゚ ・   。゚ ・ 。  : ☆ .  ゚* ・  ゚。 :.  。 *o・: ゚ ゚ 。゚:  ゚。  。゚:゚  *゚ ゚
∵ ゚∵:  o・:゚゚   。     ゚:゚∴ 。o *゚ ・ 。:    . ゚:.。   o・: ゚゚*:  o・
     。゚:゚ ∴ ゚   ゚: ゚ ∵゚。゚∵o:。o゚ ・     o・。 ゚: .゚ ・     。∴。: ゚。
。: .゚:.。 o     ・:゚゚∴ 。o・: ゚゚ 。゚: ゚ ∴゚ ・ 。:  . *゚: .。 o・:゚ 。 ゚: ゚。
 ・  ゜ 。  .
    .     ゜
.  。 ・    .
 ゜  \  ゜ .
゜ ・  。   ゜
 .    \ ゜  .
    .  。 ・
。  ☆   | .            そして彼らは星になった
 .  ・  。  ゜
  ゜・   / .
 。  . 。   ゜
.    . \   .
  ゜ ゜   \/゜
   .   . ゜
0089名前は開発中のものです。
垢版 |
2019/03/25(月) 22:52:55.60ID:aN6KxDVs
>>1
Unityを触ったみたいだけども、なぜそれでも
DXライブラリの方でアクションゲームを作ろうと思ったのか
教えてほしい。
Unityの方がラクに作れると思っているんだけどそうでもないってこと?
00901 ◆UQLL.hKNIk
垢版 |
2019/03/26(火) 00:45:04.67ID:3l/P0JTB
Unityの方がラクという根拠が分かりませんね。
一度Unityで作ってみると良いですよ。
それから判断するといいと思います。
0091名前は開発中のものです。
垢版 |
2019/03/28(木) 21:16:51.72ID:pm027ZKD
敵がたくさんいてレスポンスが求められる場合は、unityでは厳しかったかな。作るのが楽なのは同意。
0092名前は開発中のものです。
垢版 |
2019/04/05(金) 17:19:01.73ID:i7LQ175v
>>91
C++からUnityに移動しようとしたら
わけわからんかったよ
なんか組み立て方の構造そもそもが違う。
main関数で回すのが当たり前の脳だからとっつきにくかった
0093名前は開発中のものです。
垢版 |
2019/04/05(金) 20:53:37.09ID:bxQb55LR
Unityでガンドライブアーツのような多キャラ弾幕ゲーって無理なのか?
0095名前は開発中のものです。
垢版 |
2019/04/06(土) 22:21:06.40ID:gq0qum26
>>94
>Unityでもmain関数で回すようなコードを
>書いて動かせる

頼む、アマギフ1万払うんで
main関数で回した作成方法を解説してくれん?
0096名前は開発中のものです。
垢版 |
2019/04/07(日) 01:03:24.32ID:U+D17RB+
>>95
Unityは普通の使い方だと各オブジェクトで
void Start()とvoid Update()が呼び出されて処理する事になってるが
オブジェクトから他のオブジェクトを生成消滅や制御する事も可能だから
集中制御用オブジェクトを用意してそのUpdate()で
キー入力とって各すべてのオブジェクトを制御するメインループを書く
Unityの中のメインループから呼び出される集中制御用メインループを作る感じ
0097名前は開発中のものです。
垢版 |
2019/04/07(日) 18:10:19.90ID:U+D17RB+
smile game builderと言うツクールみたいなソフトの
ゲーム部分はmain関数で回っているが>>96の感じでUnityに移植されている
0099名前は開発中のものです。
垢版 |
2019/04/14(日) 06:51:41.87ID:Rl52zuYt
>>98
実装で大丈夫
1000個とかオブジェクトを作ってそのリストから制御できるよ
弾幕シューティングには向いてないけど特別なゲームでないなら十分に動く
DXライブラリなら2Dシューティングで1万オブジェクトが動き回るとかできるけど
Unityだと今はまだ重いからそれは工夫しないと実現できない
0100名前は開発中のものです。
垢版 |
2019/05/12(日) 11:44:05.54ID:WFcuNJr9
 ゚ ,   , 。 .   +  ゚   。  。゚ . ゚。, ☆ * 。゚. o.゚  。 . 。゚ ,
。 .  .。    o   .. 。 ゚  ゚ , 。. o 。* 。 . o. 。 . .。 . 
        。   .   。  . .゚o 。 *. 。 .. ☆ . +. .  .。 . 
 。 .  . .   .   .  。 ゚。, ☆ ゚. + 。 ゚ ,。 . 。  , .。 . ゚。,
゚。゚+゚`, o。。.゚*。゚ 。.゚ 。 ☆+。。゚. ° 。 .   ,      ゚    ゚. 
 。, .゚。 + ☆。,゚. o。 。+ 。゚.,  . ゚   ,   。     。   .  
 ゚. o * 。゚。゚.。゚。+゚ 。 。 ゚。 ゚ 。  ゚。 。 ゚。 ゚ 。
゚` .゚ .゚. ゚. . ゚  .  ゚  .   ,  .  .    / .  .   。      
                          /
                        ☆
.         そして彼らは星になった
      ( ‘j’)
       /⌒ ,つ⌒ヽ)  
       (___  (  __)  
"''"" "'゙''` '゙ ゙゚' ''' '' ''' ゚` ゙ ゚ ゙''`"''"" "'゙''` '゙ ゙゚' ''' 
0101名前は開発中のものです。
垢版 |
2019/06/17(月) 05:07:45.77ID:1jiFoI2e
あら、いつの間にか終わってんなw動画見るに大した完成度になって無いな
>>64の発言でこのスレから人がいなくなったようなもんだろw
アホすぎる。まあ自己中さんはマイペースでやりたかったんだろうけど
そのせいでてめえまでモチベが無くなってんじゃ本末転倒だな
レスを投稿する


ニューススポーツなんでも実況