源码下载,赤狐工作室 -> 游戏专区 -> 家园2地图制作教程 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

zcm123 2007-03-04 16:14

家园2地图制作教程

Homeworld2 绘制地图

确保你按顺序做这个; 地图文件多半被划分成为DetermChunk和NonDetermChunk部分,
建立地图目录
建立一个.level文件
没有游戏水平信息
玩家信息
开始地图的DetermChunk部分。
玩家起点信息
资源,船,地形
装置绘制地图大小
开始NonDetermChunk地图的部分。
地图信息

1.建立地图目录。
在你的 \Homeworld2\Data文件夹中建立一系列的文件夹,叫做\levelData\multiplayer \deathmatch 这是从以后储存地图的地方,HW2会在这里找到地图。

2.建立一“.level”文件。
打开写字板,建立一个叫做“xxx.level”的新文件(xxx是文件名,随便你喜欢叫什么)
注意:在Windows下用写字板打开HW2里叫的.level的文件
注意:仅以2个玩家的地图为例

3.增加游戏地图信息。(这是将添加在multiplayer菜单中的地图)
在刚刚建立的.level文件里添加正文:
levelDesc =“xxx”
maxPlayers = y
xxx,不论你如何建立,这将是在游戏里建立的地图名称。
Y的数值将是这个地图里玩家的数量。
注意:如果是测试地图,你应该把名称设置为“A”,这样当你开始建立一个和CPU的遭遇战时它将被选择为默认图 (仅为2个玩家地图)

4.增加玩家信息。
在正文中加入:
player = {}
player[0] = {
id = 0,
name = "Vaygr",
resources = 1500,
raceID = 1,
startPos = 1,
}
player[1] = {
id = 1,
name = "Hiigaran",
resources = 1500,
raceID = 0,
startPos = 1,
}
如果你想要有超过两个玩家,只需要增加额外的玩家,但记住:
在player[ X ]中的数字总应该与id= X的数字保持一致。
StartPos应该总是等于1。
RaceID应该在像你在上面看到的一样,在0与1之间浮动。
其它数值应该不去管它,他们只是在未进入游戏前的默认设置,你可以在设置游戏时进行更改。

5.增加玩家起点信息。
现在在正文中加入:
function DetermChunk()
addPoint("StartPos0", {X, Z, Y}, {A, B, C})
addPoint("StartPos1", {-X, Z, -Y}, {A, B, C})
“StartPos0”是玩家[0]的开始位置,“StartPos1”是的玩家[1]的开始位置,以此类推六个玩家的地图直到StartPos5。
首先,{ X,Z,Y }是用于确定与开始点相关的每一个具体位置(当游戏开始时,在感应器里交叉坐标上的点)。
注意格式协调: { X,Z,Y }。 X控制“左右边”的位置,Y控制“上下边”的位置,Z控制在默认起始水平面的上下位置或移动。

