游戏开发论坛

 找回密码
 立即注册
搜索
查看: 10620|回复: 41

开发游戏引擎(client)很难么?

[复制链接]

29

主题

405

帖子

405

积分

中级会员

Rank: 3Rank: 3

积分
405
发表于 2007-10-6 21:04:00 | 显示全部楼层 |阅读模式
我知道这个问题很弱智,也很没意义。
我说说我的感觉吧,也许很肤浅,我自己也只用过一款引擎做过游戏,也还没有熟悉很多引擎。但我觉得大体上也许差别不大。
最近我自己也在写,进了一家新公司,连个框架还没有。于是自己写了2个星期,把程序主框架写好了,整个引擎,采用plugin的思想,各个模块都是独立的,可以单独拿出来编译连接,也可以从别的地方copy来一些代码,只要把接口抽象出来,做成引擎认识的dll,就可以被引擎调用了,各个模块之间自然没有一点的耦合性。整个引擎由一个内核主框架+其他非常多的服务类组成。
服务类,有,IO,OS,physics,AI,Graphics,GUI,Script.NetWork..组成。由于IO,OS,Script规模比较小,所以就是一般的类,只用做一层的接口封装,就可以直接被引擎调用了,但其他几个模块自身就非常的复杂,都可以单独作为一个引擎来看代,所以他们几个都有自身的内核系统,和服务类,所以多了一层。
在引擎里,我是不允许有耦合性的,即使是服务类,他们和内核的关系,也只是单项的非常弱的耦合而已,就是说引擎认识这些服务类,但这些服务类不认识引擎。如果一个模块用到其他模块的功能,那就不能算是引擎的东西了,就是具体逻辑了。我这么处理的目的,就是希望引擎和逻辑分离,功能和功能分离,主框架,和子系统的内核才是最重要的,这样的好处太多了,我就不说了。


如果某个服务类需要另一个服务类的功能做支持的话,我不会通过引擎来调用另一个服务类去帮助,而是另外实现一套。比如,我做了脚本系统,但别人写3D图形引擎的时候,也需要脚本的功能,这个我就不会给他提供引擎脚本的功能,需要他另外自己做个图形的脚本系统,虽然这样会增叫一点工作量,但是如果我让引擎的脚本做的话,以后这个图形引擎就会依赖这个引擎了,不能独立出来了。
我甚至连头文件依赖都去掉了,各个模块都可以有自己的头文件,主要是数据定义,变量定义的头文件,这样以后就不会出现增加一个变量类型,或者只是修改一下宏定义,而编译一大片的事情了,最多只是重编这一个模块。而且也增加了局部模块的可移植性

程序从流程上看,是一个主线程,它专门处理主框架里的事情比如FrameMove,FrameRender,外加一些辅助线程。因为我觉得主框架用多线程很难保证逻辑和渲染的一致性,所以只是把服务提出来,可以用其他线程实现,比如加载资源,设置定时触发器,AI(只所以把AI作成服务,是因为我觉得决定性的AI肯定是服务器做了,不是很重要的AI,比如角色宠物的AI,可以单独用线程来做,如果你的机器是多核,或比较强的,那么这个宠物AI可能就高点,就像显卡一样,如果显卡强渲染效果好点一样,这些都是锦上添花的事情,不是决定性的事情)

再先解释一下什么是服务。我设计了两类单件,一类是服务类,一类是游戏的逻辑实体类。
可惜我不会用插图来表示,说的不好理解请凑活吧。
服务类是引擎的组成部分,而逻辑实体类是游戏的组成部分,比如场景就是一个逻辑实体类,角色系统就是一个逻辑实体,主界面也是,他们都是游戏的一部分而不是引擎的,因为他们都是由客户端程序自己的代码和其他很多服务共同组成的。两者都是做成dll,导入并动态创建。引擎主框架的执行也是分层的,不管是服务,还是逻辑实体都可以动态的添加和删除。
这样的话,大家就都可以独立的开发,逻辑程序也就看不到引擎的代码了,引擎程序也不需要逻辑的代码,只需要有相应的dll就可以跑起来。
。。。。。。
现在还有很多难题,要说服其他程序完全按我的意图来,可是会增加一些工作量,也会推翻以前的一些东西,而且我还是新来的只有半个月多点。更郁闷的是这个月底就要做一个东西出来给别人看了。真是人在江湖身不由己。。。。

15

主题

202

帖子

207

积分

中级会员

Rank: 3Rank: 3

积分
207
QQ
发表于 2007-10-6 21:13:00 | 显示全部楼层

