LotosLabo

プログラミング技術とか気になった情報を載せていきます

Oculus Go購入しました


結構前に購入してました。


私はメガネマンなので、Riftのときはどうしてもメガネかけた時に窮屈感が慣れなくて
購入していませんでした。
その点Viveは良かった!



Oculus Goに関してはGear VRと同様でメガネかけてもかなり余裕ある感じ。
メガネをかけて使う人のために、メガネスペーサーが予め付属品として用意されていたのですが、
私のメガネでは付けても付けなくてもそんなに変わらなかったです。

取り付けは簡単にできました。


試したこと

・ブラウザの視聴
日本語入力ほしい!


Amazon Primeゆるキャン△の視聴
やっぱりゆるきゃん最高!

f:id:lo25131:20180526023435j:plain


・BigScreenでのPCのブラウザミラーリング
最高!

f:id:lo25131:20180526023600j:plain


・DMM VR
5月17日時点でアップデート入っていました!
Oculus Goコントローラー対応されてました!感謝です!

・Epic Roller Coaster
やはり酔う!

・PCからOculus Goに画像を入れたり、動画を入れたりして閲覧
特に問題なく動いた!ファイル形式はjpg、mp4しか試していない


使ってみた感想

<素晴らしいところ>
今までのHMD比べて軽い!
コードレス!
ヘッドホンいらずに高音質!
寝ながら映画見れる!


<改善してほしいところ>
日本語入力や大好きなTwitterに画像を共有できないのがこれから改善してほしいところ。
後、しばらく触っていないとスリープモードになるたみたいですが、たまに、フォン!というSEがなるのが気になる。
そのまま完全に電源を落としてほしい。

最初のスタート画面でOculusボタンを押してスタートってあるが、
長押ししないと始まらないので少し戸惑った。出来れば文章を足してほしい。


おまけ

ここまでみなさんと同じような内容になってしまうので、
ちょっとアダルティな内容も紹介します。

一応隠しますが、ここからはR18です。


<Oculus Goでのアダルト動画の視聴感想について>

2パターン試してみました。

・DMM VRを使用した視聴
・OculusにアダルトVR動画を入れてOculus Videoで視聴


【DMM VR

予めDM VRのサイトからアダルトVR動画を購入しておきました。
今回購入したのは、こちら

www.dmm.co.jp

枢木あおいさんのオナサポ動画
控えめに言って枢木あおいさん好きです。


Oculus GoでDMM VRにログイン後、購入した動画が表示されます。

f:id:lo25131:20180526023707j:plain

選択後、ストリーミング再生かダウンロード再生か選択できます。
一応両方試してみて、ダウンロードも12000kbpsで行ってみたのですが違いが分からなかった。
f:id:lo25131:20180526031613j:plain


再生中のスクショです。

f:id:lo25131:20180526024536p:plain


コントローラーも常に表示されており、後ろのトリガーや
中央ボタンを押すことで再生プレイヤーメニューが表示され、
再生場所を変更できます。


VR動画をインストールしてOculus Videoで視聴】

今回高画質での視聴を試してみたかったため、
Adult Festa VRさんを利用させていただきました。

今回視聴させていただいた動画はこちら、

www.afesta.tv

匠シリーズと呼ばれているもので、
跡見しゅりさんの病室でイチャイチャする動画。
跡見しゅりさんも個人的に好きです。

PSVR版、Oculus Go版は11.23GBあるので少々ダウンロードに時間がかかりました。

Oculus Videoで動画を見るには、Oculus GoとPCをUSB接続して、
指定したディレクトリに入れて上げる必要があります。
こちらはAdult VR Festaさんでも手順が紹介されていましたが、
こちらでも説明します。

USB接続して、
「oculus」のディレクトリを選択

f:id:lo25131:20180526030035j:plain


「360videos」のディレクトリを選択

f:id:lo25131:20180526030042j:plain


この中にダウンロードした動画を入れてあげます。
f:id:lo25131:20180526030050j:plain


そうすると、Oculus GoのOculus Videoアプリの
「マイ動画」で表示され観ることができます。

なぜかスクリーンショットが取れなかったので、
画像では説明できません、ごめんなさい。


DMM VRさんと比較して、少し画質が上がったかなという感じがあります。
ただOculus Videoアプリの仕様なのか途中再生の状態の保存ができないので、とても不便でした。


まとめ

アダルト動画に限らず、電源入れてすぐに立ち上がって、どこでも持ち運べて
VR動画が見れるのは素晴らしい。

また、「俺、こんなVRコンテンツ作ったんだぜ!」
ポチっと 起動!
体験!
がほんの数秒で実現できるようになったのが最高でした。


次回はOculus Goで何か作ってみたいと思います。

【個人メモ】UnityのProjectをGithubに投稿するまでの手順

UnityのProjectをGithubに投稿するまでの個人メモです。
よく忘れる。

【手順】

1.ブラウザ上のGithubリポジトリを作成
2.PCのローカル上にクローンする
3.クローンした場所に投稿したいプロジェクトファイルを入れる
4.コミットとプッシュを行う
5.GithubでREADMEなどを編集して終わり


1.ブラウザ上のGithubリポジトリを作成

github.com

Githubのページ上部右の+アイコンより、
New Repositryを選択。

