2013年1月24日木曜日

Unity使ってみた

PlayもそこそこにUnityもいじってみた.
…意外とコード書かないなぁこれ(感想)


はじめてのUnity


ここを参考にまずはイロイロいじってみた. ただまだ第1回しかなく第2回は近日公開…
近日っていつですか(・ω・`)

そんな中でまずは基礎的なところをメモメモφ(・ω・ )

1. プロジェクトとシーン

プロジェクトはゲーム本体, シーンはそのステージ, といった関係. なので1プロジェクトの中にたくさんのシーンを持つことができます. もちろんシーンから別シーンの遷移も可能. ただし編集していられるのはシーン1つずつのみ. 別シーンを開くときはセーブを忘れずに.
共同開発時のネック. シーンの衝突だけは避けましょう. 泣けます. なにいじっても衝突するので素直に声掛け合って編集するのは一人だけにする, のが一番かと.

チラッと見た話では一つのシーンを分割して作り, 後で合成して一つのシーンにするなんてやり方も…

2. ホイールボタン

3D系ツール(Blender等)をつかってて感じたホイールボタンの重要性. Unityのシーンビュー内ではホイールボタンを転がしてズーム, 右ドラッグで回転ですが, ホイールボタンドラッグで画面を平行移動ができます. ホイールボタンドラッグとかこのマウス買ってから初めて使った( ´_ゝ`)

3. asset

光, 空, 地形や水など, 普通に作ったらそれだけで製作期間が楽しいことになりそうなものは, Unityが標準で用意しているものからユーザーが作ったものまでイロイロ用意されています.
どこかの記事では「既にあるものは最大限利用しましょう」なんて書かれているほど. 特に車なんかはめんどくさいそうなので慣れるまではこちらを流用しましょう, らしい.
標準のものは
[Asset] → [Import Package] → からいろいろ選べます.
ただし中には素敵に重いものもあるので, スマホ向けを考えているなら容量に注意, いろいろ眺めて必要なものだけ入れましょう.

4. ライセンス

もっと先にメモすべきことだったorz 無料版でも十分に作れるUnity. ただしAndroid, iPhone向けにビルドしたい, 欲張って箱○やらPS3やらでやりたい!なんて考えると, それぞれにビルドするために, それぞれ別々のライセンスが必要です. なのでAndroidだけやりたいならAndroid用ライセンスが別途必要ですお客様. 無料版でできるのはhtml版の書き出しだけ. 往年のFlashゲーム時代を彷彿とさせます.

5. オブジェクトの配置(床と壁)

3. の通り地形用assetもあるけれど, まずは基本.

Hierarchyビューの左上の [Create] か
[GameObject] → [CreateOther]

からCubeを選択. これをシーンから選択してやるとInspectorビューにそのオブジェクトの情報がいろいろ出てきます.
まずはそのオブジェクトの位置や回転などを表すTransformの項目をいじって原点付近にあわせましょう. Scaleをいじれば大きさも変更可能. 基本はこれで平べったくして床を生成する. 部屋の床など平らなところは基本これでOK.
同様に縦に伸ばしてやれば柱や壁の完成. 色についてはまた別のところで.
これをPositionをいじって並べてやればフィールドの完成.

6. プレハブ化

かなーり大事なところ1号. 要するに作ったオブジェクトを登録しておき, 複製などをしやすくするための機能.

 一番シンプルなやり方は, Hierarchyビューにある, プレハブ化したいオブジェクトを, ProjectビューのASSETディレクトリの中にドラッグ&ドロップ. これでASSETの中にHierarchyの中にあったオブジェクトがASSETの中にコピーされるはず.
このASSETの中のオブジェクトを今度はSceneビューにドラッグ&ドロップ. これでOK, シーンにオブジェクトが追加されたはず. 5. の壁などや大砲の弾など, シーン中で同じものをたくさん使うなら是非こちらを.
名前はそれっぽいのを付けておきましょう. Cubeが立ち並ぶASSETとか泣けます.
ちなみにスクリプトから動的に作成するときなどは, プレハブ化しておかないと動的に作成とかできないので, 弾丸みたいなものは設定がすんだらプレハブ化しておきましょう.

7. 親子

かなり大事なところ2号. 例えば5. で作った床と壁, 今はバラバラにしか動かせないので, いざ床の位置を変えたくなったら全部変えないといけません. そこで親子化.
これまた設定は楽で, Hierarchyビューの子にしたいオブジェクトを親にしたいオブジェクトにドラッグ&ドロップ. これだけ. これでHierarchyビューではディレクトリの階層構造のようになっているはず.

このとき 親 のほうをSceneビューから動かすと, 子にあたるオブジェクト全ての位置が変更されます. 子だけを選択してInspectorを見ると, なにやら表示が太線に. これは
親のオブジェクトの基準点
から見た相対的な座標が表示されています.
これにより親のTransformの変更に紐付けた子のTransformも同時に変更されます.
もちろん子だけを選択した状態なら選択中のオブジェクトの位置を変更できる.
部屋の全景の作成や, 複数のオブジェクトがまとまってできる一つのオブジェクト, なんてものを作るのに便利.

