2023-08-15
TechShiikaはずっとLLVM 12というわりと古いバージョンを使っていたのだけど、さすがにそろそろ上げるか〜ということで16に上げた。
一番でかい変更は、LLVM 15からOpaque pointer typeがデフォルトになったこと。つまりi8*
や%Object*
みたいな「◯◯へのポインタ」型が、pointee typeがなくなって全部ただのptr
になった。
これによってコード生成がシンプルになる…のはそうなのだが、変なLLVM IRを吐いてしまったときにclangでチェックされずに実行時にSEGVすることになるので、どうも不安な気持ちだ。ともあれとりあえず既存のテストが通る状態にはできたのでマージした。
2022-12-31
Techこれ。2022年中には完成させたいと思ってたので間に合ってよかった。
↑演奏動画。
先に言っておくと霞襲の組み立てはなにも難しくないです(僕が無駄に手間取っただけ)
2月
2022-12-31
GameSteamのLuck be a landlordというゲームをプレイした。邦題は「幸運の大家様」。
スロットをプレイして家賃を稼ぐゲームなんだけど、アイテムをゲットすることでスロットの中身を書き換えられるので、うまいこと強いデッキになるよう構築していく…という感じ。
最初は適当にやるしかないんだけど、やってるうちにアイテム同士のシナジー関係がわかってくると俄然楽しくなってくる。例えば宝石を集めるデッキとか、動物を集めるデッキとか、トランプを集めるデッキとか。
とはいえスロットの出目は4x5=20マスしかないので、アイテムを取りすぎてもいけない。たとえば「鍵」はいろんな宝箱を開けられる強いアイテムだが、総数が20を超えていると毎回引けるとは限らないわけだ。一度取得したアイテムは簡単には手放せないが、それでも手段がないわけではないので、チャンスがあれば弱いアイテムを捨ててデッキを圧縮していこう。
2022-12-25
Techこんばんわ。本記事は言語実装のカレンダー | Advent Calendar 2022 - Qiitaの24日目の記事です。
Shiikaは私が作っているRuby風の文法をもつ静的型付け言語です。静的言語はだいたい性能を重視した設計になっていることが多くて、動的言語は書きやすさを重視した設計が多いのですが、「静的だけど書きやすさ重視の設計」にすることで、静的なエラーチェックと書きやすさを両立したいと考えています。「Rubyっぽい手触りの静的言語」を目指しています。
2022年の主な進捗
- パターンマッチ
- enumに対し、
match x when Some(y) ...
とかでパターンマッチできるようになりました。これがないと始まらないよね。
- Module
- RubyのModule(Rustでいうとtraitみたいな)を実装しました。実現方法はSwiftのwitness tableというやつを参考にしました。
2022-12-07
GameNintendo Switchで『TUNIC』をプレイした。
Steamのウィッシュリストに入れてたんだけど、座椅子でゲームしすぎると腰を壊すことがわかったのでSwitch版にした。Switchは椅子に座らないといけない位置に設置してあるので大丈夫(携帯モード?それは…)
TUNICとは
小キツネが主人公のアクションゲーム。巷ではソウルライク、ゼルダライクと言われてるようだけど両作ともプレイしたことがないのでそのへんはなんとも。最序盤は剣すら持ってなくて、敵は強いしどうなることかと思ったけど、徐々に操作にも慣れてきてなんとかBエンドまでクリアできた。(実はAエンドはクリアしてないのは内緒)
2022-11-06
DiaryShiika
なんかいろいろやった。主なのはこのへんかな。
で、v0.7.1をリリースした。11月は非互換を入れて、次のリリースはv0.8.0にする予定。
2022-11-05
Gameそのうちやりたいなと思ってたVampire Survivorsをプレイした。面白かった。これは今年のベストゲームだなあ。一週間ちょいで実績全埋めするペースでやってたら腰痛になりかけたし、目を閉じると経験値アイテムの残像が見える始末。
スクリーンショットを見ればわかるようにインフレするアクションゲームなんだけど、単に敵と弾をたくさん出せば面白いかというとそうじゃないんだよね。敵が弱すぎると単なる作業になっちゃうし、強すぎても楽しくない。クリアできるかできないか、というギリギリのラインでないといけない。
Vampire Survivorsの場合はこのへんの調整がよくできてて、その秘密の一つは「ユーザに難易度調整を任せる」という仕組みだ。各ステージはHyper/Hurry/Mirrorみたいな強化モードがあって、通常モードでは簡単すぎる場合の対策になっている。また1回のプレイでは最大12種類の武器・アイテムを入手できるが、これも「序盤に強いもの」と「終盤に強いもの」があり、後者を揃えようとすると自然と前半はぎりぎりの戦いになる…みたいな。
環境について
M1 MacBookProでプレイした。ときどきGC中みたいな固まり方をすることがあるけど、まあまあストレスなく遊べた。
2022-10-04
Diary月報を再開する。
面倒になってきたという理由でやめてみたのだけど、一月ごとに進捗をまとめる作業がないと「進んでる感」を感じられなくてよくない、ということがわかってきた。
あとは締切のない趣味開発だとしても大まかな計画があったほうが、「今月末には○○ができているはず」という期待ができてよい。
Shiika
型推論
2022-08-29
GameEvolveがめっちゃ面白いのに放置ゲーwikiにページがなかったので簡単な攻略を書く。
最序盤
Evolveという名前にふさわしく、DNAとRNAから始まる。操作は、クッキークリッカーみたいなものと思えばだいたい分かるだろう。2022年現在は日本語未対応なので、英和辞典を引きながら頑張ろう。
しばらくするとDNAやRNAを自動生成するボタンが出てくる。ただしこれらは無限に増えるわけではなく、上限が決まっている。表示が「RNA 125/500 20.09/s」となっていたら、RNAは1秒に20.09だけ増えるが、500でストップするということ。
2022-07-23
Miscメルカリで荷物発送用のバーコードを表示するとき、毎回「ご依頼主電話番号2を指定してください」と出て、電話番号を手動で入力させられるのが気になっていた。
今日、ようやく気づいたんだけど、メルカリって電話番号を入力する箇所が2箇所あるんだわ。
- マイページ
- 個人情報設定
- 発送元・お届け先住所
- 編集ボタン(えんぴつアイコン)をタップ
- 住所をタップ
- 一番下に電話番号を入れる欄がある!!
ここに電話番号を入れると認証番号の入力画面になる。少し待つと確認用のsmsが届くので、書いてある番号を入力すると「発送元住所の電話番号」が登録できる。
これでもう聞かれないはず…と思ったが、今日発送したときはまだ聞かれた。 購入時点ではまだ変更してなかったからかな?次からは大丈夫だと期待したい。