トップ

ようこそ

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


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


ソードマスターテンシ

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


最近のこと



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


東方Project・攻略ブログ
FC2 Management

[Minecraft]IC2exModding備忘録

NanoLaser開発を再開するためにも、MCP上でIC2を導入しないと行けない。
しかし、どうやればいいのか全く分からない。

とりあえずIC2exのソースコードをデコンパイルしてみる。

バージョンは
minecraft 1.6.4
forge 965
industrialcraft-2_2.0.397-experimental

Minecraft MOD開発 2

この記事ではEnderIOのデコンパイルを試みているので、これと同じ手順でIC2Exをデコンパイルする。

結果、同じくエラーが出たもののデコンパイルは終了。エラー100個警告13個。

別に作っていたNanoLaserとIC2exAPIを導入したForgeMCPにデコンパイルしたic2フォルダをコピーしてみたが、失敗。
どうやらデコンパイルしたic2のソースコードの難読化が一部解除されていないらしい。
いろいろ根本的に間違っているかもしれない。

難読化に関して
[Minecraft]mod作成専用スレ>>801

1.6.4版を作ってくれた方に聞くのが一番早いかもしれない。

[DirectX9]行列とドット絵[備忘録]

がっこの課題でDirectX9を触っているので、この前の土日の備忘録

・行列
DirectX9では行列ヘルパ関数があり、固定機能パイプラインなるものを通して、設定された頂点が設定された行列変換されます。

この時、行列変換の対象となるのは変換済みでない頂点になります。
自前で計算しない限り、変換済みの頂点なんてないと思いますが、頂点フォーマットでXYZRHWを指定している場合は別です。
その頂点フォーマットの頂点は、変換済みと見なされ、行列が全く適用されません
これに気付くのに4時間掛かりました。

・ドット絵
そんなわけで、めでたく行列変換が可能になったんですが、今度はテクスチャのドット絵がボヤける問題が。

これの解決方法は

1.テクスチャの拡縮時の補正をD3DTEXF_POINTにする

pD3DDevice->SetSamplerState(0,D3DSAMP_MINFILTER,D3DTEXF_POINT ); // テクスチャ拡大時の補間設定
pD3DDevice->SetSamplerState(0,D3DSAMP_MAGFILTER,D3DTEXF_POINT ); // テクスチャ縮小時の補間設定

2.テクスチャ生成時、画像補正をD3DX_FILTER_POINTにする

