ゲーム大会の実況/解説はどうあるべきか?

 Nintendo Switch の ARMS というソフトがにわかに盛り上がっている。伸びるパンチが特徴の対戦ボクシングゲームで、この間公式大会が開かれたのでその動画を見てもらうのが知らない人には一番手っ取り早い。


 さて、1試合見てもらうと分かるが(自分は全試合見ていたわけだが)、この公式大会、実況と解説が端的に言ってヒドい。つまり、実況者は実況ができていないし、解説者は解説ができていない。生放送に付く脇のコメント欄と同程度のことしか言えていない。実況はちゃんと喋れる人を連れてきているし、解説は開発プロデューサーなのだから、細かい仕様や戦略*1もバッチリのはずだが……。

 思えば Splatoon 甲子園の実況も結構ひどかった覚えがあるし、e-sports の参入はかなり後手といえる任天堂はまだこういった大会の運営や放送における実況解説におけるノウハウが溜まっていないのかもしれない。

 

 そもそも、ゲーム大会の実況と解説はどうあるべきなのだろうか? 2010年代に入り急増したゲーム大会のオンライン放送、それがゲーム開発者としてもこれ以上ないプロモーションの一つとなった今、少し考えてみたいところである。

*1:お披露目会で一般人ボコボコにしてましたね

続きを読む

サラリーマン寸感。 - そして、ビジネスというモノについての諸考察

 f:id:eiki_okuma:20170701170318j:plain

 えー、この度退職しました。おめでとう自分!
 思う所は色々ありましたが、何より自分のやりたいことに専念したいというのがメインの理由になります。あと寝たい。*1

 

 さて、一度組織というものに所属して抜けると色々見えてくるものがあるわけです。働き方というものがますます多様化する中、サラリーマンに向いている人と向いていない人というものが当然出てきますが、それがすなわちサラリーマンという生き方を選ぶかどうかの判断理由に直結するかいうとそうではなく……。ぼくなんかはまさにサラリーマンに向いてない側の人間でしたが、この五年間で学びも色々あったわけです。

 

 退職を決めたときや、引継ぎを終えて特にやる仕事もなくなった最後の一週間、組織に入って働くということがどういうことか、どういうものをもたらすのか、ひたすら考えてきたので今サラリーマンの人(特にやめたい心が高まっている人)、これから就職する人就職活動真っ最中の人もう内定決まった人、そして転職するか独立するかまさに検討している人は是非読んでみてください。

 

*1:会社の悪口なんてものは探せばいつまでも見つかるモンで、そういうのをつらつらと並べるのは今はやめておきましょう。

続きを読む

はむころりん(仮)メイキング+感想 @ #unity1week

f:id:eiki_okuma:20170529194038p:plain

#unity1week というものに参加してきました。

Unity 1週間ゲームジャム | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

 一ヶ月前にこの記事を見て、めっちゃ面白そうと思ったのが発端。ゲームジャム系は前々から興味があったものの、合宿になるとどうにも腰が重かった。が、この #unity1week 、社会人に優しく期限は一週間も取ってくれるし、投稿のハードルも低い! ということで短期決戦ゲームのリハビリ(?)も兼ねて参戦しました。

続きを読む

NieR: Automata

 PVの2B走りモーションに魅せられてライコの参考に……と買ってみたら久々に心行くまで楽しめた名作アクションゲーム。ニーアシリーズもDODシリーズも未プレイだが、十二分に楽しめた*1
 MGSやベヨネッタ等最近の和製アクションゲームは一通りプレイしたけれども、トロフィーコンプまで行ったのは初めてかも(天井が低かったのもある)。あと、設定万歳。

*1:前提知識はネタバレ+動画で事前に補完した

続きを読む

スーパーマリオランはなぜ高いのか

