視界もはっきりしない。俺は、一体今まで何と戦ってきたのだ。生きているというのだけは分かる。戦わねばならない事もはっきりしている。回収されたフライトレコーダーからそして条件を満たしたときにあらわれる真・最終ステージ、「シアワセ」。「人工知能」である「ムーンショット」に対抗する「天然無能」。その正体は「生老病死」であった。起動し、ブートが完了するまで、守り抜くのがミッションだ。残機がいくらあったとしても、死んだ瞬間に守りがほころび、ほぼ間違いなくゲームオーバーになってしまう。このステージではコンティニューもできないので、「人生は一度しかない」と念じながら最後までやりきろう。YouTubeアンパンマンのマーチアナザーエンドラストステージは、頭のアンパンから餡が飛び散りきるまでに「安心安全帝国」の管理AI「ムーンショット」を破壊するミッションとなっている。ここだけはコンティニューできず、残基も自動的に0になるので、気合を入れて攻略しよう。})()今日一週クリアしたんですが、エンディングの日はちょうどクリスマスの朝だったので、スケッチするように感想をさっと書き留めておきたいと思います。5pb.ネット上ではこの画像で(一部で)有名なゲームです:ですが、このゲームは実はココアさん「だけになる」わけではないです。いわゆる「個別ルート」に入って以降は、あなたはチノちゃん、リゼちゃん、千夜ちゃん、シャロちゃんのそれぞれに「なります」。原作と同様、物語に大きな起伏があるわけではありません。異世界チートもないし生死を分ける戦いもないです。後半では、(チノちゃんルートでは)あなたはチノちゃんとなって、誕生日のお返しとして、たのしいクリスマスパーティを開くべく、人付き合いの苦手な彼女なりに奔走する。悪く言うと、淡々としてます。人によっては退屈だと思うかもしれないくらい。「グッドエンド」と呼ばれているものも、いわゆる普通の美少女ゲームと比べたらなんてことないです。「日常のささやかな一コマ」の範疇に収まってしまうかもしれません。なんでそれでいいのかわかりませんが、それでいい。物語は、ココアさんがチノちゃんの誕生日(12月4日)が数週間後に近づいていることを知るところから始まります。ココアお姉ちゃんは決心します。今年のチノちゃんの誕生日を、最高のものにしよう、と。そのために、バイトを頑張って、あとコスプレしてチラシ配りをして、ラビットハウスの知名度をあげて喜んでもらおう、と。...かなり発想が飛躍しています(たぶんシステムが決まってからシナリオが逆算されたんだと思う)。物語の中で「あれ?なんでチラシ配りしてたんだっけ??」ってココアさんも忘れる描写があるのでOKです。これを書いてて、わたしもなんでチノちゃんの誕生日のためにチラシ配りしてたのか忘れました。バイトのパートは正直難しいです。たくさんのオーダーにワーキングメモリが押しつぶされそうになります。それもチノちゃんの誕生日を最高のものにするためです。バイトがうまくいってラビットハウスの知名度が上がるとなぜかうれしいのです。チノちゃんの誕生日までに特定のキャラクターとの親密度をあげるか、ラビットハウスの知名度を最大にあげないと、(チノちゃんは喜んではくれるのですが)そこで物語は終わります。ここで「もっとチノちゃんに喜んでもらえる、最高の誕生日にできたはずなのに」という、悔しさにも似た感情が発生します。チノちゃんにモテなくて悔しいんじゃない、チノちゃんの誕生日を最高のものにしてあげられなかったことが悔しいんだ。これでは俺はお姉ちゃん失格だ。チノちゃんの誕生日を最高のものにすることができたら、そのお返しとしてのクリスマスパーティを準備する、第二の物語が続きます。この時は、(チノちゃんルートの時は)わたしはチノちゃんになります。システム自体はいわゆる普通のギャルゲーで、三択したときに正解だと「友情度」が上がってエンディングが分かれるやつです。そんなのはどうでもいい。チノちゃんになれば、自ずと選ぶべき選択肢はわかります。少なくともそんな気持ちになります。あんなに素敵な誕生日を用意してくれたココアさんにお返しがしたい。わたしは、みんなでわいわいするパーティなんて開いたことないし、そもそもクリスマスといえばもっと慎ましく過ごすものだと思ってた。そんなクリスマスじゃ、きっとみんな退屈しちゃう...どうしよう...。チノちゃんは人に頼るのが苦手です。相談するのもいちいち憚ってしまう。ココアさんは相談してねと重ね重ね言ってくれるけれど、ココアさんにお返ししたいのだから、ココアさんには頼れません。ラビットハウスはクリスマスももちろん営業があります。一日貸し切って、なんてこともできません。仕事の後にパーティを開くしかない。そこがまたリアルなんです。そんな彼女が出した「クリスマスパーティ」の答えは何か?これはもちろん遊んで確かめてほしいのですが、ココアさんのようなみんなを巻き込んだ盛大なものでは決してない、彼女なりのささやかな、でも一生懸命な素敵な答えです。パジャマパーティーたのしそう前半パートでは、毎週末集まってパジャマパーティがあります。遊んだ後は、ココアさんとほかの誰かで一緒の布団で寝ます。添い寝しながら楽しく喋って寝る、それだけです。エロゲーは理解できなかったわたしでも、これなら理解できる。「ココアさんになれ」ました。「2人で一緒に寝たら残りの3人はどうしてるんだろう」と思わないではないが、そこは...きっと描かれてない3人の物語があるに違いない。消費するオタク」みたいな構図を極力避けるようなシナリオとシステムになっています。ココアさん「だけ」になるんではなく、後半はほかのキャラクターにもなるので、一切片方向の視点で終わることがありません。ココアさんだけの視点でゲームが最初から最後まで完結していたら、きっとココアさんが実質的に「モテる主人公」になってしまっていたかもしれません。このゲームでは、後半ではココアさんのために奔走することになります。ここがいやな感じが一切しない。Fujisakiおひさしぶりです。21日のニコニコ学会βは良かったですね。良かったのは研究100連発で、本職の人のすごさを見ると、私も何かつくりたいな〜って気分になります。私はボランティア(登壇者へのカンペ出し)として参加しました。凄い人を間近に見れるという特典付き(?)の嬉しいけど責任重大なお仕事です。イベント運営って大変ですね...。あと野糞の人は本気でマッドだ(褒め言葉)。Gamesさんの開発した、アブストラクトな感じのシューティングゲームです。私はこのゲームがSTGに入り始めたきっかけだけあって、大好きです。去年はWebに移植したNoiz2saを公開しましたが、今年はAndroidに移植したものを公開します。【ニコニコ動画】【メリー】Noiz2saをAndroidに移植してみた【クリスマス】クリスマス、そして年末年始といえばシューティングゲーム!ぜひお楽しみ下さい。敵の弾を避けて撃つ、指一本で遊べるシンプルなゲームです。USBのゲームパッドをつなぐと、PC版と同様な操作で遊ぶことも可能です。ダウンロードはこちらからバッドノウハウFAQ移植時のバッドノウハウを書きますQ.リソースのファイルの拡張子がamrとかなのはなぜですかこのように置かないと、リソースが圧縮される時に圧縮されてしまい、AssetManagerからランダムリードすることが出来なくなってしまうからです。あっコーナー分けた割に一個しか思い浮かばなかった...質問は随時受け付けています。Fujisaki「ローレイヤー勉強会」というイベントでのLT。Clientは死んだんだいくら呼んでも帰っては来ないんだもうあの時間は終わって、君も人生と向き合う時なんだ弾幕の海にたゆたう、アブストラクトシューティングNoiz2sa。ChromeにNoiz2saを以前移植して公開してあったのですが、こちらでは書きそびれてたので、クリスマスというタイミングに書くことにします。“Noiz2sa”をブラウザで遊べるようにしてみました。Clientという仕組みを使っていて、これを使うと比較的簡単にネイティブのゲームをブラウザ上で動かすことが出来るようになります!GamepadのAPIがうまく動かないので残念ながらゲームパッドでは動く動かないのですが、キーボードでならガリガリ動くのでJoyToKeyでも使ってやってみてください!...だったら普通にWindows版で遊ぶ?そ、そうですよね...。何もしてないけどクロスプラットフォームNativeClientは、何もしなくてもクロスプラットフォームに対応していて、今回の拡張もLinux/Windows/MaxOSXで動きます。ちなみに開発自体はLinuxでやってます。NativeClientのしんどいところNativeClientはセキュリティ上の要請から、色々制限があります。Portsがあるお陰で普通に使う分には困りませんが、ファイルアクセスやネットへの接続などでは独自のライブラリを使わなければなりません。今回ゲームということでネットワークは使っていないのですが、タイトルの「noiz2sa」のロゴ画像(ビットマップ)や弾幕の定義データ(XML)、BGMや効果音のファイルなど、比較的数は少ないもののファイルアクセスがあり、これに対処する必要がありました。ClientにはURLLoaderというクラスがあるので、これを使えば任意のURLの内容を取得できます。これをローカルファイルの代わりに使えば良さそうです...が、今回はゲームなのでローディングを避けたいのと、大した容量でもない(8MBくらい)なので、全部バイナリ内に入れてしまうことにしました。GitHubとして全データを格納します。ledyba/Noiz2saNaClソースコードを改変できるので別に乗っ取る必要はないのですが、NativeClientの元の記事がそういう感じで乗っ取ってたのでそうしときました。ディレクトリ内のファイルを列挙するAPIであるreaddirなどもおんなじ感じで乗っ取っております。この方法はGoogle先生謹製の記事を参考にしていて、ソースも一部拝借してます。DevelopersさてどうしたものかNativeClient、ファイルが絡むと一気にめんどくさくなります。既存の技術(Flashとか)を置き換えるには少し不便ですね。去年書いて駒場祭で作り方に関する本も出した「Cycloa」というファミコンエミュレータを、今回JavaScriptに移植してみました。Egoというアクションパズルゲームを一緒に配布させていただいています(これはオープンライセンスではありません)。エミュレータや、jsnesなどが既にありますが、前者は軽量なもののスプライトの再現で一部端折っているところがあり、また後者は通常のPC用エミュレータと同レベルの正確なエミュレーションを行なっているものの、非常に重くミドルレンジクラスのPCでは60FPSのリアルタイムが出ないという問題がありました。今回のエミュレータでは、通常のPC向けのエミュレーション精度を保ちつつ、どこまで高速化できるのか検証するのを主目的としました。■どれくらい高速化できたのかを確かめてみようというわけで、既存のエミュレータとのベンチマーク取って見ました。ChromeでFPSリミットを外してどれぐらいの速度が出るのかを調べます。AlterEgoの起動画面でのFPSを比較してみました。194fpsjsnesはそもそもこのPCだとリアルタイムで描画できません。Emulatorより遅いですが、このエミュレータよりスプライトの再現性が高いので、まあ良いのかなと...。C++ネイティブの元のエミュレータには全然勝てません。それでも3〜4倍にまで縮まってるのは、流石Chromeと言ったところでしょうか...■ソースコードソースコードはgithubで公開中です。C++版も同様に公開中。■具体的な手法に関してはまた後日ということで...とりあえず、もうJavaScriptはあんまり書きたくないですね...。Decrypter”を公開する時に書いた、GENETOSのBGMを差し替えるための改造パッチを公開する...と言いながら忘れていましたが、最近ソースコードのフォルダを眺めていたら発見されたので配布します。1.00(2010/11/07)け、結構前...。■使い方ダウンロードして出てくる「_patch_genetos.EXE」を実行するとパッチが適用されます。次に、BGMのファイルを次のように書き換えてください。最終面の「origin.mp3.ore」と「answer.mp3.ore」、エンディングの「rebirth.mp3.ore」はそのまま置き換えられます。Decrypter”で差し替えたいmp3を暗号化し、そのまま置き換えてください。それ以外は拡張子が変わった上で、拡張子以外のファイル名が4文字減ります。こんな感じ:「little_invader.mid.ore」を差し替えたい場合は「little_inv.mp3.ore」という名前のファイルを用意してください。Decrypterを利用して差し替えたいmp3を暗号化した後、上記のようなファイル名に変更してBGMフォルダにコピーしてください。自機が進化した後のBGMに関して、最初の数秒間が再生されません†1。■パッチについて簡単な解説。内部では音楽を再生する関数はmidiを再生するものとMP3を再生する関数に別れています。どちらもファイル名と追加のいくつかの引数を取るもので、これを利用して、midiを再生する関数を書き換えてmp3を再生する関数にバイパスしています。ひとつ問題があって、midiを再生する関数は、ステージ開始時に一気にmidiをロードしてしかるタイミングで再生するBGMを変更する、という事ができるのですが、mp3の関数ではそれはできませんでした。この問題を解決すべくいろいろ試行錯誤した結果、自機が進化する瞬間の処理をフックしてMP3再生関数を呼んでBGMを切り替えています。■パッチ適用時の注意。メニューから普通にゲームを開始する時以外の動作に関してはうまく動かないと思われます。フリープレイでちゃんと動く事とかは考えてません。Fujisaki「アフターキャンプ」というイベントでやったLT。[全画面/表示されない場合]2017/12/06slideshareからこちらにコピー。