Re:开发游戏引擎(client)很难么?

完全没有耦合性...这卫星..

29

主题

405

帖子

405

积分

中级会员

Rank: 3Rank: 3

积分
405
 楼主| 发表于 2007-10-6 23:08:00 | 显示全部楼层

Re:开发游戏引擎(client)很难么?

我是绝对没有那个实力完全做好的,不过这不妨碍我探索,和尝试。
一步一步来,我只希望现在做的事情能够保证1+1=2,而不是1+1<2,各个模块做成独立,好处是自己写的可以更好的移植,其实也有另外层意思,就是别人写的东西也容易加入。自己做不了没关系,现在外面有很多现成的东西了,也乘这个机会多看看,看看能否为我所用。

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2007-10-6 23:25:00 | 显示全部楼层

Re:开发游戏引擎(client)很难么?

如果做成完全的松耦合,逻辑和框架分离
1+1=2

1+1+1绝对>3

ps:模块多多,摊子铺大了,个把人很难胜任啊。
难以置信,半个月的时间能做那么多的事情?

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2007-10-6 23:45:00 | 显示全部楼层

Re:开发游戏引擎(client)很难么?

引擎技术并不难,但难在整合和实用性上。

整合后的实用性必须经过真实的游戏产品试用。在前几年你会发现每隔一二个游戏,你的引擎就会大变样。

但做为一款MMORPG引擎,想让人试用是很难的。所以请先拿自己开刀,或是努力去拉单子。

29

主题

405

帖子

405

积分

中级会员

Rank: 3Rank: 3

积分
405
 楼主| 发表于 2007-10-7 12:07:00 | 显示全部楼层

Re: Re:开发游戏引擎(client)很难么?

tonykee: Re:开发游戏引擎(client)很难么?

如果做成完全的松耦合,逻辑和框架分离
1+1=2

1+1+1绝对>3

ps:模块多多,摊子铺大了,个把人很难胜任啊。
难以置信,半个月的时间能做那么多的事情?

哪里,还只是写了一点.主要是主框架的东西.

2

主题

79

帖子

85

积分

注册会员

Rank: 2

积分
85
QQ
发表于 2007-10-7 19:01:00 | 显示全部楼层

Re: 开发游戏引擎(client)很难么?


    按你的所讲,好似不难,但是你掉失了最基本的东西:性能!!

    游戏引擎难不是难在框架上,无论服务器和客户端,首先要考虑性能,在性能的基础上再优化框架和接口。

    就性能来说,已经是一个好高的难度,然后结合框架合理和易用性,你说难不?

    用一般的系统软件的方式来做游戏系统,结果是可以看到的:可能开始时的效果不错,当把所有的功能都放上去,发现突然动不了,然后改,最后只能放弃。

   

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
发表于 2007-10-7 19:08:00 | 显示全部楼层

Re:开发游戏引擎(client)很难么?

在好奇心的驱使下,请教一下6377,“网络操作系统”是什么东东?Network Operating System?

29

主题

405

帖子

405

积分

中级会员

Rank: 3Rank: 3

积分
405
 楼主| 发表于 2007-10-7 21:05:00 | 显示全部楼层

Re: Re: 开发游戏引擎(client)很难么?

kissorange: Re: 开发游戏引擎(client)很难么?


    按你的所讲,好似不难,但是你掉失了最基本的东西:性能!!

    游戏引擎难不是难在框架上,无论...


哦,让你误会了,真不好意思。
因为我觉得这个不会是问题所以就不提了。
我不知道你做过游戏没,效率肯定不会是最早考虑的问题,一般做好后再优化的。
不过以后加上物理和AI,可能问题更多,不过我最喜欢的就是挑战效率的极限。
你说架构不难,这点我同意,底层架构不难,不过需要对程序有深刻的认识和丰富的经验才做的好。我觉得游戏的高层架构可能更复杂点。
我以前大学里是学算法的,搞ACM的,对于framework一点也不懂,工作了一年才了解了一些design pattern.设计模式这东西,没接触过应用过,怎么看书都没用,接触过,自己用过后,一看结构图就明白了。
说多了,不过我可以肯定告诉你,性能效率肯定不会是问题的。除非你用错了方法。

0

主题

769

帖子

1052

积分

金牌会员

Rank: 6Rank: 6

积分
1052
发表于 2007-10-7 21:13:00 | 显示全部楼层

Re:开发游戏引擎(client)很难么?

先把功能实现再进行性能上的优化
饭要一口一口的吃
不可能一步登天的
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-20 15:11

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表