迷路タイムアタック
基本的なアルゴリズム勉強せな
2
ゴールがない迷路
無限に広がるマップ
中央からスタート
制限時間内に遠くまで行けたら勝ち
どこを通れば最も中央から離れられそうか、を見極める感じになる
ゴールを探すのとは違った体験になるはずだsta.icon
木構造迷路
制約なしだと(深さor幅)優先探索されるのでランダム入れる
ダメかも
一部の経路塞いだところで、残りで優先探索されるので同じこと
深さを色や文字グラフで表せたらいい
無向グラフ
ノードが部屋で、エッジが扉
次数は最大9まで
テンキーに対応する
ノード案
a1,a2,……a9,……z9 だと 9*26=234
https://gyazo.com/b7c9c2f6126e14e90e23f68eecc2393b
1 [2 3]
2 [4 1]
3 [1 5 4]
4 [6 2 3]
5 [3 8 7]
6 [4] goal
7 [5]
8 [5]
play1(答えあり)
1 [>2 3]
2 [>4 (1)]
4 [6 (2) >3]
3 [>1 5 (4)]
1 [2 (3)]
play1(普段)
1 [>o o]
2 [>o (o)]
4 [o (o) >o]
3 [>o o (o)]
1 [o (o)]
とりあえず各ノードをもっと目立たせないとダメだな
1
まとめ
シレンの小部屋イメージ + アクションゲーム
迷路タイムアタックゲーム:瞬間認識と連打の世界。Scarable maze with js
誰でも自分のペースで遊べて、奥が深くて、アクション要素と運要素があるようなシンプルなゲームで、僕でもつくれそうなものつくりたい
表示方式
一画面に迷路全体を出す
探索型(一部分しか表示しない)
こっちの方が頭を使う
視点
2D(俯瞰)
3D
ウィザードリィの「迷路タイムアタック」みたいな
迷路次元
2次元
ここかなぁ
次元増やすと瞬発的じゃなくなる
スポーツ要素にしたい
3
4
VBでつくられた四次元迷路ってのがあったな……(クソむずかった)
既存調べてる
違う 操作はできるだけ軽快にしたい ウィザードリィレベル
これも違う 2Dじゃなくて3D視点にしたい
現実の視点を持ち込みたい
その性質上、長い迷路にはできない(タイムアタックが破綻する)
3D だが違う
旋回は一瞬で済ませたい(アニメーション要らない)
やっぱウィザードリィのあの感じが完成されてる
そう!このイメージ!
https://gyazo.com/dd3d30b549ae54c1be037122be338325
が、ちょっと見づらい(てか頭の負担が大きい)ので、もうちょっと和らげたいかな
これどうやって描画するんだろ
古い時代からあるので(たとえば情報の授業学んだ大学生でも実装できるような)原始的なアルゴリズムのはずだが
Unity 学んでみるのも良いかも
でもブラウザで遊びたい
あれくらいのダンジョン + もうちょい迷路っぽくするくらい
幅2以上の通路、部屋があっても良いかも
むしろ欲しい
戦略の幅が広がるし、窮屈感もなくなる
ちょっとアルゴリズム考えてみる
1 部屋配置する
普通の部屋とダミー部屋がある
ダミー部屋は行き止まり生成用
あるいは「部屋」と「ダミー部屋」と「中継ポイント」
部屋……自キャラが実際に入る空間
ダミー部屋……実際は行き止まりになる(このロジックで行き止まりをつくるためのダミーの部屋)
中継ポイント……部屋と部屋を繋ぐもの
つまり 部屋 ---- 中継ポイント ---- 部屋 という感じで通路をつくっていく
中継ポイントを経由させる(ことでぐねった通路もつくりやすい)
2 部屋と部屋を選んでつなぐ
つなぎ方は要検討
部屋数増やして直線的に繋いで、いくつかの部屋を閉塞するのか
最初に部屋を配置した後、なんとかしてぐねった通路をつくるか
うん、イメージこっちだわ
画像から迷路をつくる
案1
初期のウィザードリィみたいな3D視点
迷路は割と単純で、どちらかといえば俯瞰把握と高速操作が要求されるアクション
迷路n個くらい繰り返してタイム競う
zxcs と cursor 両方使えるので上手く使うと二倍で動ける
アイテムは仕掛けはプロトつくった後で
実装
これくらいなら僕でも js でつくれそう
1 迷路データ生成する
2 迷路データ 2D 上を移動するシステムつくる
3 現在地を迷路データをもとに 3D っぽいのが描画するのつくる
背景パターンは数十もないはずなので一つずつつくればok
視界をxマスとすると?
正面視界
横視界
仮に2マスとすると、
code:maze
*****
***** 全部はさまれている
**A**
……結構パターンあるね
code:mazedata
A
|
***oooo*
******o*
*oooo*o*
*o****o*
*oooooo*
***o**o*
A
|