2 คะแนน โดย GN⁺ 2024-01-28 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Pong Wars เป็นเว็บเดโมที่แสดงภาพการปะทะกันระหว่างกลางวันกับกลางคืน ความดีและความชั่ว ในรูปแบบคล้าย Pong
  • บนหน้าจอจะแสดง ค่า day/night เช่น day 288 | night 288 ทำให้ดูสถานะปัจจุบันได้ทันที
  • การพัฒนาใช้ JavaScript ร่วมกับ HTML/CSS บางส่วน และบรรจุอยู่ในไฟล์ index.html เพียงไฟล์เดียว
  • ระบุว่าโค้ดสามารถนำไปใช้ซ้ำได้ และผู้ใช้สามารถสร้างเวอร์ชันของตนเองได้
  • ในหน้ามีเครดิตผู้สร้าง Koen van Gilst และลิงก์ไปยัง ซอร์สบน GitHub

การต่อสู้ระหว่างกลางวันและกลางคืนที่ถ่ายทอดด้วย Pong

  • Pong Wars เป็นเว็บเพจที่แสดงภาพการต่อสู้ระหว่าง “day” และ “night”
  • สถานะปัจจุบันจะแสดงในรูปแบบ day 288 | night 288

การพัฒนาแบบไฟล์เดียวและการนำไปใช้ซ้ำ

  • การพัฒนาใช้ JavaScript และ HTML/CSS โดยรวมอยู่ในไฟล์ index.html ไฟล์เดียว
  • โค้ดสามารถนำไปใช้ซ้ำได้ และผู้ใช้สามารถสร้างเวอร์ชันของตนเองได้
  • ในหน้ามีเครดิตผู้สร้าง Koen van Gilst และลิงก์ซอร์สบน GitHub

