Archive - 2009.02

C#とLINQでFizzBuzz

using System;
using System.Collections.Generic;
using System.Linq;
 
class Program
{
    static void Main()
    {
        // FizzBuzzの無限リスト
        var FizzBuzz = Enumerable.Range(0, int.MaxValue).Select(i =>
            (i % 15 == 0) ? "FizzBuzz" :
            (i % 3 == 0) ? "Fizz" :
            (i % 5 == 0) ? "Buzz" :
            i.ToString());
 
        // Skipが起点、Takeが表示数に対応する
        FizzBuzz.Skip(1).Take(100).ForEach((s, i) => Console.WriteLine("{0,3}:{1}", i + 1, s));
    }
}
 
public static class ExtensionMethods
{
    // indexが取れるForEach
    public static void ForEach<T>(this IEnumerable<T> source, Action<T, int> action)
    {
        int index = 0;
        foreach (var item in source) { action(item, index++); }
    }
}

何だかふと思って、今更ながらにanarchy golf - FizzBuzzをやってた。とりあえずC#でSize 123で同率一位達成なので満足です。以上。で終わるのもアレなので、記念にFizzBuzzをきちんと書くならどうなるかなあ、と考えてみた。

C#3.0だとLINQを使うのがきっとスマートです、よね。無限リストを作ってやるのが一番、かな。Skipがstart、Takeがcountに相当するってのが何だか面白い。しかし毎度ながらEnumerable.Range(0,int.MaxValue)という表記が冗長に過ぎてげんなり。あとIEnumerableにForEachが用意されてないのもなあ。ToList()は色々と違うと思うので、本当に何とかして欲しい。

Xbox360ゲームとしての出来の悪さ

怒首領蜂大往生・ブラックレーベル EXTRA。モニタも縦画面で広々、苦手なスティックをこの機に克服するぞ、という勢いでせっせとプレイしています。実際かなり楽しくプレイ、できている、はずなのだけど猛烈に足を引っ張っているのが一つ、二つ、三つ、四つ、無限大にある。

STGの移植というと、重箱の隅を突っつく指摘ばかりでゲンナリ、少しぐらい大目に見ないから絶滅するんだよ!とはよく聞く話で、絶滅かはともかくやたら細かい指摘は聞き苦しい。斑鳩なんて素晴らしい出来だというのにケチつけられちゃったし。何てことを思いつつも、しかし今回の怒首領蜂大往生の出来は凄まじく酷い。ゲームを始める前に不満が山ほど出てくるゲームは初めて。メニューの操作性がヤバすぎる。出来の悪いUIの見本市になっていた。

十字キーのレスポンスがトロい上に、決定がたまにスカる(決定音だけ出るけど無反応)というオマケつき。ローディングが超長いのは当然のように標準搭載。画像ギャラリーで画像一枚読むだけでNOW LOADINGが出てくるぐらいに。この画像ギャラリーを見た瞬間に、起動時のクソ長いローディングの理由が氷解し、全てに諦めがついた。

使用ボタンの不統一

今時、決定にAとSTARTを使い分けさせるゲームがあったら不親切だな、と思う。でも5pb謹製メニューはそんな甘っちょろいものじゃないぜ。

  • ゲーム画面トップ:STARTボタンでないと始められない(Aはダメ)
  • コンフィグ一覧:Aでないと内容を開けられない(STARTはダメ)
  • コンフィグ詳細:STARTでないと確定させられない(Bは無反応、つまりキャンセルできない)
  • ゲーム中ポーズ(START):STARTでゲーム画面へ戻る
  • ゲーム中コンフィグ(BACK):BACKでゲーム画面へ戻る(STARTは無反応)

なんとBACKすら使わせるとは。そもそもゲーム中ポーズとゲーム中コンフィグを分ける意味も分からないけど。そしてキャンセルがない。理解不能。こんな腐れっぷりだから、最初メニューの抜け方すら分からなくて1分間悩んだぐらい。たかだかメニューを抜けるだけに一分もかかるとは難易度高すぎる。さすが大往生。キャンセルがない+STARTが決定+Aは無反応、という図式を理解してようやくメニューを使いこなせるようになった。

