找回密码
 点一下
楼主: Renee

好久没办了~~那么综合与系统区第N届官方活动——位面消隐技术~~

[复制链接]
发表于 2008-9-20 00:40:02 | 显示全部楼层
不是很清楚什么意思,是不是不同的玩家看到不同的场景?
随便做了个
玩家一看到的是由步兵组成的“Player 1”,和地精商店,玩家2看到的是由火枪组成的“Player 2”和地精研究所

异世界.w3x

25 KB, 下载次数: 34

回复

使用道具 举报

 楼主| 发表于 2008-9-20 00:52:23 | 显示全部楼层
希望大家在上传自己的演示之前最好先确认一下~~会不会造成不同步而断线~~像18楼就完全不合格~~
回复

使用道具 举报

发表于 2008-9-20 03:14:18 | 显示全部楼层
难道是利用本地玩家

不同玩家 显示的 场景各不相同 ......


似乎有点理解意思
回复

使用道具 举报

发表于 2008-9-20 20:05:35 | 显示全部楼层
是要多个玩家 同一时刻显示的不一样?

还是同时存在n多位面 位面之间可以随时切换?
回复

使用道具 举报

发表于 2008-9-20 22:34:35 | 显示全部楼层
看了半天。。。看似简单。其实。。。

在war3架构下
随游戏进程,异步显示单位建筑and同步玩家不断线and多位面不干扰。。。
在同一地点给每个人不同的世界。天那。。。

怎么异步?怎么互不干扰?。。。

。。。。。。
回复

使用道具 举报

发表于 2008-9-21 12:36:39 | 显示全部楼层
如果战役可以联机就行了
也就是联机可以切图
回复

使用道具 举报

发表于 2008-9-21 13:45:52 | 显示全部楼层
= =晕   我随便想的技能被弄成题目发出来了


我的本意是把这个做成单体技能
中了该技能的人只能看到隐身单位
而无法看到没隐身的单位


而其他没中这个技能还是和平常一样
回复

使用道具 举报

发表于 2008-9-21 14:16:38 | 显示全部楼层
于是ls的问题被提升到了一个新的高度………………
回复

使用道具 举报

发表于 2008-9-21 14:17:56 | 显示全部楼层
  [s:166]

头晕中,话说,活动什么时候结束,我看看来不来的及
回复

使用道具 举报

发表于 2008-9-21 14:38:16 | 显示全部楼层
引用第27楼zhuzeitou于2008-09-21 14:16发表的  :
于是ls的问题被提升到了一个新的高度………………


- -  貌似我设计和想出的技能都可以给BZ当问题- -
被无数人说我设计的技能复杂不好实现的说- -
回复

使用道具 举报

发表于 2008-9-22 12:22:39 | 显示全部楼层
用于地图的技能是无须多复杂的,做演示的话要多复杂就该多复杂。
回复

使用道具 举报

发表于 2008-9-22 12:51:13 | 显示全部楼层
那就从组队来做  
让完成任务的玩家转了势力 与没有完成任务的玩家属于不同势力  
这样使用隐身应该会看不到吧  但是敌方单位的隐身就有点那个。。。
只是提些 意见  我等结果。。。
回复

使用道具 举报

发表于 2008-9-24 03:39:23 | 显示全部楼层

简单的位面消隐演示

简单的位面消隐演示~~

此演示限制较多,但是如若发挥你的创造力,可以达到N位面共存~~

这里只给出2位面的演示,或者说仅仅是提供一种方法

位面1
0001.JPG

位面2
0002.JPG

test.w3x

28 KB, 下载次数: 43

回复

使用道具 举报

发表于 2008-9-24 15:51:16 | 显示全部楼层
路过.
貌似只马甲的比较好.````
回复

使用道具 举报

发表于 2008-9-24 17:21:30 | 显示全部楼层
感觉对碰撞的处理有些巧妙呢,比较难办的还是影子啊
回复

使用道具 举报

发表于 2008-9-24 19:52:14 | 显示全部楼层
好吧。。等待结果。。
回复

使用道具 举报

发表于 2008-9-24 20:00:20 | 显示全部楼层
稍微做了点调整~~~附件更新鸟
回复

使用道具 举报

发表于 2008-9-27 16:05:39 | 显示全部楼层
来不及做出演示了,发出我的草稿。
[codes=jass]
理论,如果我的猜想和叙述有错误,请帮忙指出。

我把位面技术理解为动态世界的技术。按条件(游戏进程)改变游戏中的各种元素。

