使用MVC/Javascript实现回合制网页游戏
Implementing Turn-based web game using MVC/Javascript
我正在执行浏览器回合制游戏,使用javascript和asp.net MVC,将来可能会使用html5。
我有一些关于它的问题,因为我是很新的asp.net MVC和javascript:
-
我不知道如何在javascript和MVC之间进行交互,这意味着我如何才能使GUI不重新加载页面,而是将信息发送给使用它的服务器上的函数/操作,并相应地更新GUI。
例如:点击一个按钮将调用服务器端函数,该函数将更新网站上的一些字段,而无需重新加载页面。
当然,我想让javascript只负责GUI,所有的计算都将在服务器端进行,似乎:
-
点击某物
-
发送信息到服务器端功能
-
计算和更新GUI
-
-
我有很多数据需要保存每个玩家在战斗期间我想知道保存这些数据最好的地方在哪里。
我可能会有一个包含数据的战斗对象,这将访问数据库并使用javascript更新gui。
-
因为这是一款回合制游戏,所以我必须执行一个能够在玩家之间同步的系统。我认为最好的方法是在每个客户端上创建一个计时器,每隔2秒就会从数据库中获取信息,并在发生变化时更新GUI(游戏邦注:例如,其他玩家使用X类型的移动造成X伤害)。你有更好的解决办法吗?
谢谢。
是的,你需要Ajax和一些JavaScript库来帮助你的单页应用程序。你可以通过使用jQuery开始你的原型设计,以习惯Ajax的方法:
<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>
后端MVC应用程序需要控制器中的操作来支持/Battle/Hit
URL
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和JavaScript/jQuery的角度来思考。一旦掌握了它的窍门,如果您的应用程序变得更复杂,我强烈建议您探索一些jQuery的替代品。jQuery.ajax
可以很快变成意大利面条代码!
我会研究javascript长轮询和服务器端异步处理-以便客户端立即更新服务器端发生的事情。java示例:http://www.playframework.org/documentation/1.2/asynchronous
要创建模型客户端,您可以查看backbone.js
顺便说一句,搜索asp.net ajax聊天应用程序可能会给你一些很好的客户端通信的起点
- 如何通过网页控制游戏服务器
- 画布游戏 Json 功能仅适用于网页检查器
- 网页游戏有很多错误:这重要吗?
- 在我的网页上定位 Canvas HTML5 游戏时遇到问题
- 创建由多个页面组成的JS/EaselJS网页(非游戏)
- 使用MVC/Javascript实现回合制网页游戏
- 如何在网页应用中构建游戏树
- 如何改变焦点的网页加载在javascript的flash游戏
- 任何替代applet,嵌入在网页上的java 3d游戏应用程序
- JavaScript或Flash多人网页游戏
- 如何防止网页游戏被黑客攻击
- Flash vs HTML5网页游戏开发移动
- 我如何让网页游戏在相同的URL上运行?
- 用于低延迟网页游戏的HTTP或Websocket
- 网页游戏中的客户端和服务器模型
- 如何在javascript+jquery+css中更高效地开发网页游戏?
- 网页游戏-保存JavaScript变量到MySQL
- 滑动拼图(网页游戏)-过渡
- 我应该学习Actionscript 3和Javascript一起制作网页游戏吗?
- 用ASP开发网页游戏.. NET和HTML5 Canvas