階層を一つ降りて、コンフィグ詳細の中身を見るとこちらもまた酷い。上下キーで項目(例えばBGM音量、SE音量)選択、左右キーで詳細(実際の大きさ、50とか100とか)選択というよくあるメニューなのだけど、Aボタンでその項目を選択したあとでないと左右で詳細を変更できない。腐ってる。別に確定させなくても左右で変更できるのが当然なのに。これによって辛くなっているのがステージセレクト。上下項目にSTAGE・TYPE・DOLLと並んでいるのだけど、例えば「2-5・TYPE B・LEINYAN」を選ぶには、A(項目確定)→右……→B(項目戻る)→下→A→右……→B→下→A→右……→Bと繰り返さなければならない。AとBがワンセットになっているからダルさ倍増だよ!ちなみに左右選択が異様に遅いので5-1を選ぶのは相当ダルい。

ランキング

何でゲームがオンラインランキングとオフラインランキングで分かれているの?ここは、絶対にシームレスに繋がっているべきだと思うのだけど。ゲームオーバーになったら何も意識せずにランキングがアップロードされ、何も意識せず余計な操作も必要なく、即座にワールド/フレンドランキングが確認出来る。それでこそ「競い合おう」という意識が強まるというのに。百億歩譲ってオンラインランキングとオフラインランキングが分かれているのは許すとしても、ランキングを見るまでの距離が遠いのは絶対に許せない。ランキングを見るためには一度ゲームから抜けて40秒近いロード地獄を抜けてクソトロいメニュー画面を操作してようやく辿り着ける。辿り付けたと思ったら、そのランキング画面も期待通りに酷いUIだけど、もういいや。

私は縦画面でプレイしているのだけど、縦画面対応なのはゲーム画面だけでグローバルメニューは横画面のみ対応だから、縦画面でゲームしてる限りランキング表示を見るのはシンドい。電源入れた直後に確認する程度しか無理ですよ、このランキング確認への敷居の高さは、はは。一体これは、何世代前のゲームなんだろうね……。

実績

プロデューサーは実績M@STERで有名(7万オーバー)で実績について語ったり何だりをしている人だけど、そのこだわりの実績は、特殊オプションで無敵モード(敵が弾撃ってこない)にすれば全部解除出来て楽々1000、らしい。私はまだそのオプションを出していないので明言は出来ないけど、もしそうなら、失望したとしか言いようがない。ああ、実績へのこだわりってのは、楽に実績解除出来ることをヨシとするような発想からきてるのか。それじゃあ開始3分で実績1000のAvatarと「実績の意味」は変わりやしない。

実績ってのはね、オプション使えば楽に解除できるとかいう邪念に邪魔されず自由で、なんというか救われてなきゃあダメなんだ 純粋で静かで豊かで……

実績ってのは解除が「難しい<->易しい」だけで出来てるものじゃない。プレイヤーを、よりゲームを楽しませるために引っ張るものなんだよ。時にゲームの目標(最高の例がジオメトリの100万達成、アレは目的のないゲームに目的を与える役割を見事に果たした)であり、時に攻略の手助け(実績を取るための手段が、実力の蓄積に繋がる)であり。アメとムチなんだよ。ゲロゲロに甘いシロップをはいどうぞ、と言われて誰が喜ぶの?

この大往生の実績は、オプションオンにして実績1000にしたら、たまらない虚脱感に襲われてしまう。こんな形で1000を獲得したら、目標を喪ってプレイをやめてしまうよ。それならオンにしなければいい、と言うけれど、目の前に常に人参をぶら下げられているのも同然だよ?プレイヤーに無用な苦しみを与えることになる。だから、無敵モードで楽々解除、なんてシステムを搭載していること事態がどうしょうもなく邪悪なんだよ。

結論

Xbox360ソフトとしてのガワが恐ろしく足を引っ張っているので、Xbox360ソフトとして見れば駄作。このメーカーの名前がXbox界隈に出て来たときのことは今も鮮明に覚えているよ。5pbは2DSTGの救世主(笑) XBLAに数十作移植の提案を蹴ったMSKK死ね(笑) あのね、今ならね、言えるよ。MSKKグッジョブ。蹴って良かった。そして5pbは、ケツイの前にパッチでこっちを完璧にして、その経験をケツイにフィードバックしてマトモなものを作ってください。こんなに出来の悪いガワなんてこの時代にありえないと思ってたけど、甘すぎたんだなあ。

ゲーマータグ変更

ジオメトリDeadline1億超えスーパー動画を見た私は真似してプレイするもののスコアはあまり伸びない。いや、伸びた。安定した。1億には全然届かないものの、安定して3000万を超える辺りが、この攻略法の素晴らしさ。そんな感じで気が高揚していたらふと思った。そろそろ、名前統一してもいいんじゃないか、と。