f:id:lo25131:20180525171620j:plain



リポジトリ名を入力。
今回は「UnityTestProject」にした。

Initialize this repository with a READMEにチェックを入れておく。
LicenseはMITにしておきました。


f:id:lo25131:20180525171423j:plain


Create repositryボタンを押下。


リポジトリが作られる。

f:id:lo25131:20180525172501j:plain


2.PCのローカル上にクローンする


リポジトリ画面のclone or downloadを選択して、表示されたURLをコピーしておきます。

f:id:lo25131:20180525172552j:plain


Gitが導入されたPCを用意して、
WindowsならBashとか、MacならターミナルでCloneしたい場所でコマンドを叩く。

f:id:lo25131:20180525172804j:plain


その場所にファイルが作られる。
「UnityTestProject」
f:id:lo25131:20180525172912j:plain


3.クローンした場所に投稿したいプロジェクトファイルを入れる

Projectファイルではないですが、
「test」としてディレクトリと中に、テキストファイルを格納しておきました。


f:id:lo25131:20180525173757j:plain

f:id:lo25131:20180525173805j:plain




ここにUnityのProjectファイルを入れてあげます。
入れる際は余分なファイルなどはいれずに、基本はAssetsとProjectSettingsなど。

4.コミットとプッシュを行う

格納したファイルをGitで追加して、Githubに投稿します。

Gitで管理できるようにしてあげる
git add ファイル名

変更を追加する
git commit ファイル名 -m "メッセージ内容"


f:id:lo25131:20180525173943j:plain


最後にGithubに投稿します。
git push

f:id:lo25131:20180525174214j:plain


Http Requestエラーが出るかもしれませんが、とりあえず続けます。
Windows10だとGitのバージョンアップでなおるとかどうとか。



Gitのユーザー名とパスワードを入力します。

f:id:lo25131:20180525174457j:plain

f:id:lo25131:20180525174519j:plain



pushに成功後、追加したファイルがGithubのブラウザ上で追加されていることを確認します。

f:id:lo25131:20180525174656j:plain


5.GithubでREADMEなどを編集して終わり

最後にREADMEなどを変更して終わりです。

f:id:lo25131:20180525174735j:plain


その他

GitでPushした後に、更新者が自分のPC名になっているときがあります。
その時はPC上のBashやターミナルなどで、
Gitのアカウント設定をしてあげてください。

git config --global user.name "ユーザー名"
git config --global user.email メールアドレス

はじめての転職活動を終えて

退職エントリはこちら
lo25131.hatenablog.com




転職しました。


前職と同じくソーシャルゲームの開発会社です。
職種はクライアントエンジニア(Unityエンジニア)になります。


はじめての転職活動ということもあり、
色々と学んだこともありましたので共有と私なりの感想を載せたいと思います。

どのようにして転職活動を行ったか

業界と職種

ソーシャルゲーム業界を中心に転職活動をしていました。
職種はクライアントエンジニア(Unityエンジニア)です。

転職活動は在職中か

転職活動は、在職中に行いました。
というのも勤務時間中に転職活動を行うことが許されていたので、
今の会社と往復しながら転職活動を行っていました。
幸い、仕事が落ち着いていたので引き継ぎ資料を作成しながらその合間に面接に行っていました。

転職支援サービスの利用

転職の際には支援サービスを二社活用しました。
企業への取り次ぎや面接日の調整をエージェントの方に行ってもらえるので、
在職中であったためとても助かりました。

またエージェントの方から、企業への推薦状を提出していただいたり、
その企業の担当者もいらっしゃるので、会社の特色や面接のアドバイスなども詳しく聞けることができました。

転職活動で必要になったもの

転職活動で必要になったものをまとめました。
あくまでUnityエンジニアとして必要になったものです。


【絶対に必要なもの】
・履歴書
職務経歴書
・交通費
・プリンタ(なければプリント代)


【企業によって必要なもの】
Githubのアカウント
・自分の書いたソースコード
・スキルチェックシート
・企業からのアンケート


【個人的に準備してよかったもの】
・履歴書・職務経歴を入れるためのクリアファイルと封筒
・個人で制作したアプリのデモ


転職活動の期間

4月1日~5月11日まで行いました。
約1ヶ月ですが、途中にGWが入ったので本来であれば1ヶ月以内で終わらせられたと思います。

どのくらいの企業を受けたか

30社程受けました。
そのうち面接を受けたのが、17社です。

転職活動中大変だったこと

一日に何社も面接の予定を入れてしまったことです。
一週間に計8社面接一日に最高3社面接というスケジュールで動いていました。
身体的な疲労もありましたが、面接が終わったらまた次の面接、そしてまた次の面接だったため、
頭の整理が追いつきませんでした。


転職活動を終えて

今の会社で複数のプロジェクトにアサインされたり、様々な経験をしましたが、
リーダーのような経験はできませんでした。

このソーシャルゲーム業界、売り手市場と言われており、複数の求人やオファーもきました。


しかし、応募した企業からは

「リーダーの経験がないとちょっとなぁ…」
「3年でこれしか実績ないの?」
「うちは育成枠は募集していないです。」
「メイン部分の実装に関わっていないならいらない。」

など厳しい判断をいただきました。


