Monthly Archives: 5月 2014

1 Day Game Making

という名前の独自企画を始めようと考えている管理人です。

「1 Day Game Making」とは1日で何らかのゲームを一本完成させようという企画です。
具体的には以下の決まりを設けます。

 ・1日でひとつのゲームを完成させる
 ・すごいものを目指すのではなく、あくまでも完成させることが大切
 ・自分自身のスペックに合わせた目標設定をする
 ・完成したゲームやその制作過程において、自分なりにフィードバックする事を心がける

Webサイトに公開している自作ゲーム「Block Shooter」も実はこの企画で完成させたものです。
「1 Day Game Making」をやるのは実に4年近くぶりとなります。

サイトに公開中のゲームは「Departure from the Void」「Block Shooter」の2本しかないので、
もっと公開するゲームの数を増やしておこうと思ったのがこの企画の再開のきっかけです。

実は、私自身がとあるハッカソンに参加しようとしていることもあり、その準備も兼ねたゲーム開発のスキルアップという目的もあります。

早速、明日にこの企画を実施したいと思います。
どこまでのものを完成させられるか不安ではありますが、自分自身の能力を知るという意味でもトライしてみたいと思います。

[Unity] 自作ゲームをWordPress上で公開する

今回もUnityに関する記事です。

先々週あたりからUnityを本格的に弄るようになってから、将来的には自分のサイト上で自作ゲームを公開したいと思うようになりました。
UnityにはWebブラウザ上でプレイできる形式にリリースできるので、今回はこれでパッケージをこのブログ記事に埋め込んで公開してみたいと思います。

手順は以下の通り。

1.プロジェクトのビルド
「File」→「Build Settings」を選択します。
すると、以下ような画面が表示されるため、「Player Settings」ボタンを押下します。

unity-wp1

右側に「Player Settings」サブウィンドウが表示されるため、お好みの設定を行います。
今回は画面の解像度を640×480に設定しました。

unity-wp2

設定したら「Add Current」ボタンを押下し、現在のシーンをビルド対象に指定します。

unity-wp3

「Build And Run」ボタンを押下します。
すると、フォルダの選択画面が出てきます。
今回はUnityプロジェクトフォルダの下に「Build」という名前の新規フォルダを作成して選択します。

unity-wp4

この選択したフォルダにビルドしたゲームが格納されます。
ビルドが終了すると、Unityのプレイヤーが埋め込まれたHTMLファイルが開かれます。

unity-wp5

Unity Web Playerのプラグインがインストールされていないとゲームをブラウザ上でプレイすることが出来ません。
その場合、プラグインをインストールする旨のメッセージが表示されるため、説明にしたがってインストールを進めてください。
プラグインがインストールされた状態でHTMLファイルをブラウザで開くと、きちんとプレイできていることが確認できると思います。

2.ブログ内に埋め込む
次はこの公開したゲームをブログ記事内に埋め込んでみたいと思います。

まず、WordPressでUnityを動かすためのプラグイン「UnityDog」をインストールします。

 http://wordpress.org/plugins/unitydog/

プラグインをインストールしたら、有効にしておきます。
プラグイン名は「UnityDog」です。

unity-wp6

ここで、1の手順でビルドしたバイナリをサーバ上のディレクトリに格納します。
バイナリは「*.unity3d」という名前のファイルです。

そして、埋め込みたい記事の場所に以下タグを記述します。

実際に公開すると、以下のように表示されます。

表示されたら成功です。
サーバ側でunity3dファイルをアップロードできることが前提になりますが、ファイルをサーバに置いてタグを一行書くだけなので簡単です。

Web上でゲームを手軽に公開できるようになれば、制作途中のゲームを訪問者に遊んでもらうことも可能になり、コミュニケーションの手段としても活用できるのではないでしょうか。

久しぶりにまたゲームどんどん作りたいという創作意欲が沸いてきました。
さて、今後どうなることやら・・・

.DS_Storeをネットワークドライブ上で作成しないようにする

MacとWindowsでネットワークドライブを共有するとき、Windowsから見たときに「.DS_Store」という名前の隠しファイルが出来ていることを目にすることがあるでしょう。
これはMacのFinder上の表示などの設定情報を保持しておくためのファイルらしいです。

Macでアクセスしたフォルダにまるで足跡のように作成されてしまう.DS_Storeファイルがうんざりすることは少なくないかもしれません。
この.DS_Storeを作成しないように設定することが出来ます。

ターミナルを開き、以下コマンドを実行するとネットワークドライブ上で.DS_Storeファイルが作成されなくなります。

また、.DS_Storeが作成される設定に戻したい場合は以下コマンドを実行します。

最後のtrueをfalseにしただけです。
ファインダーや環境設定画面から設定できないので少し使いづらいですが、設定は簡単です。

■参考サイト
Macで.DS_Storeファイルを作らない方法&削除ツール
アーカイブ – Mac OS X v10.4 and later:ネットワーク接続時に .DS_Store ファイルの作成を抑制する方法

[Unity] Time.timeScale=0の問題点

・timeScale=0とアニメーションの関係

