首页 / C# / c# – 如何为简单游戏布局解耦类结构?
c# – 如何为简单游戏布局解耦类结构?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何为简单游戏布局解耦类结构?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3978字,纯文字阅读大概需要6分钟。
内容图文
现在我有六个班:
>侦听器 – 管理套接字连接
>世界 – 实体和任务的集合
> Ticker – 协调更新世界
> MessageProcessor – 接收来自玩家的命令
>智力 – 控制非玩家角色的行为
>任务 – 跟踪和执行任务
但它们就像是意大利面条,彼此之间相互引用……世界是MessageProcessor,Intelligence和Tasks类修改的数据模型. Ticker协调这三个更新世界的课程. MessageProcessor使用Listener来输入消息,并通过其他类来推送更新.
我该如何改善这种情况?
解决方法:
好吧,我不确定我对你所遇到的问题有一个全面的了解,但是我对你到目前为止所提出的问题有一些可能性. (我可能实际上已经提出了一些已经完成的事情,因为我不确定我是否有足够的单线描述来完全理解.
该模型
我会从你所描述的内容中说,让我感到震惊的主要事情是你要开始在类模型中实现常用功能;您将需要可用于从中派生高级对象的接口或基类.
通过这种方式,您可以轻松处理事情,而无需额外的努我认为“架构层”的概念可以作为如何思考它的第一部分,(例如低级硬件,套接字处理等,然后是中间层的东西,比如你的游戏中发生了什么样的事情) ,以及游戏机制如何工作等细节,以及高级别的东西,比如PC或NPC可以做什么,环境在做什么等等,以及你永远不想“跳”层的想法.然而,当谈到它时,重要的是为你的游戏找到合适的抽象,并保持所有组织的方式,你永远不会觉得你正在做的一些代码正在做两种完全不同的类型东西的.
所以,首先,让我们看一下这样的事实:(很自然地)有很多事情与世界国家相互作用.对于这样的事情,将很多“东西”分解成单个类可能是有利的,然后大多数只有一个类做这个工作.理想情况下,您可以在它自己的小组中实现事件通信/消息传递,这样就不需要使用处理内容的细节来污染您的高级对象.
例如,你想要专注于更高层次物体中高水平的事情:在AI中可能“开始向某个位置移动”,“设置我的急速”,“停止移动”;并且在环境子系统中“开始下雨”,“增加风速”,“昏暗的灯光”;在用户类“火武器”,“睡眠”,“施法”中.但我不希望我的任何高级课程都知道诸如“向世界发送消息”,或“重置口渴计时器”,或“接收套接字数据”或“健康周期滴答”之类的事情. (这些都只是阐释,而不是建议.; D)
活动
例如,我认为让一个对象负责向世界发送事件可能是有价值的,这样你就不再让每个人都与所有人交谈.我可能会创建一组处理事件的东西.因此,可能使用EventMain和enumEvents,以便每种类型的事件都具有特殊ID.然后使用Event作为需要额外功能的特定事件的基类. (我同时考虑了ID和派生模型,所以像Dispatcher这样的东西,可能只需要知道关于事件的非常基本的东西,也不必知道派生类.例如,调度员可以接受一个事件并将其发送出去,而不必知道派生事件的内部.这可能会或者可能不会变得有用,但是有选项是好的.)你也可以有一个EventDispatcher,它有一个要发送到其他子系统的事件队列.
您将需要一些常见的接收和发送事件.您可以执行EventSourcer和EventSinker独立类,这些类可以在生成或接收事件的任何类中设置.或者,您可以改为执行IEventSource和IEventSink,以便您可以在多个类上实现公共接口,或者可能是实现这两者的公共类EventSourceAndSink,它是基类模型的一部分,以便可能需要处理事件的任何事情可以从中衍生出来.
我可能会制作ProtocolEncoder和ProtocolDecoder类.您始终可以将它们组合到一个对象中,但它可能很有价值,如果做得不够,不应该导致任何问题,使它们成为两个独立的代码片段.您还可以拥有一个ProtocolHelper类,它可以解决两者之间的任何共同点.编码器的唯一工作是从网络接收消息并将其转换为游戏事件,然后将其传递给EventDispatcher.解码器类将从需要转发到网络的调度程序中获取事件,它将从中获取数据并将其发送出去.
如何到达你要去的地方
由于你确实有工作代码,我建议你只要在看似自然的地方开始做.这可能会让你陷入困境,或者你注意到在不同的地方非常相似的东西,你可以用一个类或其他类型的抽象定期,然后拿出旧的并放入新的.一旦你找到了一个可行的第一次类型模型,那应该根据你已经拥有的东西给你一些想法,当你不断重新考虑你的模型,修复那些有问题的东西,泡沫,冲洗,重复.
它并不需要做很多工作,事实上,我在编写代码时遇到的一些最令人满意的时刻就是当我能够做一个整洁的重构时,它将以前可怕的混乱留下了更好的形状,去掉了很多难以理解的代码,并用更少的代码行代替更容易理解的东西,并为我的下一个添加开辟了一条道路,而不是另一个“zomg我不需要我再次触摸那个代码吗?“时刻.
祝你好运,以下是我所谈论的事情的名义指南;第一位更详细,因为主事件类是更重要的概念之一,然后我尝试给出一个名义上的类概述以及它们如何交互.我相信我可以花更多的时间在这上面,但此时我只会说:问我是否有问题,我会尽我所能给你一个好的答案:)
代码中的想法
哦,还有一点需要注意的是,如果你有多个线程,我根本没有处理复杂性.如果你这样做,有些东西从简单到错综复杂,但这是另一种练习.
内容总结
以上是互联网集市为您收集整理的c# – 如何为简单游戏布局解耦类结构?全部内容,希望文章能够帮你解决c# – 如何为简单游戏布局解耦类结构?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。