游戏开发论坛

 找回密码
 立即注册
搜索
123
返回列表 发新帖
楼主: PassByYou

游戏之家,自己做过游戏的好朋友(做小游戏也算好朋友

 关闭 [复制链接]

0

主题

59

帖子

59

积分

注册会员

Rank: 2

积分
59
发表于 2007-7-14 18:59:00 | 显示全部楼层

Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:游戏之家,自己做

Miu.C: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re:游戏之家,自己做过游戏的好朋友(做小游戏也算好朋...


哦,介绍了,大家来看你不就等于看他了吗?你不会真的以为有人看不出你的马甲吧~~~


对呀! 游戏之家不是个好东西

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2007-7-14 20:44:00 | 显示全部楼层

Re:游戏之家,自己做过游戏的好朋友(做小游戏也算好朋

怎么又变成。。。我觉得游戏之家评论的很专心,姑且不论专不专业。

197

主题

1041

帖子

1104

积分

金牌会员

Rank: 6Rank: 6

积分
1104
QQ
 楼主| 发表于 2007-7-15 00:58:00 | 显示全部楼层

Re: Re: 游戏之家,自己做过游戏的好朋友(做小游戏也算

######(这个讲的是3D骨骼动画模型所具备的功能,模型文件是单个,但是他包含了很多角色的动作)
VB6 + TV3D的实例:
npc.Load "MODEL\name.mdl"                      '角色的模型
Pos.X = 100: Pos.Z = 100                       '角色行列坐标
npc.SetRotation 0, 90, 0                       '角色角度
Pos.Y = Land.GetHeight(Pos.X, Pos.Z)           '判断高低地形
npc.SetPosition BarneyPos.X, Pos.Y, Pos.Z      '角色摄像机上的坐标
npc.SetScale 1, 1, 1                           '角色尺寸
npc.SetAnimationID 1                           '角色动画编号
npc.PlayAnimation 30                           '角色动画速度
npc.SetMaterial 1                              '顶点光源

######(这个脚本是操作由很多单张的连续动画图片构成的动画片,就是帧动画)

举例:爆炸动画脚本:VC6
TEXTURES 9
Animations\Expl\expl1.jpg > ExplA1
Animations\Expl\expl2.jpg > ExplA2
Animations\Expl\expl3.jpg > ExplA3
Animations\Expl\expl4.jpg > ExplA4
Animations\Expl\expl5.jpg > ExplA5
Animations\Expl\expl6.jpg > ExplA6
Animations\Expl\expl7.jpg > ExplA7
Animations\Expl\expl8.jpg > ExplA8
Animations\Expl\expl9.jpg > ExplA9
//
// Explosion2 effect
//
SHADER Explosion2
{
   Layer map1
   {   
       //
       // Texture Animation :
       // Syntax : anim [FramePerSecond] [Tex1] [Tex2] ... [TexN] [0]
       //
         anim 10 Explb1 Explb2 Explb3 Explb4 Explb5 Explb6 Explb7 Explb8 Explb9 [0]
blendFunc ONE ONE
         depthFunc NOWRITE
    }
}

######(数据驱动适合做角色动画,脚本驱动适合做效果动画,如果开发一个游戏两种驱动都要使用)

######(早期星际用的是脚本驱动,魔兽用的是数据驱动,我的解释是2D游戏里用脚本驱动的多,3D游戏里数据驱动多)

######(这个触发器相当于游戏里的指针)
举例1:
MAP = 0        '空城
MAP = 1        '城市属于魏国
MAP = 2        '城市属于吴国
MAP = 3        '城市属于蜀国

举例2:
RES1=1(刀),RES1=2(枪)
RES2=1(大还丹),RES2=2(草药)
RES3=1(记录),RES3=2(读进度)

PSMOD=0        '不操作事件
PSMOD=1        '选择武器
PSMOD=2        '选择物品
PSMOD=3        '存读进度
IF PSMOD=1 AND RES1=1 THEN  拿刀
IF PSMOD=2 AND RES2=2 THEN  使用草药
IF PSMOD=3 AND RES3=1 THEN  记录游戏

举例3:
AI=INT(RND * 1000)
ENEMY = INT(RND * 3 + 1)
IF AI=1 AND ENEMY=1 THEN     '士兵
IF AI=2 AND ENEMY=2 THEN     '班长
IF AI=3 AND ENEMY=3 THEN     '连长

######(你可以把角色的各种属性每一个做成一个类或模块来调用,但他们之间的关系要用公用变量连接好,数据处理部分还是比较多。)

######(配置文本比较适合地图编辑器, 机能,物品采用变量比较好)


动画部分你的做法太程序化了。在配置和使用时,除了程序以外没有不喊头大。推荐在动画部分做法:程序事先做好,第三方designer直接拿配置文件或则工具来驱动动画。

实际中我的做法:脚本驱动+数据驱动。脚本部分比较复杂,大多人不会用,我为此专门做了一个builder工具。见下图。
初衷是避免涉及到复杂脚本。直接使用数据驱动。使用数据在实战中比脚本驱动来的有用。



在2D爆炸过程中,我指3D方面的制作,很多地方用的爆炸效果都2D爆炸。读你的shader和驱动代码,发现每帧爆炸都是一张纹理。用单张纹理切换坐标优于你不断切换纹理。可参看q3,hl2,及tv3d论坛中很多demo。

我的触发器原理,是这样的。

触发器引擎。
{
   在此触发引擎中所包含的若干个触发器事件接口。
}

数模1
{  
   注册触发事件到触发器引擎。
}

数模2
{  
   注册触发事件到触发器引擎。
}

角色创建函数
{
    读取角色模型。
    激活触发器引擎。(这时并不在这里直接指定自定义数模)
}

纵观总体,这样干简单实现了即插即用的灵活逻辑系统。

另外,回头我可以让你看看我的核心规则的实现代码。
我在高层逻辑层根本没写直接性的规则分辨之类的代码,规则判断部分全部放在局部处理。在中央部分只是几个接口。

总的来说,这种程序扩展较容易,可修改性较强。弊病是在开发过程中,会产生了一定的那种工程化特有的冗余代码,比如在几百个触发器的核心规则里面,调来去调去重复触发性比较大。


197

主题

1041

帖子

1104

积分

金牌会员

Rank: 6Rank: 6

积分
1104
QQ
 楼主| 发表于 2007-7-15 01:31:00 | 显示全部楼层

Re:游戏之家,自己做过游戏的好朋友(做小游戏也算好朋

批注我收下了。

你的大意如下:
抱一种尝试性讨论的态度,从你的个人角度阐述感想。另一方面,你认为我的做法可行。只是你更坚持自己的方法。没必要为这个问题大家争得昏天黑地。有你的批注我就已经满足了哈。
我会save as to引擎发展史。

######(这个讲的是3D骨骼动画模型所具备的功能,模型文件是单个,但是他包含了很多角色的动作)
VB6 + TV3D的实例:
npc.Load "MODEL\name.mdl"                      '角色的模型
Pos.X = 100: Pos.Z = 100                       '角色行列坐标
npc.SetRotation 0, 90, 0                       '角色角度
Pos.Y = Land.GetHeight(Pos.X, Pos.Z)           '判断高低地形
npc.SetPosition BarneyPos.X, Pos.Y, Pos.Z      '角色摄像机上的坐标
npc.SetScale 1, 1, 1                           '角色尺寸
npc.SetAnimationID 1                           '角色动画编号
npc.PlayAnimation 30                           '角色动画速度
npc.SetMaterial 1                              '顶点光源

######(这个脚本是操作由很多单张的连续动画图片构成的动画片,就是帧动画)

举例:爆炸动画脚本:VC6
TEXTURES 9
Animations\Expl\expl1.jpg > ExplA1
Animations\Expl\expl2.jpg > ExplA2
Animations\Expl\expl3.jpg > ExplA3
Animations\Expl\expl4.jpg > ExplA4
Animations\Expl\expl5.jpg > ExplA5
Animations\Expl\expl6.jpg > ExplA6
Animations\Expl\expl7.jpg > ExplA7
Animations\Expl\expl8.jpg > ExplA8
Animations\Expl\expl9.jpg > ExplA9
//
// Explosion2 effect
//
SHADER Explosion2
{
   Layer map1
   {   
       //
       // Texture Animation :
       // Syntax : anim [FramePerSecond] [Tex1] [Tex2] ... [TexN] [0]
       //
         anim 10 Explb1 Explb2 Explb3 Explb4 Explb5 Explb6 Explb7 Explb8 Explb9 [0]
blendFunc ONE ONE
         depthFunc NOWRITE
    }
}

######(数据驱动适合做角色动画,脚本驱动适合做效果动画,如果开发一个游戏两种驱动都要使用)

######(早期星际用的是脚本驱动,魔兽用的是数据驱动,我的解释是2D游戏里用脚本驱动的多,3D游戏里数据驱动多)

######(这个触发器相当于游戏里的指针)
举例1:
MAP = 0        '空城
MAP = 1        '城市属于魏国
MAP = 2        '城市属于吴国
MAP = 3        '城市属于蜀国

举例2:
RES1=1(刀),RES1=2(枪)
RES2=1(大还丹),RES2=2(草药)
RES3=1(记录),RES3=2(读进度)

PSMOD=0        '不操作事件
PSMOD=1        '选择武器
PSMOD=2        '选择物品
PSMOD=3        '存读进度
IF PSMOD=1 AND RES1=1 THEN  拿刀
IF PSMOD=2 AND RES2=2 THEN  使用草药
IF PSMOD=3 AND RES3=1 THEN  记录游戏

举例3:
AI=INT(RND * 1000)
ENEMY = INT(RND * 3 + 1)
IF AI=1 AND ENEMY=1 THEN     '士兵
IF AI=2 AND ENEMY=2 THEN     '班长
IF AI=3 AND ENEMY=3 THEN     '连长

######(你可以把角色的各种属性每一个做成一个类或模块来调用,但他们之间的关系要用公用变量连接好,数据处理部分还是比较多。)

######(配置文本比较适合地图编辑器, 机能,物品采用变量比较好)




另外,我昨晚到今天,在做一个wiki站,我写wiki上那些php代码是个菜鸟,相当的头大。
你,还有你们,很够意思。小伙子可以!

270

主题

6442

帖子

6446

积分

论坛元老

Rank: 8Rank: 8

积分
6446
发表于 2007-7-15 08:41:00 | 显示全部楼层

Re: Re:游戏之家,自己做过游戏的好朋友(做小游戏也算

PassByYou: Re:游戏之家,自己做过游戏的好朋友(做小游戏也算好朋友)帮我写一个系统分析的批注(见内容)

批注我收下了。

你的大意如下:
抱一种尝试性讨论的态度,从你的个人角度阐述感想。另一方面,你认为我...


我的理论都是从实践中得来的,我自己也比较个性化, 所以请原谅。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-25 20:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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