D3DXCreateTextureFromFileEx( pDevice, szFilepass, m_nTexWidth, m_nTexHeight, 0, 0, D3DFMT_UNKNOWN, D3DPOOL_DEFAULT,D3DX_FILTER_POINT, D3DX_FILTER_POINT, 0, NULL, NULL, &m_pTexture

3.テクスチャ生成時、テクスチャのサイズを画像サイズより大きい最小の2のべき乗の数にする
4.描画時、変換済み頂点の座標を(-0.5,-0.5,0.0)ずらす

の4つです(おいらの環境では)

変換済みの頂点をずらすのは、移動行列に渡す座標を加工すれば出来ました。

ただ、テクスチャのUV座標を弄る場合、頂点のロックが入るので、少し重くなります。一つの画像にスプライトをまとめている時のゲームの動作を最適化する時は考えものです。
ドット絵は自前で行列変換を行い、DrawPrimitiveUPで描画が良いのでしょうか。

・結論
DirectX9でドット絵、というか2Dゲームはめんどくさすぎです。他にいろいろ手段がある現在、無理して生のDirectXを触って2Dゲーム作るのは、モチベーションのコストパフォーマンスが悪いです。
少なくとも、行列ヘルパ関数とドット絵は共存は出来ないでしょう。

おいらがよく見に行くまるぺけさんのサイトでは、自作シェーダを使っていました。
その3 スクリーン座標にテクスチャの一部を2D描画する仕組み

・これからのプログラミングについて
DirectXに「普通これすれば、こうなるだろう」という、理想の動きを全く期待しないほうがいいので、デバッグ作業はトップダウンで。いろいろ弄る前に、自分のコードでのDirectXの設定と、DirectXについての解説しているサイトをみまくる。

・参考サイト
DirectXにおける2D描画

DrawPrimitive周り

続きを読む

[Unity][Android]XperiaAでBuild&Run

UnityAndroid


割と詰まったのでメモ。

Unityを触る前に、AndroidSDKは予めインストールしてあったので、
AndroidSDKのインストールは省略。

・Unityの設定

メニューバーから
Edit→Preference

UnityAndroid01.jpg


で、出てきたウィンドウの左側のメニューから「External Tools」を選択。

「AndroidSDKLocation」に、自分のAndroidSDKのディレクトリを指定する。


Preferenceウィンドウを閉じて、もう一回メニューバーから

File→Built Settings

UnityAndroid02.jpg


で、出てきたウィンドウの左下のメニューに「Android」があるので選択し、
Switch Platformボタンを押す。

これで、BuildするとAndroid用のゲームファイルを生成するようになる。

で、その生成するゲームファイルの設定をする。

もう一回メニューバーから
File→Built Settings

UnityAndroid03.jpg

Player Settings...ボタンを押すと、Inspectorパネルに設定項目が現れる。
(割と気づきにくい)

設定しなくても実行出来る項目は多いけど、「Bundle Identifier」だけは自分で設定する必要があるっぽい(何もしないとビルド時にエラー)

ここで一旦、保存して、Unityを再起動。

メニューバーから
File→Built Settings

「Build & Run」ボタンを押すと、apkファイルの名前を決めるダイアログが出るので、適当に決めて、ビルド開始。

Android側との接続がうまく行っていれば、めでたくAndroidで作ったゲームが実行される。

・Androidの設定

もちろん最初はAndroid側の設定を行う必要がある。

・セキュリティにある「提供元不明のアプリのインストール」をチェック
・開発者向けオプションにある「USBデバッグ」にチェック
・ADBドライバを入れる(XperiaだとPC Companionのインストールがこれです)

基本はこの3つで、おいらが使ってる「Xperia A」(SO-04E)の場合の手順を紹介。

まず各種オプションからの設定。

UnityAndroid04.jpg

セキュリティから「提供元不明のアプリ」にチェック。

UnityAndroid05.jpg

開発者向けオプションから「USBデバッグ」をチェック。
開発者向けオプションの出し方はググろう。

UnityAndroid06.jpg

Xperia™→USB接続設定→PC Companionのインストール にチェック(既にPC Companionがインストールされているなら外してもOK)

USB接続モードは、Unityからゲームを実行するときは「MSC」。

これらの設定を行ったあと、PCとUSB接続します。
すると、Xperia側の画面にPC Companionをインストールするかのダイアログが出るので、インストールを選びます。
今度はPC側で「コンピュータ」を開いて、PC Companionのインストーラーを実行して、インストールを進めます。

ここで、なぜ「PC Companion」が必要なのかというと、このPC Companionこそが、XperiaのADBドライバなのです。

別の方法も探しましたが、この方法が一番確実だと思います。PCに常駐ソフトが増える以外は。

PC CompanionやUSB経由のXperiaのデバイスのインストールが完了したら、Xperia側の設定は終了です。Unityから「Build&Run」を実行してみましょう。

・詰まった所

!XperiaのADBドライバってどこにあるのか

手動でドライバインストールする方法を紹介しているサイトもありましたが、失敗して、結局PC Companionに落ち着きました。

!Player Settings...ボタンを押しても何も起こらない

Inspectorパネルに設定画面が出る。

・参考サイト

【Unity無償化】Unityインストールから実機で実行するところまでやってみた。
http://naichilab.blogspot.jp/2013/05/unityunity.html

Unity3D で作ったゲームを Android で動かす。
http://loumo.jp/wp/archive/20121210085729/

Xperia Z用のADBドライバをインストールする方法3選
http://www.teradas.net/archives/9931/

[Unity]はじめてのUnity[メダルゲームっぽいの]

Unity初めて2日目の段階の備忘録。

【Unity無償化】Unityインストールから実機で実行するところまでやってみた。
http://naichilab.blogspot.jp/2013/05/unityunity.html


Unityで超入門3Dゲームを作ってみる
https://lab.sonicmoov.com/development/unity-for-beginner/


この二つのサイトを見ながら、とりあえず、「一枚のコインをプッシャーに出現させる」ところまでは完了。


次にコインを沢山出したいので、「Prefab」という機能を調べる。

オブジェクトの複製方法 プレハブについて
http://unity3d-study.seesaa.net/article/281166732.html


Projectパネルのところに、Hierarchyパネル内のオブジェクトをドラッグアンドドロップするだけでプレハブ化するらしい。はぇーすっごい簡単…。

プレハブ(Prefab)になったコインを逆にHierarchyパネルにドラッグアンドドロップすると、同じ物が沢山作られる。

UnityCoin01.jpg
なんか写り込んじゃってるけどキニシナイ

手動でジャラジャラ出来るようになったので、今度はプログラム側(スクリプト側のほうが正しいのかな)から自動でジャラジャラ出来るようにする。

サイトの手順とほぼ同じく、

Create Empty(BlockSpawn) → スクリプト作成 → BlockSpawnオブジェクトにスクリプト適用 → スクリプトの変数にコイン適用

でジャラジャラしだしました。

UnityCoin02.jpg


沢山コインが出ますが、動きがないので、生成する向きとかを変える。

Overview: 時間との同期(Keeping Track of Time)
http://ws.cis.sojo-u.ac.jp/~izumi/Unity_Documentation_jp/Documentation/ScriptReference/index.Keeping_Track_of_Time.html


コインの向きは、BlockSpawnの角度を使ってるので、BlockSpawnの角度を乱数で変えて対応。
ついでに生成する数も一度に3つにしてみた。

UnityCoin03.jpg


いい感じ。

スクショの状態でFPSは一桁ぐらいに重くなってるので、
ちゃんとメダルゲームを作る場合はうまく工夫しないと作れなさそう。

・詰まったところ

!JavaScriptでVector3型の変数を宣言したい

var vec3 : Vector3 = Vector3( 0, 0, 0 );

こんな感じ。

Vector3 vec3;

こういうのは普通にアウト。
Cとか普段使ってると馴染みのない書き方。

!Build&Run時に、スマホ(SO-04A)を認識してくれない

ADBドライバーが入ってなかったことが原因だったですが、
そのADBドライバーの入れ方が、「XperiaのPCCompanionというソフトを入れる」という。

他の機種は、ダウンロードサイトから~~などだったので、こっちもそうかな~と別の方法を試してたりしたんですが、全くうまく行かず、泣く泣く別にADBドライバー以外は全く使わなそうなソフトをインストールして解決しました。

あとBuild&Runする時、スマホ側は「USBデバッグ」を有効にし「MSC」モードに切り替えます。

Eq5Ej.png


・参考サイト
Unity: 結局、Prefabってなんなのよ、という人のための解説
http://hamken100.blogspot.jp/2012/06/unity-prefab.html


Unityでゲーム開発 -JavaScriptの基本-
http://yun.cup.com/unity002.html
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
プロフィール

ぴお

Author:ぴお
ようこそ

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

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

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

Twitter
このページのトップへ