投稿記事

Demoの記事 (3)

Abyssstew 2024/06/18 04:36

制作進捗#03 研究共有:テーブル制御の採集システム

■ はじめに

いきなりPS:私は前の記事の冒頭に新しいデモ動画を追加しました。しばらくdemoをプレイすることができなかった友人たちも、デモ動画でゲーム内容を知ることができますよ~


最近、ゲーム内の採集システムを最適化しています。ここ数日迷っていましたが、最適化の結果はとても良く、採集システムの新しい処理方法を発見しました。ここで皆さんにシェアします。

演示。特に何もないように見えますが、実は重要なのは実現の仕方です。この採集システムはexcelテーブルによって制御されており、テーブル内のアイテムや確率を変更することで、ゲームに読み込まれることができますが、実現方法は複雑ではありませんので、必要な人にここで共有することで、役に立つと思います。

ここで必要なツールはDatabaseConverterMVです。これは無料で、steamで見つけることができます。その使い方は簡単に言えば:
1.プロジェクトのデータベースをexcelテーブルにエクスポートします。
2.excelテーブルを編集します。
3.編集したテーブルをプロジェクトファイルに導入します。
普通だと思います……か?データベースを一括編集することができ、時間を節約することができます。これが主な用途ですが、上限はそれではありません。ある日、私がテーブルに勝手に入力した情報がゲームプログラムに読み込まれることに気づき、新世界の扉を開けた、今日のテーブル制御採集システムの研究もあった。
PS:先日ゲームを翻訳したとき、すでにこのテクニックを使っていましたが、誰もが自分のゲームを翻訳する必要はないので、テクニックとして共有することはできませんでした。今日に至るまで採集テーブルを作成し、実行に成功しました……このツールの上限は予想以上に高く、複雑なデザインを完成させることができましたが、とにかく私はもっと早く知り合えばよかったと思う。
また、demoのイベントノートに「<Copy Event:4,1>」と表示されているのはyanfly先生のプラグイン:YEPEventCopier.js、メッセージに「 pum[0,0,0,0,Normal]」と表示されているのはやな先生のプラグイン:CommonPopupCore.jsPopupMessage.jsです。今回には、これらのプラグインは必須ではなく、補助的な役割を果たすだけです。具体的には、プラグインの説明を参照してください。


ツールの紹介が終わり、準備ができました。まず採集のプロセスの例を見てみましょう:
1.プレイヤーが採集ポイントを調査
2.採集ポイントは乱数を生成し、採集プロセッサを起動し、それから自分を一時的に隠す(実は「繰り返し開くことができる宝箱」)
3.採集プロセッサが起動され、乱数に基づいて素材プールから特定の物品IDを取得する
4.採集プロセッサがプレイヤーにそのアイテムを獲得させる
5.終了
問題ないように見えますが、実際に実現するには、プログラミングの基礎がなければ、巨大なデータ量に押しつぶされたり、柔軟性の限られた設計しか得られません。低データ量と高柔軟性を両立することはできません。

■ テーブルの作成

採集テーブルを作成することで、この問題を解決することができます。採集システムを構想する際には、採集ポイントのタイプ(木か石か)、所在地(初心者村か魔王城か)、産出素材(ゴミや希少素材)、産出確率(高いか低いか)これらは当たり前に考えられるです。
私たちはこれらの当たり前のものを利用して、このシステムを完成させなければなりません。
まず、採集ポイントのタイプ、位置、具体的な素材、確率を、データの論理で考えてみましょう:

・採集ポイントのタイプは、数字で表し、1は草、2は石、3は水産……と類推する。文字列で表現しないのは、このデータが後で計算に参加するからです。
・位置については、同種の採取ポイントから産出される素材によって、ゲームに1、2、3、4…などのエリアを区切る。(同じ草採集点でも素材が異なるのは、場所が異なるため)
・産出される具体的な素材。IDでこれらのアイテムを表すこともできますし、名前を使うこともできます。ここはデータが多いので、テーブルを見たり変更したりしやすいように、名前を使いました。
・産出確率。対応素材の横に書くといいです。採集ポイント内の確率は、計算を容易にするために100の合計を推奨します。(経験者は自分で構想できる)


そして私逹はこのようなデータテーブルを手に入れました。私逹の目標はこのテーブルをプロジェクトに導入し、見てすぐに得られるようにすることです。


しかし、現在のテーブルはdatabaseの構造は異なり、直接使用することはできません。このテーブルをdatabaseの構造に合わせる必要があります。

私はテーブルのフォーマットをこのように変更して、今回は本当にプロジェクトを導入することができました。

←完全なテーブルはこの通りです。

この完全なテーブル(ExportFolderフォルダ内)をプロジェクトにインポートし、ゲームを実行し、F8のコンソールに$dataItems[22].dropAと入力すると、結果は「草I」("草!")、同理$dataItems[22].dropAPの結果は「50」であった。

