Hướng dẫn chi tiết - Làm map với Valve Hammer Editor

Thảo luận trong 'Counter Strike' bắt đầu bởi GoldSrc, 17/8/15.

  1. GoldSrc

    GoldSrc Donkey Kong

    Tham gia ngày:
    6/8/15
    Bài viết:
    334
    Nơi ở:
    The Moon
    Sau đây là những hướng dẫn cực kì đơn giản và dễ hiểu do mình tự sưu tầm để có thể làm được 1 map CS đơn giản nhất với Valve Hammer Editor.
    Đầu tiên là phải có Valve Hammer Editor (dùng để vẽ mô hình tổng quát cho map) :
    http://www.mediafire.com/?7ca8ivubsrfb25k và file .fgd (sẽ giải thích sau) : http://www.slackiller.com/tommy14/cs-fgd-xp_8u.zip

    Phần I: Understand VHE
    Map là gì?
    Khi chúng ta đang chơi. Những khu vực mà chúng ta núp, những căn nhà, chiếc xe, cái thùng.v.v. Tất cả những thứ này đều cần một khung cảnh 3 chiều. Và để thông dụng, người ta đặt cho nó với cái tên MAP.

    Phương nhìn là gì?
    Có 3 phương nhìn cơ bản:
    + Phương top(x/y) hay là hình chiếu bằng là những gì trong trò chơi hiện từ cao xuống.
    + Phương front(x/z) hay là hình chiếu chính là mặt thể hiện rõ về khung cảnh map nhưng thông thường chỉ để xây dựng về chiều cao (phương z) của vật.
    + Phương side(y/z) hay là hình chiếu cạnh. Đối với những hình phức tạp như cột trụ thì không thể thiếu hình chiếu cạnh.

    Brush và Entity
    Để thể hiện cho một khối hộp người ta thường gọi là brush. Trong VHE, brush là thứ cơ bản nhất để dựng map. Ta có thể xem mặt đất là một khối brush, bức tường là một khối brush, nhưng dễ tưởng tượng nhất thì brush chính xác là một cái thùng.
    Entity cũng không kém phần quan trọng. Hầu hết các map hay đều phải cần lượng Entity sát lượng brush. Và để dễ hiểu hơn. Nơi bạn xuất phát là 1 entity, nơi bạn dùng camera là 1 entity, nơi bạn dùng súng máy dựng sẵn là 1 entity, hay là nơi để 1 cái đèn. Đó chính là entity.

    Map hoàn thành (Compiled) và chưa hoàn thành (Uncompiled)
    Cần phải phân biệt giữa hoàn thành và chưa hoàn thành. Đây là cơ sở một chiều. Chỉ có map chưa hoàn thành có thể trở thành map hoàn thành. Hiện nay đã có một số Tool đã giúp cho việc đi ngược lại, nhưng chỉ giúp về mặt Entity, mặt brush thì không thể. Lí do vì sao?
    Map khi đã hoàn thành thì được engine GoldSrc xử lí xóa dần những chỗ không thấy ở một vị trí. Chẳng hạn bạn ở trong phòng, Map hoàn thành sẽ xóa vị trí ngoài sân ngoại trừ vị trí từ cánh cửa có thể nhìn ra được. Và sau khi di chuyển ra ngoài sân, map sẽ xóa phần trong phòng ngoại trừ những gì có thể nhìn thấy thông qua cánh cửa, Rõ chứ?
    Map hoàn thành có định dạng *.bsp và chưa hoàn thành có định dạng theo WorldCraft là *.rmf hoặc Radiant là *.map.

    Những File khác
    Trong VHE có những file mà ta cần phải hiểu.
    - File "*.fgd": Đây là file mà giúp cho ta tạo entity. Mỗi Mod của Half-Life(CS,DoD,Op4,TFC...) đều sử dụng file FGD riêng. Nhưng sẽ có những entity thường gặp trong FGD như info_player_start (dùng để tạo vị trí xuất phát cho player, buộc phải có), func_door(tạo cửa trượt), light(tạo ánh sáng các loại).
    - File "light.rad" đây là file tạo ánh sáng. Nếu map không có các entity light, light_spot hay light_enviroment. Thì sẽ sáng lóa hoặc tối đen. Nhưng khi tạo map, chạy file này tốn 3/4 thời gian (1 map khi tạo từ map chưa hoàn thành trở nên map hoàn thành thì tốn từ 3 phút - 45 phút tùy theo sức máy và độ lớn map). Vì thế khi cần test entity thì có thể bỏ qua giai đoạn này nhưng khi hoàn tất thì phải chạy file này không thì khỏi chơi (nói thật đó).
    Phần II: Config VHE
    Để config, bạn mở VHE lên. Chọn Tools->Options.

    Game Configuration
    Mở Tab Game Configuration lên bạn sẽ thấy như sau:
    [​IMG]


    VHE sử dụng Game Configuration(GC) để hình thành một bộ nhớ, về map sẽ tạo thuộc mod nào của HL(như mod CS 1.6, mod Day of Defeat, Half Life.v.v.).

    a/Mục Configuration
    Ấn vào chữ Edit đầu tiên từ trên nhìn xuống. VHE sẽ hiện lên cửa sổ mới.
    + Ấn Add và gõ Half-Life nếu làm map cho HL .
    + Ấn Add và gõ CS nếu làm map cho Counter-Strike .
    + Ấn Add và gõ tên mod nào mình cần làm. (ví dụ CS:CZ , DoD ,...)
    Xong Close nó lại, bây giờ bạn sẽ thấy hàng đầu tiên xuất hiện tên mà vừa nhập. Để chọn mod cần điều chỉnh thì ấn dấu mũi tên.

    b/Mục Game Data File
    Trước tiên bạn phải có file *.fgd của mod cần xài không thì xóa cái này đi. File *.fgd kèm theo khi cài VHE là HL,CS,DoD,TFC.
    Ấn add và chọn đuờng dẫn tới file *.fgd. Khi thay đổi địa chỉ thì cũng phải thay đổi đường dẫn.
    c/Texture Format và Map Type
    Không cần chỉnh cũng như không chỉnh được. Chỉ xài khi bạn làm map cho game khác HL và mình hoàn toàn không hỗ trợ game khác.

    d/Defaut Point Entity và Defaut Solid Entity
    Chọn dấu mũi tên.
    Đối với DPE thì chọn info_player_start.
    Đối với DSE thì chọn func_wall.

    e/Còn lại
    Gõ theo thứ tự từ trên đếm xuống, lưu ý thay [Đường dẫn] bằng đường dẫn tới game mình cần (Ex: D:\Counter Strike 1.6).
    [Đường dẫn]
    [Đường dẫn]\cstrike
    [Đường dẫn]\valve
    [Đường dẫn]\cstrike\maps

    Build Program

    Hàng đầu tiên cũng giống GC: lựa chọn game mình sẽ xài để làm map.
    Các hàng còn lại sử dụng đường dẫn. Lưu ý: cần cài ZHLT vào trong thư mục tool của VHE.
    List cho CS :
    [Đường dẫn]\hl.exe
    C:\Program Files\Valve Hammer Editor\tools\hlcsg.exe
    C:\Program Files\Valve Hammer Editor\tools\hlbsp.exe
    C:\Program Files\Valve Hammer Editor\tools\hlvis.exe
    C:\Program Files\Valve Hammer Editor\tools\hlrad.exe
    [Đường dẫn]\cstrike\maps
    [​IMG]
    Thế là bước thứ 2 đã xong.

    Để giải thích cho những gì làm ở Build Program, hàng đầu là chỉ đường link tới game gốc (không phải shotcut). Hàng thứ 2 chỉ đường tới bộ phận hình thành cấu trúc brush của map. Hàng thứ 3 chỉ đường tới bộ phận hình thành cấu trúc entity của map. Hàng thứ 4 tới cấu trúc "nhìn được và không nhìn được". Hàng thứ 5 tới cấu trúc tạo ánh sáng.
    Hàng cuối cùng là nơi map thành phẩm "xuất khẩu".

    Texture

    Mình khuyên các bạn nên chọn các file theo đường dẫn sau (đây là các file đầy đủ nhất):
    cstrike/cstrike.wad
    cstrike/decals.wad
    cstrike/cs_assault.wad
    cstrike/cs_dust.wad
    valve/halflife.wad
    Phần III :Làm map
    - Chọn File-> New
    Để làm map, trước tiên cần có brush. Để tạo brush, người ta dùng block tool. Đó là icon thứ 5 từ trên đếm xuống. Rồi giữ và kéo chuột trong khung top(x/y) lên trên và sang phải đến 1 kích thước vừa ý. Chưa đc chăng? làm lại bằng cách ấn vào các ô vuông màu trắng để điều chỉnh kích cỡ.
    Vào tầm nhìn side(X/Z) và chỉnh độ cao theo ý muốn. Cuối cùng để "xây" nó gõ enter hoặc nhấn chuột phải và chọn "Create Object".

    [​IMG]
    Bạn đã tạo đc 1 khối hộp, nhưng nếu để cho khối hộp này đi bên trong được thì bạn phải khoét một cái không gian bên trong bằng cách click vào icon đầu tiên bên trái và bấm chuột vào một phần bất kì trên khối brush rồi ấn Ctrl+H. Nó sẽ kêu điền độ dày của bức tường phòng mình tạo. Gõ -64 (nếu để số dương nó sẽ thụt vào trong) và Ok.
    [​IMG]
    Vậy là bạn đã tạo được 1 cái phòng và 1 không gian rỗng bên trong để bạn di chuyển trong đó. Nhưng đây chỉ mới là khởi đầu của mọi sự rối rắm.

    Tiếp theo là tô màu cho căn phòng.
    Để tô màu cho căn phòng bạn chọn 1 trong những bức tường xung quanh. Rồi chọn icon bên tay trái thứ 6. bạn ấn vào browse-> chọn màu, "hoa tiết" cho tường.
    Chọn hình xong rồi thì bạn chỉ việc ấn Apply rồi Close. Xong!
    [​IMG]
    Map CS nào cũng cần phải có entity info_player_start và info_player_deathmatch. Đây là nơi CT và Ts xuất phát. Ấn vào Icon thứ 4 ,chọn info_player_start trong hộp thả ở góc phải phía dưới màn hình và đặt nó ở một vị trí và độ cao phù hợp -> Enter hoặc right mouse -> Create Entity. Làm tương tự như vậy với info_player_deathmatch. Nó sẽ hiện một cái khung màu xanh lá. Nếu khung này nằm trong khoảng trống thì bạn làm đúng. Còn nếu nó vướng vào tường hoặc ở ngoài phòng thì bạn hãy kéo nó vào đúng vị trí.
    [​IMG]
    và đương nhiên, như mình đã nói ở trên ,map buộc phải có ánh sáng. Để tạo ánh sáng, chọn Entity Tool, sau đó tìm entity có tên "light" trong khung nhỏ ở phía dưới bên phải màn hình. Đặt nó vào vị trí và độ cao mà bạn muốn ánh sáng phát ra.
    Để điều chỉnh ánh sáng bạn lựa chọn Icon thứ nhất. Icon có dấu mũi tên là 1 tool giúp lựa chọn một vật gì đó. Hãy lựa chọn cái entity mà bạn mới tạo và bấm phải chuột chọn Properties (không thực hiện được trong khung hình 3D). Nó sẽ xuất hiện cái khung như sau.
    [​IMG]
    Khung này nhìn toàn chữ với chữ. Nhưng để ý làm gì. Cái bạn cần là mục Brightness như trong hình vẽ. Bạn có thể ấn vào pick color để chọn màu. Sau khi chọn màu cho ánh sáng (chọn màu khi bạn muốn tạo đèn Neon) thì bạn để ý con số cuối. Đó là độ sáng của cái entity này phát ra. Số càng lớn ánh sáng càng mạnh. Lớn quá chói cả mắt khỏi chơi.
    Ngoài lề: nếu bạn để ý cái Tab thì bạn sẽ thấy có 3 cái. Class info là nơi ta đang làm. Flag là nơi mà bạn chỉ việc tick vào là có ngay. Ở đây chỉ có mỗi cái tick Initially Dark. Đừng bậy bạ mà tick vào không sai từa lưa đấy.
    Kết quả của việc sử dụng ánh sáng:
    [​IMG]
    COMPILE MAP
    Để convert map của mình sang định dạng mà có thể chơi được trong game (.bsp) bạn bấm F9. Nó sẽ hiện ra 1 cái bảng .Bạn đánh tên map và định dạng của file map gốc (nên để là .rmf). Sau đó click Save. Nó sẽ hiện ra 1 bảng khác. Tick tất cả vào Normal. Chú ý tick ở ô "Don't run the game". Sau đó chọn Run và ngồi chờ tác phẩm của mình ra lò. Cuối cùng, bật CS lên và thưởng thức tác phẩm của mình.:d
    Phần IV: Cấu trúc 3D
    Đây là một chương để giải thích cho mọi người hiểu cấu trúc các công trình của GoldSrc engine
    a/Kiểu phòng
    Vâng, khi xây map cho HL ta có thể phân kiểu phòng. Có 3 loại chính của kiểu phòng mà ta tạo đó là Walls, Halls và Outdoor.
    - Wall là tường. Nhưng với HL thì 1 bức tường chả có ý nghĩa gì. Wall ở HL chính là con đuờng nối giữa Halls với Halls, Halls với Outdoor hoặc Outdoor với Outdoor. Sau đây là vài bức hình ví dụ về Wall nối Halls với Halls.
    [​IMG]

    - Còn Hall là gì? Hall chính là 1 căn phòng trong nhà, khu vực bên trong nhà máy. Nói tóm lại những gì không tiếp xúc với bầu trời của chúng ta thì gọi là Hall.
    - Cuối cùng là Outdoor. Outdoor như cái tên của nó, là nơi ta có thể nhìn thấy bầu trời rộng nhất, bao la nhất. Outdoor rất quan trọng trong việc tạo ánh sáng và xây dựng.

    b/Sơn phết
    Một căn phòng muốn nên thực thì phải sơn phết kỹ càng. Nếu khi bạn đang xây mà muốn sơn bức tường trước khi xây nó thì nhìn qua góc phải phía trên.Bấm vào nút Browse ở bên cạnh cái hình vuông . Bạn sẽ thấy một cái khung gần giống như khi bạn ấn vào icon thứ 6. Đây là nơi để điều chỉnh hình ảnh sơn phết. Gõ từ khóa để tìm kiếm. Khi đã tìm được hình vừa ý, click đúp chuột vào hình đó để chọn.
    [​IMG]
    Sau đó, click vào 1 khối block bất kì và bấm vào icon thứ 5 từ trên xuống ở bên trái để "sơn" cho nó.
    Lưu ý khi sơn phết, bạn nên sơn đúng với tên của nó. Ví dụ flr là sàn nhà, wall là tường và ceil là trần nhà. Nếu bạn sơn sai thì sẽ dẫn đến máy văng vì không xác định được âm thanh cho cái nền nhà.
    Có những hình sơn khá là đặc biệt và mình lưu ý ở đây.
    - Nếu bạn cần xây bầu trời thì dùng "sky" làm cái trần nhà.
    - Nếu bạn cần 1 entity quay (như cửa quay, quạt gió, súng quay góc...) thì bạn cần 1 brush tô màu "origin" đặt chung với nó. Origin khá quan trọng vì sau này tôi sẽ có những tutorial mà ta có thể thấy sự quan trọng của cái Origin.
    - Nếu bạn cần 1 bức tường vô hình để chặn player thì hãy dùng "clip".
    - Nếu bạn cần làm 1 brush mà khi đi qua đó sẽ tạo 1 hiệu ứng (Brush này thực ra là 1 entity và nó có tên trigger_once, trigger_multiple) thì hãy xài "AAAtrigger".
    - Sẽ có những hình sơn có màu xanh dương làm nền. Đó là những hình sơn nhìn xuyên. Một cái lan can nếu bạn chăm chút sẽ ngốn tốc độ chạy của trò chơi. Nếu dùng những hình này thì bạn có thể nói là giảm 8/10 khả năng làm chậm Map.
    - Có những hình bắt đầu với "{". Đó là decal. decal giúp bạn xây những bức hình in chìm mà nếu xây brush, bạn sẽ ngốn tốc độ Map.
    - Có những hình bắt đầu với "~". Đó là những hình tự phát sáng. Hình này có chức năng giúp cho hiệu ứng ánh sáng thực hơn. Những hình này thường là đèn.

    c/Ánh sáng
    Ánh sáng rất rất rất là quan trọng. Một đồ họa 3D mà không có ánh sáng thì không có linh hồn. Ánh sáng dựa vào 1 entity. Mà khi lựa chọn cái icon thứ 4, bạn nhìn xuống góc dưới tay phải. Có 1 cái khung và nó ghi cái entity mà bạn sẽ tạo. Info_player_start nếu bạn mới xài thì nó sẽ có tên này. Bạn ấn vào mũi tên và tìm kiếm entity light. Việc tao entity giống như Info_player_start là bạn chỉ việc chỉ đúng nơi ánh sáng phát ra trên top(x/y) và side(x/y) và enter hoặc right mouse-> create entity.

    d/Prefabs
    Một căn phòng thật chán khi chẳng có món đồ nào cả. Cũng như khi bạn mới dọn nhà thì khi nhìn vào căn nhà mới toanh trống trơn thì bạn sẽ có cảm tưởng thế nào? Cái đó thì khỏi phải nói: Chán chết!
    Chính vì vậy mà hôm nay tôi sẽ dẫn dắt mọi người qua Prefabs. Prefabs là từ để gọi các đồ vật đã được tạo sẵn (tạo một món đồ rất rất công phu). Ta chỉ việc.. xài nó. Vẫn là nhìn qua cái khung entity nhưng lần này bạn chọn icon thứ 5 tay trái. Đây là 1 sự khác biệt khá lớn khi bạn thấy rằng Brush thì có Prefabs, còn Entity thì có Type. Để tạo Prefabs, đầu tiên chọn dấu mũi tên trong categories. Ở đây sẽ có 6 sự lựa chọn nhưng ta chỉ nên xài Usable Object. Click vào nó và rồi chọn cái mũi tên khung dưới nó có dạng như sau:
    [​IMG]
    Chọn vào món đồ mình cần. Ở đây tôi chỉ tạo cái File Cabinet (cái tủ đựng hồ sơ). Ấn vào Insert original prefab. Xong rồi thì bạn lựa chọn mũi tên bên tay trái (icon 1) rồi di chuyển nó vào vị trí. Nhớ là ấn Ctrl+W trước khi bạn bỏ lựa chọn nó. Làm y chang vậy với các vật dụng khác như Table, Black Chair và cuối cùng ta có:
    [​IMG]
    Thế là từ nay, căn phòng của bạn hết nhàm chán rồi!

    Phần V : 1 số nguồn cung cấp tut làm map
    Nếu muốn tìm hiểu sâu hơn, bạn có thể truy cập twhl.info hoặc countermap2.com, các trang này có nhiều tutorial (English) rất chi tiết, hữu ích.

    Trên đây là cách cơ bản để làm được 1 map cơ bản cho CS .Nếu có thắc mắc gì, cứ post vào topic này, mình sẽ trả lời trong thời gian ngắn nhất có thể

    HAVE FUN!
     
    Chỉnh sửa cuối: 19/11/17

Chia sẻ trang này