Aramakiをテスト公開しました
元は東京Node学園のハッカソンで作ったもので、
せっかくなのでWebサービスっぽくなるまで作ってみました。
まだまだやりたいことはありますが
ひと通りの実装は出来たのでα版としてテスト公開してみます。
概要
荒巻が眠っているのでみんなでクリックして叩き起こす!
ただそれだけのサービスですw
バトルフロー
- バトル発生:定期的に荒巻が目覚めます
- 部屋入室:目覚めるとバトル部屋へ入室することが出来ます
- バトル:あとはひたすら荒巻をクリック!
- 討伐:「倒した人」「一番ダメージを与えた人」が表彰されます。
荒巻の目覚め
数時間毎に目覚めます。
https://twitter.com/#!/aramakinet
こちらのアカウントをフォローしてバトル情報をGETしましょう。
討伐
「倒した人」「一番ダメージを与えた人」が表彰されます。
倒した人 > 一番ダメージを与えた人 > 参加者
の順で経験値がたくさんもらえます。
簡単な図
- | バトル部屋 | 練習部屋 | 経験値 | 表彰 | チャット |
ログインユーザ | ○ | ○ | ○ | ○ | ○ |
ゲストユーザ | × | ○ | × | × | ○ |
今後のTodo(優先度順)
・スマホ用UI対応
・ランキング(レベル/荒巻を倒した数/バトル貢献度)
・キング荒巻を出現させる
・会心の一撃
・カウントダウンタイマー
・アニメーション
・荒巻パターンを増やす
技術的な話
オールNode.jsです。
使ってるライブラリはだいたいこんな感じ。
・matador
・express
・ejs
・socket.io
・mongoose
・oauth
・connect-redis
・logger
・config
・connect
・sanitizer
・forever
matadorについて
expressをMVCっぽく書けないかなーと思い使ってみました。
あと、コントローラのサンプル見ると
以下の様な感じでconfigの値を受け取れそうなのですが…
module.exports = function (app, config) { return app.getController("Application", true).extend() .methods({ index: function (req, res) { var _self = this
実際はconfigには何も入ってこなかったために
結局自前でnode-configを使ってコンフィグ管理しました。*1
他にはデフォルトのテンプレートがいまいち使いづらかったのでejsに変更してます。
matador(express)とsocket.ioのセッション共有
こちらの記事をほぼそのまま流用させていただいております。
http://d.hatena.ne.jp/Jxck/20110809/1312847290
動的にチャットルーム追加
バトルが発生するたびにダメージの通知やチャットの通知を制限する必要があったので
動的にnamespaceを追加しています。
これは別記事で補足したいと思います。
よろしければ暇つぶしに遊んでみてください!
*1:実際にソースを追ってみたところconfigには何も設定していないし、パッチ書こうにもどう直したらいいか思いつきませんでした…