【TIC-80】ゲーム以下を作りはじめて2年が経った（その１）【Lua】

# はじめに
[【TIC-80】ゲーム（以下）を作り始めて1年経った（その２）【Lua】](https://qiita.com/uokagi/items/b56949197b56437b20e3)の続き？


「[TIC-80](https://tic.computer/)」（最近新バージョン
のBeta版
が公開されました！）を触り始めていつの間にか2年が経っていたので出力したGIFアニメに一言添えて作ったものを振り返ってみる。なおほとんどがゲーム未満の模様。

「TIC-80」は**1ボタン（F9キー）でGIFアニメの出力**ができるので、
**しょーもない思いつきをぱっとドット絵GIFアニメにする**のにすごく向いているツールです！
もちろんゲームも楽に作れます。

### 関連

- [【TIC-80】ゲーム（以下）を作り始めて1年経った（その１）【Lua】](https://qiita.com/uokagi/items/9f6939c71cb1abdc1630)
- [【TIC-80】ゲーム（以下）を作り始めて1年経った（その２）【Lua】](https://qiita.com/uokagi/items/b56949197b56437b20e3)
- [【TIC-80】ゲーム以下を作りはじめて2年が経った（その２）【Lua】](https://qiita.com/uokagi/items/02975a888d664d437060)
- [【TIC-80】ゲーム以下を作りはじめて2年が経った（その３）【Lua】](https://qiita.com/uokagi/items/4d5a166b7d1eecc3f0e1)

### オートキューブ(?)

![AutoQube1_s.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284455/e1daa7c3-5257-b6ed-52c2-3e4b3943580a.gif)
![AutoQube2_s.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284455/8679fa2b-1cb4-c714-f589-5ad956926fb4.gif)
![zunda_s.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284455/3e54bc0a-c2bc-0c54-f946-e9d721fc6eb5.gif)

- オートタイルを三次元に拡張したもの
- 上下左右前後のセルの状態に応じて形状を変化させる立体
- 立体を8つのパーツに分割し、隣接している3方向のみチェックして差し替えている

いつか記事でも書きたいと思っているけど思っているだけです。

### セルオートマタイル

![zundagame_s.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284455/cbaafbef-747e-59c3-a6e7-37b5925213f6.gif)
![345_3_s.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284455/7df6c8cd-3505-67ae-0ad7-89ca162c862b.gif)

- 二次元セルオートマトン＋オートタイル
- 以前にライフゲームを作成したが、誕生生存死滅のルールを変更可能にしたもの
- 一つめのgifアニメはライフゲーム(B3S23）からmaze（B3S2345）に動作中にルール変更

生きているセルが3つ隣接の場合に誕生（Born）、生きているセルが2つか3つの場合に生存（Save？）を「B3/S23」のように表記する

### 文字弾幕

![kiritan_s.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284455/d623d75e-397b-7409-2e2a-d14cd92979c4.gif)
![kotonoha_s.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284455/d2732b92-d4cd-5c46-25cc-e82810c739c2.gif)


- 文字に限らずスプライトエディタで設定したパターンを弾幕として打ち出す
- 色番号設定により、複数の種類の弾に対応

### リングレーザーを放つバヅナジ様

![badunaji_s.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284455/96bdd7c5-11d1-0d17-f2ff-04b6d1f2650e.gif)

- 元ネタはこちら（もよこさん様の[きりたん(20代男性)の夢記録10【VOICEROID劇場】](https://www.nicovideo.jp/watch/sm35404995)）

### パロディウス（MSX）３面耐久

![paro2_s.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284455/a530117e-342e-74dd-2e0c-4ff917d9ee8a.gif)

- 本当は一番下の岩(?)から落ちてくるがとりあえずランダムな位置の岩が落ちてくる

### 真・女神転生オープニング

![dds_s.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284455/11e9d38b-3537-6e30-a7c7-ed3d0c96225f.gif)

- フォントは目コピ
- 悪魔召喚プログラムはアセンブラっぽい？

### DUNGEON WALKER 改造

![DungeonR_ss.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284455/34a4eca3-c089-6332-c9c4-433192721a42.gif)

- kikeroga様の[DUNGEON WALKER](https://tic80.com/play?cart=788)を（キャラだけを）2倍の大きさのキャラに改造

### ４色塗り分けパズル

![4color_s.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284455/7d2ab79e-7b5e-789f-1ae8-d8c6c1146a61.gif)

- 四色定理を利用したパズル
- 同じ色がつながっているものは一つのエリアとしてエリア番号を付けていく
- それぞれのエリアに対し、どのエリアと隣接しているかという隣接リストを生成
- 隣接リストを利用してクリア判定や自動解法を実装

隣接リスト生成の部分の実装の情報があまりなく、我流で実装しました。
（隣接リストがある前提の探索アルゴリズムに関してはそれなりに情報あり）

### フォント

![gradius_s.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284455/0bbcc7ab-0a53-8415-5f83-ec17c8614b61.gif)

- 「[アーケードゲーム・タイポグラフィ ビットマップ書体の世界](https://www.amazon.co.jp/dp/4766133196)」を購入したのでそれからグラディウスのフォントを目コピ

### 「モンスターパニック」（エポックの[電子ゲーム/液晶ゲーム/LCDゲーム] )

![MonPani4_s.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284455/fe06169d-472c-effb-c109-3a54658c1273.gif)

- 当時はひっくるめて「ゲームウォッチ」と呼んでいました
- 個人的には任天堂のドンキーコングと双璧をなす名作
- 画面周りを再現したら気が済んでしまってゲームまでにはしていない
- 音の耳コピに挑戦したがまるでダメで悲しくなった（耳コピできる人は本当にすごい）

### FC「ポートピア連続殺人事件」の3D迷路再現

![PortMap0411_s.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284455/6a109c08-54ee-468c-461d-1c7bdd8a583a.gif)

- 図形の描画ではなく表示タイルの差し替えで3Dダンジョンを再現
- 実際のソフトがどのように処理していたかは不明
- （アセンブラかつワーキングメモリ2KBで処理してたのは本当にすごい）

### FC「ウィザードリィ」3Dダンジョン再現

![Wiz02_s.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284455/395b96f7-fde5-a013-76d7-abfaf3122fd0.gif)

- ポートピアをやったならばこちらもやらねば‥無作法というもの
- 模様入りなのでタイル種が激増
- 表示タイル差し替えで再現したが、本家は動作速度をみるにパレット差し替えかその併用？？
- タイル差し替え（のみ）だと速度が追い付かないはず（すごい）
- どこかにFC版の処理の解説があれば読みたい所だけど自分には理解できなさそう‥

### ゲーミングハザマ（真・女神転生if）

![hazama_s.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284455/b30b6dee-8409-11c3-b7fa-07df60b96409.gif)

- ゲーミング～が流行っていた
- 7色に光ると言えばメガテンifの狭間さんだよなあ？ということで作成
- 「TIC-80」のスプライトエディタで指定しているのは色（RGB）と直接結びついているわけではなくワンクッションある
- エディタで指定している（仮に）**色ID**とRGB値と結びついている**色番号**の割り当てを変更することによりいわゆるパレットアニメーションを低負荷で実現できる

### [WaveFunctionCollapse](https://github.com/mxgmn/WaveFunctionCollapse)（波動関数崩壊アルゴリズム）の[SimpleTileModelのサンプル](http://www.kchapelier.com/wfc-example/simple-tiled-model-animated.html)を再現したかった

![play03_s.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284455/313b3155-73bd-2a69-f8aa-182b860ac0dc.gif)
![sealand01_s.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284455/961bf060-d2d2-7c43-e6a0-5528bc1034df.gif)

- 本来決められた条件（つながって見えるよう）に従って自動でタイルの組み合わせを生成してくれるアルゴリズムだが、タイルの確定を手動でやらせるとゲームになった
- 適当な順序で確定させていくと条件を満たせなくなり生成失敗となる
- 慣れてくると（自動より）失敗することがなくなるのでアルゴリズムも改良の余地があるのかも知れない

いつか記事を書きたいと思っている。

## とりあえず

長くなったので一旦投稿します。つづきもありますが画像容量大丈夫かな？
質問コメントなどお気軽にどうぞ！