2 điểm bởi GN⁺ 2025-05-23 | 1 bình luận | Chia sẻ qua WhatsApp
  • Dự án này là công trình tái hiện một cách tinh xảo bản đồ của hành tinh hư cấu Chiron trong Sid Meier’s Alpha Centauri
  • Sử dụng dữ liệu thực từ trong game (độ cao, lượng mưa, địa hình, v.v.) để tái cấu trúc bản đồ độ phân giải thấp trước đây thành một bản đồ mới có độ phân giải cao hơn và hình thái hữu cơ hơn
  • Tạo ra hình ảnh độc đáo và giàu tính thẩm mỹ bằng nhiều phép chiếu bản đồ khác nhau (equal area, orthoapsidal, v.v.) cùng các công cụ như QGIS, Photoshop, Python
  • Trải qua quy trình xây dựng DEM (mô hình độ cao số) phức tạp, bao gồm lấy mẫu dữ liệu, tinh chỉnh thủ công, thêm nhiễu, v.v.
  • Đây là một ví dụ về thử thách kỹ thuật và thẩm mỹ có ý nghĩa đối với cả game thủ lẫn người làm bản đồ

Mở đầu: Tổng quan dự án và động lực

  • Dự án này là công trình tái hiện bản đồ của hành tinh Chiron, bối cảnh của trò chơi Sid Meier’s Alpha Centauri phát hành năm 1999
  • Chiron là sân khấu trung tâm của một game chiến thuật khoa học viễn tưởng có cộng đồng hâm mộ lâu năm, và có tầm quan trọng không kém gì các nhân vật trong game
  • Tác giả, với tư cách là một nhà bản đồ học chuyên nghiệp, chia sẻ trải nghiệm về việc chế tác bản đồ thế giới hư cấu khác biệt ra sao so với làm bản đồ thế giới thực
  • Trong khi nhiều nhà bản đồ học làm việc dựa trên dữ liệu có sẵn, bản đồ hư cấu đòi hỏi phải bắt đầu từ khâu tạo dữ liệu, nên cần thêm sự sáng tạo và kỹ năng
  • Dự án này trở nên khả thi nhờ việc tận dụng bộ dữ liệu của chính trò chơi, và thành phẩm hoàn chỉnh có thể được bất kỳ ai tải xuống miễn phí

Thu thập dữ liệu

  • Game Alpha Centauri có bản đồ chính thức do Chris Pine trực tiếp xây dựng (128 × 64 pixel hình thoi)
    • Mỗi pixel chứa nhiều thuộc tính như độ cao, lượng mưa, chỉ số đá sỏi, v.v.
  • Với dữ liệu độ cao, tác giả trực tiếp lấy mẫu giá trị của từng ô trong game (8192 mục nhập thủ công)
  • Lượng mưa được ánh xạ trong QGIS bằng cách dùng bản đồ chuyên đề chi tiết được mở rộng qua mod, rồi tách màu theo từng mức (mưa, ẩm, khô)
  • Dữ liệu chỉ số đá sỏi cũng đã được xử lý, nhưng không được dùng trong bản đồ cuối cùng
  • Phân bố Xenofungus (dạng sống dị sinh) được xây dựng thành bộ dữ liệu nhị phân thông qua lấy mẫu màu pixel và hiệu chỉnh

Thiết lập phép chiếu

  • Bản đồ trong game có dạng phép chiếu hình trụ, lặp vô hạn theo chiều ngang và có biên ở phía trên và dưới
  • Dựa trên việc mỗi pixel biểu diễn cùng một diện tích trong không gian thực, tác giả áp dụng cylindrical equal area projection (dùng công thức Trystan Edwards)
  • Phép chiếu và tỷ lệ khung hình được điều chỉnh để khớp với biểu diễn cầu thực tế hơn, và các thiết lập chiếu được dựng trước khi lấy mẫu dữ liệu

