kazasiki's blog

プログラミングとかVRゲームとか

dataclass-wizardを使ってyamlをdataclassの値に変換する

Pythonに限らずプログラムを書いてれば固定値の集まりをJSONYAMLなどの別ファイルに分けたいことがあると思います。今回はそんな時に便利なライブラリとしてJSONYAMLをdataclassにmarshalしてくれるdataclass-wizardをご紹介します。

背景

PythonYAMLを読み込んで扱う場合、普通はPyYAMLを使いますが、例えば yaml.load の戻り値はdict型になってしまいます。そこから値を取り出す場合も、 dict["key"] などといった風にキーを指定する形になります。

これでも問題ないかも知れませんが、キーの名前に対するIDEやエディタの補完が効かなかったり、まとまった値を関数に渡す場合もdict型になってしまうので、関数の方で何のキーを指定すれば良いのか分かりづらくなる原因になります。

そこでJSONYAMLを読み込んでdataclassの値にmarshalするdataclass-wizardを使います。

github.com

大まかな機能

例えば、以下のようなpythonのコードとYAMLファイルを用意します。

from dataclasses import dataclass, field
from dataclass_wizard import YAMLWizard

@dataclass
class MyNestedClass:
    list_of_map: list[dict[int, str]] = field(default_factory=list)
    my_int: int = 14

@dataclass
class MyClass(YAMLWizard):
    str_or_num: str | int = 42
    nested: MyNestedClass | None = None

    @property
    def sum(self):
        return self.str_or_num + self.nested.my_int
str-or-num: 23
nested:
    ListOfMap:
        - 111: Hello,
          222: World!
        - 333: 'Testing'
          444: 123

以下のコードでYAMLファイル読み込んでMyClassのオブジェクトを生成できます。

obj = MyClass.from_yaml_file('my_file.yml')
ob.str_or_num # => 23
obj.nested.my_int # => 14
obj.sum # => 37

上記の例では、strとintのUnionTypeや、デフォルト値の設定なども含んでいますが、基本的にはそこまでの機能は必要にならないと思います。

MyClassはただのClassなのでsumメソッドのように好きなメソッドを追加することも出来ます。また、 from_yaml_file の戻り値はMyClassのオブジェクトなので、名前の補完も効きますし、型のチェックなども使えます。

dataclassの自動生成

とはいえ、YAMLファイルにあわせてdataclassを書くのが面倒くさいという人もいるでしょう。dataclass-wizardはそういう人のために、Dataclassの生成機能も持っています。

dataclass-wizard.readthedocs.io

このツールはJSONファイルからdataclassのPythonコードを自動生成してくれるものです。機能は一目瞭然なので公式のドキュメントを読めば普通に使えると思います。

ただ、YAMLには対応してないのでYAMLJSONの変換が必要になります。そういった場合は以下の記事を参考にyqなどを使って対応してください。こちらも特に難しいことはありません。

qiita.com

便利な機能ではあるものの、出力されるファイルにやや癖があるのと、一度dataclassのコードを作ってしまえばyamlとコードの平仄を取るのも大変ではないと思うので、このツールは使うのは 既に大きいYAMLファイルがあって、今からdataclass-wizardを使いたい というときだけにしたほうが良いでしょう。新規にYAMLファイルを作る場合や、YAMLに幾つかキーを追加する場合などは手動で対応してしまったほうが良いです。自分で書いたメソッドやコメントがある場合も困りますし。

まとめ

ということでdataclass-wizardの紹介でした。世の中にはdictやファイルをdataclassに変換する機能を持つライブラリが実はたくさんあるのですが、このライブラリはコードの生成機能があって気軽に導入できるので気に入ってます。JSONYAMLの設定ファイルを読み込むだけならそこまでの速度は必要ないですし、高度なvalidation機能なども不要でしょう。シンプルで使い勝手が良いライブラリなので、ぜひ使ってみてください。

ゲームのアップデートを待つか問題

最近パルワールドというゲームが話題になってるのは皆さんご存知でしょうか。記事執筆時点では売上本数800万本らしいです。すごいですね。

news.yahoo.co.jp

わたしの感想としてはパクリとかそういう話は置いといて、みんなアーリーアクセスのゲームを抵抗なく買うんだな~と思っています。このあたりの感覚について以下のようにツイートもしました。

