Slide 1

Slide 1 text

C++とDXライブラリで LTタイマーを作った話 Sora Arakawa (arkw) 2021/11/04 静大情報LT大会@オンライン 「#技育CAMP」でツイートすると 画面上部に表示されます!

Slide 2

Slide 2 text

自己紹介 Sora Arakawa(arkw) • 静岡大学 情報学部 行動情報学科 B2 • 趣味:プログラミング、デザイン、etc… • Alexaスキル開発のバイトをしています (時給915円) • 愛知県岡崎市出身→静岡県浜松市在住 • https://arkw.net/

Slide 3

Slide 3 text

突然ですが…

Slide 4

Slide 4 text

LTタイマーを作りました

Slide 5

Slide 5 text

LTタイマー • 常に最前面表示 • 時間を1分単位でセット(0分~99分) • スタート/ストップボタンを長押しでリセット

Slide 6

Slide 6 text

C(C++)を学習したい!

Slide 7

Slide 7 text

私の言語学習法 • 入門書は買わない • 入門サイトは1から全部やらない • 適当にGUIのソフトを1本作る • 仕様やAPIはググる

Slide 8

Slide 8 text

C++のGUIライブラリ #とは

Slide 9

Slide 9 text

DXライブラリ

Slide 10

Slide 10 text

DXライブラリ(DxLib) • 2001年に山田巧氏が開発したゲームエンジン • DirectXが簡単に扱えるようになっている • 文献が豊富 • オープンソース 表記不要で使用可(例外有り) • 対応OSが多い(Windows、iOS、Android、PlayStation Vita、 PlayStation 4、Nintendo Switch etc…)

Slide 11

Slide 11 text

DXライブラリの機能 • 2Dグラフィック • 3Dグラフィック • サウンド • ムービー • 各種入力 • TCP/IP通信 etc…

Slide 12

Slide 12 text

開発環境 • Windows 10 64Bit • Visual Studio Community 2019 • GitHub Desktop • DXライブラリ Ver.3.22e

Slide 13

Slide 13 text

DXライブラリのダウンロード • https://dxlib.xsrv.jp/dxdload.html からDXライブラリをダ ウンロードする • 必要な機能と開発環境に応じたファイルをダウンロード • 今回は「3Dモデル機能&ソフトウエアレンダリング機能無し パッケージ」を選択

Slide 14

Slide 14 text

DXライブラリのインポート • プロジェクト毎に必要な作業 • https://dxlib.xsrv.jp/dxuse.html を参照 $(ProjectDir)DxLib

Slide 15

Slide 15 text

データ量を減らす • 「~_vs2015_x86_MT.lib」と「~_vs2015_x86_MTd.lib」以外 のlibファイルを全て消す • これだけで90%減量できます(536MB→55.6MB)

Slide 16

Slide 16 text

リソースの作成 • 対応画像形式:BMP、JPEG、PNG、TGA、DDS、ARGB、TIFF • 対応音声形式:WAV、MP3(Windowsのみ)、OGG、Opus

Slide 17

Slide 17 text

コーディング • 省略 • 関数リファレンスと各関数のサンプルコードは https://dxlib.xsrv.jp/dxfunc.html

Slide 18

Slide 18 text

LTタイマーの開発に必要な処理 ウインドウ表示(デフォルトはフルスクリーン) ChangeWindowMode(TRUE); バックグラウンド動作を許可 SetAlwaysRunFlag(TRUE); 最前面表示 SetWindowPos(GetMainWindowHandle(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);

Slide 19

Slide 19 text

フレームレートの話 • フレームレートは画面の周波数に依存 • 固定FPSにするコードはネットに転がっている • LTタイマーは30FPS固定

Slide 20

Slide 20 text

まとめ • DXライブラリとC/C++でツールを開発 • 必要なことは全て公式サイトに載っている • 詰まったらググれ • GitHubでソース管理するならデータ量の削減が必須

Slide 21

Slide 21 text

まとめ • GitHubリポジトリ https://github.com/arkwnet/LTTimer

Slide 22

Slide 22 text

ご清聴ありがとうございました