執筆者: 終に鮭
最終更新: 2021/08/22
初めてUnityを使いまして、習作としてリバーシを作りました。その名も「大は小を兼ねる クソデカリバーシ」です。
Unityroomで公開しています。https://unityroom.com/games/scalable-reversi
さて、日記形式で開発記録を掘り返していきます。Gitのlogから記憶を呼び起こしているので捏造等あるかもしれません。
Unity未経験のプログラミング経験者目線での進捗なので、「はーこういう進め方もあるのかー」と参考にしてみてください。だからって一番最初にShaderに取り掛かるやついないと思うぞ
Affine変換(Wikipedia)を用いて一気に大量のコマを動かすことのできるリバーシを作ろうとUnityを触り始める(テスト前に何やってんだ)
ちなみにこの頃はZ/8Zが体をなさない(乗法逆元を持たない元が存在する→複数のコマの座標を変換したとき同じ座標に移動することがある→409 Conflict)ことをどうしようか悩んでいた
適当なサイトに書いてあるのをパクってShader Graphでグリッドを作った
Input#GetKeyDown(KeyCode)とかTransform#positionとかSpriteRenderer#colorとかを使ってカーソルの移動を実装
この時点でキー操作はできるようになってて割とモチベが湧いた
Prefabの概念を知る
コマをPrefabをInstantiateすることで配置できるようになる
開発おやすみ
多分水曜は英語の期末課題を片付けて、木曜は試験がなくなったので部室でシャニマスしてた
なぜか急にリバーシが完成した はやい ちゃんと1weekじゃん
もしかしたらcommitせずためてただけで木曜も開発してたのかも
あとはスコアをリアルタイムに表示するUIを作成
おやすみ
Cg/HLSL言語を使ってフラグメントシェーダを書く
これによって盤面サイズが可変になった(ということは、Affine変換のアイデアはもう捨てている)ちなみにShader Graphでも変数使えるのであんまり書く意味なかったみたいですよ
おやすみ
ゲームプログラム側を可変サイズに対応させるのとタイトル画面の作成とSingletonパターンを覚えるのとSEの追加
TextMesh Proの存在を知る
Sliderを動かすとリアルタイムに値が表示されるようにするなど
TextMesh Proの導入によってGitHubの言語統計が滅茶苦茶になったのでgithub-linguistについて調べて除外する
グリッド全体のサイズを調節して常にグリッドが正規直交正方形になるように これせんと斜めがめっちゃ見ずらいんですわ
盤面リセットとかも実装
Unityゲーム開発者ギルド(通称UGDG)に入る
ワクチンの副反応で9時に寝る
Unityのコルーチンについてなんとなーく知る
あとMaterialPropertyBlockを使うことでMaterialを直接編集しないように
ちっさいリファクタリング
おやすみ
ツイートリンクを実装
スクリーンショットの保存を実装(WebGL版はJavaScriptのblobを活用するなどしている(ソースコード))
C#の拡張メソッドの作り方を知る
完全乱択のクソザコAIを実装(完成!)
ちなみに3日かかったのは変数名を変えたときに1つ残してしまったせいでパス周りの実装がバグってたから
本当は1,2週間で完成させるつもりだったのがだいぶ長引いてしまったけど、色々と身についたので悪くはない
来月のunity1weekに向けて頑張ります
この人が書いた記事