トップ

ようこそ

ぴおが製作したゲームとか置いてます。


制作物
微塵に砕かれるテンシちゃん


ソードマスターテンシ

初東方二次創作。
ソードマスターのテンシが仇なす敵を微塵に砕く、
テイルズ風ソードアクション。


最近のこと



戦闘ヘリMOD
戦闘ヘリMOD1.4.6対応版つくりました。


東方Project・攻略ブログ

[OpenGL][GLUT]VisualStudio2013でのglut.h等の配置

VisualStudio2010までは、Microsoft SDKs内に配置していたものが、2013(2012も)ではWindows Kits内に。
フォルダ構成も微妙に変わってるので注意(umフォルダとか)

glut.h
C:\Program Files (x86)\Windows Kits\8.1\Include\um\gl

glut32.lib
C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86

glut64.lib
C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x64

glut32.dll
C:\Windows\SysWOW64

glut64.dll
C:\Windows\System32

参考URL
Windows で GLUT を使う準備をする
http://www.naturalsoftware.jp/blog/2901

[Git]SourceTreeとBitBucketでGit環境のセットアップ

・はじめに
チーム制作でUnityとGitを使うことにしたが、Gitの環境整えるのが大変だったのでやり方メモっておく。

チームの人がこの記事見れば、環境整えれるように書いときます。

・最初に読んどく
Unity開発者が複数人で開発を進める上で覚えておくと幸せになる9つの事

簡単なGitについての説明と、UnityでGitを使うときの注意点とか書かれてるので、読んでおこう。

・セットアップ開始
本題のGit環境構築のやり方を書いていきます。

・BitBucketのアカウントを作成
Bitbucketのアカウントを作成する。

コレ読めばたぶん大丈夫。

アカウントが作れたら、ユーザー名をリーダー(リポジトリ作った人)に伝える。
そして、作業するリポジトリへの招待などを受けよう。

招待を受けると、登録したメールアドレスにメールが来るので、確認だけしておく(見なくても良いかも)

・SourceTreeのインストール

SourceTreeダウンロード

上のURL先のページから、ファイルをダウンロードしてインストールする。

インストール終了後起動したら、SourceTreeの初期設定をする。

sourcetree1.png

全部チェック入れて「続行」

sourcetree2.png

ゲージが溜まったら「次へ」

sourcetree3.png

「Yes」を選択

sourcetree4.png

ここで、先ほど作ったアカウント情報を入力します。

sourcetree5.png

普通はスキップ。
先ほどアカウント作った時に、リポジトリ招待されていたら、ここにリポジトリが表示されるのかも。

sourcetree6.png

「いいえ」を選択

sourcetree7.png

これでSourceTreeインストール完了です。

・BitBucketのリポジトリをクローン

ブラウザ上でBitBucketのリポジトリのページを開きます。

repo1.png

こんな感じの画面です。左のアイコンから、リポジトリの様子を見れます。

では、クローンを作っていきます。

repo2.png

左の「…」をクリックするとメニューが出てくるので、「クローン」を選択。

repo3.png

「SourceTreeにクローン」をクリック。

※クリックした後、Chromeだとダイアログが出ますので「アプリケーションの起動」をクリックします。

repo5.png

SourceTreeにこんな画面が表示されます。
必要に応じて「保存先のパス」を変えて「クローン」をクリックします。

repo6.png

クローンしたリポジトリが表示されたらOKです。

・試しにコミットとプッシュ

クローン出来たら、ファイル操作のテストにコミットとプッシュをしておきます。

compu1.png

「作業コピー」をクリックして「エクスプローラで表示」をクリック。

すると、エクスプローラでリポジトリのフォルダが開きます。

compu2.png

適当な画像ファイルを突っ込んでみました。

compu3.png

SourceTreeのほうで、先ほど追加した画像が表示されます。ファイルをコミットするかどうかを決めれます。

compu4.png

test.jpgにチェックを入れて、

compu5.png

左上の「コミット」をクリック。現れたテキストボックスにコミットログを書き込んで右下の「コミット」をクリックします。

が、ここでたぶんエラーになって、コミット出来ません。

何故かと言うと、SourceTreeにユーザーの名前が設定されていないからです。
今回はリポジトリ毎に名前を設定する方法を取ります。

named1.png



SourceTreeの右上の「設定」ボタンをクリックすると、リポジトリの設定画面が開きます。

この画面で、②→③とクリックして、詳細設定画面を開きます。

named2.png 

必要な情報の「デフォルトリモート」のチェックを外し、「リモート名」に自分の名前を書きます。
この画面では、BitBucketの設定がされてますが、されてなかったらこちらも設定しときます。

設定したら「OK」をクリック。