其实我觉得,在War3架构下,地图中的基本元素(单位,物品,技能,魔法效果,可破坏物和地形装饰物,地形类型,声音)应该是同步的显示的,全局的,怎么可能异步实现?
但我仍愿意尝试看是否能够做到。
--------------------------------
位面技术的核心应该是:
如何动态隐藏、替换地图中的各种元素?
地图中的元素有:单位,物品,技能,魔法效果,可破坏物和地形装饰物,地形类型,声音。
位面切换时,这些元素应该完全或部分隐藏(删除),而且互不干扰。
也可以移动这些元素到指定地点,但这貌似也属于使用“2个世界”的方法?
-------------------------------
我的想法:
在地图玩家只有1个或者地图中玩家游戏进程一致的条件下,位面技术(其实该叫隐藏技术)是可以实现的。而地图多玩家且游戏进程不一致条件下,位面技术不可能,即使实现也可能不稳定(在War3现有架构下)。
---------------------------------------------------------
下面我举3个例子来印证这个想法。             ↓
---------------------------------------------------------
例1:(地图单玩家时)【可实现】
有一幅地图,并且有player一个玩家,player有英雄A。
如何实现:当player进入地图时显示夏天的景色,30秒后周围的环境变成了秋天?
--------------------------------
//夏天景色包含的元素(卖雪糕的商人一个[单位],商店一座[建筑单位],洛丹伦夏树木若干[可破坏物],一个水槽[装饰物],长满草地土地一片[地形纹理],被丢弃的刀一把[物品])
//秋天景色包含的元素(戴草帽的商人一个,生命之泉一个,秋天树木若干,一个秋天的装饰物,秋天的泥地,一件衣服)
---------------------------------------------------------------------------------------------------------------------------------------------------------------
例2:(地图多玩家但游戏进程一致时)【可实现】
有一幅地图,并且有player1,player2二个玩家,二个玩家的开始点一样。英雄A为player1所有,英雄B为player2所有。当2个玩家进入地图开始游戏时显示夏天的景色。
如何实现:当2个玩家都完成某任务时,地图显示秋天的景色?
(夏秋的元素见上)
---------------------------------------------------------------------------------------------------------------------------------------
例3:(地图多玩家且游戏进程不一致)【我不能实现】
有一幅地图,并且有player1,player2二个玩家,二个玩家的开始点一样。英雄A为player1所有,英雄B为player2所有。
如何实现:当player1进入的游戏时候显示夏天,player2进入的游戏时候显示秋天?30秒后,player1眼前的景色变成了秋天;40秒后,而player2眼前的景色变成了夏天?
注意:玩家的开始点相同
---------------------------------------------------------------------------------------------------------------------------------------
实现的方法概述:
单位,物品,可破坏物,地形类型的改变或者隐藏可以套用一些现成的函数,再结合一些特殊的条件(如单位接近某地图元素,如单位完成了某任务,如游戏时间改变)很容易达到所谓的位面技术的要求。
一些地形装饰物我采用将单位模型改成地形装饰物然后用隐藏单位的办法隐藏。

而技能和魔法效果怎么办?即如何使A位面单位使用的技能效果不被B位面的玩家单位看到,并且不影响B位面的任何单位?
技能互不影响可以用联盟状态。而不同位面技能不可见,怎么办?我没想到办法。。。。如果你知道请指教我:[email protected]
==================================
例1和例2的是一样的。其实例1和例2不叫位面技术。叫隐藏技术差不多。主要是如何实现例3。例3是真正的位面技术。我不能完成。如果你实现了请指教我:[email protected]
但例1例2还是具备实用性的,重复利用同一区域创建不同的游戏环境,可以节约游戏资源(根据条件删除不需要的地图元素),也能带给玩家新鲜的感觉,让游戏玩法更加丰富。但不恰当的设置可能导致地形混乱。
======================================================================================
下面是一些具体实现前2个例子的过程:          ↓
------------------------------------------------------------------------------------------------------------------------------------------
设有目标单位A(unit A)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
//初始化A单位(某区域内锁定视角,碰撞关闭。)(其实该采用更改通行状态的方法更精确的控制碰撞)
function SetInit takes unit Tunit,boolean show returns nothing
local rect unitrec=RectFromCenterSizeBJ(GetUnitLoc(Tunit),100.00, 100.00)
call SetCameraBoundsToRectForPlayerBJ(GetOwningPlayer(Tunit),unitrec)
call SetUnitPathing(Tunit,show)
endfunction
///call SetInit(A,false)
----------------------------------------------------------------
隐藏地图中元素的一些具体方法:
1~如何切换单位
切换(隐藏)单位可能的方法:
1~添加乌鸦形态后,改变单位飞行高度为5000。(先在编辑器设置A单位阴影图象为无,在同一点这个办法比ShowUnit好。。。)
2~使用钻地,隐身,虚无状态,妖术,吞噬等技能
3~使用ShowUnit函数(设置单位隐藏/显示状态,主要适用于碰撞体积较大的建筑单位)
//////////////////////////////////////////////////////////////////
function HideShowUnit takes unit A ,integer mode returns nothing
//mode=1 hide,mode!=1 show
if mode==1 then
if (IsUnitType(A,UNIT_TYPE_STRUCTURE) == true) then
call ShowUnit(A,false)
else
call UnitAddAbility(A,'Amrf')
call SetUnitFlyHeight(A,5000.00,0.00)
endif
else
if (IsUnitType(A,UNIT_TYPE_STRUCTURE) == true) then
call ShowUnit(A,true)
else
call UnitRemoveAbility(A,'Amrf')
call SetUnitFlyHeight(A,0,0.00)
endif
endif
call EnableSelect(true,true)
call EnableDragSelect(true,true)
call EnablePreSelect(true,true)
call EnableMinimapFilterButtons(false,false)
call UnitSetUsesAltIcon(A,true)
endfunction
----------------------------
2~如何切换物品
设置物品显示/隐藏
native SetItemVisible takes item whichItem, boolean show returns nothing
----------------------------
3~如何切换可破坏物
方法:
1~隐藏或者杀死可破坏物,删除可破坏物,然后创建之。
---------------------------
切换地形装饰物
2~将单位的模型更换为地形装饰物
然后使用隐藏单位的方法隐藏之
call HideShowUnit()
---------------
4~如何切换技能魔法效果(即不同位面技能相互不影响,且不可见)
如果你实现了请指教我:[email protected]
---------------
5~如何切换地形类型
SetTerrainType函数
native SetTerrainType takes real x, real y, integer terrainType, integer variation, integer area, integer shape returns nothing
改变坐标(x,y)处的地形纹理为terrainType,使用样式variation,范围area,形状shape
======================================================================================
隐藏的条件怎么设置?
例:
设有:单位A,单位B,单位C
地图中每个单位,物品,可破坏物,地形装饰物
(可破坏物和地形装饰物为单位)
设为:
D1~~Dn为单位
W1~~Wn为物品
K1~~Kn为可破坏