前回の記事でゲームの進行を一時停止するとき、Time.timeScale = 0とすることですべてのキャラの動き止めることができることを書きました。
しかし、この方法で以下のような弊害が出てきます。

 ・アニメーションできなくなる
 ・WaitForSecondsで無限待機してしまう
 ・Time.deltaTimeが0になる

ほかにどんな弊害が出てくるかは私にはわかりません・・・
Time.timeScaleの値を変えることは、グローバルな変数であるTime.timeの時間の進行速度を変えることになるので、いろいろな場面で融通が利かなくなりそうです。
(たとえば、ポーズ中にアニメーションさせる場合など)

その他の無限待機やdeltaTime=0の現象もTime.timeが進行しなくなることが原因でおこるものと考えられます。

したがって、Time.timeScaleの値をむやみに設定するのは控えたほうがよさそうです。
Time.timeScale=0設定の効果的な代替手段はわかりませんが、恐らくゲームオブジェクトそれぞれにOnPause()メソッド等の一時停止メソッドを実装することになるのではないかと思います。

[Departure from the Void] シーン管理システム実装中・・・

自作ゲームのリファクタリングについての制作状況についてです。

ひとまずWin/Mac両方でグラフィックとサウンドを鳴らす処理までは実装しました。
処理を共通化できたため、ライブラリ化すれば他のゲーム開発でも使えそうです。
あくまで2D限定ですが。

最低限の土台部分はある程度完成したため、今はゲームのシーンを管理するシステムを作っています。
シーンは例えばタイトル画面やステージ画面などのことです。

シーンを状態としてトリガーで切り替えられれば管理はかなり楽になりそうです。
Unity使えばここら辺の処理は最初から実装されているので楽になりますが、Departure from the Voidの方はシステム設計の勉強も兼ねて制作しているので、少し大変ですネイティブな環境で開発していきたいと思います。

[Unity] ゲームの時間進行を制御する

Unityでプレイ途中のゲームを一時停止してポーズ画面を表示させたい場合、ゲームの時間を停止する必要が出てきます。

進行中のゲームの現在時刻はTime.timeで取得できます。
これはゲーム開始からの経過時間(秒)です。

この現在時刻はTime.timeScaleの値を弄ることで、時間の進行速度を速くしたり、遅くしたり、あるいは停止したりできます。
Time.timeScaleの初期値は1です。
これは本来の進行速度の1倍、すなわち通常の進行速度です。

ここをたとえばTime.timeScale = 0.5とすれば進行速度が半分になります。
スローモーションが実現できます。
Time.timeScale = 0にすると進行速度が完全に止まります。
時間の進行が停止するので、ポーズ画面を簡単に実現できます。

しかし、そうすると時間の進行が止まってしまうためにボタン操作やスクロールなどができなくなってしまいます。
現在時刻には、Time.timeScaleの値に関係なく通常の速度で進行する値があります。
これはTime.realtimeSinceStartupから取得できます。
Time.realtimeSinceStartupは常にTime.timeScale = 1の状態で時間が進行します。
ボタン操作やスクロールなど時間の進行速度に左右されたくないシステム的な処理はこの値を使って実装したほうがよいでしょう。

[Unity] 自身の向きベクトルを取得する

Unityを使い始めてから嵌ったことについてのメモです。

2Dゲームにおいて、キャラクター自身の向きに弾を発射したり移動したりしたい場面を想定します。
この場合、まず自分がどちらに向いているかを知る必要があります。

unity-dir

色々なサイト様を調べても向きベクトルを取得するサンプルが無かったので、試行錯誤で書いてみました(泣)

上記のソースは、自身の向きに向かって移動するキャラの動きを実装したものです。
Update()メソッドにて、自身の角度をラジアンで取得します。

取得したangleDirが自身の向きを角度で表現したものです。
角度はz軸周りのオイラー角から取得できます。

最終的に求めたい向きベクトルは、この角度から計算します。

他にもっと効率の良い方法があると思いますが、ひとまず上記の方法で実現できます。
Unityをもっと理解したら改めて記事を書き直したいと思います。

ブログで訪問者数を稼ぐコツ

初めてノウハウチックな内容を書いてみたいと思います。
今回はブログで訪問者数を稼ぐコツについての私なりの見解です。

自分から気軽に情報発信が行える、日記を書いてユーザとの交流が出来るなど様々な目的を持ってはじめてみたブログ。
しかし、いざはじめてみると全くアクセスが無いということを経験された方は多いのではないでしょうか。

私もその一人です。
ブログ開設当初は1日あたりの訪問者数が0で全くアクセスが無い状態でした。
その後もしばらくの間1日当たりの訪問者数が0~2の間を行き来していました。

厳密に言うと、ボットやスパム、ブログへの攻撃を目的としたアクセスだけがやたらと来る・・・
そんな状態でした。

世の中は理不尽なもの。
初心者には全く優しくない、初心者お断り・・・
そんな気持ちさえ抱きました。

しかし、これは誰もが通る道だと思っておいたほうが良いでしょう。
これを乗り越えた先に、訪問者数の稼げるブログになると考えています。

では、訪問者数を稼ぐには具体的にどうすればよいのでしょうか?

