トップページ > 過去ログ > 記事閲覧
マウスカーソルを最上部に移動させると一時フリーズ
名前:Marco 日時: 2009/11/11 21:12

お世話になってます。従来よりDxLibでゲーム製作させていただいてる者です。 DxLibをVer3.00eに変更した所、以下の現象が発生しました。 【現象】 ・フルスクリーンでマウスカーソルを画面最上部に移動させると一時的にフリーズ。 【備考】 ・フルスクリーン時のみ発生、windowモードでは発生しませんでした。フルクリーンでの発生率は100%です。 ・同じソース(下記再現用ソース)を使用しても、従来使用していたDxLib2.25では発生せず、DxLib3.00eでは発生しました。 ・フリーズ後、マウスカーソルを下方に移動させるとフリーズ解除、再度動き出します。 ・マウスカーソルを非表示でも発生しました。 【再現用ソース】 int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // 解像度640x480 SetGraphMode( 640 , 480 , 16 ) ; if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } // マウスカーソルON SetMouseDispFlag( TRUE ) ; // 描画先画面を裏画面にセット SetDrawScreen( DX_SCREEN_BACK ) ; // 60フレームループ while( ProcessMessage() == 0 ) { // 画面を初期化する ClearDrawScreen() ; // ランダムに線を引く DrawLine( rand() % (int)640, rand() % (int)480, rand() % (int)640, rand() % (int)480, GetColor(255, 255, 255) ); // 裏画面の内容を表画面に反映させる ScreenFlip() ; } DxLib_End() ; // DXライブラリ使用の終了処理 return 0; } お手数かけますが、ご確認・調査の程、宜しくお願い致します。

Page: 1 |

Re: マウスカーソルを最上部に移動させると一時フリーズ ( No.1 )
名前:管理人 日時:2009/11/14 22:28

ご報告ありがとうございます 掲載していただいた再現用のプログラムでこちらでもご報告の現象を確認することができました 修正したバージョンをアップしましたので、よろしければお試しになってみてください m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい) ところで Marcoさんは「皆様の作品紹介!」ページで掲載させていただいている 「Vision Shpere 」をお作りになられたマルコさんでしょうか?
Re: マウスカーソルを最上部に移動させると一時フリーズ ( No.2 )
名前:Marco 日時:2009/11/15 09:46

対応ありがとうございます。 覚えていてくださいましたか!そのMarcoです。 元々、Dxlib2.25で新作を作成していたのですが、 DxLib3.0が出たので先にVisionSphereのリメイク版を 作ろうとした所、今回の現象に気付きました。 当時も今もDxLibが一番お気に入りのライブラリですので、 こちらがひと段落ついたら新作もDxLib3.0に移行させようと思ってます。 それで、またまたお手数をかけて申し訳ないのですが・・・ 対策版でフリーズはしないようになったのですが、 『マウスを画面最上部に移動させると処理落ちする』 という現象が引き続き発生するようです。 処理落ち現象の再現用ソースを添付しましたので、 ご確認お願い出来ますでしょうか。 自分の環境では【LINE_COUNT = 約60000】で再現を 確認出来ましたが、環境によって変わって来ると 思われますので、LINE_COUNTの調整をお願いします。 #include "stdAfx.h" #include "stdio.h" #include "main.h" #define LINE_COUNT 60000 // 灰色線の描画本数 int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // 解像度640x480 SetGraphMode( 640 , 480 , 16 ) ; if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } // マウスカーソルON SetMouseDispFlag( TRUE ) ; // 描画先画面を裏画面にセット SetDrawScreen( DX_SCREEN_BACK ) ; // 白線の描画位置 int lineY = 0; // 60フレームループ while( ProcessMessage() == 0 ) { // 画面を初期化する ClearDrawScreen() ; // 灰色線をLINE_COUNT本引く for(int i = 0; i < LINE_COUNT; i++) { // 灰色線の色の濃度をランダムに設定 int col = rand() % 128; // ランダムに灰色線を引く DrawLine( rand() % (int)640, rand() % (int)480, rand() % (int)640, rand() % (int)480, GetColor(col, col, col) ); } // 白線を描画 DrawLine( 0, lineY, 640, lineY, GetColor(255, 255, 255) ); // 白線を下に移動 lineY += 1; // 最下段に到達したら上に戻る lineY %= 640; // 裏画面の内容を表画面に反映させる ScreenFlip() ; } DxLib_End() ; // DXライブラリ使用の終了処理 return 0; }
Re: マウスカーソルを最上部に移動させると一時フリーズ ( No.3 )
名前:管理人 日時:2009/11/19 13:17