named3.png 

先ほどの画面に戻ったら、次は上の「詳細」というタブをクリックします。

すると上の画像のような画面になるので、「グローバルユーザー設定を使う」のチェックを外し、「フルネーム」「メールアドレス」を入力します。

入力し終わったら「OK」を押して、再度コミットしてください。たぶんいけるはずです。

compu6.png

コミット出来ると、ブランチにコミットしたものが表示されます(画像だと一番上に「かわいい」コミットログがあるのが確認出来ます)

次にプッシュします。「プッシュ」をクリックします。

compu7.png

右下の「OK」をクリック。
ファイルのアップロードが行われて、これでチームメンバとのファイル共有が出来たはずです。

メンバに連絡を取って、プッシュ出来てるか確認しておきましょう。

・更新履歴
2015/03/15
コミットの際のユーザー情報の設定が書かれていなかったので追記。

[Unity]旗揚げ制作日誌1

現状のゲーム


3/7
・製作開始
作るのはオーソドックスな旗揚げ。以前、一日で作れるゲームをツイッターで聞いたところ「旗揚げ」とリプライを頂き「確かに作れそう」と思ったので。
プラットフォームはブラウザ。
去年作ったゲーム制作チェックリストを満たすように作ります。

・旗
ユニティちゃん辺りに旗を持ってもらいたかったけど、モデルのアニメーションよりも、旗揚げのシステムを作りたかったので、赤白の球を旗とした。

・旗を上げる
ゲームメインを作って、そこで旗の座標を直接弄って、上げ下げさせた。

hata1.png

3/8
・旗の上げ下げ指示
こちらもゲームメインに記述。
正解すると、ピンポーン。不正解だとブッブーと効果音を鳴らした。
「赤上げない」のようなフェイントも実装した。これがあると、表示された内容の真偽を考えるので、ゲームとして面白くなる。
文字描画はGUI.Labelを使用し、文字の枠はGUI.Boxを使った。





3/10
・タイトルとゲームオーバー
タイトル画面とゲームオーバー画面を作成し、タイトル→ゲーム本編→ゲームオーバー→タイトル→…のゲームループが出来た。これで繰り返し遊べるようになり、自分的にゲームとして最低限の要素は満たした。

hata2.png

3/11
・とりあえず公開に向けて
ブラウザゲーなので、WebPlayerでBuildRunしてブラウザ上での実行確認をしてみた。

マウスの左クリック押しっぱなしで赤を上げる、右クリック押しっぱなしで白を上げるという操作だったが、右クリックしたらメニューが出てきて、白旗が操作出来ないことが発覚。
しかし、ググったら無効化できることが分かったので、一安心。
(Player Settingで、NoContextMenuを選ぶ)
hata3.png

・公開に向けて~アップロード~
前項で作成した、実行ファイルをアップロードすれば、公開出来る。
アップロード先として、Googleドライブを使用する方法があったので使ってみた。

野望も小さな一歩から TokTakaomiのゲームつくりブログ - Unityで作ったゲームをWebPlayer用にビルドし、Google Driveにアップロード、ブログで公開する

夢見がちゲーミング - 【Unity】【第二回】Unityで作ったゲームを配布する際の方法を挙げてく-WebPlayer編-

上記のブログを参考にしながら、アップロードしたのが、この記事のトップの旗揚げゲームです。

今後に向けて
現在、見事にゲーム制作チェックリストを満たしていないので、このリストにチェックしていくように制作していきます。
あとはスコア作ったり、制限時間短くして行ったりとかやりたいことが沢山あるので、それをまとめるのが次やることですね。

[DirectX9.0]ヘルパー関数で床との当たり判定

3Dアクションゲームを作ることになったので、いろいろメモ用にブログを使う。

・やりたいこと

ステージの判定メッシュの上にキャラクターを立たせたい。
ステージの判定メッシュの坂に沿ってキャラクターを移動させたい。

・やったこと

地面メッシュの作成。メタセコイヤで50x50で分割した平面を作り、でこぼこさせて、xファイルに出力。

地面メッシュを表示。D3DXLoadMeshFromX関数からパパパっと。

20141218_当たり判定1
いしのなかにいる

ゲームプログラム制作日記 ~レイ(光線)でのあたり判定~
こちらを参考にD3DXIntersect関数を使って、地形と当たったかは判定出来た。
レイは真下に飛ばした。

あとは当たったポリゴンの情報を使って、地面に沿わせるようにキャラのY座標を調整する。

ここで、Xファイルのメッシュから頂点の構造体の中身を得る方法が分からないので調べる。

