再谈 (SanTa)的 WIN95游戏编程疑问

Spadger 2000-04-30 12:14:00
关于游戏多线程编程。我先举两个例子。第一个就是Microsoft的帝国时代,第一代他就开了一个线程,所以如果造人多时,最先表现的是鼠标有滞后感。所以我觉得游戏要有2-3个线程,一个管显示的,一个管计算的(还可在开一个管用户输入的),但有一点线程之间的互斥区做好。否则你的游戏还不如就一个线程呢,还有它在一代时管理好象都不用链表。如果用了。为什么一个兵工厂才能生产一个兵呢?(愚蠢)直到二代才支持可生产多个兵,但总人数还有限制。但这也有它的好处,第一如果可有无数兵的话(用户的内存足够的话),就要用到链表,这样生产出一个兵的话,就加一个链表元素,死一个兵时就删除一个元素,但我们要考虑到用户玩游戏可能时间很长,那样的话,链表经常动态分配内存时就会造成内存的碎片话。所以,你要有一套很好的管理内存的API(当然是自己编了,如果你全部信仰Microsoft的话,你的游戏不会有发展的),天子传奇就是个例子,玩一会游戏就会因支付不起内存而崩溃。
还有个多线程的例子就是工人物语了。他好像开了6-7个线程,一个管画面,一个管用户输入,一个管兵的,一个管建造房屋,一个管。。(数不清了),不过我也挺羡慕他们的,这么多线程互斥区这么管理的(太天才了吧)。
关于开多线程的例子,你还可以比较一下法老王(速度不受影响)和凯萨大帝(到后来明显有滞后感)。
我在随口谈谈关于,路径问题。我们游戏中的精灵类中有封装一个路径搜索类(比如:A*算法,即Graph-search算法的扩展)。它生成一个有项树(最短路径算法)。这会对你有很大帮助的。这样每个精灵就都会好好走路了。大多数游戏都用了这个算法。
关于消息的轮换机制。你要优化就行了。比如:我们具法老王这个游戏的例子,(你学过操作系统吧,看看它是怎么轮换线程的),在法老王中,你可以把兵的优先调成最高,农民其次。。。。在如小麦生长动画的优先级调成最低。这样。在消息轮换不过来时(即:你不能保证25帧/秒。实际游戏要比这个值高)。在这种情况下。你还管小麦生长不生长干什么。(玩家不会那么细致吧)。等我们的轮换机制比较悠闲了,在生长一下小麦
不就行了吗???还有用户看不到的,地方就不用那么细致了(他又看不到)。这样,我们的游戏差不多都是很简单的数操作。在加上玩家告速的CPU,我们的游戏想慢还不容易呢
最后,一句话。你最好学学Intel MMX技术,它在处理你游戏的alpha混合时,和图像剪贴,处理,拷贝等等时会快许多倍。(到时候你就要想了。我的游戏怎么让它慢些呢?开玩笑的)
我当时学写游戏时,先狂玩了20多种不同类型的游戏(太贪玩了,有半年多吧),但是我总结了很多经验,上边我也说了一些)。如果你框架打好了。编程就不是问题了。好好干吧。记着你的游戏编出来了,先寄我个demo版什么的。
如果,还有什么问题。我们可以继续探讨。我的游戏还用了一些其他技术。比如:敌人的AI算法。我是看了Basic解释程序后,才编的(不过还是挺弱的),你可多学学脚本语言
(这些只是我的片面之言,但我觉得对大家是有用的,如果你有更好的想法可以和我联系,我们继续探讨。但请不要用语言攻击我。谢谢大家看完我的拙念。)
...全文
160 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
packager 2000-05-02
  • 打赏
  • 举报
回复
再补充一点,我很赞同你说的“多学学脚本语言”,而且我认为学会编写脚本语言解释器是第一步,还应该学会如何把脚本语言编译成“中间语言”,让解释器解释执行。因为这样可以加快运行的速度,另外中间语言是binary格式,也不容易被人修改。
packager 2000-05-02
  • 打赏
  • 举报
回复
我个人认为,作为程序员,着重考虑的应该是程序技术。不过程序技术和游戏玩法在
某种程度上来说也是紧密联系相关的,两者应该是相辅相成的。当我研究出一个高明的程序技术,我就会想怎样把这个技术用于增强游戏的可玩性。当我想出一个有趣的玩法,我
也会去想程序技术该如何实现。
顺便请教Spadger,你是怎么知道“工人物语了。他好像开了6-7个线程,一个管画面,一个管用户输入,一个管兵的,一个管建造房屋,一个管。。(数不清了)”,请问是用什么软件工具查出来的或是直接跟踪debug出来的,还是只是凭你的感觉,认为可能是这样?我认为还是先确定以后,再“羡慕他们的,这么多线程互斥区这么管理的((太天才了吧)。”也不迟。我个人的看法是,并不一定是要用线程来解决,因为在早期的Dos时代,开发类似《工人物语》那样的游戏(我忘了《工人物语一代》是不是Dos下的游戏),可没有用到线程。
dtwstm 2000-05-01
  • 打赏
  • 举报
回复
创意固然重要,但我以为高明的技术十分关键。事实上每当我学到新的东西,我便自然想
到新的游戏模式。我觉得程序员要努力学习新的知识,并且多实践。
接着是要有好的美工,这一点也非常重要!
mxp 2000-04-30
  • 打赏
  • 举报
回复
good!我同意你的观点,不过游戏创意非常重要。
Spadger 2000-04-30
  • 打赏
  • 举报
回复
我也同意你的看法,一个游戏创意是她的灵魂、算法是她的大脑、数据结构是她的骨骼游戏程序员是她的肌肉、美工是她的皮肤。
所以。我认为玩家不可能和一个没有灵魂(当然是好的灵魂了),没有大脑、体弱多病的对家玩吧。
如果你有好的游戏创意,能和我聊聊吗?我们共同构造美好的未来。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