การพัฒนาเกม

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

3
เครื่องมือ Shader เรียลไทม์ที่ยอดเยี่ยม? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันมักจะพัฒนาเกม 2D ฉันต้องการทราบว่ามีโปรแกรมอย่าง EvalDraw ออกมาหรือไม่ซึ่งทำให้ง่ายต่อการสร้างสี่เหลี่ยม (เช่น) จากสี่เหลี่ยมจัตุรัสสีดำอย่างรวดเร็วแล้วเขียนโค้ด shader บางส่วนและดูว่าโค้ด shader นั้นปรับเปลี่ยนกำลังสองได้อย่างไร ในเรียลไทม์ นั่นจะยอดเยี่ยมสำหรับกระบวนการพัฒนาในอนาคตของฉัน แก้ไข: เครื่องมือ shader ต้องทำงานกับ HLSL
11 tools 

4
กลศาสตร์รูปแบบฐานข้อมูลเกม? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา คุณรู้จักhttp://tvtropes.orgหรือไม่ มันเป็นวิกิ / ฐานข้อมูลที่มีฉาก tropes, รูปแบบที่คุณสามารถหาได้ในโทนของเรื่องราว, ในรายการทีวี, เกม, หนังสือ, ฯลฯ แต่ละรูปแบบ / รูปแบบมีชื่อ (ตลก) และมีการอ้างอิงถึงตำแหน่งที่ปรากฏและวิธีอื่น ๆ : หนังสือ / เกม / ฯลฯ แต่ละเล่ม มีรายการของ tropes ที่มี ฉันกำลังมองหาสิ่งที่เทียบเท่า แต่สำหรับรูปแบบกลไกของเกมบางอย่างเช่น "Death is definitive", "Perfect Physical Control (ไม่มีความเฉื่อย)", "Excell table gameplay" และอื่น ๆ ฉันคิดว่ามันจะมีประโยชน์จริงๆ ฉันไม่พบสิ่งที่เทียบเท่าสำหรับกลไกเกม (TVtrope …

2
วิธีการจัดการการพึ่งพาระหว่างแผนที่ย่อยและหน่วย
ฉันมีกลยุทธ์แบบกระเบื้องสองมิติในการทำงาน ฉันหลงทางเกี่ยวกับการจัดการความสัมพันธ์ระหว่างแผนที่และหน่วยบนแผนที่ ถ้ามีพิกัดของกระเบื้องฉันจะต้องสามารถทำให้ยูนิตนั้นยืนอยู่ได้ถ้ามี ในเวลาเดียวกันหากได้รับหน่วยฉันจะต้องการได้รับการประสานงานของหน่วย ฉันเห็นวิธีแก้ไขปัญหาสองข้อนี้แล้ว วิธีแก้ปัญหาแรกคือการให้หน่วยจัดเก็บพิกัดและหน่วยเก็บแผนที่อ้างอิงในแผ่นกระเบื้อง สิ่งนี้สร้างการพึ่งพาแบบวนรอบระหว่างแผนที่และหน่วย ฉันต้องตรวจสอบให้แน่ใจว่าแผนที่ของหน่วยใด ๆ ได้รับการซิงค์หากหน่วยเคลื่อนที่ วิธีที่สองคือให้หน่วยติดตามพิกัดเท่านั้น หากต้องการทราบว่าไทล์ประกอบด้วยหน่วยหนึ่งและรับหน่วยนั้นหรือไม่ฉันจะวนซ้ำทั้งชุดหน่วยที่ฉันค้นหาด้วยการจับคู่พิกัด ที่ได้รับ rids ของการพึ่งพาแบบวนรอบ แต่มันจะสูญเสียคุณสมบัติ O (1) วิธีแก้ปัญหาแรกสำหรับการค้นหาหน่วยจากแผนที่ สิ่งนี้อาจเพิ่มขึ้นตามที่ฉันต้องการเพื่อสแกนแผนที่เป็นประจำสำหรับสิ่งต่าง ๆ เช่นการค้นหาเส้นทางการกำหนดช่วงการเคลื่อนไหวและการค้นหาเป้าหมายที่ถูกต้องสำหรับหน่วยที่กำหนด ฉันยังไม่สามารถเก็บหน่วยไว้ในแผนที่ได้ (หรือฉันสามารถทำได้) หน่วยที่เกี่ยวข้องกับ "กองทัพ" ผู้เล่นหรือ AI กองทัพควรสามารถเข้าถึงได้ง่ายและย้ำทุกหน่วยของมัน เนื่องจากสิ่งนี้ดูเหมือนจะเป็นปัญหาที่พบบ่อยในเกมวางกลยุทธ์มีรูปแบบอื่นนอกเหนือจากที่ฉันอธิบายไว้สำหรับการจัดการความสัมพันธ์ของหน่วย / แผนที่หรือไม่
11 tiles  maps  character 

