SAND STORM

朝ぼらけ

2012年10月31日

Spreadsheetを使ったcomputer RPGの地図作成

Filed under: 未分類 — Tags: — sajin @ 14:30

WizardyやMight&Magicなど正方形の枡で区切られた古典的3D dungeonをmappingするutilityは特に日本で初期形態のWizardryがplayされ続けているため数多くあるが、どれも一長一短で汎用性に欠ける嫌いがある。LibreOffice(OpenOffice)のCalcやExcelのようなspreadsheetで同様の地図作成ができるのではないかと思って試したら思ったより遙に上手く行ったので基本的なやり方とコツを説明したい。


[spreadsheetと専用utilityの良悪]

spreadsheet

○spreadsheetそのものの操作に通じるようになり、仕事から私生活までさまざまな使い方ができるようになる

○慣れれば作成効率は専用utilityを凌駕する

○文字との相性がいい

○柔軟性が高く、工夫しだいで幾らでも拡大拡張できる

×絵を用いるのが難しい

mapping utility

○3D再現での探索が可能

○描画しやすい

○iconなど絵を用いやすい

×文字入力との連携が悪い

×柔軟性がなく、想定した範囲を越える使い方ができない

×あくまでそのtoolの使い方に慣れるだけで他の役には立たない


[Spreadsheetでのmappingの仕方]

OpenOfficeの開発陣がfreewareであることを重視して起ち上げた最新の改良が反映されるLibreOffice (日本語版)を用いて説明する。

自分は基本的に英語版で使うので、以下は英語を基本に(括弧内)で対応する日本語という形で説明する。日本語版でも、英語(US)/日本語表示が可能。Tools>Option>Language(言語設定)>Language(言語)>User interfaceの言語を切り替える。

1.cellを正方形にする

左上の行(row)と列(column)が重なる所をclickして全体を選択した状態で、A~Z…、0~9…をそれぞれright clickし、column width(行の高さ)/row width(列の幅)をそれぞれ同値にして各cellが正方形になるようにする。

2.座標数値の入力

左から右、上から下という座標増加であれば0か1を入れてcellの右下の出っ張ったところをdragし、その方向に引っ張っていけば+1ずつされる。問題はその逆の場合で、下から上、右から左への増加の場合、入力したい範囲のcellを選択し、Edit(編集)>Fill(連続データ)>Series(連続データの作成)でmini windowを開いてSeries type(連続データの種類)を”Linear(足し算)”、Direction(方向)を増加させる方向に変え、Start valueに最小値をEnd valueに最大値を、incrementに増分(通常は1)を入れてOKすればその方向に自動増分入力してくれる。

3.cellの背景を塗りつぶす

塗りつぶしたい領域を選択して(SHIFTで一括選択、CTRLで別の領域をばらばらに選択可能)、right click>Format Cells(セルの書式設定)>Background(背景)と選び、色を指定してOKすればその色に背景が塗りつぶされる。cellの区切り格子が表示されていると壁と被ってわかりづらいので描画部分を白で塗りつぶし、後は霧で見えない場所を灰色、森を緑などと塗っておけば格段にわかりやすくなる。背景なので文字などはこの上に描画される。

4.壁の描写

壁や扉はcellの周縁の線を加工することで描写する。cellをright click>Format Cells(セルの書式設定)>Borders(外枠) tabと開き

Default(標準)

単独cell(全消去/四周/上下/左右/斜め斜線)

複数cell(全消去/四周/四周とrowのcell区切り/四周とcolumnとcell区切り/四周と縦横cell区切り/四周だけ描き直して内部はそのまま)

消去や箱をつくるだけならこれで行う。中身を残す場合は右端を選択して灰色指定しないと消えてしまう。

User-defined(ユーザー定義)

個別に場所を指定して線を置く。選択するごとに黒>灰色>無し(白)>黒と切り替わり、黒は今Style/Width/Colorでしている設定が適用される。灰は以前の設定を残し手を加えない。白は消し去る。別に灰色にしなくとも、現在編集状態にある線とStyle/Width/Colorを弄った後から触った線以外は前の設定のままで残る。

cellを一つだけ選択した際と、複数(連結)選択した場合で効果は異なり、複数連結選択での上下は、連結した領域をひとつの箱と見なしてその上下端だけ、周縁だけといった描線になる。

Spacing to contents(内容までの間隔)

cell内部の文字と周囲の枠との間の空白距離。

Shadow style(影付き)

斜めに影をつけ強調する。

上のように複数領域をCTRL keyを押しながらまとめて指定して一挙に設定可能。

5.扉の描写

cellの区切りは周囲の直線を加工するだけなので、いかにも扉といった描写はできない。可能なのは線の種類を変え、width設定を大きくして太くして扉とすること。この際、widthを4pt以上にしないと線の種類に差がでず、二重線にしても二重に見えない。

大別して一直線、二重直線、大破線、小破線の四種。扉は大破線か二重線で表すのがわかりやすい。

問題は一方通行の扉で、矢印を区切りの上に描画することはできない。だから手前のcellへの矢印入力と一方通行扉を破線で表示するなどして差別化する。

5.記号の利用

