การพัฒนาเกม

คำถาม & คำตอบสำหรับนักพัฒนาเกมมืออาชีพและเป็นอิสระ

3
บ่อยครั้งในการอัพเดทไคลเอนต์เกมเกี่ยวกับโลก
ใช้socket.ioฉันมีการสื่อสารคล้ายกับ MMORPG อื่น ๆ ซึ่งเป็นการเชื่อมต่อที่มั่นคงกับข้อความ ในการออกแบบของฉันจนถึงตอนนี้ไคลเอนต์ส่งตำแหน่งของผู้เล่นและเฟรมภาพเคลื่อนไหวพร้อมเฟรมอัปเดตทุกเฟรม เมื่อเซิร์ฟเวอร์ได้รับข้อความนั้นมันจะส่งสัญญาณไปยังลูกค้าทั้งหมดซึ่งจะย้ายกราฟิกตามนั้น เป็นความคิดที่ดีกว่าหรือไม่ที่จะ 'รวบรวม' สิ่งเหล่านี้และออกอากาศพวกเขาพูดครั้งเดียวใน 1/10 ของวินาที? นอกจากนี้ลูกค้าควรส่งข้อความที่แตกต่างกันจำนวนมาก (ได้รับประสบการณ์คลิกที่รายการ) ทันทีที่เกิดขึ้นหรือแทนที่จะรวบรวมเพียงครั้งเดียว ครั้งแรกจะดำเนินการได้ง่ายขึ้น

1
ฉันจะสร้างเอฟเฟกต์ "ท้องฟ้ายามค่ำคืน" ใน OpenGL ได้อย่างไร
ฉันกำลังสร้างเกมโดยใช้ OpenGL และฉันต้องการสร้างเอฟเฟกต์ของท้องฟ้ายามค่ำคืนโดยมีดาวอยู่สองสามดวง ฉันต้องการให้เอฟเฟกต์สีดำเป็นประกายบนท้องฟ้าเพื่อให้ดูดี บางคนสามารถช่วยในการดำเนินการผ่านหรือให้ลิงค์ไปยังการสอนที่ดี?
10 opengl  sky 

5
ฉันจะจำลองแก้วแตกได้อย่างไร
ฉันต้องทำการจำลองด้วยหินขว้างผ่านหน้าต่างกระจก ฉันจะทำให้สำเร็จได้อย่างไร ฉันหมายถึงฉันกำลังคิดที่จะสร้างแบบจำลอง 3 มิติของหินและแก้วใน 3D Studio Max 2012 ทุบกระจกและส่งออกทั้งสองไปยัง XNA 4.0 เป็นรุ่น. x จากนั้นใน XNA สร้างแอนิเมชัน - เขียนเอนจินฟิสิกส์ของฉันเอง เป็นไปได้ไหม? เป็นไปได้หรือไม่ที่จะทำลายกระจกใน XNA หลังจากกระทบหรือควรทำใน 3DS Max หรือไม่? โดยการ 'ทำลายแก้ว' ฉันหมายถึงปลดเศษแก้วที่แตกก่อนหน้านี้ออกจากกันเนื่องจากขึ้นอยู่กับความเร็วเริ่มต้นและน้ำหนักของหินและความต้านทาน (ความแข็ง?) ของแก้ว (กำหนดโดยผู้ใช้ทั้งหมด) บิตจะปลดจาก ซึ่งกันและกันในรูปแบบที่แตกต่างกัน
10 xna  physics  xna-4.0  3dsmax 

3
เกม Python ทำงานบนหลายแพลตฟอร์มหรือไม่
ฉันมีแผนที่จะเขียนเกมใน Python และอาจเป็น SQL ฉันกังวลเกี่ยวกับความหลากหลายของโปรแกรมเมื่อฉันทำเสร็จฉันต้องการให้มันทำงานบน Windows, Mac, Android และ iPhone ... แต่ฉันมีความรู้สึกว่าโทรศัพท์จะถูก จำกัด เรียงลำดับของสิ่งต่าง ๆ ฉันจะเขียนโปรแกรมที่ทำงานบนหลายแพลตฟอร์มได้อย่างไร สิ่งนี้เป็นไปได้สำหรับโปรแกรมเมอร์มือใหม่หรือไม่?

