Hatena::ブログ(Diary)

mizchi log

@mizchiの雑記帳

2011-11-12

ネトゲのこれからいじるところ

作ってみると自分自身が面白くなってしまったので、とりあえず作り込むとします。

名前とコンセプトを明確に

シナリオ含めた演出を明確にする必要

リファクタリング

デバッグのためにアドホックになってしまったコードを整理
ゲームデザインをしっかり定めて、抽象化する段階を明確に規定

テストコードの書きなおし

ちゃんとTDDしたい。

ゲーム性の部分

  • 敵のモンスターのレベルをランダムにする。パラメータの補正は要調整
  • 何かを収拾するようにすればゆるーい作業感が出ていい
  • レベルアップした時のスキルポイントの割り振りをできるようにする
    • ステータスに配分するか、スキルに配分するか
    • 個人的にはレベル制よりスキル制の方が好き

イベントの可視化

ちゃんとマップチップ貼りつけたい
実はアイテムの装備とかスキルの成長機能は作ってある
変化が少ない詳細データは最初に送ってしまって、変化する都度送ればいいか

マウスクリックで移動

何がいいって自動でスマホに対応できること
ただその際、640px - 480px 決め打ちで作ってるのがネックに。まあランドスケープ横+全画面ならどうにかなる、かな。ついでにTitaniumとかででラップしてストアで配ってしまうと経験になるかも。(Donateとか書いてみたい)

isometricな座標を元座標に変換しなおすのが面倒で手をつけてなかった。内部で実装してる経路探索使えばすぐ実装できる。その際、選択した座標を光らせたりしたい(ちょっとめんどい)

細かい挙動

  • A*の経路探索をもっと深く、たまに斜めに引っかかるのを修正
    • 探索初手の軸合わせが不自然
    • 近いと直線距離を、遠いとA*を使うようにすればいい
    • その場合、4方向の探索なら狭い通路でも引っかからない、と思う

ディアブロの挙動とか思い出すと斜めに探索してなかった気がしますね。
現状8方向探索してる

  • canvasでキャッシュを生成
    • 毎フレーム動的に生成するのは資源の無駄。フレームワーク使うとそこらへんやってくれる
    • ミニマップ書いてみたらすっげーカクカクした

WebGLは無駄だと思うが、クオータビューで高さの概念を表現できるとたのしいかも、とは思った。

  • マップの生成アルゴリズムを見栄えがするように
    • 無駄に細くて長い部屋とか、ゲーム的にも見栄え的にも悪い
    • 案1 [1,0]でコリジョンだけ生成して、マップチップはパターンマッチ
    • 案2 コリジョン以外にもマップパターンを動的に生成
    • コリジョンとマップチップのデータは切り離したほうがよさそう

こんな感じ

2011-11-10

Canvas/WebSocketでディアブロクローンなネトゲを作ってみた


できたよー!

f:id:mizchi:20111110185041j:image:w600

f:id:mizchi:20111110190857j:image:w640

遊び方

次のURLから、twitterアカウントでログインする。 http://w-mtlab.com:4444/
対応(確認)ブラウザはGoogleChrome Firefox4.0以上。
同時に10人ログイン程度まではテスト済。それより増えるとわからん。


矢印キー or WASD 移動
数字キーでスキル設定
1 攻撃
2 強攻撃
3 回復
4 範囲攻撃

青が自分、赤が敵、緑は他のプレイヤー

それぞれにクールタイムが設定してあって、一定時間立つと実行する。具体的には、スキルを選択して敵に近づけば、それを定期実行する。ディアブロ式のネトゲやったことある人なら直感的にわかると思う。
敵を一定数倒すとレベルが上がる。ゲーム的な部分は、あまり詰めてない。クライアントではまだ可視化してないイベントがたくさんある。
死んだらリロードで復活する。


セーブデータはアカウント単位で保存されてるのでリロードしても大丈夫(WebSocketのセッションが切れたときに保存している)。

ソース

Githubにおいてる。修正BSD。で、いいのかな、これ。
https://github.com/mizchi/ws-netgame

自由にフォークしてもらって構いません。アイデアだしてくれる人歓迎です。

依存は Node/MongoDB/Redis… あとは npmのライブラリいろいろ。MacとUbuntuでテストしてる。

これを作った経緯

色々あって、大学院への進学を辞退することにした、のが一昨日。B4のこの時節、一気にナイ内定である。
そういうわけで、某D社の新卒エンジニア枠が11/14が最後、これに応募しようと思ったのだけど、技術アピール用に何か作る必要があった。
最近つくったプロダクトといえば、websocket使ったRSSリーダーとか、ブログに書いてないけどチマチマ作ってたゲームとかあったのだけど、パンチが足りないのでゲームの方をネトゲ化することにした。

開発環境

サーバー

nodejs/CoffeeSciprt/socket.io/express/zappa

クライアント

Canvsa2D, WebSocket, Knockout.js

EaselJSを使おうとしたのだが学習コスト高そうで時間がない現状スルーするしかなかった。素のCanvasAPIを叩いている。キャッシュすればもっと負荷は減らせるはず。

開発期間

ゲームクライアント的なものを作ってたのは、二ヶ月ほど、気が向いたときにちょくちょく継ぎ足してた。つってもそんなに時間を割いてないので、微妙なものだが。
ネトゲ化にあたってブラウザ依存コードを剥ぎとり、メインループをぶん回し、WebSocketでオブジェクトの配置をブロードキャストするようにした。nodejsのモジュールローディングを活用して疎結合にした。ここまで思い立って3時間。

