kugi's notebook

やったこと、思ったことなどつらつらと書きます

ハッカソン型インターンシップに参加して

はじめに

三日間かけて行われた、コロプラさんのハッカソンインターンシップに参加しました。3人1チームでUnityを用いて三日間で1つのゲーム開発しました。

(※開発した成果物の詳細については記載しません)

f:id:kugi_masa:20190823235011j:plain
RedBullShip らしい

即席チームで行うゲーム開発

ハッカソン型のインターンだったので、チームのメンバーはもちろん初日に「はじめまして!」でした。私たちのチームは大阪の大学生、東京のゲーム専門学生、広島の院生の自分とバラエティー豊かなチーム構成でした。

今回のハッカソンのテーマはコロプラの「

」に関連するゲームであればOKという、かなり幅広いテーマでしたが、どのチームも工夫して面白いゲームを制作していました。

レビュー

最終日には成果発表とデモプレイの時間のあと投票が行われました。 また、社員のプログラマーの方々からもレビューをいただくことができました。

  • シンプルなゲームだからこそ、もっとそのシンプルさに面白い要素をいかに詰め込むかによってゲームに深みが増す
  • ユーザーがグッと来る、ユーザーの好みに刺さる気遣いが大事
  • ユーザーへのフィードバックは大事

(※操作がシンプルなゲームでした)

私たちのチームは上位に選ばれることはできませんでしたが、票が0ではなかったと聞いて安心しました。

チームとしてゲームを開発する上で

私たちのチームは三人ともUnity経験があり、サウンド、デザイン、プログラマーと分業して三日間開発を行ったチームもあるなか、機能ごとに実装を分担して開発を行っていきました。(その機能で使うアセットは各々が用意するなど)

早めにゲームのコンセプトが固まったこともあり、開発中はそのコンセプトに沿って、とりあえず完成して遊べることを目標に開発していました。ただ、レビューでもいただいて感じたように、ユーザーへの気遣いやゲームの面白さを追求するところが欠けていたのかなと反省しました。三日間という短い日数で動くもの作ることができたのは非常に大きな収穫になりましたが、その短い日数の中であってもユーザのことを考え開発をすることの大切さと難しさを感じました。

まとめ

三日間あっという間でした...!! ゲーム好き、ゲーム開発好き、現役でゲーム業界に関わる方々といったいろんな方々とお話ができ刺激を受けました。同じチームだったお二人、本当にありがとうございました。

これからも夢に向かって突き進みます!!

やったこと

わかったこと

  • ユーザーが何を求めているか、どういうユーザー層を狙ったゲームなのか頭に入れた状態で開発する
  • フィードバックは大事

次やりたいこと

  • 日数を決めて(土日とかで)ゲーム開発チャレンジ
  • C++でゲーム開発

Mitsuba Renderer 導入(Mac OS X)

はじめに

物理ベースのレンダラーである☘mistuba renderer☘を研究で使用するかもしれないのでMac OS X上でビルドしました。

ビルド段階で結構つまずいてしまった...

mitsuba-renderer.org

☘mitsuba renderer☘

mitsuba rendererはC++で実装されている物理ベースのレンダラーでMetropolis Light Approach やボリュームレンダリングに優れているらしいです

自分でビルドすればSpectral Renderingにも対応できるとのこと

GitHubからfork

上記のページに記載されているページからリポジトリをcloneしようとしましたが、 現在は使用されていないらしくcloneできませんでした...

Mercurialというバージョン管理システムからGitに移行したようです

調べるとGitHubのリポジトリがあったのでそこからfork🍴しローカルにclone

自分の環境でのビルドを目標に、上記のページからDocumentationをダウンロードし、それに沿って進めていきます

config指定

まずはconfigファイルを指定する必要があるようです

自分のローカルのmitsubaディレクトリ直下のbuildディレクトリにLinuxWindowsMac OSのconfigファイルがあります

自分の環境はmac OS Mojave version 10.14.5なので以下を実行

:mitsuba $ cp build/config-macos10.12-clang-x86_64.py config.py 

※mitsuba直下にconfig.py!自分はbuild直下に置いてて詰んでました...😭

