GameMaker 日本語掲示板

ダイアログシステムの実装について

5 コメント
views
17 フォロー

質問失礼します。
GBAもしくはDS時代のパワポケのようなアドベンチャーゲームを作りたいのですが、
メッセージを管理する仕組みの実装イメージが想像できません。

以下に詳細を書きます。
公式のダイアログシステムのチュートリアル
(https://www.youtube.com/watch?v=k3AAxKOl-yU&list=PLHguYbyJD9BbH4HIyaVAerrV0zZgdOEUG&index=13&t=239s)
を確認しました。
このチュートリアルでは、ダイアログシステムを書き込んだオブジェクトの子オブジェクト内で、
セリフを順々に書き込んでいく仕組みでした。
しかし、そこまでしかチュートリアルはなく、その子オブジェクトを
必要に応じて生成・削除するオブジェクトの実装方法については述べていませんでした。
その管理オブジェクトは、アクションゲームで言う、ステートマシンのような構造を想像したのですが、合っていますでしょうか。
この考えで行動してもいいのですが、どうにも効率がいいかと考えると自信が湧かず、実装にかかる時間はなるべく節約しておきたいので、
質問致しました。

また、これは別に解決が求められる疑問ではないのですが、いかに記します。
上記のチュートリアル内では、表示されるセリフを配列で管理していたのですが、
その配列に要素のセリフを追加する際、array_pushを使わず自作関数を使っていたり、
配列から要素を削除する際に、array_shiftではなく自作関数を使用していたりしているのですが、
これは何か意図があるのでしょうか。

OVER
作成: 2024/08/15 (木) 22:42:18
通報 ...
1
サトヤガンジ 2024/08/18 (日) 09:35:03

質問の趣旨とはずれるかもしれませんが、基本的なダイアログシステムの構築が楽になるGameMakerのライブラリーがあります。
リンク
テキストのタイプライター効果や、テキスト折り返しの条件などを割と簡単に指定できます。
機能がてんこ盛りなので、ドキュメントを精読して色々実験する必要はあると思いますがアドベンチャーゲームの作成にも役立つと思います。
解答がズレてたらごめんなさい!!

2
サトヤガンジ 2024/08/18 (日) 09:36:32

リンク
上のリンクが切れてたので再掲です。

3

回答ありがとうございます。

リンクのマニュアルを読み、テストプロジェクトにて使用テストを行いました。
立ち絵操作以外の処理を行う単発式のダイアログシステムは
ほぼ完成してしまったので、せっかくなのでそちらを使用していこうと思います。
テキストの色を文字列から簡単に変えられるのは良いですね。
私は見つけられませんでしたが、表示するメッセージ、立ち絵の情報、発言者……などをまとめて管理する機能もあったりするのでしょうか。
行き詰まったりしたら、今後、使用するかもしれません。

4

こんにちは
自作したダイアログシステムで開発していますが
チュートリアルの内容と若干似ているようなので
参考になるかわかりませんが私の手法を記載します。

メッセージの管理方法についてですが、すべて
CSVファイルで管理しています。
メッセージごとにID、話者名、アイコン(スプライトアセット名)、内容などを記載し、
GameMakerで配列内に構造体として読み込んでいます。
メッセージを表示させるときは、
例えばID1~5のメッセージ構造体を抽出して、描画用配列にプッシュするような使い方です。
続けて流すメッセージはグループ番号のようなものを振って、まとめて抽出するのもありです。

スプライトアセット名はそのまま文字列で読み込んでもエラーになるので、
asset_get_indexでインデックスIDに直してから使っています

array_pushやarray_shiftも使っていますが特に問題はないです。

参考になれば幸いです。
よろしくお願いします。

5

CSVファイルですか。参考になりました。
調べながらやってみます。
回答ありがとうございます!