ただ、私自身技術的に不足があるのは自覚していたため、
その他のスキル以外の部分を強みとして転職活動を続けていきました。
その結果もあり、希望する企業に熱意が伝わり、内定をいただきました。

今後は前回の記事で書かせていただいたディレクター兼プログラマーになりたいという思いもあるので、
この思いを胸に新しい会社で努力していきたいと思います。


これから転職活動を行う方へのアドバイス

やりたいことがあるけど今の会社では実現できない、
もっといろんなことや高い技術力を身に着けたい、
いくら働いても、実績を出しても給料が上がらない

と様々な希望や不満を持ちながら働いている方がたくさんいらっしゃると思います。
転職は逃げではないです、チャンスです。

転職活動の不安もあるかもしれませんが、自分を見つめ直す機会でもあります。
ぜひ一度上司や同僚と相談した上で、それでも解決しないようであれば転職をしてみてはどうでしょうか。


ごめんなさい、ちょっと偉そうなこと言いました。


おまけ(実際に面接で聞かれた質問集)

ソーシャルゲーム会社17社の面接を受けて実際に聞かれた質問となります。
どの会社でどの質問を聞かれたかについてはお応えできません。

転載禁止です。


【自己紹介、転職経緯など】
・簡単に自己紹介をお願いします
・自己紹介、職務経歴、転職理由を10分ほどでまとめて教えてください
・自己PRをしてください
・職務経歴を教えてください
・退職に至った経緯や理由はなんですか?
ゲームプログラマーをなりたいと思ったきっかけはありますか?
・いつ頃からプログラム、Unityを触り始めましたか?


【学生時代について】
・大学時代に学んだことについて教えてください
・大学時代にどのようにしてプログラムの技術を身に着けましたか?
・大学卒業後の就職活動ではどのような企業を受けていましたか?
・大学・高校時代のサークルや部活は何をしていましたか?



【現在の会社について】
・現在の会社に入社した理由を教えてください
・現在の会社の構成について教えてください、デザイナー、プランナー何名など
・周りの方はあなたのことをどんな人だと言っていましたか?
・周りの方からどういう面で評価されていましたか?
・会社で尊敬出来る人はいましたか?
・運営していたタイトルはありましたか?
・運営していたタイトルで大きな障害はありましたか?
・この部分は直してほしいと言われることはありますか?
・今の会社での成功体験などはありますか?
・今まで関わってきたプロジェクトで貢献したことについて詳しく教えてください
・今まで関わってきたプロジェクトでの立ち位置、学んだこと、苦労したことを教えてください
・実装する上で一番苦労した機能はなんですか?
・苦労した実装機能について、どのような手順を踏んで実装したか詳しく教えてください
・社内のチャットツールにはどのようなものを活用しましたか?
・チケット管理ツール(Redmine)、バージョン管理ツール(Subversion,Git)は今まで使った経験はありますか?
・そのバージョン管理ツールのどこがよかったなどありますか?
・立ち上げから関わったプロジェクトはありますか?
・立ち上げから関わったプロジェクトでなぜそのプラットフォーム、ゲームエンジンを起用したか理由はありましたか?
アジャイル開発やスクラム開発の経験はありますか?
・コードレビューの経験はありますか?また、コードレビューで気をつけていることはありますか?
・後輩に教えることはありましたか?また、教えることは好きですか?
・英語のドキュメントを読むことは苦ではないですか?
・エラーや問題に衝突した時にどのように対処しますか?また、それは苦ではないですか?
・プロジェクトで使用するAssetの決定判断をしたことがありますか?
・どんな人が苦手ですか?
・今まで楽しかった仕事はなんですか?
・業務中に嬉しかったことなどありますか?
・業務中にテンションがあがるときはどういうときですか?
・業務中にストレスに感じていたことはありましたか?
・使用してきたUnityのバージョンはなんですか?
・メインプログラマーとしての経験はありますか?
・リーダーの経験はありますか?
・リーダーになりたいですか?どんなリーダーになりたいですか?
・リーダーになるために自分にとって何が必要だと思いますか?
・現在の月の勤務時間はどのくらいですか?
・現在の月の残業時間はどのくらいですか?
・現在の年収と月収について教えてください
・現在の会社での一番の大きな失敗はなんですか?
・その失敗を次に繰り返さないようにするためにどのようなことに気をつけていますか?



【技術的な話】
・Unityで作ったことのある拡張機能はありますか?
・Unity以外の技術でどのようなことができますか?
・UnityのUIライブラリは何を使用してきましたか?
・(上記、uGUI、NGUI両方使用してい場合)uGUI、NGUIどちらのほうが使いやすかったですか?その理由などもありますか?
・リソース周りの管理に携わったことはありますか?
・3D周りの実装の経験はありますか?
・最近興味のある技術はなんですか?
・自分が一番得意としている技術はなんですか?
・その得意としている技術はどのようにして業務で活かしていきましたか?具体的にお願いします。
・設計をすることは好きですか?
・設計する上で工夫したこと、どんな手順で設計を行いましたか?
・プロジェクトで使用したAssetやLibraryについて教えてください
・サーバーの技術に興味はありますか?
・C#のEvent処理を知っていますか?
アルゴリズムの計算量について知っていますか?
デザインパターンはどのようなものを使用してきましたか?
・プログラムを書く上で気をつけていることはありますか?
・Unity以外でアプリをリリースしたことはありますか?
・UniRxは触ったことありますか?
C#4.0以上で気になった機能はありますか?
・ListとDicitionaryの違いはわかりますか?
・Listの中の構造はしっかり理解していますか?
・配列とListの違いは理解していますか?
・LinkedListの双方向型のリストの仕組みを理解していますか?
・バイナリツリーが速い理由を説明できますか?
・通常のソートとアルゴリズムのソートの違いを説明できますか?
オブジェクト指向ポリモーフィズムについて説明できますか?
・abstractとinterfaceの使い分けはどうしますか?
C#の処理で実務上で工夫した処理はあるか?
・Unityのどのくらいの機能を理解していますか?
・一番得意な言語はなんですか?
・上記以外の言語で触れるものはありますか?



