2 คะแนน โดย GN⁺ 2024-10-23 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Counter-Strike: Football เป็นเกม FPS ผู้เล่นหลายคนเชิงแข่งขันที่ให้ทีมแฟนฟุตบอลสองทีมแข่งกันเก็บชัยชนะในแต่ละรอบ
  • ทีมแบ่งเป็น Attackers และ Defenders โดย Defenders ต้องปกป้อง fan base sanctuary จาก graffiti bomb ball ของฝ่าย Attackers
  • เงื่อนไขชนะในรอบแบ่งตามการกำจัดฝ่ายตรงข้าม การวางระเบิด การกู้ระเบิด และการเอาชีวิตรอดจนครบเวลา โดยเมื่อมีการวางระเบิดแล้ว ตัวนับถอยหลังของรอบจะถูกตั้งเป็น 40 วินาที
  • ไฟล์รันสามารถดาวน์โหลดได้จากแอสเซ็ตของแต่ละระบบปฏิบัติการในรีลีสล่าสุด และหากต้องการบิลด์จากซอร์สโดยตรง ต้องรัน Electron client และ PHP server แยกกัน
  • โปรเจ็กต์เปิดรับผู้มีส่วนร่วมด้าน html/css/js/php และผู้ทำ 3D modeling, texturing, animation ผ่าน pull request

ภาพรวมเกม

  • Counter-Strike: Football เป็นเกม FPS ผู้เล่นหลายคนเชิงแข่งขันที่ให้ทีมแฟนฟุตบอลสองทีมต่อสู้กันโดยมีเป้าหมายเพื่อชนะให้ได้มากกว่าอีกฝ่ายในแต่ละรอบ
  • ดาวน์โหลดเกมได้ที่ Download game
  • จากแบดจ์ด้านบนของ README แสดงผลการทดสอบ, Code coverage 100%, และ Mutation score 100%

ทีมและเป้าหมายของรอบ

  • ทีมประกอบด้วย Attackers และ Defenders
  • เป้าหมายของ Defenders คือป้องกันไม่ให้ Attackers ใช้ graffiti bomb ball ทำลาย fan base sanctuary ในแต่ละรอบ

เงื่อนไขชนะ

  • Defenders ชนะรอบในกรณีต่อไปนี้
    • กำจัดผู้เล่น Attackers ได้ทั้งหมดก่อนมีการวางระเบิด
    • กู้ระเบิดได้ก่อนที่ระเบิดจะทำงาน
    • เมื่อหมดเวลาของรอบ ยังมีผู้เล่นรอดอย่างน้อย 1 คน และยังไม่มีการวางระเบิด
  • Attackers ชนะรอบในกรณีต่อไปนี้
    • กำจัดผู้เล่น Defenders ได้ทั้งหมดก่อนหมดเวลาของรอบ
    • วางระเบิดก่อนหมดเวลาของรอบ และป้องกันไม่ให้ Defenders กู้ระเบิดได้
  • หาก Attackers วาง graffiti bomb ก่อนเวลาของรอบจะหมด ตัวนับถอยหลังของรอบจะถูกตั้งเป็น 40 วินาที
    • Defenders ต้องใช้เวลา 30 วินาทีในการกู้ระเบิด
    • หากใช้ defuse kit เวลากู้ระเบิดจะเป็น 35 วินาที

การติดตั้งและการรัน

  • ไฟล์รันสำหรับแต่ละระบบปฏิบัติการสามารถดาวน์โหลดได้จาก latest release
  • ไคลเอนต์รันจากโฟลเดอร์ electron/ ด้วยคำสั่ง npm
    cd electron/
    npm install
    npm run dev
    
  • เซิร์ฟเวอร์รันด้วย PHP CLI หลังติดตั้ง Composer dependencies แล้ว
    composer install -a --no-dev
    php cli/server.php 2 # will start server waiting for 2 players to connect
    

