3 điểm bởi GN⁺ 2025-05-08 | 1 bình luận | Chia sẻ qua WhatsApp
  • Mã nguồn của game indie năm 2010 VVVVVV đã được công khai; game do Terry Cavanagh phát triển, phần âm nhạc do Magnus Pålsson đảm nhiệm
  • Mã nguồn của phiên bản desktop nằm trong thư mục desktop_version của repository
  • VVVVVV hiện vẫn đang được bán thương mại, nhưng bạn có thể tự do biên dịch các bản build cho mục đích sử dụng cá nhân
  • Nếu muốn phân phối phiên bản đã biên dịch, cần kiểm tra LICENSE.md trong repository
  • Thảo luận liên quan đến các bản cập nhật VVVVVV chủ yếu diễn ra trên kênh vvvvvv-code của VVVVVV Discord không chính thức

Mã nguồn được công khai

  • Repository này chứa mã nguồn của game indie năm 2010 VVVVVV của Terry Cavanagh
  • Có thể xem thông báo công khai mã nguồn trong bài thông báo trên blog của Terry: announcement
  • Mã nguồn phiên bản desktop nằm trong thư mục desktop_version

Điều kiện sử dụng và phân phối

  • VVVVVV hiện vẫn có thể mua thương mại tại thelettervsixtim.es
  • Nếu dùng cho mục đích cá nhân, bạn có thể tự biên dịch game
  • Nếu muốn phân phối phiên bản game đã biên dịch, cần kiểm tra LICENSE.md

Kênh thảo luận về cập nhật

  • Các thảo luận về cập nhật VVVVVV chủ yếu diễn ra trên VVVVVV discord không chính thức
  • Kênh liên quan là vvvvvv-code

