ページ「Nancy/Minify & Bundleを使う」と「リセットマラソン」の間の差分

提供: MonoBook
< Nancy(ページ間の差分)
ナビゲーションに移動 検索に移動
 
imported>Administrator
(ページの作成:「'''リセットマラソン'''とは、ゲームにおいて、初期キャラクターなどが乱数で決定する場合に、目標物が出現するまでリセッ...」)
 
1行目: 1行目:
ASP.NET 4から搭載されたMinify & Bundleを[[Mac]]上の[[Mono]]とNancyから使ってみる。
+
'''リセットマラソン'''とは、ゲームにおいて、初期キャラクターなどが乱数で決定する場合に、目標物が出現するまでリセットしまくることをいう。
リリースビルドするとJavaScriptやCSSから無駄が省かれるという機能である。
 
  
[[Linux]]なら[[mod_pagespeed]]で良いじゃんというツッコミは禁止である。
+
リセットマラソンはウィザードリィなどで有名で、高いボーナスポイントが得られるまで延々とキャラクター作成を繰り返し数時間を擁するなどということもあった。
あれはコンパイルが難しいというか配布サーバーが不安定すぎて泣ける。
 
  
==静的コンテンツを扱えるようにする==
+
最近のiOSやAndroid向けのスマホゲームでのリセットは「アプリを消して再インストール」が基本となるため、リセマラ大前提の作りにするとアプリストアにおけるダウンロード数が伸びる(Androidではデータ全消しでもいける)。ただし、あまりの面倒臭さに利用者がゲーム本編を始めるまえに離れる原因にもなる両刃の剣である。
なにはともあれNancyで静的コンテンツを使える状態にする。
 
*[[Nancy/静的コンテンツを扱う]]
 
 
 
==NuGetから必要なパッケージを入れる==
 
[[ASP.NET]]関連のほとんどが、いつの間にか[[ASP.NET]]本体から分離されて[[NuGet]]へ移行している。[[Linux]]上の[[Mono]]でも[[ASP.NET]]を使えという思し召しらしい。[[Xamarin Studio]]からも一発で入る。
 
*https://www.nuget.org/packages/Microsoft.AspNet.Web.Optimization/
 
 
 
==web.configを編集==
 
<pre>
 
<configuration>
 
  <configSections>
 
      <!--  追加 -->
 
      <section name="razor" type="Nancy.ViewEngines.Razor.RazorConfigurationSection, Nancy.ViewEngines.Razor" />
 
      <!--  追加 -->
 
  </configSections>
 
 
 
  <!--  追加 -->
 
  <razor disableAutoIncludeModelNamespace="false">
 
    <assemblies>
 
      <add assembly="System.Web.Optimization" />
 
      <add assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
 
    </assemblies>
 
    <namespaces>
 
      <add namespace="System.Web.Optimization" />
 
    </namespaces>
 
  </razor>
 
  <!--  追加 -->
 
 
 
  <system.webServer>
 
    <!--  追加 -->
 
    <modules runAllManagedModulesForAllRequests="true"> 
 
      <remove name="BundleModule" /> 
 
      <add name="BundleModule" type="System.Web.Optimization.BundleModule" /> 
 
    </modules>
 
    <!--  追加 -->
 
  </system.webServer>
 
</configuration>
 
</pre>
 
 
 
==バンドルを登録する==
 
どこでもいいので登録内容が記述されたメソッドを作る。
 
純正に右に倣えで「App_Start/BundleConfig.cs」にしておくと無難だと思われる。
 
<source lang="csharp">
 
using System;
 
using System.Web.Optimization;
 
 
 
namespace Test
 
{
 
    public class BundleConfig
 
    {
 
        public static void RegisterBundles(BundleCollection bundles)
 
        {
 
            bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
 
                "~/Scripts/jquery-{version}.js"));
 
        }
 
    }
 
}
 
</source>
 
 
 
サーバー起動時に登録する。
 
Global.asax.cs(無ければ作る)のApplication_Startメソッドから上記の登録メソッドを呼び出す。
 
<source lang="csharp">
 
using System;
 
using System.Web.Optimization;
 
 
 
namespace Test
 
{
 
    public class Global : System.Web.HttpApplication
 
    {
 
        protected void Application_Start(Object sender, EventArgs e)
 
        {
 
            BundleConfig.RegisterBundles(BundleTable.Bundles);
 
        }
 
    }
 
}
 
</source>
 
 
 
==Scripts.Renderの違い==
 
ASP.NET 4で標準の記述方法が使えない。
 
@Scripts.Render("~/bundles/jquery")
 
以下を使うことで代用する。
 
@Html.Raw(Scripts.Render("~/bundles/jquery").ToString())
 
ToStringを忘れると[[Razor]]が落ちる。凄い嵌った。
 
 
 
{{stub}}
 

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

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

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

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