この記事ではこの感覚をもうちょっと深掘りしようと思います。

ゲームのアップデートを待つのか問題

記録メディア(カセットとかディスクとか)の買い切りではなくオンラインでのアップデートが普通になった昨今において、ゲームをいつ買っていつ遊ぶのがベストなのかというのは永遠の課題です。

人々のレビューや評判が出るのを待つかどうかというのは別の問題なので置いておくとしても、特に初期のバージョンに不具合が多いことは経験的に明らかですし、更にアーリーアクセスで販売されてるゲームはコンテンツの追加も予定されています。

そして、私は一度クリアしたゲームをアップデートが来たからといってもう一度遊び直したりはあまりしません。これは程度の違いはあれ殆どの人が当てはまることだと思います。

例えば、私はCult of the Lambを発売して直ぐにプレイしてエンディングを見ました。最近、大型アップデートをしてコンテンツも大幅に追加されたようですが、遊び直すことは多分ないでしょう。

store.steampowered.com

そこで、ある程度アップデートが来るのを待ってから遊ぶという戦略が存在します。

アップデートを待つメリット

アップデートを待つ場合、一般的にはバグが少なく、よりコンテンツが多く、より洗練された状態でゲームを遊ぶことが出来ます。経験的には数ヶ月から半年ほど待つだけでもセーブデータの消失や進行不能など深刻なバグに遭遇する可能性はある程度減らせるでしょう。

特にアーリーアクセスのゲームは開発者の認識としてそもそも完成していません。深刻なバグに遭遇しても仕方ないし、そういった場合に然るべき作法でコミュニティにバグを報告することが求められます。ゲームバランスの崩壊やコンテンツの不足などに関しても同様です。

個人的には、それらの課題を肝要な気持ちで許しコミュニティに報告できる人だけが本来アーリーアクセスのゲームをプレイするに相応しいユーザーだと思います。

これらの手間を払いたくない人は普通にアップデートを待ったほうが良いでしょう。

その他としては以下のようなことも挙げられます。

  • セールを待つことによってゲームを安く買うことができる場合がある
  • レビューなどゲームの評判に関する情報が出揃ってくる。

アップデートを待つデメリット

とはいえ、アップデートを待つのにはデメリットもあります。

最も単純な話として、人はゲームを話題になったそのときにプレイしたいものです。ゲームは発売された時が最もメディアに露出し、SNSや動画サイトでも話題になること多くなります。その時が一番モチベーションが高い時であることは間違いありません。

加えて、マルチプレイがあるゲームでは時流を逃すと一緒に遊ぶ人が探しづらくなります。マルチプレイ用のサーバーがあるゲームの場合、環境内で自分と同じ境遇の人を見つけづらくもなるでしょう。

また、ゲームの世界は日進月歩で魅力的なタイトルが次々出てくるので、アップデートを待ってたら他により魅力的なタイトルが出てきてしまい、結局待ってたゲームを遊ばなかったということもありえます。

自分の考え

冒頭のTweetに挙げたとおり、自分はアーリーアクセスは製品版を待つことにしてます。アーリーアクセスが数年間で続いていて、実質的に製品版として扱われていて、かつ高い評価を受けている作品であれば例外はあるかも知れませんが、基本はしばらく様子を見ます。

最初から製品版として出たやつはSteamのレビューやDiscussionsなどを見て決めます。プレイ時間が短ければ返金リクエストが出来るので挑戦してみても良いんですが、プレイしてすぐにバグが発生してくれるとは限らないです。進行不能やセーブロスト系は特にそうです。

そもそも、やりたいゲームの多さに対して消化が追いついておらず、発売から数ヶ月くらい経ってからプレイすることが多いというどうしようもない事情もあります。

昨今の印象

昨今のPCゲームユーザはカジュアルなユーザが増えたこともあって、アップデートを待つような慎重さを持ってる人は多くないのかなと思います。また、意外にバグに寛容で、多少不便しても結果として遊べてるなら問題ないくらいに考えてる人が多い気がします。少なくとも自分の観測範囲だとそういう印象です。