間違ってなくてよかったです マルコさんのページ、いつからかプログラムに関係するページが無くなってしまったので トップページに開発中ゲームのスクリーンショットが掲載されるまでソフトウエア開発は おやめになったのかと思っていました(^ ^; マウスカーソルを画面上部に移動すると処理落ちする件ですが、 少し時間がかかりそうなので週末に調べてみようと思います サンプルまで用意していただいてありがとうございます m(_ _)m
Re: マウスカーソルを最上部に移動させると一時フリーズ ( No.4 )
名前:Marco 日時:2009/11/21 00:21

プログラム関連ページが消えてたのはですね・・・ プログラマーに就職してから帰宅してまでプログラム触るのに疲れてしまったと言いますか何と言いますか(ry でも、プログラムとは関係無い仕事に転職してからは、やっぱりプログラムもゲーム作りも楽しいなーと思う今日この頃ですw そしてマウスカーソルの件、結構深いみたいですね。 貴重な週末を調査に当てていただけるみたいで申し訳ないです。 サンプル以外にも自分にも何か役立てる事がありましたら協力させていただきますので、遠慮なく仰って下さいねー。
Re: マウスカーソルを最上部に移動させると一時フリーズ ( No.5 )
名前:管理人 日時:2009/11/22 13:48

件の処理落ちがなくなるように修正したバージョンをアップしましたので よろしければお試しになってみてください m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい) プログラムをするお仕事に就いてられたんですね 仕事でもプライベートでもプログラムというのは、確かに仕事での プログラム作業がきついときには厳しいですよね 私が知っている仕事でプログラムを組んでいる方々も、私がプライベートでも プログラムしていることを知ると殆どの場合変人扱いされます (- -;
Re: マウスカーソルを最上部に移動させると一時フリーズ ( No.6 )
名前:Marco 日時:2009/11/26 00:41

対応ありがとうございます! 修正版で動かしてみたところ、一応、処理落ちはしなくなったのですが、、、 ・フルスクリーン時、画面最上部付近マウスカーソルを高速で上下移動すると、マウスカーソルが最上部に触れた時にわずかに処理落ち(おそらく1フレーム)が発生する。 という現象が依然、発生するようです。 ゲームプレイに支障が無いと言えば支障の無いレベルなのですが、これを良しとするかどうかで迷ってカキコ遅くなってしまいました。せっかく素早く対応していただいたのにすみません・・・ それで結局、この段階で良しとしてホムペで公開してみましたので、お暇な時にでも確認いただけたらと思います(自分の環境だけの現象の可能性もありますし) そして山田さん、仕事でプログラムしつつ、DxLibの開発&メンテまでされてたんですか・・・!? 本気で凄すぎです!自分じゃ絶対そんな集中力続きませんorz
Re: マウスカーソルを最上部に移動させると一時フリーズ ( No.7 )
名前:管理人 日時:2009/11/29 21:44

ご報告ありがとうございます 1フレームの処理落ちも発生しないようになった(はずの)バージョンをアップしましたので、 よろしければお試しになってみてください m(_ _;m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい) あと、VisionSphereHD プレイさせていただきました 2560x1600 の解像度でも問題なく60FPSで動作しました (^ ^ 非常に懐かしい感じが・・・ 思い違いかもしれませんが、以前のバージョンより多少簡単になったでしょうか? それと、私は集中力無い方だと思います あったら今頃もっと色々できているはずです・・・ orz
Re: マウスカーソルを最上部に移動させると一時フリーズ ( No.8 )
名前:Marco 日時:2009/12/04 23:35

いつもありがとうございます! 自分の完了では1フレームの処理落ちもなくバッチリです! ですが…友人の環境だと上手く動かないみたいですorz 2人の友人から、それぞれ別々の現象が発生しているとの報告を貰っているのですが、自分の環境では再現できていないので調査が難航気味。中途半端ですが、一旦ご報告をば。 現象@:画面下半分が黒く塗りつぶされる 現象A:ウィンドウモードの場合、非常に重くなる事がある 試しに作ったDxLib2ベースのVisionSphereHDでは、@Aいずれも発生せず上手く動いているとの事なので、とりあえず、リリースはこれで行ってみようと思います。 リリース作業がひと段落着いた所で、友人に再度DxLib3で作ったものではどうなるか試して貰ってみますね。 そして、VisionSphereHDのプレイありがとうございますー!2560x1600とは凄いモニター使われているんですね。自分もそんなモニターで見てみたいですw 難易度は、お察しの通り多少簡単になっています。 敵の旋回速度が小型>中型>大型の順に遅くなるように変更しました。他にも、微妙に敵弾の速度や敵機出現間隔のバランス調整etc・・・ それにしても、相当に旧作をやっていないと分からない程度の変更なので、これに気付かれるとは流石です!間違いなく集中力ありますよー!
Re: マウスカーソルを最上部に移動させると一時フリーズ ( No.9 )
名前:管理人 日時:2009/12/13 12:48

ご友人さんの環境だと不具合が発生しますか・・・ @Aの現象ともかなり激しい現象なので環境に依存したもののような気がします 実際にご友人さんの環境で調べられれば原因を突き止めることができると思いますが、 現象を再現できない環境で原因を推測だけで対応するのはちょっと難しそうです グラフィックスデバイスのドライバの更新で問題が解消される可能性もありそうですが・・・ VisionSphere は、やっぱり仕様に変更がありましたか〜 前バージョンは丁度6年前くらいでしたね、確かによく覚えてたなぁ自分(汗
Re: マウスカーソルを最上部に移動させると一時フリーズ ( No.10 )
名前:Marco 日時:2009/12/16 20:46

ですよねぇ・・・ 職業プログラマーの世界でも、再現出来ないバグは対応しないか、再現する環境を用意してもらうのが常套手段ですし。 とりあえず、主題のマウスカーソルでフリーズの件はお蔭で無事に解決しましたし、@Aの件は何か有効打になりそうな情報が入り次第、新しいスレを立てさせていただこうと思います。 えぇ。ゲームそのものは同じですが、バランス関係の細かい部分では結構手を加えてあります。 何といっても、前作は作者本人が2周目ラス面を残機2設定でクリアー出来てなかったので、今回はちゃんと自分がクリアー出来るように(汗 覚えてたのは、きっとそれだけ前作をやり込んでくださっという事ですねー。作り手冥利に尽きます!

Page: 1 |