ここまで来ると、スクリプトをよく使う友人は、次はどうすればいいかわかってきます。

■ イベントの作成

《画像変数名対照表》
01 随机数       : 乱数
05 採取点所在地图ID : 採取ポイント所在の地図ID
06 採取点所在区域   : 採取ポイント所在のエリア
07 採取点类型     : 採取ポイントタイプ
08 採取点ID     : 採取ポイントID
11 获取的物品ID   : 取得したアイテムID
12 获取的物品名称   : 取得したアイテム名


目の前に採集ポイントがあり、触ってみると、それは……
1.0 ~ 99の乱数を生成し、自身の採集ポイントタイプ(1は草、2は石)と乱数をそれぞれ変数に格納し、採集プロセッサを起動しました。

2.採集プロセッサ起動後:自分がいる地図の地図IDを取得し、地図IDをエリア番号に変換する。(上表によると、新米草原Aの番号は21、新米草原Bの番号は26、魔王城の番号は31)

3.エリア番号と採集ポイントタイプを加算すると、得られた数値が特定の採集ポイントにインデックスされます。(例えば、採集プロセッサが得た番号は26であり、タッチされた採集ポイントはそのタイプの数値が2であることを返し、28を加算して得られ、28はdatabaseテーブル内のIDが28である行を表す)

ここまで、私たちは目の前の採集ポイントのすべての情報を把握しており、残りはどのようにしてプレイヤーに採集ポイントの中のアイテムを獲得させるかです。

【確率計算】
確率の計算方法は、皆さん自身の好みがあるかもしれませんが、ここでは参考にして1つを書きましょう。
先に採取ポイント内の素材ごとの確率を加算した結果を100とし、それに0 ~ 99の乱数pを得た。
仮にこの採集点が魔王城の石(ID:33)であるとすると、石III、石IV、石Vの3種類のアイテムが出現し、その確率はそれぞれ50%、30%、20%である。予想:
p>=0 && p<50 , 石III get
p>=50 && p<50+30, 石IV get
P>=50+30 && p<50+30+20, 石V get
スクリプト形式で書く:

このステップでは、取得するアイテムの名前だけが得られ、そのアイテムを直接取得するには、私たちこのアイテムのIDが必要です。まず変数Iにアイテムの名前を入れて、次のステップに使います。

【アイテムを取得】
アイテムリスト全体のアイテム名を巡回し、以前に取得したアイテム名と比較するためのループを作成します。


←プロジェクトのスクリプト表示。

■ 最後に

ここまですべて完了しても、今後はdatabaseテーブルを更新するだけで、採集ポイントの素材や確率を制御することができます。
採集点の更新、中大賞、多重採集などは、この仕組みに追加することができ、今回のテーマではないので、ここでは展開しない。以上です。

フォロワー以上限定無料

今度のサンプルエンジニアリングファイルです!(テーブル付き)

無料

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

Abyssstew 2024/06/18 04:35

制作进度#03 研究分享:表格控制的采集系统

■ 引入

唐突题外话:我在上一篇文章的开头添加了新的演示视频,暂时无法游玩demo的朋友们也可以通过演示视频来了解游戏内容哦~


最近我在优化游戏中的采集系统。虽然这几天总是感到迷茫,不过优化的结果却挺好的,发现了一些新的关于采集系统的处理方法,在这里分享给各位。

演示。看上去似乎没什么特别之处,其实重要的是实现的方式。这个采集系统是通过excel表格来控制的,修改表格内的物品或概率,都能够被游戏所读取,而实现方式又不复杂,所以在这里分享给有需要的人,我想应该会有所帮助。


这里需要用到的工具是DatabaseConverterMV,它是免费的,你可以在steam上找到。它的用法简单来说就是:
1.将你的工程的数据库导出为excel表格。
2.你编辑excel表格。
3.将编辑后的表格导回工程文件。
平平无奇,是吗?能够批量编辑数据库,就能节省大量时间,这是它的主要用途,但它的上限却不在于此。有一天我发现我在表格内随意录入的信息能够被游戏程序读取,这才打开了新世界大门,也就有了今天的表格控制采集系统的研究。
PS:前阵子我对游戏进行翻译时,已经开始在使用这个技巧了,不过因为不是人人都需要翻译自己的游戏,也就没有作为技巧分享出来。直到今天我用它制作了采集表,并且成功运行……这个工具的上限比预想的要高很多,它能够完成很多复杂的设计,总之我是相见恨晚了。
另外,demo中事件备注标有"<Copy Event: 4, 1>"字样的是yanfly大佬的插件:YEP_EventCopier.js;信息框标有"_pum[0,0,0,0,Normal]"的是やな大佬的插件:CommonPopupCore.jsPopupMessage.js。这几个插件在这次制作中不是必须的,只起到辅助作用,具体可以查看插件的说明。