先述のパルワールドのSteamのレビューを見ても、単に動作しない・クラッシュするなどの理由でnegativeに入れてる人がいます。negativeに入れるのは良いですがバグ報告はきちんとしたんでしょうか。SteamのDiscussionsも荒れていて、この状況で有用なフィードバックを選別することはかなり難しいんじゃないかなと思います。恐らくDiscordも同じような状況でしょう。

とはいえ、800万本も売れてしまったら品の良いユーザが多い状態を望めないのも明らかで、ディベロッパーとしても悩ましいでしょう。

まとめ

というわけで、ゲームのアップデートを待つかどうかに関する自分の考えでした。まぁ結局みんな好きに買えばいいと思いますが、アーリーアクセスが意図通りになってなさそうな感じとか、発売日に一斉に飛びついていく感じをみて思ったことを書きました。

playdateという携帯ゲーム機にハマっている

最近はplaydateという小さな携帯ゲーム機にハマってます。昨年(2023年)の9月ごろに届いてからほぼ毎日何かしらのゲームをこのデバイスでプレイしてるし、公共交通機関での移動がある際には必ずバックに入れて持ち出してます。

play.date

正直なところ、この記事を書くかどうか少し悩みました。というのも、playdateに興味を持ちそうな人は既にこのデバイスを購入している気がするし、テキストでこのデバイスの魅力を伝えるのはすごく難しいように感じているからです。

とはいえ、自分がなぜこのデバイスを気に入っているのかについては語れることもあるかと思って今キーボードを叩いています。

playdateとは

黄色くて小さい携帯ゲーム機です。大きさとしてはスマホの縦幅の半分くらいの長さの正方形のイメージです。ボタン類は十字キーとA/Bボタン、Menuボタン、Sleepボタンがあります。そしてクランクというくるくる回すハンドルみたいなのがついてます。価格は$199で、送料も含めて日本円だと3万円くらいです。

また、本体を購入するとゲームが24本ついてきます。ラインナップは公式サイトで確認できますが、塊魂やGetting Over It(壺おじ)の開発者の新作ゲームも含まれていて、小粒なゲームが多いものの質はなかなか良いです。

それ以外にも、公式ストアでゲームを買うことができます。価格はまちまちですが概ね5~10ドルです。月に10本程度は新しいゲームが追加されていて、ニッチな市場でありつつも遊ぶゲームがなくて困るということは当分ないでしょう。

本体の設定画面などもそうですが、ゲーム自体も基本的には英語にしか対応してないので、簡単な英語の読解ができないと厳しいかも知れません。

レトロだけど最新式なゲーム機

レトロゲームの流行の乗っかった前時代的なゲーム機のように見えますが、最新ゲーム機としての基本的な機能は揃ってます。Wifiを使ったゲームのダウンロード、ゲームをたくさん入れておくのに十分な容量、スリープ&レジューム機能、充電可能なバッテリーでの長時間動作などなど。これは本体機能ではないですが、ゲームも基本的にはオートセーブです。

お世辞にも性能は高くないですが、ゲーム側もあんまり無理しないように実装されており、全体的な動作も高速でストレスフリーな体験ができます。これはゲーム機の機能云々というよりは開発コミュニティの文化が強く反映されている部分ですが、それらもplaydateを語る上で外せない部分です。

ラインナップの方向性

playdateを語る上でゲームのラインナップやそれらを制作してる開発者コミュニティの空気感は外せない要素です。playdateやそのコミュニティには「小さくて素敵なゲームを作りたい・遊びたい」と思わせる何かがあります。

公式ストアに概ね5~10ドル程度のゲームが多いことから分かる通り、1つ1つのゲームのボリュームはそんなに大きくありません。1プレイ1~2分でスコアを競ういわゆるアーケードスタイルなゲームも多いですし、物語があったりステージを順にクリアするようなキャンペーンモードがあるゲームでも概ね5時間もあればエンディングが見れるゲームが多いです。

また、playdateは純然たる携帯ゲーム機であり、据え置き機ではありません。なので、開発者もユーザも携帯ゲーム機的な体験の前提を共有できます。例えば、小さい画面で遊ぶこと、スキマ時間でプレイすること、プレイ中に中断や再開をすること、などです。なので開発者もそれらを念頭に入れたゲーム作りを行えます。