【普段の生活】
・休日はどのように過ごしていますか?
・普段はどのようにして技術を身に着けていますか?
・普段はどうやってストレスを解消していますか?
・ゲームは好きですか?
・趣味は何ですか?
・普段どんな技術書を読んでいますか?
・普段どんなゲームをやっていますか?また、そのゲームの好きなところ、改善するとしたらどの部分ですか?
・普段ゲームにどのぐらいの時間をかけていますか?
・普段技術力を向上させるために行っていることはありますか?
・どんなジャンルのソーシャルゲームをプレイしていますか?
・課金しているゲームはありますか?
・そのゲームのとこに課金したいと思いましたか?
・勉強会には参加していますか?レポートなどの提出はありましたか?
・最近参考になった技術書などありますか?



【面接先の企業で実現したいことなど】
・弊社に興味を持った理由、志望した理由はありますか?
・どんなゲームが作りたいですか?
・弊社で一番貢献できることはなんですか?
・弊社で活かせる強みはなんですか?
・弊社で携わりたい仕事や機能面などありますか?
・弊社で挑戦したいことはなんですか?
・弊社でやってみたいこと、作りたいゲームはありますか?具体的にお願いします
・弊社でやってみたいことで、それを実現するにあたって自分にはどのような技術が足りないと思いますか?
・上記、作りたいゲームを作るに当たってどのような手順を踏んで作っていきますか?順を追って説明してください
・弊社のアプリを遊んだことはありますか?
・弊社のアプリを遊んでみてどうでしたか?
・弊社のアプリの悪かったことろなどありますか?
・弊社のアプリのここの実装が難しそうだなと思うところはありますか?
・弊社のアプリはここはもっとこうしたほうがいいなどありますか?
・今後弊社でどのような開発に携わりたいですか?具体的にお願いします
・3年後、5年後のキャリアプランについて教えてください
・これからのキャリアプランについて何年後にこうなっていたいなど、詳しく教えてください
キャリアプランを実現するために自分に何が足りないと思いますか?
キャリアプランを実現するためにどのような行動を起こすべきだと思いますか?
・今後は既に運営しているタイトルに携わりたいか、それとも新規のプロジェクトに携わりたいかどちらですか?
・弊社では技術を極めるスペシャリストと管理職のマネージャーに分かれるがどちらに進みたいですか?
・自分はスペシャリストかゼネラリストのどちらだと思いますか?
・上記、なぜそっちだと思うか、その強みと思える部分を教えてください
・上記、その強みを出すために普段はどのような勉強を見につけていますか?
・将来こんなことがしたい、こうなりたいなどありますか?
・弊社の志望度はどのくらいですか?


【性格、考え方】
・あなたはどのタイプの人間ですか?(人から言われるまで動かないタイプ、勝手に進めてしまうタイプ、相談した上で何をやるか決めるタイプ)
・コミュニケーションを円滑にするために行っていることはありますか?
・自分のやりたいことと給料のどちらを優先しますか?
・デザイナーと意見が食い違った場合はどうしますか?
・デザイナーやディレクターとのやり取りを円滑にするために行っていたことはありますか?
・仕事をする上で気をつけていたことはなんですか?
・ユーザーが楽しいと思うゲームは何か?
・あなたの考えるソーシャルゲームとは何か?
・どういう人と一緒に仕事したいですか?
・どういう人と一緒に仕事したくないですか?
・勉強会などで登壇してみたいと思いますか?
・自分は能動的か受動的かどちらだと思いますか?
・自分の強みと弱みについて教えてください
・自分はどういう性格だと思いますか


【転職活動に求めていること】
・選考中の企業について教えていただけますか?
・どんな業界を中心に転職活動をしていますか?
・会社を選ぶ上での重視している条件はありますか?
・会社の選ぶ条件を3つ教えてください
・今選考中の会社にもし、全てに内定が出た場合に上記の選定基準以外で決めるとすればなんですか?
・会社を選ぶ上で、給料は何番目に重視しますか?
・希望の年収はいくらぐらいですか?
契約社員での採用でも構いませんか?
・業務契約の形態にこだわりはありますか?
・いつ頃から弊社で働けますか?

以上になります。
必ず一番最初に聞かれるのが自己紹介をしてくださいでした。

多かった質問としては、
・自己紹介
・退職理由
・職務経歴
キャリアプラン
・企業を選ぶ条件
でした。

志望理由は履歴書に記載している場合はあまり聞かれることはありませんでした。



転職祝いもお待ちしています。