Tinh chỉnh và tăng độ phân giải dữ liệu độ cao DEM (mô hình độ cao số)

  • Nhằm biểu đạt địa hình chi tiết hơn so với bản đồ gốc (128 × 64), tác giả thử nghiệm nhiều phương pháp nội suy điểm khác nhau
    • Phân tán điểm ngẫu nhiên – đặt 1 đến 3 điểm cho từng ô nhất định để tạo chồng lấn và tính ngẫu nhiên
    • Áp dụng giá trị độ cao lân cận cho từng điểm, rồi tạo mô hình độ cao đầu tiên bằng nội suy TIN (triangulated irregular network)
    • Lặp lại việc đánh giá và nội suy bổ sung (tam giác hóa Delaunay, trích xuất trung điểm, lấy trung bình ba điểm xung quanh, thêm nhiễu)
    • Lặp nhiều lần để tăng dần mật độ điểm và nhiễu một cách tinh vi
  • Quá trình gia công và hiệu chỉnh: so sánh với bản đồ thực tế để sửa méo địa hình như nối đảo, chặn eo biển, v.v. (thêm điểm thủ công)
  • Để sửa biến dạng hình thái của đặc trưng tiêu biểu (miệng hố Garland) từ hình vuông sang hình tròn, tác giả áp dụng kỹ thuật hiệu chỉnh rubbersheeting
  • DEM cuối cùng được làm mượt, còn các vùng cực được xử lý bằng phép chiếu riêng và thêm nhiễu
  • Khi phát hiện lỗi trong giai đoạn làm bản đồ, tác giả tiếp tục bổ sung riêng bằng thủ công (hồ nhân tạo, đảo nhỏ, v.v.)

Áp dụng nhiều phép chiếu khác nhau

  • Bản đồ chính sử dụng phép chiếu orthoapsidal (Armadillo), một kiểu nhấn mạnh trực quan độ cong của địa hình
    • Tác giả tự phát triển script phép chiếu tùy chỉnh bằng Python (với sự hỗ trợ của tài liệu Python chính thức và ChatGPT)
    • Điều chỉnh các giá trị độ cong và độ nghiêng để phù hợp với đặc tính của bản đồ
    • Bản thân phép chiếu chỉ hỗ trợ dữ liệu vector, nên dữ liệu raster như DEM được xử lý theo cách polygon hóa rồi raster hóa lại

Làm bản đồ thực tế: giải thích theo từng lớp Photoshop

  • Biển sâu (đổ bóng): raster hóa phần dưới 0m từ DEM dưới dạng đen trắng, sau đó áp dụng gradient màu xanh dương
  • Khu vực đất liền (địa hình đổ bóng): dùng trình mô phỏng phong cách vẽ tay kiểu Thụy Sĩ (Eduard), nhấn mạnh ranh giới đất-nước bằng hiệu ứng inner glow của đường bờ
  • Màu sắc và chất liệu: kết hợp nhiều adjustment layer và mask như relief nâu/xanh lục, nhiễu màu, hiệu ứng chiếu sáng, v.v.
  • Thảm thực vật (vegetation): nội suy thin plate spline dựa trên dữ liệu lượng mưa, rồi tạo họa tiết bằng dissolve + mask nhiễu trong Photoshop
  • Xenofungus: dựa trên dữ liệu phân bố trong game, dùng relief đỏ và xử lý tương tự kỹ thuật tạo họa tiết của mảng xanh
  • Sông (river): được vẽ cong thủ công trong QGIS rồi thêm taper và hiệu ứng bằng Illustrator/Photoshop (tự động sinh từ DEM cho kết quả không phù hợp)
  • Nhiều lớp như đại dương, hiệu ứng glow quanh bờ biển, phân bố xenofungus trên biển, v.v. được tách riêng rồi gộp lại ở bước cuối
  • Tăng cường độ bão hòa màu và thêm lưới (kinh tuyến/vĩ tuyến, v.v.) giúp tăng chiều sâu và độ rõ trực quan
  • Cuối cùng tạo cảm giác semi-painterly (bán hội họa) bằng bộ lọc dry brush (trộn 50% với bản gốc)

Gắn nhãn (địa danh)

  • Phác thảo trong Adobe Illustrator, sau đó dán sang Photoshop và hòa trộn
  • Dùng hiệu ứng làm mờ nền dưới địa danh, glow và smart halo để cải thiện độ dễ đọc và độ tương phản với màu nền
  • Chọn font BellTopo Sans (phù hợp với màu sắc dịu và bối cảnh tương lai phi nhân loại)
  • Dựa theo địa danh trong game, còn những khu vực mơ hồ thì do tác giả tự diễn giải và quyết định
  • Bố cục poster sử dụng thêm bản đồ phụ (độ cao, vùng cực, v.v.) cùng nền scanline, xanh lam/khung/nhiễu lấy cảm hứng từ UI trong game