有条件CA,CB,CC
⒈当CA时,D1~~Dn显示,W1~~Wn隐藏,K1~~Kn显示
当CB时,W1~~Wn显示。。。。。。。。。。。。
当CC时,。。。。。。。。。。。。。。。。。

那么当A接近B一定距离时,且满足条件CA时,设置A关闭碰撞,B隐藏。
当A远离B时,且满足条件CA时,设置A开启碰撞,B显示。
(由于锁定了视角,远离一定距离之后B是不可能被A单位看到的)
比如CA=完成任务A时,B=某NPC
意思就是:当A接近某NPC时,又完成了A任务时,那么隐藏某NPC(按照我的方法,某NPC实际上已经在5000米的高空!)
于是,动态世界单机版或者多玩家同进程版就简单完成了。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
上面说得太锤子了,连我自己都没看懂。要想懂得整点实际的测试一下吧。
-----------------------------------------------------------------------------------------------------------------------------------
可能用到的函数说明:
CreateNUnitsAtLoc//创建单位(面向角度)
CreateCorpseLocBJ//创建尸体
KillUnit//杀死单位
RemoveUnit//删除单位
ExplodeUnitBJ//爆炸单位
ShowUnit//显示/隐藏单位
SetUnitColor//改变队伍颜色
UnitShareVision//共享视野 (采用视野为0的办法?)
SetUnitPosition//移动单位(立即)(指定坐标) (2个世界的办法)
SetUnitX//设置单位X坐标
SetUnitPathing//设置碰撞开关
UnitRemoveBuffNT//删除指定魔法效果(或许在位面切换时防技能干扰有用?)
UnitAddAbility//为单位添加技能
UnitRemoveAbility//删除技能
UnitAddType//添加类别(为单位添加某种位面切换时需要的状态)
UnitPoolAddUnitType//添加单位类型
DestroyUnitPool//删除单位池(批量隐藏?)
CreateUbersplatBJ//创建一个地面纹理变化在某某
SetTerrainType//改变地形类型(指定坐标)
SetTerrainPathable//设置地形通行状态(指定坐标) (和单位碰撞开关配合用)
CreateDestructableLoc//创建可破坏物
KillDestructable//杀死可破坏物
ShowDestructable//显示/隐藏(隐藏的可破坏物不被显示,但仍影响通行和视线)
AttachSoundToUnitBJ//将3D音效绑定到单位(位面声音切换?)
SetSoundDistanceCutoff//声音的截断距离(同上)
SetItemVisible//显示/隐藏物品
EnableSelect//允许/禁用选择(A位面的单位应该禁止被B位面的单位选择吧?)
EnableDragSelect//允许/禁用框选
EnablePreSelect//允许/禁用预选(禁止位面错乱,生命槽物体信息)
UnitSetUsesAltIcon//关闭某单位小地图标志
EnableMinimapFilterButtons//是否禁用联盟颜色按钮和中立生物显示按钮
SetPlayerAlliance//设置联盟状态(或许这个可以用于位面切换时使技能不影响另一位面)

[/codes]
回复

使用道具 举报

发表于 2008-9-27 22:24:58 | 显示全部楼层
  [s:186]

于是活动泡汤了么

都被扔到这里了~~~
回复

使用道具 举报

发表于 2008-9-30 19:05:59 | 显示全部楼层
唉唉,原来打算做个小品剧,本来对场景设计方面就没什么信心,果然是缺少动量吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-9-29 19:17 , Processed in 0.170744 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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