Amazonほしいものリスト

新卒で入社したゲーム会社を退職します

2018年5月をもって、新卒で入社したソーシャルゲーム開発会社を退職致します。
3年と1ヶ月程勤めておりました。

退職理由など気になるところだと思いますが、
まずは3年前から振り返ってみます。

少し長くなります。

今の会社に入社するまで

このブログの記事でも掲載させていただいたのですが、
都内のゲーム会社にインターンシップをしておりました。

lo25131.hatenablog.com


ブログでは最終的にどうなったのかまで記載しておりませんでしたが、
いろいろとありまして…その会社には入社しておりません。
2015年3月下旬に入社辞退する旨をお伝えした形です。
ですので、新社会人になる一週間前に無職になりました。


ただ、とても気持ちがスッキリしていました。

それからは第二新卒としてすぐに就活を再開しました。

まずは就活のイベントに参加したり、第二新卒も募集している企業に応募したりと、
がむしゃらに動いていました。


すると、1週間半程就活をして3社に内定をいただきました。
自分でもその行動力と何が何でも働くという執念に驚きました。

その中から一社に決め、今のソーシャルゲーム開発会社に入社した形となります。
職種はクライアントエンジニアになります。
ちなみにその時点で確か4月3日でしたので、入社式には出れませんでした。


続いて、その会社で何をやってきたかというところについて振り返ってみます。

会社での3年間の振り返り

研修

入社してすぐに他の新卒の方と一緒に研修が始まりました。

電話対応から始まり、社長のありがたいお言葉を聴き、
新卒歓迎会では新卒が会社のお偉いさんを持て成すために、
お酌や出し物(寸劇)をやったりと、
納得いかないものもありましたが研修をやり終えました。

その後、新卒同士でチームを組んで1ヶ月ほどのゲーム開発をした後に、
各自それぞれのプロジェクトにアサインされました。

最初に待っていたのは運営業務

最初のプロジェクトでは主に運営業務を担当しました。

メンテ中のガチャの排出確認や、排出されたカードのステータスチェック、
サーバー側とのダブルチェックなど、言い方はあれですが誰でも出来るような作業を行っていました。

また時には深夜メンテや、長時間メンテなども経験して、ソーシャルゲーム運営の過酷な現実を目の当たりにしました。

それから少しずつメンターの方から作業を割り振られていたのですが、
ほぼほぼメンテでの確認作業と既存のコードを見たり、拡張機能を作ったりするぐらいでした。

プログラマなのにQA

それから1年後に別のプロジェクトに、QAとしてアサインされました。
ここ一年、実務の経験もなく自分のやりたいことが全くできていないためモチベーションは最悪でした。

しかし、もともとゲームをやることは大好きだったため、様々なテストパターンを組んだり、
プログラマだからわかるようなバグを予め予測して操作することで多くの不具合とテスト結果を報告できました。

今思うと他の方が実装した部分でバグを見つけるとなぜか楽しかった。

ディレクターが取締役

QAを担当したプロジェクトがリリースして落ち着いてきた頃に、
他のプロジェクトで大型のアップデートをするために人員を募集していたのでそこにアサインされました。

ようやく本格的に実装業務に携われたのですが、改修内容、新規実装内容合わせて100個以上あり、
スケジュールがとてもキツキツに組まれていました。
もちろん休日も含めたスケジュールです。

私はスケジュールに絶対遅れまいと、仕様や実装した内容に差異が無いよう頻繁に確認を行ったり、
残業などで対応しました。
しかし、プロジェクトを取り締まっているディレクターが取締役であり、
席を外していることが多かったため、仕様の確認や実装後の確認も全て、
そのディレクターを通さないとタスクが完了しないため、作業が一時的に止まることがよくありました。

またそのディレクターは周りの方からはあまり良く思われておらず、
急に仕様を変えたり、一部の社員に対して人格を否定するような暴言を吐いたり、
人の話を聞かず自分の意見を何が何でも押し通すような人だったため、
ついて行けずに何人か会社を辞めた方もいました。

私自身もそういう方は苦手でしたが仕事なのでしょうがないと割り切っていました。

新規立ち上げプロジェクトとVRプロジェクト

前のプロジェクトから半年後、その取締役からなぜかとても評価され、
私は新規の立ち上げプロジェクトへアサインされました。

前のプロジェクトでの身体的、精神的な疲労もありましたが、
新しいプロジェクトとということもありワクワクしていました。

それと同時に私は普段から社内でVRを布教していたため、
興味を持った上長がVRのプロジェクトを立ち上げないかという話を持ちかけてきました。
私もいつか仕事としてやりたいと思っていたので、人数は少ないですがプロジェクト化に向けて動き出しました。
もちろんプロジェクトという形なので業務時間外に動き、お賃金も発生しません。

初めての設計から開発、しかし…

新規の立ち上げプロジェクトではベースの設計も任され、
その他は基本的に画面単位での設計・開発を担当しました。

初めて実務で一から実装するので戸惑うこともありましたが、
優しい先輩や信頼出来るリーダーが居たので安心でした。
よく考えればとてもいいチームだったと思います。


しかし、α版、β版を迎えたところで急に先方から

”画像粗くないですか?
画面のベースサイズ変えてください。
それとUIのデザインも変えましょう。”