1 ความคิดเห็น

 
GN⁺ 2024-01-28
ความคิดเห็นบน Hacker News
  • โค้ดลิงก์ทวีตนี้ไว้เป็นที่มาของไอเดีย: https://twitter.com/nicolasdnl/status/1749715070928433161 [nitter: https://nitter.net/nicolasdnl/status/1749715070928433161]
    ข้อความที่อ้างคือ “การต่อสู้ที่ไม่มีวันจบ #genuary23 #genuary #genuary2024. ไม่ใช่ไอเดียดั้งเดิมของผม เคยเห็นมาก่อน แต่หาไม่เจอว่าเห็นที่ไหน”
    ตรงนี้บอกว่าการต่อสู้ ไม่มีวันจบ เลยสงสัยว่ามีวิธีพิสูจน์ทางคณิตศาสตร์หรือไม่

    • ถ้าย้อนกลับไปอีก ไอเดียบางส่วนอาจเป็นของผมก็ได้: https://hachyderm.io/deck/@bazzargh/111829275276749971
      เดิมทีผมเห็น https://twitter.com/CasualEffects/status/1390290306206216196 และผู้เขียนบอกว่ามาจากต้นฉบับ pico8 รุ่นก่อนหน้านั้นมีไม้ตี Pong ด้วย แต่ตอนผมทำ BASIC demake ผมใส่โค้ดลงในทวีตให้ bbcmicrobot รันไม่ได้ จึงเอาไม้ตีออก
      เวอร์ชันของผมค่อนข้างช้าและหยาบ ๆ แต่มีคนที่ผมคิดว่าน่าจะเป็น @rheolism โพสต์เวอร์ชันที่เร็วและลื่นกว่ามากโดยใช้ตัวอักษรกำหนดเองแทนการวาดจุด และต่อมาก็เห็นว่ามีคนทำ demake ใหม่ด้วย Processing ของพวกนี้เหมือนมีชีวิตของตัวเอง
      บัญชี Twitter ผมลบไปนานแล้ว แต่หาเจอจากอาร์ไคฟ์
    • ลูกบอลแต่ละลูกกินพื้นที่อย่างน้อย 1x1 ดังนั้นลูกบอลฝ่ายตรงข้ามจึงครอบครอง 100% ไม่ได้
    • ยิ่งพื้นที่เล็ก ลูกบอลนั้นก็จะเด้งต่อหน่วยเวลามากกว่าฝ่ายตรงข้าม และมีโอกาสขยายพื้นที่มากขึ้นด้วย
      ดังนั้นสถานการณ์ที่ลูกบอลลูกหนึ่งถูกกักอยู่สุดโต่งจึงไม่น่าจะคงอยู่ได้นานมาก
    • ลองดูได้ว่าจะเกิดอะไรขึ้นเมื่อบอลฝั่งซ้ายมีแค่ไทล์เดียว ส่วนบอลฝั่งขวามีที่เหลือทั้งหมด:
      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))
    • น่าจะมี สมดุลที่ค่อนข้างเสถียร อยู่
      เพราะยิ่งพื้นที่ที่ครอบครองลดลง ความเร็วในการรวมกลับก็ยิ่งสูงขึ้น
  • ผมหลงใหลของแนวนี้มาก แต่ก็ไม่รู้ว่ามีคำเรียกเป็นแนวสำหรับจัดหมวดหมู่และวิเคราะห์หรือเปล่า เลยได้แต่เรียกว่า “ของแนวนี้”
    ได้แรงบันดาลใจจากอัลกอริทึมเกม แต่ไม่ใช่เกม และ Conway’s “Game of Life” เองก็เรียกชื่อผิดได้เหมือนกัน มันเคลื่อนไหว แต่ก็ไม่ได้ถูกสคริปต์ไว้เหมือนแอนิเมชันทั่วไป
    ในโลกจริง คนอย่าง David C. Roy เรียกผลงานของตัวเองว่า ประติมากรรมจลนศิลป์
    วิดีโออัลกอริทึม? ซิมูเลเตอร์เกม? ออโตมาตอนอัตโนมัติ?

    • เคยเห็นมีการใช้คำว่า เกมไร้ผู้เล่น (zero-player game) กับของแบบนี้
      มีบทความ Wikipedia สั้น ๆ ด้วย: https://en.wikipedia.org/wiki/Zero-player_game
    • ผมชอบคำว่า ของเล่น ในมุมมองที่คล้ายกับ “executive toy”
    • อาจมองว่าเป็น ระบบโกลาหล ได้ไหม? ในความหมายว่าเป็นระบบที่กำหนดแน่นอนทั้งหมด แต่ไวต่อเงื่อนไขเริ่มต้นมาก
      แก้ไข: ดูโค้ดนิดหน่อยแล้วพบว่าพลวัตการเด้งมีความสุ่มอยู่เล็กน้อย ดังนั้นคงพูดว่า “กำหนดแน่นอนทั้งหมด” ได้ยาก เว้นแต่จะนับ seed ของตัวสร้างเลขสุ่มเทียมเป็นส่วนหนึ่งของเงื่อนไขเริ่มต้น
    • คำว่า “ซิมูเลชัน” น่าจะครอบคลุมได้โดยรวม
    • ในหัวผมเรียกมันว่าสิมูเลชัน
      มีเวลาและกฎต่าง ๆ และองค์ประกอบสำคัญคือ เราไม่สามารถรู้ผลลัพธ์ล่วงหน้าได้
      องค์ประกอบสุดท้ายนั่นแหละที่ทำให้การเขียนและรันโปรแกรมแบบนี้น่าสนใจ
  • ลูกชายวัย 12 ขวบของผมเพิ่งทำใน Scratch:
    https://scratch.mit.edu/projects/957461584/

  • เจ๋งมาก
    ตอนนี้ยิ่งพื้นที่ที่ลูกบอลครอบครองเล็กลง ก็ยิ่งเกิดการชนมากขึ้นด้วยความเร็วเท่าเดิม ถ้าทำให้ความเร็วแปรผันตามจำนวนช่องที่ครอบครองหรือ รากที่สอง ของจำนวนนั้น น่าจะน่าสนใจ

    • ดูเหมือนมันจะ ปรับสมดุลตัวเอง แบบนั้น คล้ายเกมไพ่ “War”
      ผมคิดว่าท้ายที่สุดแล้วคงไม่มีฝ่ายไหนชนะ
  • งดงามจริง ๆ ในหลายระดับ
    ในเชิงสุนทรียะ แค่นั่งดูเฉย ๆ ก็เพลินแล้ว ส่วนในเชิงปรัชญาก็น่าสนใจเพราะเป็นอุปมาดิจิทัลของการต่อสู้ที่ดำเนินต่อไป
    สุดท้าย และน่าสนใจที่สุด คือมันเอาไอเดียเก่า ๆ ที่เรียบง่ายมากสองอย่างมาผสมกันจนได้สิ่งใหม่ การทำแบบนี้ให้ออกมาดีนั้นพบได้ยากมาก
    ขอชื่นชมอย่างมาก จริง ๆ

    • เหมือนมันจำลอง หยินหยาง อยู่บ้าง ทั้งในสิ่งที่เกมจำลองและภาพที่แสดงออกมา
  • ถ้ามี 3 สี น่าจะน่าสนใจ
    ถ้าอีกสองฝ่ายไล่ต้อนฝ่ายหนึ่งเข้ามุม พื้นที่แคบจะทำให้แย่งบล็อกกลับได้เร็ว และฟื้นตัวจากเกือบแพ้ได้อย่างรวดเร็ว

    • แบบ 4 ผู้เล่น: https://codyebberson.github.io/pong-wars/
    • ได้แรงบันดาลใจจากสิ่งนี้ ผมเลยทำเวอร์ชันที่กำหนดจำนวนลูกบอลเองได้ และโค้ดก็เข้าถึงได้
      สำหรับคนที่ไม่ค่อยมีความอดทน ผมใส่ สไลเดอร์ความเร็ว ไว้ด้วย
      https://explorers.toxicode.fr/?remoteWorkspace=pong-war
  • มีโพสต์ Mastodon ของผู้เขียนต้นฉบับด้วย: https://hachyderm.io/@vnglst/111828811496422610

  • ผมลองทำด้วย C++ และ Qt Scene Graph เพื่อการเรียนรู้
    แชร์ไว้เผื่อมีคนสนใจ: https://invent.kde.org/carlschwan/warpong/-/blob/master/src/...

  • ตัวอย่างคล้ายกัน: https://contranoid.com/

  • มี Pong อีกรูปแบบหนึ่งด้วย แต่ใช้ได้เฉพาะเดสก์ท็อป: https://www.obfusco.com/pn0gjs/index.html