Jewel-mmo開発日記

RubyでMMORPGを作る過程を記録する日記。 Yokohama.rb 発起人。
2006-09-30

[プラポケ][Rails]TDDのほうのテスト

の話。プラポケのソース見てもらうとわかるかもしれないど、テストは最初書いてたものの途中から面倒で書かなくなった。

TDD でやるととりあえずの動くものが出来上がるのに2倍から3倍の時間がかかるという印象。慣れればもっと早くなるのかもしれないけど。あと長期的に見れば開発効率が逆転するような気はする。でも、でもだ。その最初のとりあえずアイデアを他人に見せられる形にする、つまり最低限遊べるだけの完結したゲーム世界を作り上げる時間が2〜3倍違っちゃうというのはデカイ。テストのメリットはたくさんあるのだろうけど、やっぱり時間が2倍かかっちゃうのだとするとイタイ。単純に労力が少ないというだけの問題じゃなくて、早さのメリットはたくさんある。公開のレベルに達するまでにはそれなりに苦労があって、開発途中にはバッドエンドの分岐がたくさん存在する。

こんな感じの個人運営のゲームだと最悪「数時間ほどロールバックします、ごめんなさい><」という気軽な運営で乗り切ればいいというのもあるし、それが許されるならユーザーの目でバグを発見してもらうという最悪のパタンでなんとかやっていけそうかなと。

やっぱりスピードが重要。世の中にはそんなプロジェクトもあるんじゃないかな。別にすべてのプロジェクトに TDD というわけじゃないか><

2006-09-30

[栽培日誌]カブトムシ

画像の説明 画像の説明

8月初旬に買ったカブトムシがまだ元気に生きている。

市販のゼリーのパワーだと思う。餌はそれしかやっていない。子供のころよくカブトムシを飼ったものだけどオスは9月になるとすぐに死んでいた。メスは産卵の後も10月くらいまで生きていた記憶がある。オスがこの時期まで生きるのは初めて。

写真は小さな卵。来年の羽化まで育てるつもり。中学生のころ一度「産卵→孵化→羽化」を成功させたことがあるが、そのときはかなり小さな成虫になってしまった。

2006-09-27

[プラポケ]勝率の計算方法を変えた

引き分けを分母から取り除いた。野球のパリーグを見る限り引き分け再試合はないようなので。

2006-09-26

[プラポケ]メール送信機能案

勉強会(のあと2次会に向かう途中)で「ログインするのを忘れてしまうので毎日メールを送るといいのではないか」という話になった。以前から考えていたものの強制的に送るとうざいかなと思ってあまり乗り気ではなかった(ケータイ対応には必須かなと思ってるけど)。でも存在を忘れられてプレーの機会が失われてしまうのも悲しい。

オプションで指定した時間に通知または対戦や配給カードの結果を送信する機能をつけようかと思案中。

Railsでメールを扱ったことがないのだけど送信は簡単に出来るらしい。というわけで次はこの機能の実装かな。

2006-09-26

[プラポケ]4000Jを超える侍

さすがに4000Jを超える侍を誰も買わないか。個人的には最強のキャラはやっぱり敏捷性と生命力が9のカンナビスかな。次点で攻守に優れるヤロウ。でもこの2枚はUCなのでRのカードとどういう価格差になるのかが興味深い。

1 日 5 分で遊べるオンラインカードゲーム 『Private Pockets』 参加者募集中。

2006-09-26

[プラポケ]svn で公開

勉強会でも公開環境をどうしようか〜とか言って悩んでいたのだが、なんと moriq さんが svn に乗せてくれた!

しかもカードのドラッグ&ドロップ機能も追加して頂き、もうすでの公開バージョンは moriq さん版で動かしている。 ci 権限を頂いたので開発にも使わせてもらうことにする。

というわけで以下で開発版のソースを入手できます。

svn co http://dev.moriq.com/svn/rails/pockets/

moriq さんありがとうございます><

2006-09-25

[プラポケ]ソース公開

追記(2006/09/26):svn で公開されてます!

http://dgames.jp/archive/pockets/

Ruby on Rails で実装している Private Pockets のソースコードを公開。ツッコミ募集。カードのソートをマウスのドラッグ変更にしちゃう猛者はいませんか><

現時点での最新版スナップショットを手動で tar にしただけ。自動化とか svn で公開とかはまだなし。 公開を意識せずに作っていたので変なものが入ってないか不安。

ライセンスはオレライセンス><

2006-09-24

[Rails]勉強会東京#10に行ってきた

恵比寿駅の本屋で舞波本買った。そしてサインしてもらった!

興味のあったRuby入門のセッションに参加した。 変数が参照の話とブロック&yieldの部分をとっさにうまく説明できなくていい説明方法を考えておこうと思った。

勉強会でしか勉強しないメソッドなので、その他いろいろ勉強になった。 雑談の話でも知らないことばかりで参考になる。

プラポケのソースを公開すれば誰かがいい感じのカードソートインターフェースを書いてくれるかもしれない!?

わけあってトラックバックはしない><

2006-09-24

[プラポケ]格差社会化

格差社会化のようなゲームバランスはキライです。後発のプレイヤーよりも先発のプレイヤーが有利だとしたら、それは経験によるプレイヤー自身のスキルの差によるものでなければなりません。プラポケのコンセプトはプレイ時間をかけてもゲームを有利にする要素は蓄積できない、そして参加した時期に関わらず常に実力がランキングを示す、です。このコンセプトを強く意識してゲームをデザインしています。

なので yuki さんが指摘するような格差社会化は避けなければなりませんが、今のところは現状のシステムで問題なかろうと楽観視しています。

カードの入荷は誰かが売った時のみですか?
何かこのままだと人気カードはいつまでたってもショップでは買えない
状態が続きそうな気が・・・ 

はい、そうです。レアカードはレアなんです(笑)。初期状態ではレアカードも他のカードと同じ価格と在庫数でスタートしましたが、時間とともに市場が成熟してゆきます。今までの安くショップで買えた状態が異常な状態です。

それとカードの価格が上がりすぎると後から入って来た人にはつらいん
じゃないかと。
始め強かった人は強い(高い)カードを買えるのでいいですけど、後から
入ってきた人は既にカードの値段が高騰してるので中々手を出せないん
じゃないかと思いマス。 

確かに今までは初期に参加したプレイヤーが強力なカードを独占していました。でもその黎明期のカードはもう寿命が付き世代交代が起こっています。現状初期プレイヤーでもレアカードをショップで購入するのは難しくなってきました。

