みょふ
カテゴリ:プログラム( 5 )
Flashへのゲームパッド実装について
Flashのゲームパッドの対応で、備忘録と言うわけではないけど
他にこの部分で詰まっている方がいれば参考になればと思い
アクションスクリプトをここに記述しておきます。


まず大前提として、フラッシュプレイヤーの最新版をパブリッシュできるようにしておいてください。
そのやり方はここでは省きますが、わりと自己責任系だったりしますのでお気をつけを~。

まずFlash内に"t"というインスタンス名のダイナミックテキストを配置してください。
そして下の記述をコピペしてください。
ちなみに、フラッシュプレイヤーを最新の物にしておかないとエラーが出ます。
そして、プレビューモードではパッドを認識しません。


//------------------------------------------------------------------------


var myGameInput:GameInput;
myGameInput = new GameInput();


var text:String = "";
text += String("\nGameInput.isSupported - " + GameInput.isSupported);
text += String("\nGameInput.numDevices - " + GameInput.numDevices);////デバイス番号、パッドが二つ以上刺さっている時に何個刺さっているか
text += "\n"+Capabilities.version;
t.text = text;

// ゲーム入力デバイスが追加されたときに呼ばれるリスナ関数を追加
myGameInput.addEventListener(GameInputEvent.DEVICE_ADDED, onAdded);
// ゲーム入力デバイスが削除されたときに呼ばれるリスナ関数を追加
myGameInput.addEventListener(GameInputEvent.DEVICE_REMOVED, onRemoved);


/////////////////////////////////////////////////////////////
////入力デバイスが追加された時のファンクション
function onAdded(e:GameInputEvent):void
{
t.text = "ゲーム入力機器が追加されました\nID:"+ e.device.id + " NAME:" + e.device.name + " NUM:" + String(e.device.numControls);
myDev(e.device);
}/////////////////////////////////////////////////////////////


/////////////////////////////////////////////////////////////
////入力デバイスが削除された時のファンクション
function onRemoved(e:GameInputEvent):void
{
t.text = "ゲーム入力機器が削除されました\nID:"+ e.device.id + " NAME:" + e.device.name + " NUM:" + String(e.device.numControls);
}
/////////////////////////////////////////////////////////////



var myDevice;////デバイス情報の保存用変数

/////入力デバイスの追加によって得られる情報を書き出すファンクション
function myDev(dev:GameInputDevice):void{

myDevice = dev;///受け取ったデバイス情報を保存します

myDevice.enabled = true;///これをしないと動かないみたい(ボタンモードtrue見たいなもの)

//////////////////////for/////////////////////////////////////////////////////////////////
for (var i:int=0; i < myDevice.numControls; i++){/////全部のボタンをforで見ている

var myControl:GameInputControl = myDevice.getControlAt(i);
myControl.addEventListener(Event.CHANGE, onChange);////ボタンを押しているか放しているかの認識は無い

function onChange(e:Event):void////状態が変わったという事のみを見ている
{
var control:GameInputControl = e.target as GameInputControl;
var myVal:Number = control.value;////valueは押した量、十字キーとかは-1から1までの間を見る///ここの量で押しているかどうかを認識
var myID:String = control.id;

}///ファンクションの終了

}//////////////////forの終了////////////////////////////////////////////////////////



}

//------------------------------------------------------------------------



えーと、はっきり言いまして、もっとわかりやすい書き方はあると思います。
上のはあくまでまったくわからないけどFlashでとりあえずパッド対応させたい
と言う人用だと割り切ってください。

実際に起動してみて、パッドを動かしてみて、そこに表れた数値を見て
そこまでこれた人なら、表示された数値を見て実装する事ができると思います。
がんばってみてください!
[PR]
by hoppema | 2013-09-03 23:17 | プログラム
現状
おっと、気を抜くと月一更新みたくなってしまいますので
出来る限り現状を書いていきます。

というか、現在はアクションスクリプト3.0にて
四季の狂剣の戦闘シーンを構築中です。
3.0となり、様々なところが変わりましたので
ほとんど一から作ってるようなものです。

