แนะนำบน HN: Pong Wars
(pong-wars.koenvangilst.nl)- 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 ความคิดเห็น
ความคิดเห็นบน Hacker News
โค้ดลิงก์ทวีตนี้ไว้เป็นที่มาของไอเดีย: https://twitter.com/nicolasdnl/status/1749715070928433161 [nitter: https://nitter.net/nicolasdnl/status/1749715070928433161]
ข้อความที่อ้างคือ “การต่อสู้ที่ไม่มีวันจบ #genuary23 #genuary #genuary2024. ไม่ใช่ไอเดียดั้งเดิมของผม เคยเห็นมาก่อน แต่หาไม่เจอว่าเห็นที่ไหน”
ตรงนี้บอกว่าการต่อสู้ ไม่มีวันจบ เลยสงสัยว่ามีวิธีพิสูจน์ทางคณิตศาสตร์หรือไม่
เดิมทีผมเห็น https://twitter.com/CasualEffects/status/1390290306206216196 และผู้เขียนบอกว่ามาจากต้นฉบับ pico8 รุ่นก่อนหน้านั้นมีไม้ตี Pong ด้วย แต่ตอนผมทำ BASIC demake ผมใส่โค้ดลงในทวีตให้ bbcmicrobot รันไม่ได้ จึงเอาไม้ตีออก
เวอร์ชันของผมค่อนข้างช้าและหยาบ ๆ แต่มีคนที่ผมคิดว่าน่าจะเป็น @rheolism โพสต์เวอร์ชันที่เร็วและลื่นกว่ามากโดยใช้ตัวอักษรกำหนดเองแทนการวาดจุด และต่อมาก็เห็นว่ามีคนทำ demake ใหม่ด้วย Processing ของพวกนี้เหมือนมีชีวิตของตัวเอง
บัญชี Twitter ผมลบไปนานแล้ว แต่หาเจอจากอาร์ไคฟ์
ดังนั้นสถานการณ์ที่ลูกบอลลูกหนึ่งถูกกักอยู่สุดโต่งจึงไม่น่าจะคงอยู่ได้นานมาก
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 เรียกผลงานของตัวเองว่า ประติมากรรมจลนศิลป์
วิดีโออัลกอริทึม? ซิมูเลเตอร์เกม? ออโตมาตอนอัตโนมัติ?
มีบทความ Wikipedia สั้น ๆ ด้วย: https://en.wikipedia.org/wiki/Zero-player_game
แก้ไข: ดูโค้ดนิดหน่อยแล้วพบว่าพลวัตการเด้งมีความสุ่มอยู่เล็กน้อย ดังนั้นคงพูดว่า “กำหนดแน่นอนทั้งหมด” ได้ยาก เว้นแต่จะนับ seed ของตัวสร้างเลขสุ่มเทียมเป็นส่วนหนึ่งของเงื่อนไขเริ่มต้น
มีเวลาและกฎต่าง ๆ และองค์ประกอบสำคัญคือ เราไม่สามารถรู้ผลลัพธ์ล่วงหน้าได้
องค์ประกอบสุดท้ายนั่นแหละที่ทำให้การเขียนและรันโปรแกรมแบบนี้น่าสนใจ
ลูกชายวัย 12 ขวบของผมเพิ่งทำใน Scratch:
https://scratch.mit.edu/projects/957461584/
เจ๋งมาก
ตอนนี้ยิ่งพื้นที่ที่ลูกบอลครอบครองเล็กลง ก็ยิ่งเกิดการชนมากขึ้นด้วยความเร็วเท่าเดิม ถ้าทำให้ความเร็วแปรผันตามจำนวนช่องที่ครอบครองหรือ รากที่สอง ของจำนวนนั้น น่าจะน่าสนใจ
ผมคิดว่าท้ายที่สุดแล้วคงไม่มีฝ่ายไหนชนะ
งดงามจริง ๆ ในหลายระดับ
ในเชิงสุนทรียะ แค่นั่งดูเฉย ๆ ก็เพลินแล้ว ส่วนในเชิงปรัชญาก็น่าสนใจเพราะเป็นอุปมาดิจิทัลของการต่อสู้ที่ดำเนินต่อไป
สุดท้าย และน่าสนใจที่สุด คือมันเอาไอเดียเก่า ๆ ที่เรียบง่ายมากสองอย่างมาผสมกันจนได้สิ่งใหม่ การทำแบบนี้ให้ออกมาดีนั้นพบได้ยากมาก
ขอชื่นชมอย่างมาก จริง ๆ
ถ้ามี 3 สี น่าจะน่าสนใจ
ถ้าอีกสองฝ่ายไล่ต้อนฝ่ายหนึ่งเข้ามุม พื้นที่แคบจะทำให้แย่งบล็อกกลับได้เร็ว และฟื้นตัวจากเกือบแพ้ได้อย่างรวดเร็ว
สำหรับคนที่ไม่ค่อยมีความอดทน ผมใส่ สไลเดอร์ความเร็ว ไว้ด้วย
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