2011-12-16 9 views
1

javascriptとasp.net MVCを使用して、おそらくhtml5を将来使用するブラウザベースのゲームを実装しています。MVC/Javascriptを使用したターンベースのWebゲームの実装

私はMVCとJavaScriptをASP.NETにはかなり新しいですので、私は、それに関するいくつかの問題を持っている:

  1. 私はどのようにすることができますを意味している私はJavaScriptとMVC、 間で対話できる方法がわかりません私はページをリロードせずに、それを使用するサーバで機能/アクションに与えられた情報を送信し、それに応じてGUIを更新するGUIを作る。

    たとえば、ボタンをクリックすると、ページをリロードせずにウェブサイトの一部のフィールドを更新するサーバー側の機能が呼び出されます。

    当然、私は、唯一のGUIのためのjavascriptを担当するようにしたい と、すべての計算は、サーバー側でなり、そしてそれはそのようだ:何か

    • クリック情報を送信切断側機能

    • 計算及び更新GUI

  2. 私は戦闘中に各プレーヤーのために多くのデータを保存する必要があります。 と私はこのデータを保存するのに最適な場所を知っています。

    おそらくデータベースにアクセスし、javascriptを使用してguiを更新するデータを含むバトルオブジェクトがあります。

  3. ターンベースのゲームなので、プレイヤー間で同期するシステムを実装する必要があります。私が考えている最良の方法は、各クライアントにタイマーを作成することです. 2秒ごとにデータベースから情報を取得し、何かが変更された場合にGUIを更新する(たとえば、他のプレイヤーがXタイプ移動のXダメージ)。あなたはこれに対してより良い解決策を持っていますか?

ありがとう。

+2

あなたはAJAXを調べる必要があるように思えます。 – thedaian

+3

クライアントの同期のために、私はSignalRを推奨します - https://github.com/SignalR/SignalR –

+1

SignalRはすごくここに適用することができます! –

答えて

3

はい、単一ページアプリケーションを支援するには、AjaxとJavaScriptライブラリが必要です。

<script type="text/javascript"> 
    $(function() { 
     $('#battleHitButton').click(function(e) { 
      $.ajax({ 
       type: 'POST', 
       url: 'Battle/Hit', 
       data: { 'opponent': 'someName', 'bonus': 42 }, 
       success: function(data) { 
        $('#result').html(data); 
        // do some other stuff after hit 
       } 
      }); 
     }); 
    }); 
</script> 

そして

public class BattleController : Controller 
{ 
    [HttpPost] 
    public ActionResult Hit(BattleModel model) 
    { 
     string whoToHit = model.opponent; 
     int bonusDamage = model.bonus; 
     // do battle, persist to database, etc 
    } 
} 
バックエンドであなたのMVCアプリケーションが /Battle/Hit URLをサポートするために、コントローラ内のアクションを必要とする:あなたは、Ajaxのアプローチに慣れるために jQueryを使用して、プロトタイピングを開始する可能性があります

これは決して完全な解決策ではありません。しかし、MVCとJavaScript/jQueryについて考え始める必要があります。アプリケーションの複雑さが増したら、jQueryの代替案を検討することを強くお勧めします。 jQuery.ajaxはすぐにスパゲッティコードに変わることができます!

1

私はjavascriptの長いポーリングとサーバー側の非同期処理について調べます。そのため、クライアントはすぐに更新され、サーバー側で発生します。Javaでの例:モデルのクライアント側を作成するためのhttp://www.playframework.org/documentation/1.2/asynchronous

あなたは、クライアントの通信にあなたにいくつかの良い出発点を与える可能性のasp.net Ajaxのチャットアプリケーションのためにグーグルで、BACKBONE.JSところで

を見てみることができます

関連する問題