4

私と私のスタートアップ アプリ会社は、ターン ベースのマルチプレイヤー iPhone アプリケーションに取り組んでいます。私たちのどちらも、データベースやサーバーの知識をまったく持っていないと言いましょう。しかし、私たちは喜んで学びます。

ゲームの流れは、WordFeud、WordsWithFriends、Rumble などのゲームと似ています。

まず、ウェブでの多くの検索結果から始めましょう。

ユーザー、ゲーム セッション、その他の情報を格納するためのツールとしてCouchDBを使用することにしました。CouchDB は、オープン ソースの noSQL データベース システムです。その理由は、多くの同時ユーザーをサポートする必要があると教えられてきたからです。その上、それはスケールします-もちろん、私たちは大きくなることを望んでいます.

私たちの CouchDB はIrisCouchでホストされています。IrisCouch は、CouchDb を実行するために設計された「クラウド内」ホスティング サービスです。

これで、CouchDB サーバーが稼働し、サーバーからデータをクエリする方法の基本がわかりました。

現在、私たちの最大の混乱は、ベスト プラクティスに従って動作するようにシステムをセットアップする方法です。現在、データを受信して​​サーバーに送信できるようになっています。

私たちのゲームは、ユーザーがアプリまたは Facebook を介して登録できるように、Facebook と統合する必要があります。その後、ランダムにマッチした相手と遊んだり、友達と遊んだりできます。試合が開始された後、1 人のプレイヤーが一連の質問を受け取り、彼が答えた後、プッシュ通知を介して他のプレイヤーに自分の番であることを通知する必要があります。数ラウンド後、ゲームは終了します。

現時点では、これがアプリケーションのフローに最適なソリューションである可能性があると考えています。

  1. ユーザーが別のユーザーに接続します -> ゲーム セッションは、"games" と呼ばれるデータベース内のドキュメントとして開かれます。
  2. 新しく作成されたドキュメントには、プレイヤー名、質問、回答などの両方が含まれています
  3. 「whos_turn」という名前のフィールドは、2 人のプレイヤーのどちらの番になるかを決定します。
  4. ゲームが終了すると、セッションは消去されます。

繰り返しになりますが、ご覧のとおり、実際にどのように行うかについてはまだわかっていませんが、これが一般的な考え方です。

したがって、私の質問は次のようになります。

データを iPhone アプリケーションから直接クエリするのと、Web サービスを介してクエリするのとではどちらが最適ですか?

アプリケーションのフローを最適に管理するために、データベースをセットアップする最適な方法は何ですか?

私たちを近づける可能性のある情報は、喜んでいただければ幸いです:)

よろしくお願いします!

オラフ・ガンダーセン


EDIT#1 : 私たちの Objective-C プログラマーは、CouchDb を使用して 2 つの iPhone デバイスを接続することに成功しました。iPhone アプリケーションは、データベースとの同時接続を持つテーブル ビューで構成されているため、誰かがデータベースに POST すると、接続されている他のすべての電話のテーブル ビューに表示されます。見よ: 非常に効果のないチャット システム。

4

2 に答える 2

5

マルチプレイヤーの場合、リモートの iriscouch.db と通信するアプリが必要ですが、あなたもあなたの友人もデータベースの経験がないと述べている点が心配です。あなたは学ぶ意欲があるので、始めるのに最適な場所は次のとおりだと思います。

http://guide.couchdb.org/editions/1/en/index.html

ドキュメントを継続的に消去することを計画している場合、スケーラビリティに関していくつかの問題が発生する可能性があります。DBサイズはcouchdbでかなり大きくなる可能性があり、データベースを定期的に圧縮およびクリーンアップする必要があります。しかし、これはスタートアップレベルであるため、現時点では大きな問題ではないと思います。

「データベースをセットアップし、アプリケーションのフローを最適に管理するための最良の方法」という質問は、チームで対処する必要があります。データベースの経験がある人がいない場合は、喜んで手伝ってくれる人を探すようにしてください。データベースの経験が豊富な人でなければなりません。http://www.odesk.comでかなり合理的な専門家を見つけることができます。

正直なところ、フリーランサーであろうとコントリビューターであろうと、優れたユーザー エクスペリエンスを保証する堅実なデータベース ロジックをゲーム内に構築するのに役立つような人物がいない場合、成功するとは思えません。

例: 米国 (Iriscouch) とユーザーの場所に基づいたデータベースを使用して、レイテンシー遅延の問題を検討しましたか?

このため、可能な限りクライアント側で実行する必要がある場合があります (sqlite や touchDB などの組み込みデータベースで、基本的に iPhone 用の couchDB です)。

iPhone アプリケーションの場合、そのhttps://github.com/couchbaselabs/TouchDB-iOS用に正確に作成された TouchDB を試してみることをお勧めし ます(注意: ターンなどを確認するために接続が必要なため、これは理想的なソリューションではないかもしれませんが、一部の情報をローカルに保存するために機能する可能性があります)。

これをレイアウトするには、couchdb の経験があり、適切で使用可能なアプリケーションをセットアップできる人が必要です。アイデアに熱心であることは悪いことではありませんが、それを成功させるには、データベース側の技術的な頭脳が必要です。もちろん、あなたはこれを自分で学ぶことができるかもしれません。CouchDB の本を読んだら、ニーズに合った基本的なフローを作成できるようになっているはずです。

もちろん、他のより経験豊富なユーザーは、より包括的な回答やサンプルレイアウトを提供する可能性がありますが、それが最善のアプローチだとは思いません. 誰かがドキュメント構造の完全なレイアウトとそれをクエリする方法を投稿したとしても、セッションが削除されない、競合などの何かがうまくいかない場合、どのようにアプリにサービスを提供しますか? したがって、あなたのケースについてアドホックな専門知識を取得することを心からお勧めします。

これは、適切な代替案の分析にもつながる可能性があります。私は、CouchDB が拡張可能であり、それゆえに最適/唯一のオプションであるという考えを受け入れる必要はないと思います (もちろん、これは事実である可能性が高く、それが良いオプションであると思われる場合は..それを選択してください)。たとえば、Twitter、Google アドワーズ、およびその他の多くのオンライン アプリは、mysql を使用してデータを保存しているため、拡張可能なデータベースは CouchDB だけではありません。

于 2012-04-30T04:31:23.713 に答える