再谈 (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解释程序后,才编的(不过还是挺弱的),你可多学学脚本语言
(这些只是我的片面之言,但我觉得对大家是有用的,如果你有更好的想法可以和我联系,我们继续探讨。但请不要用语言攻击我。谢谢大家看完我的拙念。)
...全文
169 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
  • 打赏
  • 举报
回复
我也同意你的看法,一个游戏创意是她的灵魂、算法是她的大脑、数据结构是她的骨骼游戏程序员是她的肌肉、美工是她的皮肤。
所以。我认为玩家不可能和一个没有灵魂(当然是好的灵魂了),没有大脑、体弱多病的对家玩吧。
如果你有好的游戏创意,能和我聊聊吗?我们共同构造美好的未来。
Object-Oriented
Analysis and Design with Applications Third Edition

Authors:

Grady Booch
Robert A. Maksimchuk
Michael W. Engle
Bobbi J. Young, Ph.D.
Jim Conallen
Kelli A. Houston


About the Authors:

Grady Booch is recognized internationally for his innovative work on software architecture, software engineering, and modeling. He has been with IBM Rational as its Chief Scientist since Rational’s founding in 1981. Grady was named an IBM Fellow in March 2003.
Grady is one of the original developers of the Unified Modeling Language (UML) and was also one of the original developers of several of Rational’s products. Grady has served as architect and architectural mentor for numerous complex software-intensive projects around the world.
Grady is the author of six best-selling books, including the UML Users Guide and the seminal Object-Oriented Analysis with Applications. Grady has published several hundred technical articles on software engineering, including papers published in the early 1980s that originated the term and practice of object-oriented design. He has lectured and consulted worldwide.
Grady is a member of the Association for Computing Machinery (ACM), the Institute of Electrical and Electronics Engineers (IEEE), the American Association for the Advancement of Science (AAAS), and Computer Professionals for Social Responsibility (CPSR). He is an IBM Fellow, an ACM Fellow, a World Technology Network Fellow, and a Software Development Forum Visionary.
Grady was a founding board member of the Agile Alliance, the Hillside Group, and the Worldwide Institute of Software Architects. He also serves on the advisory board of Northface University.
Grady received his bachelor of science from the United States Air Force Academy in 1977 and his master of science in electrical engineering from the University of California at Santa Barbara in 1979.
Grady lives with his wife and cats in Colorado. His interests include reading, traveling, singing, and playing the harp.

16,472

社区成员

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

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

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