เกมโอเพนซอร์ซที่ดีที่ต้องเรียนรู้คืออะไร? [ปิด]


15

ฉันต้องการดาวน์โหลดซอร์สโค้ดของเกมโอเพ่นซอร์สดังนั้นฉันจึงสามารถคุ้นเคยกับสถาปัตยกรรมเกมได้ มีใครรู้เกมที่มีซอร์สโค้ดที่อ่านง่ายและเข้าใจได้ง่ายหรือไม่?

แก้ไข: หลังจากคิดแล้วฉันต้องการสร้างเกมที่สามารถเล่นบนเดสก์ท็อปหรือโทรศัพท์ Andriod ด้วยกราฟิก 2D


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

@thedaian ฉันรู้ว่า Java, C ++, C, javascript และ python
jumpnett

2
สำเนาซ้ำที่เป็นไปได้: gamedev.stackexchange.com/questions/1497/…
Tetrad

ฉันเห็นด้วยกับ Thedaian อย่างน้อยก็ทำงานได้ดีกว่าสำหรับฉัน มีบทความและหนังสือและแบบฝึกหัดที่ดีมากมาย คุณจะต้องใช้เวลาในการเลือกสิ่งที่ถูกต้อง แต่จะช่วยให้คุณประหยัดเวลาในภายหลังเพราะคุณจะรู้ว่าทำไมพวกเขาถึงเขียนโค้ดในขณะที่พวกเขาทำและสามารถรับรู้คุณภาพของแหล่งที่มา (ซึ่งมักจะมีกลิ่น) หากคุณต้องการความสะดวกในการพกพาฉันจะใช้ C / C ++ แต่สำหรับแพลตฟอร์มเหล่านั้นคุณสามารถทำได้ดีกับ Java
Pablo Ariel

1
วิกิชุมชน
Jari Komppa

คำตอบ:


2

ฉันไม่แน่ใจว่าคุณต้องการเกมประเภทใด แต่มีเกมโอเพ่นซอร์สชื่อOpenTTDเขียนใน c ++ ฉันคิดว่าคุณสามารถใช้มันเป็นตัวอย่างที่ดี

คุณสมบัติบางอย่างที่ทำให้เกมนี้ไม่เหมือนใคร:

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

--Edit--

แค่วันนี้ฉันเริ่มอ่านโค้ดตั้งแต่ต้นแล้ว เพื่อให้เข้าใจสิ่งที่พวกเขาเขียนคุณจะต้องเป็นโปรแกรมเมอร์ C และ C ++ ที่ดี ฉันหมายความว่าคุณต้องเป็นผู้เชี่ยวชาญของทั้งสองภาษาเนื่องจากพวกเขาใช้โครงสร้างจากทั้งสอง! ดังนั้นหากคุณไม่มั่นใจเกี่ยวกับทักษะการเขียนโปรแกรมของคุณอย่าไปใกล้โค้ดนั้น! นั่นเป็นรหัสที่สกปรกที่สุดที่ฉันเคยเห็น! (และฉันเป็น coder สกปรกตัวเอง แต่พวกเขาเป็นอย่างอื่น!)

ฉันคิดว่าตอนนี้ฉันสามารถแนะนำให้คุณตรวจสอบรหัสsupertux มันเป็นเกม platformer (เช่นเดียวกับ super mario) และจนถึงตอนนี้โค้ดของพวกเขาดูเหมือนจะสะอาดจริงๆ (ฉันได้ตรวจสอบเหตุการณ์สำคัญ 1.3) พวกเขามีความคิดเห็นบางอย่างในรหัสนั้น แต่สำหรับสถานที่ที่คุณอาจสับสน


ในขณะที่ OpenTTD เป็นเกมที่ยอดเยี่ยมฉันไม่คิดว่ามันเป็นโครงการเรียนรู้ที่ดี ส่วนใหญ่เป็นวิศวกรรมย้อนกลับจากการประกอบและยังมีส่วนของรหัสที่สะท้อนว่า นอกจากนี้ยังเป็นเพียงโครงการขนาดใหญ่และอาจมากเกินไปสำหรับการเริ่มต้น "เรียนรู้สถาปัตยกรรมเกม"
thedaian

@thedaian คุณอาจพูดอย่างนั้น แต่ทุกครั้งที่ฉันต้องทำสิ่งใหม่ฉันเพิ่งอ่านสิ่งที่เขียนในรหัสของพวกเขา จนถึงตอนนี้ฉันคิดว่ามันเป็นเกมโอเพ่นซอร์สที่สามารถอ่านได้มากที่สุดออกมามีค่าการอ่าน!
Ali1S232

ฉันก็ไม่แน่ใจเหมือนกันว่าเมื่อครั้งสุดท้ายที่คุณตรวจสอบรหัสของพวกเขา แต่พวกเขาได้ทำความสะอาดตั้งแต่รุ่น 1.0.0
Ali1S232

2

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


1

มีแกนนำเหมือนQuake 3หรือถ้าคุณต้องการบางสิ่งบางอย่างบิตง่าย (และในแบบ 2D) ดูที่เกมอินดี้กิช พวกเขาทั้งสองใช้ OpenGL และเป็นข้ามแพลตฟอร์มด้วย

แม้ว่า Gish นั้นจะยุ่งเล็กน้อย


