Edited at

[DTL]名称の自動生成法🏠


( ¨̮ ) がっちょ談話 ( ¨̮ )

がっちょueki3.png

次の元号は"懲役"に決定したそうです。来年は懲役2年……嘘です。

今日は新元号公表とエイプリルフール、イベントが盛りだくさんですね!

【追記】新元号は"令和(れいわ)"に決まったそうです!今年は"R1"ですね!

ではでは、本編へ参りましょう。


🏠創った町に名前を付ける🏠

TownName.gif

今回は自動生成した町や城に名前を付けていきます。


🌏自動生成アルゴリズム🌏

今回生成するRPGフィールドマップの自動生成アルゴリズムは、"セルオートマトン法"を使用します。

(>> セルオートマトン法について解説した記事はこちら)


🏯初期国家の生成🏯

最初に設置する初期国家の生成は"イベント生成"を使用します。

(>> イベント生成について解説した記事はこちら)


🎵カタカナの50音(+濁音・半濁音)を用意🎵

constexpr std::array<std::string_view, 69> aa{ {"ア","イ","ウ","エ","オ","カ","キ","ク","ケ","コ","サ","シ","ス","セ","ソ","タ","チ","ツ","テ","ト","ナ","ニ","ヌ","ネ","ノ","ハ","ヒ","フ","ヘ","ホ","マ","ミ","ム","メ","モ","ヤ","ユ","ヨ","ラ","リ","ル","レ","ロ","ワ","ガ","ギ","グ","ゲ","ゴ","ザ","ジ","ズ","ゼ","ゾ","ダ","ヂ","ヅ","デ","ド","バ","ビ","ブ","ベ","ボ","パ","ピ","プ","ペ","ポ"} };

ヲやン等、一部の文字は省いています。


💻乱数を用意💻

std::mt19937 mt;

std::random_device rd;
mt.seed(rd());
std::uniform_int_distribution<> uid(0, static_cast<int>(aa.size()) - 1);
std::uniform_int_distribution<> uid2(3, 6);

uidは文字データの配列の大きさ、uid2は町の名前の最小と最大の文字数を決めています。

std::string str{};

for (int i{}, maxx{ uid2(mt) }; i < maxx; ++i) str += aa[uid(mt)];
str += "の町";

ランダムに取り出したカタカナから町の名前を生成します。


生成された町の名前

キチノの町

ウピゲの町
ベポカの町
メテチの町

名前が生成されました!


🌏完成(チュートリアル)🌏

TownName.gif

無事に名前を付けることが出来ました!


🔥応用編🔥


ローマ字

constexpr std::array<std::string_view, 69> aae{ {{"a"},{"i"},{"u"},{"e"},{"o"},{"ka"},{"ki"},{"k"},{"ke"},{"ko"},{"sa"},{"shi"},{"s"},{"se"},{"so"},{"ta"},{"chi"},{"tu"},{"te"},{"to"},{"na"},{"ni"},{"nu"},{"ne"},{"no"},{"ha"},{"hi"},{"f"},{"he"},{"ho"},{"ma"},{"mi"},{"m"},{"me"},{"mo"},{"ya"},{"yu"},{"yo"},{"la"},{"li"},{"l"},{"le"},{"lo"},{"wa"},{"ga"},{"gi"},{"g"},{"ge"},{"go"},{"za"},{"ji"},{"z"},{"ze"},{"zo"},{"da"},{"di"},{"j"},{"de"},{"d"},{"ba"},{"bi"},{"b"},{"be"},{"bo"},{"pa"},{"pi"},{"p"},{"pe"},{"po"}} };



生成された町の名前

スパジの町 Spaji Town

イマリの町 Imali Town
ゼケジの町 Zekeji Town
ミワフの町 Miwaf Town

今度は町の名前をローマ字と一緒に生成してみます。

TownName2.gif

このようにローマ字も付属させることが出来ました。


🐦Twitterでの反響🐦

生成された町に"ツラミの町"があったそうです 笑 (つらそう)


🌳タイルとして書き出し🌳

town.gif

RPGマップチップタイルとして書き出すとよりRPGっぽくなりますね。


実装ライブラリ(ソースコード)

今回解説した自動生成は"Dungeon Template Library"を使用して実装されています。

GitHubに全ソースコードを載せています。ご参考になれば幸いです。

ぜひ、活用してみてください!

logo640.gif


ソースコードのライセンス

These codes are licensed under CC0.

CC0

この記事のソースコードはCC0ライセンスとします。

ぜひ、自由に改変して遊んでみてください。

"いいね"をつけてくださると大変励みになります。

最後までお読みいただきありがとうございました!