【初心者】スレを立てる前にココで質問を【Part26】
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名前は開発中のものです。
2013/11/25(月) 21:50:34.58ID:6u/BeNgCスレッドを立てる前にはローカルルールを読みましょう。
http://pc11.2ch.net/gamedev/
※ >>980 を踏んだ人は次スレ立てをお願いします。
【アップローダ・避難所・Wiki】
ゲーム製作技術板公式Wiki
http://wiki.game-develop.com/
ゲーム製作技術板公式アップローダ
http://gmdev.xrea.jp/
gamdev.orgが落ちるたびにあげてみるスレ
http://hibari.2ch.net/test/read.cgi/gamedev/1107022166
0979名前は開発中のものです。
2014/12/29(月) 01:19:31.04ID:0UxFRGu4一方、ビット演算・バイナリ用で、
数値として扱わない、unsignedなら、
オーバーフローしないで、0に戻るかな?
とにかく、unsignedは特殊用途に限定すべきだね
0980名前は開発中のものです。
2014/12/29(月) 05:55:33.53ID:jEPDdAvVリアクション全く無しになってもアレやし最初はこのスレに投下してレビュー聞いた上で
適切なスレへの誘導を改めて確認してその上で移動するのもアリかもね。単発ならなおさら
0981978
2014/12/29(月) 10:13:54.81ID:iVw2RJihなるほど。 ではここで。
横シューティングを作っています。
作り直す事が決定しているデータを色々と使っています。
80年代後半の全盛期の雰囲気を目指していますが、なにせ初めての企画なので
盛り込み過ぎない様にと抑え気味に企画しています。
ttp://gmdev.xrea.jp/st/up/1068.zip
ジョイスティック対応ですが、キーボードからカーソル&ZXキーで動きます。
分かっていて解決していない不具合として、
・途中いきなりエラー終了する。
・オプション攻撃が上に出てしまう。
・連射抑制が効かなくなり猛攻撃してしまう。
があります。
目標としてはサンダークロス1やメタルブラック、サンダーフォース4なのですが、
ドット絵的に足元にも及ばないのでゲームバランスで勝負! ・・・足元に頭擦り付け
られる程に及べればイイなあ(^^;
何か、思い付く事を仰ってくれると幸いです。
0982名前は開発中のものです。
2014/12/29(月) 13:02:31.64ID:jEPDdAvVまだノウハウが少ない状態のプログラマが作るべきお手本のような作り方をされていていますね
質問に対して個々にフォローします
・途中いきなりエラー終了する。
システム(OS)巻き来なければ、エラーを try〜catch してその状態の変数などの情報を書き出して解析する。
のがよいのですが、今のスキルでは少々難しいかもしれません。(フォローは後述)
・オプション攻撃が上に出てしまう。
デバッガを使う (特定のキーを押したら、あるいは状態になったら強制的にブレークを発生させるようにするとよい)
「オプション攻撃が上に出てしまった」はプログラムで特定の変数があってはならない値になっていると推測されます。
その変数にあってはならない値が入るとブレークさせる、ブレークポイントを置いてみてください。
デバッガの使い方がわからなければ、ぐぐって調べるなり、さわりを質問で聞くなりするとよいです
・連射抑制が効かなくなり猛攻撃してしまう。
入力信号がバッファに溜まるようなものではなく、DirectInput でその瞬間に押されているキーで入力判定する
入力信号を即値で扱っているなら、その判定から連射ルーチンにバグがあるのだと思います。
(続く)
0983名前は開発中のものです。
2014/12/29(月) 13:04:14.17ID:jEPDdAvVアドバイス
・テスト版用のデバッグ用情報を画面に表示させよう
どのボタンが押されているか、何をどう判定しているか が画面に表示されているとテストしている人が色々気付きます
今回であれば「オプション攻撃が上に出てしまった」時に関連する変数の値があれば、ノウハウ持ってる人であればやらかしがちなバグを推測できます
・ログ出力しよう
記録されるサイズが数百MBになろうと、メモリ上に記録し、エラー時に全出力して意図しない挙動がないか調査するとよい
エラーが起きた場合、強制終了でないなら、ファイルに書き出すことができるはずです
ログデータを読み込みながら1フレームずつ再現できるプログラム(リプレイですね)を作ってみるのもよいかもしれません
・デバッガを使いましょう
効率的なプログラマほどデバッガとのにらめっこしてる時間の割合が大きいです
今回聞こうとしている質問のほとんどは、デバッガがあればプログラマがすぐに原因を切り分けして修正できると思います
・質問はどこにするのが良い?
現状ではこのスレでよいと思います
引き続き頑張ってください。
0984名前は開発中のものです。
2014/12/29(月) 13:39:09.05ID:AVeVeWqkIDEのコンソールか何かにログを出力し続けるようにして原因を追ってみたほうがいいかも
void func(){
LogOutput("func start");
//処理
LogOutput("func end");
}
こんな風に作ってゲームが強制終了したらコンソールログをみて、endが書かれていなければそのスコープに何かあるってことで、
ブレークポイント知らない頃とか、ブレークポイント効かない時とか、ステップ実行がだるい時だけ知りたい時とかでやってたから誰でも出来ると思う
というか初心者でいいの?「そんなの言われなくてもわかっとるわ!」とか言われそう
0985名前は開発中のものです。
2014/12/29(月) 22:08:03.92ID:kfN2JDbZビット情報が保存される演算(可逆な演算)ならXORとかローテートがラクかと
XORはC/C++に演算子あるけどローテートはないからPCの場合だとインライン
アセンブリでROR/ROLがラク
細かい話はバーナム暗号とかで検索すればいいかと
0986名前は開発中のものです。
2014/12/30(火) 19:30:03.22ID:u6Vvtr+3ゲーム内容とかバランスについての感想じゃね〜の
0987名前は開発中のものです。
2014/12/30(火) 19:34:52.72ID:e9PdA2Bu0988名前は開発中のものです。
2014/12/30(火) 19:39:38.44ID:e9PdA2Buクッキー消したよ……ったく
【初心者】スレを立てる前にココで質問を【Part27】 [転載禁止]2ch.net
http://peace.2ch.net/test/read.cgi/gamedev/1419935788/
0989名前は開発中のものです。
2014/12/30(火) 20:39:56.43ID:u6Vvtr+30990978
2014/12/31(水) 18:56:32.45ID:apd2LiSb>>982
返答有難うございます。
・ノウハウが少ないのがバレたのは、データの与え方でしょうか。
DxLibを使っているので、自分としてはそうなってしまうと言うか・・・もっと効率上げる方法が
あるのでしょうか?
・これは、VisualStudio2013のCで書いています。C++、理解出来ていないんです(涙)。
何か問題が起きたら、場所を類推してブレークポイント立ててステップ実行で変数確認
しつつ・・・と言う感じです。
必要とあれば、調査用に関数も書きますが。
エラー終了以外の既知の問題は、最初期に書いた自機周りの関数だと思っていて、それに
依存する形でオプション挙動も決まっているので、整理して書き直すつもりでいます。
ちなみにスコア表示の下にライフやショットモード、進行カウンタを表示していますが、勿論
仮表示です。その延長で内部情報をもう少し表示させても良いのですが、リアルタイムで
更新されると読みきれないのですよね(^^;自分でやっといて。
リプレイは搭載予定していなかったのですが、言われてみればデバッグに有用ですね。
真面目に検討させて頂きます。
ご助言ありがとうございました。
>>984
返答有難うございます。
最近、呼出履歴を確認する事を身に付けたので、怪しい部分への履歴を追いやすくなったり
したのですが、初心者扱いで十分だと思います。8ビットの頃から親しんでいるので、十分
オッサンですけれどね。
>>986
お心遣い有り難うございます。
そこが目立って他に見るべき点がなかったのは、まだまだ道半ばだなあ、と反省する次第
です。
0991名前は開発中のものです。
2014/12/31(水) 20:42:08.70ID:JO0lY9np> その延長で内部情報をもう少し表示させても良いのですが、リアルタイムで更新されると読みきれないのですよね
Windowsのアプリ動作動画キャプチャソフト(アマレコなど)などを使うと・・・
良いお年を!
レス数が950を超えています。1000を超えると書き込みができなくなります。