Phụ Lục
Khi nói về những chuyến xe của Gordon Freeman, game thủ chúng ta hẳn sẽ nghĩ ngay đến đoạn đầu game khi anh ngồi trên toa xe điện đi từ căn phòng số 309, khu nam Black Mesa đến phòng thí nghiệm cộng hưởng. Trường đoạn kéo dài khoảng 7 phút này đã cho game thủ được thấy các hoạt động của Black Mesa, khiến nó chân thực và có sức sống hơn hẳn.
Nhưng ban đầu, toàn bộ trường đoạn này vốn chỉ được tạo ra để thử nghiệm một kỹ thuật mới gọi là “func_tracktrain,” một bản nâng cấp của “func_train” trong engine Quake. Kỹ thuật này cho phép nhà phát triển tạo ra một vật thể chạy theo một đoạn đường dài được thiết lập sẵn, có thể phân nhánh và chuyển hướng dễ dàng. Valve nhanh chóng nhận thấy được tiềm năng của kỹ thuật này và ứng dụng nó vào rất nhiều tình huống trong game, và trong bài viết này, Mọt sẽ đem đến cho các bạn những điều thú vị bất ngờ được Valve tạo ra nhờ nó.
Dù ngày nay Half-Life nổi tiếng vì cốt truyện khá “xoắn não” với rất nhiều bí ẩn chưa được công bố, nhưng vào năm 1997 khi trò chơi còn đang trong quá trình phát triển, nó chỉ là một đống màn chơi chẳng liên quan gì đến nhau. Valve thuê Marc Laidlaw để viết ra một câu chuyện và sắp xếp các màn chơi đó lại với nhau sao cho mượt mà dù bản thân Valve chẳng mấy bận tâm đến cốt truyện, mà chỉ muốn cho game thủ đi từ map này sang map khác và bắn gục tất cả những con quái vật cản đường. Khi func_tracktrain được tạo ra, Marc được nhờ đưa một cảnh nào đó sử dụng func_tracktrain vào game. Và vì nó có chữ “train” trong tên, còn gì hợp hơn là một đoàn xe điện?
Để xe điện chạy thì phải có đường ray. Các lập trình viên của Valve tạo ra đường ray cho toa xe của Marc bằng cách đặt một loạt điểm trên đường, mỗi điểm có một cái tên riêng và chứa tên của điểm kế tiếp. Khi func_tracktrain chạy, nó sẽ chạy theo đúng thứ tự đã được quy định. Nếu chẳng may toa xe… bay khỏi đường chạy, điều đó có nghĩa là có sai sót ở một ký tự nào đó trong tên của các điểm, và lập trình viên sẽ phải căng mắt dò từng chữ cái một trong tên để khắc phục sai lầm.
Tạo đường ray cho xe chạy là một thử thách, tạo ra cảnh quan để khách trên xe ngắm là thử thách thứ hai. Trong toàn bộ hành trình dài 7 phút của Gordon Freeman, anh chàng sẽ ngồi trên toa xe được làm bằng kỹ thuật func_tracktrain để băng qua đến 6 bản đồ khác nhau, nhưng được Valve khéo léo gom lại làm một để giảm tối thiểu thời gian load và đem lại cho game thủ cảm giác như một chuyến đi bình thường. Thời đó, kỹ thuật nạp khu vực mới khi game thủ gần đến rìa của khu vực cũ chưa được tạo ra, nên Valve cần phải dùng một cách khác để tạo ra ảo giác đó.
Họ làm điều đó như thế nào? Bằng cách cho các bản đồ (map) có những “căn phòng” giống hệt nhau. Nếu map 1 kết thúc bằng một đường hầm bê tông, map 2 phải khởi đầu bằng một đường hầm y hệt, và cứ thế cho đến map 6. Nhược điểm của phương pháp này là nếu đội ngũ phát triển thay thế một chút xíu nào đó ở cuối map 1, họ phải làm điều tương tự ở map 2 – một điều khá tốn thời gian và có thể dẫn đến sai sót. Vì vậy, tất cả các khu vực chuyển tiếp giữa hai map đều là những hành lang rất hẹp, rất ít chi tiết.
Ngày nay, card đồ họa có 2, 4, 6, thậm chí 11 GB bộ nhớ là chuyện bình thường, nhưng vào thời của Half-Life 2, 64 MB là xa xỉ. Vì vậy khi phát triển Half-Life, mỗi bản đồ trong game chỉ được dùng tối đa 2 MB vân bề mặt – chưa bằng một bụi cây trong Call of Duty: Black Ops 4 ngày nay. Một trong những kỹ thuật được Valve dùng để thu nhỏ khối lượng bộ nhớ cần cho mỗi bản đồ là những căn phòng kín, thông với những hành lang gấp khúc để chặn tầm nhìn của game thủ. Valve phải tính trước xem phòng nào có thể nhìn sang phòng nào, và lập trình cho game không load vân bề mặt hay vật thể mà game thủ chưa thể nhìn thấy được. Đó là lý do mà trong chuyến xe của Gordon Freeman, có rất nhiều chỗ gấp khúc hay các cánh cửa áp suất chặn tầm nhìn.
Bản thân toa xe mà nhân vật chính cưỡi cũng rất thú vị. “Cánh cửa” mà bạn thấy thực ra là một phần của toa xe và không thể được mở ra, nói nôm na là Valve không thể lắp bản lề cho cánh cửa vào toa xe do giới hạn về mặt kỹ thuật của engine Source. Chính giới hạn này khiến bạn phải ở trên toa xe một mình, vì các lập trình viên Valve không thể cho thêm một vật thể hay NPC nào ngồi yên trên xe cùng với bạn. Do cánh cửa không thể mở ra, Valve buộc phải để game khởi đầu khi Gordon Freeman đã ở trên xe, thay vì để bạn tự điều khiển anh chàng bước lên xe.
Có thể bạn sẽ thắc mắc rằng nếu Mọt nói cánh cửa đó không thể được mở ra, tại sao anh bảo vệ lại mở được cửa cho bạn ra khi toa xe đến đích? À, lại là một trò ma mãnh khác của Valve. Khi toa xe đến đích, game load một bản đồ mới giống y hệt bản đồ hiện tại, chỉ khác biệt là nó “hô biến” toa xe func_tracktrain bạn đang ngồi thành một phần không thể di chuyển của bản đồ, còn cánh cửa trở thành một func_tracktrain mới có thể di chuyển được. A lê hấp, giờ đây cánh cửa đã có thể được mở ra! Ai nói rằng xe phải có hình dạng như một chiếc xe? Nó cũng có thể có hình dạng một cánh cửa nữa. Khi cộng đồng modder của Half-Life khám phá ra mẹo này, họ xem đây là một “độc chiêu” thuộc hàng huyền thoại của Valve.
Trong số những màn chơi đó, có rất nhiều “chuyến xe” cũng không mang hình dạng của một chiếc xe, chẳng hạn như chiếc lồng sắt và con quái vật “ichthyosaur” trong chương Apprehension giữa game.
Khi bước vào khu vực này, game thủ sẽ kích hoạt một sự kiện khiến con quái vật ichthyosaur nhảy khỏi mặt nước và xơi tái một nhà khoa học đã bị biến thành quái vật. Điều này hướng tầm mắt của bạn lên cao, nhìn vào cái lồng sắt được treo lơ lửng chứa khẩu súng bắn tên. Ngay cả khi bạn chưa phát hiện ra khẩu súng vào lúc này, Valve đã thiết kế địa hình xung quanh để buộc Gordon Freeman phải đi vòng quanh lồng sắt, nhìn vào nó từ mọi phía và chắc chắn sẽ để ý đến khẩu súng bắn tên được nạp sẵn 5 mũi tên. Để giết chết con ichthyosaur, bạn cần phải bắn trúng nó 4 hoặc 8 lần tùy vào độ khó, nhưng thật may mắn là trước đó, Valve có một câu đố nhỏ với phần thưởng là lựu đạn cho khẩu tiểu liên và 20 mũi tên.
Tất cả những điều này liên quan gì đến func_tracktrain? Khi bạn chui vào lồng sắt để lấy khẩu súng, nó sẽ rơi xuống nước theo những điểm đã được thiết lập sẵn – bản thân cái lồng sắt này là một “chuyến xe” của Gordon Freeman. Dù đoạn đường nó di chuyển khá ngắn, đây vẫn là một func_tracktrain hoàn chỉnh với “toa xe” và “đường ray.” Lại một lần nữa các lập trình viên Valve thể hiện sự ma mãnh của mình bằng cách đưa ra một giải pháp bất ngờ cho một vấn đề phức tạp trong game.
Mà thật ra, chính con quái vật ichthyosaur cũng được tạo ra dựa trên func_tracktrain. Hãy tưởng tượng thân hình nó là toa xe, và khi vờn quanh Freeman, thật ra nó đang đi theo đường ray đã được Valve lập trình sẵn trước khi lao vào tấn công người chơi. Sau khi đánh bại nó, game thủ có thể mở cánh cửa sắt chìm dưới nước để đi sang khu vực kế tiếp của trò chơi và khám phá những “chuyến xe” kế tiếp.
Cuối cùng, còn có một điều thú vị ẩn trong cánh cổng sắt vừa được nhắc đến. Để mở nó ra, game thủ cần phải xoay một van rỉ sét trong 12 giây (bằng với thời gian mà Gordon có thể nín thở), điều bất khả thi khi con quái vẫn đang muốn “đớp đít” bạn. Vì vậy game thủ cần phải bắn hạ con quái trước – hay ít ra là Valve nghĩ thế. Khi chơi thử, những game thủ tinh quái không chờ đến khi nó được mở hoàn toàn mà chui qua khe cửa ngay khi nó chỉ mới mở được 6-7 giây. Để ngăn chặn điều này, Valve bổ sung thêm một dòng mã lập tức báo động cho con quái khi bạn chạm vào van, để nó lao vào tấn công ngay lập tức, bỏ qua đường ray được định sẵn. Nói một cách nghiêm túc thì Valve đã… gian lận trong vụ này, nhưng nó chẳng ảnh hưởng gì đến hòa bình thế giới và vì thế mọi thứ vẫn OK.