介绍完工具,该准备动手了,先看一个采集运作流程的示例:
1.玩家调查采集点
2.采集点生成随机数、激活采集处理器,然后暂时隐藏自己(其实就是"可以反复开的宝箱")
3.采集处理器被激活并根据随机数从素材池中获得特定的物品ID
4.采集处理器使玩家获得该物品
5.结束
看起来没什么问题,实际上实现起来的话,如果没有编程基础,要么被巨大的数据量压垮,要么只能得到灵活度有限的设计。低数据量和高灵活性不能兼得。

■ 表格编辑

而制作采集表格可以解决这个问题。我们在构想采集系统的时候,采集点的类型(木头还是石头)、所处位置(新手村还是魔王城)、产出素材(垃圾和稀有素材)、产出概率(高还是低)这些都是理所当然会想到的
我们要利用这些想当然的东西,来完成这个系统。
首先,我们要将采集点的类型、位置、具体素材、概率,以数据的逻辑进行思考:

・采集点的类型,用数字来表示,1表示草、2表示石、3表示水产……以此类推。之所以不用字符串表示,是因为这个数据之后要参与计算。
・位置的话,根据同类采集点产出素材的不同,给游戏划分1、2、3、4……等区域。(同样是草类采集点,产出素材却不同,原因就是所处区域不同)
・产出的具体素材。可以用ID表示这些物品,也可以用名称,因为这里数据多,为了让表格方便查看和修改,我使用了名称。
・产出概率。写在对应素材的旁边就好。一个采集点内的概率建议总和为100,方便计算。(有经验者可以自己构想)


然后我们就得到了这样的数据表格,我们的目标是将这个表格导入工程,实现所见即所得。


不过目前这个表格和database的结构不一样,并不能直接使用,需要让这个表格符合database的结构。

我把表格格式改成这样,这次就真正能够导入工程了。

← 完整的表格是这样子的。

将这个完整表格(在ExportFolder文件夹中)导入工程中,运行游戏,在F8的控制台中输入 $dataItems[22].dropA,就能得到结果:"草I"("草!"),同理 $dataItems[22].dropAP的结果为"50"。

到这一步,经常使用脚本的朋友,就已经知道接下来该怎么做了。

■ 事件编辑

你的面前有一个采集点,你碰了一下,它……
1.它生成了一个0~99的随机数,将自己的采集点类型(1表示草,2表示石)和随机数分别存入变量,然后叫醒了采集处理器。

2.采集处理器启动后:获取自身所处地图的地图ID,将地图ID转换为区域编号。(根据上表,新米草原A的编号为21,新米草原B编号为26,魔王城编号为31)

3.区域编号和采集点类型相加,得到的数值就会索引到特定的采集点。(比如采集处理器得到的编号为26,被触摸的采集点返回了其类型数值为2,相加得到28,28代表的就是database表格内ID为28的这一行)

到这里,我们已经掌握了眼前采集点的全部信息,剩下的就是如何通过概率,让玩家获得采集点里面的物品了。

【概率计算】
概率的计算方式,大家可能有自己的偏好,这里我就只写一个作为参考吧:
前面我们让采集点内的每个素材概率相加的结果为100,而且得到了一个0~99的随机数p。
假设该采集点为魔王城的石(ID:33),会出现石III、石IV、石V这三种物品,其概率分别为50%,30%,20%。预想:
p>=0 && p<50 , 获得石III
p>=50 && p<50+30, 获得石IV
P>=50+30 && p<50+30+20, 获得石V
写成脚本形式:

这一步我们只得到了要获得的物品的名字,想要直接获取到该物品,我们需要这个物品的ID。我们先把物品的名字存进变量I中,下一步要用到。

【获取物品】
创建一个循环,目的是遍历整个物品列表的物品名称,和我们之前获得的物品名称进行比对。


← 脚本在在工程文件中的展示。

■ 结语

到这一步,就算全部完成了,今后只需要更新database表格,便能够控制采集点的素材以及概率。
采集点的刷新、中大奖、多重采集等,可以在这个机制上进行添加,由于不是本次的主题,这里就不展开讲了。以上。

フォロワー以上限定無料

这个是本次采集系统的示例工程文件(附有表格)

無料

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

Abyssstew 2024/06/09 21:36

制作进度#02 免费Demo!/制作進捗#02 無料Demo!

■ 👉 DEMO! 👈


▲ 战斗在2分30秒后开始!
  戦いは2分30秒後に始まる!


