简单游戏服务器的代码示例

2024-04-23

我想为游戏中心构建一款 iPhone 游戏,目前正在研究其中的服务器部分。我通过示例学习得最好,但我很难找到任何简单游戏服务器的示例来演示......

  1. 数据如何格式化并发送到服务器以及如何接收
  2. 如何验证正在发送/接收的数据以避免玩家作弊等。
  3. 游戏服务器代码如何与数据库一起构建

我想使用 Ruby on Rails 构建游戏服务器,但我会选择使用任何框架的示例来了解这些概念是如何工作的。有谁知道有任何书籍或在线资源涵盖了这一点或显示了一些有关如何构建游戏服务器的示例代码?

我不得不认为 iPhone 上的大多数多人游戏都需要玩家服务器,但我似乎找不到任何讨论如何构建服务器的资源。我发现讨论构建多人游戏的资源(包括苹果的文档)都说了同样的事情,“开发游戏服务器超出了本书的范围,但我们将重点关注连接到此类服务器所需的客户端代码。”

预先非常感谢您的帮助!

EDIT:


好的,在阅读您的编辑后,我认为 Node.js 应该可以很好地完成这项工作。

关于你的观点:

  1. 我不知道配对到底是如何工作的(猜猜你会得到一对密钥左右来验证请求),但无论使用哪种编程语言,它都应该很难实现。

  2. 简单:设置服务器,处理连接,保存正在运行的游戏列表,为每个游戏跟踪状态(玩家,时间等),最大应该是(取决于您使用的消息协议..) 150 -200行

  3. 当您认为游戏已准备就绪时,只需向给定游戏中的每个玩家发送某种就绪事件(就像每个人都触摸了“我准备好了”按钮左右)

  4. 好的,这里有一些提示:

    1. 跟踪服务器上剩余/已过的时间并将其发送给玩家,计时器很快就关闭了(我在大约 3 分钟内关闭了 4-5 秒)

    2. 为了防止作弊,请验证服务器上的动作,这对于益智游戏来说应该相当容易。您还可以检查每次移动之间的时间,所有低于 50 毫秒的内容都应该是可疑的,但这主要取决于谜题的难度。

  5. 通过检查服务器上的动作,这也很容易,您不必依赖客户端向您发送“看我完成了”消息。

  6. 同样简单,只需发送带有随附数据的事件并将点记录到数据库中。

最重要的一点显然是防止作弊,对于一款电脑就能轻松解出答案的益智游戏来说,想要完全杜绝作弊是不可能的。不过,通过上面的技巧,你可以让它变得更难。

但请记住,当游戏很简单时,你无法阻止人们在高分上作弊,在游戏中构建越来越多的保护是没有意义的。专注于游戏,做到这一点对人类来说有趣且简单 but 对于计算机来说是复杂且不可预测的.

就数据库而言,呃...我想你可以使用 MongoDB,但我还没有在 Node 下使用它。

哦,如果您想了解一下 Node.js 可以做什么,这是我构建的游戏:
http://github.com/BonsaiDen/NodeGame-Shooter http://github.com/BonsaiDen/NodeGame-Shooter

所有逻辑都在服务器上运行,客户端只需绘制他们知道的东西,我在两个晚上内就建立并运行了一个可玩的原型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