考えてみるとStage6が死んだこともあって、ニコニコ、zoome、YouTube、Ustream、Twitter、はてな、使用しているウェブサービスでは全てneueccを使っていて、ゲーマータグだけが取り残された状態だった。もう、そろそろ、変更してもいいんじゃないかな、と。まあ、淡々とひたすらリトライリトライで思うようにスコアも伸びないと、そういうことを考えてしまうわけですね。

そんなわけで変更してしまいました。800ゲイツポイントは安いか高いかで言ったら高い。せめて400にして……。そして、やっぱ変えた瞬間は後悔というか、寂しい感じがしました。名前ってのは、実名<->匿名論争的には匿名側なのだろうけど、やっぱり色々背負っているものがありますからね。

と、いうわけで、フレンドリストを見て見慣れない名前がある、削除したれ。とか思わず放置してやってください(笑) また、これを機に新しく登録してくださる方もいれば大歓迎です。最近全然ゲームやってないんですけどね。ゲームやってないとBlogの更新が見事にストップする。でもまあ、これから大往生もあるし(konozamaで予約したので金曜か土曜かから始めます) そこそこプレイしていけたら、いいです、ねえ。STGといっても全方位STG以外は苦手なんですけど。

ところで、Xbox360はボイスチャットなのでゲーマータグは呼び方が難しいタグ名はアウトって感じではある。「neuecc」は、難易度中ぐらい? スペースがないので区切れないからネウエックとか読めそうです。これは厳しい。そしてそもそも正しく読んだとして「ノイエシーシー」というのは呼びにくい。まあ、縮めて? 「ノイエ」ぐらいになるとして、これがドイツ語特有の気取った感じがして、恥ずかしさと小憎たらしさが同居する微妙さ。これは困る。うーん。まあ、しょうがない、ね、そういうのは……。

解像度6000オーバー

クアッド→デュアル→トリプルと目まぐるしくディスプレイを変えている私ですが、さすがにもうこれで終了かな。メインが2560×1600の30インチ、サイドが2048×1152という変則解像度の16:9ディスプレイ。全部合計すると横解像度は6000を超えます。これは広い。これは素敵。これは便利。超お薦め。

メインモニタであるNEC LCD3090WQXiはスタンドがピボット対応なのでモニタアームを買うことなく縦回転が出来ます(というか30インチを支えられるモニタアームなんてそもそもほとんど無いのですけど) 画質はかなり良好。2560×1600は1280×720の、ちょうど縦横二倍なのでWUXGAモニタよりも良いかもしれませんね。ゲームにつきものの残像に関しては、私は気にならないなあ。スコアアタックでも大丈夫です、ジオメトリなら。ちなみに残像低減技術であるRESPONSE IMPROVEはデフォルトではOFFになっていて、しかも隠しメニューからじゃないとONに出来ないことに注意。この隠しメニューが痒いところに手の届く充実のオプション項目で素晴らしい。このモニタは文句なしにお薦め。現在主流のWUXGAは、ウィンドウ二枚並べるには少し狭くて不満がたまるでしょう。WQXGAになって初めて、ウィンドウ二枚並べて表示が快適に使えるようになるのです。

サイドモニタはSAMSUNGの2343BW。おにゃのこが可愛いと話題になったアレです。2343BW 23型2048 x 1152ディスプレイ - Engadget Japanese。解像度はWUXGAの1920×1200=2304000を超えた2048×1152=2359296。それよりも私は、ドットピッチが30インチに近いところが良いな、と思って選びました。後悔はしてないし満足ではあるけど、不満はかなりある。

とにかく電源LEDが明るい。青色でアホみたいな輝度で光りってる。NECのモニタは青と緑が選べる上に輝度もちゃんと調整できるいたせりつくせり具合なのに、このクソモニタは超自己主張。画面の右下なので目障りすぎる。しかしそれより何より最悪なのは、PCの電源が落ちている状態だと、点滅するんです。点滅。勿論、輝度は最高潮のままで。ありえない頭の悪さにさすが韓国……と思ったとか思わないとかというぐらいに酷い。ので、このモニタはお薦めしません。そもそも2048×1152は16:9といえど変則的すぎて、メインモニタとしては使いたくない解像度でしょう。サブモニタとしては良好なんですけどねえ。

Search/Archive

Category

Profile


Yoshifumi Kawai
Microsoft MVP for Visual Studio and Development Technologies(C#)

April 2011
|
July 2018

Twitter:@neuecc
GitHub:neuecc
ils@neue.cc