ページ「MonoGame/クラスライブラリ/RenderTargetUsage列挙体」と「リセットマラソン」の間の差分

提供: MonoBook
< MonoGame‎ | クラスライブラリ(ページ間の差分)
ナビゲーションに移動 検索に移動
imported>Administrator
 
imported>Administrator
(ページの作成:「'''リセットマラソン'''とは、ゲームにおいて、初期キャラクターなどが乱数で決定する場合に、目標物が出現するまでリセッ...」)
 
1行目: 1行目:
RenderTargetUsage列挙体は、グラフィックデバイス([[MonoGame/クラスライブラリ/GraphicsDeviceクラス|GraphicsDeviceクラス]])に新たなレンダリングターゲット([[MonoGame/クラスライブラリ/RenderTarget2Dクラス|RenderTarget2Dクラス]])を設定したとき、そのレンダリングターゲットの[[データ]]をどのように処理するかを指定するのに使用する列挙体である。
+
'''リセットマラソン'''とは、ゲームにおいて、初期キャラクターなどが乱数で決定する場合に、目標物が出現するまでリセットしまくることをいう。
  
== 名前空間 ==
+
リセットマラソンはウィザードリィなどで有名で、高いボーナスポイントが得られるまで延々とキャラクター作成を繰り返し数時間を擁するなどということもあった。
* [[MonoGame/クラスライブラリ/Microsoft.Xna.Framework.Graphics名前空間|Microsoft.Xna.Framework.Graphics名前空間]]
 
  
== 構文 ==
+
最近のiOSやAndroid向けのスマホゲームでのリセットは「アプリを消して再インストール」が基本となるため、リセマラ大前提の作りにするとアプリストアにおけるダウンロード数が伸びる(Androidではデータ全消しでもいける)。ただし、あまりの面倒臭さに利用者がゲーム本編を始めるまえに離れる原因にもなる両刃の剣である。
public enum RenderTargetUsage
 
 
 
== フィールド ==
 
{| class="wikitable"
 
|+
 
! 値
 
! 概要
 
|-
 
| DiscardContents
 
| 常にレンダリングターゲットのデータを削除する。
 
|-
 
| PlatformContents
 
| プラットフォームに応じて扱いを変える。使うな危険。
 
|-
 
| PreserveContents
 
| 常にレンダリングターゲットのデータを保持する。
 
|}
 
 
 
== 備考 ==
 
=== PreserveContentsは遅い ===
 
PreserveContentsは[[VRAM]]容量が少ない環境では[[メインメモリ]]への保存と復元が発生するため絶望的なほど遅くなる。
 
[[PC]]ではまず問題になることはないようだが、一部の[[スマホ]]では絶望的な速度になるようだ。
 
なるべくDiscardContentsを使ったほうが良さそうだ。
 
 
 
=== DiscardContentsの注意点 ===
 
GraphicsDeviceが最初から持っているレンダリングターゲット(DirectXでいうプライマリサーフェイス)に相当するものはDiscardContentsに設定されている。
 
DiscardContentsの欠点はGraphicsDevice.SetRenderTargetするたびに破棄される点であり、レンダリング系APIの呼出順序を間違えると残念なことになる。
 
 
 
たとば以下のコードは正常に動作しない。
 
<source lang="csharp">
 
        protected override void Draw(GameTime gameTime)
 
        {
 
            // (1)プライマリサーフェイスを塗りつぶす
 
            _graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
 
 
 
            // (2)レンダリングターゲットを切り替える
 
            _graphics.GraphicsDevice.SetRenderTarget(new RenderTarget2D(GraphicsDevice, 128, 128));
 
 
 
            // (3)レンダリングターゲットをプライマリサーフェイスに戻す
 
            // このときプライマリサーフェイスはDiscardContents設定なので内容がクリアされ(1)の塗りつぶしが無かったことにされる。
 
            _graphics.GraphicsDevice.SetRenderTarget(null);
 
 
 
            base.Draw(gameTime);
 
        }
 
</source>
 
 
 
DiscardContentsの場合は以下のような呼出順序で書かなければならない。
 
<source lang="csharp">
 
        protected override void Draw(GameTime gameTime)
 
        {
 
            // (1)レンダリングターゲットを切り替える
 
            _graphics.GraphicsDevice.SetRenderTarget(new RenderTarget2D(GraphicsDevice, 128, 128));
 
 
 
            // (2)レンダリングターゲットをプライマリサーフェイスに戻す(と同時にまっさらになる)
 
            _graphics.GraphicsDevice.SetRenderTarget(null);
 
 
 
            // (3)プライマリサーフェイスを塗りつぶす
 
            _graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
 
 
 
            base.Draw(gameTime);
 
        }
 
</source>
 
 
 
== 関連項目 ==
 
* [[MonoGame/クラスライブラリ/GraphicsDeviceクラス|GraphicsDeviceクラス]]
 
** [[MonoGame/クラスライブラリ/GraphicsDeviceクラス/SetRenderTargetメソッド|SetRenderTargetメソッド]]
 
** [[MonoGame/クラスライブラリ/GraphicsDeviceクラス/SetRenderTargetsメソッド|SetRenderTargetsメソッド]]
 
** [[MonoGame/クラスライブラリ/GraphicsDeviceクラス/GetRenderTargetsメソッド|GetRenderTargetsメソッド]]
 
* [[MonoGame/クラスライブラリ/RenderTarget2Dクラス|RenderTarget2Dクラス]]
 
* [[MonoGame/クラスライブラリ/RenderTargetCubeクラス|RenderTargetCubeクラス]]
 
* [[MonoGame/クラスライブラリ/CubeMapFace列挙体|CubeMapFace列挙体]]
 
* [[MonoGame/クラスライブラリ/RenderTargetBinding構造体|RenderTargetBinding構造体]]
 
 
 
[[category: MonoGame]]
 

2018年2月7日 (水) 04:52時点における版

リセットマラソンとは、ゲームにおいて、初期キャラクターなどが乱数で決定する場合に、目標物が出現するまでリセットしまくることをいう。

リセットマラソンはウィザードリィなどで有名で、高いボーナスポイントが得られるまで延々とキャラクター作成を繰り返し数時間を擁するなどということもあった。

最近のiOSやAndroid向けのスマホゲームでのリセットは「アプリを消して再インストール」が基本となるため、リセマラ大前提の作りにするとアプリストアにおけるダウンロード数が伸びる(Androidではデータ全消しでもいける)。ただし、あまりの面倒臭さに利用者がゲーム本編を始めるまえに離れる原因にもなる両刃の剣である。