鳴り物入り、ってレベルではないドンガラガッシャン感を出して堂々と世に出ました、スーパーマリオラン。皆様いかがお過ごしでしょうか。クリアしましたでしょうか。ブラックコインのおまけコース含めたコンプリートまでいくとやや骨が折れますが最強キャラであるルイージを使うと結構ギミック無視して取れるのでお試しあれ。

さて、ご周知のとおり一騒動あったスーパーマリオランのその価格。実に1200円。うーん……高い。高いよ。コンシューマゲームのユーザで2000円の同人ゲームを売り年始には25万デレマスにぶっこんだ自分でさえ、第一印象として「高い」と思うもの。

すると、ゲームクリエイターとしては一抹の疑問がよぎる。なぜたった1200円が、高いと感じるのか。ふとそれを考えていくと、そこには単純な値付けミスだとかユーザ層の乖離だとか、そういう話とはまったく異なるベクトルの何かが潜んでいるということにふと気付いたのである。

続きを読む

めめめめうめうを最適化

大分昔のツイートではあるが、朝から流れてきたので頭の体操がてらに最適化。あ、ちょっとプログラマーっぽい。
友人から「これってどういうこと?」と聞かれたので彼のために解説を書く。

設問

「"め"と"う"をランダムに出力するプログラムを書き、その文字列の最後が偶然「めめめめうめうめめめめうめう」となった時、「ぺったんぺったんぺったんぺったん大好き」という文字を出力して終了せよ。

回答
public class Main{
    public static void main(String[] args)
    {
        int M=0;while((M&16383)!=15738){M=(M<<1)|(int)(Math.random()*2);System.out.print((M&1)>0?"め":"う");}
        System.out.println("ぺったんぺったんぺったんぺったん大好き");
    }
}

正直 Java とかよくわかってないが、元ツイートが Java だったので Java で書いた。C++だともう数文字短い。

解説
続きを読む

.csv を更にスマートに読み込む

今時 Unity だと .csv とかめっちゃスマートに読み込めるのでコピペして使おう。

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Linq;

class ReadCSV
{
	List<CharaData> mCharaDataList = new List<CharaData>();

	public void loadCharaData()
	{
		Dictionary< string, ECharaID> charaid_table = new Dictionary<string,ECharaID>();
		for( ECharaID e = ECharaID.Invalid; e < ECharaID.Max; e++ ) enemy_table.Add( e.ToString(), e );
		
		TextAsset alltext = Resources.Load( "GameData/CharaData" ) as TextAsset;

		List<string> alllines = alltext.text.Split('\n').ToList();
		alllines.RemoveAt( 0 );
		alllines.RemoveAt( 0 );

		int current = 0;
		foreach( string line in alllines )
		{
			List<string> elements = line.Split(',').ToList();
			if ( elements.Count < 6 ) continue;
			CharaData d		= new CharaData();
			d.Value0		= charaid_table[elements[0]];	// <- string to enum
			d.Value1		= SmartParse( elements[1] );	// <- string to int
			d.Value2		= SmartParse( elements[2] );
			d.Value3		= SmartParse( elements[3] );
			d.Value4		= elements[4];			// <- string to string
			d.Value5		= elements[5];

			mCharaDataList.Add( d );
		}
	}
	
	static public int SmartParse( string str )
	{
		int result;
		if ( int.TryParse( str, out result ) ) return result;
		else return 0;
	}
};

解説

とりあえずリストのために generic、パースのために lynq を読み込む。
最初の行で Dictionary に登録しているのは Enum (列挙型)の一覧。。これにより、CSVEnum の文字列をそのまま書き込んでも認識されるようになるので便利。

改行でパースしたものを二行飛ばし(コメントなど用のスペース。無くても可)、更に各行を','でパースする。更に各項目の中に複数の値を入れたいなら「|」や「@」などで区切るとよし。
string 型から int 型へのパースはどうにも使い勝手が悪いので、エラーを吐かない Parse を用意してやる。処理速度にはほぼ影響なし。

これだけ。C# は便利。ご賞味あれ。