この時勢、大規模JS書くにあたってはCoffeeScript必須だと思う。

開発手法


衆目監視ドリブン開発。
高速な開発のためにテストコードを書かずに機能を実装し次第おもむろにTwitterに貼る。常時3,4人は面白半分でデバッグして(遊んで)くれる。意図しない動作が常に行われているので、バグの網羅性が高い。
これでバグだいたい潰せた。この手のプロダクトで、短時間(実質2日。うちマックの電源席で14時間)で開発したものにしてはかなり安定していると思う。

TODO

機能
  • マップ間移動。プレイヤーがいないマップはスリープさせるなどすれば一台でも結構さばけるはず。
  • スケールアウトの仕組みを作る。現状さくら鯖一台。
  • チャット機能。WebSocket使えばすぐ終わる。
  • イベントの可視化とそのためのプロトコル設定
  • マップチップ適用。フリー素材のisometricなマップチップってあるの?

ゲーム性を詰める
  • ディアブロ/ローグライクのようなエゴアイテム生成
  • ジョブ/スキルツリー生成


まあ、某社にはこのまま提出するのだと思います。

追記:

コードのざっくりした解説書きました。
Canvas/WebSocketなネトゲの、ざっくりとしたロジック解説 - mizchi log

2010-01-30

ラストストーリーとゼノブレイドの発表! そして松野Pの噂



坂口博信の新作RPG『ラストストーリー』、ゼノギアス・ゼノサーガの遺伝子を引き継ぐRPG『ゼノブレイド』がWiiで発売決定! : はちま起稿
うおおい!これ俺がずっと前から期待してたタイトルじゃん!ということで昨日から人知れず興奮してたんですよ!いやTwitterでひゃっほー!!とかつぶやいてたけど!叫んでたけど!

THE LAST STORY


いちおーこれの続報ということになるのかな。こっちはあくまで噂レベルで、今回の公式発表でやっと確証が持てた感じ。
松野氏&モノリスソフトのWii向けRPG、発売はFF13と同時? | N-Wii.net

    * 任天堂の岩田社長らは、以前から「任天堂には強力なRPGがない」と認識しており、そのジャンルを強化したいと思っていた。
    * あるとき岩田社長は、松野氏がスクエニを退社するという事を聞き、任天堂に誘った
    * とりあえず東京開発本部に配属された松野氏は、マリオギャラクシーなどでWiiを学んだ。
    * その後、岩田社長の指示で松野氏ら数人のグループはRPGの企画を作る。それは好評だったが、任天堂には新たにソフトを開発するための人員に余裕がなかった。
    * そこで任天堂は、「バテンカイトス」などで以前から交友のあるモノリスソフトを買収し、松野氏のための開発ラインを確保した。
    * 現在モノリスソフトは「ディザスター」を制作しているため、それが終わった後から松野氏のRPGの開発が本格化する。



とはいっても、気になるのは松野プロデューサーが関わってると噂されたラストストーリーが、制作ミストウォーカーで坂口氏。知る人ぞ知るFF1~6のプロデューサー。
いや、ディレクション松野氏という線は残されてるし、個人的にはそうであってほしいんだですけどね。かくいう僕は松野ゲー信者です。タクティクスオウガやベイグラントストーリーは、ゲーマーとしてのバイブル。
超大作としては松野だとネームバリューが足りなかったから坂口御大を連れてきたのか、なんて邪推してしまいますが、無難に考えるとその両方が混ざって伝わっただけなんでしょうね。
個人的に懸案なのは、最近ミストウォーカーのゲームが微妙にハズレ続きだということで、ブルドラとかロスオデとか。いや悪くはないんですけど。


公式サイト(BGMのみ)THE LAST STORY(ラストストーリー)
FFに対抗する気をまったく隠さないタイトルには期待が持てます

ゼノブレイド

公式 XENOBLADE ゼノブレイド

一方ゼノブレイドの方
MONADO〜The Begining of The Worldとして去年のE3で一応発表済み。
YouTube - Wii: Monado Beginning of The World E3 Trailer


「MONADO」に松野さんが関わってるのか考えてみた。:FF12-For Myself-:So-net blog
ここの記事の予想が的中して、ゼノシリーズの高橋氏。ギアス、サーガと続く、ゼノシリーズ続編。
ギアスはスクエニ、サーガがナムコという版権の関係で、直接の繋がりは見えないようになってしまったんですが、ゼノシリーズとしては五分構成でギアスが5部、サーガEP1~3が1部となっているはず。
ひどくネタバレですが、ゼノシリーズについて詳しくはこちらに →no title



Wiiは次世代ゼルダも控えているだけに、RPGゲーマーにとって(ゼルダがRPGかどうかということはさておき)すごく熱いハードとなる予感。

関連

痛いニュース(ノ∀`):任天堂とFFの坂口氏が共同開発 本格RPG『ラストストーリー』がWiiで登場
ゼノギアス・ゼノサーガの遺伝子を引き継ぐRPG『ゼノブレイド』 Wiiで今春発売!!!:⊂⌒⊃。Д。)⊃カジ速≡≡≡⊂⌒つ゚Д゚)つFull Auto