日本語環境では”きごう”で変換すれば←→↑↓▽▲□●などを簡単に利用できるので、予めtemplateとして打ち出しておくといい。また”ぎりしゃ”でGreek文字(γΘπなど)を、”きりる”でCyrillic文字(ЖдПなど)を利用できる。

・ALT codes

multibyte文字への変換がない欧米の文字入力で記号を出すのにAlt Codes(Wikipedia)というものがよく使われる。やり方はALT keyを押しながらNumpadの数値を入力するもので、例えばALT+(Numpadの)134と入力すれば”†”(dagger)が出力される。

ALT codesはそもそもIBM-PCがCode page 437(Wikipedia)というcharacter setとして顔文字や記号などを搭載していたのをMS-DOSが引き継ぎ、それをさらにWindowsが引き継いだもの。他のOSでも同様の表示を可能にしているものが多い。

Alt Codes List of Alt Key Codes Symbols @ Alt Codes.net – 本来のAlt code一覧

ALT Codes / Alt Key Codes @ Userful Shortcuts > Arrow Symbols – 種類別

Alt Code(Wikipedia)を使うことで↑↓←→などの半角表示が可能になるが、OSやapplicationに制限される、また日本語環境ではその中身が半角カタカナで置き換えられて、番号が変わる上に数字やalphabet以外の多くの記号を表示できないので使用は困難。LibreOfficeでもほとんど表示できない。

Windows Codepage: 932 (Japanese Shift-JIS @ MSDN

WordPressでも出力できないので、text editorに1~255まで出力して保存して開いて見たらa-z0-9などの基本文字以外のほとんどが消えていた。ちなみに256以降は1ずつでなく256を増分としてloopする。

6.cellを用いない線や図形

View>Toolbars>Drawingで下部にDraw toolbarが表示される。この内どれかをright-clickしてvisible toolbarを選択し、表示されていないiconを表示させる。defaultでは肝心のものが使えない。

すべて表示した状態で左から

Select(矢印): 通常状態。すでにdrawしたものをclickして移動させたり、変化させることができる。

Line(線): 直線を引く。引いた後にright clickして太さや色、先端の変化が可能。

Rectangle(四角): 塗りつぶした四角形を描画。透明にするには上部の現在塗りつぶされている色の左にColorと表示されている選択をInvisibleにする。以後同様。

Circle(楕円): 塗りつぶした円を描画。

Polygon:(多角形) 二点間に直線を引き、それを繋げていくことでカクカクした図形をつくる。

Curve(曲線): 二点間に線を引いた後、left buttonを離さずにdragすれば、その方向に線が湾曲する、これを続けていくことができる。

Freeform(フリーハンドの線): まずmouseを動かした通りに描画し、その長さに応じ自動的に一定間隔で点が打たれる。それを操作することで線を自在に変化させることができる。

Arc(楕円形の円弧): 円を描いてその一部を消すことで弧を描く。

Eclipse(楕円形の扇形): 塗りつぶした円の一部を中心から切り取った状態を描き出す。

Circle Segment(楕円形の切片): 塗りつぶした円を斜めに切り下ろした図を描く。

Text: 選択した領域に文字だけを描画。

Text Animation: 選択した領域に打ち出した文字が左から右に移動しつつ描画される。

Callouts(吹き出し): 指示線と長方形の吹き出しが同時に描画され、枠内に文字を打ち込んで吹き出しや注釈に使う。

Shape(◇~☆): 形通りの図形を描くが、大きさや縮尺の変更だけでなく、3D化(右端のExtrusion)やその三次元方向回転が可能。

Points(制御点): 図形の形態調整を行う点の表示/非表示。

Fontwork: “fontwork”の文字列を指示した色・形のstyleで描画し、それをclickして文字を打ち直すことで描画したい文字列に変える。専用のbutton群が現れ、形態・高さ・文字間の距離などを調整可能。さらにshape同様に3D化できる。

Exturion(浮きだし): Shape(◇~☆)やfontworkを3D化。専用のtoolbarが現れ、さまざまな3D objectとしての調整ができるようになる。

基本的にどれも後から変更するようにできており、すべて描画した後でleft clickで移動、形態の調整、right clickから反転、先端への矢印類の追加などを行うことができる。draw toolを利用することで正方形で区切られた規則的な地図だけでなく、様々な描写が可能になる。

◇sheetの切り替え

Ctrl+Page Up/Page Downでsheetを左右に切り替えることができる。mapが多いと埋もれてしまうのでshortcut keyを使う方が早い。

Calc/Shortcut Keys for Spreadsheets – LibreOffice Help

また一枚templateを作成して、それをright click>Move/Copy Sheetでcopyしていけば、新たにmapを作成するごとに一々座標などを構築しなくても済むようになる。


[感想]

とにかく慣れた後の作業効率が圧倒的にいい。そして幾らでも工夫して改善・拡張ができる。しかも、そうやって身につけた手法はすべてspreadsheetを使った他の作業に転用できる。game自体で実用的な技能が身に付くことはほとんどないが、gameの攻略に言語であれ、Officeのようなsoftwareであれ、汎用の道具を使うことで普通ならまずやらない様々な機能への理解と習熟をもたらし、基礎的で汎用性の高いskillの習得に素晴らしい効果がある。gameのmappingをするなら間違いなくspreadsheetがお勧めだ。


関連記事

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment


sand-storm.net