何故ぼくは絵を描けないのか。

 同人ゲームを作っていると結局なんでもかんでもとんでもやらなくちゃならないので、品質に差異はあれど大抵の個人開発者というのは全ての作業を自分でできるようになっている。大抵の場合プログラマーはリーダーであると共に企画もやるしシナリオもやるしUIもやるしWebサイトも整備するし動画も作るし委託店舗との連携や印刷所の手配もやる。これは何ら特殊技能ではない。気がついたらそうなっているのだ。

 ……しかしぼくはどうしても絵が描けない。絵だけはサークルメンバーである春さんに任せているのだ。勿論、全く描けないわけじゃない。ミミズくらいは描ける。トレースや模写もできる。でも、同人誌を描いたり、イラストをTwitterに載せたり、そういうレベルじゃできない。いや、やりたくない。

 下手なのだ。下手だから描けない。……だが、厳密に言えば下手であることと絵が描けないことに密接な関係はない。そんなことを言ったら世界で一番上手い人の次、二位以下は絵が描けなくなってしまう。そもそも絵は描かないと上手くならないのだから、絵描きが全滅してしまう。

 つまり実際の所、絵が描けないのではなく、絵が描きたくないのだ。絵が描けるようになりたいのだ。もしかしたら、これを読んでいるあなたも、思い当たる節があるのではないだろうか。絵じゃなくてもいい。何かをしたい。でもできない。本当はやりたくない。でも、できるようになりたい。
 この記事はきっとそんなあなたとぼくのためにある。

続きを読む

メタルギアソリッド5 感想

クリアしました。

システム・操作

  • (+)操作しやすい。右スティックのFPS操作は相変わらずク○だけど、アクション性の高いものではないのでなんとか。
  • (+)慣れると潜入が目に見えてスムーズになるのは面白い。
  • (+)オープンワールド+ブリーフィングのシステムはかなり洗練されている。次にどこに行けばいいか分かりづらいという理由で日本人から経験されるオープンワールドを上手く落とし込んでいる。
    • (-)いちいちヘリ降下挟まるのは面倒くさい。長い。
  • (+)リフレックスタイムが初心者向けで良い。
  • (+)マザーベースを育てるのは面白い。
  • (-)マザーベースでもっと色々やりたかった。不思議のダンジョン系ゲームのような、進行型イベントとかあってもよかった。
  • (+)フィールド内拠点の数が少ない割にあまり単調な感じがしないよう工夫されている。
  • (+)SideOPSも結構面白い。Mainと違って気楽に遊べるし。
  • (+)兵士を揃えると班のレベルが上がり、機能が強化され、新しい武器も開発できるように……という流れは直感的かつやり込みとして楽しい。
  • (-)麻酔銃で眠らせても帰るまでに起きてしまうので基本フルトン必須なのが面倒。
  • (-)フィールド自体はステルスアクションとしては微妙な面も。射線が分かりづらい、進路が分かりづらい、待ち伏せなどの作戦が取りにくい。
  • (-)坂上ろうとしてズザー 段差上ろうとしてズザー とずり落ちるのが最悪。
  • (-)すぐ転落死する。分かりにくい。
  • (*)FOBシステムはまあ……という感じ。一度も侵入は受けなかった。

グラフィック

  • (+)素晴らしいと思う。アニメーションを除くなら、殆ど粗が見つからない。
  • (+)特に肌や布の質感が好印象。雨に濡れた時も。
  • (+)エフェクトや演出で見づらくなることはほぼ無かった。
  • (-)夜が全体的に暗くて見づらい。夜より昼の方が遥かに遊びやすいので、結局昼固定になった。
  • (-)慣れるまでは結構狭い空間での移動が厳しい。酔いそうになる。

トーリー

  • (+)開発者のやりたかったことには概ね好印象(賛否両論あるが……)。メタルギアシリーズの最後として一応ちゃんと纏まっていると思う。未回収の伏線もない。
  • (-)スネークが寡黙なのも含め、全体的に誰が何を考えているのか分からない。(ビッグボスも)
  • (-)ストーリーは分量不足……というより、中途半端な感じ。プレイ時間的には十分なのだが……。
  • (-)隔離イベントが面倒すぎる。
  • (-)ボス戦が全く面白くない上に少ない。特にスカルズ戦は最悪。
  • (*)プレイヤーが核兵器を任意で保有できる → 保有すると一定未満のレベルのプレイヤーからは攻め込まれない、文字通り抑止力として働く → でも結局一定以上のプレイヤーが攻め込んでくる → やっぱりあってもいいことなんてない、とプレイヤーが感じて全員破棄する → オンライン上でプレイヤーが全員破棄すると発動する特殊イベントがある。
    • (+)誘導せずにこういう心理状態を狙ってイベントを仕込むのはとても面白い試み。
    • (-)まあ、二ヶ月経ってまだ見れる兆しすらないんだけども……(しかもyoutubeにある)
  • (-)無線が今までに比べるとほぼ無いに等しい。遊び要素も激減。

総評

  • (+)基本的には楽しめる良作。
  • (-)時間・人的リソースが圧倒的に足りてない。人類には早すぎたゲームなのかもしれない。
    • (-)やりたいことを詰め込みすぎてとうとう終わらなかったという感じ。
    • (-)半分くらいコナミのせい。
    • (-)ミッション一つ毎に新要素、台詞収録、モーションキャプチャーなどが入るので量産体制に入っても全然量産じゃなかった可能性が。
  • (-)オンラインモードは遊んでない。こういうオフラインのコンテンツが充実しているゲームだとオンライン人口は5%程度だし、今のオンライン不評っぷりを見ているとその分のリソースを別にまわした方が良かったのでは……








以下ネタバレ注意