ちなみに
[GameObject] → [Create Empty]
で空のオブジェクトが作れます.
ここに床, 壁とそれぞれ放り込んでやるとフィールドの管理とかしやすいとか, そういった使い方.
カメラもこれで管理すると楽…かも?



ほんとにただのメモ書きだぁ・・・('A`)


2013年1月18日金曜日

svnでプロジェクト管理

Unityの共同作業はなかなか難しいらしい. どうやらシーンは基本衝突した瞬間「諦めろ」らしい. orzでもやるしかないのでがんばる(||´Д`)


svnを使ってUnityを共同開発


とりあえず前回リポジトリのインポートとかしてるのでそこは省略.

1. checkout


svn checkout リポジトリのURL ローカルに起きたい場所のパス

URLの指定には注意. 変な場所を指定すると中身ぶちまけたりといろいろめんどくさい.
これでチェックアウトした後, 必ず

svn update

をローカルのディレクトリでかけましょう. コマンドプロンプトを開く場所はこのコマンドからチェックアウトしたプロジェクトのディレクトリになります.
このupdateをかけると,  .svn というバージョン管理を行なうファイルが作成されるらしい. 逆にこれをしないでコミットしようとすると,
~/.svn がありません!
とまぁ怒られるわけです.

2. ignore


共同開発時に, 共有しなくてもいいファイル/ってゆーか共有すると地獄を見るファイルを「無視する」設定.
・・・どうやるんだこれorz
いくつか参考にしたものの一向にignoreされる気配なし.
どうしたものかと頭を抱えていたら…だいぶ昔に入れてたTortoisesvnがやってくれました.
ignoreしたいフォルダで右クリック→TortoiseSVN→Add to ignore list→ignoreしたいフォルダ名を選択
でignoreしてくれました
確認は
svn status
これのリストの一番左側が
? →まだaddもされていない新しいファイル?
A→addされている管理中のファイル
M→更新があったファイル
!→衝突しているファイル(?)
ではなく,
I→ignoreされているファイル
となっていればOKっぽい
ちゃんと確認してからコミットしないとデンジャー.

3. add

svn add ファイル名

バージョン管理に乗っけるコマンド. いちおうワイルドカードも利用可らしい. UnityならAssets/*で Assets直下だけ addしてくれる. なのでAssets/Materialとかあった場合は, Material以下はまたaddしてやらないとバージョン管理に乗ってくれない.

4. commit

svn commit -m "コミットコメント"

更新のあったファイルをまるっとコミットしてくれる. もちろん後ろにファイル名を指定すれば, それだけをコミットすることも. -m がmessageあたりの略なのかコメントのオプション. これを入れておかないと登録してあるエディターが起動し, 強制的に書かせるか, もしくは登録していない場合は「コメント書かないとコミットできない」とエラーを吐かれる.

5. update

svn update

1.でもでたけどアップデートのコマンド. これで最新の状態をもらえる. もちろん競合を起こしたら教えてくれる. でもマージは自分で頑張りましょう. いろいろツールあるっぽいし. リビジョン番号も出してくれるので確認にどうぞ.

だいたいここまでできればまずはOK・・・?(・ω・`)ナノカナ
とりあえず
.svnとかバージョン管理ファイルネーゾ!(゚Д゚щ)
って言われたら, チェックアウト直後にupdateかけると解決するかも.


6. おまけ

svn log リポジトリのパス

指定したパスのリポジトリのコミットのログが見られるコマンド.
恥ずかしい感じのコミットコメントもさらされます Σ(||゚Д゚)ヒィィィィ 気をつけましょう.
batとかにしておくと確認も楽かも.






Unity関係ないな…('A`)

svnでバージョン管理 ~プロジェクトをSVNに登録?する

意外とコマンドラインからsvnコマンド打ってなかったのでメモメモφ(・ω・ )
リポジトリは既にできてる環境からやったので, リポジトリの作成に関しては未確認(・д・`)



svnコマンド

1. create

svn create リポジトリを立てたい場所のパス

未確認. やったことはあるはずだけど(・ω・`)覚えてない.
これでリポジトリの準備ができる

2. import

svn import 管理したいもとのファイル/フォルダを中に含むディレクトリのパス 立てたリポジトリの放り込みたい場所のパス(だいたいtrankかと) -m "コミットコメント"

ポイントは最初の「管理したいファイル/フォルダを中に含むディレクトリのパス」のところ. ここで指定したパスの中身を, 後に指定したパスに放り込む. 後で指定するパスに準備ができているなら問題ないが, そうでないと中身をぶちまけるハメになる.(・ω・`)

3. delete

svn delete -m "コミットコメント" 削除したいディレクトリのパス

コミットコメントが無いと処理してくれない点に注意. deleteだけだと「削除するよ!」って言いながら準備するだけにとどまっており, コミットして初めて実際に削除してくれるらしい. なので同時に -m でコミットコメントを設定して, deleteを発行と同時にコミットしてくれるようにしてやると, このコマンドひとつで削除できる. 2. で中身をぶちまけた時なんかにどうぞ. パスの指定には注意. trankを指定してしまうと, trank自体がまるっと消えてしまう. あくまで「削除したいディレクトリ」のパスを.







朝は眠いよ…('A`)

2013年1月15日火曜日

Github使ってみたけど…

あけました!(挨拶)(゚∀゚)


お仕事で使っているGithubクライアントが(Windowsだけらしいが)非常にじゃじゃ馬だったので乗り換え, Shellコマンド使ったので
メモメモφ(・ω・ )


Git Shell


github for windowsなんて名前だけならすっごい頼りになりそうなWindows用GitHubクライアントツール. ただ実際に使ってみると…

衝突したよ!→Shellで調整してね!
エラー起きたよ!→Shell開いて自分で見てね!

…GUI ? (・д・`)

と言った感じに…
いや確かに問題が起きてなければ簡単入力なGUIなんだけどね…?(・ω・`)
使い始めて数時間で
衝突が起きそうなファイルは周りの隙を見てpushする!
みたいなGUIではなくアナログな努力を費やす始末.
ってゆーか同僚は1日で見限ってた('A`)

そして訪れるGUIからいじれない(=消せない)警告.
仕方なく同梱されてたGit Shellから操作する方法のメモ.

1. 現在の状態を見るコマンド

git status
現在の自分の変更の状態を見るコマンド
現在いくつのファイルを
新規作成したか / 変更したか / 削除したか 
そのファイル名を列挙してくれる.

2. 変更を受け取るコマンド

git pull
GitHubにアップされている変更を受け取るコマンド, 基本. これをやらないといつまで経ってもボッチ開発者…(;ω;`)

git fetch
最新のリポジトリを取得する…らしい(未確認)
pullとの違いはマージしないことらしい. (= 衝突しやすそう Σ(||゚Д゚)ヒィィィィ )
ブランチが分かれたものが最後にコミットされている場合, 別ブランチのまま引っ張り出すらしい
…使わんとこ(・ω・`)

3. GitHubにアップするまでの流れ

a.
git add ファイル名
「変更した」ファイルを指定するコマンド. ここで指定したファイルは次の commit を行なう準備が整ったことになる.

b.
git commit ファイル名
「コミット」を行なうコマンド. オプションでコメントををつけない場合, テキストエディタが出現, コミットメッセージを要求してくる.

c.
git push
いよいよGitHubにアップするコマンド. アップするのは commit したもののみ. 特にオプションをつけなくても, たまっていた commit を全部アップしてくれる.
衝突注意(・ω・`)

マージコマンドは使って無いしわからないヽ('A`)ノ

4. オプション

git add -A
All のA? add にくっつけるとgit status で上がった変更したファイル全部をaddしてくれる.
ちなみにAが小文字だと, 変更だけをaddしてくれるらしい.

git commit -m "コメント"
3.-b でちょろっと書いた オプションでコメントをつける. ただしUTF-8で入力しないと文字化けするらしい.
英語頑張ろう…(・ω・`)

5. 表示からわかる現在状況

ここからはコマンドでは無いけれど


パス>[master +1 ~5 -3 | +0 ~2 -4]
という表示だった場合

    現在位置 : masterのブランチ
   (add済/未commit)のファイル : 新規1件, 変更5件, 削除3件
   (未add)のファイル                : 新規0件, 変更2件, 削除4件

    masterの文字色が水色→(commit済み/未add)のファイル 無し
    masterの文字が      →(commit済み/未add)のファイル 有り


ということらしい. なんか変な数字が残っていたらとりあえず git status で様子を見るといいかも.



ちなみにShellに移った理由は
どこからともなくアップされた挙句, 削除の commit がなかったのか, 居たことになってるらしい存在しないファイルの名前が… → 当然そんなファイルローカルじゃ見たこともあったこともないから処理できない → エラー
らしい
shellならその 削除した commitをpushできるので実行 → 見事エラーが消えました.
というだけのこと.
いったいどうなってたんだか… commit からじゃなく強引にファイルを除去しにかかったとかなんだろうか…






…今年も頑張ろう(・ω・`)

AWS CDKで立てたEC2インスタンスのTimeZoneとかいじりたかった話

EC2を立てることはできたけど、立てたインスタンスは UTCのままだし設定ファイルとかいちいちscpしてくるのはダルい。 当初UserDataでなんとかしようとしたものの、「書く量がヤバいしメンテしにくい」と悩んでいたところ見かけたのが  AWS::CloudFormation:...