プログラム関連は高速化はするのでしょうけど
読み込むpngのサイズがきっと大きくなることから
以前よりも重くなる可能性が高いのがなんとも…
早いところ本域の絵を入れた動作確認をやりたいところです。


さて、戦闘ですが
ボタンを一つ増やすということは以前にも書いたと思いますが
他にも(仮)ながら色々と試しています。

・大攻撃・複数の固有技・遠隔モード・隙のレバガチャ復帰・疲れの実装

などなど、それでいてややこしくならないようにするのはかなり難しいですが
以前の経験で、チュートリアルさえちゃんとしていれば
ある程度は許容されるらしいです。

ええ、モンハンだってあんなにややこしいのに許容されていますから!!

と言った感じで、まだまだプログラム中です。
[PR]
by hoppema | 2011-03-07 02:49 | プログラム
結局元鞘
なんだか昨日今日の記事で申し訳ないのですが
やはりC++を介さない方向で進めていたりします。
そのきっかけになったのがこの記事

http://clockmaker.jp/blog/2010/10/molehill/


記事のとおりならばフラッシュプレイヤーで
将来的にゲームパッドに対応することが確定ということになります。
つまり、ゲームパッドの問題はクリア!
・・・というかきっと未来にはクリアできるということです・・・

それが発端というわけではありませんが、友人と相談して色々とつかめてきたのが
「ムービーと音楽・音声」の質に関する事。
これはswf内に格納する際に劣化を免れない的な事を以前書きましたが
どうやらフラッシュのバージョンが進み、h.264形式での格納が可能になったみたいです。
この形式はニコニコ動画などでも使われている形式で、かなり綺麗です。
そして音質もかなり向上させることが出来ます。ていうかまんまの音質で。

とどめはAdobe Air。
インストーラの設定、セーブとロードのローカルフォルダへの保存
そしてデータのアーカイブ化があるので
今までに比べて格段にデータを管理しやすくなりました。
欠点は、Airを学ばなければいけないことですが、そのくらいなら何とかします。
Airならswfとの連携も簡単でしょうし。

唯一の問題点はフルスクリーン。
これは以前と同じで、実際の画面解像度を変更することは出来ません。、
外に解像度変更のためのexeを作って起動させるというのも考えましたが
これだとゲームの強制終了に対応できませんので無理です。
ここは前回と同じ、毎フレーム拡大処理が入ってしまうということになります。
これがあるので60fpsは実質不可能になります。

後はアクションスクリプト3.0になって処理が早くなったと聞きますが
それはあくまでシステム関連の話です。
つまり、前回同様透過データを持つpngを回転させることは
別に早くなったりはしない、それどころか演出を強化するならば
より重くなってしまう可能性があるという事です。
こればっかりはやってみなければわからない部分ですので…


そんなこんなで、やっぱり前回と同じ

結局全部フラッシュで作ればいいんでしょ!!!!


ということになりました。
とりあえず明日、アクションスクリプト3.0とAdobe Airの参考書をあさりに行ってきます。
でもようやく、プログラム関連の「これで行こう」が見えた感じです。
正直、C++あたりを探してた時は絶望がかなり大きかったので…

続きもまたプログラムの話になるのかな…
でもこうやってソースをネット上に残すのは後で探しにくる人のためにも
有用なことなんですね、と、色々と探してみて実感します。
[PR]
by hoppema | 2011-02-06 00:52 | プログラム
光明
プログラム関連で思いついたことがありましたので
絵関連の事はひとまず置いておきます。
・・・ってこうやって一つの事になかなか
集中できないのはどうなのかな~。


えーと、やりたいと思っていることはこうです。

・swfでゲームの基本的なところを作成
   ↓
・ActivXコントロールを使ってC++でswfを読み込む
   ↓
・DXライブラリを使ってキー入力情報得て、swfに伝える


利用するもの全て本来の使い方をしないという強行作ですが
出来ることはできるみたいです。
これによって前作よりパワーアップする点として

