2 điểm bởi GN⁺ 2024-01-28 | 1 bình luận | Chia sẻ qua WhatsApp
  • Pong Wars là một demo web trực quan hóa cuộc đối đầu giữa ngày và đêm, thiện và ác, theo kiểu Pong
  • Trên màn hình hiển thị giá trị day/night như day 288 | night 288, giúp xem ngay trạng thái hiện tại
  • Phần triển khai gồm JavaScript và một ít HTML/CSS, được gói trong một file index.html
  • Mã có thể tái sử dụng, và trang cho biết người dùng có thể tạo phiên bản của riêng mình
  • Trang có ghi chú do Koen van Gilst tạo và liên kết tới mã nguồn GitHub

Cuộc đối đầu giữa ngày và đêm được thể hiện bằng Pong

  • Pong Wars là một trang web hiển thị trực quan cuộc đối đầu giữa “day” và “night”
  • Trạng thái hiện tại được hiển thị theo định dạng day 288 | night 288

Triển khai trong một file và có thể tái sử dụng

  • Phần triển khai sử dụng JavaScript và HTML/CSS, được chứa trong một file index.html
  • Mã có thể tái sử dụng, và người dùng có thể tạo phiên bản của riêng mình
  • Trang có ghi chú do Koen van Gilst tạo và liên kết tới mã nguồn GitHub

