へにっくすの掲示板日記

なめらかに回答を得られない

アバター
へにっくす
記事: 634
登録日時: 13年前
住所: 東京都

なめらかに回答を得られない

投稿記事 by へにっくす » 10年前

以下の投稿。

http://dixq.net/forum/viewtopic.php?f=3&t=16818

質問者さんはまず初めに
「Win32 APIを使ってファミコンレベルのRPGを作成しようと思っています。」
と書かれているのに、
何でいきなりWin32APIでなくDirectXやDXライブラリを勧めるのか理解に苦しむ。
まあここはDXライブラリ中心のアプリを公開するHPですから、らしいなあと言えばそれまでなのかもしれませんが。

たとえるなら
今まで使用していた機械を延長して使いたいと要望しているのに、
「あーこりゃだめですね、それよりもこれをお勧めしますよ」
と他の機械を勧めているのと同じです。
これってムカつかないのでしょうかね。
自分のやる気をそがれます。

こういうのは質問者の意にそった回答をしてから、補足的にDXライブラリを使用した方が簡単ですよ?
と言うべきかなと思いますが・・・。

オフトピック
本題のコードでスレッドを別にしてますがスレッドを分けた意味が不明だ。
ハンドルを作成したら、作成したスレッドで制御したり破棄したりすべきで、他のスレッドは触ってはいけないのを知ってるのだろうか。
私なら絶対書かないコードですな・・・
とりあえずそのことを投稿してみましたがどうでますかね。
最後に編集したユーザー へにっくす on 2015年7月19日(日) 10:25 [ 編集 2 回目 ]

ISLe
記事: 2650
登録日時: 15年前

Re: なめらかに回答を得られない

投稿記事 by ISLe » 10年前

へにっくす さんが書きました:> マルチスレッドだから描画が喧嘩するというのはおかしいです。
1つのキャンパスに複数の人が描画する、という言葉がそうなりますか?
じゃあ何と言えば理解してもらえるのでしょう? 教えてください。
No.1のコードではそうとしか言えない気がしたのですが・・・
マルチスレッドに関しては中身に言及する必要がないとわたしは考えます(考えてました)けど。
トピックに書いたとおりウィンドウプロシージャ含めてcommonstateでデータを共有しているあたりごちゃごちゃしていると感じます。
それを必要だと思わせる要素としてマルチスレッドが含まれているふうに見えます。
#ポインタ一個で全部渡す必要があると思わせている。
マルチスレッドを使っていることが問題を大きくしている。

commonstate *commonでやってることはグローバル変数使うよりも複雑で危険なことですよ。
ただただ純粋にコードとして。

質問者さんは否定しましたけど、他の回答者の方もあれを見て何も感じないんですね。
最後に編集したユーザー ISLe on 2015年7月20日(月) 22:50 [ 編集 6 回目 ]

アバター
へにっくす
記事: 634
登録日時: 13年前
住所: 東京都

Re: なめらかに回答を得られない

投稿記事 by へにっくす » 10年前

>> ISLeさん
> マルチスレッドに関しては中身に言及する必要がないとわたしは考えます(考えてました)けど。
ああ、そういうことですね。
commonstateに詰め込んでるのをどうにかしろと。(^^;
そこは私も同意します。
私はマルチスレッドにする理由についてツッコミたかったんで、あのような投稿をしましたが、余計なことしましたかねえ。
いまさら何も書く気はありませんけど。

質問者さんのレスがないですが、理解できたのだろうか・・・
[2015/07/21 01:27 訂正]
最後に編集したユーザー へにっくす on 2015年7月21日(火) 01:27 [ 編集 1 回目 ]

アバター
usao
記事: 1892
登録日時: 12年前

Re: なめらかに回答を得られない

投稿記事 by usao » 10年前

自信満々の予想(WM_KEYDOWNのタイミングが原因説)がみごとに外れたようで……ふぐぅ.
しかしそうなると
WM_KEYDOWN時の16回ループの中で 引っかかる=体感するほど時間がかかる場合がある ってことですよね.
うーん,わからん.お手上げ.

自分ならマルチスレッドなんて面倒が増えるから必要が無い限りはやりたくないけどなぁ.バグ追うのも大変だし.

Direct2Dは時間があったら調べてみたい感じ.

ISLe
記事: 2650
登録日時: 15年前

Re: なめらかに回答を得られない

投稿記事 by ISLe » 10年前

WM_KEYDOWNが原因ではない確証が取れたという投稿があったのかと思ったらそうじゃなかった。
質問者さんが解決したいことの直接の原因はWM_KEYDOWNで処理してることだとわたしも思いますよ。

ただWM_KEYDOWNに書けば良いと思い込んでる(本人がそう書いてる)理由がいろいろたくさん絡んでいるらしいことがコードから読み取れるので、そこらへん根っこからどうにかしないとすぐにまた頓挫するのは目に見えています。

とは言え、題材としてイベントドリブンとかマルチスレッドの扱いにまったく触れずに済ませてはいけないと思うわけで。
最後に編集したユーザー ISLe on 2015年7月21日(火) 18:07 [ 編集 1 回目 ]

アバター
へにっくす
記事: 634
登録日時: 13年前
住所: 東京都

Re: なめらかに回答を得られない

投稿記事 by へにっくす » 10年前

まだ質問者本人からのレスがないので、真相は闇の中。
commonstateをどうにかしようと奮闘中なのか、
はたまたほったらかしなのか・・・

ハンドルネームが変わったのは何でなんでしょうね?

【追記1】
質問者から回答がありましたが、やっぱ分かってなさそうですね。
皆さまから頂いたコメントを1つずつ試すって・・・
んー・・・
最後に編集したユーザー へにっくす on 2015年7月26日(日) 20:16 [ 編集 1 回目 ]

ISLe
記事: 2650
登録日時: 15年前

Re: なめらかに回答を得られない

投稿記事 by ISLe » 10年前

Win32でファミコンレベルのRPGを作りたくてその方法を尋ねる質問だと思ってたら

メッセージハンドラに処理を書くだけでファミコンレベルのゲームが作れるか

という壮大で哲学的な問いだったみたい。
であれば無理だとか無駄だとか一般的にはこうだとかいう回答は意味ないですね。
最後に編集したユーザー ISLe on 2015年7月26日(日) 23:46 [ 編集 1 回目 ]

ISLe
記事: 2650
登録日時: 15年前

Re: なめらかに回答を得られない

投稿記事 by ISLe » 10年前

softyaさんがリンク張ってくれた日記にテアリングのこと書いてあったのに。

ていうか、むしろ滑らかなスクロールができてないとテアリング発生しないんだけどなあ。
裂け目がはっきり見えるのは、更新間隔がほとんど一定である証拠なのだから。