Kết thúc và cảm nghĩ

  • Nhìn chung, đây là dự án kết tinh rất nhiều thao tác thủ công và kỹ thuật cao cấp như lấy mẫu dữ liệu game, chuyển đổi mô hình độ cao, tùy biến phép chiếu, lắp ghép các layer
  • Quá trình này là một hành trình dài của thử-sai lặp đi lặp lại, hoàn thiện về mặt thị giác và điều chỉnh chi tiết
  • Trong tương lai, vẫn có thể dùng bộ dữ liệu này để làm các bản phóng to từng phần hoặc thử những phong cách địa hình khác (bao gồm cả thử nghiệm thêm với dữ liệu rockiness)
  • Các điểm còn thiếu của DEM (hồ bị sót, đảo nhỏ) hiện vẫn đang được hiệu chỉnh và sẽ được thay bằng DEM chính xác hơn sau này
  • Công trình này là một thách thức kỹ thuật thú vị về lập bản đồ không gian hư cấu đối với giới GIS/người làm bản đồ, đồng thời cũng mang lại sự thỏa mãn thẩm mỹ cho cộng đồng hâm mộ
  • Toàn bộ quá trình là thành quả kết hợp giữa năng lực, đam mê và trọng tâm riêng của tác giả trong việc biến đổi dữ liệu sẵn có