続きを読む

アニメPがモバマスに二ヶ月で 25 万注ぎ込んだ話。(後編)

また長く開いてしまったな。ちょっとイカに侵攻されてな。なに、本業は疎かにしていないさ。
とはいえ、すっかり春クールも終わり、デレマスの後期クールが始まりそうになってしまった。本業もやる、副業もやる、イカもやる、全てやらなきゃいけないのがプロデューサ業の辛い所だ。覚悟はいいか? 俺はできてる。

続きを読む

アニメPがモバマスに二ヶ月で 25 万注ぎ込んだ話。(中編)

ふう、済まなかったね。野暮用だ。何、しがない副業さ。
本業は何かって? 馬鹿なことを言う。プロデュース業だよ*1
ええと、どこまで話したっけ……そう、フェス。俺の初めてのイベントの話だ。

*1:モバマスPは、現実世界での仕事を「副業」と言うのだ

続きを読む

アニメPがモバマスに二ヶ月で 25 万注ぎ込んだ話。(前編)

カランカラン…(バーのガラス扉を開けて男が入ってくる)


おや、見ない顔だな。あんたもアニメを見てアイドルをプロデュースすることなんかに興味が出たクチかい? それなら、俺のアドバイスはきっと役に立つだろう。俺も、そうだったからな。
そう、その目だ。その哀れんだような訝しげな目。君の言いたいことは分かる。こいつは、先駆者たちの制止もロクに聞かず愚かにもプロデュース活動に走り、何万、何十万という大金を失って、こんな辺鄙なバーで安酒を飲みながら後悔するしかなくなった、そう言いたいんだろう? 君がこの店に訪れたのも、そういう人間を見て「俺はこうなりたくない」と最後に踏みとどまるための楔を見つけにきたのだろう?


君の予想は半分合っているし、半分間違っている。


聡明なる先駆者たちの説得を無視してプロデュース活動に勤しんだのは事実だし、そこに家賃より、いや一月の給料より高い金が出て行ったのは事実だ。だが、俺の目を見ろ。腐っているか? 死んだように淀んでいるか?
違うだろう。何故なら、俺は「モバマス」という闇のゲームの中で一筋の光を見つけ、追い続けてきたからだ。
(ぐっとグラスの酒を飲み干す)


いいか、敵は強大だ。いかに先駆者が絶望し腐っていく様を目にした所で、もし君がアニメで「嫁」に出会ってしまったら、きっと引きずりこまれてしまうだろう。三ヶ月後には次のクールだ。新キャラが出る布石もある。ニコニコ動画千川ちひろに「この世全ての悪」なんてコメントを冗談で付けられるのもきっと今の内だ。
だから、俺が教えるのは、この闇の世界の中でどう歩んでいけばいいか。そう、モバマスとは何か、"Pay To Win"とは何か、そして、何故人はたかだか数KBのデジタルデータに何十、何百万という金を吸い取られていくか。その知識と経験と俺なりの答えを君に託したいと思う。

(この記事は、とある記事のオマージュです。)

続きを読む

数値に四桁毎の単位を付けて表示する

10299933000020004041324600000000 を 1029穣9933予2000京4041兆3246億 に変換する方法。
ActionScript で書かれているが、他の言語でも基本は一緒。

var score:Number = 10299933000020004041324600000000;
var cValueUnit:Array = ["","万","億","兆","京","垓","予","穣","溝","澗","正","載","極","恒河沙","阿僧祇","那由多","不可思議","無量大数"];

var scorestr:String = String( score );
var epos:int = scorestr.search("e");
	
// 10^21以上の下処理
if ( epos >= 0 )
{
	var digit:int = parseInt(scorestr.substr( epos + 1 ));
	scorestr = scorestr.slice( 0, 1 ) + scorestr.slice( 2, epos );
	for ( var ex:int = 0, exend:int = digit - scorestr.length + 1; ex < exend; ex++ )
	{
		scorestr += "0";
	}
}
		
var score_list:Vector.<String> = new Vector.<String>;
var result:String = "";
for ( var i:int = scorestr.length, n:int = 0; i > 0; i -= 4, n++ )
{
	var val:int = parseInt( scorestr.slice( Math.max( 0, i - 4 ), i ) );
	if ( val == 0 ) continue;
	result = String(val) + Enums.cValueUnit[n] + result;
}

trace("Score: " + result);
解説
  • まず、数値を文字列に変換する。数値が勝手にe付き(10^21)以上になっていたら、eを取り除いて桁数分の0を後ろに足す。
    • これは ActionScript の言語仕様なので、他の言語ではきっと不要。
  • 文字列を四桁毎に分け、逆順(下の桁から)で結果に挿入していく。(0は弾く)
ポイント
  • 単位リストの先頭は空なので、0〜9999までの先頭の四桁は単位が付かない。
  • 一桁ずつ舐めていくと、「111100001111」が「1111億0000万1111」、または0を弾いても「1111億万1111」となり不自然である。
    • その四桁が空かどうかを判定するには、四桁毎に区切って判定するしかない。

きらりん☆DASHをドリンク飲んで制作(はし)った話

http://kirarin.illucalab.com/

作りました。
弊サークル「いるからぼ」では定期的に FLASH でゲームジャムをする良くない慣習があり、これもその一つ。製作期間は二人で二日間。ただし平日(月火)なので実働はもうちょっと少ないです。
正直短期間でゲーム作ったからなんだという話ではありますが、老いてから見返した時に「ああ、あの頃は若かったなあ」と思い出にふけるため備忘録を残しておきます。

きらりん☆DASH を作る上で、弊サークルがどのように意思決定し、ゲームデザインをし、完成までこぎつけたかというお話。

続きを読む