1 bình luận

 
GN⁺ 2025-05-08
Các ý kiến trên Hacker News
  • Khi gần hết cấp ba, tôi cùng gia đình đến London. Vì muốn trở thành nhà phát triển game, tôi đã gửi email cho Terry Cavanagh, và thật bất ngờ là anh ấy vui vẻ đồng ý đi ăn trưa cùng tôi
    Anh ấy thực sự rất tử tế và cho tôi nhiều lời khuyên về cuộc sống. Tôi nhớ anh ấy nói rằng phần lớn ý tưởng không đến từ một tầm nhìn to tát nào đó, mà đến từ việc mày mò và thử nghiệm với cơ chế game. Dù sao thì anh ấy là một người tuyệt vời, và tôi rất vui khi anh ấy mở mã nguồn VVVVVV, trò mà anh ấy gọi là V

    • Phần “phần lớn ý tưởng đến từ việc mày mò và thử nghiệm với cơ chế” rất quan trọng. Quá nhiều người nghĩ rằng ý tưởng mới chỉ xuất phát từ khái niệm trừu tượng, nhưng chúng hoàn toàn có thể nảy sinh khi chơi đùa với chính phương tiện đó
    • Tôi đã học được rằng hai câu sau là đúng: nếu không hỏi thì bạn thậm chí không thể bị từ chối, và câu “đừng gặp anh hùng của mình” chỉ là ảo tưởng
      Phải gặp vài người thật sự tệ thì mới nhận ra đúng những người thực sự tốt
    • Hay thật. Tôi tò mò liệu cuộc gặp đó có ảnh hưởng đến lựa chọn nghề nghiệp sau này không, cuối cùng người đó có trở thành nhà phát triển game không, hay ít nhất có thử không. Có phần kết thì lúc nào cũng thú vị
    • Tôi tò mò chính xác lời khuyên về cuộc sống mà anh ấy đưa ra là gì
  • Một game thật sự thú vị. Tôi không phải kiểu chơi quá nhiều game, nhưng tôi nhớ đã mua Humble Bundle để lấy trò này
    Đây là một trong số ít game tôi chơi đến hết. Terry, cảm ơn vì tác phẩm tuyệt vời và những giờ phút vui vẻ. Nhân tiện, veni vidi vici đúng là khó đến phát bực và tôi đã mất rất lâu
    https://www.youtube.com/watch?v=4CtiY5D6HCs

    • Tôi mua bundle và nghĩ “trong lúc mấy game dung lượng lớn, có vẻ thú vị hơn đang tải xuống thì chơi thử một game platformer 2D nhẹ nhàng vậy”, rồi cuối cùng dành trọn buổi tối hôm đó cho nó
    • Video này không thể hiện hết trải nghiệm vừa chật vật qua từng màn hình xong lại đáp xuống bên trái
    • Dù sao thì game cũng đã xin lỗi. Vì có màn hình ghi “I’m sorry” mà :P
    • Nếu nhớ không nhầm thì tôi phải thử vài trăm lần mới qua được. Nhờ vậy mà tôi coi như đã rèn được sự kiên nhẫn để hoàn thành hầm ngục Pitioss trong Final Fantasy XV
      Bạn trai tôi lúc đó là người đã mua VVVVVV cho tôi, và anh ấy đang thử chạy no-death lấy toàn bộ trinket. Tôi không hiểu nổi sao anh ấy có thể chơi game giỏi đến thế. Và nhạc nền VVVVVV, PPPPPP, thì tôi vẫn nghe thường xuyên. Đặc biệt là các track stream osu! liên quan rất hay
    • Tôi đã mua những Humble Bundle đời đầu, và VVVVVV nằm phủ bụi trong thư viện Steam từ lúc đó. Giờ có lẽ phải thử chơi thôi
  • Đây là các bài liên quan. Không biết còn bài nào khác không
    Is opening up your source code worth it? Terry Cavanagh thinks it was for VVVVVV - https://news.ycombinator.com/item?id=25727963 - tháng 1 năm 2021
    Many games are held together by duct tape - https://news.ycombinator.com/item?id=22043156 - tháng 1 năm 2020
    VVVVVV Source Code Released - https://news.ycombinator.com/item?id=22011465 - tháng 1 năm 2020
    VVVVVV’s source code is now public, 10 year anniversary jam happening now - https://news.ycombinator.com/item?id=22011358 - tháng 1 năm 2020
    VVVVVV 60% Off On The Mac App Store This Weekend - https://news.ycombinator.com/item?id=2347676 - tháng 3 năm 2011

  • Trong chú thích của Graphics::print_level_creator(...) có nói rằng thay vì “by {author}” thì hiển thị một khuôn mặt
    Lý do là “by” có thể lệch với ngôn ngữ của tác giả nên trông kỳ, trong các ngôn ngữ khác có thể dài ra và phá vỡ giới hạn cấp độ hiện có, “by” và tên tác giả có thể cần các phông chữ không khớp nhau, cũng tránh được các vấn đề ngữ pháp như giới tính hay biến cách tên, hiển thị bằng khuôn mặt là hợp lý, và nếu quyết định này khiến ai đó buồn thì dù sao mặt cười cũng sẽ làm họ phấn chấn hơn. Khó mà phản bác

  • Trong bài được liên kết tại https://distractionware.com/blog/2020/01/vvvvvv-is-now-open-..., có nói rằng phiên bản C++ có nhiều chỗ kỳ lạ mà phải nhớ rằng nó được làm trước bằng Flash rồi tự tay port sang, giữ nguyên cả các vết xước, thì mới hiểu được
    Ví dụ, tác giả có thói quen khai báo các biến tạm như i, j, k làm member của từng class để khỏi phải khai báo trong hàm, vì trong Flash việc khai báo trong hàm khá phiền vì những lý do nhàm chán. Kết quả là sinh ra các lỗi khó truy vết, đặc biệt trong xử lý va chạm entity, nơi nhiều hàm dùng chung cùng một biến i, thậm chí có thể gây vòng lặp vô hạn. Nghe thật tệ, và xác nhận định kiến rằng mã game là một mớ hỗn độn

    • Ngược lại, tôi thấy nghe rất xuất sắc, và xác nhận nghi ngờ rằng lập trình viên game học được nhiều hơn lập trình viên thông thường
    • Ghi lại để sau này khỏi quên: mã có thể lộn xộn mà vẫn thú vị. Đó là trường hợp các bug thú vị được tạo ra và phát hiện trong một ý tưởng mới
      Mã có thể tốt nhưng nhàm chán. Như một ứng dụng máy tính được viết tốt nhưng phần triển khai nhạt nhẽo. Mã cũng có thể vừa lộn xộn vừa nhàm chán. Như một sản phẩm B2B thiếu thiết kế, có hàng trăm điều kiện ngoại lệ và mỗi điều kiện lại có những bug tương tự nhưng khác nhau. Mã có thể vừa tốt vừa thú vị. Như Doom chẳng hạn
    • Người ta thực sự làm thế này à? Đột nhiên việc phải thêm this. trước mọi member trong JavaScript trở nên ít khó chịu hơn nhiều
  • Cũng muốn nhắc đến Super Hexagon của cùng nhà làm game này. Một trò chơi cực kỳ đơn giản nhưng thật sự vui và gây nghiện mạnh
    Tôi nhớ đã đọc ở đâu đó rằng tác giả chỉ mất khoảng một ngày để làm ra nó. Và soundtrack PPPPPP của VVVVVV cũng rất tuyệt

    • Nếu nói về game của cùng tác giả thì Dicey Dungeons cũng cực kỳ hay. Nó giống roguelike xây dựng bộ bài, nhưng dùng xúc xắc thay vì thẻ bài
      Có khoảng sáu nhân vật riêng biệt, mỗi nhân vật có nhiều thử thách, và luật chơi liên tục thay đổi khiến bạn phải suy nghĩ lại về trò chơi. Cũng có nhiều yếu tố hài hước, cùng DLC miễn phí và nội dung mod mà tôi vẫn chưa thử
    • Tôi không biết Super Hexagon là tác phẩm của cùng nhà phát triển. Dù là một kiểu game hoàn toàn khác VVVVVV nhưng chơi thật sự rất vui
      Việc một nhà phát triển indie sau thành công ban đầu lại rẽ sang một thể loại hoàn toàn mới lúc nào cũng thú vị, và đã có những viên ngọc tuyệt vời ra đời theo cách đó. Ví dụ như dòng chuyển từ Fallen London -> Sunless Sea -> Cultist Simulator
    • Không có cách nào chắc chắn để vào trạng thái nhập tâm ngoài việc chơi Super Hexagon trong 10 phút
    • Tôi đồng ý với đề xuất này. Đây là một trò chơi mà quá trình học thật sự rất vui
      Lúc đầu trông có vẻ bất khả thi, nhưng não sẽ thích nghi. Cảm giác như nhìn xuyên qua Ma trận vậy
    • Tôi đã dành thật sự rất nhiều thời gian của đời mình cho trò này
      Tôi cũng chia sẻ nó cho nhiều người và làm họ phát cuồng theo. Tôi tin là mình vẫn còn khoảng 5–6 bản trong kho Steam. Biết đâu cần đến. V, SMB, Braid và nhiều game khác cũng vậy. Đôi khi chỉ cần một chút cảm hứng và đồ họa vụng về là đủ
  • Có một thời tôi vừa chuyển từ Canada đến California và rất cần việc làm, nên nhận công việc bán hàng tận nhà cho Comcast
    Tôi ghét công việc đó, nên thường ngồi trong xe, né tránh trách nhiệm và chơi VVVVVV trên điện thoại. Nhờ Terry mà tôi có được chút thời gian để thở

  • Một game tuyệt vời. Đúng chất game indie thời đó, code thật sự là một mớ hỗn độn, nhìn mà thấy thích

    • Cụm “thật sự là một mớ hỗn độn” rất đúng. Phần tôi thích nhất là hàm Game::updatestate() dài 3300 dòng và một câu lệnh switch khổng lồ
    • Ban đầu nó được viết bằng Flash rồi port sang C++, nên có thể giải thích được một phần sự lộn xộn. Nhưng không phải tất cả
    • Đoạn code này thật sự truyền cảm hứng. Nó là bài học rằng quá tôn sùng chất lượng code không phải lúc nào cũng là điều tốt nhất
    • Code này chẳng có vấn đề gì cả. Cái này gọi là unroll vòng lặp, và nó giúp duy trì hiệu năng của game
  • Tôi đã đóng gói nó cho Zig, và chỉ cần chạy zig build là có thể chơi game trên Linux, macOS, Windows
    https://github.com/allyourcodebase/VVVVVV

  • Tác giả thú nhận rằng vì không muốn khai báo i, j, k ở từng chỗ dùng trong hàm, nên đã khai báo chúng trong mọi class, và đúng như dự đoán, điều đó tạo ra những bug bẩn và khó lần ra
    Thật đáng kinh ngạc là với kiểu code như vậy mà vẫn làm ra được một game ổn

    • Hầu như game nào cũng có đủ loại code hack kinh khủng bên trong. Dĩ nhiên cái này cũng thuộc loại khá nặng trong số những gì tôi từng thấy