との指示がありました。
かなりのキツキツのスケジュールの中動いていたため、
今からその作業分のスケジュールを組み直すのは辛い、というか無理に近い話だったので
リリースをほんの少しだけ伸ばしてもらい残業で対応しました。

それ以外にも急な仕様変更や、大幅な仕様追加などもありました。
リリース前は徹夜で作業するなどもありましたが、ゲーム業界あるあるなのでこれはこれで
いい経験でした。

VRのプロジェクト化に向けて始動、社長へお披露目

新規の立ち上げプロジェクトを本業でやりつつ、
裏でVRのコンテンツを作成していました。

自分自身はVRに学生時代から触れていたので、詳しいほうではあったため
他のメンバーにVRとはどんなものかを知ってもらうために、
当時お台場で開催されていたVRZONEに行きました。

その時の記事です。

lo25131.hatenablog.com

体験してみて一番印象に残ったものはやはりホラーコンテンツでした。


まず、今回のプロジェクト化までの条件としては、
VRのコンテンツを作成して社長に体験してもらい、プロジェクト化のために資金援助
もしくは営業をかけるための許可をいただくということです。

なのでVRを体験してもらい、短時間でVRの凄さや魅力を伝えるとなると
やはりホラーコンテンツが適しているのではないかと思いました。
自分自身がホラーコンテンツを作ってみたいという思いもあります。


チームの体制としては私が主導で動き、コンテンツ内容の企画から機器の準備・開発まで私一人で行い、
エフェクトやUIなどはデザイナーに担当してもらう形です。上長には社長への取り次ぎを頼みました。

VR機器に関して、Viveを所持していたのですが動作するノートパソコンを所持していなかったため、
コードレスでスマートフォンがあれば体験できる、GearVRで体験してもらうことにしました。
そのために、GearVRとヘッドホンとGalaxy S7edgeを購入しました。
ざっと10万です。自腹です。


体験時間としては2分を目安に作成し、手直しや最適化を含め業務時間外で3週間ほどで作成しました。
完成後、何人か社内の方にも体験してもらいましたが、期待通りびっくりしてもらいました。
中には、装着した瞬間に雰囲気が怖すぎて無理という方もいました。


そして、社長へのお披露目当日。
VR体験の注意事項を説明した上で、装着し体験してもらいました。

「うわぁ!」
と社長室に叫び声が響きました。


勝利です。


期待通りびっくりしてもらいました。
社長もVRを体験するのは初めてだったようで、
目の前で本当に襲いかかられるようだったと言っていました。

しかし、当時はVRで食っていくとなるとVRZONEのようなアトラクション型のものしか
なく、売上の見込みがたたないとのことで資金援助はできないと断られました。
ただ営業はしても構わないと許可をもらいました。

それからいくつか営業を行い、実際にVRを体験してもらいまして、
好評価をいただきましたが、体験してもらったコンテンツがホラーのため
実際に作っていくものとは全然異なっていたため、想像がつかないとのことで
保留になりました。

在籍していた会社の規模も小さく、小回りが利く会社だったので
私主導で企画から開発まで行えたのはとてもいい経験だったと思います。

社内ニートから待望の自社新規プロジェクト

VRプロジェクトは保留になり、
新規のプロジェクトはリリース後、運営を続け安定してきた頃に
先方から全てを引き継ぎたいと言われ、引き継ぎ作業を終えた後、
社内ニートになりました。


社内ニート中は勉強のためにゲームをいくつか作ってました。

lo25131.hatenablog.com


ニート生活一ヶ月後、
当時Nintendo Switchが自社でとても流行っており、
私自身もハマっておりました。
ゼノブレイド2やってました。
そこでNintendo Switchでの開発ができないかどうか調べてみたところ、
企業、個人事業主でのみ開発が可能ということがわかりました。


上長もNintendo Switchでの開発に興味があり、
何もしていないなら自社で何か作ろう!ということになり、

すぐに任天堂さんにお問い合わせして、開発キットを購入し、
自社での新規プロジェクトに向けての開発が始まりました。

こちらもVRと同様にプロト版を作成して、社長にお披露目して資金援助をしてもらうという形です。

初めての自社開発

この会社に入った理由として、企画段階から携われること、
会社の規模が小さいため個人の意見が通りやすい、
また現在受託中心だが自社開発もしていくとのことで入社させていただきました。

その中でも自社開発にとても憧れがあったので、今回の自社開発の案件がとても楽しみでした。
企画は既に弊社のプランナーの方が考えており、開発は私一人、デザイナー一人、サウンド一人というチーム編成でした。
今までソーシャルゲームしか作ってこなかったので、コントローラーを使って操作することを意識して開発し、
またそれに合わせてUIの配置やカメラの位置なども工夫しました。

NintendoSwitchでの開発も公式のフォーラムがとても充実しており、
そこまで迷うことはありませんでしたが、コントローラーの持ち方のレイアウトが複数あるため、
一人プレイ、複数人プレイでのボタン割り当てを考慮しなくてはなりませんでした。

開発から三ヶ月、パフォーマンスなどの調整は未だ必要なもののプロトとして出来上がりました。
多少操作に難はあるもののプロトとしては申し分無いほどの完成度でした。


