Pygame 的基本网络

新手上路,请多包涵

我需要为 Pygame 项目做一些基本的网络。

基本上,它是一款 2D 单人游戏或合作游戏。联网只需要支持两个播放器,一个作为主机。

唯一需要发送的信息是玩家、小兵和子弹的位置。

我一直在四处阅读, Twisted 一直在出现,但我以前没有做过网络,我不确定这是否会有点矫枉过正。

那么,相对新手有没有可能在Pygame中实现联网呢?

原文由 Lightbreeze 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 472
1 个回答

这是最近在 Reddit 上被问到的,所以我或多或少只是从那里复制我的答案。对于无法提供更多链接,我深表歉意,我有 <10 个代表,所以我一次只能发布两个。

Twisted 可能有用,但我没有太多的经验。我建议使用套接字,因为 Twisted 无论如何都会在后台使用它。如果您想了解套接字的工作原理(在 C++ 中,但概念无处不在),Beej 的指南(google it)几乎就是套接字的圣经。 Python 确实抽象出了一些复杂性,但了解后台发生的事情仍然是一个好主意。

对于特定于 Python 的套接字,您可以继续使用 howto(user745294 在上面发布了一个链接)。 这里 有一篇不错的文章,标题为“每个程序员都需要了解游戏网络”。它涉及不同类型的主要网络样式(客户端-服务器、p2p、udp 与 tcp 等)以及一些主要游戏用于其网络的背后的历史。

下面是我在 Python 2.6/Pygame 中制作网络“游戏”时所做的演示的链接。这实际上不是游戏,但您创建的每个客户端都连接到服务器并控制一个角色。您可以使用箭头键移动角色,角色将在所有连接的客户端上移动。我尝试对源代码进行注释,说明我来回发送的内容,但您可能需要了解一些有关套接字的知识才能理解它。

源代码在本文下方评论中的键盘链接中提供。您将需要在与脚本相同的目录中提供两个图像:

  1. bg.png 是背景精灵。它应该是一个 400px 宽和 300px 高的图像(如果需要,可以在 GameClient 类中更改)
  2. sprite.png 是玩家角色。它应该小于背景,以便您可以看到它四处移动。

原文由 nemec 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