scons

mitsubaはsconsというPythonベースのビルドツールを使ってビルドをするらしいので、sconsをインストール

SCons: A software construction tool - SCons

$ pip install scons

また、コンパイルの際にdependenciesというものが必要になるらしく、以下からclone

github.com

後々libpngというのも必要になるのでインストール

$ brew install libpng

さて準備が整ったということでsconsを実行

以下のようになれば成功!

$scons
scons: done building targets.

※ 自分はXcodeコマンドラインツールを入れているのにMacOSX10.12.sdkがないですよと言われErrorで詰んでました... 以下のようにシンボリックリンクをつければうまくいきました!

$ sudo ln -s [version I had][version required]

うまくビルドができていればmitsubaディレクトリに追加されているはず!

running mitsuba

拡散反射面のボックスが2つ置かれたコーネルボックスとDipoleモデルを用いた半透明物質のサンプルシーンを試しにレンダリングしてみました。

f:id:kugi_masa:20190704135748p:plain
拡散反射ボックスinコーネルボックス

f:id:kugi_masa:20190704135736p:plain
Dipoleモデルを使用した半透明物質の表現

(表示されているのはOpenEXRイメージをpngに変換したものなのでカラーバンディングが目立ちます...)

まとめ

やったこと

  • mitsuba renderer なるものを自分の環境でビルドして動かしてみた
  • mitsuba renderer のドキュメントに軽くのぞいた

わかったこと

  • 以前のサイトの方法は古い...?? 自分はできなかった
  • scenceファイルはXML形式!
  • Spectral Rendering も扱えるけど自分で実装が必要

次やりたいこと

TDDYYχに参加して

はじめに

大学で行われたTDDワイワイ会(TDDYYχ)に参加しました。

昨年参加したenPitの合宿でもTDDのモブプロワークショップをしたので感覚的には2回目でした。(おかわり組と呼ばれているとか...笑)

なお、ワイワイ会(YYχ)のχ(はX(エックス)ではなく、χ(カイ)とのこと。

f:id:kugi_masa:20190604004251j:plain
TDDYYχステッカー

TDD(テスト駆動開発)

スタッフの方の詳しいわかりやすい資料はコチラ↓↓↓

speakerdeck.com

TDD(Test - Driven - Development:テスト駆動開発)はプログラムの開発手法の一種でテストファーストのアプローチをとります。

まずはプログラムがREDになるテストを書く

Ex) 結果が1になって欲しい!!まずはプログラムanswer()に対するテストを書く!

以下のテストコードではRED

//プログラム
int answer(){
    return 2;
}
//テストコード
if(answer() != 1){
    printf("The answer is not 1");
}

次にREDGREEN

どんなにやっつけでもいいから、まずはテストが動くようにする

Ex) answer()は2-1で1が返ってくる。ひとまずGREENにできた...!

このままでもいいがまだ改善の余地はありそう

//プログラム
int answer(){
    return 2-1;
}
//テストコード
if(answer() != 1){
    printf("The answer is not 1");
}

REFACTORINGでコードを綺麗に

テストがパスする状態で重複であったり余分なものを削ぎ落とし簡潔にします。また、コードの可読性についても検討します。

Ex) ここまですればanswer()が1を返すのは容易にわかる

//プログラム
int answer(){
    return 1;
}
//テストコード
if(answer() != 1){
    printf("The answer is not 1");
}

REDGREENREFACTORINGRED → … のサイクルを繰り返し、設計、実装を行っていきます。

Go で FizzBuzz

ドライバー(コードを書く人:1名)とナビゲーター(その他)でモブプロを行いました。REDGREENREFACTORINGREDと一周回ったらドライバーを交代

メンバーの使用言語はPythonC#JavaScriptと割とバラバラで 誰もGOに触れたことがなかったのでGOでFizzBuzzをすることになりました。

ドライバーが逐一する内容を口に出すと言うルールのもとモブプロが行われ、チームでコミュニケーションを取りながらワイワイコードが書けて楽しかった!!

初めてGOに触れるいい機会にもなりました

まとめ