简单游戏服务器的代码示例 的相关文章

  • 在后台每 X 分钟执行一次函数不起作用

    我使用此代码每 X 分钟执行一次函数 void executeEveryOneMinute self myFunction dispatch after dispatch time DISPATCH TIME NOW int64 t 60
  • 如何将 NSDate 转换为 NSString?

    我想将 NSDate 转换为 NSString 这怎么可能 我尝试了这个 但它不起作用 它正在生成异常 NSString dateToString NSString alloc initWithFormat NSString dateObj
  • 如何使自定义绘制的 UITableViewCell 正确调整大小?

    出于性能原因 我在自定义视图中绘制 UITableViewCell 的字符串 该视图重写其 drawRect 方法 以使用 NSString drawInRect 直接在视图矩形中绘制字符串 这类似于 Apple 的 TableViewSu
  • [[NSMutableDictionary alloc] initWithObjects:...] 和 [NSMutableDictionary DictionaryWithObjects:...] 之间的区别?

    仍在学习 Objective C iPhone SDK 我想我知道为什么这不起作用 但我只是想确认一下 In awakeFromNib 如果我使用 NSMutableDictionary alloc initWithObjects 它实际上
  • 禁用 iPhone 4S / 新 iPad 键盘上的听写按钮

    我们的应用程序是一个医疗保健应用程序 我们的应用程序中有一个符合 HIPAA 标准的语音识别器 所有听写都可以通过它进行 医院不希望医生意外开始与不符合 HIPAA 标准的 Nuance Dragon 服务器进行对话 因此 我正在寻找可以抑
  • 如何查找连接到 AF_INET 套接字的客户端的 UID?

    有什么方法或类似的东西ucred for AF UNIX如果是AF INET插座 TCP在我的例子中 找出连接到我的套接字的客户端的UID 还有 proc net tcp但它显示了UID of the creator插座的而不是连接的cli
  • presentRenderbuffer :GL_RENDERBUFFER_OES 需要很长时间

    我在游戏中添加了一个分析器并隔离了此功能 有时 它会导致 FPS 下降 这是我的结果 Present buffer time 22 Present buffer time 1 Present buffer time 9 Present bu
  • 横向旋转到纵向时的字体大小怪异 - CSS 媒体查询 - iPhone5 Safari

    我已经用谷歌搜索了这个 但无法弄清楚 谢谢你的帮助 Studiolynch com 响应式和流体布局 在 iphone 5 Safari 中完美运行 除了从横向模式旋转到纵向模式会使字体大小小于应有的大小 但是 如果您最初以纵向模式加载页面
  • 将语音添加到自定义 UIMenuController

    我创建了一个自定义UIMenuController in a UIWebView但它似乎摆脱了 说出选择 选项UIMenuController在那之后 所有测试设备上的 偏好设置 中都打开了发言选择选项 并且它出现在其他应用程序中 包括非
  • 使用 AudioStreamer 获取 MP3 ID3 元数据和歌曲持续时间

    我在用着马特 加拉格尔的 AudioStreamer http cocoawithlove com 2008 09 streaming and playing live mp3 stream html通过 HTTP 播放 MP3 我需要知道
  • iPhone 3GS 上的 ARM 与 Thumb 性能比较,非浮点代码

    我想知道是否有人有关于 iPhone 3GS 上 ARM 与 Thumb 代码性能的硬性数据 特别是对于非浮点 VFP 或 NEON 代码 我知道 Thumb 模式下的浮点性能问题 更大的 ARM 指令的额外代码大小是否会在某个时刻成为性能
  • 背景大小:封面在视网膜显示屏上看起来像素化

    可以看到我正在开发的网站here http ourcityourstory com dev 如果你查看 iPad 3 或 iPhone 4 上的 关于 或 联系 部分 背景看起来全都是疯狂的像素化 我有background size set
  • UISlider不会自动重绘

    我的应用程序上有一个 UISlider 有时我不仅需要更新它的值 还需要更新它的minimumValue 值已更改 但如果我调用 setValue 方法或为滑块分配新值 它会具有新值 但滑块不会将自身重新绘制到该新值应有的位置 我怎样才能重
  • 为具有多个目标和不同平台的项目编写 Podfile

    我正在准备一个支持 OS X 和 iOS 的 Pod 我的 pod 有一些自己的依赖项 这些依赖项在 podspec 文件中定义 因此我使用 Podfile 来管理我用来开发 pod 和运行测试的项目的依赖项 我正在使用 CocoaPods
  • 如何为图层阴影不透明度设置动画?

    我有一个视图 我已将 LayerOpacity 设置为 1 theView layer shadowOpacity 1 0 当视图位于屏幕下方时 这看起来很好 当我将此视图向上移动以与另一个有阴影的视图齐平时 它们看起来不太好 有没有办法让
  • UILabel UILongPressGestureRecognizer 不起作用?

    我怎样才能得到UILongPressGestureRecognizer在 uilabel 当我实现以下代码时 它不会调用该函数 那么请告诉我我做错了什么 UILongPressGestureRecognizer longPress UILo
  • iPhone Twitter SDK 与 iOS 5 设备的集成问题

    我已成功将 Twitter Sharekit 与我的 iPad 应用程序源集成 当我在模拟器和装有 iOS 4 X 的 iPad 1 上测试该应用程序时 它运行完美 并且成功发布了推文 但是 如果我在装有 iOS 5 的 iPad 2 上安
  • 重新启动应用程序时出现异常 SIGKILL

    我在 iPhone 模拟器中构建并运行一个项目 我通过按主页按钮将其发送到后台 然后我双击主页按钮在后台找到我的应用程序并点击它 它变得活跃并且应用程序继续运行 在这里 无论我重复多少次 我都没有问题 然后我通过点击应用程序图标上的红色小减
  • iPhone JPG 图像有非标准魔术字节 ff d8 ff e1?

    我的网络应用程序在接受上传的图像之前会根据文件扩展名检查前四个字节 一位同事向我展示了他 iPhone 上的图像 但这些图像被拒绝了 它们具有不同的第四个字节 e1 225 而不是预期的 e0 224 这对于 iPhone 来说是常见的吗
  • 如何用图片替换UITableView?

    我有一个 UITableView 默认为空白 直到用户编辑并向其添加数据 我想显示一张带有说明的图像 直到用户编辑它为止 图片的大小非常适合导航栏和标签栏之间 有没有办法以编程方式执行此操作 您可以使用removeFromSuperview

