HN เปิดตัว: เกมโอเพนซอร์สสไตล์ Counter-Strike
(github.com/solcloud)- 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/ด้วยคำสั่ง npmcd 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 ความคิดเห็น
ความคิดเห็นบน Hacker News
เซิร์ฟเวอร์ PHP กับไคลเอนต์ Electron นี่สุดยอดมาก ผมไม่ได้แตะ PHP มานานตั้งแต่ยุคที่ยังไม่มี namespace ที่เป็นเรื่องเป็นราวด้วยซ้ำ แต่นี่น่าทึ่งจริง ๆ
เป็นความพยายามที่มหาศาล และทำให้รู้สึกอยากช่วยโปรเจกต์นี้ในเวลาว่าง โปรเจกต์บ้า ๆ แบบนี้ควรมีมากขึ้น
ผมรู้จักแค่ PHP สมัยก่อนกับ PHP ใน CMS บางตัว ไม่เคยนึกถึงโปรเจกต์เรียลไทม์เลย น่าทึ่งมาก
ถ้าใช้
socket_select()ก็ทำเซิร์ฟเวอร์แบบ asynchronous ได้ และฟังก์ชันนี้ถูกเพิ่มเข้ามาใน PHP 4.1https://www.php.net/manual/en/function.socket-select.php
เมื่อ 15 ปีก่อน PHP ก็มีส่วนขยาย third-party สำหรับเพิ่ม thread อยู่แล้ว แต่บั๊กเยอะมาก
อ้างอิงไว้ว่า ฝั่งไคลเอนต์อยู่ใต้
www/assetshttps://github.com/solcloud/Counter-Strike/tree/master/www/a...ไม่มี dependency นอกจาก threejs และไม่มี TypeScript หรือ build pipeline ด้วย อ่านโค้ดเพลินดี
start.jsน่าจะดี (https://github.com/solcloud/Counter-Strike/blob/master/www/a...)entry point ฝั่งเซิร์ฟเวอร์คือ
server.php(https://github.com/solcloud/Counter-Strike/blob/master/cli/s...)ดูสถิติภาษาบน GitHub แล้วเป็น PHP 82%, JS 15% มี HTML/CSS ปนนิดหน่อย เลยสงสัยว่าไคลเอนต์จริง ๆ ทำด้วยอะไร
อยู่ใน repository อื่นหรือเปล่า หรือทำด้วย PHP ทั้งหมด? ถ้าใช่ก็น่าประทับใจ
คำอธิบายว่าเป็น “เกมความรุนแรงต่ำ” นี่ตลกดีสำหรับเกมที่ยิงหน้า วาง/ปลดระเบิด และเอาตัวรอดระหว่างโดนยิง
แถมยังสงสัยด้วยว่า OP เคยเห็นสนามฟุตบอลหรือเปล่า มีเส้นที่ไม่เข้ากับเครื่องหมายกากบาทอยู่พอสมควร แต่ฟุตบอลไม่ใช่หัวใจหลัก ก็คงไม่สำคัญมาก
มันเป็นหนึ่งในสื่อที่โต้ตอบได้มากที่สุดของสังคม แต่ทุกปีเงินหลายพันล้านดอลลาร์ถูกเทไปกับ “ผู้ชายยิงปืนยิงปืน: ฉบับปืน” อีกเกม
นอกเรื่องไปหน่อย แต่โปรเจกต์นี้ยังน่าประทับใจมาก และผมเล่น CS มาหลายพันชั่วโมง เลยเจ๋งที่ได้เห็นอะไรแบบนี้
www: https://github.com/solcloud/Counter-Strike/tree/master/wwwไคลเอนต์มี JavaScript เยอะ และใช้ Three.js สำหรับกราฟิก
ผมตื่นเต้นกับคำอธิบายเรื่องการทำลายสัตว์ไปหน่อย
ชอบข้อสังเกตเรื่องเครื่องหมายกากบาทนะ อาจเป็นเพราะอารมณ์ขันของผมแปลกไปหน่อย หรืออาจเป็นเพราะโตในยุโรปแล้วดูหนังอเมริกันที่มีนักอเมริกันฟุตบอลสวมหมวกกันน็อกก็ได้
ถ้าจะไปทางมุกให้สุดกว่านี้ ก็มีอินเทอร์เฟซ 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
โค้ดโอเพนซอร์สนั้นดี แต่สิ่งที่เกมต้องการจริง ๆ คือ งานอาร์ตแบบเปิด เกมโอเพนซอร์สส่วนใหญ่ลำบากเรื่องรูปลักษณ์และความรู้สึก
เพิ่ม ไฟล์ไลเซนส์ ได้ไหม?
เดตกับ Gabe, gooseman, Jess น่ะโอเค ถ้ามีข้อเสนอแนะก็ช่วยแชร์ด้วย
ผ่านไปหลายชั่วโมงหลังจากมีหลายคนบอกให้ใส่ไลเซนส์ แต่ก็ยัง ไม่ใช่โอเพนซอร์ส
การเรียกสิ่งที่ไม่ใช่โอเพนซอร์สว่าโอเพนซอร์สเป็นเรื่องไม่โอเคจริง ๆ และเป็นผลเสียต่อซอฟต์แวร์เสรีและโอเพนซอร์ส
ไม่จำเป็นต้องเป็นซอฟต์แวร์เสรีก็เป็นโอเพนซอร์สได้ และไม่มีไลเซนส์ก็เป็นโอเพนซอร์สได้ ถ้าเจ้าของเปิดโค้ดให้โลกอ่าน มันก็คือโอเพนซอร์ส
การเปิดเผยสิ่งนี้เป็นโอเพนซอร์สถือว่าเจ๋งมาก เป็นจุดเริ่มต้นที่ยอดเยี่ยมสำหรับคนที่อยากลองทำ การพัฒนาเกม 3D
ถ้ามี Counter-Strike 1.6 เวอร์ชันที่มี asset แบบโอเพนซอร์สก็คงดี
คล้าย ๆ OpenArena ของ Quake แต่สำหรับ CS 1.6
อาจสร้างบน https://github.com/Velaron/cs16-client ก็ได้
มี เกมโอเพนซอร์ส ที่น่าประทับใจจริง ๆ อยู่พอสมควร ปีที่แล้วผมได้รู้จัก BAR (Beyond All Reason) เพราะกลุ่มเพื่อนที่ชอบเล่นเกม และมันน่าประทับใจมากทั้งด้านความลึก กราฟิก และการปรับแต่งประสิทธิภาพ
ผมชอบอนาคตแบบนี้
ประทับใจมากกับระดับรายละเอียดและการลงมือทำอย่างพิถีพิถัน ระดับการควบคุมและความสามารถในการทำ automation สูง ทำให้รู้สึกว่าเหมาะกับคนสายเทคนิคมาก
ถ้าอยากเล่นด้วยกัน ชื่อผู้ใช้ในเกมคือ
[ZWD]_jaanแอดเพื่อนได้เลย ผมช่วยแนะนำพื้นฐานให้ได้ และถึงยังเป็นมือใหม่อยู่ ก็เล่น co-op หรือหาห้องสำหรับมือใหม่ได้ปรับแต่งเกมด้วย Lua ได้ง่าย และสำหรับเกมเสรี/โอเพนซอร์สแล้ว ชุมชนก็ดูค่อนข้างใหญ่