これは当たり前のように感じるかも知れませんが、昨今のゲーム事情は案外そうでもありません。

例えば、Nintendo Switchは据え置き機としても携帯機としても使えます。それはメリットでもありデメリットでもあります。開発者はユーザがどちらの環境で遊ぶのかを想定できません。30インチ以上の画面で味わって欲しいと思って作られたシーンを、7インチの画面で通勤中の電車の中でプレイしているというのはSwitchではよくあることです。Steam DeckなどのPCゲームを携帯機で遊ぶデバイスも同じような問題を抱えています。(単純に画面が小さくて見にくいと思うときすらあります)

もちろん、そういった齟齬がない「携帯ゲーム機で遊んでも大画面で遊んでも変わらず面白いゲーム」もたくさんありますし、どういった環境でゲームを遊ぶかはユーザの自由であって制限されるべきことではありません。ただ、その自由によって予期せず体験を損なっている部分はあると思います。

playdateは携帯ゲーム機であるがゆえに画面もスピーカーもコントローラも全て同じ仕様のものを開発者とユーザで共有しています。playdateで遊んでると、それによって生まれる快適さというのは確かに存在しているように感じます。

クランクの操作感

クランクはゲーム機のコントローラとしては珍しい機構ですが、実際のところゲームには凄く向いてます。

言葉で説明するように動画見てもらったほうがわかりやすいでしょう。

www.youtube.com

www.youtube.com

まとめ

ということで、playdateについて長々と語りました。

playdateは不思議なゲーム機です。たくさんの開発者がゲームを作って販売しているにも関わらず、ゲームのラインナップには一定の方向性があるような気がします。加えて、一種の哲学や美学のようなものを開発者とユーザを含むコミュニティ全体で共有してるような不思議な感覚すらあります。

他にも、高精細なドット絵で作られたアニメーションの気持ちよさ、美麗で滑らかな白黒の画面、意外にいい音が鳴るスピーカー、クランクの独特な操作感、ポップな印象で纏められたデザイン、高品質なビルドクオリティ、などなど良さを挙げたらキリがありません。

以前は注文しても数ヶ月待たされてましたが、ようやく生産が追いついたのか今なら数週間程度で届くようです。興味を持った人はぜひ購入してみてください。

私的 Best Movie of the Year 2023

2023年ももうすぐ終わりですね。今年はたくさん映画を見ました。eiga.comに書いたレビューを見たところ19本見てました。家で見たやつも2本含まれてるので、映画館に行って見たのは17本です。私が見た映画の一覧はこちらで見れます。(多分これで全部なはずだが漏れがあるかも知れない)

eiga.com

というわけで、私が今年見た映画の中でベストだと思っているものを3つ挙げていきます。同じような趣味の人がいれば参考にしてください。では行ってみましょう。

ミュータント・タートルズ:ミュータント・パニック!

www.youtube.com

ベストアニメーションは間違いなくこれです。あえてデッサンを狂わせたような独特なタッチで描かれた映像美。きちんと現代のティーンエイジャーの感覚にあわせた笑いや葛藤。悪役らしくない愛嬌のある敵キャラ。絶妙にキモカワなミュータントたち。どこをとっても最高です。

Amazon Primeなどの配信サービスで既に見れるようなので、気になったらぜひご鑑賞ください。

法廷遊戯

www.youtube.com

邦画で一番だったのはこれです。原作がメフィスト賞という文学賞を取った小説で、気になったので見に行きました。ミステリとして凄くよく出来ている印象です。登場人物が少ないので「誰がやったのか?」の部分を考えるのは簡単でしたが、筋の通った動機を考えるのに苦労しながら見ました。じっくり考えながら映画を見たい人におすすめです。

ジョン・ウィック:コンセクエンス

www.youtube.com

アクション映画が好きなのでよく見るんですが、今年のベストはこれでした。何と言っても圧巻のアクションシーン。というか、物語はぶっちゃけ添え物で、基本的にはずっっっと戦ってます。戦闘シーンにもバリエーションがあって、色んな武器、シチュエーション、戦い方など様々なものが楽しめるようになってます。アクション映画が好きな人には自信を持っておすすめできる映画です。

まとめ