1
เป็นวิธีที่ดีที่สุดในการสร้างภาพเคลื่อนไหวเมื่อทำการพัฒนา Android คืออะไร
ฉันกำลังพยายามสร้างเกม Android เกมแรกของฉันและฉันกำลังพยายามคิดออก (กับคนที่จะวาดรูปและโปรแกรมเมอร์อีกคน) สิ่งที่ดีที่สุดในการสร้างภาพเคลื่อนไหวคืออะไร (ภาพเคลื่อนไหวเช่นตัวละครเคลื่อนไหวเป็นต้น) ในตอนแรกผู้ออกแบบกล่าวว่าเธอสามารถวาดวัตถุ / ตัวละครและทำให้เคลื่อนไหวด้วยแฟลชได้ดังนั้นเธอจึงไม่ต้องวาดทุกเฟรมของการกระทำ โปรแกรมเมอร์คนอื่นและฉันไม่รู้จัก Flash มากเกินไปดังนั้นฉันจึงแนะนำให้ดึงภาพทั้งหมดจากภาพเคลื่อนไหว Flash และทำให้ปรากฏเป็นภาพหนึ่งหลังจากอีกภาพหนึ่งเมื่อภาพเคลื่อนไหวเริ่มต้นขึ้น เขาบอกว่าจะลงเอยด้วยการใช้ทรัพยากรมากเกินไปบน CPU และฉันมักจะเห็นด้วย แต่ฉันไม่เห็นว่าเราควรทำแอนิเมชั่นที่ราบรื่นโดยไม่ต้องใช้ฮาร์ดแวร์มากเกินไปและถ้าเป็นไปได้ นักออกแบบวาดทุกเฟรมใน Adobe Illustrator นักพัฒนาเกม Android ที่มีประสบการณ์สามารถช่วยฉันจัดการเรื่องนี้ได้เพื่อให้เราสามารถไปยังส่วนอื่น ๆ ของเกมได้เนื่องจากฉันไม่รู้ว่าวิธีที่ดีที่สุดในการสร้างภาพเคลื่อนไหวคืออะไร

2
วิธีที่ดีในการสร้างขอบระหว่างโหนดกราฟคืออะไร?
ฉันกำลังสร้างตัวสร้างแผนที่แบบสุ่มสำหรับเกมอวกาศ 4X แต่ละโหนดในเกมจะวางที่พิกัดสุ่ม (x, y) บนกริด 2d โหนดสามารถมีขอบสองทิศทางหนึ่งหรือมากกว่านั้นไปยังโหนดอื่น (แทนหนอน) โหนดทั้งหมดต้องมีหนอนอย่างน้อยหนึ่งตัวและโหนดทั้งหมดจะต้องอยู่ในกราฟเดียวกัน ตามหลักการแล้วตัวหนอนไม่ควรยาวเกินความยาวสูงสุดและหากเป็นไปได้ตัวหนอนไม่ควรข้ามกัน การปฏิบัติที่ไร้เดียงสาของฉันคือการวนซ้ำผ่านทุกโหนดและมีลิงค์ของโหนดไปยัง 3 โหนดที่ใกล้เคียงที่สุด อย่างไรก็ตามฉันลงเอยด้วยกราฟย่อยจำนวนมาก เป็นวิธีที่ดีในการสร้างขอบสำหรับโหนดอะไร

2
การส่งข้อมูลเกี่ยวกับเครื่องของผู้ใช้ไปยังเซิร์ฟเวอร์ของฉันโดยไม่แจ้งผู้ใช้ผิดหรือไม่?
สมมติว่าฉันส่งเกมบนแพลตฟอร์มที่หลากหลาย รหัสเกมของฉันตรวจพบความรู้เล็กน้อยเกี่ยวกับระบบพื้นฐานเช่นการตั้งค่าท้องถิ่น "ประเทศ" ระบบปฏิบัติการชนิดของการ์ดกราฟิก ฯลฯ สมมติว่าฉันส่งเกมด้วยรหัสที่อยู่ภายในมันจะส่งข้อมูลนี้ไปยังเซิร์ฟเวอร์หลักที่ฉันรวบรวมและจัดการข้อมูลทั้งหมดนี้เพื่อสร้างแผนภูมิและอื่น ๆ ในเกมที่มีผู้เล่นหลายคนมันค่อนข้างสมเหตุสมผลในการทำเช่นนี้เนื่องจากการเชื่อมต่อกับเซิร์ฟเวอร์นั้นมีความชอบธรรมโดยสิ้นเชิง อย่างไรก็ตามในเกมผู้เล่นคนเดียวอาจดูน่าสงสัยหากคุณได้รับแจ้งเกี่ยวกับการดำเนินการนี้ เป็นความผิดหรือไม่ที่จะฝังระบบรวบรวมข้อมูลนี้ไว้ในเกม? คุณคิดว่าควรได้รับอนุญาตจากผู้ใช้ก่อนที่จะทำการรวบรวมและส่งข้อมูลหรือไม่? หากผู้ใช้เริ่มปฏิเสธ "ข้อตกลง" ฉันไม่สามารถบังคับใช้ข้อมูลที่มีความหมายได้ 100% คิด?