4
ฟังก์ชั่นแบบต่อเฟรมการโทรและการส่งข้อความที่ขับเคลื่อนด้วยเหตุการณ์ในการออกแบบเกม
การออกแบบเกมแบบดั้งเดิมอย่างที่ฉันรู้นั้นใช้ความหลากหลายและฟังก์ชั่นเสมือนจริงเพื่ออัพเดทสถานะของเกม กล่าวอีกนัยหนึ่งชุดฟังก์ชั่นเสมือนจริงจะถูกเรียกในช่วงเวลาปกติ (เช่น: ต่อเฟรม) ในทุกวัตถุในเกม เมื่อเร็ว ๆ นี้ฉันค้นพบว่ามีอีกระบบการส่งข้อความที่ขับเคลื่อนด้วยเหตุการณ์เพื่อปรับปรุงสถานะของวัตถุเกม ที่นี่วัตถุมักจะไม่ได้รับการปรับปรุงในแต่ละเฟรม แต่จะมีการสร้างระบบการส่งข้อความเหตุการณ์ที่มีประสิทธิภาพสูงและวัตถุเกมจะได้รับการอัพเดตหลังจากได้รับข้อความเหตุการณ์ที่ถูกต้องเท่านั้น จัดกิจกรรมขับเคลื่อนสถาปัตยกรรมเกมจะอธิบายได้ดีใน: เกมการเข้ารหัสที่สมบูรณ์โดยไมค์แมคชาฟฟรี ฉันขอความช่วยเหลือจากคำถามต่อไปนี้: อะไรคือข้อดีและข้อเสียของทั้งสองวิธีคืออะไร? อันไหนดีกว่าอีกอัน? การออกแบบเกมเป็นไปตามหลักสากลและดีกว่าในทุก ๆ ด้านหรือไม่? ดังนั้นจึงแนะนำให้ใช้งานแม้ในแพลตฟอร์ม mombile? อันไหนมีประสิทธิภาพมากขึ้นและยากต่อการพัฒนา เพื่อชี้แจงคำถามของฉันไม่ได้เกี่ยวกับการลบความหลากหลายโดยสิ้นเชิงจากการออกแบบเกม ฉันเพียงต้องการที่จะเข้าใจความแตกต่างและผลประโยชน์จากการใช้การส่งข้อความที่ขับเคลื่อนด้วยเหตุการณ์และการโทรปกติ (ต่อเฟรม) ไปยังฟังก์ชั่นเสมือนจริงเพื่ออัปเดตสถานะเกม ตัวอย่าง: คำถามนี้ทำให้เกิดความขัดแย้งเล็กน้อยที่นี่ดังนั้นฉันขอเสนอตัวอย่าง: ตาม MVC เครื่องมือเกมแบ่งออกเป็นสามส่วนหลัก: Application Layer (การสื่อสารของฮาร์ดแวร์และระบบปฏิบัติการ) เกมลอจิก มุมมองเกม ในเกมแข่งรถ Game View รับผิดชอบในการแสดงผลหน้าจอโดยเร็วที่สุดอย่างน้อย 30 เฟรมต่อวินาที Game View รับฟังอินพุตของผู้เล่นด้วย ตอนนี้สิ่งนี้เกิดขึ้น: ผู้เล่นกดแป้นคันเร่งเป็น 80% GameView สร้างข้อความ "เหยียบเชื้อเพลิงรถยนต์ …

