虚幻4引擎下载是不是和魔兽地图编辑器一样啊有区别吗,还有这两个工具需要编程吗?

DotA是只使用了war3的地图编辑器制作出来的吗?还是自己也要写代码?war3提供了相应的API吗?
按时间排序
留个名,最近把13w行的dotaai读了一遍,也就那么回事
魔兽地图DotA的代码全部使用了魔兽3地图编辑器所开放的api(加入额外的API需要安装诸如JAPI一类的补丁,并且需要平台支持)。美术和声音资源主要使用魔兽自带素材,也有少量导入的素材(集成在8M中)。魔兽地图文件本身是使用暴雪早期的MPQ压缩技术的资源压缩包,可以用MPQ查看器打开,和wow(6.0以前)的资源查看器几乎完全兼容。但DotA的地图文件不能用地图编辑器(World Editor)打开,因为地图编辑器的图形界面的触发编辑器需要读取额外的文件(记得是w3t还是w3g)。而保存地图时,地图编辑器会把这个触发编辑器里的内容编译为游戏本身的脚本代码,即jass(*.j文件),并在游戏运行时使用,因此这个触发编辑器的对应文件其实不是地图运行的必需品。值得一提的是jass是“Just Another Script System”的缩写。所有Jass可用的API都在魔兽3资源里的common.j(简称CJ)文件中列出。除此之外,暴雪还编写了blizzard.j(简称BJ)基于CJ提供的API,把对战初始化及一些常用的函数(比如组选取)整合起来。由于不少BJ函数本身存在泄漏问题(使用新建句柄而不回收),甚至存在正确性问题(比如组中随机选取多个对象的函数存在代码遗漏),因此多数we使用者都使用WE MOD来做图,导入修正过的BJ覆盖魔兽自带的文件等。国内这一块做的最好的,应该就是YDWE了。理论上只使用地图编辑器是可以做出DotA这样的地图的。但许多Jass里的功能难以在触发编辑器中实现,移植性和维护成本也不同,所以多数资深作者还是选用了Jass为主导的脚本来制作地图。YDWE的开发初衷之一,就是允许使用者在完全不会jass的条件下也能实现原本jass才能实现的内容。除此之外,由于触发编辑器本身可以在GUI里插入或者转化为自定义代码,因此你也完全可以在we里实现纯jass代码的制作。DotA虽然不能用we打开,但这不代表它就完全不是用we做的了。制作者完全可以用we所见即所得的编辑方式来更改地形地貌和物体属性(也可能是直接更改的slk文件),然后把编辑器生成的对应文件(比如w3e地形文件)直接提取出放入地图中,并撰写相关脚本。DotA的脚本中的变量与函数命名也经过了特殊处理,命名都是一些随机字母数字组合,毫无可读性,应该是经过命名替换处理的。DotA为什么要这么做让玩家手中的地图文件难以打开和编辑呢?这当然是为了避免玩家篡改地图,甚至利用某些版本的漏洞制作互通图。当然,由于魔兽地图本身的限制,可读性再差的代码也能被资深地图开发者所理解,但这些“加密”手段多多少少提升了破解的门槛,提升了破解的成本,对魔兽地图的反改图起到了一定的作用。
我这么说吧,你新建一张图(它自带原始技能,原始物品,原始科技树),他的大小微乎其微,也就几百k,然后你稍微写点触发,自定义点技能,就能接近1m,我曾经自定义了200多个技能,50左右物品,触发简单,就一个物品合成,地图文件就成了3m左右,然后进行加密,优化,去掉重复语句,它的大小小了近一半。这些都是铺垫,我想说的是什么呢,dota一张图7-10m左右,当然肯定是优化加密后,所以我当时就想,他得有多少语句才能有这么大的体积,后来想想他的技能并不是原技能简单的修改,物品也是那么的完美,也就不难解释了。所以,dota是张神图。我曾经拿到过icefrog改之前的一个上古版本的未加密的dota,它的大小在3m左右,我小心的打开它,才发现它是多么的精妙,虽然方式的版本英雄少,但这并不影响它是一张神图,几乎每个技能都是触发语句写的,并不是简单的新建-自定义技能,它的物品合成也是那么的精妙,我无耻的承认后来我写图有的编码也是借鉴此图的。后来转手蛙神手后,这张图迸发出强大的活力,因为它里面的技能,触发变的更为精确,物品合成变得更为方便(比如身上满六格也能买卷轴合成)。综上,dota绝对是一张神图,并且不是简单的一个人就能搞定的,icefrog也是个团队,并不是简单的一个人,这张图绝对付出了制作者的心血。
DotA这个地图,除了几位少数的一些技能,基本上都被替换成了IF自己写的技能方法了。至于原因是因为魔兽原声技能缺陷实在太多,而且十分简单。比如早期穿刺技能不仅会重置单位面朝方向,还会让单位在滞空的时候成为无敌状态。于是现在的穿刺技能实际是靠模拟来实现的。所谓模拟就是用代码来重新实现这个技能的效果,利用各种马甲,触发还有jass几乎可以模拟出一切想要的技能效果,于是现在DOTA里各种各样的仅能都一一脱出了原生技能的外衣(早期的DOTA基本就是对战里各个机能的数值修改,从6.60开始,各种各样的有趣的技能就层出不穷了)最为夸张的就是DOTA当中的物品合成机制了,魔兽平台本身的限制是当物品栏满的时候是不可以拾取物品的,这也就造成了合成装备变得十分的麻烦,if利用了某个游戏原生功能实现了更为友好的物品合成系统(具体记不太清了,不敢乱答,欢迎补充),并且重写了所有物品的合成,共享,使用机制,可谓劳模…不过频繁的用触发器还有创造删除马甲有时候运行效率不高,比如某个版本水人第一次释放E技能(变体攻击)游戏就会卡一下,早期版本玩家首选卡尔之后预读技能非常卡等等,现在都已经修复了。DOTA地图占用空间很大的一部分是loading图,把那个压缩压缩其实还能塞下很多代码,但是魔兽这引擎确实太老了,有好的技能构思即使用模拟,触发器强行实现了,各种bug还有超低的运行效率同样会毁掉游戏体验,所以现在版本停留在6.83也就不难理解了。
只有非常简单的判定和少数触发需要自己写,其它的都非常非常简单,你要是想了解,最好的方式是用帝国时代2的地图编辑器来体会一下。dota地图难度不在地图,而是在极度有限的资源里实现高品质判定和角色及物品平衡性调试。很多国产的rpg都死在平衡性上的。
3留个名,前rpg地图改图者找找老软件,晚点来答题---------------------------首先提一下地图工具的问题很多杀软和游戏平台扫描到改图工具会当作作弊为了账号不被罚分请不要开着平台改图请不要使用改图登陆平台请不要散播有bug的改图请不要恶意使用改图工具请不要诋毁原作者请不要在改图上删除原作者名或者假自己名字所有war3原始安装文件版权属于暴雪公司所有rpg地图所有权属于原作者请在阅读以下内容前对dota和计算机常识有基本了解------------------------------推荐的工具是魔兽改图一条龙,搜关键词百度很多这是基本 的界面我们选择第一个软件HWM--------------------------------------------------HWM中找到在war3目录maps下面download下面的dota地图以之前11更新的旧地图6.83-mu1为例打开地图以后首先修复文件头再选择分析文件得到所有的地图内文件--------------------------------------------------------------------------------------------------------------------------------------------得到分析文件以后可以使用“筛选文件”来筛选一些我们需要的东西其中blp和mdx为贴图,对游戏本质内容影响不大,可惜忽略slk为数据文件,所有基本数据都储存其中内容如字面,比如itemdata就是物品unitblance就是平衡性不详细解释我们仅仅打开一个看看这是itemdata,我们用excel打开这是itemdata,我们用excel打开最上方就能看到各个列的名称下面是不同物品的数值比如drop是控制是否不能丢弃比如盾圣剑等等但是这个slk表中我们看到的诸如是否能丢弃(drop),是否能叠加(stockmax)比如眼吃树,物品的贴图位置(file)还有物品冷却时间对应的id(cooldownid)等等,并没有看到物品具体属性,此时看表有一列ablitydata,对应的是另一个ablitydada.slk,那么相关修改再去这个slk中找,介于这几个slk关联非常复杂,不细说,有兴趣的自己挖掘-------------------------------------------------slk在普通地图中使用非常普遍,但大多数rpg地图已经不再靠修改slk实现游戏特色---------------------------------------------------再看看hwm解压出来的txt类文件大多数名字和slk命名方式一样,使用起来并不复杂但其中最有趣的是war3mapmisc.txt这是一个杂项控制解压这个txt打开看看有什么[Misc]HeroFactorXP=100,100,100,100,100GlobalExperience=0BuildingKillsGiveExp=1MaxUnitSpeed=522.0MinUnitSpeed=100.0TradingIncLarge=0TradingIncSmall=0AttackNotifyRange=1000.0DamageBonusMagic=1.25,0.75,2.00,0.35,1.00,0.75,0.05,1.00DamageBonusNormal=1.00,1.50,1.25,0.70,1.00,0.75,0.05,1.00DamageBonusPierce=2.00,0.75,0.75,0.35,1.00,0.50,0.05,1.50DamageBonusSiege=1.00,0.50,1.25,1.50,1.00,0.75,0.05,1.00BoneDecayTime=12.0DrainUsesEtheralBonus=1AgiAttackSpeedBonus=0.01AgiDefenseBase=-1.0AgiDefenseBonus=0.14StrRegenBonus=0.03StrHitPointBonus=19.0IntManaBonus=13.0IntRegenBonus=0.04AgiMoveBonus=0.0HeroAwakenLifeFactor=1.0HeroAwakenManaFactor=1.0MaxHeroLevel=25HeroExpRange=0.0ReviveBaseFactor=0.3ReviveLevelFactor=0.0ReviveMaxFactor=0.0ReviveMaxTimeFactor=4.5ReviveTimeFactor=0.1GrantNormalXPFormulaC=6.0EtherealHealBonus=1.4FrostAttackSpeedDecrease=0.2FrostMoveSpeedDecrease=0.3DayLength=300.0MaxUnitLevel=25MagicImmunesResistLeech=0EtherealDamageBonus=1.40,1.00,1.00,1.40,1.00,1.40,1.00GuardDistance=600.0MaxGuardDistance=600.0GuardReturnTime=3.0MoveSpeedBonusesStack=0CanDeactivateAvatar=0HeroReviveManaFactor=1.0HeroAwakenManaStart=0HeroReviveManaStart=0DamageBonusChaos=1.00,1.00,1.00,0.40,1.00,1.00,1.00,1.00UpkeepUsage=,,,FollowRange=0.0MagicImmunesResistDamage=1FoggedAttackRevealRadius=200.0FlyingHeroesBestowAuras=1PawnItemRange=150.0DisplayBuildingStatus=1PolymorphedUnitsBestowAuras=1HeroFactorXP=100,100,100,100,100GlobalExperience=0BuildingKillsGiveExp=1 以上控制经验增长修改这几个数字可以让升级更快MaxUnitSpeed=522.0最高移动速度,522这也是-ms能看到的玩家最快速度(无论相位对剑风杖等怎样叠加),但白牛显然超过这个速度,白牛c技能的实现是另一种方式,另外500以上移动速度在imba中还是一个成就DamageBonusMagic=1.25,0.75,2.00,0.35,1.00,0.75,0.05,1.00DamageBonusNormal=1.00,1.50,1.25,0.70,1.00,0.75,0.05,1.00DamageBonusPierce=2.00,0.75,0.75,0.35,1.00,0.50,0.05,1.50DamageBonusSiege=1.00,0.50,1.25,1.50,1.00,0.75,0.05,1.00这个是控制伤害的,但dota中玩家可控制的都是英雄攻击英雄甲所以基本不具有参考意义,但在普通对战地图中非常有用,为什么攻城单位打建筑伤害高,为什么穿刺打英雄伤害低,都是这些参数AgiAttackSpeedBonus=0.01AgiDefenseBase=-1.0AgiDefenseBonus=0.14敏捷加成,每点敏捷加1%攻速,太低了,即便小黑三级大90敏捷也加90%而已,这个参数是所有累计I以后一次计算,对一般物理输出英雄,堆敏捷显然不如直接堆攻速基础护甲为-1,每点点敏捷加0.14护甲,所以7点敏捷加一点护甲StrRegenBonus=0.03StrHitPointBonus=19.0IntManaBonus=13.0IntRegenBonus=0.04AgiMoveBonus=0.0每点力量0.03点回血,30点力量加一点回血,这也是够慢的了,每点力量19点血,每点智力13点蓝,每点智力0.04回蓝,敏捷不增加移动速度NeedHeroXP=200,500,900,00,00,00,,,,,,升级经验,另外小兵经验随着游戏时间也是增加的---------------------------------------------------------------------下面是重头戏,大家所说的jass语言,这是暴雪使用的一种简单的编程语言,和暴雪的游戏一样,易于上手,难于精通,我们在分析文件中筛选文件选择筛选文件类型 和搜索slk或者txt一样,只要搜索
文件就可以搜到,有且仅有一个j 文件,dota目前的j文件已经有2.8mb,解压这个地图并且可以使用一条龙软件中的c文本编辑软件,这里我使用的是emedit 也是一个非常好用的文本编辑软件打开的j文件大约有十万行的代码!!!我们不求甚解仅仅想大致看看的话,举个栗子!!!function DB2 takes nothing returns nothinglocal string DC2=StringCase(GetEventPlayerChatString(),false)local boolean R4O=DC2=="-random"or DC2=="-random int"or DC2=="-random agi"or DC2=="-random str"local boolean DD2=DC2=="-repick"local boolean DE2=DC2=="-gameinfo"local boolean DF2=SubString(DC2,0,5)=="-swap"local boolean DG2=DC2=="-recreate"local boolean DH2=DC2=="-unstuck"local boolean DZ2=DC2=="-matchup"or DC2=="-ma"local boolean DV2=DC2=="-movespeed"or DC2=="-ms"local boolean DW2=DC2=="-msa"local boolean DX2=DC2=="-disablehelp"local boolean DY2=DC2=="-enablehelp"local boolean DJ2=DC2=="-creepstats"or DC2=="-cs"local boolean DK2=DC2=="-cson"or DC2=="-csoff"local boolean DL2=DC2=="-hidemsg"local boolean DM2=DC2=="-showmsg"local boolean DN2=DC2=="-weather snow"or DC2=="-weather rain"or DC2=="-weather off"or DC2=="-weather random"or DC2=="-weather wind"or DC2=="-weather moonlight"local boolean DS2=DC2=="-showdeny"or DC2=="-hidedeny"local boolean DT2=DC2=="-denyinfo"or DC2=="-di"local boolean DR2=DC2=="-don"or DC2=="-deathon"or DC2=="-doff"or DC2=="-deathoff"local boolean DP2=SubString(DC2,0,5)=="-roll"and DC2!="-rollhero"local boolean DQ2=DC2=="-hhn"or DC2=="-hideheronames"local boolean DU2=DC2=="-mute"local boolean E02=DC2=="-afk"local boolean EI2=SubString(DC2,0,8)=="-kickafk"local boolean E12=DC2=="-apm"local boolean EO2=DC2=="-clear"local boolean BPO=DC2=="-courier"local boolean AH=DC2=="-ah"local boolean E22=DC2=="-invokelist"or DC2=="-il"local boolean E32=DC2=="-list"local boolean E42=DC2=="-rolloff"local boolean E52=DC2=="-rollon"local boolean E62=SubString(DC2,0,6)=="-music"local boolean E72=SubString(DC2,0,6)=="-water"local boolean E82=SubString(DC2,0,6)=="-quote"local boolean E92=SubString(DC2,0,3)=="-cm"local boolean EA2=SubString(DC2,0,9)=="-itemswap"local boolean EB2=DC2=="-bonus"local boolean EC2=DC2=="-rollhero"or DC2=="-rh"local boolean ED2=SubString(DC2,0,9)=="-rickroll"local boolean NoSwitch=DC2=="-noswitch"local boolean EE2=SubString(DC2,0,7)=="-switch"or DC2=="-ok"or DC2=="-no"local boolean Terrain=DC2=="-terrain"or DC2=="-terrain default"or DC2=="-terrain snow"local boolean EF2=DC2=="-tips"local boolean EG2=DC2=="-ii"or DC2=="-iteminfo"local boolean EH2=DC2=="-center"or DC2=="-centeroff"or DC2=="-c"or DC2=="-co"local boolean EZ2=DC2=="-unlock"local boolean EV2=DC2=="-disableselection"or DC2=="-ds"local boolean EW2=DC2=="-enableselection"or DC2=="-es"local boolean EX2=DC2=="-sleep"local boolean EY2=DC2=="-calm"local boolean R4I=DC2=="-st"local boolean EJ2=DC2=="-nosanta"call PMI("EK2",R4O)call PMI("EL2",DD2)call PMI("EM2",DE2)call PMI("EN2",DF2)call PMI("ES2",DG2)call PMI("ET2",DH2)call PMI("ER2",DZ2)call PMI("EP2",DV2)call PMI("EQ2",DW2)call PMI("EU2",DX2)call PMI("F02",DY2)call PMI("FI2",DJ2)call PMI("F12",DK2)call PMI("FO2",DL2)call PMI("F22",DM2)call PMI("F32",DN2)call PMI("F42",DS2)call PMI("F52",DT2)call PMI("F62",DR2)call PMI("F72",DP2)call PMI("F82",DQ2)call PMI("F92",DU2)call PMI("FA2",E02)call PMI("FB2",EI2)call PMI("FC2",E12)call PMI("FD2",EO2)call PMI("FE2",BPO)call PMI("FF2",AH)call PMI("FG2",E22)call PMI("FH2",E32)call PMI("FZ2",E42)call PMI("FV2",E52)call PMI("FW2",E62)call PMI("FY2",E72)call PMI("FJ2",E82)call PMI("FK2",E92)call PMI("FL2",EA2)call PMI("FM2",EB2)call PMI("FN2",EC2)call PMI("FS2",ED2)call PMI("FT2",EE2)call PMI("FR2",EG2)call PMI("FP2",EF2)call PMI("FQ2",EH2)call PMI("FU2",EZ2)call PMI("G02",EV2)call PMI("GI2",EW2)call PMI("G12",EX2)call PMI("GO2",R4I)call PMI("G22",EY2)call PMI("G32",EJ2)endfunction这是一个function,所用是当玩家在聊天窗口打出以上字符时的过程其中最最常用就是
-random了 当玩家打出 -random 或者 -random int agi str 等命令会执行function EK2,那么这个EK2是做什么的呢?搜索function EK2function EK2 takes nothing returns nothinglocal player T4I=GetTriggerPlayer()local trigger tset L2=T4Iif G52()and F3[GetPlayerId(T4I)]==false thenset F3[GetPlayerId(T4I)]=truecall TFI(T4I)call DisplayTimedTextToPlayer(T4I,0,U2,10,GetObjectName())set t=CreateTrigger()call TriggerRegisterTimerEvent(t,6,false)call TriggerAddCondition(t,Condition(function G62))call SavePlayerHandle(LY,(GetHandleId(t)),(54),(T4I))call SaveStr(LY,(GetHandleId(t)),(146),(StringCase(GetEventPlayerChatString(),false)))endifset t=nullendfunction这里已经调用了大量的触发,如果不一一查找下去,我们已经看不懂了。只能看到添加了一个G62的触发 再来试试看看这G62是做什么的,搜索这个functionfunction G62 takes nothing returns booleanlocal trigger t=GetTriggeringTrigger()local integer S5I=GetHandleId(t)local player p=(LoadPlayerHandle(LY,(S5I),(54)))local string G72=(LoadStr(LY,(S5I),(146)))set L2=pif G52()thenset S0[GetPlayerId(p)]=trueif G72=="-random int"thencall RAI(p)call SetPlayerState(p,PLAYER_STATE_RESOURCE_GOLD,GetPlayerState(p,PLAYER_STATE_RESOURCE_GOLD)-100)elseif G72=="-random str"thencall REI(p)call SetPlayerState(p,PLAYER_STATE_RESOURCE_GOLD,GetPlayerState(p,PLAYER_STATE_RESOURCE_GOLD)-100)elseif G72=="-random agi"thencall RFI(p)call SetPlayerState(p,PLAYER_STATE_RESOURCE_GOLD,GetPlayerState(p,PLAYER_STATE_RESOURCE_GOLD)-100)elsecall SetPlayerState(p,PLAYER_STATE_RESOURCE_GOLD,GetPlayerState(p,PLAYER_STATE_RESOURCE_GOLD)-50)call RGI(p)endifelsecall DisplayTimedTextToPlayer(p,0,U2,10,GetObjectName())endifset t=nullset p=nullreturn falseendfunction这里又出现了RAI REI RGI RFI G52等几个触发,我们也不去管他了,只看不继续触发的内容if G72=="-random int"thencall RAI(p)call SetPlayerState(p,PLAYER_STATE_RESOURCE_GOLD,GetPlayerState(p,PLAYER_STATE_RESOURCE_GOLD)-100)elseif G72=="-random str"thencall REI(p)call SetPlayerState(p,PLAYER_STATE_RESOURCE_GOLD,GetPlayerState(p,PLAYER_STATE_RESOURCE_GOLD)-100)elseif G72=="-random agi"thencall RFI(p)call SetPlayerState(p,PLAYER_STATE_RESOURCE_GOLD,GetPlayerState(p,PLAYER_STATE_RESOURCE_GOLD)-100)elsecall SetPlayerState(p,PLAYER_STATE_RESOURCE_GOLD,GetPlayerState(p,PLAYER_STATE_RESOURCE_GOLD)-50)call RGI(p)endif这几个if语句还是很好理解的,根据这四个玩家输入的命令,分别扣掉玩家gold100或者50话说我第一次知道还可以仅随机力量或者智力敏捷英雄以上所有代码仅仅为了执行一个工作当玩家敲了-random 时扣除50块钱当然还执行了其他一些工作,不过还有其他的触发,我们已经没有一一深入下去了如果仅仅就这一段进行修改也是可以的比如我们将这里的50 改成0出门 就可以多一个树枝了,对于有些英雄,差距就是出门更早出一个大魔棒了再看一个ifif S0[GetPlayerId(Me)]==true and D0[GetPlayerId(Me)]==false and RZ0[GetPlayerId(Me)]==0 thenset RZ0[GetPlayerId(Me)]=1call SetPlayerState(Me,PLAYER_STATE_RESOURCE_GOLD,GetPlayerState(Me,PLAYER_STATE_RESOURCE_GOLD)-100)endifif S0[GetPlayerId(GH2)]==true and D0[GetPlayerId(GH2)]==false and RZ0[GetPlayerId(GH2)]==0 thenset RZ0[GetPlayerId(GH2)]=1call SetPlayerState(GH2,PLAYER_STATE_RESOURCE_GOLD,GetPlayerState(GH2,PLAYER_STATE_RESOURCE_GOLD)-100)endif这里可以通过修改实现-repick不花钱所以基本上可以说整个jass除了已经定义好的变量十万行代码里基本都是这些无数个function组成的因此有答主说jass是个面向触发的编辑器也是很有道理的一个简单的功能或者技能需要几十个上百个function实现在此向历代dota作者表示由衷的钦佩这里的栗子只解释了如何修改-random和-repick时减少的金钱,更复杂的修改技能等内容,需要大量时间摸索,本人经历有限就不描述了像mimiya这样能实现dota imba的修改的优秀改图者,是消耗了大量的时间精力的-------------------------------------------------------------本人并未修改或研究过任何版本的dota地图,仅以提供的工具解释修改地图的基本过程,修改的程度是极浅的本人并未完整学习过任何计算机编程语言,有专用词语使用上的错误,请诸位码农谅解本人认为在j语言的使用上,dota已经达到一个相当复杂的高度,针对题主的问题,我的直接答案是:仅仅使用自带的worldedit编辑器不可能实现dota,历代作者多年修改必定涉及到代码层,也就是j文件暴雪方面是否有提供给几位作者专门的api不得而知但仅仅worldedit编辑器的话,尽管在安装war3时的用户协议声明会提供技术支持,但是在每次运行世界编辑器时有一个直接的提示!暴雪是不提供任何技术支持的!是的,暴雪爸爸你最屌!
这问题是09问的吗
魔兽自带脚本jass多半都是用那个写的另外,如果题主对魔兽地图创作感兴趣,安利下载YDWE这个软件,其中的功能使你能在不会jass也能完成大部分程序
题主你可以稍微百度一下地图编辑器新手教学就知道了。
DOTA 的图没有使用任何奇怪的技术,代码是魔兽的脚本语言 JASS 写的。DOTA 这图很牛叉,几乎把所有的魔兽技能都用代码重制了,而且为了比如满物品栏合成这样的 feature,所有的物品都有若干个副本。
看到这个问题想到了我高中的岁月啊,像DotA这种显然是要自己写代码了,魔兽自己有一种语言叫做jass,是一种四不像语言。因为虽然理论上你可以在触发器里面完成所有工作但是触发器的效率远没有jass高
用war3地图编辑器开发Dota分为很多部分,单位属性技能属性等一般用物体编辑器,还有包括触发编辑器,声音编辑器,AI编辑器,地形编辑器等部分。回到题主的问题上,我把只要用编辑器理解为不用写代码,如果是开发类Dota地图的话,是有可能的,触发编辑器通过简单的图形化事件编程(event-condition-action)可以自动生成需要的代码,事实上大部分人都是这样开头的。回到Dota上,Dota作者冰蛙使用了编辑器提供的更高效的脚本语言jass,当然编辑器肯定要提供api的(jass语法类似vb,不过不是面向对象的),代码量超过了9W行,具体大小(指拆图出来的war3map.j文件)在2.7m左右(我拆的图是6.80版本的,包括定义的全局变量)
就是简单的脚本语言+所见即所得的编辑~不过里面的API很坑爹~原始API封装了就变成带有那个BI还是什么开头的API,带有那个啥字样的再封装就是Trigger效率极其低下,如果纯用trigger做 DOTA几乎随时崩,魔兽地图大小就只允许那么1,5M还是多少哦 忘了。然后一张地图的代码只存在了script.txt文件里 ,非常不利于协同开发和调试。里面是事件机制的,给单位注册事件。写代码一不注意就要memory leak!恶心!另外补充下 DOTA就 5K左右的代码~ ICE FROG自己写了一个引用计数的东西来管理内存,然后你能看到的就是一堆触发!可以总结成 :面向触发编程~
大部分可视内容是直接通过war3地图编辑器实现,一部分核心内容是代码实现,据说是C语言网上放出过一个解密版的DOTA地图可以研究一下
已有帐号?
无法登录?
社交帐号登录天极传媒:天极网全国分站
您现在的位置:
除了虚幻4还谁有 十大最牛游戏引擎
Yesky天极新闻
  【天极网IT新闻频道】游戏引擎就像是游戏的发动机,好的游戏引擎能够让游戏开发事半功倍。而对玩家们来说,游戏引擎能够带来最直观的感受就是游戏的画面和细节表现。从光影声效到场景细节,从画面触感到各种细腻体验,再到人物表情的捕捉,花草树木的美感等等。
  毫无疑问,从业界各类大作真正进入3D时代开始,一款成功的游戏引擎,就从诸多方面展现出了其对作品整体质量不可估量的影响。
  今天就为大家盘点一番:十大著名游戏引擎。
  10、RAGE Engine
  代表作:《GTA4》,《》
  作为资深游戏玩家,突然提到RAGE Engine,恐怕许多朋友显得不那么熟悉。
  不过,如果笔者提到“狂暴引擎”这个更加清晰的概念,相信知道的人就不少了。
  没错,狂暴引擎最著名的代表,就是《GTA4》和《荒野大镖客》这两部力作。
  RAGE引擎的扩展用途很多。它的能力主要体现在:世界地图流缓冲技术、复杂人工智能管理、天气特效、快速网络代码与众多游戏方式,这些在GTA4中都表现的很明显。
  更重要的是,这款引擎对游戏中的许多“合作插件”本身有着极好的兼容性。这个特点,也是如今我们还能在大作中好好回味其品质的重要原因。
  9、Naughty Dog Game Engine(顽皮狗)
  代表作:《神秘海域》系列
  好的,笔者可以很安全的说,对这款引擎而言,喜欢独占游戏的玩家应该不陌生。
  作为世界上最著名,也是最有特点的独占游戏引擎,顽皮狗在PS平台上的表现无疑令许多玩家印象深刻。
  09年的E3大展,无疑是一次划时代的展会。为什么?因为这次展会是顽皮狗引擎首次在世界面前展现它的强大效果。
  和其他游戏引擎――只在某个具体环节上表现出色不同的是,顽皮狗在主机平台上的强大,是全方位的。
  惊人的动态画面效果,流畅细腻的人物建模,堪称壮丽的音效和光照模式,好莱坞大片般的过场动画,再加上绚丽丰富的画面色彩。
  有了以上这些要素,我们完全可以把顽皮狗――称为真正意义上的次世代全能引擎。
  8、The Dead Engine(死亡引擎)
  代表作:《死亡空间》
  和以上两个重要引擎相比,业界另一经典当属――死亡引擎。
  很有意思的是,从游戏引擎本身的特点出发,死亡引擎的说法并不是来源于某个官方定论,而是由各大媒体和玩家们总结出来的。
  同样的,《死亡空间》被媒体誉为史上最恐怖的游戏之一,对制作小组而言,这样的评价结果,显然非常符合其开发文化。
  作为EA固有的老牌制作组,开发人员们曾不止一次的宣布,这个小组的最大特点就是――专注于创造惊悚动作游戏。
  至于整个死亡引擎最特殊,也最有优势的地方,莫过于其本身超强的游戏操作性,逼真的音效特色,以及非常人性化的光照执行效果。
  值得注意的是,上述几个重要特点,恰好完美契合了一款优秀恐怖流游戏所需要的特质。
  这么看来,《死亡空间》的巨大成功,也就不稀奇了。
  考虑到在《死亡空间》正式开发之前,开发组特意对原有引擎进行了彻底重制,我们不能不给工作人员的良苦用心打上100分。
  7、Cry ENGINE(尖叫引擎)
  代表作:《孤岛危机》系列
  在系统的谈论和分析Cry ENGINE之前,作为玩家的我们,必须首先明确一个基本概念:
  每一款出色的游戏引擎,其本身都不是一个孤立的概念,它要么能够和其他引擎发生一些重要联系,要么,其背后有一个出色――或者至少曾经很出色的开发商。
  显然,曾经因为《孤岛危机》系列,而在业界引发强烈反响的“尖叫引擎”属于后者。
  这个开发商,就是曾经名噪一时,后来又因为传说中的“危机”濒临破产的Crytek。
  Crytek是一家欧洲开发商,它的辉煌起点,还要追溯到04年《孤岛惊魂》的问世。
  在全世界都期待着全新的次世代游戏会给玩家们带来怎样的体验时,Crytek用标准的FPS游戏将所有人拍飞。
  当然,之后的故事,我们都非常清楚,《孤岛惊魂》的名声由此打响,其名声中最重要的根源――有且只有一条:硬件杀手。
  没错,时至今日,这个系列依旧是业界最有名的硬件杀手。
  “尖叫系列”的集大成展现,莫过于Cry3,Cry3引擎是第一款――集360、、多人在线游戏、DX9、DX10于一体的次世代游戏开发解决方案,使用的是弹性计算与图像处理。
  与其他引擎不同,Cry3不需要第三方插件,自身就可以支持物理、声音还有动画,以及制作出业界顶级的画面。
  6、Avalanche Engine(雪崩引擎)
  代表作:《正当防卫》系列
  好的,让我们实际一些:除了纵横本年度E3大展,毫无保留展现全貌的《辐射4》之外,哪部作品才是E3上最有特点的游戏呢?
  在这里,笔者必须给《正当防卫3》投上一票。
  事实上,不止是《正当防卫3》本身,这个系列从诞生以来,就具备了许多同类游戏不具备的优秀特质。
  这一切都源于其背后伟大的游戏引擎――Avalanche Engine(雪崩引擎)。
  需要指出的是,在一代的时候,雪崩引擎并不是一个完全规范化的引擎,在这样的基础上,第一代JC的表现只能说是好坏参半。
  幸运的是,很多时候我们相信,Avalanche Studios制作组并没有原地踏步,他们花费了无数心血,从各方面将“雪崩一代”进行了深层次的剥离、优化和改良。
  于是,般的“雪崩二代”应运而生。多种游戏模式的完美融合,大量的屏间爆炸与战斗,新物理特效下的抓钩特性,更强的人工智能,强大到令人发指的血性效果。
  正因为“雪崩二代”在引擎细节上的出色发挥,让玩家们对《》甚至后来在E3上亮相的《正当防卫3》都有了更多的期待。
  讽刺的是,“尖叫引擎”的辉煌,从“要求显卡”开始,却也因为“显卡危机”渐渐衰退,不能不说,这是一种循环。
  5、Anvil Engine(铁砧引擎)
  代表作:《刺客信条》和《波斯王子4》
  说起来,育碧是我个人很佩服的一个公司,同样也是一个相当有趣的公司。至少在引擎这部分的表现上大致如此。
  为什么这么说呢?这一切都要从《刺客信条》说起。
  作为史上最成功的原创模式作品之一,笔者可以很坦然的告诉大家,正是《刺客信条》的出现让我们真正认识了Anvil Engine这个优秀的引擎。
  虽说我们口中“有趣的育碧”也常常使用其他引擎制作相关的游戏,但要说到对自家引擎的忠实,恐怕没有什么引擎能和Anvil Engine相比了。
  在刺客信条和波斯王子中,Anvil引擎使得动态效果和环境的互动非常的柔和优雅。并且该引擎很善于在游戏世界中填充AI。
  有意思的是,在“铁砧二代”的整体构架中,育碧有了更多细节上的优化尝试。
  诸如光照、反射、动态画布、增强型AI、与环境的互动、更远距离的图像绘制、昼夜循环机制等一系列要素。
  很显然,目前的Anvil Engine正在变成――最全面的游戏引擎之一。
  尽管本年度的《刺客信条:枭雄》依旧有着这样那样的Bug,不过在正式推出之时,育碧对引擎的改进和润色还是值得期待的。
  4、IW Engine
  代表作品:《》系列
  提到IW Engine,我们可以先确定一件事情,以IW Engine为核心的《使命召唤》系列,依旧是史上平台总销量最多的游戏之一。
  所谓IW,指的是Infinity Ward,对许多玩家来说,虽然《使命召唤》系列早已成为年作,不过IW引擎的那些特点至今仍然相当鲜明。
  非凡的动态效果,简单直白的细节处理,复杂的AI模式,创造性的动态子弹穿透系统,加上令人叹为观止的音效和极好的网络模式体验。再加上独到的纹理缓冲技术。
  以上无论哪一项,最终都能完美契合一款经典FPS游戏所需要的全部特质。
  也难怪在《黑色行动3》发布的时候,开发人员会在采访中强调:
  “这么多年来,其实我们一直都在享受IW带来的成果,并不断的完善它,它是我们一切变革和的基础。”
  3、Frostbite Engine(寒霜引擎)
  代表作:《荣誉勋章》和《战地》
  早在《使命召唤》系列出现之前,《荣誉勋章》曾经是最好的FPS游戏之一,不得不说,这里面有寒霜引擎很大一份功劳。
  当然,一定要追溯源起的话,我们会发现,早期的寒霜引擎其实是为DICE旗下产品《战地:叛逆连队》量身定做的,其基础特性均迎合了《战地:叛逆连队》的特点。
  真正值得注意的,是这个引擎的特色。无论是寒霜模式,还是后来的“寒霜2.0”,这款引擎最大,最深入的开发特点,就是它在游戏设计中的人性化体验。
  游戏制作者可以在工具中进行简便的图形化操作,不同格式的文件的导出和导入工作也可以在工具中自动完成。工具提供丰富的实时生成和调节内容。
  同时,此种引擎还有效提供了许多高精细度的展现方式和细节捕捉体验,这也是同时期其他引擎难以企及的部分。
  2、Unreal Engine(虚幻引擎)
  代表作:《战争机器》系列,《质量效应》系列
  Unreal Engine,大名鼎鼎的“虚幻引擎”。好的,虚幻引擎到底多有名呢?
  从《战争机器》到《质量效应》再到《无主之地》这一系列大作,甚至是《镜之边缘》这种“我们所期待的是做出精品”的游戏。
  可以大胆的说一句,自从1998年初正式诞生至今,伟大的虚幻引擎不断发展着,时至今日,虚幻引擎已经成为整个游戏业界――运用范围最广,整体运用程度最高,次世代画面标准最高的一款引擎。
  恐怕再也没有一款引擎能像“虚幻系列”这样发展。在游戏整体细节的把握和大场景构建的丰富程度上,不客气的说,虚幻引擎已经做到了次世代单机大作们所能达到的最高水平。
  要知道,就连向来被玩家们认为“习惯炒冷饭”的仙剑之父姚老师,如今都敢喊出“只要仙剑能卖出若干套,我就换虚幻3”。
  你们看,这才只是虚幻3。现在,已经到了虚幻4都磨刀霍霍的时刻了。
  1、Creation引擎
  代表作:《》和《辐射4》
  说到本年度最热门的游戏,《辐射4》自然是不遑多让。不过,对笔者来说,《辐射4》的横空出世,也让我们终于开始思考一个问题:
  Creation究竟是怎样一款引擎?它最终又会走向何方呢?
  坦率的说,这个问题并不复杂,早在本年度E3大展,《辐射4》因为各方面细节展示而大出风头的时候,这个问题就已经被摆到了台面上。
  说到Creation,我们不可避免会提到两个概念:Gamebryo引擎和id Tech 5引擎。
  一般认为,在《辐射3》和《文明4》中被作为核心引擎使用的Gamebryo,正是如今Creation的前身。
  相比之下,id Tech 5则是一种相对前卫的产物。这个引擎完全改变了每个物件单独贴图的模式,而是将整个世界打造成一个更加完备的整体。
  另一方面,其本身的远景绘制水平相当惊人,基本能做到所有贴图毫不雷同。
  大家发现什么端倪了吗?没错,这种特点对《辐射》这类以废土世界观为基础构建的游戏,可谓非常重要。
  明白了这一点,我们再来看看Creation引擎。笔者认为,现在的Creation可以说是id Tech 5的优化和改良。
  这种改良主要体现在贴图模式的优化和压缩上,同时又没有失去游戏的逼真细节和景深效果,同时还解决了游戏容量太大的问题。
  除了以上特点之外,Creation在光影效果的把握上也极为出色,它的存在,使得《辐射4》的光影细节几乎完全贴近真实。
  同时,该引擎对MOD体系和自定义装备方面的支持也表现的相当优秀,甚至还通过插件改善了NPC固有的AI效果,使得对话和交流更加顺畅自然。
  笔者觉得,上述一系列“细微优势”的持续累积,才是B社敢于拍胸脯保证《辐射4》整体质量的根源所在。
(作者:驱动之家责任编辑:熊伟)
IT新闻微信公众平台
第一时间获取新鲜资讯
使用手机扫描左方二维码
您可能想看的内容
看过本文的人还看过
大家都在看
* 网友发言均非本站立场,本站不在评论栏推荐任何网店、经销商,谨防上当受骗!
天极网IT新闻汇:三星表示,将于9月28日恢复在韩国本土市场销售……
本年度最炫酷福利活动在此! 这只小小熊价值1000元~你还等什么?还不…
天极网IT新闻汇:今日上午,北京市海淀区人民法院对快播一案进行公开宣判…
当初牛气哄哄说着“我们提现不收费”的支付宝,如今也要收钱了!
苹果秋季新品发布会在今天凌晨举行,库克坐着小车唱着歌就到了发布会现场。
天极网IT新闻汇:今日上午,北京市海淀区人民法院对快播一案进行公开宣判…
天极网IT新闻汇:三星表示,将于9月28日恢复在韩国本土市场销售……
本年度最炫酷福利活动在此! 这只小小熊价值1000元~你还等什么?还不…
每日IT极热

我要回帖

更多关于 虚幻4引擎 编程语言 的文章

 

随机推荐