假设你想要游戏开始时,每个玩家距原点的X坐标左右51公里,Y坐标上下9公里,并在默认水平面上。你就应该这样打出:
function DetermChunk()
addPoint("StartPos0", {-51000, 0, 9000}
addPoint("StartPos1", {51000, 0, -9000}
X和Y的数值相互为负将会使整个的游戏区域保持对称。如果A地图设置为4个玩家就要这样:
function DetermChunk()
addPoint("StartPos0", {-51000, 0, 9000}
addPoint("StartPos1", {51000, 0, -9000}
addPoint("StartPos2", {-51000, 0, -9000}
addPoint("StartPos3", {51000, 0, 9000}
当然,这并不真正对称,玩家一和三将会很接近,玩家二和四也会如此。但是这样你可以改变距离并非51公里和9公里来调整玩家起始位置。

记住,当设置的距离将花费一个侦察小队进行不间断的3分半钟常规飞行移动100公里(相当长的一段时间),那么你能想像主力舰将会花费更多更多的时间移动同样的距离。你可以在感应器中通过移动盘半径来测量距离。

其次,{ A,B,C }确定每一个玩家母舰的旋转的角度。仅仅改变B的数值就可以了,A和C应该始终为0,如果你改变他们,他们将在游戏的开始使母舰倾斜到一个很奇怪的角度,然后它将在20到30秒内自动更正。
使用B,你能设定每一玩家的起始方向(母舰和舰母面对的方向)。如果B设置为90,玩家的舰母和母舰将会在感应器罗盘上朝着90度超太空跳跃进这个地图。一般来说,它将决定你的船朝着地图中心的角度。

6.增加资源,船,地形。
这些你能从其他地图复制和粘贴进你的地图。公正的进行设定,分配均衡,还有改变你地图内的地形素材!

Asteroids 小行星
addAsteroid (“AsteroidType”,{ X,Z,Y },RU,?,?,?,?)
默认值:addAsteroid("Asteroid_3", {0.0, 0.0, 0.0}, 100, 0, 0, 0, 0)
-- AsteroidType在Asteroid_1和Asteroid_5之间变化,而1最小和5最大。仅仅3,4和5是可以被采集的,而1和2是纯粹装饰的。
-- RU是一个乘法器用于设置每个小行星种类内包含的RU量。小行星越大,内部包含的RU量就越多。RU数值为100说明该包含这个默认RU价值的100%,数值为70则是70%,等等0的数值意味着小行星没有包含资源,而是纯粹装饰的。

Clouds 云(没有线索说明这如何不同于星尘)
addCloud("?", "CloudType", {X, Z, Y}, {R, G, B, ?}, ?, Size)
默认值: addCloud("polySurface1", "Cloud_NoRes", {0.0, 0.0, 0.0}, {1, 1, 1,1}, 0.0, 0.0)
-- CloudType可以是cloud_0,cloud_nores,cloud_nores2 和 cloud_nores3。
-- R,G,B是RGB代码( 0=0 1=255 )。
-- Size是云大小。

Dust Clouds 星尘(不被感应器察觉,由离子电波组成)
addDustCloud("?", "DustCloudType", {X, Z, Y}, {R, G, B, ?}, ?, Size)
默认值: addDustCloud("polySurface1", "DustCloud_NoRes", {0.0, 0.0, 0.0},{1, 1, 1, 1}, 0.0, 0.0)
-- DustCloudType 可以是dustcloud_0, dustcloud_nores, dustcloud_nores2,
dustcloud_nores2_m05, dustcloud_nores3, dustcloud_nores3_m05,
dustcloud_nores_m05, dustcloud_nores_nocharge 和 dustcloud_teal。
-- R,G,B是RGB代码( 0=0 1=255 )。
-- Size是星尘大小。

Megaliths 巨石(这些很巨大; 他们形成了广大地图的支柱!)
addSquadron("SquadronName", “SquadronType,” {X, Z, Y}, ?, {?, ?, ?} ?, ?)
默认值: addSquadron("meg_ asteroid", "meg_asteroid", {0, 0, 0}, -1, {0, 0,0}, 0, 0)
--据我所知,SquadronName和SquadronType能都被设置成同样的东西并且将很好的运行。 确保你将两者放进了某样东西,然而,有些东西在人机对战中是认不出来的。
-- SquadronName和SquadronType能是任何如下:
meg_asteroid, meg_asteroid_nosubs, meg_asteroid_mp, meg_balcoragate, meg_bentus,
meg_bentus_ruin_1 (up to 11), meg_bentus_ruined, meg_bentus_ruins_core_1 (up to
core_3), meg_bigred, meg_chimera, meg_dreadnaughtberth, meg_foundry,
meg_foundrydebris_chunk1 (up to 4), meg_foundrydebris_flake1 (up to 4), meg_gehenna_1
(up to 7), meg_misslefrigate (yes, spelled like that), meg_progenitorpowermodule,
meg_progenitorpowertrigger, meg_progenitorpowertrigger_noui, meg_sajhulknose,
meg_sajhulknose_ui, meg_sajhulkpanels, meg_sajhulkpanels_ui, meg_sajhulkturret,
meg_salvagecollector, meg_tanis, meg_tanisstructure_medium,
meg_tanisstructure_medium2, meg_veildebris_bit1 (up to 15), meg_veildebris_chunk1 (up to
5; alternate versions have “_nd” on the end), meg_veildebris_chunk_lighthouse,
meg_veildebris_flake1 (up to 10)。


Nebulae 星云及废墟
addNebula("?", "NebulaType", {X, Z, Y}, {R, G, B, ?}, ?, Size)
默认值: addNebula("Nebula4_OLD1", "M11_Bentusi_Radiation", {0.0, 0.0,0.0}, {1, 1, 1, 1}, 0.0, 0.0)
-- NebulaType 可以是 m05_dustcloud_nebula, m05_nebualdustcloud_nores,
m05_nebualdustcloud_nores2, m05_nebualdustcloud_nores3, m07_foundry_radiation,
m08_nodamage_radiation, m11_bentusi_debris, m11_bentusi_radiation,
mp_bentusi_radiation, nebula01_cream, nebula01_teal, nebula_0, nebula_hiding 和
radiation.
-- R,G,B是RGB代码( 0=0 1=255 )。
--Size是nebula大小。

Pebbles 卵石(在感应器内的显出的的棕色小点,但是什么也不是)
addPebble("PebbleType", {X, Z, Y}, ?, ?, ?)
Defaults: addPebble("Pebble_0", {0.0, 0.0, 0.0}, 0, 0, 0)
PebbleType能是pebble_0,pebble_1,pebble_2或者pebble_3。

Salvageable Debris 爆炸碎片
addSalvage("ChunkType", {X, Z, Y}, RU, ?, ?, ?, ?)
默认值: addSalvage("Slv_Chunk_Lrg03", {0.0, 0.0, 0.0}, 100, 0, 0, 0, 0)
-- ChunkType 变化范围从Slv_Chunk_Lrg01到Slv_Chunk_Lrg05, 1是最小的,5是最大的。它的变化范围也可以是Slv_Chunk_Sml01直到08。
-- RU是一个乘法器用于设置每块碎片内包含的RU量。
这里它和小行星的运算是一样的。Ships 船只
addSquadron("ShipName", “ShipName,” {X, Z, Y}, F, {A, B, C} ?, ?)
默认值: addSquadron("vgr_shipyard", "vgr_shipyard", {0, 0, 0}, -1, {0, 0,0}, 0, 0)
--使用A,B和C控制船只旋转。一些船(像维格尔的行星杀手)将需要旋转。在行星杀手的情况下,把其A值设置为270。
-- F决定谁控制它。如果F是-1,则是没有任何人控制而它是可以被捕捉的。如果设置为0,则是player[0]控制它,如果它被设置为1,则player[1]控制它,等等
-- ShipName能是任何如下(不确定是否能全部可以):
Hiigaran: hgn_assaultcorvette, hgn_assaultcorvetteelite, hgn_assaultfrigate,
hgn_attackbomber, hgn_attackbomberelite, hgn_battlecruiser, hgn_carrier,
hgn_cloakingfrigate, hgn_defensefieldfrigate, hgn_destroyer, hgn_dreadnaught,
hgn_drone_frigate, hgn_drone_frigate_2, hgn_drone_frigate_3, hgn_ecmprobe,
hgn_gunplatform, hgn_gunturret, hgn_hscore, hgn_interceptor, hgn_ioncannonfrigate,
hgn_marinefrigate, hgn_marinefrigate_soban, hgn_minelayercorvette, hgn_mothership,
hgn_probe, hgn_proximitysensor, hgn_pulsarcorvette, hgn_pulsarplatform,
hgn_resourcecollector, hgn_resourcecontroller, hgn_scout, hgn_shipyard,
hgn_shipyard_elohim, hgn_shipyard_spg, hgn_supportfrigate, hgn_targetdrone,
hgn_torpedofrigate.
Vaygr: vgr_artillerycruiser, vgr_assaultfrigate, vgr_battlecruiser, vgr_bomber, vgr_carrier,
vgr_commandcorvette, vgr_commstation, vgr_destroyer, vgr_heavymissilefrigate,
vgr_hyperspace_platform, vgr_infiltrator_frigate, vgr_interceptor, vgr_lancefighter,
vgr_lasercorvette, vgr_listeningpost, vgr_minelayercorvette, vgr_missilecorvette,
vgr_mothership, vgr_mothership_makaan, vgr_planetkiller, vgr_planetkillermissile,
vgr_prisonstation, vgr_probe, vgr_probe_ecm, vgr_probe_prox, vgr_resourcecollector,
vgr_resourcecontroller, vgr_scout, vgr_shipyard, vgr_transportfrigate,
vgr_weaponplatform_gun, vgr_weaponplatform_missile.
Keeper: kpr_attackdroid, kpr_destroyer, kpr_destroyerm10, kpr_mover,
kpr_mover_capture, kpr_mover_salvage, kpr_sajuuk, kpr_sajuuk_nosensors。

7.地图尺寸。
现在设置你地图的尺寸:
setWorldBoundsInner({0, 0, 0}, {X, Z, Y})
end
第一个括弧{0, 0, 0},不要改变内部数值。那些影响位置,如果不是0的话,可能产生一个倾侧的地图。第二个括弧{X, Z, Y},X,Z,和Y的值根据你的需要进行设定。

8.增加地图信息。
一旦你已设置完地图尺寸,你已进行到地图的“NonDetermChunk”部分。
这包括:设置背景图片,选择音乐,选择影子颜色,决定在感应器内你的观察焦距能有多远,和选择是否你想要雾或者镜头闪烁。
在正文中添加:
function NonDetermChunk()
fogSetActive(0)
setGlareIntensity(0)
setLevelShadowColour(0, 0, 0, 1)
loadBackground("X")
setSensorsManagerCameraDistances(MIN, MAX)
setDefaultMusic("Data:sound/music/Y/Z")
end
X的数值可以是:black, white, m01, m02, m03, m04, m05,
m06, m07, m08, m09, m10, m11, m12, m13, m14 或者 m15。
Y是音乐目录之一:“环境的”或者“战斗的”。 Z是音轨名称。
环境音轨包括: amb_01, amb_02, amb_03, amb_04,amb_05, amb_06, amb_07, amb_08, amb_09, amb_10, amb_11, amb_12, amb_13和amb_14.
很多环境音轨是非常无聊,朴实,但是你想要有一个放松的环境的话,他们有很好的效果。
战斗的音轨包括: battle_01, battle_04, battle_04_alt, battle_06,battle_keeper, battle_movers, planet_killers, Battle_sajuuk and bentus_arrival.
行星杀手的非常扣人心弦。Battle_Keeper, Battle_Movers, Bentus Arrival 和Battle_Sajuuk 都是非常酷的阿拉伯音轨。Battle 01, Battle 04 和Battle 06 是非常典型的受到危险的管弦乐音轨。

I hope you found this helpful! Thanks to ZuilJin for finding all of that nifty map code and
telling us about it, and to EvilChekov for providing me with a guinea pig map.
-Malignus
craigstern@hotmail.com

[下载地址]


查看完整版本: [-- 家园2地图制作教程 --] [-- top --]


Powered by PHPWind5.3
社区官方群:7778368 本站系公益性质网站,站内广告维系本站运作。
vb源码下载|vc源码下载|asp.net源码下载|电子教程|电子书|基础教程|发售光盘等
本社区仅供学习计算机编程技术所使用,访客发言不得违反国家法律法规