都市腐敗系経営SLG「傾国商売人」をベースに記載します。
なお、非暗号化版を公開しているので、コードに関心のある方はそちらをDLください。
前提としてウディタのマップ機能・キャラ機能は使っておらず、全てコモンイベントです。
目次
クォータービューの座標管理と描画方法
※左がトップビュー、右が「傾国商売人」のクォータービュー。
ツクールやウディタのデフォシステムなどで使われる表示方法がトップビューです。
クォータービューもデータ上はトップビューと同様、横と縦の2軸で座標を管理します。
トップビューで特定のタイルにピクチャを表示させたい時の処理を考えます。
例えば、横3番目、縦1番目にあるタイルにピクチャを表示させたいとすると、
X座標=3×タイル1枚あたりの横幅
Y座標=1×タイル1枚あたりの縦幅
として、そのXY座標を基準とするピクチャを描画することになります。
クォータービューでも同様です。ただ、上図を見ると、横1番目より横2番目のタイルの方がY座標が低くなっていることが分かります。クォータービューでは、タイルが1つ横または縦にずれた場合、X座標もY座標も動く点がトップビューと異なります。
前記の例を当てはめると、
X座標=3×横に1つ移動した時のX座標ズレ+1×縦に1つ移動した時のX座標ズレ
Y座標=3×横に1つ移動した時のY座標ズレ+1×縦に1つ移動した時のY座標ズレ
という処理になります。
傾国商売人では、非常に大きい(8294×4219)1枚のベースピクチャを表示させ、その上に建物を表示させてマップを表現しています。
方法としては、基準座標を作り、ベースピクチャと個別の建物ピクチャの座標に常に基準座標を加えることで、街画像全体を動かしたりズームできるようにしています。例えば、画面移動で基準座標が動くと、全てのピクチャが基準座標分動きます。
なお、余談ですが傾国商売人のクォータービュー角度は一般的なクォータービュー角度と比べるとズレがあると思われます。
なお、座標管理はEXCELのデフォ機能でもある程度できると思います。
マクロ使った方が楽はできますが...。一応非暗号化版にマクロを同梱しておきました。
プライオリティ(ピクチャの優先順位)
(2024年9月追記:プライオリティはZオーダーの機能追加によりとても簡単になりました。Yが高いほど優先的に表示させればいいので、YをそのままZオーダーにできます。建物と人はYの幅が異なるので、その分の補正は必要です。)
プライオリティは視点から見て手前にある物体を優先表示する処理です。
視点固定の俯瞰型&ピクチャ中心表示であればYが高い(下に表示される)ピクチャのピクチャ番号を高くすれば良いので、ピクチャ番号+Yを表示&毎回対象のピクチャ番号をまとめて透明化するような処理が考えられます。
ここで、多数のピクチャを用いる場合は同じピクチャ番号+Yが出てきてしまう場合があります。その場合、DBでピクチャ番号+Y×10+重複時の番号のように、10個までは重複に耐えられるよう管理すると良いと思われます。
傾国商売人の歩行者表示はざっくりで良かったので、ピクチャ番号+Yで埋めていき、既に埋まっていた場合は高い番号を探しに行く方式にしています。
画像自体が中心からずれている場合や、画像同士の大きさが違う場合は変になる場合も多いです。ある程度は割り切りながら、きっちりやりたい場合はあらかじめDBでピクチャ番号を固定するといいと思います(視点固定の場合のみ)。
ピクチャ番号を固定し、かつプライオリティが流動的に変わるピクチャも配置したい場合には、ピクチャ番号を間隔を空けて固定し、その中で上記の方法と組み合わせるといいと思われます。
傾国商売人では、縮小表示の場合にピクチャ番号固定、拡大表示の場合に歩行者を表示させてピクチャ番号を流動化する方式で処理しています。余談ですがウディタ3.0で追加されたピクチャ番号移動はちょっと重いですね。エフェクト系はぼかしもそうですが全体的に重く、個人的には使用は避けたいですね。
画面移動・ズーム
※画面移動。クリックした位置が画面の中央に来るよう、移動する。速度はイージングをかけている。
画面移動の考え方はトップビューと同様です。
厄介な点は、クリックした時のマウス座標がデータ上のどの座標、どのタイルにあたるかが表示場所と拡大率により変わることです。
クリックしたところに移動させる場合、移動方向と逆に建物表示などを移動させる必要があり、ちょっと混乱しました。
ズームは意外と面倒で、自然な処理である「画面真ん中の座標を中心としてズーム」というものを実現するのに結構苦戦しました。方法としては、前記の基準座標に画面の中央座標を加えた上で画面表示を中心にしています。また、基準座標がそのままだと画面中央がずれて行ってしまうので、ズーム分基準座標を修正しています。
また、ズーム可能にすると建物表示や画面移動などのあらゆる処理を拡大率と連動させる必要があるため、結構大変です。少しずつ作って後から手を加えていく方がいいかもしれません。
なお、ピクチャは毎回表示すると重いので、ピクチャ移動で動かすと良さそうです。
イージング
画面の移動速度を加速度で変化させるアレです。
傾国商売人では4段階に分けてます。目標への距離を50分割して40回進ませ、残りを20分割して10回進ませ...みたいにやりました。
座標を少しずつずらして表示する仕様のため、ウディタのピクチャ移動&処理時間による移動の方がスマートかつ軽く感じました。
ただ、ピクチャ移動&処理時間は微妙に管理し辛いところがある気がして、なかなか切り替えられませんでした。
建物以外の表示
建物以外のピクチャ表示(例えば財産バーや街の明かりなど)は建物ピクチャの番号+300、+600とかで管理しています。
ヴァーレントゥーガとかのHP表示とかもこんな感じの管理なんでしょうか。
ちなみにエフェクトも同じノリで表示できますが、上手い使い方を思いつかなかったので傾国商売人では使っていません。
範囲表示
マウスがある位置と対応するマップ上のタイルの上に青い範囲を表示しています。
ここは複数タイルへの拡張も考えて自由変形にしましたが、結局単タイルだけでした。
シムシティとかのドラッグして範囲を指定するやつですね。
ただ、タイル管理がバッチリできているなら、範囲内のタイルの上に1枚ずつ範囲ピクチャを表示した方がスマートな気もします。そっちのが高低差あるタイルにも対応できますし。
時間経過
1日を1200フレームとして管理しています。1時間50フレームてな感じです。
販売処理は毎フレーム行うので、1日最大1200回販売できます。
留意点として、低速/中速/高速などを設定できるようにする場合は、毎フレーム処理が最高速となるイメージで作る必要があります。
マウスオーバー・クリック管理
開いている画面によってマウスオーバー対象が変わるので、ここは最初に形を作った方がいいと思いました。クリックモードごとにマウスオーバー対象を変えるのが良いかなと思う一方で、常にマウスオーバー判定をしたいものもあるので、汎用マウスオーバーとモードごとのマウスオーバーコモン呼び出しを組合せるのが良い気がします。
変数操作+の指定ピクチャとマウスが重なってる?をマウスオーバー判定に使います。
指定のピクチャ番号にマウスオーバーした時にクリックすると動作する、そんな形です。
あと、今回は手製のお手軽ウィンドウコモンを作ったのですが、これが死ぬほどマウスオーバーと相性が悪かったですね。素直にお手軽ウィンドウを使いましょう。
インゲーム・アウトゲーム
本で読みました。ゲームには、ゲームが動いていてプレイヤーが集中するタイミングと、じっくり考えたり作戦を練ったり、あるいは休憩したりできる安全なタイミングが存在し、それぞれインゲームとアウトゲームと言うそうです。
傾国商売人では時間進行時がインゲーム、時間停止時がアウトゲームです。作ってみて、インゲームにはもっと刺激(視覚的、変化、怖さ、楽しさ...色々)があると良いなと思いました。アウトゲーム部分はそれなりに試行錯誤の余地があり、そこそこ楽しめるのではないかと思います。
視覚的演出の難しさ
エフェクト含めた演出はかなり苦手で、傾国商売人では数値表示と時間帯変化のみが視覚的な演出であり、刺激だと思います。本当はエフェクト盛りたいですが販売だけだと難しい気がしました。スキル盛り盛りはヴァーレントゥーガ系列が最強なので、育成・成長要素がいいなと思いました。
シムシティ系列は街が自然に建て替わっていく感じが成長要素にも思えます。あれも時々退屈ですが。ちょっと忙しい感じがしますが、画像パターンを複数用意して各建物を動かすのも良いんでしょうね。複数パターンは差分の作成が面倒かもしれないので、1建物あたり2ピクチャを使えるようにして、その移動で動きを表現するのもありかもしれません。
軽さ優先なら複数パターンですが。blender使えると楽なんですがね...。
UI・トンマナとか
トンマナは本で読んでみましたが結局センスの問題な気がしました。なるべく雰囲気を揃えるということが大事なんだろうと思いました。途中から崩壊したので今度はもっと良い感じにやりたいです。
フォントは次作る時はエッジか文字影前提がいいかなーと思いました。見やすいです。
情報表示は...「数値名 数値」の背景に角丸四角形を入れることを前提に作ってみたいと思いました。
次回作の展望
行きたい出向先があり、出向した場合はウディコン参加が不透明です。
次作るものは以下を考えています。
①傾国商売人のクォータービューを活かした自由街開発SLGで、開発したマップを3Dで表示できるようにする、3D表示の負荷を減らすため小惑星探査&自律鉱業ゲーになると思われる。ランダムな小惑星の開発を完了するたびにベースの開発力が増えていく感じをやりたいですね。できれば1920×1280でやってみたいので、ウディフェス向きかもしれません。
②傾国商売人の配置枠を増やし、一店舗での人員配置により特化した経営ゲーム。キャバクラとホストと動物カフェを合わせた多様性接待飲食店経営SLGで、店舗の拡張を楽しむ。構造的にはタワーディフェンスに近い形になるかもしれない。これはだいぶ面白さのイメージがあるので、ウディコンにぶち込みたいです。
③3D酔いしない3D、視点固定型横スクロール3Dはちょっとやってみたい。普通の3Dメインは自分が3D酔いしやすいという盲点を陰都見聞録で味わい、やや警戒気味
今のところ①、②が有力ですね。どちらもこれまでより自由度を上げてストーリーを軽くしたいですね。ストーリーやイベント、条件や目標設定にまあまあ時間がとられるので。
何かあればコメントでもDMでもお気軽にお声がけください。
Comments