惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Project Zero
Project Zero
Engineering at Meta
Engineering at Meta
Microsoft Azure Blog
Microsoft Azure Blog
小众软件
小众软件
T
The Blog of Author Tim Ferriss
S
SegmentFault 最新的问题
量子位
V
Visual Studio Blog
F
Full Disclosure
博客园 - 叶小钗
Recent Announcements
Recent Announcements
G
Google Developers Blog
博客园 - Franky
F
Fortinet All Blogs
有赞技术团队
有赞技术团队
B
Blog
aimingoo的专栏
aimingoo的专栏
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
N
Netflix TechBlog - Medium
L
LINUX DO - 最新话题
S
Security @ Cisco Blogs
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
Cloudbric
Cloudbric
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Last Week in AI
Last Week in AI
SecWiki News
SecWiki News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
云风的 BLOG
云风的 BLOG
阮一峰的网络日志
阮一峰的网络日志
N
News and Events Feed by Topic
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Microsoft Security Blog
Microsoft Security Blog
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
Schneier on Security
Schneier on Security
Webroot Blog
Webroot Blog
T
Troy Hunt's Blog
P
Proofpoint News Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Martin Fowler
Martin Fowler
O
OpenAI News
Hacker News: Ask HN
Hacker News: Ask HN
S
Secure Thoughts
P
Privacy International News Feed
I
InfoQ
C
Cyber Attacks, Cyber Crime and Cyber Security

博客园 - Cloudage

测试:单、多帧自动拼块地图及视口卷动 测试了测试了,silverlight做游戏的可能性 IMH 这次的卡渲还算过得去 严重警告!关于D3D的渲染表面 今天开始研究Tiny 小改一下 这是一个关键……可是这个门槛我上不去了 恭贺本人加入KidFansChannel特别创作组 序列化 用Sprite做Billboard “应用程序LoaderLock”异常的引发和解决 漏图 玩家通过自主绘制法术阵来自定义法术的初步实现的思考 优化……优化…… Billboard的旋转以及让物体面向一个点的一种方法 卡通渲染原理 同层物体间的遮挡处理
游戏系统的结构是怎样的?
Cloudage · 2006-02-25 · via 博客园 - Cloudage

我想讨论的是RTS/RPG/SLG系统。这种系统有如下特点:
1、场景角色多,且具有丰富的行为能力;场景也比较复杂,有各种行为机关
2、用户操作界面较为复杂,需要用户介入的地方比较多
3、要支持多用户(我把AI也视为用户)
4、必须流畅,即需要脱离windows消息循环,独自运行。(不同于AVG等更为休闲的形式)

由此,我作出如下设计:
1、要有一个场景控制器,监视和控制场景和其中的角色活动:
为了存放监视结果,我需要一个监视队列。为了存放控制任务,我需要一个控制队列。

2、要向用户提供操作界面。向人类用户提供直观界面,向AI用户提供逻辑界面。
界面的作用是向用户反映场景中的信息,并将用户的输入反馈给场景控制器。那么界面就需要连接到监视队列和控制队列。
逻辑界面则仅仅需要为AI用户映射队列的操作方法;而为了提供人机界面,我不仅需要为人类用户映射队列的操作方法,还需要图形引擎和声效引擎来呈现监视队列的内容,需要输入管理引擎来接收人类用户的输入信息(并把它们放进控制队列)。

3、人类用户肯定是拥有智能的,所以人机方向到此为止。另一个方向,我需要编写AI来操纵NPC。这些AI可以基于脚本(如工作角色,比如商铺老板之类),也可以基于逻辑组(上至敌军司令下至拦路好汉)。AI是程序,就必须要能够调试。所以AI应该有调试器和行为记录器。

4、对游戏场景最直接的操控者是场景控制器,只有它有能力进行暂停、存盘、读档、退出、新开等操作。所以这些系统级的控制也要放入控制队列中,由它来处理。同时,它应该具备一个调节器,来监控它自身的运行,以便于调试。


这样一个系统,它的启动顺序是怎样的呢?
首先,场景调试器启动场景控制器;然后AI调试器启动各自的AI,同时用户启动自己的人机界面。所有界面尝试连接场景控制器,最后场景控制器开始监视和控制。此时主动权掌握在场景控制器手里——它甚至有权拒绝用户的退出要求,当然这样一来我就得去调试它了——所有的用户必须向控制器提出要求才能得到结果。这样一来权限管理就会显得非常方便,比如任何一个AI要求关机,控制器都不会去理它。
如果这是一个网络游戏,那自然AI在一台服务器上,场景调试器在一台服务器上,服务器先开机然后用户再连线。如果这是单机游戏,则可以用一个引导程序先完成场景和AI的启动,然后再启动人机界面。