游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: 星河工作室

底层脚本、高层脚本和微线程

[复制链接]

3

主题

186

帖子

190

积分

注册会员

Rank: 2

积分
190
发表于 2005-11-2 18:47:00 | 显示全部楼层

Re:底层脚本、高层脚本和微线程

不错,顶一个

0

主题

6

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2005-11-5 01:53:00 | 显示全部楼层

Re:底层脚本、高层脚本和微线程

微线程表现不错,但是如果一个微线程程序逻辑非常复杂,需要耗费大量的CPU时间,会不会独占了整个CPU的资源?特别是用微线程代替多线程,在游戏服务器中运行大量角色自动的检测工作。

6

主题

42

帖子

47

积分

注册会员

Rank: 2

积分
47
发表于 2005-11-7 20:28:00 | 显示全部楼层

Re:底层脚本、高层脚本和微线程

为什么不使用windows 的纤程,堆栈占用的空间是可以调整的,而且windows提供的纤程支持函数非常全面。

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-11-7 21:44:00 | 显示全部楼层

Re:底层脚本、高层脚本和微线程

fiber的粒度还是太大了,不如microthread干净的呵。

6

主题

42

帖子

47

积分

注册会员

Rank: 2

积分
47
发表于 2005-11-9 13:16:00 | 显示全部楼层

Re:底层脚本、高层脚本和微线程

我认为fibre和lz的microthread实现方法是一致的,至少原理是一致的。

8

主题

34

帖子

44

积分

注册会员

Rank: 2

积分
44
 楼主| 发表于 2005-11-15 16:42:00 | 显示全部楼层

Re: 底层脚本、高层脚本和微线程

底层脚本、高层脚本和微线程(五)

五:脚本与任务系统实现

诸如类似RPG类型的游戏,存在很多npc执行某些任务,玩家也可以从NPC哪里领取任务。考虑灵活性,这些任务经常需要动态增加或者更新,以保持游戏的新鲜感,增加游戏的可完性,或者调整状态的平衡。对于一个任务,涉及两部分内容,一部分是逻辑描述,采用脚本实现;另一部分是可能需要的一些内部参数,标识任务目前执行的状态,这些状态参数与任务的具体执行相关。对这两部分功能的支持,是创建一个游戏任务系统的基石,譬如如果增加一种新的任务比较麻烦,那么肯定影响游戏以后的运营和发展。
对于任务的脚本,有几种方式,在前面一节已经讨论过。
对于任务的内部参数,存储在脚本上下文环境中不是很合适,对于一个任务,可能分配给很多个玩家,每个玩家都需要记录不同的任务执行状态,也即内部参数。如果在脚本上下文中记录,一者容易重复,再者如果很多变量,则存储增加,执行效率受一定影响。其实一个任务类似于C++中的类的概念,该任务分配给某个玩家之后,相当于创建了该任务的一个实例。示例:
Task1{ Var1, Var2, …,Script }
玩家-Task1::Instance1{ 0,12,..,}
游戏采用了脚本,保证脚本修改的时候,不需要重新编译;但是对于完整的任务系统实现,还需要能够灵活定义任务需要的变量,这些变量也可以动态修改,不需要重新编译。在脚本中,可以灵活设置和访问这些变量。实现该方法不是很容易,需要费一些周折,特别是网游需要进行客户端和服务器端同步。
SRP平台V2.1版本已经实现了该功能,使用SRP Debug,可以动态创建一个类Task1,增加类的属性,Var1,Var2,…,每个属性的类型都可以设置(整型,浮点型,字符串等),可以设置类的命名脚本”Script”。
如果将该任务分配给一个玩家,则创建Task1类的一个实例Instance1,该实例挂接在玩家对象的下面,由SRP平台自动分配该类定义的属性的内存空间。在网游环境下,SRP平台自动实现了玩家和服务器之间的更新,当Task1类创建之后,自动同步到所有玩家。
在任务脚本中,可以对实例属性进行修改,下面是一个实例:

ServiceID = "24a9701d-aab8-478b-8831-a397711bd401"
ServiceContext = SRPObj.GetServiceContext( ServiceID )
Object = SRPObj.GetObjectByName (ServiceContext,"Instance1")
SRPObj.ChangeObject (ServiceContext,Object,"Var1",0,36)  //  将任务的变量1数值,修改为36。
    SRP实现的脚本系统非常灵活,为构造强大、灵活、完善的任务系统提供了坚实的基础。

15

主题

109

帖子

109

积分

注册会员

Rank: 2

积分
109
QQ
发表于 2005-11-21 22:12:00 | 显示全部楼层

Re:底层脚本、高层脚本和微线程

脚本其实我们直接用lua或者python进行重新封装就很不错呀!不需要自己去写什么的,对于成熟的东西能够用就直接用比较好!

楼主的精神赞一个!!

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2005-11-21 22:52:00 | 显示全部楼层

Re:底层脚本、高层脚本和微线程

一门明快的脚本语言+一门强大的标记语言,够用了,没必要自己造的。。。

2

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2005-11-29 20:58:00 | 显示全部楼层

Re:底层脚本、高层脚本和微线程

SRP V2.1版本已经上传至网站:http://www.srplab.com.有兴趣的朋友可以到网站下载版本和开发文档.另有
图形2D Mud例子,该服务来自网上的一个Demo的移植,可从http://www.srplab.com/gmexample.asp下载
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-22 19:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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