4
ฉันจะใช้การลดความเร็วได้อย่างไร
ฉันพูดว่า "การชะลอตัว" เพราะฉันไม่ได้ใช้การเร่งความเร็วในขณะนี้ สิ่งที่ฉันหมายถึงคือการย้ายความเร็วกลับไปที่ศูนย์ในที่สุดก็หยุด ฉันยังใหม่กับเวกเตอร์และไม่ค่อยมีเรื่องเกี่ยวกับฟิสิกส์และเช่นนั้น ปกติจะมีการจัดการ "การชะลอตัว" อย่างไร ตอนนี้สิ่งที่ฉันได้ผล แต่ดูเหมือนว่าแฮ็ค update:function(Game, t, dt) { var speed = Game.Input.isKeyDown('shift') ? 8 : 4; if (Game.Input.isKeyDown('a')) { this.velocity.i -= speed; } else if (Game.Input.isKeyDown('d')) { this.velocity.i += speed; } else { if (Math.abs(this.velocity.i) > 3) { this.velocity.i += (this.velocity.i > 0) ? …

2
ลอยสองหรือทั้งสองอย่างสำหรับคลาส Vector 2 มิติ?
ขณะนี้ฉันกำลังเขียนเอนจิ้นเกม 2D ที่ใช้ OpenGL เป็นแพลตฟอร์มขนาดเล็กสำหรับสตูดิโอของเรา เมื่อฉันค้นคว้าคลาส Vector 2 มิติที่จะใช้ฉันสะดุดกับกระบวนทัศน์การออกแบบที่แตกต่างกันสามแบบ: ลอยและโทรโดยค่าเหมือนในบทความ Gamasutra นี้ ดูเหมือนว่าจะเร็ว แต่มีความแม่นยำน้อย (ดูหัวข้อนี้ ) Pro: รวดเร็วพกพาและใช้งานได้กับห้องสมุดส่วนใหญ่ Double & Call-by-Reference หากฉันเข้าใจบทความข้างต้นถูกต้องฉันสามารถใช้ตัวแปรความแม่นยำสองคู่แทนตัวเลขทศนิยม 4 ตัว ตามด้ายข้างต้นสองครั้งยังคงช้ากว่าลอย เทมเพลตสำหรับ double และ float: หนังสือยอดนิยม " Game Engine Architecture " ใช้เทมเพลตเพื่อให้สามารถใช้ float และ double ได้ตามต้องการ ข้อเสียที่ชัดเจนคือการขยายโค้ด นอกจากนี้ฉันสงสัยว่ารหัสสามารถปรับให้เหมาะสมโดยไม่ต้องเขียนสองชั้นโดยทั่วไป ฉันขอขอบคุณที่เรียนรู้วิธีแก้ไขปัญหาที่คุณใช้ในเอ็นจิ้นภายในองค์กรของคุณและความแม่นยำของเอ็นจิ้นเกมยอดนิยมดังนั้นฉันสามารถตัดสินใจได้ว่าโซลูชั่นใดที่ฉันจะใช้ในเอ็นจิ้นของเรา ในช่วงเวลาที่ฉันคิดเพียงแค่ใช้ความแม่นยำลอยและอยู่กับมัน

2
วิธีทำให้ผู้เล่นเลื่อนไปตามภูมิประเทศอย่างราบรื่น
ฉันทำเกมสามมิติ เมื่อผู้เล่นพยายามที่จะเดินแนวทแยงมุมเข้าไปในกำแพงฉันต้องการให้พวกเขาเลื่อนไปมาได้อย่างราบรื่นดังนั้นส่วนใดของการเคลื่อนไหวก็จะถูกใช้อย่างถูกกฎหมาย กำแพงอาจเป็นมุมใดก็ได้ไม่เพียงแค่แนวตั้งหรือแนวนอนและผู้เล่นมีการเคลื่อนไหว 360 องศา ฉันรู้สึกว่าฉันเกือบจะอยู่ที่นั่น แต่ฉันไม่สามารถวางชิ้นสุดท้ายไว้ได้ อัพเดท: ข่าวดีสำหรับทุกคน! ฉันทำงานแล้ว แต่ ... ฉันสับสนนิดหน่อยว่าฉันควรทำอะไรให้เป็นปกติและไม่ดี ปกติก็ต้องเป็นเวกเตอร์หน่วยจริงไหม? แต่จากนั้นฉันกำลังผสมกับอินพุตของฉันดังนั้นฉันจึงทำให้เป็นปกติ - ฉันผิด โดยวิธีการที่ฉันได้พบว่าฉันต้องผลักดันผู้เล่น 1 พิกเซลในทิศทางปกติเพื่อให้พวกเขาไม่ได้ติดอยู่กับสิ่งต่าง ๆ - ทำงานได้ดี

3
ทำไม“ ท่าผูกมัด” กับแขนที่ยื่นออกมา?
สิ่งที่ฉันสงสัยบ่อยครั้งก็คือ "ท่าผูกมัด" ท่าผูกสำหรับโครงกระดูกมนุษย์เป็นสิ่งที่ขาของพวกเขาตั้งตรงและแขนของพวกเขาตั้งฉากกับร่างกายของพวกเขา: คำถามของฉันคือ: ทำไม ท่าทางดังกล่าวง่ายขึ้นหรือไม่ที่อนิเมเตอร์จะทำงานร่วมกับหรือโปรแกรมเมอร์หรือทั้งสองอย่าง? เท่าที่ฉันเข้าใจคณิตศาสตร์ท่าผูกไม่ได้สร้างความแตกต่างให้กับผลลัพธ์

5
ข้ามแพลตฟอร์ม API กราฟิกระดับต่ำ
เมื่อสร้างสิ่งที่เป็นนามธรรมระบบจะดีกว่าที่จะมีแพลตฟอร์ม API ที่แตกต่างกันที่ซ่อนอยู่โดยอินเตอร์เฟซทั่วไปในระดับต่ำสุดที่เหมาะสม คำนึงถึงความทันสมัยที่แตกต่างกัน (โดยไม่มีฟังก์ชั่นคงที่) API กราฟิคดั้งเดิม: OpenGLES 2.0+, OpengGL 3.0+, DirectX 10.0+, Xbox DirectX 9, LibGCM ถ้ามีใครอยากสร้างAPI กราฟิคระดับต่ำให้อยู่เหนือพวกเขาทั้งหมดนี่จะเป็นวิธีที่ดีที่สุดในการทำให้มันผอมและเร็วที่สุดเท่าที่จะเป็นไปได้?

3
NullReferenceException เป็นอันหนึ่งอันเดียวกัน
เนื่องจากผู้ใช้หลายคนกำลังเผชิญกับNullReferenceException: Object reference not set to an instance of an objectข้อผิดพลาดใน Unity ฉันคิดว่าการรวบรวมคำอธิบายและวิธีการแก้ไขข้อผิดพลาดนี้เป็นความคิดที่ดีที่จะรวบรวมจากหลายแหล่ง อาการ ฉันได้รับข้อผิดพลาดด้านล่างปรากฏในคอนโซลของฉันมันหมายถึงอะไรและฉันจะแก้ไขได้อย่างไร NullReferenceException: การอ้างอิงวัตถุไม่ได้ตั้งค่าเป็นอินสแตนซ์ของวัตถุ
11 unity  exceptions 

1
Unity - สั่งซื้อในเลเยอร์ Z สำหรับวัตถุ
ขออภัยถ้าชื่อไม่ตรงกับคำถามของฉันฉันไม่รู้จะอธิบายได้อย่างไร ฉันมีภาพสำหรับพื้นเมืองของฉันและรูปภาพ (ขนาดเดียวกัน) สำหรับผนังหรือต้นไม้ทั้งหมดที่ผู้เล่นควรจะซ่อนอยู่หลังถ้าเขาเดินผ่านด้านหลัง ผลลัพธ์ของฉันไม่ได้ดูแย่มาก: ปัญหาคือว่าถ้าผู้เล่นเดินไปข้างหน้ากำแพงเขาหายตัวไปเพราะลำดับชั้นของผนังอยู่เหนือคำสั่งของผู้เล่น: มีวิธีที่ค่อนข้างง่ายในการแก้ไขปัญหานี้หรือฉันต้องเพิ่มวัตถุเหล่านั้นทั้งหมดด้วยตนเองและเชื่อมต่อเข้ากับสคริปต์บางอย่าง?
11 unity  pixel-art 

4
ฉันจะตรวจสอบได้อย่างมีประสิทธิภาพว่าจุดอยู่ภายในสี่เหลี่ยมหมุนอย่างไร
ส่วนหนึ่งเพื่อประโยชน์ในการเพิ่มประสิทธิภาพส่วนหนึ่งเพื่อจุดประสงค์ในการเรียนรู้ฉันจะกล้าถาม: ฉันจะตรวจสอบได้อย่างมีประสิทธิภาพมากที่สุดว่าจุด 2D นั้นPอยู่ในสี่เหลี่ยมหมุนรอบสองมิติXYZWโดยใช้ C # หรือ C ++ อย่างไร ขณะนี้สิ่งที่ฉันกำลังทำคือการใช้อัลกอริทึม "จุดเป็นรูปสามเหลี่ยม" ที่พบในหนังสือการตรวจหาการชนกันแบบเรียลไทม์และเรียกใช้สองครั้ง (สำหรับสามเหลี่ยมสองรูปที่ประกอบเป็นสี่เหลี่ยมพูด XYZ และ XZW): bool PointInTriangle(Vector2 A, Vector2 B, Vector2 C, Vector2 P) { // Compute vectors Vector2 v0 = C - A; Vector2 v1 = B - A; Vector2 v2 = P - A; // Compute …

3
ฉันจะทำให้เอนทิตีย้ายไปในทิศทางได้อย่างไร?
ฉันมีEntityอินสแตนซ์ที่อัพเดททุกช่วงเวลาของเกม สมมติว่าเอนทิตีเคลื่อนไปข้างหน้าอย่างต่อเนื่อง ฉันต้องการให้มุมของเอนทิตีกับฟังก์ชันที่ทำให้มันไปในทิศทางนั้น: moveForward(90);ควรทำให้พวกเขาไปทางขวา ถ้าผมประกาศการหมุนของฉันเป็นโลกintแล้วทำ moveForward(rotation); rotation++; จะทำให้มันติดตามวงกลมขนาดเล็กที่มีการเคลื่อนไหว ฉันจะทำสิ่งนี้ได้อย่างไร ฉันถือว่านี่เกี่ยวข้องกับคณิตศาสตร์เวกเตอร์ ฉันไม่รู้อะไรเลยคำอธิบายสั้น ๆ น่าจะดี

2
วิธีการคำนวณมุมยิงและความเร็วในการยิงเป้าเคลื่อนที่?
ฉันกำลังพัฒนาเกม 2D บน Android และฉันกำลังสร้างอัลกอริธึมการเล็งสำหรับขีปนาวุธ AI เพื่อโจมตีศัตรูไม่ว่าจะตามเส้นทางหรือเคลื่อนที่ได้ฟรี ในขณะนี้มันเพียงแค่คำนวณว่าเป้าหมายจะอยู่หลังระยะทางใดและยิงกระสุนปืนเพื่อไปพบมันในระยะทางนั้น แน่นอนว่านี่หมายถึงการเปลี่ยนแปลงความเร็วของกระสุนปืนเพื่อให้บรรลุเป้าหมาย ไม่มีใครมีเคล็ดลับสำหรับอัลกอริทึมแบบง่าย - ish (เหมาะสมที่สุด - ish) ในการคำนวณเมื่อกระสุนปืนต้องการยิงและตำแหน่งที่ต้องการเล็งหากมันสามารถเคลื่อนที่ด้วยความเร็วคงที่เท่านั้น? พูดว่า projectile ไปที่ความเร็วของเป้าหมายเป็นสองเท่า? วิธีเดียวที่ฉันสามารถนึกถึงเกี่ยวข้องกับการค้นหาและดูเหมือนจะค่อนข้างใหญ่
11 2d  android  mathematics  ai  aiming 

3
วิธีรับการแปลจากมุมมองเมทริกซ์
ฉันจะดึงข้อมูลตำแหน่งโลกของกล้องจากเมทริกซ์มุมมองได้อย่างไร คำตอบเดียวที่ฉันเคยเห็นสำหรับคำถามนี้แนะนำให้แปลอยู่ในแถว / คอลัมน์สุดท้าย แต่สิ่งนี้จะไม่ทำงานเนื่องจากเมทริกซ์มี [x (dot) ขวา, y (dot) up, z (dot) look]
11 3d  mathematics  matrix 

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