shawind 发表于 2006-12-29 17:36:40

[讨论]关于游戏循环的时间的问题的疑问

一般来说游戏的刷新率是在每秒30帧以上。也就是说,一次游戏循环只有1/30秒的时间。
而游戏的流程处理一般都是放在游戏循环里面,至少像hge等游戏引擎都是这么做的。
不少游戏教程里面也是这么教的。
但是,如果把游戏的AI处理做得复杂了,像光荣的《三国志》之类的大型slg,AI计算通常都是非常复杂,且消耗时间的。
1/30秒的时间来不及计算出结果,这个时候怎么办?

Advance 发表于 2006-12-29 18:14:57

分块运算,或者多线程

shawind 发表于 2006-12-29 18:38:43

恩,我想到的是多线程或c/s构架。
感觉多线程比较好点,特别是以后的cpu都是多核的,有优势。但是在线程同步上,不知道该如何处理。
做成c/s构架,有利于把单机游戏变成联机游戏。但是在消耗资源上,无疑会多了很多。

最后,请问你说的“分块运算”,具体是怎么来解决问题的?能说明一下么?

Advance 发表于 2006-12-29 21:20:44

线程同步的功能通常由操作系统或应用程序框架提供,简单的同步(单向信号)不需要原子操作,你可以用自定义变量来完成这种任务(比方说,主线程读,子线程写)。
C/S构架?怎么会想到那个地方去的,这已经是框架层、而不是实现层上的问题了。
分块运算就是将作业分为多个小块,每次完成一个小块后计算时间花费,如果占用了过多的时间就转去执行另外一个作业,这样在时间片的划分方面可以不依赖于操作系统的实现。

shawind 发表于 2006-12-29 22:32:10

谢谢。原来是这样的分步来做。
不过总感觉这个办法很费劲的样子,特别是要计算时间,总有一种在做不必要工作的错觉。

还是用线程的办法吧。
又仔细想了一下,觉得就slg游戏ai这类计算来说,线程即使不同步似乎也没有什么关系。
用多个线程共享一段内存的办法,似乎比较省事。

游戏用c/s结构来做,似乎也能解决这个问题,所以就想到了。
我的陋习,为了目的不择手段。

lw 发表于 2006-12-30 22:01:54

多线程看起来美,但是不实用……偶始终坚持除非在完成以后效率不佳的情况下,经过分析以后再去用多线程!!

最近工作不顺线程死锁问题已经头大了…………谁让偶开8个线程都管不过来了

AVC对这方面知道的多,可能有其自身的经验……偶反正绝对不赞成先用多线程开发……应该先用单线程才是……
至于CS……偶不懂就不发表意见了- -

shawind 发表于 2006-12-30 22:39:19

按说两个线程就够用了,只把游戏的ai单独算。
目前想做游戏是一个3d a.rpg,60帧是必要的。
ai也比较复杂,想实现一个人工智能对话,估计有50多个npc,可能一次要计算几万到几十万组数据,一个游戏循环多半放不下。
cs构架的,我看到有的网游,好像是天堂2吧,为控制npc单独做了一个服务器程序。
所以我就瞎想,能不能使用这样的设计办法。

lw 发表于 2006-12-31 20:18:15

完全可以的……只是经验要足够就是~

shawind 发表于 2006-12-31 21:37:26

l2,ro,wow都有开源的服务器模拟器,照着猫画老虎就行了。
反正是自己做了玩,失败了也不怕

coolpay64 发表于 2007-1-4 20:28:16

某C也是考慮多線程的說,
同步方面問題不會太大
而且對某C說線程結構看起來不錯
但是C/S是什麼?有請大大指教
页: [1] 2
查看完整版本: [讨论]关于游戏循环的时间的问题的疑问