murnana's diary

プリントの裏に書くとか、そんな感じです

Windowsの高DPI対応とか、ディスプレイの大きさとかってしんどい

高DPIの設定だと、ディスプレイの正確なピクセル数が取得できない問題。

そもそもDPIとはなんぞ…ということでまとめる

scrapbox.io

ふむふむ、要するに解像度のことか。

高DPI環境の簡易テスト方法

Windowsの設定にある、ディスプレイの解像度とスケールを変えればいい

改善前: SystemParametersInfo 関数を使用していた

SystemParametersInfo を使用して、メインディスプレイの大きさを調べていた。
残念ながらこの関数、何も設定していないと常に 96dpi で計算してしまう…

改善後: SetProcessDPIAware を呼び出す

GetDeviceCapsが常にDPI96を返す問題と解決方法について · GitHub

Windows 7 以降の対応をすれば良いので、遠慮なく呼び出した。 manifestファイルはないので一旦無視。

その他考察

Display Scaling in Windows 10

Microsoftの中の人たちが考えている、高解像度ディスプレイの対応について。

Display Scaling in Windows 10 | Ask the Core Team

細かくは読んでない ><

「Basic concepts and terms」にある画像を見てみると色々書いてある。 (画像だから気軽にGoogle先生できない。つらい)
しれっとpixcel/inchって書いてるのに、なぜか160「DPI」と書かれている。良いのか…?

Physical PixelsEffective Pixels 。ざっくり理解だと

  • Physical Pixels はディスプレイのドットに対して正確なピクセルのこと
  • Effective Pixels はどんなディスプレイ上でも、画面上に表示される大きさは同じ値なら同じ大きさになる

ということらしい。

Vieewing Distanceはとりあえずおいておく。

最後の Scale Factor が、Physical PixelsをEffective Pixelsに変換するための倍率のことのようだ。
Windowsの設定にあるスケールってこれのこと…?だろうか…?

関連するけどまだ読めてない奴ら

まだ読めてない ><
今は読む必要ないかな…と思って…

blogs.windows.com

docs.microsoft.com

UnitTest練習も兼ねてコンソールゲームを作ってみる 2日目

murnana.hatenablog.comの続き

大したことしていない…

コード分析のwarningがうるさいので切る · murnana/windows-console-game@adeb0c3 · GitHub hogeって出しただけ · murnana/windows-console-game@84fe0fc · GitHub

5桁のWarningってなんだと思ったら、コード分析結果でした。

コンソールは WriteConsole 関数 辺りを見ればよさそう。文字出力と色と関数が紹介されていたので。

UnitTest練習も兼ねてコンソールゲームを作ってみる 1日目

github.com

サイト途中放置して始めてしまった。

モチベーション

学生時代、初めて作ったゲームが学校から提供されたライブラリを使用したコンソールゲームでした。

今回はそのライブラリを作る気で進めます。
折角TDDの本読破したので、Visual Studio単体テストを振り回したい。

進捗

プロジェクト作成

Visual Studio Comminity 2017 でプロジェクトを作成。
プロジェクトはとりあえず3部構成。

サンプルプログラム用の単体テストは…とりあえず無視。頭混乱しそうなので。 プロジェクト ファイルを追加します。 · murnana/windows-console-game@f0c8410 · GitHub

プロジェクトの設定

WarningLevelをEnableAllWarningsにしたり、出力先を設定したり。
プロジェクト設定の変更 · murnana/windows-console-game@0f8a47b · GitHub

ビルドすると(予想通り)標準ライブラリからWarningが大量に出てくるので、#pragma warningでそっと閉じる
標準ライブラリでついてくるwarning外し · murnana/windows-console-game@4bbfd80 · GitHub


眠いのでここまで。
描画はコンソールゲーム制作 第1章 描画(4)よりWriteConsoleOutputを使用する予定。
音はまだわからぬ。XAudioくらいしか知らない…

Github Pagesにページを作りたい

Sphinx拡張は諦めました。が、

study-with-〇〇で言語ごとにまとめていたが、あれ?これまとめてホームページですって言い張れば良いのでは?と思い立った次第です。
Sphinx拡張でビルダーをつくりたい 1日目 - murnana's diary

これは諦めていないので、別の方法を考えてみます。
幸い、Node.jsを使ってJavaScriptをこねこねすることは特別勉強しなくてもできるので、そっち方面で考えてみます。

※考えただけで、できたとは一言も言っていない。

ドキュメントどうする問題

今はreStructuredTextで書いています。
これをどうするか。

おそらくこのあたりです。
.jsxでドキュメントを保存しておくのは精神的にもきついものがあるので、理想は.mdで保存し、Reactに読み込ませる…
ってまた変換かー。面倒だなー。

それならいっそコンバートさせたものを使ったほうが良さそうです。
.mdから.jsxなんて夢みたいなもの…

www.npmjs.com

これかな…?
とりあえず保留。

そのほか

力任せにwebpackがいいのか、それともjsファイル分割も考慮するのか(Pixi.jsのようなWebGLもやりたいので)…
SCSSに挑戦するのか…


とりあえずドキュメントなんとかしたい

Sphinx拡張でビルダーをつくりたかった

前回murnana.hatenablog.com

体調不良だーなんだーと寝込んでいるうちにすっかりやる気を無くしてしまった…。
とりあえず、写経は済みました。

github.com

これ以上いじる気がないので、リポジトリは Archived してあります。
誰かがなにかの参考にしていただければ…幸いです…

Sphinx拡張でビルダーをつくりたい 1日目

開始時モチベーション

study-with-〇〇で言語ごとにまとめていたが、あれ?これまとめてホームページですって言い張れば良いのでは?と思い立った次第です。

折角なのでシングルページで作りたく、とりあえずReactを選択(最近はVue.jsのほうがよく聞く気がする)。
ところが、Sphinxにそんな(JSX)ビルダーは存在せず…。 無理やりhtmlを読み込ませるとかも考えましたが、aタグ内のリンクを置き換えるところでうまく行かない(onClickが書き変わってない?)。

後はhtml to jsxのようなnpmモジュールに頼るとかも考えましたが、head要素が共通などもあるので、結局ページ全体が読み込まれる羽目になるような気がしました…。

Sphinx拡張してビルダー作ればいいのでは説

ないなら作ればいいじゃない
どうせ趣味みたいなものだし。

とはいえSphinx拡張なんて作ったこともないので、チュートリアル的な物を探す。

チュートリアル: シンプルな拡張を作成 — Sphinx 2.0.0+/d052a57 ドキュメント

あった。公式ページに一応。
でもReactみたいに手とり足取り考えられて作られているわけではなさそう。
この手のチュートリアルを読み切った試しがないが、ちまちま作りながらやってみます。
一応リポジトリ作ってやってみます。

本日の進捗

github.com


エンジンかかるまで効率悪い人間なので、ゆっくりちょっとずつやります。