次点としては、鳥山明さん原作の『SAND LAND』アカデミー賞を受賞した『Everything Everywhere All at Once』もかなり気に入っていて、配信に来たらもう一回くらい見たいと思ってます。今年は本当に月イチ以上の頻度で映画館に通っていてたくさん映画を見ました。来年もたくさん見ようと思います。

それでは。

Steam Deckを買って初めにやったこと

Steam Deckの日本発売が始まってからはや1年、ずっと買うかどうか悩み続けてたんですが、OLEDモデルの発売されたのもあり、ついに我慢できなくなって買ってしまいました。

steamdeck.komodo.jp

11/23(木)に届いて、勤労感謝の日も土日もあれこれ弄り回してました。だいたい使い方が分かってきたので、初期のセットアップ周りやもろもろ試したことをシェアしたいと思います。

ショートカットを覚える

holdtoreset.com

まずはショートカットを覚えましょう。Steamボタンと組み合わせた操作が豊富で、キーボードやマウスを繋がなくても一通りの操作ができるようになってます。後述するEpic Games Storeを導入した際などにも重宝するので、最初にショートカット一覧を見て何が出来るかを把握しておきましょう。

Epic Games Launcherをインストールする

www.polygon.com

PCゲーマーの人ならEpic Games Storeで無料配信されたゲームをたくさん持ってるという人も多いと思いますし、それをSteam Deckで遊びたいと考えるのも自然でしょう。

Epic Games StoreのようなSteam以外のゲームを遊ぶ方法をWebで検索すると、HeroicやLutrisのようなランチャーソフトを入れることを勧める記事が多い印象ですが、普通にEpic Games Launcherを入れれば特に不便しないので、私は上に挙げた記事の方法でEpic Games Launcherを入れて使ってます。

ただ、上に挙げた記事に書いてあるコントローラ設定に関しては私は特に設定してません。マウス操作周りのショートカットを覚えてれば不要だと思うので。

恐らく同じような方法でAmazon GamesやGOG.comのゲームなども遊べるでしょう。

Steam Linkアプリをインストールする

デフォルトのSteam Deckのゲームモードでも同じネットワーク内に立ち上がってるPCがあればリモートプレイは可能ですが、設定や操作周りがやや不便なのでLinux版のSteam Linkアプリを入れて使ってます。

デスクトップモードで使える標準のアプリストアにあるので探せばすぐに見つかりますし、そのままSteamライブラリへ追加すればゲームモードからでも普通に起動できます。

画質やパフォーマンスオーバーレイまわりの設定が簡単に行えるのと、リモート端末のデスクトップを表示するのも簡単に行えるので、リモート端末でEpic Games Storeのゲームをプレイする時などに便利です。

Modを入れてみる

Steam Deckはデスクトップモードでは普通のPCのようにファイルが弄れます。なので、Modを入れることも可能です。

具体的にはPizza Towerの非公式の日本語化Modを導入してみました。

steamcommunity.com

Windows用のexeファイルは全てProtonで動くように起動する必要があるなど思ったより苦戦しましたが、分かってしまえば簡単でした。

まとめ

ということでSteam Deckを買って初めにやったことでした。ゲームが遊べることも勿論ですが、やはり色々弄り回せる部分が多いので嬉しい端末ですね。もちろんゲームもちゃんと遊んでます。

ノウハウの共有に必要なステップ

もう10月も終わりに差し掛かり、年度が4月始まりの人はそろそろ上半期の振り返りを済ませる季節になりましたが、皆さんどのようにお過ごしでしょうか。

ところで、振り返りといえば「組織としてノウハウ共有をもっとやっていきたい」的なことを毎年目標にしてる人達って案外たくさんいるのかな〜と身の回りに人を見てて感じます。そこで今回はその「ノウハウの共有」について、自分の経験から思ってることをつらつらと書いていきます。ポエムみたいなもんです。学術的、技術的な話ではないのでご承知の上この先をお読みください。

浅はかな考え

会社や組織として何かをやっている人達にとって「ノウハウの共有」は永遠の課題です。チームやプロジェクトを隔てるとノウハウがうまく共有されず非効率的な仕事をすることになった経験は皆さんあると思います。複数のプロジェクトで同じ悩みを抱えてるのに、別々に考えて別々のアプローチをとって結局どっちも微妙にうまく行ってない、みたいな話はどこにでもあるものです。

とはいえ、ノウハウを蓄積して共有しよう!と言い出した結果として、

  • 手間をかけてチェックリストやwikiを書いたけど全然見られてない。
  • 勉強会を定期的に開いているけど業務の役に立ってる実感がない。(誰も発表してくれない)

みたいな経験は誰にでもあるのではないでしょうか。

そこで、もうちょっと深く考えてみましょう。

目指すべき状態は「ノウハウが共有できていて、それによって効率的に業務が行えている」状態です。そこまでのステップにはどのようなものが考えられるでしょう。

理想までのステップを考える

例えば、以下のようなものが考えられます。

  1. 他者の業務内容の理解
  2. 他者の専門性の認知
  3. 便益の実感
  4. 信頼感の醸成
  5. 協力機会の創出

これは一般的に言われてることやどこかの偉い人の研究成果などではなく、自分がそう考えて勝手に名付けてるだけのものです。

1個ずつ考えていきましょう。以下の説明では、簡単化のため「各メンバ」という表現を使ってますが、「各プロジェクト」でも「各部署」でも話は同じです。

1. 他者の業務内容の理解

これは、そもそも各メンバの間で「そもそも何をやってるか」を知る必要があるということです。前提となるシチュエーションが共有されなければ、ノウハウだけ聞いても役に立たないでしょう。程度の問題はありますが、各メンバが何となくお互いに何をやってるかを知ってるというのは重要な前提です。

2. 他者の専門性の認知

これは、各メンバが「他のメンバが自分が知らないことを知っている」と認識することです。「業務内容の理解」が出来れば自動的に満たされる可能性もありますが、一般的には少し踏み込んだ内容を共有する必要がある事が多いです。他者に業務内容を説明する場合、普通はそこまで踏み込んだ内容を説明しません。その業務を遂行するのに必要なスキルやノウハウをいくらかイメージしてもらうような機会が必要です。

3. 便益の実感

これは、各メンバが「他のメンバのノウハウが自分の業務の役に立ちそうだ」と認識することです。一般的には各メンバが似たような業務をしてるほうが好ましいです。そのためにはそもそもそういった環境を用意する必要があります。エンジニアであれば、使用するプログラミング言語パブリッククラウドAWSGCP)を出来るだけ揃えるなどはわかりやすい例です。一般的な組織でいえば、取り組む課題やその中で関わるステークホルダーなどが同じであればよりノウハウは共有しやすくなります。そのうえで、各メンバにそれを実感として与える必要があります。

4. 信頼感の醸成

実際にノウハウを共有したり、必要に応じて質問したり協力したりするのであれば、メンバ間の信頼関係が必要です。個人として信頼を得る方法は世の中に色んな論があるのでそちらに任せますが、組織として取り組むのであれば、個人の努力に任せるのは不適当です。1on1や勉強会や雑談会などもありですが、個々人の成果を組織として認知できるような仕組みもあると良いでしょう。

5. 協力機会の創出

実際に同僚(もしくは彼らの知識)が自分の業務の役に立つ機会を作る必要があります。最初に例に上げたwikiや勉強会だけでなく「Slackの相談チャンネルに質問して回答をもらう」なども立派な機会になるでしょう。質問と回答というだけでなく、実際に手を動かしてもらうようなシーンもありえます。そういったやり取りが気軽に出来る場を用意しておく必要があります。

逆に言うと、そういったやり取りを阻害する要因は出来るだけ排除しましょう。わかりやすいのは主に時間的な問題と、権限的な問題です。

前提として、自分の知識を組織に共有するのも、込み入った質問や相談に答えるのもなかなか大変な作業です。日々の業務に追われてる人はまず行えなず、自分の時間をどう使うかのある程度の裁量が必要です。

また、プロジェクトの情報を社内の別組織に公開できない場合、そのプロジェクトのノウハウも共有できなくなります。上長の承認が必要というだけでも相当に難しくなるでしょう。逆に、別チームのプロジェクトのコードやドキュメントを見る権限があるかどうかも重要です。自由に見られるのであれば、質問や相談をするためのやり取りが楽になるでしょう。

まとめ

最初に話した通り、ここに書いたものは別に高名な学者が考えたフレームワークとかではありません。ただ、「ノウハウの共有」と一言でいっても様々なステップが考えられ、それぞれに対して異なる対策が必要なように思える、というのはなんとなく分かってもらえたかなと思います。

エンジニア的には、それぞれのステップに対して計測可能なメトリクスを提案しダッシュボードを作る!とか続けたいところですが、そのあたりはまた長くなるし、自分としてもあんまり良い方法が見つかってません。なにか良い方法が見つかったらまた記事にしようと思います。

VR立体くるくるくるりんなゲーム『Squingle』にハマってた

VR立体くるくるくるりんなゲーム『Squingle』にハマっていました。

www.youtube.com

Quest版のリンクはこちら。Steam版のリンクはこちらです。

こちらのゲーム、ぶっちゃけるとあんまり人気がありません。執筆時現在、Quest版のレビュー数は62件、Steam版のレビュー件数はたったの10件です。しかし評価は高く、Quest版の評価の平均は驚異の4.97、Steam版に至ってはPositive率100%です。ちなみに自分もSteam版にPositive評価をつけた一人です。

動画を見ると分かりますが、ゲームとしては往年の名作『くるくるくるりん』を立体にしてVRで遊べるようにしたような感じです。ただし、『Squingle』にはかわいいキャラクターもおらず、ストーリー要素も申し訳程度にしかないので基本的にはステージクリア型の硬派なパズルアクションゲームと見てよいでしょう。

www.youtube.com

一応、多くはないですが画面上のテキストや申し訳程度のストーリーは丁寧に日本語化されており、違和感のない日本語で遊ぶことができます。なぜか東京クロノスなどで有名なMyDearestが日本でのパブリッシングを担当しているようです。

mydearestvr.com

よく出来ているところ

当たり判定について

このゲームのよく出来ているところはいくつかあって、一つは当たり判定が良い意味で緩く、かつわかりやすくフィードバックがあることです。

いわゆる電流イライラ棒のようなイメージを想像してもらうとわかるのですが、自分が操作する自機を細いパイプのようなものの中で動かしていく場合、当たり判定をどうするかは難しい問題です。もちろん少しでも触れた時点でアウトにしてしまうという選択肢もあるのですが、それでは流石にゲームとして難しすぎます。

このゲームは自機が外壁に触れても簡単にはダメージになりません。感覚的にはかなり壁にめり込んだときに初めてダメージが入るような感じです。逆に触れているだけでまだセーフな状態のときは「これ以上いくとダメージが入るよ!」というフィードバックをくれます。例えば、自機と接している壁が黄色に光る、ぐぃ〜という音が鳴る、コントローラが振動する、等です。これらのわかりやすいフィードバックがあるので、実際は壁に自機が接触している感触がなくても、接しているかどうかを即座に判断することが出来ます。

ステージ中に色々なアイテムが落ちていたりもするのですが、そういうときのフィードバックも良くわかるようになっていて、遊んでいてストレスが少ないようにきちんと配慮されています。

やりこみ要素について

このゲームはステージクリア型のパズルアクションゲームなのですが、記事執筆時点のステージ数は100ステージです。これだけでかなりのボリュームなのですが、やりこみ要素もちゃんと用意されています。

その一つはコレクションアイテムです。いわゆるアクションゲームのコレクションアイテムという感じで、通常のルートより少し難しいルートで行くとコレクションアイテムが手に入るという感じです。集めないと先に進めないとかはないですが、すべて集めると実績が解除されます。この配置の塩梅がちょうどよくて集めようとすると少しだけ余計に苦労する感じが良く出来ています。

もう一つはpetals(花弁)です。いわゆるスマホゲームとかである星3クリアみたいなやつです。取得条件は(多分)明示されてないですが、基本的にはダメージを受けずにゴールすれば良いものだと理解すればよさそうです。ステージによっては多少のダメージでも許されるようです。これもアクションゲームのやりこみ要素としてはド定番ですが、何度もリトライして丁寧に試行錯誤すればクリアできるようになっていて、ステージも含めてよく考えられています。

まとめ

自分は全実績解除しました。めちゃくちゃ面白くておすすめなのでぜひ!

ちなみに、LIVというVRゲームの録画ツールにも対応していて、設定さえすればこちらのような動画を撮影できます。