วิธีการมีส่วนร่วม

  • โปรเจ็กต์กำลังมองหาผู้มีส่วนร่วมที่รู้จัก html/css/js/php
  • ผู้ที่มีทักษะด้าน 3D modeling, texturing และ animation ก็สามารถช่วยพัฒนาเกมผ่าน pull request ได้เช่นกัน

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

 
GN⁺ 2024-10-23
ความคิดเห็นบน Hacker News
  • เซิร์ฟเวอร์ PHP กับไคลเอนต์ Electron นี่สุดยอดมาก ผมไม่ได้แตะ PHP มานานตั้งแต่ยุคที่ยังไม่มี namespace ที่เป็นเรื่องเป็นราวด้วยซ้ำ แต่นี่น่าทึ่งจริง ๆ
    เป็นความพยายามที่มหาศาล และทำให้รู้สึกอยากช่วยโปรเจกต์นี้ในเวลาว่าง โปรเจกต์บ้า ๆ แบบนี้ควรมีมากขึ้น

    • ทำให้นึกถึงคำพูดที่ว่าให้สร้างเกมที่ทำแล้วสนุก
    • ผมก็รู้สึกคล้ายกัน เซิร์ฟเวอร์เกมแบบเรียลไทม์ที่เขียนด้วย PHP น่าสนใจมาก
      ผมรู้จักแค่ PHP สมัยก่อนกับ PHP ใน CMS บางตัว ไม่เคยนึกถึงโปรเจกต์เรียลไทม์เลย น่าทึ่งมาก
    • ถ้าเป็น Electron ผมขอผ่าน
    • จริง ๆ แล้ว เมื่อ 15 ปีก่อน ก็ทำได้ ตอนเด็ก ๆ ผมรู้แค่ PHP กับ Visual Basic เลยนั่งทำเซิร์ฟเวอร์ CLI ด้วย PHP อยู่บ่อย ๆ
      ถ้าใช้ socket_select() ก็ทำเซิร์ฟเวอร์แบบ asynchronous ได้ และฟังก์ชันนี้ถูกเพิ่มเข้ามาใน PHP 4.1
      https://www.php.net/manual/en/function.socket-select.php
      เมื่อ 15 ปีก่อน PHP ก็มีส่วนขยาย third-party สำหรับเพิ่ม thread อยู่แล้ว แต่บั๊กเยอะมาก
  • อ้างอิงไว้ว่า ฝั่งไคลเอนต์อยู่ใต้ www/assets https://github.com/solcloud/Counter-Strike/tree/master/www/a...
    ไม่มี dependency นอกจาก threejs และไม่มี TypeScript หรือ build pipeline ด้วย อ่านโค้ดเพลินดี

  • ดูสถิติภาษาบน GitHub แล้วเป็น PHP 82%, JS 15% มี HTML/CSS ปนนิดหน่อย เลยสงสัยว่าไคลเอนต์จริง ๆ ทำด้วยอะไร
    อยู่ใน repository อื่นหรือเปล่า หรือทำด้วย PHP ทั้งหมด? ถ้าใช่ก็น่าประทับใจ
    คำอธิบายว่าเป็น “เกมความรุนแรงต่ำ” นี่ตลกดีสำหรับเกมที่ยิงหน้า วาง/ปลดระเบิด และเอาตัวรอดระหว่างโดนยิง
    แถมยังสงสัยด้วยว่า OP เคยเห็นสนามฟุตบอลหรือเปล่า มีเส้นที่ไม่เข้ากับเครื่องหมายกากบาทอยู่พอสมควร แต่ฟุตบอลไม่ใช่หัวใจหลัก ก็คงไม่สำคัญมาก

    • ไม่ได้มีกฎว่าต้องยิงเสมอไป ไปทาง สาย charisma แล้วโน้มน้าวผู้ก่อการร้ายให้เลิกวางระเบิดก็ได้
    • ผมไม่ได้ต่อต้านวิดีโอเกมที่มีความรุนแรงในเชิงศีลธรรม แต่ก็อยากให้ เกมทุนสร้างสูง มีความสร้างสรรค์มากกว่านี้
      มันเป็นหนึ่งในสื่อที่โต้ตอบได้มากที่สุดของสังคม แต่ทุกปีเงินหลายพันล้านดอลลาร์ถูกเทไปกับ “ผู้ชายยิงปืนยิงปืน: ฉบับปืน” อีกเกม
      นอกเรื่องไปหน่อย แต่โปรเจกต์นี้ยังน่าประทับใจมาก และผมเล่น CS มาหลายพันชั่วโมง เลยเจ๋งที่ได้เห็นอะไรแบบนี้
    • โค้ดไคลเอนต์ดูได้ใน www: https://github.com/solcloud/Counter-Strike/tree/master/www
      ไคลเอนต์มี JavaScript เยอะ และใช้ Three.js สำหรับกราฟิก
    • ใช่ โค้ดทั้งหมดอยู่ใน repository เดียว นี้
      ผมตื่นเต้นกับคำอธิบายเรื่องการทำลายสัตว์ไปหน่อย
      ชอบข้อสังเกตเรื่องเครื่องหมายกากบาทนะ อาจเป็นเพราะอารมณ์ขันของผมแปลกไปหน่อย หรืออาจเป็นเพราะโตในยุโรปแล้วดูหนังอเมริกันที่มีนักอเมริกันฟุตบอลสวมหมวกกันน็อกก็ได้
      ถ้าจะไปทางมุกให้สุดกว่านี้ ก็มีอินเทอร์เฟซ PHP CLI ด้วย (https://github.com/solcloud/Counter-Strike/blob/master/cli/c...)
      แต่ถ้า terminal emulator ของคุณไม่มีฟอนต์สไตล์ Matrix เจ๋ง ๆ ก็มีโอกาสสูงว่าจะมองไม่เห็นผู้หญิงชุดแดงที่นอนอยู่ในสนาม
  • เท่มาก อีกเรื่องหนึ่ง อย่างน้อยภาพ screenshot ก็ทำให้นึกถึงเกม PC ยุค 90 อย่าง Extreme Paintbrawl มาก
    ตอนเด็ก ๆ ผมชอบมาก แต่หลายปีต่อมาถึงรู้ว่ามันถูกจัดว่าเป็น “หนึ่งในวิดีโอเกมที่แย่ที่สุดตลอดกาล”
    https://en.wikipedia.org/wiki/Extreme_PaintBrawl

    • เพื่อนผมมีเกมนี้ แล้วพวกเราก็เล่นกันสนุกมากจริง ๆ
    • ความรักเป็นความรู้สึกที่เฉพาะตัวมาก ดังนั้นจะเถียงเพื่อชิงอันดับหนึ่งนั้นเมื่อไรก็ได้
  • โค้ดโอเพนซอร์สนั้นดี แต่สิ่งที่เกมต้องการจริง ๆ คือ งานอาร์ตแบบเปิด เกมโอเพนซอร์สส่วนใหญ่ลำบากเรื่องรูปลักษณ์และความรู้สึก

    • เห็นด้วย แต่การเก่งทั้งโปรแกรมมิงและอาร์ตเป็นความสามารถที่ค่อนข้างหายาก แถมยังมีสาย เสียงและแอนิเมชัน แยกออกไปอีก
  • เพิ่ม ไฟล์ไลเซนส์ ได้ไหม?

    • น่าจะได้ แต่ผมไม่ใช่ทนาย และไม่อยากไปเดตกับ Gaben กับทนายของเขา
      เดตกับ Gabe, gooseman, Jess น่ะโอเค ถ้ามีข้อเสนอแนะก็ช่วยแชร์ด้วย
  • ผ่านไปหลายชั่วโมงหลังจากมีหลายคนบอกให้ใส่ไลเซนส์ แต่ก็ยัง ไม่ใช่โอเพนซอร์ส
    การเรียกสิ่งที่ไม่ใช่โอเพนซอร์สว่าโอเพนซอร์สเป็นเรื่องไม่โอเคจริง ๆ และเป็นผลเสียต่อซอฟต์แวร์เสรีและโอเพนซอร์ส

    • เป็นโอเพนซอร์สนั่นแหละ ซอร์สอยู่ใน repository ให้ทุกคนอ่านได้ทันที
      ไม่จำเป็นต้องเป็นซอฟต์แวร์เสรีก็เป็นโอเพนซอร์สได้ และไม่มีไลเซนส์ก็เป็นโอเพนซอร์สได้ ถ้าเจ้าของเปิดโค้ดให้โลกอ่าน มันก็คือโอเพนซอร์ส
    • งั้นควรเรียกว่าอะไร? เปิดเผยซอร์ส?
    • https://github.com/solcloud/Counter-Strike/blob/master/LICEN...
    • แค่พูดว่า “คุณผู้สร้างครับ/ค่ะ ซอฟต์แวร์แบบเปิดจำเป็นต้องมีไลเซนส์ที่เหมาะสม ไม่อย่างนั้นอาจเกิดปัญหาทางกฎหมายได้” ก็พอ
    • เออ ๆ ผมกำลังทำร้ายโอเพนซอร์สอยู่สินะ ขอโทษโอเพนซอร์สด้วย
  • การเปิดเผยสิ่งนี้เป็นโอเพนซอร์สถือว่าเจ๋งมาก เป็นจุดเริ่มต้นที่ยอดเยี่ยมสำหรับคนที่อยากลองทำ การพัฒนาเกม 3D

  • ถ้ามี Counter-Strike 1.6 เวอร์ชันที่มี asset แบบโอเพนซอร์สก็คงดี
    คล้าย ๆ OpenArena ของ Quake แต่สำหรับ CS 1.6
    อาจสร้างบน https://github.com/Velaron/cs16-client ก็ได้

  • มี เกมโอเพนซอร์ส ที่น่าประทับใจจริง ๆ อยู่พอสมควร ปีที่แล้วผมได้รู้จัก BAR (Beyond All Reason) เพราะกลุ่มเพื่อนที่ชอบเล่นเกม และมันน่าประทับใจมากทั้งด้านความลึก กราฟิก และการปรับแต่งประสิทธิภาพ
    ผมชอบอนาคตแบบนี้

    • ผมเพิ่งรู้จัก BAR เมื่อไม่กี่สัปดาห์ก่อน และตอนนี้แม้จะไม่ได้เป็นเกมเมอร์เท่าไร และไม่เคยชอบเกมวางแผนแบบเรียลไทม์ด้วยซ้ำ แต่เวลาในเกมก็เกิน 50 ชั่วโมงไปแล้ว
      ประทับใจมากกับระดับรายละเอียดและการลงมือทำอย่างพิถีพิถัน ระดับการควบคุมและความสามารถในการทำ automation สูง ทำให้รู้สึกว่าเหมาะกับคนสายเทคนิคมาก
      ถ้าอยากเล่นด้วยกัน ชื่อผู้ใช้ในเกมคือ [ZWD]_jaan แอดเพื่อนได้เลย ผมช่วยแนะนำพื้นฐานให้ได้ และถึงยังเป็นมือใหม่อยู่ ก็เล่น co-op หรือหาห้องสำหรับมือใหม่ได้
    • BAR ยอดเยี่ยมจริง ๆ ถ้าชอบเกมแนว Total Annihilation/Supreme Commander ก็ควรลองดู
      ปรับแต่งเกมด้วย Lua ได้ง่าย และสำหรับเกมเสรี/โอเพนซอร์สแล้ว ชุมชนก็ดูค่อนข้างใหญ่