[ゲームつくろ~質問箱]D3DXMESHからskinweightsとボーンオフセット行列を取得したいのですが
ID3DXMesh::GetDeclarationメソッドで、頂点構造体の情報を得られるらしい。

		D3DVERTEXELEMENT9 aElements[ MAX_FVF_DECL_SIZE ];
pLandMesh->GetDeclaration( aElements );


上記のコードを書き、ブレークを挟んで数値をチェック。

20141220_当たり判定2
GetDeclarationメソッドで受け取った、D3DVERTEXELEMENT9型配列。

MSDNを使って調べたところ。TypeとUsageが、頂点構造体の型や意味を表してるようです。
1つめは、float3つで「Position」。つまり頂点位置。
2つめは、float3つで「Normal」。法線。
3つめは、D3DCOLOR型で「Color」。色。
4つめは、float2つで「TexCoord」。テクスチャ座標(u,v)
5つめはオフセットが0だったりと、ちぐはぐなので、たぶん終了でしょう。なので、上記4つが頂点構造体の中身っぽいです。
メタセコイヤで作ったxファイルなので、同じようにメタセコイヤで作ったxファイルはこの構造体を流用出来るはず。

頂点構造体を新しく作り、調べるのに使ったコードは削除。

[ゲームつくろ~質問箱]DirectX9での、「フェイスを表す頂点のインデックスの列」の取得方法

あとは、ここの>>2416を参考にして、レイの命中座標を算出。それを、キャラクターのY座標にセット。

すると、山部分は相変わらずめり込むが、凹んでいる場所はうまく地面に沿ってくれた。
いろいろ試すと、キャラ座標から真下に飛ばしていたレイを真上に飛ばすように変更すると、山部分に沿ってキャラクターが移動するように。凹んでいる部分はキャラクターに重力を設定することで、落ちるように。



図を描くと、納得。

20141220_当たり判定3

今回書いた地形判定と地形に沿わせるコードを抜粋。

	// 地形判定
BOOL bIsHit = false;
float fLandDistance;
LPD3DXMESH pLandMesh = GetLandMesh();
DWORD dwHitIndex = -1;
float fHitU;
float fHitV;

D3DXIntersect( pLandMesh, &g_player.pos, &D3DXVECTOR3( 0.0f, 1.0f, 0.0f ) , &bIsHit, &dwHitIndex, &fHitU, &fHitV, &fLandDistance, NULL, NULL );

// ----- 接地時処理 -----
if( bIsHit )
{

// ----- キャラY座標補正 -----
// 当たったインデックスバッファ取得
WORD dwHitVertexNo[ 3 ];
WORD *pIndex;
HRESULT hr = pLandMesh->LockIndexBuffer( 0, (void**)&pIndex );

for( int nIdxIdx = 0; nIdxIdx < 3; nIdxIdx ++ )
{
dwHitVertexNo[ nIdxIdx ] = pIndex[ dwHitIndex * 3 + nIdxIdx ];
}

pLandMesh->UnlockIndexBuffer();

// 当たったポリゴン取得
VERTEX *pVertex;
hr = pLandMesh->LockVertexBuffer( 0, (void**)&pVertex );

// 地面の高さに合わせる
g_player.pos.y = pVertex[ dwHitVertexNo[ 0 ] ].pos.y +
fHitU * ( pVertex[ dwHitVertexNo[ 1 ] ].pos.y - pVertex[ dwHitVertexNo[ 0 ] ].pos.y ) +
fHitV * ( pVertex[ dwHitVertexNo[ 2 ] ].pos.y - pVertex[ dwHitVertexNo[ 0 ] ].pos.y );

pLandMesh->UnlockVertexBuffer();

// Y移動量を0に
g_player.move.y = 0.0f;

}

// 位置移動
g_player.pos += g_player.move;

// 重力
g_player.move.y -= 0.1f;


・参考ページ

ゲームプログラム制作日記 ~レイ(光線)でのあたり判定~
D3DXIntersect関数

2-1-1.D3DXIntersect関数
D3DXIntersect関数。引数について。

サンプルプログラム 3Dアクション基本
衝突応答関係

[ゲームつくろ~質問箱]DirectX9での、「フェイスを表す頂点のインデックスの列」の取得方法
衝突面の法線の取得、及び重心座標の使い方

[ゲームつくろ~質問箱]D3DXMESHからskinweightsとボーンオフセット行列を取得したいのですが
ID3DXMesh::GetDeclarationメソッド。
頂点構造体の取得に使う。
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
プロフィール

ぴお

Author:ぴお
ようこそ

自分のゲーム制作での備忘録や製作記録を書き留めておくブログです。

■やってるサービス
Twitter:piorimu

Pixiv
http://www.pixiv.net/member.php?id=1126385

Twitter
このページのトップへ