咫尺天涯,大概就是游戏开发的常态吧。
虽然demo的大部分已经完成了,但是调整和补充就需要花费几天时间,『实际可怕』!
实装立绘时还发现立绘的线条有些细,也有其它细微的问题,需要之后进行调整。
总之demo整体没什么大问题,这算是值得纪念的一刻`
来看看成果吧。

近いけど随分隔たっている……たぶんはゲーム開発の常態だろう。
demoのほとんどは完成していますが、調整や補充に数日かかる、 『実際恐ろしい』!
立ち絵を実装する際には、立ち絵のラインが少し細いことがわかり、他にも些細な問題がありますが、後で調整する必要があります。
とにかく、demo全体は大した問題はありませんが、これは記念すべき瞬間です!
成果を見てみましょう。

JRPG221004+++.zip (589.95MB)

ダウンロード

👆demo在这里下载游玩!此demo同时支持中文和日文哦。
👆demoはここでダウンロードして遊びます!このdemoは中国語と日本語を同時にサポートしています。

■ demo介绍 / demoの紹介

【 插播 / 補間 】

艾拉的技能切换机制成功保留下来了,我找到了方法,并且完成了。在这个demo中就能够体验到。

エイラのスキルの切り替えの特性の保留は成功しました!私は方法を見つけて、そして完成しました。このdemoで体験できます。


回归正题,此demo可以体验到:
本題に戻ると、このdemoでは、次のことを体験できます:
・简单的开场剧情 / 簡単なオープニングストーリー
・战斗系统和部分技能 / 戦闘システムと一部のスキル

开场剧情除了最开始的时候触发,还可以在引导NPC处再次查看。
技能可以在角色技能界面学习,然后在右上角的敌人处进行测试。

オープニングは最初にトリガーされるほか、案内NPCで再確認することもできます。
スキルはキャラのスキル画面で学習し、右上の敵でテストすることができます。

■ 角色特征介绍 / キャラ特性の紹介

罗恩,各种RPG作品中常见的战士。
・生存能力强,能够守护队友,而且进攻性也不容忽视。攻守兼备就是罗恩的优点。
・生存方面,有自动回血、不屈、免疫眩晕等经典技能。
・进攻方面,有狂暴姿态、烈升龙、终结一击等强力技能,展现出狂野的一面。
・以及有着攻击守势、反击斩等攻防一体的技能,在困境中也能够逆转局面……
这次demo只放出偏前期的技能,后续随着demo版本更新,会放出中后期的技能。

ロワン、様々なRPG作品でよく見られる戦士。
・生存能力が高く、チームメイトを守ることができ、また攻撃性も見逃せない。攻守兼備がロワンの長所だ。
・生存面には、自動回復、不屈、スタン無効などの古典的なスキルがある。
・攻撃面には、狂暴スタンス、烈昇龍、ファイナルストライクなど強力な技があり、ワイルドな一面を見せる。
・攻めの守勢、カウンタースラッシュなど攻防一体のスキルを持ち、苦境でも局面を逆転できる……
今回のdemoは前期に偏ったスキルのみを放出し、その後demoバージョンの更新に伴い、中後期のスキルを放出する。


艾拉,各种RPG作品中常见的元素使。
因为其他主要角色无法自由操弄法术,法术的重担就交给艾拉了。
结果就是艾拉技能的数量非常多,为了浓缩技能,给艾拉设计了"蓄力"的特征:蓄力状态下,技能的效果会发生改变。
在缩减技能总数的同时,艾拉的操作感也提高了。(玩起来很有法师智斗的感觉)
・8种属性的不同风格的法术,每种属性有4个性能各异的攻击法术和2个辅助法术。还有数个无属性的攻击和辅助法术。
・被动技能的方向有很多,强化特定属性的、强化克制特效的、强化物理伤害的……可以自由组合。
这边放出了4个属性的全部法术和一些其它的,可以在demo中自由体验。

エイラ、様々なRPG作品でよく見られる元素使い。
他の主要キャラは自由に魔法を操ることができないため、魔法の重荷はエイラに任せた。その結果、エイラのスキルの数は非常に多く、スキルを濃縮するために、エイラに「チャージ」の特徴を設計した:チャージ状態中、スキルの性能が変わります。スキル総数を削減すると同時に、エイラの操作感も向上した。(遊ぶと術師の智斗っぽい)
・異なるスタイルの8種類の属性の術で、各属性に性能の異なる4つの攻撃法術と2つの補助法術がある。無属性の攻撃や補助法もいくつかある。
・パッシブの向きは様々で、特定の属性を強化するもの、弱点属性攻撃を強化するもの、物理的ダメージを強化するもの……自由に組み合わせることができます。
こちらは4つの属性のすべての術といくつかの他のものを放出し、demoで自由に体験することができます。

■ 结尾 / 最后に

感谢你看到这里,游玩愉快!
ここを見てくれてありがとう、楽しんでね!

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

限定特典から探す

記事を検索