Skip to content

RPGの簡易サンプル(シーン寄せ集め)

License

Notifications You must be signed in to change notification settings

kazmura11/DxRpg2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

フィールド 戦闘シーン

※素材を準備・設定するのが面倒だったのでフィールドがいい加減な状態
 (4種32x32の画像しか使ってない)になっています。
 とはいえ、素材のおかげでかなりいい感じの見た目になっているので、素材提供者様、ありがとうございます。

概要

DXライブラリを使用したRPGのサンプルです。
ただし、dixqさんのhttp://dixq.net/sakuhin.html
にあるサンプル
ゲーム名 : RPGのサンプル
を丸々参考にさせていただいています。素材探しの絡みもあったりで機能を削っています。
Cで書かれているものをC++で説明(コメント)付で記載させていただきました(現状非公開)。
dxiqさんのホームページ http://dixq.net/
本人曰く相当前に書いたもので、アンチパターンの嵐で、 比較的新しい記事を見ると別人が書いたようなソースコードに代わっています。 効果音や音楽はライセンスを調べるのに困難だったため、そのあたりのコードは削除しました。

使い方

Dxライブラリが必要です。 下記Visual Studioの設定をしてビルドをする必要があります。

操作方法

矢印ボタン 移動
Bボタンを押しながら移動 2倍速で移動
Fボタンを押しながら移動 4倍速で移動
Eボタンを押しながら移動 エンカウントしない
Xボタン 決定
Zボタン キャンセル

開発環境構築(ビルド設定)について

Visual Studio Community 2017以降 推奨 (C++14の機能一部使用)

Dxライブラリのインストール

https://dxlib.xsrv.jp/dxdload.html
よりVisual Studio用のをダウンロードして、 DxLib_VC3_21.zipを展開します。 解凍後DxLib_VCというフォルダがあるので、それを
C:\Library\ディレクトリを作成し、C:\Library\に移動させます。

C:\Library\DxLib_VC\プロジェクトに追加すべきファイル_VC用C:\Library\DxLib_VC\DxLibraryに名前変更します。 以上でDxライブラリのインストールは終わりです。

Visual Studioの設定について

なお、DXライブラリのパスは
C:\Library\DxLib_VC\DxLibrary
としています。
さらにシステム環境変数に
DX_LIB_VC_DIR
に上記パス(C:\Library\DxLib_VC\DxLibrary)を登録しています。
このあたりはVisual Studioのプロジェクトのプロパティ ページ
追加のインクルードディレクトリ等を見ていただければわかります。

ソースの構成についての説明

AppMain.cppのファイルがエントリーポイントです。
Util/GameControllerクラスがFPSとキー入力の制御を行っています。
Util/ResourceLoaderクラスは画像ファイルを読込むクラスです。
Util/SharedCharacterStatusクラスはHPとかMPとかを持っているクラスです。
Sequence以下のクラスがシーンの遷移を制御していてここのクラスの中の処理を
ぐるぐる回って処理されています。
最初はMapの画面からスタートして敵にエンカウントしたらバトルとなっています。
Mapに入っているものはフィールドに関するキャラクターのデータが中心です。
Battleにはいいているものは戦闘シーンに関するキャラクターのデータが中心です。
Battleは処理が多いので一部メインの処理はBattle内に処理を分割させているものがあります。
Battleの処理がまだ整理しきれてません。

処理の説明

もともと書いてあった説明をそのまま載せています。

戦闘突入時の処理について

戦闘シーンに突入する瞬間、画面を16分割してキャプチャし、その画像を中心から外へむけて座標移動して描画し(※1)、 一定の時間がたつと静止、ある程度静止したら加速度をもって落ちる(※2)ようにしてあります。
※1,2において、毎回同じ描画にならないよう、少々乱数の要素を持たせてます。
 x方向y方向にあらかじめ乱数をセットし、その乱数を使って微妙にずらして描画します。

ATBについて

ATB=アクティブタイムバトル。リアルタイムで戦闘が出来る戦闘システムの事
ATBカウンタ=最大になるとレインボーになるあのメーターのカウンタ
カウンタは満タンでないときで、増加フラグが立っている時は毎回1増加します。
1秒で60増加し、デフォルトで4秒で満タンにさせるため240で満タンになるようになっています。

戦闘中のメニューについて

時間があればここの構造も変えたいと思っています…普通に選択状態をクラスに持たせればよいので。

メニューは何を現在選択しているかという「選択状態」と選択しているy座標である「選択位置」から
諸々の計算を行います。
メニューは
「選択項目表示」->(決定を受ける)->「詳細選択項目表示」->(決定を受ける) =行動パターン決定
となっています。

選択状態は決定するごとに100をかけています。
「攻撃」の選択が1であった時は選択が決定されると選択状態は100になります。
選択状態が100~199の時は、攻撃に関する詳細選択項目を出します。選択後に10100~ 19900となります。
「魔法」の選択が2であった時はこの選択が決定されると選択状態は200になります。
選択状態が200~299の時は、攻撃に関する詳細選択項目を出します。選択後に20000~29900となります。

攻撃を選択・決定し、通常攻撃、をさらに選択・決定した場合、選択状態は10000になります。
選択状態は10000以上なら全ての選択が終了したことになります。

選択
攻撃 1
魔法 2
逃げる 3
選択
攻撃 100
-通常攻撃 10000
-テクニカルアタック 10100
選択
魔法 200
-キュア 20000
-エアロ 20100
-ファイア 20200
-フリーザ 20300
-サンダー 20400
選択
逃げる 300
-逃げる 30000
-略

つまりこのような対応になっていて、全てが決定されると詳細選択項目*100の値になります。

一方で選択位置は0から2で初期で選択状態は選択位置より+1というようにしています。

選択位置 選択状態
0 1
1 2
2 3

ダメージについて

ダメージは正規分布する乱数を用いて決定しています。計算式は以下です。

ダメージ = レベル * 2 + ((自分の攻撃力 + 武器の攻撃力)  
          - (相手の防御力 + 相手の装備防御力)) * 自分の力 * 乱数1 + 自分の力 * 乱数2  

だいたい自分の攻撃力が1あがったり相手の防御力が1下がるとダメージはだいたい1変化します。
レベルを基本ダメージとして加算するのでレベルが上がるごとにダメージは底上げされます。

ライセンス

ソースコードに関してはMITライセンス
その他素材(画像)については下記

素材

ぴぽや https://pipoya.net/
下記素材はぴぽやさんの利用規約に従います

[アニメーション]
resouces/img/animation/pipo-btleffect001.png
resouces/img/animation/pipo-btleffect037.png
resouces/img/animation/pipo-btleffect038.png
resouces/img/animation/pipo-btleffect039.png
resouces/img/animation/pipo-btleffect040.png
resouces/img/animation/pipo-btleffect045.png

[背景]
resources/back/kaidou0331_800b.jpg

[キャラクタ]
resouces/character/1.png
resouces/character/2.png
resouces/character/3.png
resouces/character/4.png

[マップチップ]
resouces/maptip/field.png

[モンスター]
resouces/monster/enemy_popm003.png

[数値]
resouces/num/suuji12x24_04.png
resouces/num/suuji12x24_06.png

以下自作の画像(利用規約は特になし)
[メッセージウィンドウ]
resources/battle/0.png
[ウィンドウ]
resources/battle/10.png
[サブウィンドウ]
resources/battle/11.png
[選択アイコン]
resouces/icon/cursor.png

About

RPGの簡易サンプル(シーン寄せ集め)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages