からかい上手の高木さんVRすごいぜって話

はじめに

どうも、はいさいです。
これから訪れる夏本番の暑さを想像して嫌気を感じる今日この頃、皆様いかがお過ごしでしょうか?

さて、このブログはkstmのアドベントカレンダーを書くために始めたもので、 普段の更新はクリスマス前という今とは真逆の季節でしたが…

_人人人人人人人_
> 突然の更新 < です
 ̄Y^Y^Y^Y^Y^ ̄

それもそのはず、夏であっても… 否!! 夏だからこそ!!語りたい作品に出合えたのです。

それがこちら、からかい上手の高木さんVRです! vr-takagi3.com

高木さんといえば、アニメ版を毎週楽しみにしていたころを思い出します。エンディング曲が有名曲のカバーだったあれです!見てない人はNetflixで見れるので見ましょう!

さて、本稿ではそんなからかい上手の高木さんVRをプレイしてみて感じたことなどを雑多に描いていきたいと思います。購入を検討している方やこれからプレイするぞって方に向けてお勧めのプレイ方法などについても書いていきます。

目次

タイトル画面

さて、まずこのゲームをプレイするにはVRゴーグルを入手して、VRが動くレベルのつよつよPCを手に入れて、プレイできるスペースを確保するという三重の試練があります。(私の場合、給付金をn回吹っ飛ばすレベルの出費がありました…)

それらの試練を乗り越えてようやくたどり着けるタイトル画面がこちらです。
※実物はVRなので平面画像の1000倍は没入感があります。

f:id:drhaisai:20200703170127p:plain
郷愁の教室
n年前に体験した中学生活の教室の空気感そのままです…
黒板、でっかい三角定規、クラスの棚に、少し乱れて並ぶ机に椅子…

差し込む光に誘われて窓のほうを見上げれば、透き通った、少年だったあの頃の青空…

f:id:drhaisai:20200703170728p:plain
今よりずっと高く青く澄んだ空

そんな懐かしさを感じる風景に、隣の席を見れば高木さんが座っています

f:id:drhaisai:20200703162310p:plain
隣の高木さん
表示されてるとかそういう次元じゃなくて…そこにいるんです!

正直なところ、プレイ画面を画像で見たときは『リアル感が中途半端に高いんじゃないか、これだと2次元キャラが浮いちゃうんじゃないか』なんて考えてました。この記事を読んでる人もそう感じているかもしれません。

でも、実際にVRで体験すればそれが完全に杞憂だったとわかります。リアル過ぎず、かといってデフォルメされすぎていない周りの物体すべてが、現実世界の自分と二次元の存在である高木さんを調和させてくれています。

タイトル画面だけで小一時間は楽しめます。

なんだったら、この空間で作業なんかできたらもう…死ぬまで作業してしまいそうです。

過ぎ去った時は戻らないなんて言いますが、ここには確かに中学生活の空気感があります。

そして、その中心に自分と高木さんがいます。

本編

もうタイトル画面だけで給付金をn回吹き飛ばしてもいいぐらい大満足ですが、なんと、西片の視点で高木さんにからかわれる体験もできてしまいます。

具体的な内容は話してしまうのは、これからプレイする皆様に申し訳が立たないので、細かいけどここに注目!!ってポイントや お勧めのプレイ方法をお話ししたいと思います。

視線の設定

まず初めに、高木さんVRでは視点の高さをリアルの自分の高さと西片の視点の高さから選ぶことができます。
先に言っておきます、私のお勧めは西片視点です!!!
初期設定はリアルの自分の視点ですが、中学生のあの頃に思いを馳せたい、西片としてロールプレイしたいならば設定を西片の視点に変えることを強くお勧めします。

高木さんの身長は中学生女子並しかありませんので、一般成人男性からすると頭一つ分もしくはそれ以上の身長差があります。そのため、小さい娘を見ているお父さんみたいな感覚になります。(それはそれで、ほっこりして楽しいのですが…)

一方で、西片視点にすると自分の目の高さとほぼ同じ高さに高木さんの目があります。成長スパートの速さ的に少し女子のほうが身長が高いあの頃って感覚がします。
さらに、周りの物品も自分がまだ小さかった頃のサイズ感で存在しています。そんな昔に戻ったような、でも自分が体験したのとは違う体験をできるのはVRならではといった感じでしょうか。

f:id:drhaisai:20200703180923p:plain
西片視点の高木さん(左)とリアル視点の高木さん(右)

高木さんの実在感

とにかく高木さんの動きがかわいいです。
話すときは表情が豊かですし、高木さんがこちらの動きを待っている間も動きます。
動くといっても少し重心を変えたり、手を後ろに組んだりとほぼ無意識レベルの動きなのですが、永遠に見ていられます。

f:id:drhaisai:20200703200147g:plain
動く高木さん

そういった細かな動きや、VRならではの没入感のおかげで高木さんの実在感が非常に高いです。距離が近い時なんかいい匂いがしそうなレベルです。

f:id:drhaisai:20200703200637p:plain
近くから見た高木さん

まあ、匂いの機能はついていないので、どんなに嗅いでも自分の部屋の匂いしかしないのですが…

ちなみに私は、DEOCOという女の子の匂いがするボディーソープを持っているのでそれで洗ったマフラーを巻いてこのくそ暑い中プレイしました。
控えめに言って神です。
中学時代暗黒の時代を生きてきた自分は浄化されて瀕死になりました。
中学時代、異性とのドキドキが一切なかった同志諸君はぜひ匂い付きでプレイすることをお勧めします。

ただし、暑いのでマフラーは使わずに、女性向けの香水を買って、嗅ぎながらプレイするのが良いかと思います。

高木さんとのアイコンタクト

下の画像をご覧ください。必ず高木さんの視線が必ずこっちに向いています!

f:id:drhaisai:20200703184748p:plain
どこから見てもこっちみてる高木さん(かわいい)
心理学的な側面から捉えるとアイコンタクトは、それをしてくる対象に対するポジティブな印象はよりポジティブに、ネガティブな印象はよりネガティブな印象を与える効果があります。そのため高木さんからのアイコンタクトは、からかわれて悔しくなる部分はより際立たせつつも、その中に感じる好意はより強化する効果があると考えられます。
つまり、からかい上手の高木さんの特徴をより際立たせていて、よりドキドキできるというわけですね。もうそれはドキドキしっぱなしですよ!!

邪道とは思いますが、ずっと目が合い続ける現代のレオナルドダヴィンチ並の表現を実現している原理を解き明かすために私は様々な角度や距離で観察しました。どうやら逆遠近法を用いた錯覚をVR空間で起こしているようです。これもVRならではといった所ですね。

逆遠近法とは何ぞやって人は、『高木さんが自分の意志で目を合わせていてくれる』と考えておいてください。そのほうが幸せになれます

お勧めのプレイ方法

一部内容が重複してしまいますが、プレイする上でお勧めの方法について書いていきます。

  • 視点設定を西片設定にする
     視点の高さの設定は西片の視点の高さに変更することをお勧めします。同じ高さで見つめられる破壊力は53万ぐらいあります。

  • 匂いを何とか用意する
     高木さんの存在感がとてつもなく強いのでいい匂いがしそうと感じる瞬間があります。その時にちゃんとにおいがしたときの破壊力は計り知れません。スカウターが壊れます。

  • 部屋を暗くする
     VRゲーム一般に言えることですが、ゴーグルの隙間から光が入ってしまうと没入感が薄れてしまいます。電気を消したらそれを低減できるのでお勧めです。ただし、他の人に見られたら暗い中でニヤニヤしてる不審者が産まれます。気にしたら負けです。

  • 寒くない部屋でプレイする(熱中症やマシンの暴走に要注意)
     これは正直なところ諸刃の剣です。作中の時間軸は夏ですので、温度も近ければ近いほど体験はリアルなものになります。(特に第二章)
     自分やパソコンの暑さ耐性とよく相談してください。

物足りないと感じた点

ここまでいい面ばかり書いてきたので、『こいつ、ステマか?』なんて思われたり、信ぴょう性が低いと感じられてしまうのは嫌なのでやってみた不満点を挙げていきたいと思います。ちなみに、ここを読んでも特に得することはないので読み飛ばしてしまっても構いません

移動方法

高木さんVRではVRゲームの移動方法の主流であるワープ移動を用いています。この移動方法は酔いにくかったり動きが少ないのでものにぶつかったりしないという利点や移動可能範囲を簡単に制限できるといった利点があります。しかしながら、高木さんVRにはこの移動方法はあっていないのではないかと私は感じました。
教室の中を移動するときは、机や椅子を避けて歩くあの感覚がなかったり、高木さんと一緒に歩くときは自分の移動が非連続的になってしまい、一緒に歩いている感がなくなってしまいます。それが嫌で堅実世界で歩くと壁にぶつかります。

f:id:drhaisai:20200703212025p:plain
次世帯の壁ドン
部屋をめちゃくちゃ広くするかVR歩行用デバイスを用いるのがより直接的な解決方法ですが、そんなもの用意できるわけないです。
ですので、解決とまでいかなくても余計なところで不満を抱きにくくするために、手を振ることで動く『アームスイング方式』など連続的に移動できる方式など、ユーザの好みに合わせた移動方法を選べるようにしてほしいと思います。

移動できないストーリー

いくつかのストーリーはワープによる移動方法ができないです。ストーリー進行の都合上致し方ない気もしますが、現実世界で動けば動けてしまうので、つい動いて壁にドンしたり、本来の立ち位置から動いたせいで高木さんが自分のいない方向に話しかけたりします。
これについての解決策は正直なところ浮かびません… たぶん、制作側も頭を抱えた問題かと思います…
プレイヤーが好き勝手に移動しずらくなるような演出、例えばその位置からじゃないとセリフの文字が見づらいとか、何か障害物があるとか、そのような心理的なアプローチとかをするのも手かもしれません。

その他細かいこと

  • ゴミを掃除するシーンで、ゴミがちり取りとほうきでとる必要がないレベルで大きい
     視認性をよくするために、落ちているゴミを大きくしたと思うのですが、大きすぎるためにちり取りの淵を乗り越えて外に転げ出てじれったいです。手で拾ってゴミ箱に投げ込みたい!!
    f:id:drhaisai:20200703215120p:plain
    でかすぎるゴミと低すぎるちり取りの淵
  • 自販機で高木さんが買った飲み物と別の飲み物が出てくる
     これは純粋なミスだと思います。気になりすぎて思わず突っ込みを入れてしまいました。違うじゃんみたいな反応してくれたら面白かったけどさすがにそれはなかったです。
    f:id:drhaisai:20200703215849g:plain
    問題のシーン 二段目左から二番目の飲み物が出てくる

まとめ

さて、ここまで読んでくださった方ありがとうございます。読み飛ばした方もありがとうございます。

徒然なるままに書き連ねてきましたが、一番大事なことは、『高木さんかわいい』ってことです。
今日はこの事だけ覚えて帰ってください。

そして気になった方は、プレイしてみて高木さんにからかわれる感覚や、並行世界のどこかにあったであろう自分が中学生のころに楽しく過ごせていただろう日々に思いをはせてみてはいかがでしょうか?

本稿で紹介してきたからかい上手の高木さんVRは正式には『からかい上手の高木さんVR 一学期』というタイトルです。
夏休みや二学期なんて言うのもあるのかな…なんて楽しみにしています。

からかい上手の高木さんVR、とても楽しめました。気が付けば約5時間もプレイしてました。消し飛んだ給付金氏も浮かばれることでしょう…

給付金氏の冥福を祈りつつ、本稿を締めさせていただきたいと思います。

「けっきょくはいさいさんって何の人なの?」

はじめに

この記事はkstmアドベントカレンダー2019 6日目の記事として書かれました。

qiita.com

最近、研究室とか部室に居ると「この人、何してる人なの?」ってオーラを後輩たちから感じることがあるんですよ。 まあ、たぶん、自分の考えすぎだとは思いますが、「私に興味があるのに何の人かわからないから話しかけにくい」「危ない奴だから追い出そう」みたいな人が居たら寂しいので、自分が作ってきたものの中でも特にお気に入りのものをいくつか簡単に紹介して自分のことを知ってもらいたいと思います。

3Dプリンタが不調なため、3Dプリンターで無人島を生きよう企画は延期となりました。

サーバルちゃんのホームランダービー

f:id:drhaisai:20191203201942p:plain
さーばるちゃんのホームランダービー
某森のくまのぬいぐるみさんが野球するゲームを,某けもののお友達がたーのしーするアニメでパロディしたゲームです。
f:id:drhaisai:20191203201945p:plain
サーバルちゃんのホームランダービーのプレイ画面
Scratchで既存のものをコピーした作品を作るという課題で作りました。全力でハッスルしたのでコードが(恐らく)この課題を提出した人達の中でダントツで長くなっているとおもいます。(採点をした先輩方申し訳ありませんでした。採点する側の立場になって初めて苦労を知りました。)

世界一難しいギャルゲ

f:id:drhaisai:20191203204214p:plain
世界一難しいギャルゲ

game.nicovideo.jp

こちら、RPGアツマールというサイトに投稿されている”まっくす”さん原作の29万プレイ以上されていて漫画化もされているフリーのノベルゲームです。私はこのゲームの3作目にあたるアンナ編から携わっています。 アンナ編では

といったゲームで必須と言っても過言ではないものを作りました。特にフローチャートは見たシナリオが追加されて行って最終的に膨大な大きさのものになりますぜひプレイして全部集めましょう!!

f:id:drhaisai:20191203205009p:plain
フローチャート

switcheers ~一口ちょうだいから始まるインタラクション~

f:id:drhaisai:20191205134824p:plain
switcheers ~一口ちょうだいから始まるインタラクション~
こちらは、『OGIS-RI Software Challenge Award 2018』に出展したものです。 switcheers は専用のグラスを用いて乾杯を行うことで、乾杯した相手と飲み物の味を交換するものです。 味は色、香り、電気による舌への刺激の三要素で表現しており、それぞれのパラメータを乾杯時に交換することで味の交換を実装しています。また、乾杯時に味だけでなく、事前に設定したプロフィールをお互いに交換し、webアプリ上で確認できるようになっています。

より詳しい説明、コンテストの様子は下のリンクに分かりやすくまとめられています。

www.ogis-ri.co.jp

ターキー(おにぎり)

f:id:drhaisai:20181221154014j:plain
ターキー(おにぎり)
ターキの形したおにぎりです。3Dプリンタで作りました。去年のアドベントカレンダーです。

drhaisai.hatenablog.com

おわりに

最期まで見てくださってありがとうございます。飛ばしてここまで来たって人もありがとうございます。 さて、冒頭の「何の人かわからない」問題の答えは分かりましたでしょうか?ゲームに始まりコップ、果てはおにぎりと言ったものを作っています。そう!作っているのです!

ですので、冒頭の「何をしている人?」と言う質問にはこう答えます「ものづくりの人です!」と。

3Dスキャナーと3Dプリンターを使ってターキーを作成しようとしたら、おにぎりができた話

はじめに

この記事はkstmアドベントカレンダー2018 22日目の記事として書かれました。

qiita.com アドベントカレンダーと言えばクリスマスであり、クリスマスと言えば【ターキー*1です。

ですので、食レポをしたいところなのですが、偉大な先駆者の方*2がいらっしゃいます。また、ターキーは300gで800円とお財布に優しくない価格設定ですので、それを買うのは私にとってハードルが高いです。

そこで、ここは無ければ作ればいいの精神でターキーを3Dプリンタを用いて作成します。

 

方針

ターキーの型を3Dスキャナーと3Dプリンターを用いて作成し、その中にご飯を詰めて形成することでお手軽なターキー作成を目指します。

材料,調理用具

ターキー 1本
ターキーを固定する用の台 1枚
ターキーを固定する用の釘 1本
ターキーを固定する用のハンマー 1挺
3Dスキャナー[makerBot Digitizer]  1台
3Dプリンター[makerBot Replicator 2] 1台
サランラップ 適量
ご飯 適量
食塩 適量

手順

3Dデータを取る

ターキーを格安で作るために、ターキーを台に固定し、3Dスキャナーにセットします。

f:id:drhaisai:20181221131443j:plain


そして、3Dスキャナーを起動させるとレーザー照射を用いたスキャン*3が行われ、次のような3Dモデルが作成されます。

f:id:drhaisai:20181221132028p:plain

3Dデータがとり終わったら、ターキーを食べます。おいしかったです。

そして、残しておいた骨についても同様に3Dモデルを作成します。

f:id:drhaisai:20181221133215p:plain

3Dデータを編集する

ここからは取得した3Dデータを、OpenSCADを用いて型に加工していきます。

台座を取り除く

スキャンしたままのデータだと台座が残っていたので適当な立方体との差分を取ることで取り除きます。

f:id:drhaisai:20181221135840p:plain

difference(){
    import("s3.stl",convexity=3);//ターキーの3Dデータをインポート
    translate([-50, -20, -30])//台座と骨の外に出ている部分をカット
    rotate([30,0,0]){
        cube([100, 100, 30]);
    }
    translate([-50, -60, -12])
    cube([120, 120, 30]);
    translate([15, -3, 10])
    cube([20, 20, 10]);
}
translate([5, 10, 10])
rotate([0,10,215]){
	import("shone2.stl",convexity=3);//骨の3Dデータをインポート
}
型にする

縦に二等分したターキーの形に、立方体をくり抜いて型にします。以下の様に立方体とターキーのモデルの差分を取ることでくり抜き、同時に接合用にでっぱりを設けました。

f:id:drhaisai:20181221142259p:plain

difference(){
    rotate([-135,0,0]){
        difference(){
            translate([-45,65,60])
            rotate([135,0,0]){
                cube([80,220,90]);
            }
            import("tori.stl",convexity=3);   
            //台座を取り除いたターキー
            translate([-80,-200,-10])
            cube([80,300,300]);
        }
    }
    translate([-60,-10,-110])
    cube([120,100,50]);
    translate([-60,180,-120])
    cube([120,100,50]);
}
rotate([0,90,0]){
    translate([10,50,-14])
    cylinder(h=29, r1=5.5, r2=5.5);
    translate([10,85,-14])
    cylinder(h=29, r1=5.5, r2=5.5);
    translate([10,190,-14])
    cylinder(h=29, r1=5.5, r2=5.5);
    translate([60,200,-14])
    cylinder(h=29, r1=5.5, r2=5.5);
    translate([75,110,-14])
    cylinder(h=29, r1=5.5, r2=5.5);
    translate([50,5,-14])
    cylinder(h=29, r1=5.5, r2=5.5);
}

もう半分も同様にくり抜いて型にします

f:id:drhaisai:20181221144436p:plain

difference(){
    rotate([-135,0,0]){
        difference(){
            translate([-45,65,60])
            rotate([135,0,0]){
                cube([80,220,90]);
            }
            import("tori.stl",convexity=3);   
            //台座を取り除いたターキー
            translate([0,-200,-10])
            cube([80,300,300]);
        }
    }
    translate([-60,-10,-110])
    cube([120,100,50]);
    translate([-60,180,-120])
    cube([120,100,50]);
    rotate([0,90,0]){
        translate([10,50,-14])
        cylinder(h=29, r1=5.5, r2=5.5);
        translate([10,85,-14])
        cylinder(h=29, r1=5.5, r2=5.5);
        translate([10,190,-14])
        cylinder(h=29, r1=5.5, r2=5.5);
        translate([60,200,-14])
        cylinder(h=29, r1=5.5, r2=5.5);
        translate([75,110,-14])
        cylinder(h=29, r1=5.5, r2=5.5);
        translate([50,5,-14])
        cylinder(h=29, r1=5.5, r2=5.5);
    }
}
骨を加工

骨をプリントしやすい形に加工します。

f:id:drhaisai:20181221144747p:plain

3Dプリンターで出力する

f:id:drhaisai:20181221150043j:plain

加工した3Dモデルを3Dプリンターで出力します。また、今回は諸事情により、一辺当たりの大きさを50%にして出力しました。100%の大きさだと出力に丸一日以上かかるとか想定できないわ 

f:id:drhaisai:20181221150213j:plain

型に詰める

いよいよ調理の時間です。 作成した型にラップを敷いて、ご飯を詰めて、骨を入れてご飯を被せて型を閉じます。

f:id:drhaisai:20181221154007j:plain

そして、型を開けます。

f:id:drhaisai:20181221154010j:plain

中身を取り出します。

f:id:drhaisai:20181221154014j:plain

完成です。

 

実食

形は小さめのターキーを再現できてます。味付けとして塩を適量振りかけました。

f:id:drhaisai:20181221154017j:plain

味は塩にぎりの味です。おにぎりです。

f:id:drhaisai:20181221154020j:plain

おいしいおにぎりでした。

参考,注釈

qiita.com

RPGツクールMVの変数で遊ぶ

初めに

この記事はkstmアドベントカレンダー2017 11日目の記事として書かれました。

qiita.com

 

 

やる事

RPGツクールMVのイベントコマンドである[変数の操作]にはオペランドとして[定数][変数][乱数][ゲームデータ][スクリプト]の5種類が用意されています(図1)。この記事ではその中の[スクリプト]で遊びます。

f:id:drhaisai:20171210025439p:plain

図1.イベントコマンド[変数の操作]
文字列を入れる

RPGツクールMVの変数に文字列を入れるには[スクリプト]内で、シングルクォーテーションやダブルクォーテーションで囲みます(図2)。実際に図2の様に入力した結果を制御文字「\V[1]」を使って表示すると「あいうえお」とシングルクォーテーション内の文字が表示されているのが分かります(図3)

f:id:drhaisai:20171210032336p:plain

図2.文字列の入力例

f:id:drhaisai:20171210032748p:plain

図3.文字列の出力
配列を入れる 

RPGツクールMVの変数に文字列を入れるには[スクリプト]内で、角括弧で囲み、それぞれの要素をカンマで区切ります(図4)。実際に図4の様に入力した結果を制御文字「\V[1]」を使って表示すると「ぜろ,いち,に,さん」と角括弧内の文字が表示されているのが分かります(図5)

f:id:drhaisai:20171210035220p:plain

図4.配列の入力例

f:id:drhaisai:20171210035522p:plain

図5.配列の出力
要素を取得

配列の要素を取得するには「$gameVariables.value(i)[j]」の様に入力します。ここでのiは配列が入っている変数の番号、jは取得したい配列の要素の番号を入力します。(図6)実際に、先ほどの配列を入力してから図6を入力した結果を制御文字「\V[1]」を使って表示すると配列「ぜろ,いち,に,さん」の先頭の要素である「ぜろ」が表示されているのが分かります(図7)

f:id:drhaisai:20171210042842p:plain

図6.要素の取得

f:id:drhaisai:20171210043317p:plain

図6.要素の取得例

実装例

紹介で使ったゲームを実際にRPGアツマール上で公開しました。

テストがてら自己紹介

挨拶

初めまして。ハイサイ医者と自称している者です。

普段は、主にRPGアツマールというサイトでゲームをアップしています。

 諸般の事情でブログを開設することになりました。更新頻度は低いと思いますが、どうぞよろしくお願いします。

 

宣伝

作ったゲームのリンクを張っておきます。

よろしければプレイしてみてください。