100日後に完成するゲームシステム 4日目「マップパターンシステム」

2021年1月15日

テクノロジー 特集

eyecatch 地図マニアの、弓削田です。 その昔、まだGoogleMapが世の中に登場していなかった頃、 荷物配送のアルバイトをしていて、車で関東のとある地域を1日中回っていた経験があるのですが、 その時にその地区の地図情報が頭に完璧に入っていて、裏道から、効率的な信号経路、時間帯による混雑具合、 道路工事をしている時の迂回路などなど、毎日地図を読んで、一日のルートを考えたりしていました。 そんな訳で、マップは個人的には非常に馴染み深いアイテムだったのですが、車も今ではカーナビの精度が良くなり、 Googleマップをスマホで持っていれば、もはや道に迷うことすら無くなったので、地図のデジタル化を実感したという事もあり、 ゲームマップとは、親和性を感じてしまいます。

今回の内容

前回まで構築した、フィールドマップを、ベタにプログラミングするのではなく、マップデータを作ってそれを参照に表示するという方式を追加したいと思います。 こうすることで、指定のマップデータを切り替えるだけで、別のマップ表示ができるようになり、 RPGゲームで、フィールドマップから、町や城に入って画面が切り替わるというような場合や、大きなマップのつなぎで切り替えたりして、 マップが無限に広げることが可能になります。

基本は二次元配列

簡単に行いたい場合は、以下のように縦軸と横軸の文字列を並べて、1文字で1チップとしてしまうという方法があります。

マップデータその1

00000 00000 00000 00000 00000
でも、これでは、数字だけだと、10パターン、英字を混ぜても、10+26パターン。 英字は大文字小文字とワケてもいいのだが、ファイル名などで大文字小文字を判別しないサーバーシステムに設置した途端に破綻してしまうので、 それは区別せずに、アルファベットの個数だけに留めておきます。 あと、記号をいくつか追加して、「_-+~*=@$%!^|」URLや、OSのファイル名など、色々と関連しない記号と考えると、この12個ぐらいが限界かな〜〜〜 そんなわけで、10+26+12=48パターン。 おしい!あと2つで50なんだけど、それでも、40パターンしかマップの画像パターンが持てないというのはなんとも少なすぎる気もするなあ〜 もう一つの方法は、マップデータをjsonデータとしてしまうという方法 そうすれば、1つのマップ画像をそのファイル名などをそのまま使えてしまうので、汎用性は激増します。
[ [0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0] ]
こんな感じです。 ファイルの拡張子をpngに統一して、ファイル名をできるだけ簡易文字列にすることで、マップデータの容量増大は防ぐことができそうです。 他にも、ファイル種類ごとに、16進数化するという方法がありますが、 半端なはずですが、上記の5x5のマップデータで作ってみると、 11111 11111 11111 11111 11111 これを、16進数でやると、 1f,1f,1f,1f,1f こうなります。 非常にデータ容量は少なくなるように思えますが、表示するファイルの数だけ同じ容量のデータを作らないといけないのと、 1マスだけの表示でも、マップ全部の容量が必要になる事を考えると、 json方式の方が、手打ちで構築できるし、確認もラクかな〜と考えてしまいました。 他にもやり方があるのかな? もう少し考えてみたいけど、次回は、json方式を搭載したプログラムを作ってみたいと思います。

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。