やったこと

  • GOを初めて使った
  • FizzBuzzにモブプロで取り組んだ

わかったこと

  • ワイワイ会は何回やっても楽しい
  • 知識を共有することで知らないことを学べるし、知っている知識を深めることができる
  • ちょっとしたことでも拍手が起きるのでとても居心地がいい

次やりたいこと

またTDDワイワイ会が近くであるなら参加したいです。 次はまたGOで違った問題にも挑戦してみたい‼︎

Marp CLIでHTMLタグを使えるようにする

はじめに

MarpMarkdown形式でスライドを作成できるアプリです。 今までアプリケーション版を使用していましたが、CLI版があるということでCLI版を使ってみることにしました。

github.com

Marp CLI をインストール

インストールの手順は上記のgithubページに示されています。

自分はnpmを使ってグローバル環境にインストール

ローカル環境

npm install --save-dev @marp-team/marp-cli

グローバル環境

npm install -g @marp-team/marp-cli

Marp CLI を起動する

以下のコマンドで起動し、ブラウザで表示

marp -p -s [directory or file]

f:id:kugi_masa:20190530175134p:plain
起動ウィンドウ

アプリケーション版と異なる点

HTMLタグが表示されないようになっていた... (セキュリティのためのよう)

オプションで--htmlを追加することでhtmlタグも表示されるようになりました。

marp -p -s --html [directory or file]

f:id:kugi_masa:20190530175542p:plain
marp -s -p で起動した場合
f:id:kugi_masa:20190530175537p:plain
--html オプションをつけた場合

まとめ

やったこと

Marp CLIでHTMLタグを使えるようにした

わかったこと

オプションをつけて表示方法や出力を指定できる

次やりたいこと

スライドにデザインをつけてみる

Blender to Unity Part1

はじめに

最近はUnityを使ってチーム開発をしています。 その過程でモデルはBlenderで作ろう!ということになりました。

ただ、Blenderを使うのも今回の開発が全くの初めて...

いろんなサイトを参考にさせていただきながら、なんとかBlenderで作ったモデルをUnityにインポートして動かすことができるようになりました。

今回は自分が詰まったところや、新しいツールを使ってみて感じたことについて書きます。

Blender

  • Version

  • 参考にさせていただいたサイト

blender-cg.net

操作に慣れるのに苦戦...

f:id:kugi_masa:20190503010651p:plain
最初はサイコロを作るのも一苦労...

早速Monkeyで試してみる

Monkeyのモデルをfbx形式でエクスポートします。モデルのメッシュデータはいじらず、マテリアルは茶色

(FBXでFilmboxらしい)

f:id:kugi_masa:20190504234511p:plain
fbx形式でエクスポート
カメラや光源はUnityのものを今回は使いたかったので、モデルのみを選択してエクスポート
f:id:kugi_masa:20190505000425p:plain
モデルのみをエクスポート

Unityへインポート

エクスポートしたfbxファイルをUnityにインポート

f:id:kugi_masa:20190505201146p:plain
Assetsからインポート

GameSceneにfbx形式のままドラッグ&ドロップ。マテリアルがついてるように見えますが、InspectorのMaterialはNoneになっています...

f:id:kugi_masa:20190505201256p:plain
マテリアルはついてる...?

Material.001を選んでApplyすると...

f:id:kugi_masa:20190505204046p:plain
マテリアルが取れてエラーが...!!

Unityで作成したマテリアルをApplyするとちゃんとつきました。 パーツで割り当てを変えてBlenderで作って細かいマテリアルはUnityで作る方が楽かもしれません。

f:id:kugi_masa:20190505204841p:plain
Unityで作ったマテリアル

まとめ

やったこと

  • BlenderのモデルをUnityにインポート

わかったこと

  • Blenderのエクスポートはfbxが便利
  • fbxでUnityにインポートするとマテリアルが取れる
    • マテリアルはUnityで作るのがオススメ ...??

次にやりたいこと

  • Blenderでもっとモデルを作っていきたい
  • Blenderで作ったアニメーションをUnityにインポート

GitHubでタスク管理しながらUnityのチュートリアルで遊んでみた

はじめに