社長へのお披露目当日。
一人プレイモードと二人プレイモードで接待プレイしながら体験してもらいました。
プロトにしてはクオリティが高く、予想を遥かに超える完成度だったと好評をいただきました。


しかし、操作が難しいためNintendo Switchで出すならファミリー向けだし難しいじゃない?
とのことで今回も資金援助は保留になってしまいました。


今回も資金援助までにはいきませんでしたが、
Nintendo Switchでの開発経験と自社での開発経験ができたのでとてもいい経験になったと思います。

そして…会社の消滅

その日は急に訪れました。


「5月を持って〇〇社は消滅し、〇〇社と合併します。」


大切な話があると会議室に社員全員が集められ、
告げられました。
正直驚きはありませんでした。

普段から上長から借金がこれぐらいでこのままだと…
という話は何度も聞かされておりました。

しかし、いざ正式に伝えられると辛いものがありました。
これによってSwitchのプロジェクトは完全中断、
自社開発おろか受託開発もなくなり、SES中心になるという方針になりました。

そして私は決断しました。

退職の理由

長々と3年間を振り返らせていただきました。
ここまで読んでいただいた方はありがとうございます。


退職の理由としては

・会社が潰れてしまったこと
・業務がSES中心になること

もあるのですが、
一番はこの会社に居続けても成長が見込めないと思ったからです。



比較的オープンな社風の会社で、社内ルールもゆるい会社でしたが、
最前線で動いていたエンジニアの方がどんどん辞めていき、
一時期社内での勉強会があったのですがその勉強会もいつしかなくなりました。

ゲームが好きな人は多く居たのですが、ゲーム作りが好きな人はほんとに少なく、
考え方が開発者目線ではなく、ユーザー視点に寄りすぎており、
普段から勉強会に参加したり、進んで技術を身に着けている方はほぼいませんでした。

その他にも経営陣の考え方やお給料などの不満もありましたので、
退職を決意したという形です。


退職後どうするのか


業務時間中での転職活動の許可がもらえたので、転職活動をしました。
次もソーシャルゲーム開発会社に行く予定です。

というかもう決まっております。


次の会社では自分自身、企画を考えるのも好きで、
将来的にディレクター兼プログラマーなりたいと思っているので、
そのために努力をしていきたいと思っております。

また副業が可能ということらしいので、
今の会社のデザイナーと現在、ゲームを作る話を進めております。
そちらの活動も進めていきたいと思っています。


最後に

様々なプロジェクトに配属され、営業にも連れて行ってもらったり、
昼休みや定時後にゲームやボードゲームをしたり、
ご飯もたくさん奢ってもらったりととても皆さんいい方ばかりでした。
そしてVRやNintendoSwitchの開発にも携わさり、とてもいい経験もさせていただきました。
ありがとうございました。
そして、本当にお世話になりました。


転職エントリも書きました。
lo25131.hatenablog.com



転職祝いもお待ちしています。

Amazonほしいものリスト

【Unity】貫通しないレーザービームを作った

Unityで貫通しないレーザービームを作りました。
ついでにちゃちゃっとエビを焼くゲーム?も作りました。


レーザーの見た目

レーザービーム本体については、LineRendererで制御しています。
レーザービームの幅、長さ、色もここで変えられます。


f:id:lo25131:20180420013751j:plain


Animatorの部分ですが、レーザー自体に動きがないとただの如意棒になってしまうので、
前に進むようなアニメーションを付けています。

まずレーザーの元となる画像を用意します。

f:id:lo25131:20180420014610j:plain

そしてこれをLineRendererのMaterialに割当てます。
LineRendererのMainTex_STというところをアニメーションで動かします。
動かすところはzのところ。
この「MainTex_ST」というのは、調べてみるとMainTextureのスケール情報などが含まれたものとか。

https://forum.unity.com/threads/what-is-_maintex_st.24962/


プログラムでもやろうと思えばできますが、今回はAnimationでやりました。
レーザービームのアニメーション自体の速さを変えたいということであれば、
プログラムで制御したほうが良いかと思います。

f:id:lo25131:20180420014953j:plain

レーザービームの長さ、幅の設定

レーザービームの長さと幅のプログラム上での変更。

// レーザービームの長さ
LineRenderer.SetPosition(1, new Vector3(0, 1,  0));

// レーザービームの幅
LineRenderer.widthMultiplier = 3f;


等速で伸ばすようにしてあげたりとか。

[SerializeField]
private LineRenderer m_LaserBeam;

private void FixedUpdate(){
  m_LaserBeam.SetPosition(1, Vector3.MoveTowards(m_LaserBeam.GetPosition(1), new Vector3(0, 5, 1), 50f * Time.deltaTime));
}



レーザーの当たり判定

当たり判定には2つ使用しています。
・貫通しないために、衝突した時にその位置まで戻すためのRaycast
・複数当たり判定を持つBoxCollider2D

下記画像の中央に走る緑の線がRayCast、
周りを囲んでいる青い枠線がBoxCollider2D

f:id:lo25131:20180420022115j:plain


真ん中に当たらないとレーザービームは引っ込まない形にしています。
どこに当たっても引っ込む形にするのであれば、Raycastはいらずに
BoxColliderのみでいいかと。

また、BoxCollider2Dには当たり判定にある全てのコライダを取得できる
処理を追加してあげます。

