「PlayStation Suite SDK/プログラムの基本構造」の版間の差分

imported>Administrator
imported>Fallout New Tokyo
編集の要約なし
 
(他の1人の利用者による、間の1版が非表示)
52行目: 52行目:


== Mainメソッド ==
== Mainメソッド ==
[[PssStudio]]で新規プロジェクトを作成すると、AppMain.csファイルが自動生成され、その中のAppMainクラスに[[エントリーポイント]](起点)となるMainメソッドがある。
[[PssStudio]]で新規プロジェクトを作成すると、AppMain.csファイルが自動生成され、その中のAppMainクラスに[[エントリポイント]](起点)となるMainメソッドがある。


以下のような記述が[[エントリーポイント]](起点)として必ず1個ある、というは[[C Sharp|C#]]の基礎中の基礎なので、深く考えずにこういうものだと覚えておけばいい。
以下のような記述が[[エントリポイント]](起点)として必ず1個ある、というは[[C Sharp|C#]]の基礎中の基礎なので、深く考えずにこういうものだと覚えておけばいい。
<source lang="csharp">
<source lang="csharp">
public static void Main (string[] args)  
public static void Main (string[] args)  
68行目: 68行目:
== whileループ ==
== whileループ ==
while (true)、いわゆる[[永久ループ]]。
while (true)、いわゆる[[永久ループ]]。
ゲームプログラミングの世界では[[ゲームループ]]と呼ばれるもので、基本的に「ゲームメイン処理」、「画面描画」、「[[ウェイト]](フレームレート調整)」を延々と繰り返すことでゲームが進行するようになっている。
ゲームプログラミングの世界では[[ゲームループ]]と呼ばれるもので、基本的に「ゲームメイン処理」、「画面描画」、「[[ウェイト]](フレームレート調整)」を延々と繰り返すことで[[ゲーム]]が進行するようになっている。


=== [[SystemEvents.CheckEventsメソッド (Sce.Pss.Core.Environment)]] ===旧来の家庭用ゲーム機であればゲームのみが動くのが一般的であり上記の3つだけで良かったが、近年のPCに近い環境ではアプリ切り替えなどにより、ゲームを一時中断させられたりするため、定期的にシステムのイベントのチェックを行う必要がある。
=== [[SystemEvents.CheckEventsメソッド (Sce.Pss.Core.Environment)]] ===
旧来の[[家庭用ゲーム機]]であれば[[ゲーム]]のみが動くのが一般的であり上記の3つだけで良かったが、近年の[[PC]]に近い環境ではアプリ切り替えなどにより、[[ゲーム]]を一時中断させられたりするため、定期的にシステムのイベントのチェックを行う必要がある。


本気モードの場合は、チェックした内容で細かい制御を書いたりする。
本気モードの場合は、チェックした内容で細かい制御を書いたりする。


=== UpdateメソッドとRenderメソッド ===
=== UpdateメソッドとRenderメソッド ===
Updateメソッドには主にCPUを使う計算処理を書く。
Updateメソッドには主に[[CPU]]を使う計算処理を書く。
いわゆるゲームメイン処理。
いわゆるゲームメイン処理。
ようするにキー入力やキャラクターの移動、[[当たり判定]]などを行う。
ようするにキー入力やキャラクターの移動、[[当たり判定]]などを行う。


Renderメソッドには主にGPUを使う描画処理を書く。
Renderメソッドには主に[[GPU]]を使う描画処理を書く。


「何でUpdateとRenderの2つのメソッドを分けてるの?意味ないじゃん。[[デザインパターン]]の一種?」と思われるかもしれないが、この例では[[シングルスレッド]]で処理しているが、本気モードのときはゲームメイン処理が重いときは描画処理をすっ飛ばしたり([[フレームスキップ]])、ゲームメイン処理と描画処理で[[スレッド]]をわけたりする(いわゆる[[マルチスレッド]])のが一般的だからである。つまり本気モードへの移行時に[[ソースコード]]の書き換えを最小限にするためである。
「何でUpdateとRenderの2つのメソッドを分けてるの?意味ないじゃん。[[デザインパターン]]の一種?」と思われるかもしれないが、この例では[[シングルスレッド]]で処理しているが、本気モードのときはゲームメイン処理が重いときは描画処理をすっ飛ばしたり([[フレームスキップ]])、ゲームメイン処理と描画処理で[[スレッド]]をわけたりする(いわゆる[[マルチスレッド]])のが一般的だからである。つまり本気モードへの移行時に[[ソースコード]]の書き換えを最小限にするためである。