Dựng bản đồ game 3D từ bản đồ thực tế

Khi bắt đầu Một Ngày Làm Chó, AuraX đặt mục tiêu: người chơi ở Bắc Ninh mở game lên phải nhận ra ngay con đường, dãy nhà và sân gạch quen thuộc quanh Công viên Lãm Làng. Vẽ tay toàn bộ khu vực bán kính 500 mét là không khả thi với một đội nhỏ, vì vậy chúng tôi xây dựng một quy trình tự động biến dữ liệu bản đồ số thành thế giới 3D, sau đó bổ sung thủ công những chi tiết mà dữ liệu còn thiếu.
Bước 1: chọn hệ tọa độ và đóng băng tâm bản đồ
Mỗi bản đồ trong game có hệ tọa độ cục bộ riêng tính bằng mét, gốc đặt tại tâm công viên, trục X hướng Đông và trục Z hướng Bắc. Tọa độ kinh độ – vĩ độ được chiếu sang mặt phẳng bằng phép chiếu Transverse Mercator lấy tâm bản đồ làm gốc, nên sai số hình học trong phạm vi vài trăm mét gần như bằng không.
Tâm bản đồ được đóng băng ngay từ đầu: chỉ cần dịch tâm một mét, mọi ô bản đồ đã sinh, vị trí NPC, bãi quái và điểm nhiệm vụ đều lệch theo.
Bước 2: chia bản đồ thành ô 250 × 250 mét
Thế giới được cắt thành các ô vuông 250 mét. Mỗi ô là một tệp mô hình riêng gồm địa hình, nhà, chi tiết mái, mặt nước và cây – khoảng 4–6 lệnh vẽ cho mỗi ô. Điện thoại chỉ nạp các ô quanh người chơi, bán kính nạp thay đổi theo mức đồ họa.
Quy trình sinh ô có tính tất định: chạy lại với cùng dữ liệu cho ra kết quả giống hệt, nhờ số ngẫu nhiên được gieo theo mã định danh của từng công trình. Nhờ đó có thể mở rộng bán kính bản đồ mà không làm thay đổi những ô người chơi đã quen.
Bước 3: dựng nhà phố Việt Nam
Dữ liệu bản đồ chỉ cho biết đường viền và đôi khi số tầng của công trình. Để ra được dáng nhà ống Việt Nam, pipeline:
- Dựng khối tường theo đường viền, chọn màu sơn ngẫu nhiên trong bảng màu nhà phố (vàng, hồng, cam, kem).
- Xác định mặt tiền hướng ra đường để vẽ cửa sổ, ban công và cửa hàng tầng trệt; các mặt tường chung để trơn.
- Gắn biển hiệu cửa hàng từ bộ biển dựng sẵn, bật sáng vào ban đêm.
- Thêm cột điện, dây điện chằng chịt và vạch kẻ đường – những chi tiết làm nên "chất" phố Việt.
Nhà sinh thêm được dùng để lấp những khu dân cư mà dữ liệu bản đồ bỏ trống, và luôn được đánh dấu riêng để phân biệt với công trình có thật.
Bước 4: địa hình, mặt nước và cây
Mỗi ô có một bản đồ trộn chất liệu 512 điểm ảnh với bốn kênh: nhựa đường, gạch lát và vỉa hè, cỏ công viên, rừng cây. Địa hình được cắt theo bờ nước, mặt hồ là lưới riêng, có tường va chạm vô hình để nhân vật không đi xuyên ra giữa hồ. Cây được vẽ theo từng nhóm 125 mét với hai mức chi tiết.
Bước 5: bổ sung thủ công và kiểm chứng thực tế
Bên trong Công viên Lãm Làng, dữ liệu bản đồ số gần như trống. Đội phát triển bổ sung vùng rừng cây, nền lát, nhà chờ, sân chơi và khu vui chơi, với nguyên tắc: chỉ đặt vật thể khi vị trí đã được đối chiếu với ảnh vệ tinh có ngày chụp rõ ràng hoặc hình ảnh thực tế.
Bước 6: từ bản đồ đến lối chơi
Khi hình học đã xong, bản đồ được chia thành 8 khu vực mở theo cấp độ, đặt bãi quái, quầy NPC và mạng đường cho người đi bộ, xe máy, ô tô. Đường được cắt tại mọi giao lộ để xe biết dừng chờ ở ngã ba, ngã tư. Người chơi có thể xem bản đồ 8 khu và danh sách bãi quái trên trang giới thiệu Một Ngày Làm Chó.
Bài học rút ra
- Tự động hóa phần lặp lại, thủ công phần tạo cảm xúc. Hàng nghìn ngôi nhà do máy sinh; sân gạch, nhà chờ, khu vui chơi do người đặt.
- Kết quả tất định là điều kiện để mở rộng. Bản đồ lớn dần mà không phá vỡ nội dung đã có.
- Kiểm chứng bằng nguồn có ngày tháng. Bối cảnh thật chỉ thuyết phục khi chi tiết đúng với thực tế.
Quy trình này cũng phù hợp với các dự án mô phỏng đô thị, bản đồ số cho bất động sản, du lịch ảo hoặc đào tạo. AuraX nhận tư vấn và phát triển các giải pháp 3D và bản đồ số – liên hệ để trao đổi.