たとえば、以下の方法があると思います。

 ・色々な人のブログに足跡を付ける
 ・人のブログにコメントを残してそこからアクセス数を稼ぐ
 ・お役立ち情報を発信する
 ・有名人になって訪問者数を稼ぐ

上に挙げたうちの最初の2つは初心者には有効な方法だと思います。
ブログをもっといろんな人に良いんでもらいたいと思うなら、まずは身近な人に知ってもらい、そこから知名度を上げていくのが良いでしょう。
ブロガー(ブログを書く人)同士との交流もできるため、モチベーションも維持しやすいでしょう。

人様のブログにコメントを残すのが億劫だという人は、まずは足跡を残すところからやってみると良いと思います。
(私は未だに人様のブログにコメントするのが億劫・・・(泣))

上記2つの方法を行うことで、私は20~30くらいの訪問者数を稼げるようになりました。
これらの方法は初心者でも比較的訪問者数を増やせるようになることでオススメですが、
恒常的に訪問者数を増やそうと考えると毎日ブロガーのブログに訪問しなければならず労力を強いられます。
エスカレートすると、ブログを書くことよりブロガーのブログに訪問することがメインになる可能性もあります。

これ自体は全く問題ないと考えています。
とてもすばらしいことだと思います。
ブロガー同士との交流が増えると必然的に訪問するブログも増えるので、致し方ないことだと思います。

恒常的にブログの訪問者数を増やすという意味で最も効率的な方法は3番目のお役立ち情報を発信することだと思います。
私が書いているこのブログもこれを目的としています。
お役立ち情報を発信していくことで、SEO対策にもつながります。

GoogleやYahooなどの検索エンジンに表示されるようになると、ここから訪問してくれる人が増えます。
相手が欲しがる情報、他には無い新規性のある情報ほど情報の価値は上がっていくため、必然的に訪問者数を稼げるようになります。
しかし、この方法でアクセス数を稼げるようになるまでには少々時間を要します。
検索エンジンに登録されてから検索結果の上位に表示されるようになる必要があるためです。

しかし、これが実現できると毎日ブログを更新せずとも多少の訪問者数を稼ぐことが可能です。
したがって、価値のある内容の記事を沢山書くほど訪問者数も増加していくことと思います。

このブログはあまり価値のある情報を発信できておらず、記事数も少ないため訪問者数も少ないですが、
検索エンジンからのアクセスだけでも1日当たり20~30は行くようになりました。
全体的な1日当たりの訪問者数は30~50程度です。

最後の有名人になって訪問者数を稼ぐ方法は・・・
まあ、おまけで載せたようなものです。
有名人になれば、上の方法とは比較にならないほどのアクセス数を稼げるようになるでしょう。
実際にどうなっているのかは見たことが無いので分かりません。

しかし、ほとんどの人にとっては無縁の情報だと思われるため、ブログを運営していくという観点では3番目のお役立ち情報を発信していくことが最も有効な方法だと考えています。
お役立ち情報をすることはそれだけで自分自身の勉強にもなるし、文章能力のトレーニングにもなるので、訪問者数を稼ぐこと以上に有益なことだと考えています。

以上、拙い文章になってしまいましたが、ブログの訪問者数を稼ぐコツについての私なりの見解でした。

Cursattle タイトル画面制作中

昨日に引き続き、自作ゲーム「Cursattle」の制作をやっておりました。
今はタイトル画面を実装しているところです。

cursattle-title

著作権表示がまだ2013年なのは去年に制作した画像を差し替えていないためです・・・
ロゴやボタンのレイアウトは大幅に変わるかもしれません。
右側に余ったスペースをどういう風に利用しようかな・・・?

そんな感じです。

今日もほとんどUnityの使い方を学ぶので潰れました。
プログラムを書かずして視覚的にレイアウトできるのはやはり強力ですね。
タイトル画面が完成したらステージ選択画面の制作に入りたいと思います。

JPGファイルのExif情報を簡単に削除するソフト

デジカメで撮影した画像ファイルなどはjpg形式で保存されている場合が多いですが、ひとつ注意しなければならない点もあります。
それは撮影機種や撮影場所などが記録されている場合です。
これらの情報はExif情報として保存されています。

Exif情報が存在したままネット上に画像ファイルをアップロードすると、最悪の場合自分の現住所を知られてしまうリスクに晒されます。
そのため、Exif情報を削除してからアップロードする必要があるでしょう。
できれば簡単に削除できることが望ましいですね。

上記をドラック&ドロップだけで実現できるソフトとして、「ExifEraser」があります。
以下Vectorのサイトよりダウンロードできます。

 http://www.vector.co.jp/soft/winnt/art/se475864.html

ダウンロードしたら、画面にしたがってインストールすれば完了です。
使い方はExifEraserの実行ファイル(またはショートカット)へ画像ファイルをドラック&ドロップするだけ。
非常にシンプルです。

Exif情報が削除されると、その旨のメッセージボックスが表示されます。

様々なSNSサイトにアップロードする場合きちんと行っておく必要があるので、
このように手軽に使えるソフトは非常にありがたいですね!