2
ความแตกต่างระหว่าง XNA Game Services และตัวแปรทั่วโลกที่ได้รับเกียรติคืออะไร?
Microsoft.Xna.Framework.Gameชั้นมีบริการสถานที่ให้บริการที่ช่วยให้โปรแกรมเมอร์ที่จะเพิ่มบริการให้กับเกมของพวกเขาโดยการให้ประเภทของชั้นเรียนและเป็นตัวอย่างของชั้นเรียนเพื่อเพิ่มวิธีการ ตอนนี้แทนที่จะต้องส่งผ่านAudioComponentไปยังคลาสและวิธีการทั้งหมดที่ต้องการแทนคุณเพียงแค่ส่งGameอินสแตนซ์ของคุณและค้นหาบริการ (ตัวระบุบริการ ) ตอนนี้เนื่องจากเกมมีบริการมากมาย (GraphicsDevice, SceneGraph, AudioComponent, EffectsManager และอื่น ๆ ) คุณจะต้องผ่านเกมไปทุกอย่าง เหตุใดจึงไม่เพียงทำให้อินสแตนซ์เหล่านี้เป็นซิงเกิลล่ะ ดีเพราะ Singletons ไม่ดีเพราะพวกเขามีสถานะทั่วโลกป้องกันการทดสอบและทำให้การออกแบบของคุณเปราะมากขึ้น ตัวระบุตำแหน่งการบริการนั้นได้รับการพิจารณาอย่างเท่าเทียมกันว่าเป็นรูปแบบการต่อต้านต่อคนจำนวนมากเพราะแทนที่จะผ่านการพึ่งพาวัตถุคุณเพียงผ่านตัวระบุตำแหน่งของบริการ (เกม) ซึ่งเป็นคู่รักที่มาพร้อมกับบริการที่เหลือ เหตุใดจึงแนะนำบริการใน XNA และการพัฒนาเกม เป็นเพราะเกมแตกต่างจากโปรแกรมปกติและมีการผสมผสานอย่างมากกับส่วนประกอบและต้องผ่านทุกองค์ประกอบที่จำเป็นสำหรับการทำงานของคลาสจะยุ่งยากมาก? บริการเกมนั้นเป็นสิ่งชั่วร้ายที่จำเป็นในการออกแบบเกมหรือไม่? มีทางเลือกอื่นที่ไม่เกี่ยวข้องกับรายการพารามิเตอร์ที่มีความยาวและการมีเพศสัมพันธ์หรือไม่?
10 xna  c#  architecture 


1
การแลกเปลี่ยนข้อความไคลเอนต์เซิร์ฟเวอร์เซิร์ฟเวอร์และการซิงโครไนซ์นาฬิกา
ฉันกำลังทำเกมฟิสิกส์ที่รวดเร็วซึ่งเป็นตารางฮอกกี้ ด้วยค้อนสองตัวและลูกซนหนึ่งตัว เกมทำงานบน iphone / ipad และฉันกำลังเล่นเกมหลายคนผ่าน GameCenter นี่คือการทำงานของระบบเครือข่าย ลูกค้าที่เป็นดาวจับคู่จะถูกตัดสินในฐานะเซิร์ฟเวอร์และลูกค้าที่ยอมรับคำขอแข่งขันคือลูกค้า 'เซิร์ฟเวอร์' มีการทำงานของฟิสิกส์และการตอบสนองนั้นเกิดขึ้นทันทีและไคลเอนต์ก็มีการทำงานของฟิสิกส์เพื่อให้ดูราบรื่นระหว่างการแลกเปลี่ยนข้อความ สิ่งที่ฉันทำในฐานะเซิร์ฟเวอร์คือฉันส่งไปยังลูกค้าความเร็วลูกตุ้มของฉันและตำแหน่งของฉันและลูกค้าปรับความเร็ว / ตำแหน่งเด็กซนของเขาที่เกี่ยวข้องกับเซิร์ฟเวอร์เพื่อให้มันซิงค์ ไม่เช่นนั้นฟิสิกส์จะซิงโครไนซ์และมันไขสกรูขึ้น เมื่อเวลาในการตอบสนองของเครือข่ายดีผล 100 มิลลิวินาทีนั้นค่อนข้างดีฉันได้เกมที่เล่นได้อย่างราบรื่นทางฝั่งไคลเอ็นต์และพฤติกรรมแปลก ๆ นั้นน้อยที่สุด ปัญหาเกิดขึ้นเมื่อความล่าช้าอยู่ที่ประมาณ 150 ถึง 200ms ในกรณีดังกล่าวเกิดขึ้นที่ลูกค้าของฉันเด็กซนชนขอบและทิศทางกลับหัว แต่มันได้รับข้อความล่าช้าจากเซิร์ฟเวอร์และมันกลับเล็กน้อยทำให้เกิดความรู้สึกแปลก ๆ กับพฤติกรรมลูก ฉันได้อ่านบางสิ่งเกี่ยวกับเรื่องนี้: โป่งเครือข่ายตัวอย่าง คลิกตัวอย่างการซิงโครไนซ์ Wikipedia เกี่ยวกับ Clock Sync ดังนั้นฉันจะแก้ปัญหานี้อย่างไร เท่าที่ฉันได้อ่านตัวเลือกที่ดีที่สุดที่ฉันต้องทำคือการซิงโครไนซ์นาฬิกาบนเซิร์ฟเวอร์ / ไคลเอ็นต์ด้วยการประทับเวลาเพื่อที่เมื่อฉันได้รับข้อความหน่วงเวลาที่เกี่ยวข้องกับนาฬิกาของฉันฉันก็ไม่สนใจแล้วปล่อยให้ลูกค้าจำลอง งาน. พวกคุณเห็นด้วยไหม? และเนื่องจากฉันกำลังส่งข้อมูลที่ไม่น่าเชื่อถือ (UDP) ฉันอาจได้รับข้อความหรือข้อความล่าช้า หากเป็นวิธีที่ดีที่สุดฉันจะใช้การซิงโครไนซ์นาฬิกาได้อย่างไร ฉันอ่านขั้นตอนเกี่ยวกับวิธีการ แต่ฉันไม่เข้าใจมันมากนัก มันบอกว่า: ลูกค้าประทับเวลาท้องถิ่นปัจจุบันบนแพ็กเก็ต …