こういう感じに複数に当たり判定をもてる。
f:id:lo25131:20180420025252j:plain




後は衝突時に衝突したコライダの距離を取得して、そのポジションまで
レーザービームのLineRendererの長さと、コライダ、レイキャストを戻してあげます。


プロジェクト配布

github.com

遅くなりました、サンプルシーンも用意してありますのでどうぞ。

素材使用元サイト

frame-illust.com
icooon-mono.com
on-jin.com

【Unity】お仕事が暇な時に作ったゲームもどきを発掘

タイトル通り、去年の秋頃にお仕事が暇だったのでUnityでゲームもどきを作っていたのを思い出しました。
眠らせておくのもあれなので動画として公開しておきます。

1.ビリヤードもどき

ビリヤードのもどきです。
デザイン性はないけど、SEだけ聞くと本物のビリヤード。

製作期間は確か2時間ぐらいだったはず。


・手玉を弾く処理
・玉同士があたった処理
・ポケットに入った処理
・玉を並べる処理

あとSEと見た目

だけで構成されてます。

2.Wizadryもどき

確かランダム生成迷路のアルゴリズムを勉強するついでで、作ったものだと思います。
迷路生成プログラムのデモも作ってました。

もどきとはいえど、完成度だけは上げたかったのでいろいろ頑張ってた気がします。
製作期間は1週間半ぐらいかと。
迷路アルゴリズムが2日ほど。


迷路生成アルゴリズムは結構色んなゲームでも使われるので、
覚えておくと後々便利です。

<迷路生成アルゴリズムデモ>

動画だと見えにくいですが、
「棒倒し法」、「壁伸ばし法」、「穴掘り法」の3つを様々のサイズでランダムに生成しています。

<Wizadryもどき>

(ゲームオーバー)

(ゴールまで)


プレイヤーのステータスなどもランダムな値にしてます。
宝箱の位置とかもランダム。

アイテムは出るだけで使えないです。
一番凝ったのは敵の攻撃エフェクトの部分。

最後に

暇な時こそゲームを作りましょう!
ただし、上長に確認した上で本当に仕事がないときです!


あと、転職中なので新しい職場先探してます。
Unityはほんのちょっとしかできない(趣味と実務合わせて5年程)ですが、
Twitter等でお声掛けいただけると幸いです。

twitter.com

【Unity】オブジェクトの回転実践例

実際にゲームを作った際に使用したオブジェクトの回転をまとめてみました。

▼時計回り回転


m_RotateValue += Time.deltaTime * m_RotateSpeed;
m_RotateRoot.localRotation = Quaternion.Euler(0, 0, m_RotateValue);



▼反時計回り回転


m_RotateValue += Time.deltaTime * -m_RotateSpeed;
m_RotateRoot.localRotation = Quaternion.Euler(0, 0, m_RotateValue);



▼指定した角度内での反復回転

指定した角度になったら速度を反転してあげる。

m_RotateValue += Time.deltaTime * m_RotateSpeed;
if (m_RotateValue / m_ForwardRotateLimitAngle > 1.0f || m_RotateValue / m_ReverseRotateLimitAngle < -1.0f){
  m_RotateSpeed *= -1f;
}
m_RotateRoot.localRotation = Quaternion.Euler(0, 0, m_RotateValue);



▼指定したターゲット方向に回転


// ターゲットまでの距離.
var targetLocation = (m_Target.position - m_RotateRoot.position).normalized;
// ターゲットまでのQuaternionを取得.
var targetDirection = Quaternion.FromToRotation(m_Target.up, targetLocation);
var localAngle = targetDirection.eulerAngles.z;
m_RotateRoot.localRotation = Quaternion.Euler(0, 0, localAngle);



指定したターゲット方向にスムーズに回転

こっちのほうが見た目的に良い。

// ターゲットまでの距離.
var targetLocation = (m_Target.position - m_RotateRoot.position).normalized;
// ターゲットまでのQuaternionを取得.
var targetDirection = Quaternion.FromToRotation(m_Target.up, targetLocation);
m_RotateRoot.localRotation = Quaternion.Slerp(m_RotateRoot.localRotation, targetDirection, m_RotateSpeed / 1000f);



▼指定したターゲット方向に、指定した角度内でスムーズに回転

// ターゲットまでの距離.
var targetLocation = (m_Target.position - m_RotateRoot.position).normalized;
// ターゲットまでのQuaternionを取得.
var targetDirection = Quaternion.FromToRotation(m_Target.up, targetLocation);
var localAngle = targetDirection.eulerAngles;

// 0~360度になっているので、-180~180度に変換する.
localAngle.z = (localAngle.z > 180) ? localAngle.z - 360 : localAngle.z;

// 角度を制限.
localAngle.z = Mathf.Clamp(localAngle.z, -m_ReverseRotateLimitAngle, m_ForwardRotateLimitAngle);

// 0~360度に戻す.
localAngle.z = (localAngle.z < 0) ? localAngle.z + 360 : localAngle.z;

// Quaternionに変換.
targetDirection = Quaternion.Euler(localAngle);

m_RotateRoot.localRotation = Quaternion.Slerp(m_RotateRoot.localRotation, targetDirection, m_RotateSpeed / 1000f);


処理をまとめたものを上げておきます。
Inspectorで指定してあげれば動くと思います。