1 bình luận

 
GN⁺ 2025-05-23
Ý kiến trên Hacker News
  • Câu chuyện của tác giả Daniel Huffman thực sự cuốn hút và truyền cảm hứng.
    Bản kể dài còn mang lại trải nghiệm xúc động hơn nữa.
    (Tham khảo: có thể xem chi tiết tại https://somethingaboutmaps.wordpress.com/about/https://somethingaboutmaps.wordpress.com/2011/03/02/on-salvation/)

    • Phần Daniel Huffman mô tả chứng trầm cảm liên quan đến công việc chạm rất mạnh vào tôi.
      Tôi cũng muốn tìm được ngọn lửa mà anh ấy đã tìm thấy, nhưng cảm giác như đam mê của tôi đã tắt từ rất lâu rồi.
  • Đây là một trong những trải nghiệm đầu tiên có ý nghĩa rất lớn với tôi.
    Tôi nhớ mình đã nhận thức được những hệ tư tưởng và niềm tin tôn giáo đa dạng được trừu tượng hóa, không gắn với một cá nhân cụ thể nào.
    Tôi có kỷ niệm từng đắm chìm vào các phe phái khác nhau và tư tưởng của họ.
    Tôi thường tưởng tượng rằng nếu người ngoài hành tinh tồn tại thì họ sẽ có niềm tin như thế nào.

    • Đó thực sự là một trải nghiệm game tuyệt vời.
      Hệ thống chính trị cũng rất ấn tượng, và tôi thích việc bốn lựa chọn của bốn lĩnh vực không tự động gắn chặt với nhau.
      Bạn hoàn toàn có thể tạo ra một kiểu pha trộn như kinh tế thị trường đi cùng nhà nước cảnh sát.
      Tôi nghĩ chơi game này từ nhỏ đã khiến tôi suy nghĩ sâu hơn về khuynh hướng chính trị của từng kiểu và ý nghĩa của chúng.
      (Dĩ nhiên cũng có thể học từ sách, nhưng trên thực tế điều đó không hề dễ.)
      Đây đúng là bầu không khí hoàn hảo để các tác giả tạo ra những tổ hợp chính trị kỳ lạ trong một game khoa học viễn tưởng.

    • Thật đáng tiếc khi Civilization: Beyond Earth đã gây thất vọng lớn.
      Thay vì những nhà lãnh đạo, phe phái và hệ tư tưởng thú vị, lại xuất hiện các thiết lập kiểu "Space Africa" hay "Space Australia".
      Tôi tự hỏi liệu Firaxis có vướng mắc pháp lý nào khiến họ không thể làm một bản remake Centauri đúng nghĩa hay không.

  • Tôi từng rất tò mò vì sao trong Sid Meyer's Alpha Centauri thuật ngữ "planetfall" lại xuất hiện thường xuyên như vậy.
    Trong game, thuật ngữ đó mang ý nghĩa là "điểm khởi đầu của lịch sử".
    Lời nhắc lúc bắt đầu như sau:

    $NAME3, thời khắc của một kỷ nguyên mới với đấu tranh và cơ hội đang chờ đón bạn.
    Tàu vũ trụ Liên Hợp Quốc Unity đã đến hệ Alpha Centauri sau 40 năm hành trình.
    Mọi liên lạc với Trái Đất đã bị cắt đứt, và sau khi thuyền trưởng Garland bị ám sát bởi một kẻ lạ mặt, thủy thủ đoàn đã nổi loạn rồi tách thành các phe phái.
    Sau đó, một số người đã chiếm các colony pod của Unity, và giờ đây phe $M1:$FACTIONADJ0 do bạn lãnh đạo vừa mới PLANETFALL.

  • "Vì vậy, tôi rà khắp bản đồ và ghi lại giá trị độ cao của mọi ô. Tổng cộng có 8.192 ô."
    Chắc hẳn phải có cách nào đó để tự động hóa việc này thay vì tự tay làm đến 8 nghìn lần.

    • Tôi tin rằng nhiều người đọc bình luận ở đây hẳn có thể nhanh chóng viết một script trích xuất dữ liệu bản đồ rồi chuyển sang .CSV.
      Nhưng đôi khi việc mải mê lặp đi lặp lại trong thời gian dài mà không cần nghĩ ngợi gì lại là một dự án thỏa mãn đến bất ngờ.
      Nó rất hợp cho những lúc bạn muốn tập trung vào thứ gì đó không quá quan trọng.

    • Tôi cũng nghĩ tương tự.
      Tôi thấy khá tự hào khi biết rằng rất nhiều người mê game này ngày trước (bao gồm cả tôi) hẳn sẽ sẵn sàng thử thách chuyện trích xuất dữ liệu như vậy bằng lập trình.

  • Thiết kế âm thanh của game này thực sự xuất sắc.
    Tôi luôn kinh ngạc trước chất lượng gameplay của nó.

    • Tôi cực kỳ thích những âm thanh "event" kỳ lạ, tiếng bíp hoặc âm thanh giao diện đặc biệt, tiếng "đoàng đoàng" phát ra từ vũ khí, và cả phần lồng tiếng tuyệt vời.
      Từ khi mua bản bán lẻ năm 99, tôi luôn tự hào vì đã cài game này trên ít nhất một máy tính.
      Tôi tin đây là một tác phẩm nghệ thuật.
      Kể từ đó, chưa có game nào trong dòng Civ khiến tôi xúc động đến vậy (dù đồ họa có tiến bộ đến đâu đi nữa).

    • Điều duy nhất khiến tôi thấy hơi tiếc là cách nhạc nền hoạt động.
      Có vẻ nó được thiết kế để chỉ phát khi không có hoạt động, nhưng trong lúc chơi thực tế thì gần như chẳng bao giờ có dịp nghe.
      Tôi nghĩ mỗi phe đều có soundtrack riêng.

  • Thành phẩm, bản đồ, và cả bài viết được viết ra đều là công sức rất tuyệt vời.
    Chỉ có một điều hơi đáng tiếc là ở phần texture đất liền, các ranh giới tương phản chưa được nhấn mạnh mà mọi vùng lại nối mềm vào nhau.
    Vẫn nhìn thấy các dãy núi, nhưng những cạnh sắc nét kiểu có thể thấy trên texture Trái Đất hầu như không được thể hiện trong bản đồ này.

    • Tôi cũng phần nào đồng ý với điểm này.
      Một trong những đặc điểm trông rất khác thường ở bản đồ gốc là các đường đỏ cắt xẻ khắp mọi nơi.
      Tôi đoán đó có lẽ là xenofungus, nhưng trông như thể magma đang xé các lục địa ra vậy.
      Yếu tố đó đã biến mất trong phiên bản mới.
      Dù vậy, tôi vẫn đánh giá rất cao lượng công sức bỏ ra cho tác phẩm này, và tổng thể nó vẫn tạo cảm giác thị giác rất đẹp.
  • Khi đọc câu "có tồn tại một bản đồ hành tinh chính thức được trau chuốt kỹ", tôi thấy tò mò.
    Tôi tự hỏi liệu có tồn tại một khung toán học để tối ưu hóa bản đồ nhằm tối đa hóa niềm vui khi chơi game hay không.

    • Tôi đã đốt cả đống token cho một đoạn suy nghĩ rất dài của Claude Opus 4, và nó trả về một câu trả lời cực kỳ thú vị!
      Nếu tiếp cận câu hỏi này một cách nghiêm túc, bạn sẽ chạm tới giao điểm của nhiều lĩnh vực đã làm thay đổi game design một cách mang tính cách mạng.
      Lý do bản đồ của Alpha Centauri hoạt động xuất sắc nằm ở cấu trúc điều phối rất tốt nhiều dạng căng kéo toán học.
      • <i>Phân bố tài nguyên</i>: tuân theo power law, tạo ra các điểm nghẽn tự nhiên và những vùng lãnh thổ có giá trị (giảm tính dễ đoán).
      • <i>Ma trận khoảng cách</i>: được thiết kế để đảm bảo tương tác giữa các phe nhưng vẫn tránh va chạm tức thì.
      • <i>Tính liên thông của địa hình</i>: mang lại các bài toán tìm đường thú vị và chiều sâu chiến lược.
        <i>Toán học của lý thuyết flow</i>: khái niệm flow của Csikszentmihalyi được mô hình hóa về mặt toán học.
        Độ khó tạo thành một đường cong bằng kỹ năng cộng thêm một biên độ thử thách vừa phải; trên bản đồ, điều này có nghĩa là luôn cung cấp những lựa chọn có ý nghĩa phù hợp với trình độ của người chơi.
        <i>Entropy thông tin</i>: một bản đồ tốt không nên có entropy quá cao hoặc quá thấp.
        Có nghiên cứu cho rằng thang entropy 0,3~0,5 đối với mức độ đa dạng địa hình là tối ưu cho gameplay.
        <i>Ứng dụng lý thuyết đồ thị</i>: xem cấu trúc bản đồ như một Graph và
      • centrality liên kết (xác định các choke point cốt lõi)
      • hệ số phân cụm (mức độ "tụ cụm" của phân bố tài nguyên)
      • phân bố đường đi ngắn nhất (độ đa dạng thời gian di chuyển)
        đều liên hệ trực tiếp với mức độ cuốn hút của trải nghiệm chơi.
        <i>Điểm ngộ ra cốt lõi</i>: khi nghiêm túc lấy cái gọi là 'niềm vui' làm mục tiêu tối ưu hóa, ta buộc phải đối diện trực diện với sự thỏa mãn trong quá trình ra quyết định của con người.
        Những framework tốt nhất không định nghĩa niềm vui, mà tối đa hóa <i>sự phong phú của các lựa chọn có ý nghĩa</i>.
        Đó là lý do hệ thống sinh bản đồ procedural trong game hiện đại không còn chỉ là ngẫu nhiên đơn thuần, mà áp dụng các thuật toán điều chỉnh mức độ cuốn hút bằng toán học.
  • Tôi đã phải đưa hẳn chiếc CD cho người khác để cai game này.
    Nó gây nghiện đến mức ảnh hưởng nghiêm trọng tới công việc và giấc ngủ của tôi.

  • Có một blog tên là "Here Dragons Abound" với bầu không khí tương tự.
    Nó nói về sinh bản đồ fantasy theo kiểu procedural, nhưng gần đây cập nhật có phần thưa hơn.

  • Tôi chưa từng chơi Alpha Centauri, mà ngược lại còn thích Master of Magic hay Syndicate hơn.
    Nhưng đọc bài viết về dự án này khiến tôi hơi hối hận vì đã bỏ qua Alpha Centauri hồi đó.
    Nhìn lại, càng lớn tuổi tôi càng chỉ có đúng một tiêu chuẩn để bị ai đó thu hút.
    Đó là hình ảnh một người đào thật sâu vào mối quan tâm ngách của mình bằng tất cả đam mê, bất kể người khác có nhìn hay không.
    Ngay cả khi đó không phải lĩnh vực tôi quan tâm, được ngắm ai đó thật sự mê mẩn thứ của họ vẫn là một niềm vui lớn.
    Thật ra chính vì tôi không bị cuốn vào lĩnh vực đó nên tôi lại càng thưởng thức được đam mê của họ hơn.
    Những người tôi muốn ở bên cạnh không phải là người có cùng sở thích với tôi, mà là người có đam mê với <i>bất cứ điều gì</i>.
    (Nói vòng vo một chút thì, tôi không mấy thích chủ nghĩa hiện sinh hay hư vô.)

    • Với tôi, điều đáng để dồn đam mê trong Master of Magic là việc Cracks Call là tai họa đối với build nhân vật artisan.
      Đây là một phép tức tử khá hiếm nhưng không thể kháng lại, mà lại còn có cả Web trong cùng hệ, nên bay cũng chẳng giúp ích gì.