การพัฒนาเกม

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

1
วิธีการได้รับประโยชน์จาก cpu แคชในเอ็นจิ้นเกมเอนทิตีคอมโพเนนต์ระบบ?
ฉันมักจะอ่านในเอกสารประกอบเครื่องมือเกมของ ECS ซึ่งเป็นสถาปัตยกรรมที่ดีสำหรับการใช้แคช cpu อย่างชาญฉลาด แต่ฉันไม่สามารถคิดได้ว่าเราจะได้ประโยชน์จาก cpu cache ได้อย่างไร หากส่วนประกอบถูกบันทึกในอาร์เรย์ (หรือพูล) ในหน่วยความจำต่อเนื่องเป็นวิธีที่ดีในการใช้ cpu cache แต่ถ้าเราอ่านส่วนประกอบตามลำดับ เมื่อเราใช้ระบบพวกเขาต้องการรายการเอนทิตีซึ่งเป็นรายการเอนทิตีที่มีส่วนประกอบที่มีประเภทเฉพาะ แต่รายการเหล่านี้ให้ส่วนประกอบในวิธีการสุ่มไม่ใช่ตามลำดับ ดังนั้นวิธีการออกแบบ ECS เพื่อเพิ่มการเข้าชมแคชสูงสุด? แก้ไข: ตัวอย่างเช่นระบบ Physic ต้องการรายการเอนทิตีสำหรับเอนทิตีที่มีส่วนประกอบ RigidBody และ Transform (มีพูลสำหรับ RigidBody และพูลสำหรับคอมโพเนนต์การแปลง) ดังนั้นลูปสำหรับการอัพเดตเอนทิตีจะเป็นดังนี้: for (Entity eid in entitiesList) { // Get rigid body component RigidBody *rigidBody = entityManager.getComponentFromEntity<RigidBody>(eid); // Get transform component …

4
ความแตกต่างระหว่างการทำแผนที่การกระจัดและการทำแผนที่ความสูงคืออะไร?
ความแตกต่างระหว่างการทำแผนที่การกระจัดและการทำแผนที่ความสูงและการเชื่อมต่อกับการสอนแบบปรับตัวได้คืออะไร?

3
วิธีการแบ่งตารางฐานสิบหกอย่างเท่าเทียมกันในหมู่ผู้เล่น n?
ฉันกำลังสร้างเกมที่ใช้ฐานสิบหกแบบง่ายและฉันต้องการให้แผนที่แบ่งให้ผู้เล่นเท่า ๆ กัน แผนที่ถูกสร้างแบบสุ่มและฉันต้องการให้ผู้เล่นมีจำนวนเซลล์ที่เท่ากันโดยมีพื้นที่ค่อนข้างเล็ก ตัวอย่างเช่นหากมีผู้เล่นสี่คนและ 80 เซลล์ในแผนที่ผู้เล่นแต่ละคนจะมีประมาณ 20 เซลล์ (ไม่จำเป็นต้องมีจุดเฉพาะ) นอกจากนี้ผู้เล่นแต่ละคนควรมีเซลล์ที่อยู่ติดกันไม่เกินสี่เซลล์ กล่าวคือเมื่อสร้างแผนที่ "ชิ้นที่ใหญ่ที่สุด" ไม่สามารถมีได้มากกว่าสี่เซลล์ต่อเซลล์ ฉันรู้ว่ามันเป็นไปไม่ได้สำหรับผู้เล่นสองหรือสามคน (เช่นนี้คล้ายกับปัญหา "ระบายสีแผนที่") และฉันก็โอเคกับการแก้ปัญหาอื่น ๆ สำหรับพวกเขา (เช่นการสร้างแผนที่ที่แก้ปัญหาแทน) แต่สำหรับผู้เล่นสี่ถึงแปดคนฉันจะแก้ไขปัญหานี้ได้อย่างไร

6
จะหมุนวัตถุรอบแกนโลกได้อย่างไร?
ฉันมี Vector3 ซึ่งมีมุมออยเลอร์สำหรับแต่ละแกน โดยปกติเมื่อฉันต้องการสร้างเมทริกซ์การหมุนฉันจะใช้ฟังก์ชันเช่น D3DXMatrixRotationX ผ่านมุมที่เกี่ยวข้องจากเวกเตอร์การหมุนของฉันด้านบนและคูณเมทริกซ์ (ZXY) เพื่อสร้างเมทริกซ์การหมุนโดยรวมซึ่งใช้ในการสร้างเมทริกซ์การแปลงวัตถุทั้งหมด อย่างไรก็ตามวิธีนี้จะสร้างชุดการหมุนในพื้นที่วัตถุ นั่นคือการส่งเวกเตอร์ (90, 0, 90) ไปยังวิธีการของฉันจะสร้างการหมุนในอวกาศโลกได้อย่างมีประสิทธิภาพ (90, 90, 0) มีวิธีใดที่จะทำให้แน่ใจว่าแต่ละองค์ประกอบของเวกเตอร์การหมุนของฉันส่งผลให้เกิดการหมุนรอบแกนโลกตามแนวแกนอวกาศที่เกี่ยวข้องหรือไม่? แก้ไข: นี่เป็นอนิเมชั่นของสิ่งที่กำลังเกิดขึ้น - ฉันต้องการวิธีหมุนรอบแกนสีน้ำเงินไม่ใช่สีแดง แก้ไข 2: เพียงเพื่อทราบว่าฉันไม่ได้มองหาวิธีการแก้ปัญหาที่เกี่ยวข้องกับมุมออยเลอร์ แต่เพียงวิธีที่ฉันสามารถเป็นตัวแทนการเปลี่ยนแปลงของการหมุนรอบหลายแกนทั่วโลก

4
โมเดล 3 มิติสร้างขึ้นอย่างไรในวิดีโอเกม
แบบจำลอง 3 มิติในเกมได้รับการออกแบบและแสดงผลอย่างไร มันเป็นรหัสทั้งหมดหรือไม่ วาดบนกระดาษแล้วใช้ซอฟต์แวร์กราฟิกสามมิติแล้ว ... อะไรนะ? แน่นอนว่าโปรแกรมเมอร์เกมจะไม่กำหนดจุดสุดยอดของทุกรูปร่าง (/ วัตถุ) ที่พวกเขาต้องการที่จะวาดทั้งหมดในรหัส (ไม่ว่าจะเป็น Direct3D หรือ OpenGL.) ดังนั้นนักออกแบบเกมจะมีเครื่องมือที่ใช้เช่นมายาหรือ บางอย่างเช่นซอฟต์แวร์กราฟิก 3D ที่เป็นกรรมสิทธิ์นอกนั้น พวกเขา "วาด" แบบจำลองในซอฟต์แวร์นั้นส่งออกในรูปแบบอะไรจากนั้นโปรแกรมเมอร์ก็แยกวิเคราะห์รหัสและป้อนจุดยอดที่ถอดรหัส / แยกวิเคราะห์โดยอัตโนมัติของวัตถุ / รุ่น? ฉันใช้ Google เป็นจำนวนมาก แต่ฉันไม่สามารถหาอะไรที่เป็นของแข็งได้เพื่ออธิบายวิธีการทำงานของวิดีโอเกมมืออาชีพ

1
ฉันจะป้องกัน XNA ไม่ให้หยุดการอัปเดตชั่วคราวในขณะที่กำลังปรับขนาด / ย้ายหน้าต่างได้อย่างไร
XNA หยุดการโทรUpdateและDrawในขณะที่หน้าต่างเกมกำลังถูกปรับขนาดหรือย้าย ทำไม? มีวิธีป้องกันพฤติกรรมนี้หรือไม่? (มันทำให้รหัสเครือข่ายของฉันยกเลิกการซิงโครไนซ์เนื่องจากข้อความเครือข่ายไม่ถูกปั๊ม)
15 xna  c#  xna-4.0  win32 

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

1
ทำให้ภูมิทัศน์จากบนลงล่างสร้างขึ้นตามขั้นตอนที่น่าสนใจ
ฉันกำลังเล่นเกมกับโลกที่สร้างขึ้นแบบขั้นตอน โดยหลักการแล้วฉันต้องการสร้างภูมิทัศน์ที่สวยงามราวกับโลกของ Minecraft Minecraft มี chasms และน้ำตกและภูเขาและภูเขากลิ้งและมหาสมุทร ฯลฯ แต่เนื่องจากนี่จะเป็นเกมบนลงล่าง (จริง ๆ แล้วมีมุมมอง 3/4) ฉันไม่เชื่อว่ามันเป็นไปได้ เหตุผลหลักคือการพยายามและแสดงความสูงในมุมมองนี้ยากเพียงใด Zelda: การเชื่อมโยงไปยังอดีตสร้างภาพลวงตาของความสูงได้ดี แต่มันยากที่จะสร้างขั้นตอนขึ้นมาใหม่และยังแนะนำปัญหาบางอย่างเช่นความจริงที่ว่าโครงสร้างที่สูงที่สุดต้องอยู่ด้านบนสุดของแผนที่ ดังนั้นฉันต้องการทราบเทคนิคบางอย่างเพื่อทำให้ทิวทัศน์น่าสนใจในรูปแบบจากบนลงล่างโดยไม่ต้องปลอมเป็นมิติที่สาม (คุณไม่สามารถสร้างหรือทำลายภูมิประเทศในเกมนี้เพื่อให้มีความยืดหยุ่นมากขึ้น) แก้ไข: เพื่อให้สิ่งต่าง ๆ ชัดเจนยิ่งขึ้นฉันพยายามหลีกเลี่ยงโลกที่มีคุณสมบัติที่ต้องใช้มิติที่ 3 ตัวอย่างเช่นฉันไม่สามารถมีภูเขาหรือภูเขากลิ้งได้ สามารถเพิ่มฟีเจอร์ภูมิทัศน์ใดที่ไม่ต้องการแกล้งทำมิติที่ 3 คำตอบเดียวอาจจะเพิ่มแม่น้ำ แต่นั่นเป็นคำตอบที่ชัดเจน

3
Peer-to-peer เกมการแข่งขันที่ไม่มีโฮสต์ของโอกาส? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา ฉันสงสัยว่า - เคยมีเกมใด ๆ ที่เคยสร้างขึ้นมา: peer-to-peer โดยไม่ต้องมีหนึ่งเพียร์ถูกกำหนดให้เป็นโฮสต์ การแข่งขัน (ไม่ร่วมมือผู้เล่นเล่นกับคนอื่น) ยุติธรรมพอสมควร (ไม่มีความเป็นไปได้ของการโกงผู้เล่น) อย่าให้ข้อมูลกับผู้เล่นมากกว่าที่พวกเขาต้องการ (ตัวอย่างเช่นไม่เปิดเผยความลับของผู้เล่นคนอื่นแม้แต่กับแอปพลิเคชั่นที่กำลังรันอยู่) ตัวอย่างของเกมดังกล่าวจะเป็นเกมโป๊กเกอร์ที่ผู้เล่นแต่ละคนและเกมของพวกเขาจะสามารถรู้ว่ามือของตัวเอง แต่ไม่ใช่มือของผู้เล่นคนอื่นโดยไม่ต้องพึ่งพาพวกเขาเป็นเจ้าภาพของเกม ฉันรู้ว่ามีเกมไม่กี่เกมที่มีความยุติธรรมซึ่งพิสูจน์ได้ แต่สิ่งที่ฉันรู้มีอยู่ในการกำหนดค่าเซิร์ฟเวอร์ - ไคลเอนต์

5
ทำไมขนาดก้อนมักจะเป็นกำลังของสอง
มีโคลนนิ่ง Minecraft จำนวนมากอยู่ที่นั่นและฉันกำลังดำเนินการตามแนวทางของฉันเอง หลักการของการเรนเดอร์ภูมิประเทศคือการปูกระเบื้องให้ทั่วทั้งโลกเป็นชิ้นขนาดคงที่เพื่อลดความพยายามในการเปลี่ยนแปลงในภาษาท้องถิ่น ใน Minecraft ขนาดก้อนเท่ากับ 16 x 16 x 256 เท่าที่ฉันตอนนี้ และในโคลนฉันยังเห็นพลังของหมายเลข 2 ด้วยเสมอ มีเหตุผลใดที่เกี่ยวข้องกับประสิทธิภาพหรือหน่วยความจำ ฉันรู้ว่าพลังของ 2 มีบทบาทพิเศษในคอมพิวเตอร์ไบนารี แต่สิ่งที่จะทำอย่างไรกับขนาดของก้อน?

6
วิธีทำให้ตัวละครของฉันลื่นไหลขณะเดินบนเส้นทาง (รายการพิกัด)
ฉันมีรายการที่มีพิกัด - เอาต์พุตจากอัลกอริทึม A * และฉันต้องการทำให้ตัวละครของฉันเดินตามเส้นทางนี้อย่างราบรื่นด้วยการหมุน ดังนั้นฉันมีบางอย่างเช่นAและฉันต้องการได้C ฉันจะทำสิ่งนี้ได้อย่างไร แก้ไข หากต้องการทำให้ตัวเองชัดเจนยิ่งขึ้น: ฉันสนใจที่จะหมุนอย่างราบรื่นมากขึ้นเนื่องจากฉันรู้วิธีการเดินจากโหนดหนึ่งไปอีกโหนดหนึ่ง แก้ไข หลายคนพบว่ามีประโยชน์ (ฉันด้วย) ฉันกำลังโพสต์ลิงก์ไปยัง "ธรรมชาติของรหัส" ของ Daniel Shiffman ซึ่งเขาพูดถึงปัญหา AI (และฟิสิกส์) ของเกมเช่นปัญหาพฤติกรรมพวงมาลัยhttp://natureofcode.com/book/chapter- 6 อิสระตัวแทน / # chapter06_section8
15 c#  unity  path-finding 

2
ตูน / cel แรเงาที่มีความกว้างของเส้นตัวแปร?
ฉันเห็นแนวทางกว้าง ๆ สองสามข้อเพื่อทำการแรเงา cel: การทำซ้ำและการขยายรูปแบบด้วยบรรทัดฐานพลิก (ไม่ใช่ตัวเลือกสำหรับฉัน) Sobel filter / fragment shader เข้าใกล้การตรวจจับขอบ บัฟเฟอร์ของลายฉลุเข้าหาการตรวจจับขอบ วิธีการ Shader ของเรขาคณิต (หรือจุดสุดยอด) ที่คำนวณบรรทัดฐานใบหน้าและขอบ ฉันถูกต้องหรือไม่ถ้าสมมติว่าวิธีเรขาคณิตเป็นศูนย์กลางช่วยให้สามารถควบคุมปริมาณแสงและความหนาของเส้นได้มากที่สุดเช่นกัน สำหรับภูมิประเทศที่คุณอาจเห็นแนวเงาของเนินเขาค่อยๆรวมกันเป็นที่ราบ ถ้าฉันไม่ต้องการแสงพิกเซลบนพื้นผิวภูมิประเทศของฉันล่ะ (และฉันอาจจะไม่เป็นอย่างที่ฉันวางแผนที่จะใช้แสง / เงาบนพื้นผิวที่ใช้กับเซลล์ / แรปแมป) - ฉันจะดีกว่าหากใช้วิธีเรขาคณิต - หรือดีกว่าสำหรับพื้นที่หน้าจอ / ชิ้นส่วนแทน การทำให้สิ่งต่าง ๆ ง่ายขึ้น? ถ้าเป็นเช่นนั้นฉันจะได้รับ "หมึก" ของเนินเขา ในภาพเงาตาข่ายแทนที่จะเป็นเพียงโครงร่างของตาข่ายทั้งหมด (โดยไม่มีรายละเอียด "หมึก" ภายในโครงร่างนั้น) ( รูปทรงที่มีการชี้นำของ AKA , รอยย่น ) สุดท้ายเป็นไปได้ไหมที่จะเลียนแบบวิธีการพลิก - …

6
นักพัฒนาควรทำให้เกมของพวกเขาง่ายขึ้นด้วยเวอร์ชันใหม่หรือไม่?
ดูเหมือนว่าเกม Angry Birds จะค่อยๆง่ายขึ้นเมื่อมีเวอร์ชั่นใหม่ บางทีคนอาจจะเข้าใจผิดเกี่ยวกับความก้าวหน้าและความพึงพอใจในการทำลายสถิติใหม่? ฉันต้องการทราบว่าการปรับเปลี่ยนเกมเล็ก ๆ อย่างค่อยเป็นค่อยไปเพื่อเพิ่มความรู้สึกของการปรับปรุงและการเรียนรู้โดยผู้ใช้เป็นที่รู้จัก / ปฏิบัติทั่วไป / มาตรฐานในการพัฒนาเกม (ฉันไม่ได้ตั้งใจจะบอกว่ามีอะไรผิดปกติกับการฝึกฝน)

2
Toolchain ทั่วไปสำหรับการพัฒนาเกม DOS คืออะไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน9 เดือนที่ผ่านมา ฉันสงสัยว่าผู้คนเคยเขียนเกม DOS (เช่น Doom) ฉันไม่สามารถหาอะไรได้มากมาย แต่ชอบที่จะเรียนรู้เพิ่มเติมเกี่ยวกับการพัฒนาเกมก่อนหน้านี้ ใช้ภาษาอะไรเป็นหลัก? ฉันคิดว่ามันเป็น C หรือ C ++ อยู่แล้ว? IDEs ใด (หรือบรรณาธิการ / คอมไพเลอร์) เป็นที่นิยม Microsoft Visual C / C ++ (หรือ Microsoft C / C ++ ตามที่ฉันเชื่อว่ามันเคยถูกเรียกว่า) ไม่ได้มีอยู่ในตอนนั้น AFAIK แล้วคนใช้อะไร แก้ไขและคอมไพเลอร์บรรทัดคำสั่งจาก Intel หรืออะไร? API ใดที่ใช้? อะไรเป็นเรื่องธรรมดาสำหรับเกม 2D? แล้วเกม …

1
Keystone Correction โดยใช้ 3D-Points of Kinect
ด้วย XNA ฉันกำลังแสดงรูปสี่เหลี่ยมผืนผ้าที่เรียบง่ายซึ่งถูกฉายลงบนพื้น โปรเจ็กเตอร์สามารถวางในตำแหน่งโดยพลการ เห็นได้ชัดว่าสี่เหลี่ยมที่ฉายนั้นบิดเบี้ยวตามตำแหน่งและมุมของโปรเจ็คเตอร์ Kinect สแกนพื้นเพื่อหามุมทั้งสี่ ตอนนี้เป้าหมายของฉันคือการแปลงรูปสี่เหลี่ยมเดิมเพื่อให้การฉายไม่มีความบิดเบี้ยวอีกต่อไปโดยการแปรปรวนของสี่เหลี่ยมล่วงหน้า วิธีแรกของฉันคือทำทุกอย่างใน 2D: ก่อนอื่นคำนวณการแปลงเปอร์สเปคทีฟ (โดยใช้ OpenCV warpPerspective()) จากจุดที่สแกนไปยังจุดภายในของสี่เหลี่ยม ดูเหมือนว่าจะใช้งานได้ แต่ช้าเกินไปเนื่องจากไม่สามารถแสดงผลบน GPU ได้ แนวทางที่สองคือการทำทุกอย่างในรูปแบบ 3 มิติเพื่อใช้คุณสมบัติการแสดงผลของ XNA ก่อนอื่นฉันจะแสดงเครื่องบินสแกนมุมของมันด้วย Kinect และทำแผนที่คะแนน 3D ที่ได้รับไปยังระนาบเดิม ในทางทฤษฎีฉันสามารถใช้การผกผันของการแปลงมุมมองกับระนาบได้เช่นเดียวกับที่ฉันทำในแบบสองมิติ อย่างไรก็ตามเนื่องจาก XNA ทำงานร่วมกับเมทริกซ์มุมมองและเส้นโครงร่างฉันจึงไม่สามารถเรียกฟังก์ชันเช่นwarpPerspective()และรับผลลัพธ์ที่ต้องการได้ ฉันต้องคำนวณพารามิเตอร์ใหม่สำหรับมุมมองและเมทริกซ์การฉายของกล้อง คำถาม: เป็นไปได้ไหมที่จะคำนวณพารามิเตอร์เหล่านี้และแยกออกเป็นสองเมทริกซ์ (มุมมองและการฉายภาพ)? ถ้าไม่มีวิธีอื่นที่ฉันสามารถใช้ได้หรือไม่?
15 xna  2d  3d  projection  kinect 

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