【发布时间】:2012-02-11 20:48:01
【问题描述】:
我有一个项目来创建一个roguelike,它以某种方式从引擎中抽象出 UI,并从地图创建、站点线等中抽象出引擎。为了缩小焦点,我首先只想让 UI(玩家的客户端)和引擎工作。
我目前的想法是让客户端基本上是一个程序,它决定一个角色(玩家、怪物)轮到它做什么,并等待它再次移动。所以每个怪物都有一个客户,玩家也是如此。玩家的客户端打印地图,等待输入,将其发送到引擎,然后告诉玩家发生了什么。怪物的客户端除了不打印地图和使用 AI 代替键盘输入外,也是一样的。
在我继续之前,如果这似乎是一种模糊的做事方式,我的目标是学习,而不是写一个 roguelike。这是旅程,而不是目的地。
所以我需要选择哪种形式的ipc 最适合这个模型。
- 我第一次尝试使用管道,因为它们最简单,我写了一个 播放器的 UI 和一个程序来输入指令,例如 放置地图和播放器的位置。虽然这有效,但它只允许 一个客户端——通过标准输入和输出进行通信。
- 我考虑过让引擎成为一个查看线轴的守护进程 客户端在启动时创建每个客户端唯一的临时文件以 向引擎发出指令并接收反馈。
- 最后,我做了一点关于套接字的介绍性编程。 他们似乎可能是要走的路,并且会允许游戏 也许有一天会被网碾过。如果可能的话,我想使用 一个更简单的解决方案,由于我对它们不熟悉,所以它更 容易出错。
- 我总是乐于接受建议。
【问题讨论】:
-
让每个怪物都使用一个客户端会让你的工作更加努力,你期望这种方法有什么好处?
-
我希望学习如何去做。我也希望玩得开心。如果你告诉我我让自己变得不必要的困难,那就等于说“停止玩乐”。
-
很好,我的下一个问题是,您打算使用什么语言/平台?
-
我的家是用 C++ 编写的,但我最近对 C 产生了浓厚的兴趣,这要求我忘掉我所学到的关于什么是好/坏代码的大部分内容。这样做的好处是每个组件都可以用不同的语言编写,使用不同的库,只要界面保持不变。为了避免过早的优化,最好使用 Python 作为初始代码。我没有 Windows 盒子,所以它一直是 linux。顺便说一句,我 X 发布到 Tigsource 并且讨论的更进一步:tig post
标签: roguelike ipc client-server ipc roguelike