そしてこの件に関して最も大きな制限はプレイヤーは 10000Jewel(Jewelはゲーム内の通過)までしかお金がもてないという縛りです。ショップのカード価格も 10000J が最高値になります。おそらく何枚かの需要の高いカードはこのまま価格が高騰し 10000J となります。こうなると誰であってもこのカードを買うには全財産を使い切ることになります。誰かが買う前に誰かが売るわけなのでそのカードを売ったプレイヤーには 7500J (買い取り価格は売値の75%)が入ります。毎日のカード配布で 10000J のカードを引く確率はプレイ時間によらずどのプレイヤーにもほぼ平等(お守りが微妙影響するけどお守りにも寿命がある!)に訪れます。つまりレアカード一枚の入手で初心者にも 7500J(個人が持てるお金の上限の 75% )を得る可能性があるのです。

やっぱり人数が増えてもう少し細かいランク分けが出来るまではしょう
がないんですかね。

おっしゃる通り人数が増えてランク分けが細かくなれば初心者は初心者同士で戦うというようにはっきりグループ分けされ、初心者に優しいバランスになりそうですね。

--

※売値の最高値と買い取り価格の最高値の厳密なシステムには一考の余地アリ。買い取り価格が上限なく上がって売値が強制的に10000Jになるでもいい。 今はこの辺の実装がいい加減だからまずいな……たぶん売値が10000Jを超えて価格が下がってくるまで買えなくなるのか

2006-09-23

[プラポケ]キャンペーン案

Apple iPod shuffle 1GB MA564J/A

もっともっと人を集めないと。人数が多いほうが楽しいしきっとモチベーションが上がっていろいろ発展が期待できる。モチベーションとっても重要!勢いも大切!

とあるステージの優勝者 1 名に iPod(あの新製品のやつ) プレゼント!とかいうキャンペーンをやったら人が集まるかなあ。仮に商品代 10000 円の効果で 100 人集まるとする。費用対効果としてはどうかなあ。とにかく最初は強引に人集めないと。次はステージのシステム実装するかな。

とりあえず年内にこの手の賞品をかけた大会イベントを一回はやりたい。実際にやってみればいろいろ学べることがありそうだし。既存プレイヤーのモチベーションにも影響しそうだから是非やりたいなあ。

--

というわけで今から参加してゲームに慣れておくといいかも!? → 1 日 5 分で遊べるオンラインカードゲーム『Private Pockets』

2006-09-23

[プラポケ]ショップを拡張

アイテムを売れるようにした。ついでにソート機能も追加。

というアップデート情報をどこに書くか悩む。ここは開発なので一般のユーザーは見る必要のない場所。だからはてなの日記か掲示板なんだけど、使い分けが難しい。情報が分散して中途半端になったり、使われない場所がさびれていくのがいやなので掲示板はいらない気もするのだけど、日記は大きなニュース、掲示板は細かい更新情報と使い分けてコツコツ書いていればそのうち(だいぶ先の話だとおもうけど)人が集まってくるかな。

2006-09-23

[プラポケ]ょゎさんの雑感メモ

ありがとうございます。参考になります。

> ポケット(という言い方でいいのか?)、public は闘う5枚として、protected と private の違いは何だろう。特にないような気もする。ネタにマジレス風味でスミマセン。

今のところ意味はないですが……。予定しているのはまず private 以外のポケットにあるカードはスケジュールが組まれた瞬間に相手にオープンされてしまう。ただし protected ポケットだけはアイテムか何かで公開をブロックすることが出来るという仕様です。切り札になるカードを private ポケットに入れて隠すというわけです。

> 手持ちアイテム処分機能待ち。お守りを処分したいのです。Rカードや UCカードが手に入る確率が上がるだなんて不純だ!

なんと!こんな風に考える方がいるとは(笑)。アイテムの売却インターフェースを TODO に追加しておきます。

他にもいろいろ TODO に追加させていただきました。

2006-09-22

Rails勉強会@東京

か。どうしよう。行きたいけど休みが潰れちゃうのがなあ。

秋野菜の準備しないといけないし。うーん。

でも勉強会でしか勉強しないしなあ。オレにとってはすごく貴重な勉強時間だし、うーん。

2006-09-21

[プラポケ]連打するとコマンドを複数回実行できてしまうバグ

気になって試してみたのだけど実証できない。どうやら config/lighttpd.conf で、

"min-procs"       => 1,
"max-procs"       => 1,

としていたのが幸いしていたみたい。 2 に変えてコントローラに sleep をはさんだらバグを確認できた。タイミングがシビアだから sleep を使わないとほとんど発生しないとは思うが。

players に lock_version カラムを追加して修正。 他は大丈夫だよなあ。ショップのアイテム購入でも同様のバグがあったはずだけど、 player.jewel 値の減算後の save で lock_version に引っかかるから大丈夫なはず……。

この手のものってトランザクションで囲むだけではダメなのね。これだからWebの素人は><

2006-09-21

[プラポケ]神の見えざる手

ショップを見るのが楽しい。一日のコマンドを実行した後も、定期的にショップを除いてしまう。まだ参加人数が少ないので短時間での価格変動は少ないが、それでもちゃんとカード毎の価格差は如実に現れている。

500JからスタートしたアンティチョークRのカード価格は最高値の3768J。ストーリー的には後々活躍するであろうローズマリーちゃんとバジル君は10J……。

そんな神の見えざる手を目にすることができる『Private Pockets』はこちらから

--

そうだやばそうなバグに気がついたんだ。検証しないと。

2006-09-21

[プラポケ]あ!

るびまの編集後記にプラポケの話題が!ありがとうございます。

DS でプラポケだって!そんなことできるのか。

2006-09-21

Rubyist Magazine 0016 号 リリース

2周年です。おめでとうございます。 編集者の方々お疲れ様です。

るびまには立ち上げの頃(たいしたことはできないのに)編集者として参加させてもらっていた。それが Ruby コミュニティに接触するきっかけになりそこから多くの事を学ぶことができた。自分は編集者としての能力に乏しく今は何もやっていないがそのチャレンジはとても貴重な経験となった。

2006-09-19

人違い

テストプレーに参加いただいている yuki さんはマイミクの yuki ちゃんだと思ってたんだけど別人な模様……orz

2006-09-19

コミュニティ作りました!

http://jewelmmo.g.hatena.ne.jp/

ゲームをよくしていくためのコミュニティになればと思います。よろしく願いします。

--

なぜか『jewelmmoグループについて』のところが編集できない……><

2006-09-19

[プラポケ] moriq さんの戦術

moriq さんも grade1 に上がってきましたね。どんなカード配置をみせてくれるか楽しみです。

--

11勝1分 勝率.916 という驚異的な成績を残している sshi さん。さすがにこの勝率を維持するのは難しいとは思いますが、実力者っぽいです。

--

なんかコミュニティサイトの圧力が……。

--

(仮)をとった。あと連戦の勝利条件を少し付け足した。 (仮)のとれた『Private Pockets』はこちらから