1 bình luận

 
GN⁺ 2024-01-28
Ý kiến trên Hacker News
  • Mã nguồn liên kết tweet này làm nguồn ý tưởng: https://twitter.com/nicolasdnl/status/1749715070928433161 [nitter: https://nitter.net/nicolasdnl/status/1749715070928433161]
    Trích dẫn có nội dung: “Cuộc chiến bất tận #genuary23 #genuary #genuary2024. Đây không phải ý tưởng gốc, tôi từng thấy nó trước đây nhưng không tìm ra đã thấy ở đâu”
    Ở đây nói cuộc chiến là bất tận, tôi tò mò liệu có cách nào chứng minh điều đó về mặt toán học không

    • Nếu lần ngược xa hơn, một phần ý tưởng có thể là của tôi: https://hachyderm.io/deck/@bazzargh/111829275276749971
      Ban đầu tôi thấy https://twitter.com/CasualEffects/status/1390290306206216196, và tác giả nói nó xuất phát từ bản gốc pico8. Các phiên bản trước đó cũng có vợt Pong, nhưng khi tôi làm bản demake BASIC, tôi không thể nhét mã vào trong tweet để bbcmicrobot chạy, nên đã bỏ vợt đi
      Phiên bản của tôi hơi chậm và vụng về, rồi một người hình như là @rheolism đã đăng một phiên bản nhanh và mượt hơn nhiều bằng cách dùng ký tự tùy chỉnh thay vì vẽ từng điểm, và sau đó tôi cũng thấy có người làm lại bản demake bằng Processing. Những thứ như thế này tự có đời sống riêng của chúng
      Tài khoản Twitter đã bị xóa từ lâu, nhưng tôi đã tìm được trong kho lưu trữ
    • Mỗi quả bóng chiếm ít nhất vùng 1x1, nên quả bóng đối phương không thể chiếm 100%
    • Vùng càng nhỏ thì quả bóng đó bật nảy nhiều hơn đối thủ trên mỗi đơn vị thời gian, và cơ hội mở rộng vùng cũng tăng lên
      Vì vậy tình huống một quả bóng bị nhốt cực đoan khó có thể kéo dài rất lâu
    • Có thể xem điều gì xảy ra khi bóng bên trái chỉ có một ô và bóng bên phải có toàn bộ phần còn lại:
      x1 = y1 = y3 = squareSize, x2 = canvas.width - squareSize
      squares = Array.from({ length: numSquaresX }, (, i) =>
      Array.from({ length: numSquaresY }, (
      , j) =>
      i === 0 && j === 0 ? TEAM1 : TEAM2))
    • Có vẻ sẽ có một cân bằng ổn định khá tốt
      Vì vùng sở hữu càng nhỏ thì tốc độ sáp nhập càng tăng
  • Tôi rất mê những thứ kiểu này, nhưng thậm chí không biết có thuật ngữ thể loại nào để phân loại và phân tích chúng không, nên chỉ có thể gọi là “những thứ kiểu này”
    Chúng lấy cảm hứng từ thuật toán game nhưng không phải game, và “Game of Life” của Conway cũng có thể nói là bị đặt tên sai. Chúng có chuyển động, nhưng cũng không được kịch bản hóa như hoạt hình thông thường
    Trong thế giới thực, những người như David C. Roy gọi tác phẩm của mình là điêu khắc động học
    Video thuật toán? Trình mô phỏng game? Automaton tự trị?

    • Tôi từng thấy thuật ngữ game không người chơi (zero-player game) được dùng cho những thứ như vậy
      Cũng có một bài Wikipedia ngắn: https://en.wikipedia.org/wiki/Zero-player_game
    • Tôi thích thuật ngữ đồ chơi, theo góc nhìn tương tự “executive toy”
    • Có thể xem là hệ hỗn loạn không? Theo nghĩa là một hệ hoàn toàn tất định nhưng rất nhạy với điều kiện ban đầu
      Sửa: xem qua mã thì thấy động lực học va chạm có một chút ngẫu nhiên. Vì vậy khó gọi là “hoàn toàn tất định” trừ khi coi seed của bộ sinh số giả ngẫu nhiên là một phần của điều kiện ban đầu
    • Mô phỏng” có lẽ bao quát được phần lớn
    • Trong đầu tôi thì gọi chúng là mô phỏng
      Có thời gian, quy tắc, v.v., và yếu tố quan trọng là không thể biết trước kết quả
      Chính yếu tố cuối đó làm cho việc viết và chạy những chương trình như thế này trở nên thú vị
  • Con trai 12 tuổi của tôi vừa làm bằng Scratch:
    https://scratch.mit.edu/projects/957461584/

  • Thật sự tuyệt
    Hiện tại, khi vùng mà bóng sở hữu nhỏ đi thì với cùng tốc độ sẽ xảy ra nhiều va chạm hơn; có lẽ sẽ thú vị nếu làm tốc độ tỉ lệ với số ô đang sở hữu hoặc với căn bậc hai của số đó

    • Có vẻ nó tự điều chỉnh theo kiểu đó, giống trò bài “War”
      Tôi nghĩ rốt cuộc không bên nào thắng được
  • Thật sự đẹp ở nhiều tầng nghĩa
    Về thẩm mỹ thì chỉ cần ngồi xem cũng thích, còn về triết học thì nó thú vị như một ẩn dụ số cho cuộc đấu tranh không ngừng
    Cuối cùng, và cũng là điều thú vị nhất, nó trộn hai ý tưởng cũ rất đơn giản để tạo ra một thứ mới. Làm tốt việc này cực kỳ hiếm
    Xin dành thật nhiều lời khen

    • Có vẻ nó cũng mô hình hóa phần nào âm dương, cả ở nội dung game mô phỏng lẫn ở hình ảnh thể hiện
  • Nếu có 3 màu thì chắc sẽ thú vị
    Khi hai màu còn lại dồn một màu vào góc, nhờ không gian hẹp mà màu đó có thể nhanh chóng chiếm lại các khối và hồi sinh rất nhanh ngay trước khi thua

  • Cũng có bài Mastodon của tác giả gốc: https://hachyderm.io/@vnglst/111828811496422610

  • Tôi đã thử triển khai bằng C++ và Qt Scene Graph để học
    Chia sẻ phòng khi có ai quan tâm: https://invent.kde.org/carlschwan/warpong/-/blob/master/src/...

  • Ví dụ tương tự: https://contranoid.com/

  • Cũng có một biến thể Pong khác. Tuy nhiên chỉ dành cho desktop: https://www.obfusco.com/pn0gjs/index.html