敵弾で苦労してるという話見ると
多彩な弾幕だしてくるCAVEとか、やっぱすごいんだなと思う
敵の弾幕とかじゃなくて女の絵の乳をうつとポヨンポヨン揺れてエロい声だす
ようなシューティングを作ってほしい。
ぎゃる☆がんも絶対買うよ。
敵なんて体当たりだけでいい。同時に1種類の敵しかでないで撃破されたら
元の位置にもどして再登場とかやれば配列なんか覚えなくても作れるよ。
だから初心者は上記のようなシューティングからはじめるといい。
>1
新スレ乙
剣を振った攻撃を一度だけあてるにはどうすればいいでしょうか?
剣を振ってるモーション中にBoundingBoxが重なったらライフを減らすようにしてますが
重なってる間減り続けてしまいます。
今回のヒットで既に減らしたよん、という事を覚えておけばいい
>>6 ヒットする条件にbool型の変数を用意して
ヒットしたらfalseに切り替えるといいかも。
>6
一体に付き一発ずつ当てたい場合なら
敵のダメージ側に無敵時間を設けるか
どの攻撃にヒットしたっていうのを敵キャラに残しといて、前回と同じ攻撃はスルーするように。ダメージモーションが終わったらリセット。
一番最初に当てたキャラのみに当てたい場合なら
ヒットした後にプレイヤー側で攻撃終了フラグを立てる。次の攻撃やったり攻撃終了したりしたらフラグリセット。
XNAでは通常日本語フォントの文字列を表示できないとありますが、
欧文フォントだと簡単に表示できるのでしょうか?
さすがに文字の表示くらいググればいくらでも出てくるだろ…
>>10 具体的にわからない部分があるのでなく全体的に理解が難しいならば
参考書を読破するのがいいんじゃない、かなぁ。
「ゲーム作りで学ぶ」のドライビングゲームの項で
日本語も表示してるっぽいよ???
FPSなら単純にカメラ移動させれば良いんじゃないの
2Dゲームで拡縮を実装したいのですが、良い方法がみつからず行き詰っています。
例えば、ドラキュラHDの拡縮や、デススマ2やエスプガルーダ2にある
画面サイズアジャストのように、画面にカメラをよせたり離したり
するような処理は可能でしょうか。
最近見た気がするけどSpriteBatch.Beginの引数に変換行列を渡す
>>17 ありがとうございます。
検索してみたところ、実装したい処理をしているサイトをみつけました。
ただ、具体的にどのような記述をするものなのかがわかりません。
3D知識もからみそうなので1からチェックしたいと思うのですが
参考にできる本やサイトなどありますでしょうか。
あと、この処理が可能とわかっただけでも安心できましたので感謝いたします。
>>19 これまで既存知識でやりくりしていたので、かなり大変そうです。
回転についてだけどそれを理解しないとはじまらない・・・
とにかく調べながら頑張ります。ありがとうございました。
こういうやりとり見ると3Dに入るととたんにレベルが別次元にとぶのを感じるわ
>>21 別に2次元でも4次元でも行列を使ったアフィン変換の記述は出来るぞ
結局、最終的には数学が絡むのよね・・・・・・
2Dだけど、ポジションと、アニメと変数とあたり判定だけで
一応ゲーム作れてしまっているからなー。
そもそも行列とは? なんて、哲学的な知識はいらない。
結果だけしっていて、それが使えれば問題。
たとえば回転行列がなぜああいう形式なのか、知らなくても問題はない。
どう使えばどんな結果が得られるのか、それが必要。
というか、それができないヤツはプログラミングなんて_
またオマエか
つか線形代数ぐらい大学の教養でやるだろ
3Dプログラミングなんて、高校数学で十分だし
計算が難しいんじゃなくてどうやって書くのかの書式がわからないだけなんだと思う
入門サイト系のサンプルって2Dのが多くてそれの改変からはじめる初心者が多いからね
そういうスタイルで勉強するにはXNAは複雑すぎるとおもう
あまりにもおまじないが多くなりすぎる
>>30 それこそ逆だろ。
なにをしたいかにもよるが、延々デバイスの初期化で行き詰まったりするよりは、
サンプルを改変しながら、その改変での動作変更を見て勉強する方が早いと漏れは思う。
サンプル眺めてると、だんだん全体像が頭に入ってくるし。
ただ、デバイスの初期化とか、根本的な部分を学ぶにはXNAは不適当。
隠蔽されちゃって見えんからな。
>>30 勉強が目的なんじゃなくて、XNAで(もしくはXBOXの)作りたいゲームを作ることが
目的という人が多いだろうからなぁ、ことXNAに関しては。
そういう方向から入った人は、書式を知ってからその意味を理解するパターンも多い。
ていうか、現に参考書はそういう方法論とってるのが多いし。
個人的に受験で例えるなら
「C+やC#の理解から深める=基本書の読破」
「サンプル見ての勉強=過去問を沢山」
前者は確実に地力はつくが無駄知識もあり効率が悪い。
後者は目的達成の近道だが応用はきかず学んだ部分以外は零からの学習が要る。
新規の質問者は前者が多いけど回答者は後者の方法論で学んできた人が多くて
前者できた人間には遠い道に見える回答が多い、みたいな。
本当に2Dか3Dかの差なのかな??
C+ ? はおいておいて、普通に経験の問題です。
自分でもかけないのに、他人のコード読めるはずもなく。
>>34 おまえは英語読めるか? 書けなくても読める漢字もたくさんあるだろ?
人間の頭はそういうふうにできてる。
初心者に完動品プログラムはかけないかもしれないが、動くプログラムのソースを読むことはできる。
関数名とか、基本が英語だからなんとなく機能を類推できるものも多い。
分からなければリファレンスの出番(英単語を調べたことぐらいあるだろ?)。
文法は参考書で覚える方がいいと思うが、APIはソースから入ってもいいと思う。
ソースを読めるレベルに達しているのかのか、というつもりで書いた。
確かに言い方が極端すぎた。
プログラムの勉強の仕方までなんて相談には載れないからどっかいけよ
最低限、C#の経験なくてもソース見たら何書いてるかだいたい解る人向けだな
プログラミング初めての人にはお勧めできない
遊びながら覚えるにしてもWinFormsから入ったほうがいい
XNA でもまだなんか DirectX 的なレイヤーの臭い残ってるしね。
今まで DirectX 触ったことがあるとか言う人だったら、かなり簡単って思えるんだろうけども。
>>34 でも、サンプルコード+コードの説明
という形式が初心者向け教本や入門用サイトのおきまりだし
理解は早そうとも思う。
forループで配列に代入とか、自分で思いつくより、みせられて
ああ、こういう考え方をするのか、と理解するのがイイんじゃないかなと。
ゲーム作りで学ぶC#の、多次元配列の項目ですが175ページで
int[] array = new int[3,3];
となっていますが
int[,] array = new int[3,3];
の間違いかな。エラーがでるので左に「,」を入れたらうまくいきました。
誤植じゃないの?
出版社のサポートページとかに誤植情報載ってると思うから見ておいた方が良いかもね
リファレンスで文法ぐらい調べろよ。
学習センスゼロだな。
どうしてそんなに怒ってるんだ?
言語仕様のリファレンスなんか初心者が読めるわけないだろ
XNAは初心者用ではありません
>>43 自己解決した上に入門書のミスの告知をしたんだから褒めたまえよ
オレもそう思う
3Dゲームのプログラミングに役立つオススメ参考書ってありますか?
「ゲーム作りで学ぶ〜」は読んだんですが、3Dは文字通り次元が違って苦戦してます。
特に、カメラ制御・当たり判定について詳しく解説してあるとありがたいのですが・・・・・・
あの外国のバカ高いやつでもいい?
51 :
デフォルトの名無しさん:2010/10/14(木) 12:20:32
普通のDirectXの本読むのがいいと思う
APIはだいたいXNAと同じだしC#わかるならちょっと勉強すればC++も十分読める
解説がないと分からないようではなぁ
頭が悪すぎだと思うからやめといたほうがいい
>>49 もし2D→3Dの移行にベターな本があったら報告きぼん。
自分もゲーム作りで学ぶ〜は4,5冊読んだなかでわかりやすかったので
オススメしたけど、読んでみないとわからないしね。
てわけで3D初心者マニュアル本発掘の先駆者になってほしい。
本代はケチらずどんどん買うぐらいでいいんだがな。
当たり判定なら
ゲームプログラミングのためのリアルタイム衝突判定
ちょいと高いし、プログラミング始めたばかりだと読むの辛い気もする。
あと、XNA ならライブラリ側で実装されてるし、辞書にさえもならないだろうけど。
まあ、興味があれば。
Visual C# 2008で使うXNAは3.1日本語版でいいでしょうか?
おせーよ
4.0ってのに移行しなくてもべつにいいもんね
画面遷移について教えてください。
ゲームでは最初メニュー画面で何か選ぶとメインのゲーム画面に
いったりしますがこういうのはどう処理にするのがいいのでしょうか?
フォームなら新しいフォームをnewして自分を消せばいいのですが
そういうのじゃないですよね?
自分は、gamestate変数をint型で用意して
gamestate=0がタイトル、1がオプション、2がステージ、、、10がゲームオーバー画面
みたく分けてやってるな。0のときスタートボタンで2に以降して
gamestate=2なのを条件にゲーム本編の処理を開始。
if (gamestate==2){処理内容、、、}みたいにでかい{}でそれぞれくくる。
ぜんぶUpdateメソッドに入ることになります。
せめてenumにしようよ…
boolですむところもintを使うのが初心者クオリティ
だって変数とわかりやすいんだモン
boolも変数ですが
>>65 それ、C# から始めればいいものをわざわざ C から教える教育の問題じゃないか?
BOOLもintも型だよ
馬鹿は氏ね
.NETのBooleanは気にしてはいけない型
実際は1バイト
今時1bitのbool型なんて存在しないだろ
詰め込みたいならビットマスクを隠蔽する関数群を使えって感じだろ。
それはともかく、boolにする意味はメモリの節約ではなく誤った代入などを防ぐため。
暗黙の変換をされちゃう言語だと意味ないが。
>>70 誰か、boolが1ビットなんて言ってる? w
72 :
69:2010/10/17(日) 16:50:55
気にしてはいけないと書いたのはbool型が実際にメモリ上でどう表されるか気にしてはいけなという意味ね
わかりにくくてすまん
こまけぇこたぁいいんだよ!!
intの汎用性が高いので少数でもなければint使ってるけど
byteを使うほうが処理速度に影響するぐらいメモリは節約されますか?
うーん、別に性能名はどうでもいいんだけども。
int を真偽値代わりに使うと、true == true が必ずしも true にならないとか、問題いっぱいある。
整数はintがほとんどでたまにlong使うくらいでintより小さいのはめったに使わないな
boolの代わりに使ったり
>>63のようなマジックナンバーは論外だけど
シーンもオブジェクトだと考えて、スタックで表現してるな。
タイトル、プレイ画面、ゲームオーバー画面みたいな大きなシーンの移動はClearしてPush、
ポーズ、オプション、ダイアログみたいな小さなシーンの移動は現在のスタックにPush。
public interface IScene { SceneResult Process(SceneResult result); }
public enum SceneResult : byte { None = 0x00, SuppressUpdate = 0x01, SuppressDraw = 0x02, StackTop = 0x80 }
シーンオブジェクトををこんな感じのインターフェイスにして、
private LinkedList<IScene> sceneStack = new LinkedList<IScene>();
private void OnUpdate()
{
var node = sceneStack.Last;
var result = SceneResult.StackTop;
while (node != null)
{
var scene = node.Value;
result = scene.Process(result);
node = node.Previous;
}
}
毎フレーム呼び出す。
ポーズ以下のUpdateを抑制したりするときはシーンの戻り値にSuppressUpdateフラグ立てておく、とか。
>>76 マジックナンバーも本人が把握できてれば別にいいと思うけどなぁ。
79 :
デフォルトの名無しさん:2010/10/18(月) 12:08:28
enumの型指定(: byteとか)は特に理由が無い限りはやらないほうがいいよ
MSのガイドラインで非推奨だし、その使い方だと特にメモリの節約にもならないだろうし
ベースがintであることを前提にできたほうが扱いやすい
>>78 なぜダメかと言うと、本人も把握できなくなるからだ
81 :
デフォルトの名無しさん:2010/10/18(月) 16:21:00
把握できるかどうかは置いといて、わざわざマジックナンバーを使う意味がわからない
state = 10; //ゲームオーバー画面へ
と書くんだったら(コメントくらいは書いてると信じる)
state = GameState.GameOver;
と書いた方が楽じゃん
どう書いたら楽かどうかは個人差あるからなんとも言えんな
VisualStudioはemunで列挙した文字列に色とかつけてくれたっけ。
プログラムとは少し違うんですがXNA関連で質問です。
xna creators club(サンプルがおいてあったサイト)が
app hubというサイトに変わっているようなのですが、
目的のサンプルを見つけきれません。探し方を教えていただけないでしょうか?
educationのcontent catalogにサンプルがおいてあるのはわかったのですが、
カテゴリを絞る検索手段のみで文字列での検索手段がありません。
全文検索はあるのですが、フォーラムなどが引っかかってしまいます。
公式サイトの質問なら公式フォーラムで聞いたほうがいんでない?
書き込み少ないからさ。。。
すみません。XNAってモデルファイルを動的に読み込むことってできないのでしょうか?
おまえならできる
動的にの意味が分からない。起動時じゃなくて必要になったときに初めて読み込みたい
という意味なら、必要な時にContentManager.Loadを呼ぶだけ。
コンテンツパイプラインを通したくないなら、読み込む処理を自分で書く必要がある。
その場合ModelMeshは使えないと思うので自分でメッシュクラスとモデルクラス自作。
お勧めはできない。
えー
じゃあMMD作れないじゃんorz
PCで実行するなら普通に生ファイル読み書きすればいいだろう
PCで実行します!
カス子使ってるニンジャチョップみたいのはどうやってるんだろう
だから普通にファイルから読み込む処理書いて自前で描画するだけ。
XNAのModelは使えないけど、どうせMMDの仕様に合わせて
そこらへんの自作は必要でしょ。たぶん君にはそれは無理だけど
MMD for XNAというのがあるらしいから試してみたら。
なるほど。Xファイルを自分で解析して頂点バッファを作って
プリミティブに描画するってことですね
95 :
デフォルトの名無しさん:2010/10/20(水) 17:08:36
TimeSpanで時間を表示するとき、
(時間:分:秒.ミリ秒7ケタ)ではなく、
(分:秒:ミリ秒2ケタ)で表示することは可能でしょうか?
可能だけど、今はToString()かな?
String.Format使うとか
メッシュってどういう単位でしょう?
メタセコに球と立方体を置いたとすると
メッシュが2個ってことでしょうか?
>>97 髪の毛を一部脱色して白くする奴居るだろ?
あのような単位だよ。
ギルガ!
.NET4ベースなの?驚きだな
360やWP7のCLRって2.0ベースだったはずだけどそこらへんはどうなってるんだろう
何処をどう読んだらそうなるの?
上
>XNA Game Studio 4.0 includes the XNA Framework 4.0,
> which is a set of managed libraries designed for game development
> based on Microsoft .NET Framework 4.
雛形にあるUnload()メソッドはどんな時に使うんでしょうか?
ドット絵の見下ろしアクションゲーの製作序盤なのですが、登場キャラを
増やすにしたがってUnloadしてメモリの空きを確保するようにしないと
重くてどうしようもなくなったりしてしまいますか?
ガベージコレクションという機能で自動的にメモリを最適化してくれる
という話もききましたが。
自分でUnloadContentを呼んではいけません。必要な時に勝手に呼ばれます。
コンテンツの管理はステージ単位くらいでいいと思います。そんなに心配する必要はありません。
>>106 ありがとうございました。
メモリ管理のことも安心しました。
そういえばインディーズゲームを遊んでて処理オチとかみたことないね。
そりゃ個人レベルのしょぼいゲームで処理落ちしてたら話にならんわ
処理落ちの原因なんてほとんど描画なんだからC#だろうと関係ないし
360上でさえ快適に動けばいいんだから当たり前。
PCゲームと違って、試作品を実機で動かしてみてガクガクなら確実に他の環境でも同じなんだから調整が簡単。
XBLAのスコットがクオリティ高すぎて製作中のゲームがカスに思えてきた。
もっと練り直すわ。
112 :
デフォルトの名無しさん:2010/10/26(火) 15:26:56
>>96 今はspriteBatch.DrawStringで表示しています。
113 :
デフォルトの名無しさん:2010/10/26(火) 16:33:43
>>96 String.Formatを使うことで(分:秒:ミリ秒)で表示することができました。
ただ、分と秒は2ケタで表示されるのですが、
ミリ秒のところだけ3ケタで表示されてしまいます。
4.0にしたらFromFileがなくなってて参考書全く役立たずで涙目
>>113 var ts = new TimeSpan(0, 0, 12, 34, 567);
var dt = new DateTime(ts.Ticks);
var str = dt.ToString("mm:ss:ff");
書式指定使うならこうかなあ。本来間違った使い方だけど。
.NET4ではDateTimeにしなくてもTimeSpan.ToStringにフォーマットを直接指定できるようになった。
>>114 そんなもん使ってる参考書が悪い
4.0に移行した奴ってどんだけいるんだろ
シコシコ作ってる奴は面倒くさくて移行しないし
作ってない奴は情報不足で玉砕するし
海外フォーラム読める奴は楽勝なのか?
時間が解決してくれる
なんで移行しないの?
ついでに公式フォーラムで2.0を使ってる人がいて不思議なんだけど
英語ダメで新しいもの好きでもないような奴がXNAなんかに手を出すのがもとより間違ってる
何か作るには時間がかかる
時間がかかるとバージョンアップする
バージョンアップして移行がスムーズに行く事は余りない
何も考えずバージョンアップする
↓
移行は当然の如く上手くいかない
↓
3.1に戻すにも.NETやらVSやら変ってて綺麗に戻らないんだろうな
↓
めんどくせーからこのまま行くか←いまここ
>>118 今のままで、ちゃんと無難に製作すすんでるのに
変な不具合のリスク負いたくないし、それに見合ったメリットもないだろうと
>>119 Xboxのゲーム作れるっていうのだけが動機だもの。
デザエモン、ツクールの次がXNAだっただけ。
ソースのバージョン管理ツール使っていれば気軽に移行できる
前バージョンけさなくていいし、いつでも戻せるし差分も取れる
年内に発売できない人は4.0にしろとか書いてあったけど、
色々変更を余儀なくされそうで面倒だなぁ
ただでさえ少ない情報が更に当てにならなくなるからな
入門系の情報なんか殆ど死ぬし
そんなに違うものなの?
どうせ肝心のプログラムはかわらんのジャロ。
再up再審査になるとか?
そんなの提出直前に4.0にコンバートすりゃいいんでそ。
130 :
デフォルトの名無しさん:2010/10/29(金) 17:54:27
何も考えずバージョンアップする
↓
移行は当然の如く上手くいかない
↓
3.1に戻すにも.NETやらVSやら変ってて綺麗に戻らないんだろうな
↓
めんどくせーからこのまま行くか
↓
129「そんなの提出直前に4.0にコンバートすりゃいいんでそ。」
↓
めんどくせーからこのまま行くか←いまここ
WinとXboxを統合的に開発させようという仕様がまず間違ってる
そのくせころころ仕様変わってVS入れ直し強制
Win版XNAとXbox版XNAに特化してもらったほうがまだマシ
極めつけはバージョンアップすると以前の機能が使えない?
アホかと
>>131 おまえがアホ。
統合開発可能だからWin上とXbox上の両方で容易に動作確認ができるんじゃねぇか。
基本仕様はあんまかわってねえよ
統合優先で入門サイトやらなんやらに頻繁に出てくるような処理も平気で切り捨てるけど
Xbox360固有の機能がある以上、両プラットフォームで容易に動作確認などという幻想は既に崩れ去ってるんだよ。
統合と称して「Windowsではvfetch使えないからXbox360からもvfetch削るか」と言っているようなものだ。
バックに色つける機能つかないかなぁ。
「ここからここまで当たり判定の処理」みたいなのがわかりやすいように
バックに色つけて判断しやすくなったらステキじゃないか?
137 :
デフォルトの名無しさん:2010/10/30(土) 21:32:14
全然金にならないXBIGなんかどうでもいいので
DirectX11/SM5.0に対応してください
XNAは好きだし、.NETから今更戻りたくないし
いつまでWinとXboxで足の引っ張り合いしてんの?
あっちを立てればこっちが立たずみたいな
>>136 プリミティブで描画
GameComponent作っとけば楽だよ
>>137 SlimDX使え
XNAなんかに期待するだけ無駄だぞ
slimdxって入門サイトがないから困る
1ドル80円の円高
80〜400MSPでしか売れない
二重課税
vectorで1000円でPC版を売った方が金になるというインディーズゲームの現実(^w^)
金のためならiPhone以外は無理
>入門サイトがないから困る
ゆとりワロタw
やる気がないだけだろ
調べろカス
Mac買ってObjective Cなんてやりたくありませーん
iPhone ももう無理だよ。
いまやレッドオーシャンにもほどがある。
slimdxいいなこれ
コンパクトだし、バージョンアップも容易
何も考えずバージョンアップする
↓
移行は当然の如く上手くいかない
↓
3.1に戻すにも.NETやらVSやら変ってて綺麗に戻らないんだろうな
↓
めんどくせーからこのまま行くか
↓
129「そんなの提出直前に4.0にコンバートすりゃいいんでそ。」
↓
めんどくせーからこのまま行くか
↓
SlimDXに乗り換える
↓
何も考えずバージョンアップできる(゚д゚)ウマー
↓
氏ねよXNA←いまここ
Objective Cって入門サイトがないから困る
XNA4.0って入門サイトがないから困る
4.0は入門サイト見てさあ始めようってやつが玄関先で躓く仕組みになってるからな
英語フォーラム読めない奴以外は3.1推奨
154 :
デフォルトの名無しさん:2010/10/31(日) 15:22:58
答えられるなら答えたいが2Dしかわからぬ。
たぶん3Dやってる時点で僕なんかより技術あるんで答えられぬ。
Zuneも書くから3.1は抜けられないけど、4.0と行ったり来たりすると
ちと混乱するなw
Zune(笑)
Zuneは日本にこねえしな。
wP7にいたっては来年末までこなそうだし。
ZuneはインディーズのDLもできるの?
できるなら海外での売り上げうpにつながるから(笑)とはいっとれん。
4.0で非サポートになったのに売り上げうpとかw
>>159のようなゲームを作って売ったこともないワナビーがXNAを支えているのだなぁ
まだそこら辺のアナウンスはでてないだろ。
でもMSのAppStoreを中心にPC、WP7はてんかいするかもしれないね。
360はやっぱ別市場になるのかな、わからんけど。
>>160 XNAはそういう層にアッピルしたんだから当然さぁ
XNAでヒット作はどのくらい売れてるの?
例外的なヒット作はすごいらしいしそうじゃないのはほとんどスルーされてそうだし作品規模にもよると思う
ドラクエっぽい骨RPGは3万いったそうだね。
>>167 Breath of Deathのことかと
英語だからプレイしにくいがとてもとてもドラクエっぽい
2Dシューティングで、デススマイルズのような
「当たっても死なないが押し返される地形」を作りたいのですが
どのような方法があるでしょうか?
BoundingBoxで触れた方向をチェックすることはできないでしょうか?
>>169 スーパーまりオクローンのソースでも眺めろ、
聞く前に調べろこのカスが!
ゲーム作りで学ぶ〜のピンポンのに当たる位置を調べるのがあった気がするなあ
まず地形無しで作れよ
DirectXで描画するウィンドウってひとつしか作れないでしょうか?
レスありがとうございます。
>>171 ブロック崩しに斜めヒットの判定をチェックするのがありました。
これの応用で左側にヒット状態=右に進めない(または移動させる)
上側にヒット=下に進めない(または移動させる)
のようにできる気がしてきました。
>>172 既に触れるダメージをうける地形まで作ったところです。
でもFC版ドラえもん魔境編のように重なることができてしまうので
押し返しにトライしてます。
176 :
デフォルトの名無しさん:2010/11/06(土) 19:45:33
アルファチャンネルのあるビルボード(たとえば木のテクスチャ)を何枚も重ねると後ろが矩形状に抜けてしまいます。
これを回避するにはZソートを使うとよい、とネットで調べて分かったのですが、
以下のソースを実際にどのようにいじればZソートができるのかがわかりません。
ご教授お願いします。
foreach(ModelMesh m in model.Meshes){
foreach(BasicEffect e in m.Effects){
e.EnableDefaultLighting();
e.World = Matrix.Identity;
e.View = Matrix.CreateLookAt(new Vector3(0, 10, 10), Vector3.Zero, Vector3.Up);
e.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4, 4f / 3f, 10, 1000);
}
m.Draw();
}
>>175 特定範囲の内部に入ったら
範囲の法線の向きに自機に力を加えればいいんじゃないの
>>177 なるほど、そういう考え方もあるんですね。
計算式は難しそうですが成功すれば配置しやすそうです。
チャレンジしてみます。
179 :
デフォルトの名無しさん:2010/11/10(水) 03:50:35
XNA4.0に3.1で作ったビルボードを移植したんだが
アルファ付PNGの透明部分が、しっかり抜けるときと、抜けない(背景色で塗りつぶし)ときがある
どうも、描画順番によるものだということがわかったのだが
3.1のきはこの辺考えなくてもよかったけど、4.0では距離順にソートしないと駄目とかになったの?
それとも、なんかオプション増えたの?
教えてください
オプションだいぶかわったべ
3Dゲームの壁や障害物(長方形)の当たり判定で悩んでます。何か良い方法はありませんか?
BoundingSphereのようにメッシュを利用出来れば簡単そうなのですが
BoundingBoxでメッシュを使う方法がわからなくて……
すげー根本的っていうか、基本的な部分な質問ですまないんだけど
グラフィック関係を扱っていると繰り返し出てくる
GraphicsDeviceクラスって何を表してるの?
グラフィックなデバイスだけら、グラボやグラフィックメモリのことかと思ったんだが
なんか違うような気がする。
イメージつかむのにアドバイスください
>>182 解像度やアスペクト比の設定から2D/3Dグラフィック描画環境の構築まで
グラフィック関連の主軸となる要素を担うクラス、ってことでいいんだろうか・・・・・・
正直、ブラックボックスというか呪文みたいなものだから俺も詳細とか知らないで使ってるんだよね・・・・・・・
>>183 回答サンクス
よくわからんけど使える、グラフィック関係の何かって認識程度で
今のところ支障がないっぽい
面倒臭かったけど 4.0 になんとか移行した
ストレージ絡み微妙に変更とか、まじ勘弁して欲しいわ
>>185 まだC#でオタオタしてるレベルだから逆にダメージ低そうなオイラ
>>185 俺も移行完了。
Modelの頂点情報の仕様変更が面倒だった。
あと、PointSprite廃止とか。
これで、しばらくは移行しなくていいし、まったり。 (´ー`)y━~~
移行したいけどWindows 7持ってない
働いて、買えば?
私にはそのくらいしか答えてあげられません
XNA3.1での質問です
新規プロジェクトに
public Texture2D test()
{
RenderTarget2D temp = new RenderTarget2D(graphics.GraphicsDevice,
100, 100, 1, SurfaceFormat.Color);
graphics.GraphicsDevice.SetRenderTarget(0, temp);
graphics.GraphicsDevice.Clear(Color.Gray);
graphics.GraphicsDevice.SetRenderTarget(0, null);
return temp.GetTexture();
}
って関数ついかして
Draw(GameTime gameTime)で呼んだら画面が紫色になりました。
バックグラウンドを勝手に塗りつぶしてほしくないのですが、どうしたらよいですか?
萌えキャラ使ったローグライクなゲーム作ったら
それなりに日本で売れる気がする
ローグゲーを箱でやるの?ボタン足りるの?
>>191 やるなら「おでかけダンジョン」みたいなやつだろうな。
プログラムはそこそこめんどうくさそうだ。
ローグといえばメモリやCPUの乏しかった時代のパソコンゲームだったという印象はあるな
>>188 WindowsPhone7 用に何か作るの?
でなければ XP でも 4.0 いけるけど
196 :
190:2010/11/19(金) 04:47:23
>>190は自己解決しました
GraphicsDevice.SetRenderTarget()はDrawで呼ぶんじゃなくて
Updateで呼ぶのか・・・・
>>196 自己解決しても解決策おいていってくれる人って好きよ(はぁと)
球体モデルの当たり判定は「Model.Meshes[0].BoundingSphere」で簡単に作れたんですが
平面や四角形はBoundingBoxを使って自分でサイズ指定する以外に当たり判定を作る手段はないのでしょうか?
199 :
デフォルトの名無しさん:2010/11/21(日) 15:50:23
XNAのKINECT対応はいつですか?
対応されたとしてどうやって作ればいいのか見当がつかないな
ひさびさにwktkする題材だよな
この為だけにクリエイターズクラブとやらに登録するわ
MSXで投稿してた頃を思い出すぜ
Kinect、ゲームで使うのは難しそうだけど、
モーション作成とかに使えれば面白そうだなーと思う
Xbox360でモーションデータを作成するとしてパソコンに持ってくる方法ってある?
せめてネットにアクセスできればいいんだけど。
204 :
デフォルトの名無しさん:2010/11/21(日) 22:04:21
XNA3.1のStorage系って、結局Guide使えないと使えないのかな?
・XBOX360インディーズゲーム
・XNA GS入れてないWindows(対象はVista以降)
の両方で動くアプリを作っているんですが、後者はGuideが使えなかったような…
kinectをいかせるのは3Dなんじゃないかなぁ。
企業なみに技術力ないXNA初心者で扱えるシロモノなんじゃろか。
できるならすごい興味あるんだけどね。
KinectってUSB対応だし、
Windows版のXNAでも使えるのを期待してみたいw
XNAでGT5みたいなのつくってみたいです。
208は「USBだからって使えるっていう単純なモノじゃねーだろ」という
含みをこめて言ってるのか、それとも質問なのか
仮にもプログラム板での発言だぞ
後者はたまによくいるくらいだろ
テクスチャ付ポリゴンを DrawPrimitive で描画してるのですが、
ストリップで4頂点で四角形を描画しています。
その4頂点を それぞれずらすと、ポリゴンの繋ぎ目 真ん中に / のような感じでテクスチャが歪んでしまいます。
歪ませないようにはどうすればいいでしょうか?
XNA 3.1 で BasicEffect を使用している為、シェーダーを使わないで解決する方法を探してます。
どこかいいサイトなどありましたら是非教えてください。
よろしくお願いします。
>>212 なんか勘違いしてないかな AABB って書いてあるよ
凸凹表現ではなくこの箱はポリゴンごとの詳細チェックを枝刈するものだよ?
で レイピックみたいなのはなかったと思うな
そんなんあったらいいけどね
>>212 私はランドスケープによる当たり判定してます。
ほとんどの人がこの方法じゃないかな?
1.当たり判定用の地面を三角ポリゴンのみで作る。
2.Model(4.0ならMeshPart)から頂点データを取り出す。
3.調べたい場所のXとZ座標から、全ての三角形の内包判定。
4.当たっていたら、そのポリゴンとの交差する高さも計算する。
その高さにキャラを移動させれば、地面の凹凸に合わせて移動させられる。
当たっていなかったら、行き止まりにする。
私は内包判定とかは、自前で計算してますが....。
XNAのRayとかで、ライブラリを使って判定することもできるはず。
>>213-214 自分の知らない用語が山ほど・・・・・・
今までBounding〜を使うことしか頭にありませんでしたw
ええと、まずは頂点データを取り出す方法と内包判定の計算方法から調べてみます。ありがとうございました!
多分、衝突判定についてちゃんと勉強した方がいい。
App Hub に Reactive Extensions の項目が入ってるね。中身はないけど・・・
ランドスケープは建物の中のときは適さないよね。
エースコンバットみたいなゲームならランドスケープが楽チンだね。
>>215 AABB はXYZの軸に沿ったBoundingBoxのことだよ 軸に沿うから回転しないのね。
で、そのモデルを内包するようにオフラインで最大最小頂点求めて作るんだ。
だから槍とか、しなった刀とか斜めってる細長いのは、ロスがデカイんだ。
そこで、OBBってのがあってね…って言ってると限がないので、ググればすぐ見つかるよ。
内包はXNAにあるからそれ使えばいいと思うよ。
問題なのはきっとレイ(直線)だね。
表裏判定も決めなきゃいけないし、貫通したときにヒットしたポリゴンで最も手前を取って交点を求めたり、
内包されてて交点がない場合とか、結構メンドクサイよ。
DirectXだと、それをやってくれるレイピックって関数があるんだ。
XNAにはないんだよねー。
だ…誰かテクスチャの歪みの対処方法教えてくれないかなァ…
219 :
214:2010/11/26(金) 08:05:50
>>218 AABBとOBBか....。(初めて聞く言葉です。)
ランドスケープと回転してない直方体(球)ぐらいしか当たり判定を
してこなかったから、大変参考になります。
220 :
デフォルトの名無しさん:2010/11/29(月) 00:00:40
XNAのAABBとかRayって参考サイト少ないなぁ・・・
誰か地形の当たり判定を実装する為の良いサンプルソースとか解説サイト知りませんか?
ハイトマップの衝突ならapp hubにサンプルあるね
落ち着け
やれやれ
自分も当たり判定の処理で悩んでます……
1.キャラクターの眼前にRayを飛ばす
2.Rayとマップモデルの三角ポリゴンとの衝突判定
3.衝突したら三角ポリゴンの高さを調べる
4.高さが一定値以下だったら段差、一定値以上だったら壁として移動処理
と、いう処理をマップモデルと衝突判定を取る方法として思いついたんですが
2と3をどう処理すれば良いのかがわかりませんorz
それだと超ローポリ(一面が三角2ポリゴンの四角形とか)のモデルにしか使えなくね?
まあ、箱と球以外の当たり判定は俺もさっぱりなんですがねw
レイと三角ポリゴンの交差判定はちょこちょこ挑戦してるんだけど
VertexBuffer型とIndexBuffer型にモデルメッシュからデータ取得したところで止まってるなぁ・・・・
個人的には基本EASYなXNAの中ではかなり難易度の高い処理なんじゃないかと思ってたりするんだけど
サンプルソースや解説サイトをほとんど見かけないってことは、単に俺がノータリンなだけなんだろうかw
三角2ポリゴンってなんだw
一面を三角ポリゴン2つで構成した四角形ってことですスイマセン
>>227 >サンプルソースや解説サイトをほとんど見かけない
まず殆どマップ衝突判定のソースはないだろうね
うちはSlimDXのRay/Triのコリジョン使って2〜3日程でマップ移動の壁・床システムを自力で作った
もちろん、XNAにも流用できると思うけど
Ray/Triでは距離(distance)を取得できるからこれを利用するのいいのかな
230 :
214:2010/12/02(木) 05:39:46
>>226 ランドスケープなら、真下にRayを飛ばせばできます。
ランドスケープと内包判定などで検索するといくつか情報出てくるみたいですが、
私が作ったときより情報が減ったような?
内積を使って判定します。
壁の高さが必要ないなら、みつからなかったら壁にしたほうが速度が速くなると思います。
>>227 当たり判定は、表示モデルとは別にローポリで作った方がいいと思います。
私の場合は1200ポリゴンのコリジョンモデルを使っています。
(エリア分けするので、けっこうハイポリな巨大なマップでもいける。ポリゴン密度が同じならコストは変わらない。)
エリア毎に最初に分けるので、速度のコスト0(メモリに負担がかかる。4MByte程度)で、12ポリゴン程度にまず絞り込みます。
そこから、12ポリゴンを総当りです。
XBOX360のシングルコアの60フレで1フレーム50〜60箇所、30フレで120箇所程度の当たり判定ができています。
(背景表示、15程度のスキンモデルも同時に表示している。)
マルチスレッドにすればもっといけそうですが、試していません。
GCのF-ZERO-Xは、50台のマシンが60フレで動いてたけどどうやって当たり判定とってたんだろう?気になる。
XBOX360と比べたらかなり速度が厳しいと思うのだが。
231 :
214:2010/12/02(木) 05:44:54
>>230 4MByteは飽くまで参考程度で。
たぶんこんなにかからない。
体感ではそのぐらい増えたような気がするんだが....。
232 :
214:2010/12/02(木) 06:26:34
>>230 かなり大きめのマップ、地形とスキンモデルのシャドウ表示(セルフもあり)、
また地形とスキンモデルにノーマルマップを使用しているので、
1フレーム当たりの地形判定は、2倍程度の速度が出せるはずです。
実験はしてませんが....。
速度は参考程度で。
233 :
281:2010/12/02(木) 22:30:42
>>229-232 レスサンクス。
通常マップの上に衝突判定用マップ重ねて
>>226っぽい処理すればいいのかな?
VertexBufferとIndexBuffer抜き出して内積計算するんだと思うんだが、中身がNULLで使い方がわからないという・・・
取り出し方って「VertexBuffer VertexBuffer = Model.Meshes[0].VertexBuffer;」で合ってる?
ランドスケープってば XZ から対象ポリゴンを絞って比率というか線形補完で高さを求めるんじゃなかったっけ?
レイで平面上に投影しても同じかな
ここでいうランドスケープは モデリングされた地形のことなのかな?
僕はハイトマップとかで作るものを想像しちゃうなランドスケープは
通常のマップってのがよくわからないけど描画モデルのことなら そういうことだと思う
描画モデルはハイポリ 当たり判定モデルはローポリだと思う
そもそも当たり用は見えないし ポリゴンたくさんあったら探すのに時間かかるだけだもんね
精巧に判定が必要なら しょうがないけど 作るもの次第かな
235 :
214:2010/12/03(金) 05:31:13
>>233 foreach (ModelMeshPart mesh_part in mesh.MeshParts) {
VertexElement[] vertex_format;
vertex_format = mesh_part.VertexBuffer.VertexDeclaration.GetVertexElements();
vert = new VertexPositionTextureNormalBinormalTangentColor[mesh_part.NumVertices];
mesh.MeshParts[0].VertexBuffer.GetData<VertexPositionTextureNormalBinormalTangentColor>(vert);
index_data = new short[mesh_part.IndexBuffer.IndexCount];
mesh.MeshParts[0].IndexBuffer.GetData<short>(index_data);
}
私は上のような感じでとってます。
2〜3行目は頂点フォーマット確認用の為だけなので、
頂点フォーマットがわかっているなら必要ないです。
>>234 モデリングされた地形のことをランドスケープと思って話していました。
どっちが一般的なのかはよくわからないです。
236 :
214:2010/12/03(金) 06:11:58
>>235 GS4.0での場合です。
GS3.1は別の場所に頂点データがあります。
正確な場所は失念。
237 :
214:2010/12/03(金) 06:29:43
>>235 foreachのループ意味ないですね。
最初と最後の1行は削除してください。
バグみつけてしまった。 orz
238 :
214:2010/12/03(金) 06:32:32
>>237 いや、mesh_part使ってるのか。
でも、mesh.MeshParts[0]でアクセスしてるし....。
適当に調整してください。
>>230 GCのF-ZERO-Xは知らんけどね
厳しいのなら50台あっても全部判定してないんじゃないかなぁ
プレイヤの見える範囲だけとか そもそも球体でやってるんじゃないかな
簡単で早いでしょ sqrt 使わなきゃ
地形のことかな? 僕なら当たり判定という処理はしないな
やるなら動ける範囲内かどうかのチェックをすると思うな
プレイヤが居る床は最初に決まってるわけだから おのずとそれに隣接する床もわかるからね
すると当たりようのポリゴンを探す必要がないと思うんだ
後は法線で面の上に乗ってるかだけ見ればいいんじゃないかな?
2枚以上のテクスチャを重ねて1つのメッシュに張る方法としてどんなのがあるだろ?
とりあえずRenderTarget2Dを使う方法を考え付いて試したんだけど
1フレームに複数回呼ぶと、FPSがすごい勢いで下がるので使えんかったよ。
1回だと問題ない(FPS60)のに、2回だと急にFPSが10以下とかになるんだよな。
で、別の切り口とかあったら教えてほしいのだけど、よろしくお願いします。
ピクセルシェーダ使う
格闘ゲームなどにある「ヒットストップ」のようなものを
実装する(エフェクトも含め画面全部の更新を数フレームストップ)場合は
どのように処理するのが一般的でしょうか?
244 :
デフォルトの名無しさん:2010/12/16(木) 10:04:46
VC#2008で
fxファイルを編集していますが、
コメントアウトや、予約後などが色分けされません。
単なるテキストエディタのようになっており非常に見にくいです。
どうすれば、色分けされるのでしょうか?
intelishadeでggr
開発止まっちゃったんかな、サイト消える前の開発状況見てかなり期待してたんだけど
>>243 その間動かさなきゃいいだけだろ
描画や更新を止める必要はない
>>244 キーワード強調表示ができるテキストエディタ使えば?
本格的にやるならFX ComposerやRenderMonkey使うし
需要がないんでしょ
>>246 ありがとうございます。
独自に時間を加算していたメソッド外に全処理を一時的に飛ばすことで
解決しました。
>>250ですが具体的には
ステージ1のメソッド{時間計測変数int timeStage1++}
ヒットストップ用のメソッド{int hitStop++}
みたいなそれぞれの状態の時間を保持する変数を1フレームごと増加させて
でヒット状態のときヒットストップ用のメソッドにとばしてhitStop変数が
4になったらステージ1のメソッドに戻す、という。初心者考えだから
スマートじゃないと思いますが、ポーズでメニュー開くのもだいたいこんな
感じですよね、きっと。
長文気味になりますが、失礼します。
現在2Dのシューティングを作っているのですが、教えて欲しいことがあります。
2Dの画像の回転なのですが、どういう風にやればいいでしょうか。
大元になるものは学校で教師が作ったもので、一通りやりたいことはできるものらしいのですが、
質問した際には、public class Sprite(別のクラス内)というところにある
public void SetDestAngle(Vector2 center, float angle)
{
origin = center;
rotation = MathHelper.ToRadians(angle);
}
という記述を回転させたい画像に組み込め、という風に言われたのですが、
どこに追加すればいいかよくわからなくてうまくいってません。
プログラム云々に関する知識が足りないと思っているので、しっかりと説明できているかわかりませんが、
どうかよろしくお願いします。
それで判らないなら
もう回転させた画像用意しろよ
そんな知識でゲームつくるな
>>253,254
すみません、自力でできました。
スレ汚し失礼しました。
どう解決したのか書いてないから嘘だろね。もう来んなよ
でも確かにSpriteBatchに限らずXNAは引数の意味やオーバーロードが分かりにくい気はする
いかにもDirectXらしい悪いところを真似してる感じ
MSだもの
げいつ
素でわかりにくい上に色々切り落としていくから更にカオスに
元が悪いものを叩き上げていいものに見せようという発想はセガに通じるものがある。
ポイントスプライト速え!うひょー
とか言って楽しんでたのに4.0の野郎・・・
DrawIndexedPrimitiveややこしいわかんね氏ね
ラーニングんとこのサンプルは低脳でもわかるようシンプルにして頂きたい
だな 理解するために用意されたシンプルなサンプルであって欲しいと思うよ
俺は XNAのガチガチのスプライトがなぁ…
テクスチャと座標の4頂点自由に設定したくなったら 正射影で頂点バッファとかポリゴン描画になって一気にメンドくさくなる
たぶんこれ だいたい作る羽目になると思うけどな
それをみんながやらなくていいように用意したのがライブラリだと思うんだがなぁ
嫌なら使うな とか言ってるとますます過疎っちゃうな
タダなんだけどな… 最近はUDKとかがゲーム作るには楽そうだなぁ
>>263 俺はもうVS1.1で解決させちゃったなそれw
なんなら、ここに貼ってやろうか?
>>265 ありがとう! やっぱシェーダー使うんだね
オイラは BasicEffect 使ってたよ
機能的にも特別なことする必要なかったからなぁ
screenPos -= 0.5f;
float2 result = screenPos.xy / ScreenSize.xy * 2 - 1;
*2 はハーフサイズになっちゃうから2倍にしてるんだろうけど
0.5 と -1 はなんだろう?
-0.5 は正規化座標系のセンタリング?
>>266 ここで言うスクリーンポジションは正規化空間なのか
だから
>>265 のも正規化しちゃうんだね
BasicEffectでもWorld,View,Projectionが単位行列なら、
vertexの座標を同じ式で弄れば行けハズ。試した事ないが
>>266と
>>267は式変形すれば解るが縮尺は同じ式
(267は上下反転するかな?)
あとはここの内容
ttp://msdn.microsoft.com/ja-jp/library/bb206341(VS.85).aspx
>ビューポートのクリッピング ボリュームの範囲は、X 方向につい
>ては -1.0 〜 1.0、Y 方向については 1.0 〜 -1.0
とあるが、ハーフサイズ?とか何処かでそう言う説明の仕方されてるなら
わかってるかな?
-0.5は、ドット単位だと(-0.5,-0.5)ずれるから必要。
これは公式にも無いかもしれない。
269 :
268:2010/12/21(火) 12:54:48
ごめんレス番間違い
上下反転する 266
上下反転しない 265
上下反転はスクリーン上だとYが下に進むと+になるからね
ドットずれかぁ
どおりで 0.5減算でセンタリングだとすると 正規化前に減算してるから座標系が合わないからおかしいなぁと思ってたんだ
ピクセルのレンダリング中心が0.5にあるってのは なんかで聞いたか見たことあるな
バイリニアの巻き込みのやつだったっけかな なんかで見たよ
で -1 で減算してるのが -1 〜 1 のセンタリングなんだね
なるほどなるほど
やっと把握できた 丁寧に説明してくれて ホントありがとう!
サラっとわかるように僕はもっと勉強しないとな
271 :
デフォルトの名無しさん:2010/12/24(金) 17:01:52
すみません質問です。
BoundingBoxを使えば当たっているかの判定ができるところまで調べたのですが、
当たっている方向を調べるにはどうすればいいのでしょうか、例えばマリオの?ブロックとか
当たる方向によって乗ったりぶつかったりコインが出たりしますよね、あんなのがやりたいんですが。
とりあえず考えたのは、6面全部別のBoundingBoxを使う方法ですが、
6倍当たり判定をやるのはさすがにまずそうなので
何かいい方法があったらお願いします
>>271 移動してるほうの進行ベクトルじゃダメなの?
>>272 斜め上にジャンプしてる時とか
下にも横にもぶつかりうりますよね?
>>273 え? ん?
だから進行ベクトルなんだけど?
なんか言葉の勘違いかもしれないので…
最終的には移動方向の進行ベクトルは1本のベクトルになるよ?
?んーわかんないです。
>最終的には移動方向の進行ベクトルは1本のベクトルになるよ?
移動方向への進行ベクトルってのは
>>273でいう斜めってのとは別ものですか?
横からだがw
> ?んーわかんないです。
もうこの人には何言っても無理な予感w
すいませんもうちょっと勉強して出直します
いやAABB同士の衝突ならどの面に当たったかは進行方向だけじゃ分からないだろ
>>271 俺もあんま詳しくないけど、
X方向への食い込みが大きければ横から、Y方向への食い込みが大きければ下から
ってことにするんじゃなかったっけ?
それも進行方向によるでしょ
えっと 「衝突」ってのはさ
基本的に どちらか または 両方 が動いているからぶつかるんであって
動いていないと ぶつかることはないんだよ?
動くってことは進行方向があるってことでしょ?
もし最初から重なってるなら それはただ進行方向ゼロのベクトルってだけじゃない
>>275 「ベクトル」という定義そのもの自体を調べてみてよ きっとわかると思うよ
AABBは ただ内包する軸に沿った箱だから形状が大雑把になっただけでしょ?
方向とは関係ないと思うんだけどな
AABBだと、面だけじゃなく線と点の衝突もあるような
□→◆
マリオが例に出てるんだから普通のバウンディングボックスなんじゃないかなぁ
マリオの例だと斜めは移動方向だけど、
上に大きく右にちょっとジャンプしたからといって下からぶつかるとは限らない
なので衝突時の際の各ボックスの中心間のベクトルを考えればいいんじゃないかな
移動は離散的だからこれで完全じゃない(例:移動が超高速)けど
その辺の細かい所はわからないや
それ逆
AABBが軸に沿ったバウンディングボックス。XNAのBoundingBox構造体はAABB。
衝突した面を求めるなら中心間のベクトルじゃダメだよ。
■のどの面に□が衝突したかを中心間のベクトルの方向で調べるとすると、
□□
■
は上側に衝突してるけど
□□□□□□□□□□□□□□
■
は右側になっちゃう
俺も相対ベクトルだけでも良いような気がするな
けど、AABBとかどこで使うか解らないや
教えてえろいひと
なるほど、ほんとだわ
難しいな衝突判定わ
>>282 >□→◆
これって AABBじゃないと思うんだけどな…
ちょっと逆に教えて欲しいんですが
AABB で線と点の衝突ってどういうことだろう?
ま 線でも点でもどっちでもいいけど 内包すれば
ただの長方形だから 考え方に変わりはないと思うんだ
でもオイラの認識違いかもしれないから是非 教えて欲しいな
>移動は離散的だからこれで完全じゃない(例:移動が超高速)
これだけど超高速でも 単に過去の位置と今現在の位置の差分でOKだと思うけどなぁ ダメ?
>>281 進行方向が分かってもどの面に衝突するかはわかんないだろ
で、結局どうするのが正解なの?
あ、それと俺282だけどAABBとOBB勘違いしてた
AABBはただのバウンディングボックスのことだと思う
OBBは面積が小さくなるように、オブジェクトごとの軸を適切に置き換えたやつ
こっちは計算はなんか難しげ
290 :
282:2010/12/25(土) 00:06:52
>>286 このたびは、色々と誤解を招いたみたいで
>>287 進行方向に移動しているわけだから AABB だとむしろわかるんじゃない?
ひょっとして45度の完全斜めを貫くベクトルの場合 どの「面」とあたるかのこと言ってるのかな?
もともとそういう話だろ
どの面に当たるかは進行方向と重なったときの位置関係の両方の情報がないと分からん
45度の場合は実装依存だよ
たとえば右上の進行方向ベクトルとした場合
片方の箱に右上の頂点が 相手側に内包されてるAABBなわけだから
・上面が衝突したことにするか
・右面が衝突したことにするか
は 先にどっちを調べるかで結果が変わるから実装依存だよ
これについては 正解はなく どっちにするかはお好きな方でOKじゃない?
たとえ30度でも、
右にあたるか上にあたるかは位置関係がわからないと無理、って話じゃないの
>>293 斜め45度ってのは速度のベクトルのことか?
だとしたら斜め45度で箱の上に着地したら側面にぶつかるか箱の上に乗るかは実装依存なのか?
それとも頂点と頂点がぴったしぶつかる感じの事を言ってるのか?
位置も、重心の位置だけじゃダメで頂点の位置も分からんとイカンね
お前らクリスマスの夜に何やってんの?
クリスマスの夜だからさ
293だけどさ
>>295 >だとしたら斜め45度で箱の上に着地したら側面にぶつかるか箱の上に乗るかは実装依存なのか?
そうだね 実装次第だと思うよ
頂点同士がぴったりぶつかる話じゃないよ
着地ということだから右下45度の速度ベクトルとする
AABBは ちょうど正方形を考えて欲しい
*----*
l A l
l *-+--*
*--+-* l
l B l
*----*
これを見て右下の速度ベクトルである場合 どっちの面に衝突していると言える?
Aのチェック時に右の面を先に見る場合は そこで打ち切ら右面にヒットとなる
が 下面を先にチェックするとした面にヒットしたことになる
つまり どっちもヒットしている45の場合は 答えが出せない
だから好きなように実装依存だと言ってるんだよ?
ごめん 図がズレちゃったよ
正方形の角同士が同じだけ互いに内包する図のつもりなんだ
*----*
l A l
l *-+--*
*--+-* l
l B l
*----*
>正方形の角同士が同じだけ互いに内包する
そういう意味なら実装依存だろうね
瞬間移動というものがあってだな
上記の場合は ぴったり45度で同じ量だけ衝突した場合の本当にレアなケースなんだ
まぁ 往々にしてそういうレアケースがバグとなっちゃうんだけどさ
でも普段は進行ベクトルと衝突処理でマリオのは実装できる
ただ方向を処理する際にどっちが優先されるか または両方あたりにするかは実装次第ってこと
305 :
デフォルトの名無しさん:2010/12/25(土) 21:47:43
XNAの新規プロジェクトを立ち上げて、
IsFixedTimeStep = true; と書いただけでCPU負荷が100%になって、
フレームレートも54〜55辺りになるんですが、誰か原因わかりますか?
ちなみにfalseに設定するとCPU負荷は0〜1%で安定して60FPS出ます。
以下環境。
CPU: Core i3 540 / GPU: オンチップのやつ / RAM: 4GB
Windows7 64bit / XNA 3.1
CPU100%云々は分からないけど、
ディスプレイのリフレッシュレートは60ある?
その数字でFPSは頭打ちになるよ。
IsFixedTimeStep = trueだとね。
309 :
306:2010/12/26(日) 11:10:04
>>307 ごめん、ナナメ読みしてたw
SynchronizeWithVerticalRetrace = true
のつもりで言ってた。
結局、
>>305の原因は分からなくてゴメン。
310 :
249:2010/12/26(日) 18:47:35
>>308 やっぱり、メタセコ側のプラグインで再サンプリングしてる
なに考えてあんな返信したんだ
XNA3.1でポリゴン1枚を
for (int i = 0; i < 1000; i++)
{
foreach (EffectPass pass in effect.CurrentTechnique.Passes)
{
pass.Begin();
graphics.GraphicsDevice.DrawUserIndexedPrimitives<VertexPositionNormalTexture>(
PrimitiveType.TriangleList, _data, 0, _data.Length, _indices, 0, 1);
pass.End();
}
}
って感じでかいたら、1000枚程度で
フレームレート落ちてきた。
Radeon4350でも1フレーム1000ポリゴンはないだろって思うのだが
この描き方だともんだいあるのか?
まず、内部のforeachは何回まわっているのか?
あと1ポリゴンを1000回と1000ポリゴンを1回では全然違う。
>>311 ハテナから頭の悪そうな子供のエントリを持ってきて
荒らすのは辞めなさい
314 :
311:2010/12/31(金) 05:14:41
いや、やりたいことは2Dのマップチップのかわりに
テクスチャを貼った3Dの箱をたくさん並べて
それで床やら壁やらを表現したいのよ
で、プリミティブで作ったブロックをたくさん並べると
非常に重たい処理になるようで困ってるのよ
>>312 foreach (EffectPass pass in effect.CurrentTechnique.Passes)
の部分は1回しか回ってない。
試しに頂点バッファに1000ポリゴン分のデータを突っ込んで
graphics.GraphicsDevice.DrawUserIndexedPrimitives<VertexPositionNormalTexture>(
PrimitiveType.TriangleList, _data, 0, _data.Length, _indices, 0, 1000);
とか書いてループを1回にしても結果は変わらなかった。
なので、プリミティブを描画するときの負荷は1ポリゴンを1000回と
1000ポリゴンを1回では等価だと考えられる。
ただModelMeshつかっての描画の場合は10000ポリゴンぐらい平気で書いてるので
書き方で回避できるもんだいじゃないかな?と考えてる。
エスパーすると
画面スクロール時に50回ぐらいnewとディスポーズしてる
とにかく書いてるような事は
ねーよ
316 :
311:2010/12/31(金) 08:25:59
>>315 確かにnewは何回かしてるけど50回もしとらんしなぁ
Draw部分全文
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
// TODO: Add your drawing code here
graphics.GraphicsDevice.VertexDeclaration = new VertexDeclaration(
graphics.GraphicsDevice, VertexPositionNormalTexture.VertexElements);
Matrix world = Matrix.Identity;
Matrix view = Matrix.CreateLookAt(new Vector3(0, 0, 5), new Vector3(0, 0, 0), Vector3.Up);
Matrix projection = Matrix.CreatePerspectiveFieldOfView(
MathHelper.ToRadians(45), graphics.GraphicsDevice.Viewport.AspectRatio, 0.1f, 1000.0f);
effect.World = world;
effect.View = view;
effect.Projection = projection;
effect.Begin();
for (int i = 0; i < 1; i++)
{
foreach (EffectPass pass in effect.CurrentTechnique.Passes)
{
pass.Begin();
graphics.GraphicsDevice.DrawUserIndexedPrimitives<VertexPositionNormalTexture>(
PrimitiveType.TriangleList, _data, 0, _data.Length, _indices, 0, 1000);
pass.End();
}
}
effect.End();
FPS(gameTime);
base.Draw(gameTime);
}
FPSはフレームレート表示用の関数、_dataはVertexPositionNormalTextureで3頂点のみ、_indices,はInitialize()で{0,1,2,0,1,2,,,,,}って感じで3000個の配列が入ってる
317 :
デフォルトの名無しさん:2010/12/31(金) 13:20:31
xnaってマイクロソフト見捨てずに、続けると思います?
んな大したもんじゃないだろ
今必要なら使えばいい
所詮DirectXのラッパーなんだから他の環境に移行したとしても無駄にはならん
>>314 DrawPrimitivesとpass.Begin(end)は重い処理なので、
1000回もやれば、当然重たくなる。
→DrawPrimitivesはできるだけ少なく。
pass.Begin(end)もできるだけまとめて、変更回数を少なくする。
>>316 3頂点しか用意してないということは、1000回同じ場所にポリゴンを描画してるわけですよね?
つまり、Zテストがまったく機能しない状態。
ポリゴンの描画サイズはどのぐらいですか?
フィルレートが足りなくて処理落ちしてるのでは?
→Z値(優先順位)を個別に設定して、手前から描画する。
この辺を気をつければ、そこそこの速度が出るはず。
初心者なので、見当はずれなこといってたらごめん。
>>317 近い将来、Kinect対応するみたいですね。
私の予想(希望)では、
XBOX360の次世代機にも対応するんではないかと思ってます。
GS6.0とかになってそうですが。
321 :
311:2010/12/31(金) 17:13:22
>>319 乱数で頂点を生成してDrawUserPrimitives使って描画する方法では
DrawUserIndexedPrimitivesで3頂点を繰り返し書く方法とは違い
1000ポリゴンでフレームレートが落ちることが無く表示できることがわかりました。
この方法なら8000ポリゴンぐらいまで書くだけなら書けるみたい。
確認に、3頂点を繰り返し格納したものをDrawUserPrimitivesで表示すると
やはり1000ポリゴンぐらいから重たくなってきた。
ってことは、重複した頂点(またはポリゴン)の処理が非常に重たいという結論で良いんだろうか?
VertexBufferを使ってみてはどうだろう?
323 :
319:2010/12/31(金) 18:14:27
>>321 頂点が重複すること自体は、頂点が減るのでバーテックスシェーダー的にはよい事です。
(メモリと速度面で。)
ただ今回の場合は、完全に一致したポリゴンなので、Zテストがうまく機能しなくなるので、
重たくなるということです。
ポリゴン自体が重なる(完全に同じ座標ではない)ことは、Zテストが有効になるので、
速度面で有利になります。
また同一座標のポリゴン表示は、乱数で決めたときと違って、カリングできないので、
速度面で不利です。(通常、カリングすればポリゴン数は約半分になる。)
324 :
311:2011/01/01(土) 15:26:26
>>322 乱数で作った頂点なら、VertexBufferを使ったほうが少しだけ早くなった
1フレームあたりで8000→9000ポリゴンになったぐらい
同一ポリゴンの描画と変わらず。
>>323 完全一致はまずいということで、理解しました。
言われてみれば、カリングしてるのですから実際に描画されてるポリゴンは半分の
4000ポリゴンぐらいになるわけか
これで、作成方針がだいたい見えてきました、ありがとうございます。
立方体を1個づつ描画するのではなく、描画するためのバッファを作り
そこに溜め込んでから描画することにします。
しかし、バッファを毎フレーム更新するとなると、こんどはCPU負荷との戦いになりそう
>XNA Framework HiDef プロファイルに対応する Direct3D デバイスが見つかりませんでした
うぜえええ
デフォルトの設定をReachにするにはどうしたらいいんですかね
326 :
デフォルトの名無しさん:2011/01/05(水) 15:50:00
弾なんかでねーよ
プレイヤーをカメラが追跡するサンプルです
エスパーすると、
「このサンプルを弾が撃てるように改造してください」
という意味なんだろうけど、
こんな書き方する奴に日本語で説明して通じると思う者はいない。
330 :
326:2011/01/05(水) 16:35:49
>>327-329 あなたたちは黙っていればいいんです。
このサンプルを改造して、弾を出るようにした人が
どうしたかを教えてくれればいいのです。
私がこんなにしたいだから、2chでも少しはいるハズです。
黙ってろとかw
弾を出るようにしました。次の方どうぞ
333 :
デフォルトの名無しさん:2011/01/05(水) 17:25:15
326>>
弾の実装をしようしましたが、うまいこといきません。
実装しようとしたなら、それを見せるといい。コード見せれば教えてくれる可能性は高くなる。
とりあえず簡単な実装方法書いとこう。
まず、弾のクラスをつくる。
んで、Update で
プレイヤーがボタン押したら玉を出す。(List<弾> tamas にいれる。)
Draw では弾があったら描画したらいいので
foreach (var tama in tamas)
DrawTama(tama);
といった感じになるだろ。
DrawTama は自分で弾のモデル作るか、ポイントスプライトって言うのをやるかのどっちかだろう。
簡単なのは、そのサンプルの飛行機のモデルを小さくして、それを弾として使えばいい。カミカゼカミカゼ
あとは、ステージの外に出た弾を削除するだけ。
カミカゼカミカゼwww
実際ここは新人のやる気を失わせて潰すスレだからなぁ・・・
むしろXNA自体が…
C#もゲーム製作の基礎もわからないのにXNAなんかに手を出すのが間違ってる
>>336 確かに。
ここで聞くよりも公式のフォーラムとかで聞いた方が良いね
それも海外のな
XNAはゲームの作り方を知ってる人が使うにはいいものなのに
何故かゲームの作り方を知らない初心者が簡単にゲームが作れると勘違いしてるのがなあ
XNAに限らずどこでも
>>326みたいな質問の仕方したら
「もっと具体的にお願いします」としか答えられないよ…
まずどこまで言葉が通じるのか分からん
tama.Position += tama.Velocity * dt; の意味が分からないレベルなのか
それともそういうのは分かってて弾の描画が分からないのか
>>341 そういうのはわかってて基本的な構文は覚えたけど、
DirectXは触った事ありませんとか射影変換とか初耳な人はXNA向いてますか?
あなたがもし、目標を目指すなら、
向き不向きなどは心配すべきことではありません。
やるかやらないか。
本当は分かっているはずです。
AppHubのフォーラム遅ー
マイクロソフトってWEB開発経験無い奴しか居ないんじゃねーか?
おめーが就職して担当になってみろばーかばーか
ひげねこの回答読むと大概気分が悪くなる
unityに対するXNAのいいとこって何さ?
また、XNAの欠点を補える方法ってある?
欠点1.ポーティング: XNAtouch、SilverSPrite、ExEn(計画段階)くらい?
欠点2・GUIでの対話的開発: これは…なんかいいのない?
出た時期の問題もあるしなぁ。
あと、unityの方をあんまり詳しく知らないのでなんとも。
>>350 その件に関してはスプライトバッチ描画後に、
毎回Zバッファをデフォルト設定したらなんとか正常に
1000離れると消えちゃうのは、
フィールド変数で保持してるはずだった数値をローカルで宣言してたからで、
それも解消しました
が、今度は一部モデルでテクスチャが正常に表示できないんです
正直BasicEffectも良くわかってなくて何がおかしいのか
ttp://files.or.tl/up3776.png
>>351 何使ってるのかようわからんけど
1つのモデルに複数のマテリアルがある場合にうまくいってないとかじゃね?
ソフトウェア音源を使えるようにならんかなぁ・・・
354 :
デフォルトの名無しさん:2011/01/11(火) 20:55:04
SpriteBatch.Draw()で20倍に拡大した場合に輪郭がぼけてしまうのですが、
ドットの境界をクッキリと表示させるにはどうすればいいですか?
spriteBatch.GraphicsDevice.SamplerStates[0].MagFilter = TextureFilter.Point;
spriteBatch.GraphicsDevice.RenderState.MultiSampleAntiAlias = false;
GraphicsDeviceManager.PreferMultiSampling = false;
辺りは試してみたのですが、全滅でした。
>>354 SpriteBatchは使わないので、はっきり分からないけど、
GraphicsDevice.SamplerStates[0] = SamplerState.PointWrap;
はどう?
もしくはシェーダー内で上書きしてるとか?
XNAのModelオブジェクトをファイルにエクスポートする実装を
ご存じないでしょうか。形式はFBXでもLWOでも3DSでもなんでもいいんですが。
357 :
デフォルトの名無しさん:2011/01/12(水) 09:23:25
http://create.msdn.com/ja-JP/education/catalog/?devarea=6 このサンプルのHeightMapInfoContent.csに記述されている
public override string GetRuntimeType(TargetPlatform targetPlatform)
{
return "HeightmapCollision.HeightMapInfo, " +
"HeightmapCollision, Version=1.0.0.0, Culture=neutral";
}
public override string GetRuntimeReader(TargetPlatform targetPlatform)
{
return "HeightmapCollision.HeightMapInfoReader, " +
"HeightmapCollision, Version=1.0.0.0, Culture=neutral";
}
この部分は具体的に何を指定しているのでしょうか?
サンプルを現在制作中の3Dゲームに組み込もうとしているのですが
そのままだと「ContentTypeReader Game1.HeightMapInfoReader, Game1,Version=1.0.0.0, Culture=neutral が見つかりません。」というエラーが出てしまいます……
毎フレームアップデートするときGameComponentを継承しないといけませんか?
クラス作るのはめんどいのでUpdateだけをデリゲートで渡す方法とかありあせんか?
>>358 こんなのを予めつくっといて、Gameクラスにインスタンス持たせといて、
あとはお好きなように
sealed class DelegateCollection : GameComponent
{
public readonly List<Action<GameTime>> delegateList = new List<Action<GameTime>>();
public DelegateCollection(Game game) : base(game){}
public override void Update(GameTime gameTime)
{
delegateList.ForEach(a => a(gameTime));
base.Update(gameTime);
}
}
>>355 だめぽいですね
spriteBatch.GraphicsDevice.RenderState.MultiSampleAntiAlias = false;
spriteBatch.GraphicsDevice.RenderState.PointSpriteEnable = false;
spriteBatch.GraphicsDevice.SamplerStates[0].MagFilter = TextureFilter.Point;
spriteBatch.GraphicsDevice.SamplerStates[0].MinFilter = TextureFilter.Point;
spriteBatch.GraphicsDevice.SamplerStates[0].MipFilter = TextureFilter.Point;
spriteBatch.GraphicsDevice.SamplerStates[0].AddressU = TextureAddressMode.Wrap;
spriteBatch.GraphicsDevice.SamplerStates[0].AddressV = TextureAddressMode.Wrap;
spriteBatch.GraphicsDevice.SamplerStates[0].AddressW = TextureAddressMode.Wrap;
spriteBatch.Draw(...)
までやってみましたが、変わらずでした。
あ、言い忘れましたがXNA3.1です。
>>359 ありがとうございます。
やっぱ、デフォルトではないんですね。
使わせてもらいます
362 :
デフォルトの名無しさん:2011/01/20(木) 23:26:20
XNAのAPIリファレンスのような本
(網羅的な内容の本)
を探してます。
英語でも構わないので教えてください。
モスドンて何?
来週のサザエさんは
落とした財布はPorter
メカゴジラVSモスドン
の三本です
2本しかないんだけど
の三本です
があるじゃん
やめろよ そういうボケ
ゆとりみたいで怖ぇーんだよ
365と367は別人
ゆとり二人にアスペが一人
371 :
デフォルトの名無しさん:2011/01/28(金) 14:41:46
メインメソッドの「protected override void LoadContent()」内以外でコンテンツロードするにはどうすれば良いですか?
BGM/SE再生専用のクラスを用意して、音関連は全てその中で処理したいんですがContent.Loadが使えなくて……
class AudioPlayer {
public void LoadContent(ContentManager contentManager) { ここで読み込む }
}
class MyGame : Game {
private AudioPlayer audioPlayer;
protected override void LoadContent() { audioPlayer.LoadContent(ContentManager); }
}
こんな感じで
4.0 からは Content プロパティは ContentManager になったの ?
374 :
デフォルトの名無しさん:2011/01/30(日) 17:33:40
今からゲーム作るなら
DirectXよりXNAの方がいいのかな?
DirectXの基本的な部分押さえておかないと難しいんちゃうか
C++&DirectXのサンプル読めなきゃXNAは厳しい
XNA の方がいいとは言えない。インストールが面倒だし。
だが、開発者の負担はぐっと下がると思う。IntelliSense きくし、おおよそのフレームワークが整ってる。
まあ、C++ or DirectX が不快に感じるなら XNA 選ぶといいと思う。
「いい」って目的によって変わると思うが
特に配るつもりもなく初心者が軽く楽しんでみるなら言語違うがGLScene
C#使いたいならXNA
本気でやるならC++でDirectX
がいいんじゃないかね
C++がわからないからXNA使うんではなくてC#が使いたいから使うもんだよな
C++,DirectXよりはずっと使いやすいけど勉強するときの難易度自体は大差ないと思う
XBLIGにリリースするだけの目的だから学びやすさとかすぐれてるかとかまったく考えたことない
なぜかいろいろな用途で使いたくなるよなあ、C#
C#というかVisualC#がな
異常に使いやすい完璧なIDE
最近Delphiから移行してきたけどC#はなかなかよい
コンパイルが遅いのとデザイナが微妙かなって以外は正統進化のように感じてる
C#のコンパイルは十分はやいだろ、C++なんてどうすんだよ。
Delphiに比べたらってことだろ
使ったことないけど爆速っていうし
パーサーはPascalベースなDelphi速そう。
でも、C#ってぶっちゃけ常時バックグラウンドでコンパイルし続けてるからなぁ。
WPFみたいなXAMLからのコード生成後に改めてコンパイルしてるもの以外はコンパイル時間ほとんど感じないはずだけど。
よくある誤解だけどXAMLはコード生成しないよ
動的に読み込むコードを書かない限り
xaml->bamlへコンパイルするでしょ
コードビハインドでもa.g.cs/a.g.i.cs/a.g.vb/a.g.i.vbみたいなの出来るし
重いから、俺はデザイナは普段OFFにしてる
BAMLはXAMLのデータをバイナリにしてるだけで、実行時にパースしてるのは一緒
デザイナが生成するコードは、リソースからXAML(BAML)を読み込んで
C#のフィールドにコントロールの参照を代入してるだけ
XNA入門記事とか書籍でおすすめってありますか?
英語でもかまわないんですが。
オライリーのやつがいいんじゃね?
最近のオライリーはちょっと・・・
BoundingBoxって軸に水平な箱しか作れないんでしょうか?
角度を付けて坂のようなオブジェクトを作りたいんですが・・・
>>389 いや、XAMLからの生成物はBAMLとC#/VBコード。
生成されたコードの方にはInitializeComponentメソッドとかが定義されてる。
本なら独習C#のCS4.0対応版がちょっと前に出版されてた。
WEBなら@ITの記事とか未確認飛行CのC#のコーナーがいい感じだと思った。
例えばAボタンを押しっぱなしの状態から、Aボタンを離した瞬間に判定を出力したいのですが、
ソースコードはどんな風に記述すればいいのでしょうか?
{
bool old;
bool posedge;
bool negedge;
void update()
{
bool now = (key.Buttons.A == ButtonState.Pressed)? 1 : 0;
old = now;
}
}
途中で送信しちゃった orz
{
bool old;
bool posedge;
bool negedge;
void update()
{
posedge = negedge = 0;
bool now = (key.Buttons.A == ButtonState.Pressed)? 1 : 0;
posedge = ~old & now;
negedge = ~now & old;
old = now;
}
}
みたいにトリガーを作る?
class Input {
public bool IsKeyUp(GameKey key) { return prev[key].IsPressed && !curr[key].IsPresssed; } // キーが離された
public bool IsKeyDown(GameKey key) { return !prev[key].IsPressed && curr[key].IsPressed; } // キーが押された
public bool IsKeyPressed(GameKey key) { return curr[key].IsPressed; } // キーが押されている
public void Update() { prev = curr; curr = 現在の全てのキーの状態; } // 毎フレーム呼ぶ
}
こういうクラスを作っといて、他のクラスからは直接XNAの入力クラスを触らないようにすると便利
コードはあくまでイメージね
最初からトリガー準備してくれればいいのにね
どうもありがとうございます。参考にしてやってみます
OICの学生さんですか?
すみません。
VC#Expressで、デバッグ時に、
ブレークポイント一覧ウィンドウは
表示されてますか?
どうしても出てこないんです。
よろしくお願いします
まぁExpressだし仕方ないさ
3Dモデル描画→WMV動画再生→動画をテクスチャに貼り付けて描画、って感じで処理させてるんだけど
モデルが動画の裏に隠れちゃって画面に表示されない。文字は普通に描画できるのに・・・・・・
動画に3Dモデルを重ねて描画する方法を教えてくれないか?
407 :
406:2011/02/11(金) 21:49:10
すまん
書き込んだ直後に自己解決してしまった。
モデル描画処理の中に動画再生処理入れとけばいいのなw
3Dモデルを傾かせたい(上を見上げた感じにしたい)んですが
キャラクターの向いている方向と傾く方向を合わせるにはどうすれば良いでしょうか?
Matrix.CreateRotationX(UpRoatation)だと軸に沿った方向にしか傾かせられないし・・・・・・
Matrix.CreateFromAxisAngle(モデルの右方向ベクトル, 回転量);
コントローラのボタンがどれも押されてないことを取得するのはどうすればよいでしょうか
1個1個確認するのみ?
>>410 そう
でも効率悪いので、
独自の入力管理を作って、
必要な情報は1フレームに1回だけ
取得するようにして、
ゲーム中は管理後の変数だけを
調べるようにしたほうがいい。
この程度の入力管理は標準であってもよさそうなもんなのにな
・新しく押された
・連打
414 :
デフォルトの名無しさん:2011/02/14(月) 08:36:21
この程度さえ出来ないでXNAやるとかアホすぐる
じゃあお前Vector3使うの禁止な
このスレってやけに
>>414みたいな初心者馬鹿にするやつ湧いてくるな
愛のムチに見えなくも無い。
そして
>>415よw おまいのその返しはなんだw
なんかしらんがツボったw
ウィンドウが最前面にないときは処理をスキップしたいのですがどうすればよいですか
FormのActivateとDeactivateイベントをハンドルして、現在の状態フラグを更新する。
Game使ってる場合も同じじゃないかな。
XNAってXNAクリエーターズクラブとかに出さずに
単純にPC配布だけなら内容がエロでも大丈夫ですかね?
教えてエロい人
公式のFAQも読めないの?
おk行ってくる
XNAって意外と実行環境難しいよね
確認用のダイアログを使うと開発環境入れないと動かなかったり
これ使うとスキニングとかもすぐできる?
いや、その辺の手間はDirectX直とかわらん
GraphicsDeviceについてなんですけど、
メインループでレンダリングしてる最中に、
サブスレッドを立ててそこからテクスチャやらモデル等のGraphicsDeviceが必要なオブジェクトの生成をしても問題ないのかな?
多分問題なく動いてはいるけど参考資料がなくて正しい動作なのか判らない。
>>426 スレッドってあのスレッド?
擬似タスク(笑)じゃなくて?
だったらスレッド1つ呼ぶたびに1ms使うからぶっちゃけ超遅いでしょ?
俺の知識が足りないだけならスマンコ
XPでもつかえるXNA?ってないんですか?
え?
>>428 XNA Game Studio 4.0のスタンドアロン版
3.1でもいいし2.0でもいいし
ありがとうありがよう
>>427 なんで擬似タスクなんか出てくるのかと思ったけどもしかして360版のSystem.Threading.ThreadってWindows版と違うのかね。
私が聞きたいのはWindows版のGraphicsDeviceがスレッドセーフなのかって事だったんだけど、
Texture,VertexBuffer,IndexBufferみたいなGraphicsDeviceをコンストラクタ引数に取るオブジェクトをバックグラウンドで生成したいんですよ。
自分は激しく点滅してうまく行かなかったけど、
そんなに面倒な事じゃないから、試してみては?
435 :
426:2011/02/28(月) 15:14:20.64
既に実装済みで多分問題なく動いてるんですよ。
ただWindows版でのグラフィックスリソースの非同期生成について言及された記事が見つからなかったので、
妥当な実装なのか聞きたかった次第です。
公式で聞いてみれば
>>435 じゃあ、いいんじゃね?
ただ、スレッドはウィンドウズ的に1ms使うから処理重たくなったら覚悟じゃないですか
いーんなら別にいいです
何でそんなスレッド毛嫌いしてるの
箱庭ゲーとかでロード画面挟まずにロードするにはスレッド使うしかないじゃん?
他に何か有効な手段でもあるの?
XNAでも非同期I/Oは使えるはずだが。
まあ非同期I/O使ってコードがぐちゃぐちゃするよりはスレッドを使う方が
コードの見通しは良くなっていいけど。
>>438 Updateのところでロード処理を進める
ファイルの非同期入力まではいいけど、読み終わったファイルをUpdate内で解析してデバイスに転送とかしてたらそれなりにコストかかるじゃないですか
それにStreamの非同期IOはデリゲートのBeginInvoke使ってるからどの道スレッドじゃないの
ContentProcessor<,>の派生クラスから出力型を特定できないでしょうか?
ModelProcessorなら出力型はModelみたいな。
3Dで作った、壁や床に弾痕や血のりのテクスチャを重ねて書きたいのだが
どういった方法がメジャーなんだろうか?
思いついたのが、描画を行うテクスチャをいちど別画面に全て書き出して
このときにアルファ合成で弾痕がついたテクスチャを作成する
そのご、実際のテクスチャとして割り当てるって方式なんだが
他になんかいい方法とかないかな?
壁や床ならその上に銃痕などのテクスチャを張った板ポリを描くだけで良い。
445 :
デフォルトの名無しさん:2011/04/17(日) 00:23:36.95
GameComponent.Initializeの呼び出されるタイミングが今ひとつ謎です……
Game.Components.Add()されたときに呼ばれるのかなと
思ってたが、ブレークかけても全く引っかからないし。
MSDN見たらGame.Initialize()されたときに呼ばれるとか……
ということは、後からGameComponentクラスがAddされたときは
Initializeは明示的に呼ばないと絶対に呼ばれない、ってことなのかな?
そうですね
2010いつ頃だよ日本語
そう考えたら龍神録の人は作り易い、分かりやすいをモットーに良く作ったと思うよw
一緒に仕事をしたいのはこういうタイプ
誤爆
現在、私は3Dの勉強中です。
以下のような問題に悩まされています。
もしよろしければ、どなたかご助言を頂けませんでしょうか。
@問題:
「異なるクラスのオブジェクト間で、深度バッファが上手く効かない」
A今扱っているコードについて:
私の手元にあったコードをビルドして実行すると、「立方体状の3次元空間が表示され、その中を5つの球体クラスのオブジェクトが跳ね回る様子」をユーザは見ることができます。
このコードを改造して、立方体状の空間の中央に、三角錐クラスのオブジェクトを配置しました。
この改造後のコードをビルドして実行すると、「立方体状の空間の中央に三角錐のオブジェクトがそびえ立ち、その周囲を球体のオブジェクトが飛び回る様子」をユーザは見ることができます。
B現在の見え方:
しかし、深度バッファが上手く効いていないのか、三角錐オブジェクトが、他のオブジェクトよりも常に手前側に表示されてしまいます。
5つの球体間では、深度バッファは有効なように見えます。しかし、各球体と三角錐間では、深度バッファは無効なように見えます。
拙い文章ですみません。
どうぞよろしくお願いします。
>>450 深度バッファへの書き込みがうまくいってないか、
深度テストがうまくいってないか....。
もしかすると、Z値の計算がうまくいっていないのかもしれないし....。
文章だけで判断するのは限界があります。
それほど大きくないプロジェクトなら、
プロジェクト一式をアップしてみるのはどうでしょう?
原因を調査できるかもしれません。
453 :
451:2011/05/01(日) 17:09:47.28
>>452 ダウンロードしてみたところ、
デバッグ用クラス一式とPlayerクラスがないようです。
ソースを見てみたのですが、
spriteBatch()を使用されてますね。
これを使うと、3Dのレンダリングステートをいじるので問題が出てきます。
いったんspriteBatch()をはずすか、
3D関係の描画前に、
ZテストやZライトを明示的にONする命令を入れていみてください。
454 :
451:2011/05/01(日) 17:22:07.30
>>453 ごめんなさい。
XBOX360でビルドした為だったようです。
Windowsではちゃんと動きました。
これからデバッグしてみます。
455 :
451:2011/05/01(日) 17:34:24.48
>>452 viewマトリックスとprojectionマトリックスが、
球体と三角錐とで違うことが問題です。
player.Draw(cameraPosition, cameraTarget, cameraVector);
を削除して、
player.Draw(view, projection);
で、球体と同じviewとprojectionマトリックスを渡すようにしてください。
Playerクラスには、
viewとprojectionを受け取れるDraw()メソッドを追加して適切に変更してください。
こちらの環境では、前後関係がちゃんと描画できるようになりました。
456 :
451:2011/05/01(日) 17:39:54.22
Playerクラスの
aspectRatio, 1.0f, 1000.0f);
を
aspectRatio, 0.01f, 100.0f);
として、
球体のprojectionと完全に同じすることで、直ることも確認しました。
ただ、
>>455のように、明示的に同じviewとprojectionを使うように
したほうが、プログラムとしてはいいですね。
>>456 ありがとうございます。返信が遅くてすみません
>viewマトリックスとprojectionマトリックスが、球体と三角錐とで違うことが問題です。
>球体のprojectionと完全に同じすることで、直ることも確認しました。
2種類の解決方法の間で共通しているのは、球体と三角錐間のprojectionの共有のように見えます。
これはつまり、projectionが各オブジェクト間で共有されていることが重要であると認識して良いのでしょうか?
それとも、viewの共有も重要と考えるべきでしょうか?
--------------------------------------------------
どうも、私は基礎的な知識がかなり足りないようです。
もっと勉強しなければいけませんね。
ご助言ありがとうございます。
458 :
451:2011/05/01(日) 18:03:18.64
>>457 projectionを共通化することが重要です。
そうしないと、Zバッファに書き込まれる値の意味が変わってくるからです。
またviewマトリックスも共通にすべきです。(今回の場合は同じ値が入っているようですが。)
同じカメラを使っているという意味で。
がんばってくださいませ。
>>456 Player.Drawへの引数として,Sphere.Drawに渡すのと同じprojectionを渡すように修正しました。
また、Player.csファイルのDrawメソッド内の2重ループで
effect.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45.0f),aspectRatio, 1.0f, 1000.0f);
と記述していた部分をコメントアウトして
effect.Projection = projection; // Player.Drawが引数として受け取るprojection
という記述に書き換えました。
その結果、正しい前後関係で三角錐と球体が描画されました。
このことから、オブジェクト間でのprojectionの共有が必要であるということが推測できます。
しかし、なぜprojectionの共有が必要なのかはわかりません。
もう少し詳しく調べてみます。
この問題で2日程悩んでいたので、大変助かりました。
誠にありがとうございました。
うわあ!レス書いてるあいだにレスが返って来てた///
精進します…
>>459 私も初心者なのでよくわからないですが、
物体をみるカメラは1つなので、
そのカメラへの値(viewとprojection)は1つにするべきなんだと思います。
462 :
451:2011/05/01(日) 18:07:10.24
463 :
451:2011/05/01(日) 18:10:48.05
>>461 うはwww
間違って、別スレの名前登録してしまった。
451です。
みなかったことにしてwww
464 :
451:2011/05/01(日) 18:18:04.83
正体がばれついでに....。
現在、「Rushing Punch<ラッシングパンチ>」というゲームを
ピアレビューに出したのですが、まだ目立たない位置にある
ためか、レビューしてもらえません。
あと2週間ぐらいして、上の方の方が消えてくるとレビューして
いただけると思うのですが...。
もしお時間いただけるようなら、ピアレビューしていただけると
幸いです。
微妙にスレ違い申し訳ないです。
>>461 なるほど。なんとなくわかってきました
「使うカメラはいつもひとつ!」ですね
467 :
451:2011/05/01(日) 18:19:52.30
>>465 そういうことになります。
また画面を2分割や4分割にして、
3Dの対戦ゲームなどを作るときは
カメラが2つや4つになるので、
その数分のviewとprojectionのセットを作ることになります。
厳密にはXNAと関係ないんですが、他に聞けるところがないので質問
させてください。
複数の変換行列を結合したいとき、単純に掛けるだけでいいんでしょうか?
それとも、SRTに分解してそれぞれの要素を結合させて変換行列に
するのがただしいのでしょうか?
"結合"を定義してくれ
最終的に変換が適用される時に
v'=A*B*C*v
のように使われるなら、T=A*B*Cとしておいて
v'=T*v
もちろんこうしても構わない
XNA4.0のサンプルプロジェクトって無いのかな、
勝手に変換はしてくれるんだけどさ・・・
なんとなく
App Hubのサンプルはだいたい4.0になってるけど
472 :
470:2011/05/06(金) 17:24:04.32
あぁ、ありがと
ラーニングで絞ってサンプルを探してたんで
Performance Measuring Sample
をいろいろいじってみます〜
473 :
デフォルトの名無しさん:2011/05/07(土) 23:27:41.28
GraphicsDeviceっていっぱい必要になるところがあるけど
あれって基本的に全部同じインスタンスなのかな?
EffectやTexture2Dに設定されたGraphicsDeviceは
使われることはないでおk?
デバッグでインスタンス探っていけば分かるでしょ
475 :
uy:2011/05/15(日) 01:58:13.94
プログラマはゴミグラマ
Controllerってクラスもともとどっかにあったりする?
これ、日本語表示めんどいな。
昭和のシステムかw
ゲームコンソールではこれが普通なんだけどね
texture2Dを複製したいのですが、
どういった方法でやるのがよいでしょうか?
>>479 LoadContent()の中でforで一括配置するんではなく
一旦static変数に格納して逐次そこから受け渡しするとかそういうこと?
staticクラスじゃなくてもクラス名を引数にして渡すことも出来るみたいだけど
まだ初心者だからよく判らん
エスパーすると
var texture1 = Content.Load<Texture2D>("hoge");
var texture2 = new Texture2D(texture1.GraphicsDevice, texture1.Width, texture1.Height, texture1.LevelOfDetail, texture1.TextureUsage, texture1.Format);
byte[] buffer = new byte[texture1.Width * texture1.Height * 4];
texture1.GetData(buffer);
texture2.SetData(buffer);
こういうことだと思うが。
流石に
>>480みたいなレベルでレスするのは相手に悪いんでないの。
質問した者じゃないけど、俺も同じトコ悩んだ
そうやって中身をコピーするのかなるほど。
>>481 ありがとうございます。そういうことです。ただ、それだと、
4byte/pixelのやつしか対応できなくて例外のでるテクスチャがありました。
テクスチャをレンダリングターゲットとして書きこむというのが
常套手段のようですが、マルチスレッドで複製しようとすると
メインループの描画処理とバッティングしてしまうので
今イチ使い勝手が悪くて。何が最善なのかなと書き込んだ次第です。
>>483 例外出るのはtexture1.TextureFormatでswitchして、
new byte[texture1.Width * texture1.Height * 4];
の4を変更すればいいはず。
別のターゲットにレンダリングするって言うと複製と言うよりは複写って感じがするな。
>>484 ありがとうございます。おっしゃるとおりです。
switchするのが最善かもしれません。ただ、TextureFormatがやたらと
たくさんあるのと私がそれらのバイト数の区別できないのが問題だw
MSDNに各フォーマットのビット数書いてあるけど必要なフォーマットだけ用意しておけば十分だと思う
曲芸レベルか
colladaのインポータで物理演算のパラメータを読み込めるやつってあるかな?
何のエンジンだか書かずに、ただの馬鹿かと。
XMLなんだから好きに読み込めよ。
独り学芸会がしたいんじゃないかと思われ
独り学芸会kwsk
こんな凄い組み方見つけたんだがお前ら知ってっかーみたいな
で自分で聞いて自分で説明
>>489 colladaの物理はエンジンに依存しないのでは?
>>492 わかったようなわからんようなw
とりあえずトンスル
XNAはPC(非XBOX)で使うなら商用利用でもライセンスフリーだっけ?
そだよ
うそだよ
498 :
デフォルトの名無しさん:2011/05/23(月) 14:06:22.89
ホントだよ
マホトーンだよ
おーさるさーんだよー♪
ContentのXMLファイルってどこに何書きゃ良いの?
<XnaContent>
<!-- TODO: replace this Asset with your own XML asset data. -->
<Asset Type="System.String">111
<map>222<map>
</Asset>
</XnaContent>
エラー 1 There was an error while deserializing intermediate XML.
'Element' は、XmlNodeType としては無効です。 行 5、位置 4。
Visual studio 2010とGamestudio4.0を導入していれば
プロジェクトの開始に
360あるいはWindowsを選べば
もうそれはXNAで、C#も書けるしDirectxも書けるってことでいいんですか?
素人過ぎる質問してスイマセン
素人はアクションゲームツクールをどうぞ
>>502 C# とDirectX同列に並べんなw
XNA = 内部的にDirectXを使ってて、C# で書けるゲーム開発フレームワーク
パフォーマンスチューニングの必要はあるものの、ほぼX箱360とWindowsのクロス開発可能
Game Studio 4.0入れたら出て来るプロジェクトテンプレートはXNAのもの。
XNAよりDXライブラリのほうがいいよ
C#で3D扱えるものでSlimDXっていうのがありますが、XNAより作り易いですか?
兄より優れた弟なぞ存在しない
セーブをContent内のファイルに対してやるにはどうすりゃいいの?
ロードと違ってセーブはユーザーストレージを使わなきゃだめ?
やっぱなんか書籍ないと素人には無理だな・・
Webで手に入るサンプルなんかはGS3.0ベースで4.0じゃ使えない関数?でてくるし
ボンバーマンのような2Dゲーを作ってます
xmlファイルにマップを書いて読み込みたいんですが、
例えば
00000
01010
00000
01010
みたいにそれぞれ改行混じると文字コードの関係で不都合ありそうだし
きれいなやり方ってないですか?
String str = game1.Content.Load<String>("Games/Maps/Test/XMLFile1");
char[] trimchar = new char[] { '\n'};
String[] map = str.Split(trimchar);
for(int i = 0; i < 30; i++){
map[i] = map[i].Replace(" ", "");
}
適当に書いたらこんな感じになりました\(^q^)/
>>511 いいんじゃないの?
そういえば俺はASのhitTestみたいな機能が無いかどうか知りたかったんだった
Flashではブラシで図形描いてそれをムービークリップにし、
任意の座標とhitTestしてマップ作ったけど
XNAではそういうの出来ないのかね
ライブラリって1つのゲームで何個も使っていいもんなの?
遠慮しないで好きなだけ使っていいんだよ
>>515 馬鹿杉。
悪いことは言わないから、もう少し学習力をつけないと、この先マジでどうにもならんぞ?
>>516が答えられない馬鹿なのかただの低学歴なのかは知らんが、とりあえず
namespace MyDataTypes
{
public class PetData
{
public string Name;
public string Species;
public float Weight;
public int Age;
public int[] Foods = new int[2];
}
}
とでもしとけば
<Foods>
<Item>1</Item>
<Item>2</Item>
</Foods>
で動くよ
どっちかっつーと低学歴の可能性のが高くないか?
>>517 第三者だけど
C#内で配列に1行で1度に代入するみたいなことを
XMLでは出来ないの?
Windows用ゲームでXNA流行らないのなんでだろうと思いながら勉強してたけど、XBOXコントローラでしか操作できないのな…
Windows限定でいいなら、使えるように作ればいいだけ
どんな勉強してたのか凄く興味ある
キーボード使えばいい
Win限定なら普通にAPIも呼べるんだから何でも好きなの使えばいいよ
すれ違いなのは、重々承知で、ここに質問デス
麻雀で役(ターツ)が重複(衝突)するのは
リャンペーコー or 七トイツ
三連コー or 順子*3
亜両面 でのタンキ or 両面 (符が変わるのと、平和が付くか付かないか)
の3種類でよいでしょうか?
そう
セットアッププロジェクトで必須コンポーネント一覧にXNAがないんですけど、どうすればいいんですか?
良く見たらありました
でもそれはおいなりさんでした
残念
えっ
当たりじゃね?
Point と Vector2 の違いって何?
どう使い分けるの?
違いはintかfloatか、じゃないか?
スプライトのインスタンスごとにインスタンスの数だけ同じ画像をロードさせた場合、
全部のインスタンスが自分専用の画像をロードして保持しちゃうの?
PointはVectorが0。
>>535 記憶が間違ってなければContentManagerが同じリソースの多重ロードを抑制するようになってるはず
ContentManager優秀だな
Androidアプリを作る気がしない、こっち楽すぎて
そうかな?androidはunity使えるぞ?
普通の四角形を描画するのはどうすりゃいいの?
DrawRectangle(x,y,height,width,color)
みたいなメソッドがあったら教えてくれ
SpriteBatchで1ピクセルのテクスチャを好きな矩形にレンダリングすればいい
あーそれ系の話でspriteBatchの処理回数を減らす云々で高速化ってネタ結構見るけど、
4.0以降もこのやり方で高速化ってできるのか?
確か非推奨みたいな感じじゃなかったっけ?
3角形を2枚使えば□になるよ!
XNAはオワコンなの?
x86開発に詳しい知人が、XNAは専用コントローラ(XBOX360のやつ)しか使えないからオワコンだお言っていた
時代はC++とDirectXだとのこと。
まあ、PC 向けゲームに XNA 使う人はいないわね。
そのコントローラーの問題から。
日本だと箱の出荷台数的問題で、Xboxインディーズゲームもあんまり流行ってないし。
もっぱら、WP7 開発用。
Silverlight 5で、Xnaのかなり基礎的な部分だけだけど、3D描画にXNA互換のAPI使えるようになるから、
ブラウザー向け3Dアプリでは使えるかも。
入力周りだけMDX使えばいいだけだろ
でもMDXで360コンにアクセスすると、左右のトリガーで合わせて一本の軸として検出されるんだよなあ
XNAではどういう風に軸を分離してるんだろう
あれ?C++とDirectXでも専用コントローラしか使えないんじゃないの?
XNAはオワコン。SlimDXがハジコン。
OpenGLやunityが強すぎ。DirectX自体オワコンだよ。
いいなー
俺もDirectXマスターしたい
アルファベットの大文字小文字と数字と記号の一部のみの画像を作っちゃってtexture2Dに読み込ませる場合
どうやってそれを処理して描画させればいいんだ?
draw(string moziretu){
for(int i = 0; i < moziretu.length ; i++)
{
int tempchar = i番目の文字 - '0'
tempchar の値ごとにdrawRectangle 調整して描画だよん
}
}
こんな感じか?
299 :名前は開発中のものです。:2011/06/29(水) 20:13:33.27 ID:VKmBltao
XBIG市場で一山当てるなんて幻想は今すぐ捨てたほうがいい。
円高だし、二重課税されるし、80、240、400という意味不明な価格設定の縛り。
タグとかストレージのお作法を全部自前でやらなきゃいけないし
ピアレビューというコミュニティという名のめんどくさいシステム。
Xbox360でゲーム開発すること自体が好きで趣味でやるならいいけど、開発費とか考えるなら全然割に合わない。
多くのXBIG開発者はそれに気付いているはずだ。
よほど面白いゲームを作らないとこの市場では一山当てられない。それも誰もが購入に至るようなとても面白いゲーム。しかもインディーズゲーム。
上手い絵師に頼んでエロCG集を1000円で販売するほうが、XBIGでの売上の十倍は売れる。
それこそ全レスする暇があるならバイトでもサラリーマンプログラマでもやってたほうがいい。主よ。この市場は最初から腐ってる。
Rubyバカにしてる子ってさ
変数に$ついてる言語触ってるって事だよね
いちいちSHIFT+4キーおして $ 打ちまくってる感触はどう?
どこのスレの誤爆?
$ってお金の意味だからいんじゃね
Rubyは$と無縁なの?
ルビーは宝石です
XNA4.0対応の書籍ってどんなのがでてます?
お勧めとかあったら教えていただきたい
EINかITIN取得すれば二重課税はないのに・・・
XNB周りで質問なんだが、コンパイル時ではなく、実行時にContentWriterでxnbファイルを書き出したい場合どうすれば良い?
562 :
デフォルトの名無しさん:2011/07/18(月) 21:14:08.71
XNA楽でいいな 2Dゲーム作って遊んでます
コントローラ持ってなかったら作ってなかったけど
563 :
561:2011/07/19(火) 17:17:23.19
>>561 だが
せめて方法があるかないかだけでも教えてくれ。
VS無しではxnbへの書き出しは出来ないのか? マップエディターみたいなツールは作れないと言うことなのか?
えっと、PC前提でいいの?
>>564 一応、PCで動かすことしか考えてないけど
カスタムパイプラインとか書いて、諸々を一つのxnbにまとめてあるから
実行時でもxnbじゃないテクスチャが読み込めるよ とかそう言うのだったら間に合ってる(なんか言い方がきついけど悪気はない)
普通に
Microsoft.Xna.Framework.Content.Pipeline
参照追加して呼べばいいよ
やってることはシリアライズと変わらん
Microsoft.Xna.Framework.Content.Pipeline.Tasks.BuildContent
これか! ずっとTask以外のネームスペースのやつ見てた。
ContentWriterはコンストラクタがないし…という感じで
なんだゲハブログか
結局のところ、単純にオブジェクトを好きなプロセッサ・ライタを通してxnbとして書き込むのは無理っぽいです。
VS無しでxnbを作る一番簡単な方法は、プロジェクトファイルを作成してMSBuildを実行して
間接的にMicrosoft.Xna.Framework.Content.Pipline.Task.BuildContentを使うことです。
もしくはMicrosoft.Build以下にMSBuildとおなじ物があるのでそれを使う。
BuildContentは簡単に生成することはできますが、下準備とかメンドクサイし、
いろいろ整えてExecute()しても、設定してないLoggerに書き込もうとするし、そのLoggerは直接指定出来ないし
まあ、とにかくうまくいきません。
>>571 ちなみにそれ再配布できないよね・・・。
あとさ、XNA4って3.1に比べて微妙に改悪じゃね?
不便なことが増えるばっかり。よくなったところはどこよ?
574 :
デフォルトの名無しさん:2011/07/24(日) 17:42:55.66
間違ってるから表示されないんだろ、アホか。
ソース晒して他人にデバッグさせようとか、図々しいにもほどがある。
ソース晒せって言ったり、するなっていったり困るね。まったく。
>>575-576 プログラムは思った通りではなく、書いた通りに動くとは
重々理解しているつもりですが、どこがおかしいのやら……
>>577 はい、そうです。何かまずいところでもあったでしょうか?
ちなみに、ページ中の画面写真はイメージです。
>>579 自己レスです。
WVPに渡すMatrixの数値が食い違うことに気づき、色々調べたところ、
XNAは右手系というやつで計算方法が違うということを知りました。
XNA側に無理やりC++で出した行列の値を設定したところ、表示できました。
そこで、質問を変えますが、このHLSLを、右手系という計算方法でも
正しく表示できるように対応させるにはどうすればよいでしょうか?
>>580 右手系と左手系を分かってるか?
その違いを理解すれば、ものすごく簡単な話しだぞ。
具体的には、軸を1本、符号反転するだけだ。
>>581 下記をHLSLに追加することでできました。
もしかしたら厳密には間違っているのかもしれませんが、
ひとまずは移植元と同じ表示を再現できました。
ありがとうございます!!
float4x4 view = g_view;
float4x4 proj = g_proj;
view[0].x = -view[0].x;
view[0].z = -view[0].z;
view[2].x = -view[2].x;
view[2].z = -view[2].z;
view[3].z = -view[3].z;
proj[2].x = -proj[2].x;
proj[2].y = -proj[2].y;
proj[2].z = -proj[2].z;
proj[2].w = -proj[2].w;
583 :
デフォルトの名無しさん:2011/07/25(月) 10:40:06.76
DebugとReleaseを切り替えるたびにカスタムプロセッサがリビルドかかるの、これどうにかならんの?
切り替えてビルドするたびにコンテンツが連動してリビルドされるから、10分ちょい待たされる。
ソリューション構成のビルド対象とゲームプロジェクトの依存関係から
コンテンツのプロジェクトを外せない?
>>584 あーそういうことか。
普段ビルド無効にしてカスタムプロセッサを弄った時だけ、
プロジェクト名指しで強制的にビルドさせてやればいいんだな。
サンクス
フリーで使えるXNA用の
ライティング・シャドウイングのエンジンってないかな?
CodePlex行けばいくらでもある
588 :
デフォルトの名無しさん:2011/07/29(金) 11:14:09.89
XBOX360用の.ccgameの配布条件って昔と変わった?つか条件なくなった?
昔(XNA3.0出る前後の頃)はWeb上でのフリー配布に限るって
どこかに書いてあった気がするんだが、今ぐぐると全く出てこないんだ。
Windows用の同人ゲをCDで出す予定で、そこにXNAクリエイター向けの
オマケとして、XBOX360版の.ccgameを突っ込もうかなとか考えているんだが。
さすが、考えてること同様、お粗末な頭だ。
配布するのはいいが、プレイするユーザーのこと考えてるか?
ccgameはゲーム本体とは別にXNAクリエイター向けのおまけとして作ったものだから
プレイ対象者はMSに年99$上納してるヤシに限定しても特に悪くはないだろ、と思ってる。
正確には公式で問い合わせたほうがいいけど、
インディーズで出してるこびとスタジオも昔から360用ccgame入りをコミケで売ってるからNE☆
XNAクリエイター向けだったら
コンパイル済みのアセンブリとアセット配れば十分じゃないの
XNA4で Effect.CompileEffectFromFile相当の処理をさせるために、
コマンドラインツールが配布されていた気がするのですが
見つけられません。ご存知でないでしょうk?
自己解決しました。app hubのstock effect sampleです。
XNA4では、D3D10形式のシェーダファイルでないと読めないのでしょうか。
昔のシェーダファイルを使いまわしたいのですが、もしや解決策はない?
595 :
デフォルトの名無しさん:2011/08/01(月) 16:36:53.11
XNAで作られたゲームを拡張して、ゲーム中に文字チャット機能入れたいと思うんですが、
文字入力とか漢字変換とか、どうやれば良いでしょうか?
もう一度ググったらそれっぽいのが出てきました。
それ見て理解できなければ改めて質問します。
聞くときは動作環境も一緒にね
Windowsとそれ以外とじゃ違うし
あるモデルをアルファテストでピクセル抜いた上で
それ以外のピクセルを真っ黒に描画したい(マスクつくりたい)
ちなみにカスタムシェーダは使えない
なんかやり方ないかな?
599 :
598:2011/08/03(水) 08:20:46.37
それとモデルはSkinnedModelで変形させたい
誰か助けてくださいませ
>>598,599
オフスクリーン使え。
スキンメッシュなんざググれば(ry
601 :
598:2011/08/03(水) 12:59:12.75
>>600 オフスクリーン≒レンダターゲット?ならTexture2D対象にやってるっす
問題はモデル真っ黒にしたいけどそれってピクセルシェーダでやらなきゃ
だけどSkinnedEffect使わなきゃだからカスタムシェーダ使えねえってこと
SkinnedEffect+AlphaTestはできんのかなーって?
>>601 レンダーターゲットの使い方工夫しろよ、低脳
XBOX360ではHLSLのPointScaleEnableとPointScale_A〜Cは使えないの?
Windowsではビルド通ったけどXBOX360では通らない
GraphicsDevice.RenderStateにあるかと思ったらないし
環境さらすの忘れてた。
VS2008+XNA3.1です。
XNAでスレッドを使って処理を分散しているサンプルとかないですか?
Update()のタイミングに合わせてスレッドを動かす方法が知りたいです。
見たことないな。マルチスレッドは苦労の割になかなか速くならないし。
タスク並列がやりたいんだったら、.NET4+WinならParallel.Invokeが簡単。
それが使えないならThreadPoolで実行させてWaitHandleで待機する。
当たり判定のような特定のループが無茶苦茶重いんなら
タスク並列よりもそのループを並列化したほうがずっと楽で確実に速くなる。
ひにけにでやってなかったっけ
話題には出してたが、サンプルはなかった気がする
データ並列の当たり判定とかどうなんだろう
とんでもなく数が多ければコア数倍に近づくだろうけど実際のゲームで速くなんのかな
デフォルトで使えるspriteFontの類って著作権等の権利形態はどうなってるの?
勝手に使ったらダメよ
レンダーステートの変更はGPUに負担をかけると聞いたのですが、
device.BlendState = BlendState.NonPremultiplied;
のような命令の時点で負荷をかけてしまうのでしょうか?
613 :
デフォルトの名無しさん:2011/08/17(水) 01:30:31.76
XBOX360でThreadPool使ってみたら恐ろしく重くなった
んで、ログを見ると
スレッド 0xf900001c はコード 0 (0x0) で終了しました。
みたいなのが毎フレーム出てくる
XBOX360のThreadPoolはThreadを本当にPoolしてるのか……?
そういうもんだから管理は自分で
車輪の再発明したら箱でもスレッド毎回作り直されることなくなったわw
>>614 サンクス
sprite.Batchのカラーで悩んでいます。
sprite.BatchのDrawの第4パラメーターの色指定で
色を時間に応じて替えさせるために変数を代入したいのですが
new Color(120, 120, 120)
とするのと
int x;
x = 120;
new Color(x, 120, 120)
とで結果が違ってしまいます。nex Colorの中のxにとても大きな
数値となって入っているような感じです。int型を代入させようとしているのが
いけないのでしょうか。しかし()内は整数のようですし・・・もしint型が原因ならば
どのような型の変数を代入すればいいのでしょうか。
byte
3.1?
このへん4.0と変わってるからバージョン書いた方がいいよ
>>617 どうもありがとうございます。byte型を入れてみたところ予定どうりの
色調整ができました!
>>618 アドバイスありがとうございます、これから気をつけます。
現在の手元のバージョンは3.1でした。
言われて調べてみたところ、どうやらインディーズは4.0での
提出のみとなるようですね。透明処理などの仕様も変わるとか・・・。
早速移行してみようと思います。
VisualStudio2010をいれて、XNA4.0に移行してみました。
自動変換で書式の違いでエラーがいくつも出るのは覚悟していたのですが
・XACTで作ったサウンドファイルを読み込んでくれない。
また、別の方法で音をならせることもできそうです。
・Contentを右クリックしてVisualStudio2010で画像を読み込みなおしても
「This file was compiled with wrong version of the XNA framework」
とのエラー。
後者の原因がわかりません。Contentに生の画像ファイルを置いて2010で
読み込んでいるのに何でこのようなエラーが出るのかおしえていただけないでしょうか。
遠い道ながら完成の道は見えていたところだったので、嫌な汗が噴出してます。
ならば1からと新規作成を起動しようとしたらビデオカード不対応といわれて
ショック大きい・・・。どうかよろしくおねがいいたします。
Hidefじゃなくて
Reachにしてみれば?
>>621 ありがとうございました。おかげさまでビルドに成功しました。
昨晩は絶望したのですが、それで最初からはじめてコピーも使って
以前の状態にもどりつつあります。これは個人的な報告ですが
移行作業の参考になる人もいるかもしれないので。
XACTエラーは4.0のフォルダにあるものを使わなかったのが原因のようでした。
Contentは原因わかりませんが、バージョン上げても2008のタブもあった
事と関係あるのかも。プロジェクトが2008で作ったものを参照したがってた
のか・・・あまりよくわかりませんが最初から作ったので問題なくなりました。
テクスチャサイズの最大値が、2008では警告だったのにこっちはエラーに
なるんですね。つくり直しました。
alpha.brend.modeを
spriteBatch.Begin
(SpriteSortMode.BackToFront, BlendState.NonPremultiplied);
にしました。
仕様変更の結果(?)
以前表示されていた背景が表示されなくなって不思議に思ったのですがどうやら
spriteBatch.Draw(BG115, new Vector2(0, 0), new Rectangle(posB, 0, 1240, 600), new Color(255, 255, 255)
, 0.0f, new Vector2(0, 0), 1.0f, SpriteEffects.None, 0.3f);
spriteBatch.Draw(BG115, new Vector2(0, 0), new Rectangle(posB - 1220, 0, 1200, 600), new Color(255, 255, 255)
, 0.0f, new Vector2(0, 0), 1.0f, SpriteEffects.None, 0.3f);
背景が同時1つしか表示できなくなってるようです。
勘違いだったらごめんなさい。
↑
ごめんなさい。
パラメーターの意味あいが変わって、表示優先度などがメチャクチャに
なっていただけみたいです。大間違いですみません。
Cueを使用して効果音を鳴らせていますが
同フレームに同時にならすと音がその倍、大きくなってしまいます。
forループ内に音を出す命令を書いた場合や
複数のザコに攻撃が同時ヒットした場合のヒット音など。
何か良い解決策はないでしょうか?
再生数に合わせて音量を落とすとか
>>626 シチュエーションによって2人に・3人にと同時ヒット数がいろいろなので
その方法だと厳しいようです。
そんなのロジックの問題でしょ
当たり判定してすぐに鳴らさないであとでまとめて鳴らすとかどうとでも
>>628 同時再生で音が大きくなるのはプログラムで回避すべき問題なんですね。
了解しました。
音をならすシチュエーションで変数を動かして、その変数で一つの音を
鳴らすように工夫してみます。
回答ありがとうございました。
>>629 つか、実際プロが作ったゲームをプレイしてみてその辺をどうしてるか参考にしてみては?
大きくなってもいいじゃない
>>630-631 あれから解決しました。
bool型でsoundplay変数を作って
音をならしたい時はそれぞれの場面でならすのでなくこの変数をtrueに。
if(bool soundplay == false)でならす条件を絞って
trueになったフレームにだけ音をならして3フレームでfalseにもどっと
その間は音が重ねてでないようにしました。
SpriteFontってSpriteBatch.DrawString以外では使えんの?
たとえば自前でSpriteFontの描画ロジック積むとか
XNA3.1です
四角のポリゴンにテクスチャを張ったのは出来たんですけど
透明色指定の方法教えてください
透明色は過去の遺物
アルファチャンネル使う
>>635 どうもです
アルファチャンネルを調べてみます
637 :
デフォルトの名無しさん:2011/09/01(木) 02:28:29.82
XNAで不特定多数の漢字を表示することって不可能なのでしょうか?
方法を検索しても使う漢字全て調べて使えるようにするっていう方法しか見つからないのですが・・・
>>637 JISコードの漢字の並び順は第一水準、第二水準と並んでいる(ボソ
もしくは、後で拡張出来るようにする予定でもなければ、セリフとかのリソースをスキャンしてxmlを生成するプログラムをくんでも良いし
(そしてそれをコンパイル時に実行するようにしても良いし)
ちなみに、今の時代、オンボでもなければビデオメモリは少なくても512MBはあるだろうから、
第一水準までのすべての漢字を取り込んだところで、気にするほどパフォーマンスは落ちないだろうよ。
Windows限定でいいならP/InvokeやSystem.Drawing使って文字描画するのは難しくない
文字列のビットマップデータを取得したらテクスチャにSetDataで書き込むだけ
celeron P4600の内蔵グラフィックでXNA動きますか?
動く。
もっと古くても2005年以降のintelマザボならオンボードで動く。
画像の端っこが、画像部分をはみ出して横に伸びてしまうんですが
この機能をオフにできませんか?
テクスチャの端に背景色を配置して対処してますが面倒です。
状況がわからん、どんなふうになるの?
>>643 Texture2Dで2Dドット絵なんですが
例えば25×25サイズのドット絵を描画するとき、この端っこに背景色以外のドットが
あると、右端にそのドットがある場合などは、その絵の右に
ビヨーンと右端の色を伸ばして塗りつぶしたふうになってしまいます。
テクスチャアドレッシングモードがクランプになってんじゃね?
すまん。 画像で笑ってしまった。
オラワクワクしてきたぞwwwww
この絵でゲーム出してwwwwwwwww
100円なら迷わず買う
そういう反応が欲しいわけじゃないだろ649はw
ゴムゴムのワンピースのゲーム作れ
654 :
デフォルトの名無しさん:2011/09/19(月) 16:17:08.52
SpriteBatchだけだとUVスクロールってできない?
655 :
デフォルトの名無しさん:2011/09/19(月) 17:47:06.57
表示結果
http://ichigo-up.com/cgi/up/qqq/nm41730.png.html コード(Draw()の中身)
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin(SpriteBlendMode.AlphaBlend, SpriteSortMode.FrontToBack, SaveStateMode.None);
GraphicsDevice.SamplerStates[0].AddressU = TextureAddressMode.Wrap;
GraphicsDevice.SamplerStates[0].AddressV = TextureAddressMode.Wrap;
spriteBatch.Draw(mami, new Vector2(0, 0), new Rectangle(-100, -100, 800, 600), Color.White);
spriteBatch.End();
base.Draw(gameTime);
テクスチャアドレッシングモードの変更だけじゃだめぽいね。
656 :
デフォルトの名無しさん:2011/09/20(火) 01:08:53.99
SpriteSortMode.Immediateにするとできた。
よく考えると当然のことなんだよな……
657 :
デフォルトの名無しさん:2011/09/20(火) 01:27:04.63
テクスチャの一部を切り出してタイリングするにはどうすればよいのでしょうか?
やはり一旦別のテクスチャに描画する必要があるのでしょうか?
658 :
デフォルトの名無しさん:2011/09/20(火) 17:11:50.59
バージョン変わる毎に使えなくなる機能が多い……
なんで下位互換が無いのこのライブラリ
まぁなんか作る前に気付けて良かった
やっぱObjective-C最強やね!
所で何でNHKは宮家の事を王家って言うの?
百歩譲って皇家はまだ理解できるけど王家って・・・
EmperorとKingは全く格が異なるのにそんなことも理解できないの?
>>660 王のいない一国の中で王だろうが皇だろうがどっちでもいいじゃん、そんなのw
662 :
デフォルトの名無しさん:2011/09/21(水) 22:53:42.70
MIYAKE
Syntax error.
Ok
>>660 で、どう違うの?
C#を統べるMSがエンペラーでソニーワールド内だけでC#を統括しているソニーがキングってこと?
アジアにおいて王というのは中国の下僕であって
天皇というのは中国と対等であるという意味において
まったく異なる
そんなことをドヤ顔で語られたところでスレ違いどころか板違いなんだがな
ピコピコよりはるかに重要な話だろ
668 :
デフォルトの名無しさん:2011/09/25(日) 17:33:35.53
XNAは変位マッピングに対応してるの?
テキストファイルのデータ(id,name,price,type,・・・)*200を読みこませるのってどうするのがベターなの?
XBOX360ってSQLite使えたっけ?
SRT行列matがあったとして
mat.Decomposeで取得されるQuaternionと
Quaternion.CreateFromRotationMatrix(mat)で取得されるQuaternionは
常に同じになりますか?
673 :
デフォルトの名無しさん:2011/10/11(火) 01:22:47.65
XNA4.0のMicrophone使った人いますか?
普通に音声の再生はできるのですが、
FFTをかけるとスペクトルが-10dBと-80dB付近を行ったり来たりしています。
たぶん、奇数番目の値がケタ上げに使っていると思ったのですが、
いかんせんそれから先に進まない状態です。
誰か実験した方とかいませんか?
674 :
デフォルトの名無しさん:2011/10/12(水) 03:41:03.85
XNAとDirectX11は併用できますか?
たとえばXNAコード内にDirectcomputeを使用したりとか
やったことないから確実なことは言えないけど、Win限定ならP/Invoke使えば出来るんじゃない?
Reachプロファイルで減算合成って無理かな?
韓国に媚びうるフジテレビに徹底抗議する!!!
竹島は韓国領土などととんでもない嘘を世界に向けて発信したキムテヒを許さないぞ!!!
☆フジテレビ抗議デモin銀座☆
【時間】 平成23年10月15日土曜日 【集合】13:45【出発】14:00
【場所】 東京都千代田区大手町2-7-2常盤橋公園
【抗議内容】 フジテレビ偏向報道への抗議・反日女優キムテヒドラマへの徹底抗議
公式HP
http://yuh20112525.kagennotuki.com/
透明処理をしようとすると、何か透き通ってるというよりも白っぽくなってしまうんですが
これは避けられませんか?
具体的にspriteBatch.Drawカラーの(255,255,255,100)の透明指定を使って
いるのですが・・・
>>678 BlendStateをNonPremultipliedに
>>679 できました!
目的のとおりの透明になりました。ありがとうございます!
xnaでエロゲー作ってDMMとかで売ってもいいですか
682 :
デフォルトの名無しさん:2011/10/17(月) 23:28:54.11
画面に表示されている複数のオブジェクトを
全てラスタースクロールって出来ますか?
(オブジェクト=BG、キャラ、文字等の表示物)
そんなもん今時存在しないけど具体的に何がしたいの
画面全体を波打たせたりしたいんなら
いったんレンダーターゲットに描いてピクセルシェーダが簡単爆速
せやな
685 :
デフォルトの名無しさん:2011/10/18(火) 00:09:08.77
>>685 あらためて見てプロが作ったゲームってすごいな。
プレイよりもそっちに目がいってしまう。
ラスタースクロールのしかた自体がわからにゃい
ピクセルシェーダでサンプルする座標を三角関数で適当にずらすだけ
本物のラスタースクロールなんて糞重くて面倒臭いだけ
689 :
688:2011/10/26(水) 19:33:22.44
ああ本物っていうかソフトウェア処理とか1ラインずつ描画するとかのことね
昔、ダライアスがラスタースクロールですげぇすげぇ言われてて
そんなにすごいのかと思ってたが
プログラミングで試行錯誤してたんだろうね
えっ
XNAはじめてから市販のクソゲーにちょっと寛容になれた気がする。
セーブとロードが分かりにくすぎる・・・
3行で解説頼む
わかる気がするって言うような奴がクソゲーを作る
696 :
デフォルトの名無しさん:2011/10/30(日) 22:11:33.72
クソゲ作るならクソして寝ろ
>>693 ストレージサービスの使い方?
それともシリアライズ?
C#でマイクを使いたいのでXNAを検討しています。必ずゲームのウィンドウが表示されるのは、どうにかならないのでしょうか?
できれば、ボタンやテキストフィールドのあるフォームを使いたいのですが。
SilverlightのOOBで作るのが多分一番簡単
それかMCI使う
700 :
デフォルトの名無しさん:2011/11/07(月) 14:53:36.21
C#でマイク使うのにXNAはいらん。
701 :
デフォルトの名無しさん:2011/11/08(火) 00:24:10.53
へえ
雨の三日も降ればよい
配列の配列の配列のサイズの指定方法がわかりません。
配列の配列(二次元配列のように使うジャグ配列)は
***[0] = new int[5];
という感じでいけるのですが
配列の配列の配列はどのようにサイズ指定を書けばいいんでしょうか?
***[0][0] = new int[5]; とやってもだめ
***[0] = new int[3][5]; とやってもだめです
回答よろしくおねがいします。
int[][][] a = new int[4][][];
for (int i = 0; i < a.Length; i++) {
a[i] = new int[3][];
for (int j = 0; j < a[i].Length; j++) {
a[i][j] = new int[5];
}
}
}
>>704 代入のしかたまで・・・!どうもありがとうございました
動作も成功を確認しました。
それまで3次元配列だったのですが敵の配置を増やすにしたがっ
Xbox上ではまだわかりませんがPC上ではかなり重くなっていたので
ジャグ配列に変えることにしたのですが、助かりました。
こっちのほうが速いのん?
右の添字が一番速く回るならジャグ配列の方が速いし便利
でもゲームでその程度が問題になるってよっぽどだぞ
他に原因がありそう
>>707 >でもゲームでその程度が問題になるってよっぽどだぞ
きっと自分はプログラミング下手で効率の悪い処理をしているのだと思います。
敵Aが
「80配置されて」「5回にわけて」[6way弾発射] →[80,6,5]
それぞれの弾に10種類あるパラメーターに全てこの配列
敵Aと同じようなのが15種類あたりでフレームとびが顕著に・・・
709 :
デフォルトの名無しさん:2011/11/14(月) 11:57:01.37
配列に添え字でアクセスなんてしないでください。
イテレーターを使わないとバグを量産しますよ。
イテレータがあるからそれを使えってのならわかるけど、
それくらいのことでバグを量産できてしまう人の方が何か問題があるんだろう
つまり、俺が一番頭がイイってことだな
なるほど
713 :
デフォルトの名無しさん:2011/11/14(月) 18:38:19.90
>>710はプロジェクト終盤でデータが微妙に増減したとき、
すべてのソース内において的確に修正を行える天才なんだね。
こりゃまいったわ、ぐうの音もでねえ。
ここに大天才現る!
714 :
デフォルトの名無しさん:2011/11/14(月) 18:43:09.57
タスクシステムを使えばイテレータなんて不要
もちろんバグも出ない
>>713 別にプログラムがデータの個数に依存して書かれてるわけじゃ無いんだから、問題なさそうだけど。
>>714 そのタスクシステムってのは
イテレータつかわずに自前でコレクション管理してるの?
バグフリーとか相当品質高そーだね。
は?
やっぱり本人に問題ありということで。
719 :
デフォルトの名無しさん:2011/11/15(火) 14:24:35.86
すべてのソース内において的確に修正を行えないクズが多いんだな
まあそれ以前に配列のサイズが変わったくらいであちこち修正が
必要なコードを書く間抜けがいるんだなw
そうだよな、そこがまずおかしいから、本人に問題ありだって言ってるんだ。
なんで配列の配列を使ったほうが軽くなるの?
>>723 JITコンパイラーの都合で、1次元配列の方が最適化が効きやすい
だから、1次元配列を2重に使ってる配列の配列の方が速くなる“ことがある”
って話は聞いたことある。
まあ、内部実装考えたら普通は多次元配列の方が速いはずなんで、
それが狂うときはJITの都合ってこと。
JITじゃなくてILにコンパイルされた時点で違うよ
for (int i = 0; i < a.Length; i++) a[i] += 1;
一次元配列のこういう形のループはILの配列専用命令が使われて
JITで特別に強力な最適化がかかるらしい(配列の場合はforeachでも同様に最適化される)
だから a[i][j] への連続したアクセスが
for (int i = 0; i < a.Length; i++) for (int j = 0; j < a[i].Length; j++) a[i][j] += 1;
の形に書けるなら一般に配列の配列のほうが速くなる
バラバラにアクセスされるならたぶん多次元配列の方が速い
長々と書いたのに「たぶん」なんてアホ杉
なら計測してくれよ
前にやったことある気がするけどよく覚えてないんだよ
>>726 いちいちつっかかるんじゃねーよオメーはよー
ワロタ
731 :
デフォルトの名無しさん:2011/11/17(木) 09:25:09.39
クスクス
732 :
デフォルトの名無しさん:2011/11/18(金) 11:06:24.43
この流れで思い出したが、一昨年頃に普通の条件分岐とポリモーフィズムを使った
C風に言うところのポインタ分岐とで、どちらが早いのか揉めたことがある
一方はGPUで条件分岐入れると糞重くなるから似た構造のCPUでも自明のことだと、
もう一方はプリフェッチが効かなくなるから遅くなると
んでベンチマーク組んでやってみたが、PC上ではパフォーマンスの違いは見られなかった
XBOX360(PowerPC)やWindowsPhone(ARM)だとまた違う結果が出るのかもな
switchとポリモーフィズムで比べたことある(PC,.NET2.0)
最初あまりにも差が大きかったからメソッドのインライン展開を抑制したら差は小さくなったけど
やっぱりそれでもswitchの方が若干速かった
734 :
デフォルトの名無しさん:2011/11/18(金) 11:58:42.54
switchを使う最適化は終盤でどうしてもそこがネックになるときだけでじゅうぶんだっての。
メソッドインライン展開やめるのも、終盤になってそこがネックになったら、
って言わないと片手落ちだな
>>732 おまw
GPUは条件分岐むちゃくちゃ苦手、CPUとは構造違いすぎるとかくらい知っとけよ。
737 :
733:2011/11/18(金) 17:07:47.16
>>735 インライン展開で遅くなってたんじゃなくて、純粋に分岐の測定がしたいから
インライン展開を抑制してswitchの方を遅くした
ポリモーフィズムだとインライン展開できないから、
(実際はやってるらしいけど分岐先がバラバラだと効果が薄い)
実際にパフォーマンスに響くのは分岐云々よりもほとんどそれだと思う
最適化は終盤になってそこがネックになったらというのは同意
分岐先の出現頻度が極端に偏ってるなら(大抵そうだが)ポリモーフィズムの方も
動的なインライン展開が効いて、switchと違って分岐予測も効きやすい分
ポリモーフィズムの方がもしかしたら速くなるかもね
測ってみないことには何も言えないけど
分岐予測自体もどの程度効くのかいまいちわからないけどね。
命令キャッシュのヒット率の方が支配的な要因だったりして。
統計取って、出現頻度順にif並べるのが一番速いんじゃね
コーディング時に分岐予測するわけか
sprite.Batchでnew Color(255,255,255)の値を下げることはできても
あげることはできませんね。
攻撃をうけたキャラを白く点滅させたいのですが、spritebatchの記述で
絵を白く(元絵より明るい色に)する方法はないでしょうか?
一応、白く塗りつぶしたキャラ絵をもう一枚重ねて点滅させてみせる方法も
可能ではありますが描画の負荷が倍になってしまうので
できることならパラメーターをいじって元絵の色を白色にしたいのです。
シェーダー使うのはダメ?
あとはレンダ―ステートでなんとかなるかな?
>>743-744 ありがとうございます。
シェーダーもレンダーステートも全く知らないので調べてみます。
既に少しは検索しましたがむずかしそうですね。
746 :
デフォルトの名無しさん:2011/11/25(金) 16:30:59.75
入力した3Dモデルの中身埋める(ソリッドする)にはどうすればいいのでしょうか…
作ったアプリを配付する場合にXNAで作ってると文句言われたりしないかが心配・・・
余計な手間掛けさせやがって!とか
文句を言わせない物を作るんじゃよ
いまどき、ダウンロードして実行するアプリの時点で大半の人変えるけど、
その先は50歩100歩だから別にXNAのランタイムのインストール手間くらいどうってことないと思う。
VertexBufferのPositionが所々非数値となるのですがどういうことでしょうか?
当たり判定の
バウンディングスフィアって楕円形は設定できないのですか?
できますよ。
面倒だから○を複数配置でごまかします
>>753 楕円形を書く場合のパラメーターを教えていただきたいとおもいます
BoundingSphere bounds = new BoundingSphere(中心座標, 半径);
とだけ把握しているのですが・・
>>754 大変だったらそうしようと思っていますw
756 :
デフォルトの名無しさん:2011/12/06(火) 09:53:13.98
できないような気がするけど、できるなら知りたいな。
できないんじゃないの?
だってSphere=球体だろ?
box以外あるということをはじめて知ったレベル
標準のBoundingSphereをなんでつかうのかわからん。
空間分割から押し出し処理までまで自作せにゃならんのだろ?
物理エンジン使えば一発なのに。ついでにUNITY使えばもっと楽なのに。
はこまるのゲームつくるお、これで僕もクリエイターだお( ^ω^)
つって入門書買ったような初心者が最適解を見つけ出すのは困難
別にXNAはゲームエンジンじゃないから
API
低火力コンボしかだせない初心者に、何でもっと強いコンボ使わないのか聞くような野暮はやめたまえ!
>>762 だが、ゲームエンジンがAPIになれないわけでもない。
765 :
デフォルトの名無しさん:2011/12/21(水) 00:49:36.81
VisualC#2011Express、XNA4.0 で趣味の開発をしています。
実行時のウィンドウの起動位置について、
C#でフォームアプリケーションを作成する場合のように、
XNAのプロジェクトでも指定をすることはできないでしょうか?
解説のあるページなどあれば教えていただけると助かります。
マルチディスプレイ環境で開発を行なっており、デバッグ時だけでもサブディスプレイの方で起動させたい次第です・・・。
>>765 本題に関係ないとは思いますが誤字がありました。
開発環境、VisualC#2010Expressの間違いですね。
そんな環境知らない・・・。
DllImportしてWinAPIで
768 :
デフォルトの名無しさん:2011/12/22(木) 00:10:14.00
XNA使って学んだことってXNA以外で活かせるの?
ゲームのロジックはどんなプラットフォームでも言語でももちろん共通だし
XNAはDirectXの薄いラッパーだからDirectXの知識もバッチリ(というかDirectXわからないとXNAは厳しい)
Unityみたいなのに比べればよっぽど潰しが利くよ
>>767 ご回答いただきありがとうございます。
[DllImport("user32.dll")]
private static extern void SetWindowPos(System.IntPtr hWnd,
System.IntPtr hWndInsertAfter,
int x, int y, int cx, int cy, int uFlags);
このメソッドを使用することで実現できました。
コマンド入力のアルゴリズムでポピュラーなのはどれですか?
どれ?ってどれとどれ?
いろいろあるでしょ?
一つじゃないでしょ?
もう少し具体的に、絞り込んだ質問でないと答えにくいんじゃね?
例えば格ゲーのコマンド入力って
c++だとカンストで配列定義したものを検証して
(配列要素にコマンドが入ってて全て検証したカンストだけを真と返す)
できるけど、unityだと配列使えないしLISTで定義してもカンストできないから使えないんだよね。
何かいい方法ないかな?
Listも配列も基本的に同じことできると思うんだが。
あと、余計なお世話だけどプログラム以前に
他人が読みやすい文章書く練習したほうがいい。
俺には「コマンド入力のアルゴリズム」も
「カンストで配列定義したものを検証して」も何言いたいのかわからん。
XNAスレでunityのこと質問してるのも意味不明。
自分もUnity使ってるけど、普通に配列使うぞ。
初心者の自分なんかだと、格ゲーコマンドはどうなるだろう・・
ボタンや方向全部用のint型変数とbool型変数わりあてて
bool leftKeyOn
int leftKeyTime みたいな
キーダウンするとそのボタン(方向キー)にわりあてた変数で
boolがTrueになってTrueだとintが増えて時間カウントして
時間が15すぎるとfalseとint=0にもどされる
15になる前に下、右、XボタンがTrueになってると波動拳が出る。
と、そんなふうになるだろうなぁ。
あ、下を先におさないといけないから下のintの数値が右よりもひくくないと
いけないからそれも技が出る条件にするか。
>>777 いや、これはunityとかXNAとか関係ない部分だから。
日本語はなあ…コード見せないと俺もうまく伝えられんわ。
@キー入力のオンオフを#defineで定数aに割り当てる。定数をビットで初期化し、スイッチにする。
Aキー入力を取得してビットを加算する。
これで各入力が一つの変数bに収められる。
Bbを配列に記録する。最大60フレームほどをカバーするために配列の上限は60個。この配列をcとする。
Cコマンドのデータベースを作る。
constでコマンド名を複数羅列dし、
各コマンド名に配列を割り当てる。
配列にはコマンドの入%9
>>777 いや、これはunityとかXNAとか関係ない部分だから。
日本語はなあ…コード見せないと俺もうまく伝えられんわ。
@キー入力のオンオフを#defineで定数aに割り当てる。定数をビットで初期化し、スイッチにする。
Aキー入力を取得してビットを加算する。
これで各入力が一つの変数bに収められる。
Bbを配列に記録する。最大60フレームほどをカバーするために配列の上限は60個。この配列をcとする。
Cコマンドのデータベースを作る。
constでコマンド名を複数羅列dし、
各コマンド名に配列を割り当てる。
配列にはコマンドの入力順にaをいれていく。配列末尾には入力末尾を示す定数ビットeを入れ、e|25としておく。
25はコマンド入力の入力フレームの限界値。25フレーム以内にコマンド入力しないとコマンド不成立になる。
Ddをポインタで参照し、コマンド入力の可否で成立したコマンドを特定する。
Eそれぞれのプレイヤーの成立コマンド、あたり判定を判定し、モーション、体力ゲージに反映させる。
このCとDのポインタで一度に参照できる複数の定数のカタマリと、定数それぞれに配列が入力されているデータが、unityだと微妙に作れない。
単純な配列をうまく作れない。
配列LISTを定数に入れても定数へのポインタが作れない。
XNAでもC#ならポインタは使えないし、
こういったデータが必要になる事もあるだろ?
それともXNAには何か他に良い方法があるの?
すまん。二重投稿になりました…すいません。
もうちょっと抽象的に考えようよ
ポインタの代わりに配列のオブジェクト参照と要素のインデックスをセットにした構造体を使うとか
どうとでもできるだろ
app hubのサンプル参考にすればいいんじゃないの?
ありますね。すいません。すごく充実してますね。知りませんでした。
>>780の終わり方ってパケットが途中で失われたのだろうか?はじめて見た気がする。
>>787 クライアント(2ちゃんビューアとか) が腐ってたんじゃね?
なんか話題ないのかね
今んとこ将来暗そうだもん、話題生まれるわけないよ
Windows8まで待ちじゃないかな
windowsが標準でXNAFramework搭載して、マーケットがXNA対応して、
モバイルはカスタムシェーダ使えるように、せめてそれくらい必要だけど
それすら望めないという
しかもそれらに対応したところで
Windows以外のプラットフォームに注目が持っていかれてて
XNAより楽チン高品質マルチプラットな開発環境がうじゃうじゃ存在する
もう時代にそぐわないんじゃないだろうか、XNA&DirectX
windows8じゃXNAは乗らないから
XNA is dead て海外のサイトで特集やってたよ
え?また終わるの?orz
どうすんだろね、ほんと。
当面、パフォーマンス欲しいところはネイティブで書いてくれって方針から、
DirectX生 + C++ にフォーカス戻っちゃってるけど。
でも、ゲームもなぁ、描画回り以外はそこまで C++ にこだわりたくないしなぁ…
別に過去に戻る分には大半の技術者はなんでもいいんじゃない
過去資産の使いまわしって意味では一通りの枠組みは用意してあるはずだしね
ここからまた新しいゲーム用開発プラットフォームを用意しますってんなら
えーにもなるけど
そこでC++/CLIですよっ!
そいやC#のネイティブコンパイラなんで提供してくれないんだろ。
C++今更戻れない。UnityかPSSuiteSDK行けってこと?
C# は、ある程度クロスプラットフォーム(MS 以外の製品っていうよりは、クロス CPU だけど)狙ってるからなぁ。
そうなると、中間層はさまないと個別最適化大変。
結局、MS 側の開発コストの問題でああいう実装取らざるを得ない。
大部分はC#で書く前提で、性能必要な部分だけに使うよう、コンパクトにまとめて、
かつ、C++ の歴史的な泥臭い部分をある程度カットしたような言語は欲しいよなぁ。
新たな言語なんて勘弁。monoはC#ネイティブ化できてるし、
MSも内部ではC#ネイティブコンパイラ使ってるらしいからできない
話ではないと思うんだけど。
ネイティブじゃなくてもいいけどソースが復元できるのはやめて欲しいなー
ARMに対応するというのに今更ネイティブはないわ
>>799 なんだそれ、自分とこのソースは隠して他所のは覗き見しちゃうわけか
さすがMS、頭いいなーーー
いやVS2010とかExpression Blendとかソース見放題だぞw
難読化すらされてない超綺麗なソース
ソースが復元できるのはつらいよね。
海賊版いくらでもつくれるってのは商売用じゃない。
というか、久しぶりに盛り上がったと思ったら
かなりスレ違いの内容ってが悲しいよね。。
それで問題になってるソフトってなにかあるかよ?
Javaなんて15年位前からあるし、C#だってそろそろ10年選手だろ。
コピーで問題になんてなってんのかい?
そもそも、プロプライエタリではそうゆう言語は選ばれません。
C#はツールに使われることは多いけど、C#製パッケージ見たことあるか?
C#がデコンパイルできなかったら今頃新規案件でC++を駆逐してる。
ゲームなんかはC#っていうか.NET多いけどね
MagickaとかTerrariaとか
それらって、アイデア勝負だからってとこがあると思う。
技術的に見るべきとこはないから。
あと、Terrariaは速攻クローンできてたような気もする。
javaでもソース見られるから同じじゃないの?
そうだね
問題だね
>>807 プロプラもいろいろあるんだけどな。
ゲームに限ったら速度の問題や資源管理をプログラマーが、
綿密に行いたいって事からあまり使いたがらないのはあるよ。
あとはC++にしがみついてる人たちの圧力と、
ゲームコンソールだと開発環境にC#のコンパイラが無いくらい。
そういう言語は選ばれませんの答えとしてはあなたが書いたことは的外れではないかね?
質問です。RenderTarget2Dのデプスやステンシルは
レンダーターゲットを変更したら失われてしまうんですか?
自らクリアしなければ残ってるよ
SpriteFontで漢字を扱う場合に、
・2万文字全指定
・ツールで使う文字だけ抜き出して設定
これ以外になんかベターな方法ない?
360で動かすならそれ以外の方法は無いでしょ
PCだったらGetGlyphOutlineでもSystem.DrawingでもWPFでも何でも使える
フォントのアンチエイリアスの方法を教えてくれ、分からん
>>797 WinRTはC#も.NETを介さないネイティブみたいなものらしいけど
XNAの扱いがいまいちわからない
WinRTは単なるCOM APIで、MetroではC#はWin8に入ってる機能限定の.NETで動く(Silverlightのようなもの)
仕組み的には何も新しくない
MetroではXNAはサポートされない
Unityはだいたい使えます。
XNAについて知りたいので概略がわかる1冊教えて下さい
4.0対応の日本語の書籍なんてあったっけ?
4.0はOreillyのオススメ
英語だけどな
823 :
820:2012/02/29(水) 22:45:42.17
日本語の本で4.0で全体を網羅していて評判のいい本を教えて下さい
自分で調べた限り適当な本が存在しません
俺も知らんw
オレイリ本が早く和訳されるのを祈るのみ・・・
XNAについて #N/Aエラー
826 :
デフォルトの名無しさん:2012/03/06(火) 02:27:02.18
かなデータと変換データで、漢字表示をクライアント側に投げる技術ないかな。
何言いたいかよくわかんないけど、
IME使いたいってことならどっかのサイトにサンプルあったよ?
動作してるプラットフォームを教えてくれるgetメソッドみたいなのってないの?
WPなら入力コントローラーの画像を表示して、
360やWindowsなら何も表示させないって動作させるにはどうすれば・・・
コンパイル時に切り替えじゃだめ?
#if WP
だな
実行時に判断とか意味ない
#if WINDOWS_PHONE
これ4.0入れてても3.1のゲームは動かないんだな・・・
今後もバージョンアップするたびにこうなる?
>>832 今後バージョンアップされるかどうかあやしい。
もうこれ使っている人自体ほとんどいないと思うぞ。
今は全部エンジン任せの時代だもの。
エンジンでできるならそれにこしたことはないんだけどね
つーかXNAがエンジンやし
>>834 エンジンにできなくてXNAにできることあるだろうか?
エンジンとはいっても結構低レベルアクセスできるからなあ。
ゲームエンジンでできるのって映像重視の
アクション、シューティング、RPG、パズルゲー
ぐらいしかできないじゃん
映像部分より他に手間がかかるから、エンジン積んで効率上がるわけでもないし
そもそも個人でやっているから、そんなハイテク使う意味ないし
>>837 レスありがとう。エンジンにもいろいろあるけど、XNAと比較されるのは、
3DもできるUnityやUDKだと思う。それらは上記以外にRTS含むシミュにも向く。
できないと思うのはADV?でも、それもつくられてるようだし。
エンジンって映像以外のAIやシーン管理やUI(フォント)、エディタも
提供するもんじゃないの?だから、効率は相当良いはず。
XNAだから楽、XNAだからできる、ってものが知りたい。
839 :
デフォルトの名無しさん:2012/04/21(土) 23:25:41.85
XNAはフレームワークですね
できるのと作業効率は違うからな
向き不向きがあるんだよ
XNAは低レベル層を隠ぺいしたフレームワークだけど、
コンテンツパイプライン周りとかはさらにシンプル化が進んでる感じだな
まあそのパイプラインプロセスは自分で書くわけだが。
適切なパイプライン拡張作れば例えばテキストと画像突っ込んだだけでADVができるツールキットとか作れるだろうし、
割とプリミティブに近い部分まで触れるからXNAはゲームフレークワークを作るためのフレークワークなんじゃなかろうか
XNAだからできるとか、XNAにしかできないことといったら個人での箱○やWP上で動くゲームの開発だろ。
>>841 丁寧なレスありがとう。
Importer(パイプライン)の実装はUnityでもできることを確認してる。
XNAは動的読み込みがランタイムだけではできないのがマイナスかも。
ただ、XNB形式でコンテンツがデフォで保護されるのはいいと思った。
フレークワークを作るためのフレークワークってのは同意。
箱とWPは確かにXNAにしかできないね。だが、WP8がネイティブ許容されて
Unity参入する予定であることとWinRTへの非採用を考えると、
そうしたMS固有のXNAの利点はなくなっていく気がする。
エンジンと住み分けるためには、低レベル機能の充実が必要と思う。
エンジンも低レベル扱えるけど商用であるからには弄れる限度がある。
ただ、XNAも現状ではそれと同程度の低機能なのが問題だ。
(クロスプラットやFW開発労力が原因だろうが)
例えば、動画再生ひとつとっても細かい制御ができないのは不満で、
エンジンに優っていると思えるAPIが見当たらない。
SharpDXに移るのがよい解決策かな。XNA(マルチプラットフォーム)と
SharpDX(高機能)をコード共有して使い分けるとか。
エンジン(高レベル実装、マルチプラットフォーム)と
低レベルラッパー(高機能)のいいとこどりしてほしかったんだが。
ま、なんにせよ現状のままだとXNAに将来はないし、マイクロソフトにも
頑張ろうって姿勢が見えないもん。
844 :
デフォルトの名無しさん:2012/04/22(日) 15:06:58.26
ゲームエンジンとフレームワークを比較してもなw
>>844 フレームワークがゲームエンジン以上の低層アクセスができない場合、
フレームワークの存在価値はまったくなくなると思うんだけど。
逆にエンジンがフレームワークと同等に低層アクセスできるなら、
それはフレームワークを内包するといえるでしょ。
MOD的な機能をつけようとしたら
FBXファイルなどをを読み込む機能を自作しないとだめなんでしょ?
>>845 そもそもライブラリ/フレームワーク/エンジンというのは、どれも
基盤という点で大差ない。比較することはおかしくないんじゃない?
基盤の機能の粒度と基盤を利用することによる実装の制限(例えば、
ライブラリと異なりFWはそれを利用することにより実装の指向性がきまる)
がそれらの差であり、そしてより粒度が高いものが粒度が低いものを兼ねるとき、
粒度が低いものの存在価値はどうなるのかというのをいってるの。
すまん。845=847ね。
Unityはマウス操作でマップやキャラを構築するのが楽なだけで
ほとんどスクリプトで構築していくようなゲームの場合、必要ないんだよな
>>849 ほとんどスクリプトで構築するゲームとは?具体例求む。
対話的エディタもUnityはじめエンジンの利点ではあるんだが利点の一部に過ぎないと思う。
コリジョン、ポストエフェクト、シーン管理、リソース管理、ビヘイビア、
経路探索、カメラ、GUI、スプライトアニメ
必要ないものなんてあるか?
決してエンジンの宣伝したいわけではなくXNAをくさしたいわけでもない
んだけどすまんね。エンジンはだめという主張が感情的な強がりにみえてしまうんだ。
ある程度使いこんだ人の、納得できるXNAの利点とエンジンの欠点が聞きたい。
だめなんて一言も言っていない
俺が今作っているものには必要ないというだけ
3Dアクション多用したゲームなら俺もこれ使うよ
>>851 勘違いすまん。2Dゲームかな?頑張ってくれ。
2Dじゃない
アクションゲーしかやったことないんじゃないの?
自分が想像できる範囲のゲームでしか考えてなさそうだな
自分が作りたいゲームがUnityに適合しているならそれでいいじゃん
ただ俺は非効率的だからやらないというだけ
>>854 いや、俺はXNAユーザだよ。アクション興味ないし。
ただ、エンジンにこれをを完全に置き換えるポテンシャルがあるのではないかと
思ってるだけ。そして、つくるものによってはエンジンに非効率な部分があるという主張を
聞くけど、それが本当なのか具体的に何を指しているのか知りたいだけです。
XNAは対象が狭い分、企画が統一されている
入力デバイスに関しても何も考えなくていい
例えばCivのような戦略ゲームを作る場合どっちが楽?
ヴィジュアル的に3Dで表現するがそれは本質じゃないよね?
具体例でって聞いてるのに答えないんだからねぇw
>>856 おお。レスありがとう。たしかに入力はいいね。特にWP。
Win下のゲームパッドについては逆に皮肉になっちゃうがw
正直に言おう
unity使ったことない
ぼくのらいふ0だからもうこれ以上いじめないでね
>>858 すまん、荒れるような煽りっぽい書き込みはよそうよ。
久しぶりにスレ活性化してるんだから、まともに建設的な話をしたほうがいいじゃん。
エンジンはXNAに脅威だけど、逆にXNAを選ぶからこそ氾濫するエンジン製に
勝てる部分もあるかもしれない。そういうのを検証していくべきと思うんだ。
具体的に書けよ早く!
WPFやWinFormのコントロールを利用できる
ツールの制作に最適
ゲームに関しては動的なオブジェクトが大量にあると重い
minecraftのようなものを作ろうとすると、マップを狭くするしかない
狭くていいならUnityで作るほうが楽だけどね
>>863 いいひとだ、愛してる^^。
俺も一番の理由はそれ。下はゲームエンジンのこと指してるの?
UnityはGBufferつくってるせいかも。あれでポリゴン2倍っしょ。
XNAも結構重くてさ、インスタンシングやQuadTreeや各種カリングや色々
実装してはいるんだけどFPS全然でない…。
200回DrawPrimitiveで30万ポリゴンでIntel HD Graphicsで20Fps切るんだけど
こんなもんなんだろうか。
ソケットでTCPで送受信するサンプルで流用できそうなのってどっかにない?
ポートって開けっ放しでいいのかなぁ。
開けて送って受けて閉じてを毎回高速に繰り返せばいいのかなぁ。
あ、上記+テクスチャが300枚/フレームくらいか。
これって多すぎなんかな?
>>865 それXNA関係ない…。Winオンリーか否かで結構変わるよ。
tcp serverとかでぐぐればいくらでもでてくるって。
あ、300枚じゃない900枚超えてる、でもそれくらいで
GPUさんひぃひぃいうのかなあ。
XNAは初心者には最適だと思う
難しい数学的部分やデバイス関連もライブラリでやれるて、ほどよく3Dを理解しながらやれる感じ
エンジンは更に楽だけど、それで培った知識が他で使えるかといったら微妙
絵描きが画像フォーマットのアルゴリズムを理解しなくてもいいという感じに近い
>>870 培った知識か…
エンジンでもSRTやらQuarternionやらの知識必要だと思う。
各種用語わかんないともち使えないし。
プロがエンジン使ってる時点で世間で要求されるのはエンジン上の知識とも
とれるわけで。そもDX叩くのが必要になる機会ってなさそ。
あと、学習というのは必要時に必要なぶん、行うべきことだと思う。
そういった知識を勉強するのにいきなりunityだと厳しくないか?
unityてサンプルも充実してるし、コード気にする必要もないから
とっつきやすいんでわ?以前モデラのひとが1週間でそこそこ形になるもの
つくってるって話題になったような。
XNAって逆にやればやるほど深みにはまっちゃうような気が。
FPSとの戦いはもうやだよ…
FPSと戦いだしたらUnityもやばいよ。
そっか…。結局はそれが運命(さだめ)なのですね…。
実はXNAもサンプル豊富なんだがな
ドキュメントも
UnityってみんなC#で書いてるの
サンプルはJScriptが多いようだけどC#しか使ったことない
>>876 app hubのゴミはサンプルといわない。もうちょっと頑張って、使いまわし
しやすくしたり、高度な感じにできるだろうに。
webにソース付きのも多いけど大体2008年あたりから更新サイト減ってる。
対してunityサンプルは高品質かつ完成品に近いサンプルが多い。
もち今が旬だから更新頻度も高い。よって、そゆのじゃUnityにゃ勝てん。
一人unity信者が紛れているようだな
向こうに行けばいいのに
あーすまん。ゴミとかいいすぎた。そゆの荒れるモトなのに。
気がまわらなくてすまんね。でも、app hubのサンプルは正直お察しレベルじゃない?
初学者のお勉強用くらいのものだと思う。
>>679 レス見ればわかると思うけど、俺は別にunity信者じゃないです。
そもそもエンジンのなかで特にunityを特別視してもない。
>>877 やっぱ仕様人口はJavaScriptが多そう。
でも、JavaScript使ってるプロジェクトは軒並み、コード量増えてきたら泣いてる印象。
自分の観測範囲内での話だけど。
コード量が増えれば増えるほどJavascriptは辛い
この事に関してだけはGoogleさんの言う通りだと思う
884 :
デフォルトの名無しさん:2012/04/23(月) 13:37:51.19
伸びてると思ったらスレ違い過ぎだろw
いかにXNA利用者がいなくなっているかわかるなw
この流れを見てさらに移行が進む
Unityは最初手間取ったけど、一旦仕組みがわかったら
やりたいことがどんどん描けるね
初心者の俺でも2日でマップと生物を自動生成できるようになった
あとはAI作って生態系作るだけ
XNAは1週間かかっても座標変換など3D表示の仕方で停滞
DxLibも同じところで停滞
XNAとDxLibで停滞した経験が生きたに違いない
888 :
デフォルトの名無しさん:2012/04/23(月) 19:11:23.10
RPGツクールならもっと簡単にできるよ
Unityはナマモノです
890 :
デフォルトの名無しさん:2012/04/23(月) 20:57:46.79
ツクールとUnityどっちがいいの?
え、えっくすえぬねーの話をしようよ!
ああ、えっくすえぬね!
えっくすえぬネーちゃん。
Unityは、プラグイン作ってエディタ拡張とかの辺りは非常に良いのだけど、
不満もかなりあるからなぁ…
XNAはほんときれいな設計になってるんだけどなぁ…
895 :
デフォルトの名無しさん:2012/04/24(火) 00:49:00.73
自分で作れカス
Unityは原因不明のコードエラーばかりで先に進まない
うにうに
ちくちく
このスレ知らなくてマルチポストになったけど…
XNAでViewport.Project関数を使ってワールド座標をスクリーン座標に変換してるんだけど
カメラの後ろにある物の座標まで変換されてしまうよ。
これを防ぐ方法無いですか?
900 :
899:2012/05/03(木) 14:13:47.06
質問が変だった。
あるワールド座標がカメラの後ろにあるか前にあるか判定する方法ないですか?
使ったことないから知らんけどスクリーン座標のZ見ればいいんじゃね?
カメラの前ってのがどの範囲かにもよるんじゃないかな。
カメラのビューカリング(写っているいるものを判定)がやりたいのなら、
new BoundingFrustum(camera.View * camera.Projection).Contains()
使えばいいよ。
アクティブなXNA仲間がいて少し嬉しい。お互いがんばろ。
>>902 ここ人いたのかw
対象の座標に視点のワールド変換行列の逆行列をかけてZのプラスマイナスで判定してた。
その方法試してみる。
904 :
デフォルトの名無しさん:2012/05/04(金) 21:23:34.41
テクスチャの淵の色を変更することはできますか?
たとえば、3角形のテクスチャの淵を赤くて太い線で囲うような処理です。
簡単にできそうだったから、しばらく調べたのですが、方法を見つけることができませんでした。
ご教授お願いします。
blenderで作ったfbxファイルを読み込んで表示してもテクスチャーが表示されない。。。
XNAの日本語の書籍で1冊読むとしたら何がいいですか
Unityは2ヶ月ぐらい触りました。XNAの勉強がしたいです
907 :
デフォルトの名無しさん:2012/06/23(土) 12:27:24.54
クラウド上でコンパイルって何がどうなるの・・・・
ソースをサーバーに上げるのか
XNA死亡は確からしいけど、後継はどうなるの?
どこソースだよ
C++とDirectXでよかったんだな。C#なんてやるだけ無駄だったてこった
C++用のライブラリがあればいいのになー
生はめんどくさすぎでしょう
深度バッファの設定なんだけど
最初のゲームコンストラクタで以下の設定と
graphics.PreferredDepthStencilFormat = DepthFormat.Depth32;
後に以下の方法がある気がしますが
GraphicsDevice.PresentationParameters.AutoDepthStencilFormat = DepthFormat.Depth32;
違いや優先度的なものはありますか?
>>906 「ゲーム作りで学ぶC#」
自分はこれがいちばん解りやすかった。
3.0対応ってなってるけど全く問題ない。
917 :
デフォルトの名無しさん:2012/07/12(木) 04:35:55.59
>>916がベストだったなぁ
C#の理解さえあればいいから「独習C#」もあわせてよむといいお
しかしろくな本がないよなWindows8, VisualStudi2012が出ればXNA関係の本もなにか出てくるか?
8はXNAはとりあえず動くけどいつ切られてもおかしくないから出ないだろうな
MSが発表しただろググレカス
XNAなかったらゲーム作るとき困るやん
C#も捨てるのか?
プロはもともとC#使わないし、インディーズもC#使いたいならUnity。
C#の言語仕様自体はよいものだけどMSは.NETへの注力を抑える方針だと思う。
MSが展開するすべてでWinRTに統一する今後は仮想マシンの存在意義が薄れる。
MS的なXNAの存在意義も薄れてる。
>>923 8は大コケするのだ
そんな来ない未来に照準を合わせてどうする
おい、未来人が来たぞ
>>925 8がこけようが、.NETとXNAが弱まっていくのは変わんないよ。
8がこけるとMS離れが加速すると思う。
自分は単にXBOXでゲーム出したいだけだからどうでもいいのさ
MS離れつっても、Officeがタブレットでまともに使えるわけじゃないし
かといって欠けりんごシュに流れるとも思えないのだが?
XNA変数ふやすとけっこう処理落ちでてきますね
本体ならどうかはわかりませんがVisualStudioでPCで動かす分には
重くなって設定数かえたりした
値型コピーが多くなるとわりと致命的だからref使いたまえ
むしろ、細かいオブジェクトをnewしすぎでGC負担高くなってるとかでなく?
>>927 弱まるではないけど
バージョンアップは無いだろうし対応もされなくなっていくだろうなあ。
専門学校で使ってるらしいけど彼らが可哀想杉
>>931 それよく聞くんだけど、そこまで神経質になるなら最初からC+使ったほうが。
参照渡しでどれほどの違いが生まれるかテスト結果を
公開しているサイトはないだろうか?
>>033 XNA5まではギリギリ出るんではないだろうか。
silverlightと対応してキリが良いし。
DirectX10対応とモバイルのシェーダ対応はしてくれるはずだ。
次世代XBOXはわからないけど、それで終わりかな。
パフォーマンスの話で気になったんだけど、
VertexBufferインスタンスを複数に分けることは、
ひとまとめにしてオフセットで切り替えるのと比べて遅くなるだろうか?
GraphicsDevice.SetVertexBuffer(vertexBuffer)を使うか
GraphicsDevice.SetVertexBuffer(vertexBuffer,vertexIndex)を使うかで。
>>931 全てに3という数値を入れるよりも
全て変数にしてconstしたほうが軽くなる、という感じでしょうか
>>932 new Vector2()は使いまくっています
とりあえず重くなったら無駄に多かったキャラ数を減らす方向です。
>>937 例えばVector3.TransformはVector3を返すものと
戻り値はvoidで引数をrefで渡してoutで結果を返すものがあるけど
前者は渡す値返す値それぞれコピーが発生するけど後者は参照渡してるだけだからコピーが発生しない、と。
PCで動かす分にはわりとどうでもいいけど、箱○で動かすとなると.NET CFのGCがポンコツだからGCでゲーム処理がしばらく止まったりする。
PCでもそこを使う処理が多いと露骨に影響したりするかもしれないけど、まず他の部分をいじって解決できそうなものであれば
他の部分を先に見直すとよろし。どんな物をどう作ってるかは知らんし。
>>938 ありがとうございます。
Xbox本体のほうが影響大きいのか、、心配になってきたのでためします。
>>939 値型と参照型について区別しておいたほうがいいよ。
値型はコピーしようがnewしようが、ヒープを消費しない。
容量デカくなってきてインディーズの許容サイズに間に合うか不安なんだが・・・
ドット絵をsprite.Batchのパラメーターで拡縮すると
アンチエイリアスかかってボヤけてしまうんですがこれはしかたないんでしょうか?
「2.0f」なら倍だからドット崩れしないかとも思いましたが
やはりボヤけてしまいます。
ドットをボヤけさせたくなければ二倍の大きさで登録しないとだめでしょうか。
>>943 パラメタで設定できるよ。
昔のはBegin()の中で設定できたけど、今のはどこにあったかな。
久しぶりに触ってみたよ。
SamplerState を PointWrap か PointClamp にしてみ。
>>944>>945 ありがとうございます。
それのため拡大して登録していたのでできるとわかっただけで安心します。
しかし、それをどこで設定すればよいのかがわからないのです。
フィールドでしょうか?Begin()の中でしょうか?
Begin()が楽だと思うよ
spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.PointClamp, DepthStencilState.None, RasterizerState.CullCounterClockwise);
こんな感じか。
ありがとうございます!
これで小さい絵で軽くできそうです。
試してみましたが倍にしてもくずれずクッキリです。
素晴らしい。
容量節約になりますが、大きい絵を読み込むよりも
動作も軽くなるものでしょうか。
そうだとしたらなおうれしいです。
拡大処理をしてるんだったら、拡大するコストは払ってるだろう。最近のハードなら些細な事だけど。
他のテクスチャ使う時だって大体拡大縮小なり回転なりの処理をしていることを考えても考えなくても大体テクスチャのサイズは小さいほうが軽いというのは間違った認識ではないんじゃないかな
>>950>>951 ありがとうございます、そういう事なんです。
拡大処理をするゆえのコスト(それもドットバイドットで)と
大きいテクスチャを処理するゆえのコスト
両方考えられるのですが
前者のコストのほうが小さいといいのですが
逆だったら少し困りますねw
2D扱うのも難しい。
3Dポリゴン扱える人はすごいわ。
端的に書けば、とある三角形の行列変換。
なんだが、俺もまだわからんことが山のようになるなー。
3次元であたり判定とかマジ勘弁
みんな容量軽くするとか考えて作ってるんだ、ごいすー
音が同時に鳴ると音量が増加してしまうのは仕様ですか?
同時にならしても音量が増加しない設定方法があれば
教えていただきたいです。
仕様ならばあきらめて変数を使って回避する方法は考えてはいるのですが・・・
仕様ぽいですね。
「ビーム発射>ザコが同時死亡>爆音」がひどい
bool型の変数を組んでオフからオンになった瞬間にならして
(そのオンになると同時に音を鳴らす命令とオフに戻る命令をつむ)
1フレームに同じ音が同時再生されないようにしたら
無事爆音は解消しました。
アンチエイリアスかからない方法、めちゃ助かってます
多謝!
再見!
ところで、もう二度とこねぇよ あばよってシチュェーションでも
再見っていうのかなぁ中国語って・・・。
>>960 日本語と同じで
すみません、またの機会に^^; →またの機会なんぞ望んでない
じゃなかろうかw
(続く保障もないのにto be コンテニュード書いちゃいそうなザコ製作者より)
今更日本語パックが公開されたようだけどまだ戦う気があるってことか?
XNA Todayを見るにコミュニティは壊滅状態だが
メンテ早く終わってほしいな
サンプルコードダウンロードできねぇ…
終わってるぞ?
ブラウザでF5押してみ
PCにXboxコントローラー繋げることできるのかよー
知らなかったわ
これ知ってたらどんだけ効率あがったんだよちくそー
いやどうみてもUSBじゃん
つっこみっぱなしだとわからないとか?
付属の無線のほうしか持ってないとか
jpgなどの2D画像を3D空間に描画する方法を教えて下さい。
ビルボードのほうじゃないかな?
アクションゲーの箱スティックの感度は
0以上なら、0以下なら、みたいに最高感度がいいでしょうか。
一般的にどうなんだろう、少しは遊びを作ったほうがいいのかな。
調整可能にして妥協する
そうだね
実際に自分でテストプレイしてしっくりくるかどうか
普通にベクトルとして移動値に加算じゃ駄目なのかね
アクションゲームでも今時の感覚ならアリだと思うが?
デジタル入力を尊重したいならDPADでも動くように処理を振ったら良いし
ななめ移動に√2処理すればいいだろ
うん駄目。
ちょっとへたったアナログスティックでプレイしたら
パズルゲームとかで敏感すぎてイライラしたことあるな。
通常のアクションゲームはほとんどそんなことないのに。
感度とかへたったとかスティックとかプレイとか敏感とか
実際につないで試してみりゃわかるが、0が微妙に0じゃないんだよな。
ちょっとくらい遊び入れてくれないと、勝手に入力されたことになっていらつく。
加算とか数字で考える奴にゲームは無理
?ふーん
スレと共にXNAも終わりっすね