2006-09-18

[プラポケ]予想以上に

登録が多くて驚いている。このペースが続いたらすごいことになるけど今日だけだろうな。

いま話題(嘘)の『Private Pockets(仮)』はこちらから

--

3連戦の勝利条件。何かいい案がないか悩んでいる。home勝利という条件の前にもうちょっとマシな条件がほしい。

  • 総攻撃力が高いほうが勝ち or 低いほうが勝ち
  • 総防御力が(ry
  • C カードが多いほうが勝ち
  • R カードが少ないほうが勝ち

コモンが多いほうが勝ちと言うのはいいような気もする。その場合レアはマイナスポイントにとか。

--

コミュニティサイト。以前すすめて頂いたはてなグループはどうだろうか。使ったことなくてよく知らないのだけど。でもこことはてなダイアリーだけで十分かなとも思ったり。

--

細かい修正は頻繁に入れてます。ゲームバランスに影響するような重要なものの場合は告知します。 Rubyist が多いからソースの差分を公開するともしかして安全?

2006-09-17

[プラポケ]『Private Pockets(仮)』公開テストスタート

いろいろ準備完了。

あとは宣伝をしないと。キャンペーンとかイベントもやりたい。公開テストといってももう実質的なサービス開始だし。新規プレイヤー募集中!

テストプレーに協力いただいた皆様にほんのちょっとでもゲームの宣伝というかゲーム紹介というか感想とか書いていただけると嬉しいな……m(_ _)m

2006-09-17

[プラポケ]CSSでポップアップ

舞波ちゃんを参考にスケジュールのポップアップを修正。 と思ったら IE で表示されてなかった。ツッコミを参考に修正。

2006-09-17

[プラポケ]ポーションが控えにキャラに

使われた><。しかもそう表示されるだけで効果はなし!

ソース見たら確かにおかしかった。

2006-09-16

[プラポケ]一ヶ月

そういえば開発に着手してから今日でちょうど一ヶ月。おかげさまで毎朝結果が気になって寝ぼけながら PC に向かう日々が始まりました。

2006-09-16

[Rails][プラポケ]カードの position がおかしくなるバグ

前々からたまにカードのpositionが一貫性のない数値になることがあって、ソートが正しく行えなくなる等のバグがおこることがあったのだが、その再現方法がわかった。対戦後に2枚以上の連続するカードが同時に消えると確実にその現象が起こることを確認。

class Card < ActiveRecord::Base
  acts_as_list :scope => :player_id
end

acts_as_list を使っている。

カードの削除は以下のようにしていた。高速化を意識してややトリッキー。

DefCard.find(:all).each do |def_card|
  con = "def_card_id = #{def_card.id} AND #{def_card.life} + life_plus <= 0"
  Card.destroy_all(con)
end

一枚ずつ消せばいいかと思い、以下のように修正したがダメだった。

Player.find(:all).each do |player|
  player.cards.each do |card|
    next if card.life > 0
    card.destroy
  end
end

以下のように reload したら正常に動いた。いつも ActiveRecord の reload ではまる……。

Player.find(:all).each do |player|
  player.cards.each do |card|
    next if card.life > 0
    card.reload
    card.destroy
  end
end
2006-09-16

公開テストに向けて

グレード別のスケジューリングが無事に動作した模様でなにより。

公開までのToDo。

  • パッケージ編集権限
  • はてなのブログにルール説明をコピペ
  • 宣伝

--

今日 RHG 何だけど体調不良により欠席。

--

ActiveHeart 使ってみた。

2006-09-15

[プラポケ]znz さんの OKとかキャンセルとかいいえとか

を見てさっそく shop UI に反映。view を書き換えただけだけど。ついでに buy, sell, cancel をキーワード化して『Garden herb』では日本語化しておいた。

--

あ、舞波ちゃんを G1 に上げました。

--

  • 「何かの剣」成功率 80% => 75%
  • アイテム価格調整

--

しまった。これじゃ入れ替えじゃなくてローテーションだ。とりあえずいっか。

えっと、お金は10000Jでカンストします。

2006-09-15

[プラポケ]sshiさんグレード昇格!

いまだ全勝のsshiさん。グレード1に一番乗り。2位のmaihaたんはグレード昇格に1ポイント足りず。

ここで問題が。今の実装だとsshiさんは同グレードの対戦相手がいないのでまたNPC戦になってしまう。でもこの場合、グレード0で1位のmaihaたんがグレード1のスケジュールに組み込まれてもいいと思うんだ。相撲でも十両の力士が幕内で戦うことがあるじゃん。というわけでまだシステムは実装しないけど実験的にmaihaたんを手動でグレード1にしちゃいます!

2006-09-14

[Rails][プラポケ]スケジュール画面が重い

Completed in 2.82724 (0 reqs/sec) |
Rendering: 1.18852 (42%) | DB: 1.30401 (46%) |
200 OK [http://dgames.or.tp/schedule]

表示要素をいろいろ追加したら重くなってしまった。この画面は一回表示したら次の日まで内容が変化しないものだから、うまくキャッシュとかできないだろうか。今のところは特別重いわけでもないのでいいのだけど。最適化はキライ><

--

別件で前から気になっていたのだけど、 log/production.log に、

Parameters: {"action"=>"favicon.ico", "controller"=>"shop"}
ActionController::UnknownAction (No action responded to favicon.ico):

とか

Parameters: {"action"=>"show", "id"=>"favicon.ico", "controller"=>"card"}
ActiveRecord::RecordNotFound (Couldn't find Card with ID=favicon.ico AND (cards.player_id = 3)):

というのがある。なんでパラメータに"favicon.ico"が……。特定のユーザーからだけなのでブラウザ依存なのかなという気もするんだけど。

2006-09-13

OSASK

30日でできる! OS自作入門(川合 秀実)

今朝 mixi の高校のコミュみてて気づいたんだけど OSASK の作者(「30日でできる! OS自作入門」の人)が高校のとき部活が同じだった川合君だった><

FM7 のすごいハッカーだったからよく覚えてる。世の中は狭い。

2006-09-13

attack メソッドを

Character クラスに含めるべきかどうか。 今分離している理由は、 attack メソッドが view の役割も果たしているからだ。 Rails の影響からか model と view を分離したい意識が強い(いやゲーム作ってて昔から感じる違和感だな)。

試しに Character クラスに移動してみる。うーん、このままではダメだな。

def attack(target)
  return unless alive?
  d = rand(str) - rand(target.def)
  if d > 0
    target.hp -= d
    puts "#{name} の攻撃 => #{d} のダメージ!"
  else
    puts "#{name} の攻撃 => ミス!"
  end
  unless target.alive?
    puts "#{name} は #{target.name} を倒した"
  end
end

--

話はそれる。今後のためのメモ。 view を切り出せないか考えてみた。やや強引だが attack メソッドから view を追い出すことができた。テンプレートが表示情報を作り出すためのスクリプトでもいいはずだ。つまりそれが Ruby スクリプトだって……。

def render template
  eval template
end

def attack(attacker, target)
  @attacker, @target = attacker, target
  if @attacker.alive?
    @d = rand(@attacker.str) - rand(@target.def)
    @target.hp -= @d if @d > 0
    render template_attack
  end
end

def template_attack
  ' print "#{@attacker.name} の攻撃 => "
    puts @d > 0 ? "#{@d} のダメージ!" : "ミス!"
    puts "#{@attacker.name} は #{@target.name} を倒した" unless @target.alive?
  '
end
2006-09-13

RPGの戦闘みたいなプログラム

中学から高校のころこういうプログラムを実現したくて Basic で何度も書いていた。でも当時こんなにすっきり書けるはずもなく、ひたすら力押しで長いコードを書いては途中で挫折していたものだ。それでも楽しかったのだけど。

この問題の解決を容易にしている要因の1つはオブジェクト思考。今では無意識にこういうコードを書いてしまうけど、意識して見ると attack メソッド内でキャラクターオブジェクトのポリモフィズムを利用することで攻撃手と受け手の処理をうまく共通化している。さりげなく hp > 0 を alive? メソッドに置き換えているのも心憎い。こんなの昔はできなかったよなあ。あのころの自分にこういうのうまく理解させることはできるだろうか……。

class Character
  attr_accessor :name, :str, :def, :agi, :hp
  def initialize(name, str, _def, agi, hp)
    @name = name
    @str = str
    @def = _def
    @agi = agi
    @hp = hp
  end

  def alive?
    hp > 0
  end
end

def attack(attacker, target)
  return unless attacker.alive?
  d = rand(attacker.str) - rand(target.def)
  if d > 0
    target.hp -= d
    puts "#{attacker.name} の攻撃 => #{d} のダメージ!"
  else
    puts "#{attacker.name} の攻撃 => ミス!"
  end
  unless target.alive?
    puts "#{attacker.name} は #{target.name} を倒した"
  end
end

a = Character.new('A', 25, 25, 25, 25)
b = Character.new('B', 25, 25, 25, 25)
while a.alive? && b.alive?
  d = rand(a.agi) - rand(b.agi)
  if d > 0
    attack a, b
    attack b, a
  elsif d < 0
    attack b, a
    attack a, b
  end
end

実行結果。

A の攻撃 => 8 のダメージ!
B の攻撃 => 14 のダメージ!
A の攻撃 => 12 のダメージ!
B の攻撃 => ミス!
B の攻撃 => 11 のダメージ!
B は A を倒した
2006-09-12

[プラポケ]今後の予定

グレード昇格のシステムが安定して動くことが確認できたら、ぼちぼち公開テストに移行しようと考えています。これまでテストプレーにご協力いただいた皆様本当にありがとうございました。おかげさまでやる気が飛躍的に向上し、また貴重なご意見もたくさんいただき、短い期間にたくさんの機能の実装とテストを行うことができました。特にトラブルもなさそうなので今後もプレーデータは引き継ぐ予定です。もちろんこのままプレーを続けていただいても結構ですし、いつ中断していただいても一向にかまいません(そういえばユーザー削除する機能がないような……)。

とりあえず当初目標としていたレベルは達成できたのでご報告までに (今後もバグ報告やアイデア、要望は大歓迎です)。どうもありがとうございました。

2006-09-11

[プラポケ]シルバーピアス消えないでね><

ここ数日手元のカードが全部男キャラ(カンナビス、ヤロウ、アンティチョークのみ)。なので新キャラには女キャラを多めに入れてみた。

本気で長期的な育成に取り組まないと全然パラメータが上がらないなあ。 身近な対戦を捨てようかと思ってもそうするとお金がたまらないし。カードが 7 枚というのもちょっと辛い。 8 枚だとだいぶ育成が楽なんだろうな。たぶん 7 のままでいくけど。

--

moriq さん真剣にプレーしていただいているようでうれしい限りです。

--

予定だとホームにはエレメントアドバンテージが発生して能力値が 1 上昇する予定(敵の同属性のカードもアップしちゃうけど)。でもこれがあるからといって引き分けアウェイ勝ちでいいかというとそれも厳しい気がする。うーむ。

2006-09-11

[開発ログ]rake stats

rake stats なんてものを発見。試してみた。

+----------------------+-------+-------+---------+---------+-----+-------+
| Name                 | Lines |   LOC | Classes | Methods | M/C | LOC/M |
+----------------------+-------+-------+---------+---------+-----+-------+
| Helpers              |    95 |    83 |       0 |       9 |   0 |     7 |
| Controllers          |   650 |   577 |      14 |      58 |   4 |     7 |
| Components           |     0 |     0 |       0 |       0 |   0 |     0 |
|   Functional tests   |   580 |   417 |      26 |      70 |   2 |     3 |
| Models               |   478 |   417 |      17 |      65 |   3 |     4 |
|   Unit tests         |   270 |   187 |      17 |      23 |   1 |     6 |
| Libraries            |    87 |    35 |       0 |       9 |   0 |     1 |
|   Integration tests  |     0 |     0 |       0 |       0 |   0 |     0 |
+----------------------+-------+-------+---------+---------+-----+-------+
| Total                |  2160 |  1716 |      74 |     234 |   3 |     5 |
+----------------------+-------+-------+---------+---------+-----+-------+
  Code LOC: 1112     Test LOC: 604     Code to Test Ratio: 1:0.5

Contollers と Models で 1128 行。アプリのボリュームからすれば短い気もするけどまあこれくらいか(Ruby on Rails だし)。これとは別に cron で動作するスクリプトがテストを含めて 450 行ある。

これくらいのボリュームならまだメンテも楽だ。ソースは増やしたくない。

2006-09-11

[プラポケ]アップデート情報

  • グレード昇格システムを実装しました

※アップデートにともない notice 表示情報を全消去しました

--

home 画面下にあるグレード昇格ポイントが上限(下限)に達すると連戦終了時にグレードが変化します。現在の最高グレードは 2 に設定してあります。対戦相手は同じグレードのプレイヤーとなります。グレードが高くなると賞金も高くなります。

2006-09-11

[プラポケ][Rails]グレード別のスケジューリング

実装が面倒だと思っていたけどこれだけでいいかも。 プレイヤーの grade は対戦後ポイントに応じて設定しておく。

def grade_is(grade)
  { :find   => {:conditions => ["grade = ?", grade]},
    :create => {:grade => grade                    }, }
end

def create_schedules
  grade_max = 3
  (0..grade_max).each do |grade|
    Schedule.with_scope(grade_is(grade)) {
      Player.with_scope(grade_is(grade)) { _create_schedules }
    }
  end
end

Ruby会議で舞波たんに教えてもらって以来お気に入りの with_scope 。 こうやってネストして書くしかないのかな。

2006-09-10

[プラポケ]アップデート情報

  • /user/welcome から /home へ meta refresh する機能追加
  • Ranking の順位計算条件に勝率を追加
2006-09-10

[プラポケ]znz さんの要望とかに対する回答

> /user/welcomeから/homeへmeta refreshとかでしばらくしたら自動で移動してほしい。毎回ログイン後にクリックして移動するのがちょっと面倒。

なるほど。この辺完全に手抜き状態ですので修正します。

> 「次の試合まであと: AM4:00 に試合が行われます」という表示は変な気がする。

これも仮です(汗)。ほんとは試合までの日数と時間をちゃんと計算して、さらにそれをJavaScriptでリアルタイムに更新するとかやりたいです。

> 過去の対戦結果は見えるように出来ない? 直前のしか見えないとなんか寂しい。

これはちょっと悩んだんですよね。検討してみます。

> 「last update 0000-00-00 00:00 / revision 000.」というのは?

仮です。ネタを思いついたらテンプレート書くみたいな開発手法なので……

> div class="menu"のリンクのところで今表示しているところだけ先頭が小文字なのは仕様?

これは仕様です。オシャレかなと思って(笑)

こっちにも。

> 防御訓練したのにパラメータが1つも変わらなかった。完全に無駄というのはひどいなあ。

><

> Rankingでpoints、勝、分が全部同じだと負が多い方が上の順位になっているのはおかしい気がする。

たぶんpointsでソートされてるだけであとは登録順かな。修正案件に追加しておきます。

2006-09-10

アップデート情報

  • カードを12枚追加
2006-09-10

アップデート情報

  • 同一カード3連戦の勝者に賞金と賞品と勝利ポイントを贈呈するよう変更
    • 賞金 …… 1000J
    • 賞品 …… アクアマリン、ポーション緑
    • 勝利ポイント …… 10pt
2006-09-10

ランキングをながめると

sshi さんが 5 戦 5 勝でただひとり勝率 10 割。全勝はすごいですね。まだまだ黎明期だし対決数が少ないのでなんともいえませんが、中には1ポイントの攻防を読みきってほぼ負けない布陣を敷いてくる猛者がいるみたいなんですよね(オレはそこまで頭が回らないので無理><)。勝率が9割いっちゃうみたいな。でも多くの場合は、引き分けがあるのでかなり強い人でも勝率は6〜7割くらいにしかならないです。

すでにコツを掴んできた新規参加者の方が何人かいらっしゃるのでもうお気づきかもしれませんが、ただ 5 枚のカードを並べるだけなのに、このゲーム実力差がものすごく出ます。プレーを長く続けても蓄積される要素(パラメータ上の経験値とか)が少ないので新規参入者でも実力のある人はすぐ上に上がってきます。意図的にそういうゲーム性にしたわけですが、誰でも勝てるというゲームではないので人を選んでしまうのが難点です。

2006-09-10

アイテム消えた……

持っていたアイテム3つが運悪く全部消滅してしまった。シルバーピアス1000Jもしたのに><

2006-09-09

スクリーンショット

現状の画面を撮影。

※キャラアイコンはこちらのアイコン素材を利用させていただいています。

画像の説明 画像の説明 画像の説明 画像の説明

2006-09-09

[プラポケ]テスト開始から一週間

早かったなあ。今のところ大きなトラブルは報告されていないけど、まだ参加者の方々にゲームのルールが伝わっていないせいでバグなんだか仕様なんだかよくわからない状態じゃないかなあと想像。

--

ソース公開の件だけどtarならすぐ出来そうなんですがやっぱりtarじゃダメでしょうか。

--

朝の電車の中でケータイでやってたりするのだけど、思っていた以上に普通にプレーできる。ケータイについてはまだ何も対策してないんだけど、手持ちの古い機種(2年前に1円で買った)で動くってことは、viewをちょっと手直しすればそれだけでOK?

--

今後の方針について。

まず考えないといけないのは一般公開のタイミング。 migrate のおかげかサービス運営しながらの激しい更新も、思ったほど苦労がないし結構大丈夫みたいなので一般公開後もこんな感じでバージョンアップしてもよさそう(いや今は更新の頻度が高すぎ><)。とするとあと2〜3週間くらい現状のテストをした後、公開できちゃうかも。

ゲームバランス的に500人くらい集まってもらえると最低限グレード昇格とかランキングあたりが面白くなるかなと想定している。どうやって人集めるか考えないと。

あとデザイン面。カードっぽくしたいなあ。でもあてがない。これも考えないと。

2006-09-09

[プラポケ]アイテムの効果

アイテムの効果について少し詳しく書いておきます。

ポーション系

対戦時に一枚のカードのライプを1ポイントだけ回復させます。どのカードに使われるかはランダムで決まります。二つ以上持っていても一日にひとつしか使われません。使用したアイテムは消滅します。

お守り系

兎の尻尾、コンドイの星砂、パール アクアマリンは取得カードの抽選に影響を及ぼします。前者二つはUCカードの取得率、後者の二つはRカードの取得率を上昇させます。持っているだけで効果がありますが、同じアイテムを二つ以上持っていても追加効果はありません。

攻撃強化支援系

何かの剣とコウメイの兵法書は攻撃訓練の成功率を上昇させます。 バッカスの酒は攻撃練習成功時の攻撃力の上昇値を2にします。 攻撃強化支援系のアイテムは攻撃訓練を行うと消滅します。

防御訓練支援系

すべて防御訓練の成功率を高めます。価格が高いものほどその効果が高くなります。アイテムを持っているとホーム画面のステータス欄の数値が変動するので効果が確認できます。

アイテムの消滅について

すべてのアイテムは日付更新時にランダムで消滅します。消滅する確率はおよそ15%で、毎日アイテム毎に抽選されます。

2006-09-09

[プラポケ]コモンしかこない

あれ以来ずっとコモンしかこない。今日はバジルだった。しかも今日は寝ぼけてて間違えて「カード引く」コマンドを押してしまった。しかも来たカードはリーズマリーorz。

2006-09-09

[プラポケ]アップデート情報

  • 新規カードの売却機能を追加(新規カード取得画面から)
  • ランキング画面にて幽霊日数の表示機能を追加

ほんとはポケットに入っている既存カードもダイレクトに売却できたほうがいいのだけど、実装上の都合でなし(だってコントローラが別でメソッドを呼べないんだもの)。いまのところは。

2006-09-08

[プラポケ]ポケットが一杯だと

入手した新カードをポケットに入れられない状況だと現状流すしかない。これショップに売れるようにしたほうがいいのだろうか。どうでしょう?

--

無事に動いてますね。なんか予想以上に安定してます。アップーデートの瞬間に運悪く接続された一件を除くとエラーログも0件。パッケージ関係は編集し放題だったりいろいろやばいんですけど。

--

また対戦相手がマカフシさんに決まった模様……

注目の対戦はyukiさんが勝ちましたね。一見ザコキャラに見えるゼラニウムがたくさん飛び交っているのはここだけです(笑)。彼らは次の次のスケジュールで合流してくるので要注意です。

あ、使用カードランキングとか出したら面白そう。全体と個人と。

--

デザイン面、まったく仮で絵はフリー素材のキャラアイコンしかない状態。 せめてもうちょっとカードらしいデザインに出来るといいんだけどなあ。 考えないといけない。

--

スケジューリングの新システムが稼動しだしたので人柱募集。もし新規にテストプレーにご協力していただける方がいらっしゃいましたら、コメントなりでその旨をご報告いただいた後、こちらからご参加いただけるとうれしいです。でどうぞお気軽にご参加ください。

2006-09-07

[プラポケ]アップデート情報

  • アイテムの実装
  • 賞金の変更(=> 勝ち300J、分け100J)
  • スケジュールリングシステムの変更
  • カード売却のバグを修正

--

昨日から実装を続けていたアイテム関連をコミットした。ショップでの購入、各種効果、アイテムの自然消滅等の機能を一気に追加。

アイテム価格に合わせて賞金のバランスを変更。

スケジューリングシステムを修正して対戦の周期が同期するようにようにした。 幽霊プレイヤー対策も実装した。幽霊とは対戦スケジュールにエントリされているにも関わらずプレーを放棄しているプレイヤーのこと。他人同士で対戦するゲームなのでログインせず放置するプレイヤーが対戦相手になってしまうと面白くなくなってしまう。その対策として数日間ログインしていないプレイヤーは対戦スケジュールに組み込まれないようにした。ログインすればまた幽霊カウンタがリセットされスケジュールに組み込まれるようになる。

今日のアップデートは修正箇所が多いのでキケン。コケないことを祈る。

2006-09-07

[プラポケ]カードショップ

ショップにてキャラクターカードを売買することができます。 ただしプレイヤーがカードを売る場合、戦闘に使用して生命力が減っているカードを売却することはできません(引き取ってはくれます)。 プレイヤーによる売買でショップ内のカードの在庫数が変動します。在庫数が 0 になると誰かがそのカードをショップに売るまで購入することはできません。

ショップで売られているキャラクターカードの価格は変動します。価格が変動する条件は次の通りです。

  • プレイヤーがカードを購入するとそのカードの価格が上昇します。
  • プレイヤーがカードを売却するとそのカードの価格が下落します。
  • 一定時間が経過すると在庫数が 1 以上のカードの価格が下落します。
  • 一定時間が経過すると在庫数が 0 のカードの価格が上昇します。

--

今のところ時間経過による価格の変動は AM4:00 のみです。価格変動率や頻度はプレイヤーの参加人数に応じてバランスを調整します。

2006-09-06

[プラポケ]アーティチョークR が人気

ショップ価格を見るとアーティチョークRのカードが一番人気。 確かにまだみんな防御力の成長度が低いので攻撃力9は即戦力として有効か。それに侍のダメージ3は強力だし。

--

アイテム機能を実装中。近いうちに公開できそう。

でもアイテムの前にスケジューリングの修正をやりたい。今の仕様だと3日戦闘して1日戦闘なしという4日周期なのだけど、必ずぴったり4日周期なので対戦組み合わせのグループが4つに分かれてしまい毎回同じグループのメンバーとだけしか戦闘できない。なのでひとつのメインの周期に合わせて他のグループの戦闘日数と調節する方向での修正を検討中。具体的にはxyo君たちのグループは次回のスケジューリングで2試合しか行われない様にして、メインの周期に合流するという仕組み。

2006-09-06

[プラポケ]アップデート情報

  • rucila さん報告の対戦計算のバグを修正
  • ホーム画面にてカードの得点力を表示するよう変更
2006-09-06

[プラポケ]rucila さんのバグ報告の件

バグ修正は容易なので明日からはちゃんと動いてくれるはずです。でも今日の結果はDBに登録記録されているのでそのままです。 本来ならDBを対決開始直前にロールバックして再計算という選択肢も考えられるのですが、今はテスト期間中なのでそこまでやりません(すいません)。

--

注目の一戦。思わずうなってしまった。ゼラニウム→マンネンロウの布陣を見て一瞬「は?ムラサマの休止から2年、yukiちゃん平和ぼけしちゃった?」とか思ったけどぼけてるのはオレだよっ!!! まずゼラニウムぶつけて、でもってマンネンロウで攻撃権奪取して裏とって相手の攻守を反転させる狙いじゃないかっ!しかも相手が上から来た場合に備えて3Pアタック使って5ポイント取りに来てる!最後が互角って負けてるけど惜しい。ムラサマと違ってプラポケは同一カード3連戦のスケジューリングなので明日も注目だ。

オレは初心者相手に王道の布陣でゴツイ戦いを繰り広げてます(ごめんなさいマカフシさん……)。しかも今日もR引きました。ごめんなさい><。 2日連続でレアってバグってないよなあ。以下抽選部分のソース。

class DefCard < ActiveRecord::Base
   def self._lot(rare)
    cards = DefCard.find(:all, :conditions => ["rare = ?", rare])
    return 1 if cards.size == 0
    cards[rand(cards.size)].id
  end

  def self.lot(player)
    r = rand(100)
    if r < player.rate_of_rare_card
      _lot(2)
    elsif r < player.rate_of_rare_card + player.rate_of_uncommon_card
      _lot(1)
    else
      _lot(0)
    end
  end
  has_many :new_cards
end

class NewCard < ActiveRecord::Base
  belongs_to :def_card
  belongs_to :player
  before_create :lot_def_card
  def lot_def_card
    return if def_card
    self.def_card_id = DefCard.lot(player)
  end
end

で確率はこれ。

class Player < ActiveRecord::Base
  def rate_of_rare_card
    5
  end

  def rate_of_uncommon_card
    30
  end
end

--

今日の対決を見てプラポケ作って良かった思った。ご協力頂いている方々ありがとうございます。そして、ありがとう Ruby、 ありがとう Rails。

アイテムほしいなあ。成功率50%の強化訓練なんてヤダよね。オレはヤダ。

本気度アップ。真面目にどのカード買うか悩んでたり。真面目にショップでカードのパラメータを眺めてみる……。む、ラワンデルの敏捷値が2なら使えるカードなのになあ。これ微妙なレアカードだなあ(深く考えずにテキトーにパラメータふってたのがばれる><)。7/1/2でライフがそれなりにあるカードとかすごく好みなんだけど、敏捷値2のカード一枚もないんだな。これ、たぶんどっかのタイミングで修正(ラワンデル => 7/1/2/5)入れます。

--

ごめんなさいちょっと熱くなっちゃいました。ちょっと反省。

--

あ、id:maiha きた〜。どうぞよろしくお願いします。

2006-09-05

[プラポケ]アップデート(対戦結果画面その他)

アップデートしました。

  • 対戦結果表示をいろいろ修正
  • shop でのカード買取価格を売値の75%に変更
  • その他

次はグレード昇格システムあたり考えてみるかなあ。 今考えているのは対戦に勝ってポイントを貯めるとより高いグレードに昇格するという方向性。グレードが高くなると必然的に対戦相手が強くなるけど賞金も高くなる。降格もあるのでグレードがその人の実力を示す感じ。このゲームは頭を使うゲームなので人によって実力差が顕著に現れてくるはず。ちなみにオレはこの手のゲームは苦手であまり強くない><

2006-09-05

[プラポケ]基本的な戦略〜一日にやるべきこと〜

戦略というと大げさですが、コツというか遊び方についてです。

1日5分で遊べるネットーゲームというコピーですが、逆に言うと最低でも一日一回アクセスしないと不利になってしまいます。なので毎日アクセスするというのが基本です。

対戦結果の確認とカードの入手

で何をすればいいかというと、まず対戦があった場合は結果を確認します。対戦後はログインすると自動的に結果表示画面に遷移するので見逃すことはありません。次に配給カードを受け取ります。毎日一枚ずつキャラクターカードが配られるのでそれをポケットに入れます(保留して後でポケットに入れることも可能)。カードはランダムなのでどのカードが来るかドキドキします。ただしその日に配られたカードはその日のうちにポケットに入れないと消滅してしまうので注意が必要です。

プレイヤーコマンドを実行

一日に一回だけプレイヤーコマンドを実行することができます。どれもゲームを有利にするものなので必ず実行するようにします。コマンドは3種類の中から選ぶことができます。

  • 攻撃力強化
  • 守備力強化
  • カードを一枚入手

強化コマンドを実行するとポケットないにあるカードのパラメータがランダムで上昇します。カード入手コマンドではその名の通り新しいカードを一枚引くことができます。

カードの補充

対戦に使ったカードはライフポイント(生命力)が1減ります。これが0になるとキャラクターカードは消滅します。減ったカードはプレイヤーコマンドやショップで補充しましょう。

カードの並び替え

次の日に対決がある場合はカードの順番をセットしておきます。左側の5枚のカードが対決に使われます。最低でも5枚のカードは確保しておきましょう。

まとめ

  1. 対決があった場合は結果確認
  2. 配給カードを受け取る
  3. カードの補充とプレイヤーコマンド実行
  4. カードの配置
2006-09-05

[プラポケ]カンナビス安すぎ

とりあえずAM4時のcron処理は無事に動作した模様。DBのバックアップ先のファイル名がちょっと意図したのと違ったのでこれは修正しないと。あと試合結果画面だけどせめてプレイヤー名だけは表示しないとどっちが自分かすらわからない……。

ちなみに今のラインナップだと最重要キャラは『カンナビス』、時点で『ヤロウ』かな。 『カンナビス』は全キャラ中最速のウィザードなので、1枚目に『カンナビス』を配置し、2枚目に攻撃力の高いカードを配置して先制攻撃を決め、3枚目は防御力の高いカードで守るというのが基本戦術になってきそう。Rカードは絶対高騰するので今のうちに買いあさるのが吉(カードのショップ価格は誰かが買ったカードは価格が上昇し、売られたカードは下落という仕組み)。逆にパラメータの低い未使用のカードは今のうちに売ったほうがいい。

昨日エントリーしてくれたょ。君とyukiちゃんの勝負が明日からはじまる模様。注目。

2006-09-04

[プラポケ]アップデート(カードショップ他)

  • shop でのカードの売買を実装
  • 賞金を実装。勝者500J、引き分け200J
  • カードのレア度を実装(今までは一様な確率だった)
2006-09-04

[プラポケ]日付更新処理作動

エントリして頂いた方々どうもありがとうございます。

舞波ちゃんらしき人が見あたらないのが気になりつつも、エントリ数が8になったいたので先ほど日付更新を実行。早朝までにエントリして頂いた方には配給カードが配られ、試合スケジュールにエントリされたかと思います。明日の午前4時に対戦相手とゲームが行われるのでお楽しみに。

今後は毎日午前4時に日付更新処理が実行されるはずです。

2006-09-04

[Rails]今日の疑問(h つけ忘れ)

日付がフライングしてる。うっかり公開してしまった。

  • view の中で h を付け忘れてしまうことがあるのですが、どうやって防げばいいでしょうか
2006-09-04

[プラポケ]対決の基本ルール

基本ルールを書いておきます。

5枚のカードを使って戦う

5枚のカードを使って2人で対戦します。対決自体は決まった時間が来ると自動的に行われるので、プレイヤーは5枚のカードを用意して順番を決めて並べておけばOKです。最大7までカードを持つことが出来ますが、ホーム画面で表示されているカードの左5枚が対決で使うカードになります。左から順に1枚目、2枚目、3枚目……のカードとなります。

1枚ずつカードを出し合い得点を競う

対決はお互いに1枚ずつ順番に出し合っていく姿をイメージしてください。トランプの『戦争』のように同時に1枚ずつカードを出し合います。5枚出し終わった時点で得点が高いプレイヤーが勝ちます。

1枚目は攻撃権の争奪

まず1枚めのカードは agility(敏捷さ) 値の勝負です。1枚めのカードの agility 値を比較し数値が高いプレイヤーが攻撃権を得ます。

2枚目以降は攻撃と防御

最初の攻撃と防御は双方のプレイヤーともに2枚目のカードを使います。攻撃するプレイヤーのカードの offense 値(攻撃力)と防御プレイヤーのカードの defense 値(防御力)を比較します。攻撃手の offense 値が相手の defense 値より大きかった場合、攻撃が成功し得点(通常は2点。得点は攻撃するキャラのジョブによって違う)が入ります。

3枚目は攻守が逆転

3枚目では攻守が逆転します。攻撃の成功判定は2枚目のときと同じようにお互いの3枚目のカードの offense 値と defense 値を比較します。 offense 値が高かった場合は攻撃成功で得点が入ります。

以下繰り返し

4,5 枚目も攻守を入れ替えながら攻撃判定を繰り返します。つまり通常はどちらのプレイヤーにも 2 回攻撃のチャンスがおとずれます。 5 枚のカードを出し終わった時点で対決終了です。総得点の高いプレイヤーがそのゲームの勝者となります。

agility の再比較

agility 比較のときにもしもお互いの値が同じだった場合は、2枚目のカードに agility 勝負が移行します。2 枚目のカードの agility 勝負で決着がつけば 3枚目以降のカードで攻撃判定を行います。2枚目のカードでも agility 値が同じだった場合は3枚目に勝負が持ち越されます。 agility 勝負に決着がつくまで次のカードに持ち越されます。もしも 4 枚のカードまで agility 値が同じだった場合は一度も攻撃が行われないので引き分けとなります。

また攻撃判定で攻撃手の offense 値と守り手 defense 値が同じだった場合も agility 判定へ移行します。もし 2 枚目のカードの攻撃判定で値が互角だった場合は 3 枚目のカードから agility 判定を行うことになります。

job 特性

ウィザードとプリーストのカードは攻撃力が 1 、侍は 3 、それ以外は 2 ポイントです。今のところそれ以外の job 特性は実装されていません。

def score
  case job
  when 'wiz', 'pri'
    1
  when 'sam'
    3
  else
    2
  end
end
2006-09-03

ExceptionLoggerプラグイン

>> 舞波本p.278のExceptionLoggerプラグインが使えるかもしれません。 http://svn.techno-weenie.net/projects/plugins/exception_logger

で、参加したいです! <<

という情報をmoriqさんから頂きました。ありがとうございます。でも残念ながらスパム扱いされてしまった……。ご参加のほうはよろしくお願いします。

舞波本ほしい。

2006-09-03

[プラポケ]意見のフィードバックとか

以前から悩んでいるのが、どういう形でユーザーから意見をもらってそれにどう答えるかというところのコミュニケーションのとりかたについて。

MLはゲームプレイヤー層には敷居が高いように思う。掲示板は敷居の低さの面ではいいんだけどスパムがいっぱいきそう。ミクシィにコミュ作ったり、2chにスレ立てたりとかってありなんだろうか。

__

IRCもあるか。

2006-09-03

[プラポケ]今後の展望とか

ようやくテストが開始できるようになったわけだけど、サービスを公開するのってやっぱり大変だ。今回は最低限の機能しかない未実装部分だらけのバージョンだけど、それでも最低限ネットワーク対戦ゲームとして成り立つだけの要素は盛り込んだつもりで、それほど小さいわけでもない。今回は実装→公開までやってしまったけど勢いでこの勢いは結構重要かも。もう出すと決めてあとは何とか動くようにひたすら問題点をつぶしてゆくという。このボリュームでこの労力なんだから本体の開発とリリースもよく考えないといけないな。

さて課題。

  • やっぱりカードのソートはマウスでドラッグしたい!
  • スケジューリングがいい加減。グレードの昇格とかまだない
  • 試合結果表示が貧弱
  • パッケージのテキスト置換が不十分。基本的にはviewのhメソッドをrに変えるだけなんだけど
  • パッケージいろいろ未完成。cssのカスタマイズとか継承とか
  • ジョブの機能がほとんど未実装。今はたぶんアタックポイントだけ
  • デッキはとっさの思いつきでアイデアを書いてみたんだけどどうかな
  • ショップも開店しないとね
  • あ、アイテムも作らなきゃ
  • メンテナンス中の画面とか。今はエラーになっちゃうう
  • とりあえずひとりのプレイヤーと3試合連続で対戦するようにしたんだけど、リーグ戦とどっちがいいか

収穫はパッケージを実装してその機能を実感できたこと。本体の開発でいろいろ考えていたからわりとすんなり実装できた。われながらパッケージはすごいと思う。世界観のカスタマイズはJewel-mmoの最大のコンセプトだけど、今日『ガーデンハーブ』を作っててかなり楽しかった。ユーザーがパッケージをうまく利用してくれるように努力していかないと。それ以前にどうやってゲームを流行らせるかを考えないといけないんだけどマーケティングの才能はほんとないんだよなあ。販促の人求む!

__

そうそう arton server で動いてるんだけど予想以上に速い。ちなみにタイトル画面にある 'arton' というのはサーバー名のこと。 arton さんとは関係ありません。

2006-09-03

準備完了

いろいろ問題があるとは思われるけども、体力の限界なのでここらで公開。 日数のかかるスローテンポなゲームなので運営しながら修正を入れていく方向で。

コメントやメールやミクシィでお申し込みいただいた方へ

入り口はこちらです(公開するのかよっ)。他の方は決してクリックしないでね><。もしくは一言コメントなりでご連絡ください。

ほんとは午前4時にcronが走って日付更新処理が行われるんですが、諸事情(人数が少ないうちは足並みをそろえないとNPC対戦が多くなってしまう)により参加状況を見てからcronを走らせます。

注意事項

  • いまのところユーザー名がゲーム中のプレイヤー名となります
  • ログインするとパッケージの選択画面になるので『Garden herb』を選択してください
  • ルールがわからないかと思いますが、少しずつここに書いていくと思います
  • バグ報告等はとりあえずはこの日記のコメントで。どうするのがいいかなあ
  • cronでこけるとロックがかかって繋がらなくなっちゃいます。今朝もこけてたしどこまでもつか……
  • 『Garden herb』のキャラ名とかプロフィールが誰でも編集できちゃうけど変更しないでね><
  • どうぞ長い目で見守ってください。よろしくお願いします

ゲームの一日の流れ

こんな感じでゲームが進行します。毎日アクセスしないと配給カードが流れてしまいます。

  1. コマンド実行(訓練 or カード取得)
  2. カードの順番をセット
  3. AM4時に cron が走る
  4. (試合がある日なら)試合結果表示
  5. 配給カード取得
  6. 先頭に戻る

あとRailsベースのソースは公開する方向で考えてます。今公開しないのは必要とする人がいるかわからないのに準備するのがただ面倒なので。

2006-09-02

[Rails]今日の疑問(エラーメッセージその他)

  • エラーが発生したときにプロダクション環境でも開発環境のようなエラーメッセージやバックとレースをブラウザに表示することはできないか
2006-09-02

[開発ログ]公開準備(3)

IE で表示すると h1 が埋もれることに気づいて CSS を修正。 いろいろ気になって大幅に修正。

デザインなんてあとでもいいじゃん!

2006-09-01

[開発ログ]公開準備(2)

予想以上に多くの方から反応を頂いてちょっとびっくり。 あまり人数が少ないとNPCとの対戦が多くなって面白くないからある程度人数がいたほうがうれしい。

モチベーションが上がってパッケージ機能の実装がだいぶ進んだ。 あとはカードの名前とパラメータを決めれば大丈夫かな。

  • todo
    • スケジュールでカードログのパラメータを確認できるように
    • 連続試合数を3日に変更しておく