【OneDrive Tips】OneDrive API をバッチプログラムなどユーザー操作なしで使用する (.NET C# 版) (Microsoft Graph ライブラリ使用)

前回は URL の API を直接叩く方法で説明しましたが、今回は Microsoft Graph というライブラリを使用して OneDrive にアクセスする方法について説明しています。

【OneDrive Tips】OneDrive API をバッチプログラムなどユーザー操作なしで使用する (.NET C# 版) (追加使用ライブラリなし)

長年やろうと思ってたんですが、やるたびにできなくてずるずる引き延ばしていたのですがようやく実現できたので Tips にまとめました。ネットに出回っている同様の内容は古いバージョンだったりするので今回は最新のバージョンに合わせて作っています。

WinUI Tips「WinUI 3 で開発を行うための準備をする」

WinUI 3 もようやく .NET 8 に正式対応したようなので Tips としてまとめてみました。画面デザインで使えるコンポーネントがかなり多いのでデスクトップアプリとして使うには結構いい感じだと思います。ただ Windows Form や WPF と動かし方が違うのでそこはちょっと工夫が必要だと思います。

【.NET Tips】インストールされている Excel のバージョンに依存せずに .NET で Excel の処理を行う

.NET で COM を経由して Excel の処理を行うときにライブラリを参照すると特定の Excel のバージョンに依存してしまいます。今回はそれを回避する方法について説明します。

ゲーム開発進捗 2016/02/07 GC とパフォーマンス

来週艦これのイベントが始まるということで、イベントが始まる前にマンスリー任務やEOステージのクリアをやってたのでゲーム開発のほうはあまりはかどりませんでした。それよりもどんどんたまっていくアニメの録画の消化をどうにかしたい…。

さてゲーム開発のほうですが、現在は Ver 0.20 の公開に向けて作っています。ですが、ちょっとパフォーマンスに難ありな状態なので、機能の作りはおいておいてメモリ管理のほうを少しやってました。

Visual Studio 2015 には診断ツールがあり、メモリの使用状況や CG の発生タイミング、メモリのスナップショットなどを見ることができます。

2016-02-07 11_11_05-CpuGameDanke1UAP - Microsoft Visual Studio

ゲームの場合ツール系とは違い、常に処理が回っているのでメモリ(インスタンス)の確保が常に発生します。C言語のような完全なネイティブプログラムの場合、自身でメモリの破棄タイミングを指定しなければならないので、メモリリークさえ気を付ければ GC なんて考えなくてもいいのですが、今回 C# でゲームを作っており、確保したメモリの破棄はほぼすべて GC に任せることになります。

ゲームループ中に GC の発生を抑えることはほぼ不可能です。事前に必要なメモリを確保しておき、その中でやりくりするという方法がゲームでは主流ですが、マネージドなプログラムだと、文字列処理を行うだけで GC 対象になるので相当気を使います。

とは言ってもあまり余計なインスタンスを作成さえしなければ、GC が発生してもゲームに影響することはそんなにありません。上の図で何回か GC が発生していますが、メモリが平行に進んでいる部分のGCは大体ジェネレーション1のものです。1回当たりにかかる時間はミリ秒単位。うまく作ってればコンマミリ秒まで落とせるので支障はあまりないと思います。

ただ、別のシーンに切り替えたときなどに例えば大きな規模の初期化処理などを行うとジェネレーション2が使用されます。これを放置しておくとゲームの最中で突然一気に解放されたりします。これにかかる時間が100ミリ秒単位だったりするので、その間完全にゲームが停止します。リアルタイム性が求められるゲームの場合致命的です。上の図でも途中で一気にメモリが解放されていることが分かります。

変なタイミングで発生されても困るので、初期化処理が終わったらとっとと GC.Collect を呼んで解放してしまうのがいいと思います。

2016-02-07 22_38_37-CpuGameDanke1UAP - Microsoft Visual Studio

プレイヤーが操作中に止まるよりは、次のシーンが始まる前の真っ暗な画面なんかで実行したほうがいいですね。操作中に0.5秒止まるよりは真っ暗な画面で0.5秒止まってたほうが、ユーザーは全然気にならないと思います。

]]>

しゃべりながらゲーム制作やってみます #25 探索経路自動生成3

投稿まで時間がかかってしまいましたが、探索経路自動生成3回目を投稿しました。1回目2回目は説明ばっかりになってしまいましたが、3回目はデモ中心になります。

実は最近制作のほうが停滞気味になってしまっているため、次の投稿がいつになるかは未定です。今年の投稿はこれが最後になると思います。

一応次回の投稿は Ver 0.20 公開に向けての内容になると思います。

また、今後の投稿内容の方針についてですが、最近実装の説明ばっかりの内容になってしまっているので、なるべく出来上がった機能の紹介を中心にやっていこうかと思います。動画制作にはあんまり時間をかけないで投稿するという当初の目標があったのですが、やっているうちに微妙にずれてきてしまっているので、投稿間隔としては月1ぐらいで投稿していければなーと思ってます。

]]>

しゃべりながらゲーム制作やってみます #24 探索経路自動生成2

前回の続きです。3回に分割しているのでその中の2回目ですね。説明部分が長すぎてしまったので、今回も半分以上は説明部分になっています。最後のほうでルートポイントの生成についてのデモの一部をやっています。

]]>

しゃべりながらゲーム制作やってみます #23 探索経路自動生成1

マップに壁を作ったことにより、自動で動くユニットが、道なりに移動できるように経路を探索できるようにする必要があります。

通常は経路をマップに合わせて手動で作るのですが、マップ自体が自動生成されているため、探索経路も自動で作る必要があります。

]]>