Unityをインストールしてはいたもののあまり触れていなかったのでまずはチュートリアルで遊んでみました。

unity3d.com

練習も兼ねてタスク管理はGitHub

f:id:kugi_masa:20190306230019p:plain
GitHubのIssue

玉転がしゲーム

チュートリアルの内容は玉転がしゲーム。 Unityの公式サイト(上部リンクを参照)にある「はじめてのUnity」をやってみました。以下の8節で構成されています。

  1. プロジェクトの作成
  2. ステージの作成
  3. プレイヤーの移動
  4. カメラを動かす
  5. アイテムの回収
  6. ゲームのUIを追加する
  7. ゲームのクリアを追加する
  8. 障害物とリスタート

C#のコードもサイトに載っているので全くはじめてでもOK。

タスク管理

以前のチーム開発ではGitHubのProjectsを使ってタスク管理をしていました。Automation機能を使えばIssueと連動できることを知ったので、これを機に練習、練習!

ちょうど8節に別れていたので1節ごとにIssueを立ち上げてみました。 (コメントにリンクを貼っただけ...)

ラベルとか、担当者も付けれるので便利!

IssueをOpenするとProjectのTo-Doに追加され、CloseするとDoneに移動されます。 前回一つ一つ移動してたのがこんなにも楽に...

まとめ

やったこと

Unityのチュートリアルで玉転がしゲームを作りました。 球を転がして緑のアイテムをゲットしていきます。 全部ゲットできたらクリア

f:id:kugi_masa:20190306231708p:plain
作った玉転がしゲーム
IssueとProjectを連動させてタスク管理
f:id:kugi_masa:20190306231713p:plain
GitHubのProject

わかったこと

聞いてはいたけどUnityは沼。 できることが多くてAPIとか覚えるのが大変だけど、割と操作しやすいし、

とにかく楽しかった!!!

IssueとProjectを連動させたら超便利!

次にやりたいこと

実際にスマホで作ったゲームを試してみたり、スマホの加速度センサーを使って球転がせたら面白そうです。

まだまだこれから勉強ですね!!!

1ヶ月間チーム開発をしてみて

はじめに

今年度のenPitビジネスシステムデザイン分野に参加して、アジャイル開発について学びました。 bizsysd.enpit.jp

夏に静岡で行われた合宿、合宿後約3ヶ月の開発を通してチーム開発の楽しさと大変さを実感しました。

かんばん
夏合宿(アジャイルチームキャンプ)

1月に筑波大学で行われた成果発表会を終え、他のチームプロダクトや他チームとの交流を思い出し開発モチベが上昇

まだまだ開発したい!!

OUTPUTできる機会

サークルもちょうど引退し、暇を持て余していたところに同じ学科の友人からお誘いが、

暇やったら何か一緒に作ってみん??

enPitで学んだアジャイル開発を復習、アウトプットする絶好の機会だと思い飛びつきました。自分が説明できる範囲で夏合宿の資料やノートを元にチームメンバーに学んだことを共有しました。

チーム開発

  • 開発スパン:5週間(1 sprint = 1 week)
  • チーム人数:4人
  • プロダクト:ソースコードを用いたタイピングゲーム(Webアプリ)
  • ファイル管理:github
  • データ管理、ユーザ認証:firebase
  • 連絡、情報交換など: slack

やったこと

enPitのチーム開発でも使ったfirebaseを使ってデータ管理などを行いました。

firebase.google.com

enPitのときは手探りでわからないことも多かったけど、今回は認証機能も実装して理解がさらに深まった?!

わかったこと

モブプロは楽しい!! テレビにPCを繋いで画面を見ながらみんなで考えることで新しい学びにつながりました。 あと、デザインは大変…

次にやりたいこと

もっとfirebaseを使いこなしたい

今回できたプロダクトの改善はもちろん、 またこのチームで新しいものを作っていきたい!

まとめ

最初にメンバーと集まって作るプロダクトが決まったときは1ヶ月で終わるかな〜って思ってたけど、意外と形になってよかった(不具合はまだまだたくさん残るけど…)

よかったら遊んで見てください😂

codetyper-cc5b6.web.app