6
มีเกมใดบ้างที่มีเครื่องเรียนรู้ AI หรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา ทุกคนที่นี่สามารถอ้างอิงถึงเกม AAA เชิงพาณิชย์ที่ใช้เครื่องเรียนรู้ AI ได้หรือไม่?
10 ai 

2
ตรวจสอบรูปแบบพื้นผิว OpenGL ที่สนับสนุนได้อย่างไร
ตัวอย่างเช่นวิธีตรวจสอบว่า videocard ของฉันไม่รองรับ "bgr8" และแปลงเป็นรูปแบบอื่นเช่น "rgba8" ในโหมดซอฟต์แวร์ UPDATE: ขออภัยในความสับสน คำถามนี้เพิ่มเติมเกี่ยวกับสถานการณ์เมื่อฉันตั้งค่าinternalFormatในglTexImage2Dเป็นอย่าง "bgra8" แต่ videodriver แปลงข้อมูลภายในเป็นรูปแบบอื่นเช่น "rgba8"

3
สคริปต์ควรโต้ตอบกับสิ่งที่เป็นนามธรรมหรือไม่?
ฉันกำลังใช้ Java และ Jython และหลังจากการวิจัยบางอย่างฉันค้นพบว่าการให้สคริปต์เข้าถึงโดยตรงกับส่วนต่อประสานเครื่องยนต์อาจเป็นข้อผิดพลาด ดูเหมือนว่าสคริปต์ส่วนใหญ่ที่ช่วยให้ mods สามารถสร้างและจัดการเอนทิตีได้โดยทำสิ่งที่เป็นนามธรรม เหตุผลเหล่านี้อยู่ที่นั่นด้วยเหตุผลนี้หรือไม่หรือเป็นเพียงเพื่อมอบวิธีที่ใช้งานง่ายขึ้นสำหรับผู้ที่ไม่ใช่โปรแกรมเมอร์เพื่อดัดแปลงเกม
10 java  python  scripting 

3
วิธีที่เหมาะสมในการจัดการกับการทำลายของเอนทิตีเกม
ลองนึกภาพโลกของเกมที่มีการโหลดและโหลดเอนทิตีแบบไดนามิกตลอดเวลาฉันจะแสดงว่าเป็นรายการของเอนทิตี แต่สิ่งที่เกี่ยวกับการลบออก? ในขณะที่เมื่อเพิ่มฉันอาจจะผลักดันเอนทิตีใหม่ฉันอาจต้องการลบที่ใดก็ได้ในคอนเทนเนอร์ เพื่อหลีกเลี่ยงการค้นหาองค์ประกอบเพื่อค้นหาตำแหน่งสำหรับการลบฉันมีทางเลือกอะไรบ้าง ฉันคิดว่าฉันสามารถเก็บรหัสเอนทิตีว่าเป็นตำแหน่งในคอนเทนเนอร์สร้างเส้นทางสำหรับการนำออกโดยตรง แต่จะไม่สร้างความผิดปกติของการพึ่งพาซึ่งกันและกันบางประเภทหรือไม่ ฉันรู้วิธีที่ถูกต้องจะเป็นรายการเช่น List.RemoveAt (whereToRemove); แต่จะเกิดอะไรขึ้นถ้ามีเพียงนิติบุคคลเท่านั้นที่รู้ว่าควรตายเมื่อใด หรือฉันเพิ่งจะหายไปบางสิ่งบางอย่างและ list container จะรู้เมื่อวัตถุถูกทำลายและลดขนาดตัวมันเอง?

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