随机推荐

  • Flutter 区域设置日期字符串到日期时间

    我想将日期 String 转换为 DateTime 对象 字符串包含土耳其语月份名称 如下所示 我的字符串 来自 API 10 Mart 2021 16 38 我的区域设置 土耳其 tr 我怎样才能转换 感谢您 尝试以下操作 只有 en U
  • 读取 URL 查询参数值 (Vue.js)

    在 vuejs 回调 URL 中 我有一些参数值 我需要读取这个参数值 例如返回url是 http localhost 8080 sucesspage encryteddata abdeshfkkilkalidfel 9a 我努力了this
  • std::vector::insert 的重载解析如何工作

    这是三分之二insert来自 std vector 的方法签名 void insert iterator position size type n const value type val template
  • Python内部结构[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 任何人都可以指导我阅读在线文档或书籍 在那里我可以找到并了解 C 中的 Python 实现 例如 Per
  • Python 变量在不应该改变的时候发生改变

    我正在处理的代码正在更改我的临时变量 但我不知道如何阻止它 本质上 问题是这样的 def example array temp array for i in range whatever change array 我需要更改数组 但保持温度
  • 无法为 Android 源代码创建 Xamarin 组件

    我已经使用了命令 xamarin component exe package C cmp AndroidComponent component 用于创建 Xamarin 组件 在构建示例 android 项目时 它显示以下错误 我已使用命令
  • Gradle 升级 7.2 > 7.3 中断,“此属性的值是最终的,不能进一步更改”(使用 Micronaut 插件?)

    我使用 Micronaut 3 1 3 和 Gradle 7 2 来构建我的项目 After 切换到 Gradle 7 3 内置中断会发出一些上下文无关的错误消息 gradlew clean build Executed by Gradle
  • 为什么这个上下文管理器与字典理解的行为不同?

    我有一个上下文装饰器 完成后会产生副作用 我注意到 如果我使用字典理解 就不会出现副作用 from contextlib import contextmanager import traceback import sys accumulat
  • 在 Woocommerce 产品标题中添加换行符

    假设我的产品标题是 棕色皮鞋 但根据我的列宽 标题如下所示 棕色皮革 Shoes 我知道可以进行角色替换 以便 在后端变成换行符 br 但我不知道怎么办 我希望它看起来像这样 棕色 皮鞋 我找到了这些参考资料 在商店页面上的产品标题上添加一
  • 如何为列表中的每个元素创建一个按钮并将其放在滚动区域中?

    我有一个列表 每次用户打开文件时都会获取一个元素 我需要创建一个带有文件名 列表中的元素 的按钮 每次将该文件附加到列表中时 并将该按钮放入滚动区域 问题是我总是只有一个按钮 只是更改了名称 filenames def addfiles f
  • SASS/SCSS 变量不适用于 CSS 变量赋值

    我有以下 SCSS 代码 mixin foo bar 42 xyzzy bar bar include foo 我希望得到 CSS 变量 xyzzy set to 42 on all bar元素 相反 我得到 CSS 说明bar xyzzy
  • 根据背景将前景色设置为黑色或白色

    比如计算RGB分量的平均值 然后决定使用黑色还是白色 我是否必须在第一步将 RGB 转换为 HSV 因为 RGB 并不总是人眼看到的 我正在使用 C 恰巧我不久前的一个项目需要这个功能 private int PerceivedBright
  • 如何正确访问后台线程中创建的查询结果?

    我想在后台线程中执行数据库查询 OmniThread 库将帮助我处理所有线程问题 但到目前为止我不明白一件事 每个线程都需要一个单独的数据库连接 因此 后台线程创建数据库连接 创建查询 然后执行它 现在我可以使用后台线程的查询对象访问查询结
  • 停止并重新启动 HttpListener?

    我正在开发一个应用程序 它有一个HttpListener 我的目标是让用户根据自己的选择关闭和打开监听器 我将侦听器放入一个新线程中 但在中止该线程时遇到问题 我在某处读到 如果您尝试中止非托管上下文中的线程 那么一旦它重新进入托管上下文T
  • 尝试从客户端发送数据,但 req.session 无法正常工作

    我正在尝试执行发布请求 当我使用邮递员执行此操作时非常成功 但我正在尝试从客户端发送它 我想发布购物车 但结果是我不断发布数量为 1 的商品 无论我发布该请求多少次 解决此问题并以正常方式发布请求的最佳解决方案是什么 我正在使用会话 也许这
  • Mutation Observer不检测通过innerHTML、appendChild添加的节点

    当我们尝试使用appendChild或innerHTML在DOM中添加嵌套节点时 嵌套节点不会出现在突变的addedNodes中 初始 HTML 设置 div div 这是我的突变观察者代码 var observer new Mutatio
  • 回收器查看致命异常:java.lang.ArrayIndexOutOfBoundsException

    我通过 crashlytics 得到了这个堆栈跟踪 我不知道问题出在哪里 有没有 StaggeredGridLayoutManager 的替代方案可以用来获取类似列表视图的布局 Fatal Exception java lang Array
  • 仅正样本和未标记数据集的二元半监督分类

    我的数据由评论组成 保存在文件中 其中很少被标记为正面 我想使用半监督和PU http www cs uic edu liub publications ICDM 03 pdf分类将这些评论分为正面和负面类别 我想知道 python sci
  • Angular 2 可用的 yeoman 生成器 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有官方的 Angular 生成器 许多用户为 Angular 1 提供了生成器 但我还没有找到 Angu
  • 简单游戏服务器的代码示例

    我想为游戏中心构建一款 iPhone 游戏 目前正在研究其中的服务器部分 我通过示例学习得最好 但我很难找到任何简单游戏服务器的示例来演示 数据如何格式化并发送到服务器以及如何接收 如何验证正在发送 接收的数据以避免玩家作弊等 游戏服务器代