・ムービーと音楽、音声をswfに格納しなくて良くなるので、質がアップ!
・ゲームパッドを使用可能!
・セーブデータをデータフォルダ内に作成可能!
・Enterキーで会話を送ることが可能!
・初回必ずフルスクリーン起動じゃなくてもOK!

そして、これ以降はまだ不明瞭な点ですが
アクションスクリプト2→3によって動作が軽くなる事と
フラッシュ側の擬似フルスクリーンでは無く、本来のフルスクリーンで
プレイできる事からさらに動作が軽くなる事。
最後に希望的観測ながら、昨今のCPUやグラボの性能向上によって

・コンフィグに「画質」の項目を入れることが可能!?

という点です。
実はかなり重要な部分でして、前回の四季の狂剣はフラッシュ画質は
常に最低に落としてプレイしておりました。
理由は当然、低画質じゃないと重くなりすぎるから…でした。
その結果どうしてもジャギがひどくなり、スクリーンショットが汚くなるという
弊害がありましたので、その部分を改善できるのはかなりありがたい要素です。


まぁまとめて、今学ばなければならないことは

・c++からswfの再生とデータのキャッチボール
・DXライブラリの実装
・アクションスクリプト3.0の習得

の三本です。地味に三つ目が怖いです。
ムービークリップに直接書けなくなるのはアクションスクリプトの
最大の利点を潰してしまっているように思えるのですが…

勉強するべきことは多いのですが、光明には違いありません。
またしばらく勉強を続けてみます。
[PR]
by hoppema | 2011-01-31 02:30 | プログラム
プログラムの推移
C++を勉強していて、やはりエディタの作成はちょいと
見通しがたたないことがわかりました。
まだ一本もC++でゲームを作ったことの無い自分にとって
三角関数まで理解するのは敷居が高すぎました…

となると、別の方法でキャラクターのモーションを作らなければいけません。
一番使い慣れているのはもちろんFlashですが、汎用性の高さでは
アフターエフェクトの方が上だと思いますし
なにより、AVI書き出しでいけるのならばアフターを上回るツールは
今のところありません。

Flashの場合、mxlm形式でモーションデータを吐き出すことはできますが
独自のクラスを使う上に、大量のレイヤー情報まで持っていけないみたいですので
後々のバージョンアップに期待するのはちょっと辛いかなと…
となるとswfファイルで製作し、標準とアルファの二種類のムービーを
格納して二つ読み込むという荒業しかないのですが
二つの動画を読み込んでミリ秒で制御するならば(容量を考えなければ)
aviの方がきれいになります。
となると、Flash→mxml→アフター→aviというルートが一番綺麗に
モーションデータを作成できるのかなと。
ただ、最近のはもうアフターでflaファイルを読めるとかどうとかで
重ね重ね最新版がどうなるかが重要になってきます。

と、モーション作成のことをつらつら書いていますが
まだC++はぜんぜん進んでおりませんのでシューティングゲームすら作れない状態です。
アクションスクリプトの技術がどこまで通用するのかはわかりませんが
とりあえずやれるだけやってみます。
できれば今年中に何らかの成果が出せるくらいには…

と、その前に息抜きというわけではないのですが
ひとつ考えていた企画を実現しようと思います。
これは今年中に何とかやってみようと思っていて
かる~い気持ちで遊んでいただければと。

そんな感じです。
あ、友人が信咲の服がよくわからんと言うので
一度自分で描いてみようと思ってます。
はっきり言って自分でもよくわかりませんが…
[PR]
by hoppema | 2010-11-27 03:34 | プログラム



ゲーム:四季の狂剣の製作状況および助けを乞う場所
by hoppema
カテゴリ
全体
浮き島
ゲームの話
四季の狂剣
プログラム
同人ゲーム
イベント・告知
未分類
以前の記事
最新のトラックバック
四季の狂剣 感想(体験版)
from 111のデジ同人感想
検索
その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧


Skin by Excite ism