「PlayStation Suite SDK/プログラムの基本構造」の版間の差分
imported>Administrator ページの作成:「PlayStation Suite SDKを用いたプログラムの基本構造は、以下のようになっている。 <source lang="csharp"> namespace PssApp01 { using Sys...」 |
imported>Fallout New Tokyo 編集の要約なし |
||
| (他の1人の利用者による、間の3版が非表示) | |||
| 3行目: | 3行目: | ||
namespace PssApp01 | namespace PssApp01 | ||
{ | { | ||
using System; | |||
using System.Collections.Generic; | |||
using Sce.Pss.Core; | |||
using Sce.Pss.Core.Environment; | |||
using Sce.Pss.Core.Graphics; | |||
using Sce.Pss.Core.Input; | |||
public class AppMain | |||
{ | |||
private static GraphicsContext graphics; | |||
public static void Main (string[] args) | |||
{ | |||
Initialize (); | |||
// ゲームループ | |||
while (true) { | |||
SystemEvents.CheckEvents (); | |||
Update (); | |||
Render (); | |||
} | |||
} | |||
public static void Initialize () | |||
{ | |||
graphics = new GraphicsContext (); | |||
} | |||
public static void Update () | |||
{ | |||
// ここにキー入力やキャラの移動、当たり判定などの | |||
// ゲーム内容を書く | |||
} | |||
public static void Render () | |||
{ | |||
graphics.SetClearColor (0.0f, 0.0f, 0.0f, 0.0f); | |||
graphics.Clear (); | |||
// ここに描画処理を書く | |||
graphics.SwapBuffers (); | |||
} | |||
} | |||
} | } | ||
</source> | </source> | ||
== Mainメソッド == | == Mainメソッド == | ||
[[PssStudio]]で新規プロジェクトを作成すると、AppMain.csファイルが自動生成され、その中のAppMainクラスに[[ | [[PssStudio]]で新規プロジェクトを作成すると、AppMain.csファイルが自動生成され、その中のAppMainクラスに[[エントリポイント]](起点)となるMainメソッドがある。 | ||
以下のような記述が[[ | 以下のような記述が[[エントリポイント]](起点)として必ず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)]] === | === [[SystemEvents.CheckEventsメソッド (Sce.Pss.Core.Environment)]] === | ||
旧来の[[家庭用ゲーム機]]であれば[[ゲーム]]のみが動くのが一般的であり上記の3つだけで良かったが、近年の[[PC]]に近い環境ではアプリ切り替えなどにより、[[ゲーム]]を一時中断させられたりするため、定期的にシステムのイベントのチェックを行う必要がある。 | |||
本気モードの場合は、チェックした内容で細かい制御を書いたりする。 | 本気モードの場合は、チェックした内容で細かい制御を書いたりする。 | ||
=== UpdateメソッドとRenderメソッド === | === UpdateメソッドとRenderメソッド === | ||
Updateメソッドには主に[[CPU]]を使う計算処理を書く。 | |||
いわゆるゲームメイン処理。 | いわゆるゲームメイン処理。 | ||
ようするにキー入力やキャラクターの移動、[[当たり判定]]などを行う。 | ようするにキー入力やキャラクターの移動、[[当たり判定]]などを行う。 | ||
Renderメソッドには主に[[GPU]]を使う描画処理を書く。 | |||
「何でUpdateとRenderの2つのメソッドを分けてるの?意味ないじゃん。[[デザインパターン]]の一種?」と思われるかもしれないが、この例では[[シングルスレッド]]で処理しているが、本気モードのときはゲームメイン処理が重いときは描画処理をすっ飛ばしたり([[フレームスキップ]])、ゲームメイン処理と描画処理で[[スレッド]]をわけたりする(いわゆる[[マルチスレッド]])のが一般的だからである。つまり本気モードへの移行時に[[ソースコード]]の書き換えを最小限にするためである。 | 「何でUpdateとRenderの2つのメソッドを分けてるの?意味ないじゃん。[[デザインパターン]]の一種?」と思われるかもしれないが、この例では[[シングルスレッド]]で処理しているが、本気モードのときはゲームメイン処理が重いときは描画処理をすっ飛ばしたり([[フレームスキップ]])、ゲームメイン処理と描画処理で[[スレッド]]をわけたりする(いわゆる[[マルチスレッド]])のが一般的だからである。つまり本気モードへの移行時に[[ソースコード]]の書き換えを最小限にするためである。 | ||