1

ฉันขอแนะนำให้คุณ จำกัด สมาธิของคุณเกี่ยวกับประเภทของเกมสถาปัตยกรรมที่คุณสนใจที่จะเรียนรู้เกี่ยวกับ - ไปป์ไลน์ 3 มิติ, ฟิสิกส์, AI และอื่น ๆ

ด้วยการร้องขอทั่วไปสำหรับตัวอย่างที่ดีของการเขียนโปรแกรมเกมฉันคิดว่าspace invaders glนั้นยากที่จะเอาชนะเนื่องจากมีรหัสที่สะอาดและการเล่นเกมแบบเปิดและส่วนต่อประสานในขณะที่ทำให้สิ่งต่าง ๆ ค่อนข้างเรียบง่าย

ไชโย


ผู้บุกรุกพื้นที่เป็นหน้าต่าง gl เท่านั้นหรือไม่ ฉันยังไม่มี windows ติดตั้งในพีซีของฉัน ไม่ใช่ว่าฉันไม่สามารถเข้าถึงได้ แต่ก็ไม่สะดวก
jumpnett

1

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

พัฒนาล้มเหลวลองอีกครั้งจนกว่าคุณจะพบสิ่งที่ดูเหมือนจะดีล้มเหลวอีกครั้งล้างและทำซ้ำจนกว่าคุณจะมีสิ่งที่ดี นักพัฒนาที่แตกต่างกันหมายถึงแนวคิดที่แตกต่างเกี่ยวกับวิธีการนำสิ่งต่าง ๆ เพียงเพราะมันถูกเขียนโดย Carmack / นักพัฒนาที่มีชื่อเสียงใด ๆ ที่สร้างเกมที่ดีไม่ได้หมายความว่ามันเป็นสิ่งที่ดีที่สุดตั้งแต่การหั่นขนมปังและการใช้งานที่แตกต่างกันอาจชัดเจนและเร็วขึ้น


1

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

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

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

เมื่อตอนที่ฉันสนใจพัฒนาเกมครั้งแรกฉันเป็น RPG ออนไลน์ 2 มิติจริงๆ ดังนั้นฉันจึงพบแหล่งที่มาสำหรับหนึ่งออนไลน์และฉันก็เริ่มสร้างมันขึ้นมา การเพิ่มคุณสมบัติของตัวเองและแก้ไขสิ่งต่าง ๆ แก้ไขข้อผิดพลาดและอื่น ๆ ที่อยู่ใน VB6 เมื่อไม่กี่ปีที่แล้วและตอนนี้ฉันใช้ C # และ XNA และเขียนเกมของตัวเองตั้งแต่เริ่มต้น เพราะฉันสนุกกับเกมมันกระตุ้นให้ฉันอยากทำงานกับมันเพื่อทำให้ดีขึ้น บังเอิญนี่เป็นวิธีที่ฉันได้เรียนรู้เทคนิคการเขียนโปรแกรมการดีบักและการแก้ปัญหาจำนวนมากที่ฉันใช้ในวันนี้ในงานประจำวันที่ไม่เกี่ยวข้องกับ gamedev

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


1

ขาตั้งออกมาเปิดเกมแพลตฟอร์ม Android 2D เป็นเกาะจำลอง

แหล่งที่มาคือใน Google Code และการพัฒนาได้รับการลงมือในผู้เขียนบล็อก dev

นี่คือรายการเกมโอเพนซอร์ส 15 เกมสำหรับ Android ซึ่งอาจเป็นประโยชน์ในการดูด้วย


เจ๋งฉันจะต้องตรวจสอบเหล่านั้นออก
jumpnett

0

มีลักษณะที่เงามัว ดูเหมือนว่าเป็นสถานที่ที่ดีในการเรียนรู้จาก


2
{จำเป็นต้องมี}
o0 '

0

พัฒนาเกมเลื่อนชุด 2ช่วยให้คุณจริงสร้างเกม 2D และเล่นกับพวกเขาโดยใช้ GUI โดยไม่ต้องเขียนโค้ด แต่ยังช่วยให้คุณสามารถดูและแก้ไขรหัสที่ฝังอยู่ในโครงการที่แสดงถึงเฟรมเวิร์ก / เอ็นจิ้นด้านหลังเกม รหัสส่วนใหญ่จะถูกเปิดเผยผ่านทาง GUI แม้ว่าส่วนเล็ก ๆ ของรหัสนั้นจะถูกสร้างขึ้นตามตำแหน่งที่คุณวาง sprite และแผนที่ที่คุณสร้าง อย่างไรก็ตามรหัสนี้จะปรากฏให้เห็นหากคุณสร้างโครงการและจากนั้นเปิดไฟล์ผลลัพธ์ใน Visual C # Express โปรแกรมทั้งหมด (IDE) นั้นเป็นโอเพ่นซอร์ส มันสร้างบนไลบรารี OpenTK (ซึ่งใช้สำหรับการเชื่อมต่อกับ OpenGL จาก C #) ซึ่งเป็นโอเพนซอร์ส


ฉันจะดูมัน แต่ฉันเป็นโปรแกรมเมอร์ดังนั้นการเขียนโค้ดไม่ใช่เรื่องใหญ่
jumpnett
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.