การพัฒนาเกม

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

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

4
ใน Cocos2D ฉันจะตรวจสอบการชนกับรูปร่างที่ผู้ใช้วาดเองตามอำเภอใจได้อย่างไร
ฉันต้องการตรวจจับการปะทะกันระหว่างสไปรต์และรูปร่างที่ผู้ใช้สร้างขึ้นของการจัดเรียงบางอย่าง ตัวอย่างเช่น. มี 3 วัตถุบนหน้าจอ ผู้ใช้ใช้นิ้วของพวกเขาและวาดรูปร่างผิดปกติประมาณ 2 ของวัตถุ ฉันต้องการตรวจจับวัตถุ 2 ชิ้นนั้น ฉันจะใช้วิธีนี้อย่างมีประสิทธิภาพโดยใช้ Cocos2D ได้อย่างไร

3
ทำไม Farseer 2.x จัดเก็บขมับเป็นสมาชิกและไม่อยู่ในสแต็ก (.สุทธิ)
UPDATE: คำถามนี้หมายถึง Farseer 2.x 3.x ที่ใหม่กว่าดูเหมือนจะไม่ทำเช่นนี้ ฉันใช้ Farseer Physics Engine อย่างกว้างขวางในขณะนี้และฉันสังเกตเห็นว่าดูเหมือนว่าจะเก็บค่าชั่วคราวจำนวนมากในฐานะสมาชิกของคลาสและไม่ได้อยู่ในสแต็กอย่างที่คาดไว้ นี่คือตัวอย่างจากBodyชั้นเรียน: private Vector2 _worldPositionTemp = Vector2.Zero; private Matrix _bodyMatrixTemp = Matrix.Identity; private Matrix _rotationMatrixTemp = Matrix.Identity; private Matrix _translationMatrixTemp = Matrix.Identity; public void GetBodyMatrix(out Matrix bodyMatrix) { Matrix.CreateTranslation(position.X, position.Y, 0, out _translationMatrixTemp); Matrix.CreateRotationZ(rotation, out _rotationMatrixTemp); Matrix.Multiply(ref _rotationMatrixTemp, ref _translationMatrixTemp, …

6
ทำให้อัตราเฟรมของ pygame เร็วขึ้น
จากการทำโปรไฟล์เกมของฉันฉันเห็นว่าเวลาส่วนใหญ่ในการดำเนินการของเกมงานอดิเรกของฉันคือระหว่างการ blit และการพลิก ขณะนี้มันทำงานที่ประมาณ 13fps เท่านั้น การ์ดแสดงผลของฉันค่อนข้างดีดังนั้นฉันเดาว่า pygame ไม่ได้ใช้งาน ไม่มีใครรู้เกี่ยวกับตัวเลือกกราฟิก / การแสดงผลที่ฉันต้องตั้งค่าใน pygame เพื่อให้เร็วขึ้น? หรือนี่เป็นสิ่งที่ฉันต้องอยู่ด้วยตั้งแต่ฉันเลือก pygame?


2
สร้างตัวเลขสุ่มใน Unity โดยไม่ต้องมีคลาสที่คลุมเครือ
ฉันมีปัญหาใน Unity (C #) ที่ฉันต้องการสร้างหมายเลขสุ่ม ฉันต้องการใช้System.Random(อ้างอิง: ใช้System) UnityEngine.Randomแต่ความสามัคคีบ่นว่ามันเป็นที่คลุมเครือของตัวเอง ฉันไม่สามารถระบุการอ้างอิง (โดยใช้System.Random) เนื่องจากrandomไม่ใช่เนมสเปซ ฉันจะระบุว่าฉันต้องการใช้ระบบสุ่มและไม่ใช่ระบบ Unity ได้อย่างไร
10 unity  c# 

4
วิธีปรับอัลกอริธึม pathfinding ให้สอดคล้องกับการเคลื่อนไหวที่ จำกัด ?
ลองนึกภาพการเคลื่อนไหวของรถที่ซึ่งเอนทิตี้ไม่สามารถเปิดสิบเซนต์ได้ พูดเพื่อประโยชน์ของการสนทนาว่าเมื่อความเร็วพวกเขาสามารถหมุน 90 องศาต่อวินาที ในหลายกรณีนี้จะเปลี่ยนเส้นทางที่ดีที่สุดและทำให้การหาเส้นทาง มันอาจทำให้เส้นทาง 'ปกติ' เป็นไปไม่ได้อย่างสิ้นเชิงที่จะสำรวจ มีอัลกอริทึมการค้นพบเส้นทางหรืออัลกอริทึมการวางแผนการเคลื่อนไหวที่สามารถจำได้หรือไม่หรือมีวิธีง่ายๆในการปรับตัวที่เป็นที่นิยม?
10 path-finding  car 

1
ฉันจะแก้ไขการจับคู่การทำแผนที่ UV ซิกซิกแซกบนตาข่ายที่สร้างขึ้นได้อย่างไร
ฉันกำลังสร้างตาข่ายแบบขั้นตอนตามเส้นโค้งและขนาดของตาข่ายจะเล็กลงตลอดทั้งเส้นโค้งตามที่คุณเห็นด้านล่าง และปัญหาคือรังสียูวีได้รับซิกแซกเนื่องจากการเปลี่ยนแปลงขนาด (มันทำงานได้อย่างสมบูรณ์เมื่อขนาดของตาข่ายเท่ากันตลอดทั้งโค้ง) Vertices.Add(R); Vertices.Add(L); UVs.Add(new Vector2(0f, (float)id / count)); UVs.Add(new Vector2(1f, (float)id / count)); start = Vertices.Count - 4; Triangles.Add(start + 0); Triangles.Add(start + 2); Triangles.Add(start + 1); Triangles.Add(start + 1); Triangles.Add(start + 2); Triangles.Add(start + 3); mesh.vertices = Vertices.ToArray(); //mesh.normals = normales; mesh.uv = UVs.ToArray(); mesh.triangles = Triangles.ToArray(); …

3
ความสามัคคี: กล่องโต้ตอบ“ จุดสิ้นสุดของบรรทัดที่ไม่สอดคล้องกัน” จะปรากฏขึ้นตลอดเวลาที่ฉันเปิด VS ด้วยความสามัคคี
ทุกครั้งที่ฉันเปิดไฟล์สคริปต์จากความเป็นเอกภาพด้วย visual studio กล่องโต้ตอบนี้จะแสดงเกี่ยวกับการทำให้บรรทัดจบบรรทัดเป็นปกติหรือไม่ สิ่งนี้หมายความว่า? ฉันคลิกใช่ทุกครั้ง แต่ก็ยังไม่สามารถกำจัดได้ มันจะเกิดขึ้นเมื่อฉันเปิดไฟล์จากความสามัคคี

2
ทำไม Unity layer masks จำเป็นต้องใช้การเลื่อนบิต?
ในที่สุดฉันก็พบว่าทำไมเลเยอร์มาสก์ของฉันสำหรับรหัสการชนกันของพื้นไม่ทำงาน ฉันกำลังใช้NameToLayer()เพื่อให้ได้เลเยอร์ที่ฉันต้องการ แต่เลเยอร์มาสก์ใช้การเลื่อนบิตเพื่อตั้งค่าเลเยอร์มาสก์จริง นี่เป็นสิ่งที่ผิดปกติอย่างยิ่งและฉันไม่เห็นเหตุผลว่าทำไมสิ่งนี้ถึงไม่ได้รับการจัดการในโค้ดด้านหลัง ทำไมเราต้องใช้รหัสเช่นนี้: mask = 1 << LayerMask.NameToLayer("Default"); เมื่อสิ่งนี้: mask = LayerMask.NameToLayer("Default"); ใช้งานได้ง่ายขึ้นและทำงานคล้ายกับส่วนที่เหลือของ Unity API หรือไม่
10 unity  c# 

2
ควรใช้ C ++ และพิมพ์เขียวเมื่อใด
ฉันพยายามเรียนรู้วิธีใช้ Unreal Engine ฉันมีความรู้พื้นฐานของ C ++ เมื่อเร็ว ๆ นี้ฉันเริ่มสร้างเกมสยองขวัญเอาชีวิตรอดเป็นโครงการที่ฉันเพิ่งทำเพื่อประสบการณ์การเรียนรู้ ถึงแม้ว่าฉันจะใช้งานทุกคุณสมบัติผ่านระบบพิมพ์เขียว ดังนั้นคำถามของฉันคืออะไรฉันจะใช้รหัสในการปรับปรุง / สร้างเกมใน Unreal Engine เมื่อใดและเมื่อใด
10 c++  unreal-4 

3
การตรวจจับการชนกันแบบ 3 มิติที่เร็วที่สุดระหว่างกล่องขอบเขตสองตัว (OBBs)
ฉันอยู่ในจุดที่เกมของฉันที่ฉันต้องการเพิ่มระบบการปะทะกัน ฉันลอง jBullet และในขณะที่ใช้งานได้มันก็ไม่ใช่สิ่งที่ฉันกำลังมองหา ฉันแค่ต้องการวิธีง่ายๆในการทดสอบว่าต้นไม้สองเส้นที่มุ่งเน้นกล่อง (OBB) ชนกันหรือไม่ ฉันจะไปชนกันโดยใช้ต้นไม้ สร้าง AABB สำหรับบรอดเฟสจากนั้นถ้าผ่านการทดสอบว่า OBB แต่ละต้นในต้นไม้ชนกับต้นไม้อื่นหรือไม่ ฉันพบบางสิ่งบนอินเทอร์เน็ต แต่ฉันไม่สามารถเข้าใจได้อย่างสมบูรณ์ สิ่งที่ฉันขอคือเว็บไซต์หรือแหล่งข้อมูลที่อธิบายการชนแบบ 3D OBB ได้ดี? ฉันได้เรียนรู้ว่า GJK นั้นเร็วกว่า SAT และดูเหมือนจะสามารถบอกฉันได้ว่ากล่องนั้นทะลุกันได้ไกลแค่ไหน ฉันพบบางสิ่งที่ GJK แต่พวกเขาไม่ใช่กล่อง สิ่งที่ซับซ้อนและสับสนแทน ฉันแค่ต้องการสร้าง OBB จาก 3 เวกเตอร์: ศูนย์กลางขนาดและการหมุนของแต่ละแกน จากนั้นสามารถทดสอบการชนกับสิ่งเหล่านั้นได้ ขอบคุณล่วงหน้าสำหรับทุกสิ่งที่คุณโพสต์

2
เกม 2D และ OpenGL ที่ทันสมัย
Preconcepts ตกลงดังนั้นสิ่งที่ฉันรวบรวมมาคือ: อย่าใช้ไปป์ไลน์ที่คงที่ (เลิกใช้แล้วหรือกำลังจะเลิกใช้งาน) vbos เก็บ "โมเดลวัตถุ" (n จุดสุดยอดข้อมูลส่วนใหญ่) vaos อธิบายว่าข้อมูลถูกวางไว้อย่างไรเพื่อให้การโทรรู้ว่าส่วนใดของ vbo แต่ละชนิดสำหรับข้อมูลจุดยอด (หนึ่ง vao สามารถอ้างถึง vbos หลาย ๆ ตัวได้ตรงกันข้ามเป็นเรื่องยาก) การเรียกแบบดึงแต่ละครั้งจะส่งข้อมูลจุดสุดยอดไปยังตัวแปลงข้อมูล ฉันเห็น 3D (ไม่บังคับ) จากข้อมูลเหล่านี้ฉันเห็นได้ว่าการวาดวัตถุที่ซับซ้อน 3D เป็นสิ่งที่ดีมาก ๆ ด้วย OpenGL ที่ทันสมัย โดยทั่วไปคุณจะโหลดโมเดลวัตถุ (อาจมาจาก Blender หรือซอฟต์แวร์ที่คล้ายคลึงกันอื่น ๆ ) ลงใน VBOs ที่มีพิกัดโลคัลและจากนั้นคุณเพียงแค่จัดหาพารามิเตอร์ shader ที่แตกต่างกัน (ออฟเซ็ต) ให้แต่ละอินสแตนซ์ของวัตถุ ปัญหา / คำถาม ในปัญหา 2D และลำดับความสำคัญแตกต่างกันอย่างสิ้นเชิงแม้ว่า …
10 opengl  2d  vbo  vao 

3
ตรวจสอบว่าชุดของกระเบื้องในตารางเป็นรูปร่างที่ล้อมรอบ
รับชุดไพ่ในตารางฉันต้องการตรวจสอบ: หากกระเบื้องทำให้รูปที่ล้อมรอบ หากกระเบื้องทำให้ตัวเลขที่ถูกปิดล้อมเมื่อคุณนับด้านข้างของกระดานเป็นขอบของรูป หากหนึ่งในสองคำสั่งก่อนหน้านี้เป็นจริงกระเบื้องใดเพิ่มเติมที่อยู่ภายในรูปที่ปิดล้อมรูปแบบไทล์เริ่มต้น ผู้เล่นจะเริ่มต้นด้วยการกดลงบนกระเบื้องหนึ่งแล้วลากนิ้วของพวกเขาไปยังกระเบื้องอื่น ๆ เพื่อสร้างห่วงโซ่ของกระเบื้องสีเดียวกัน ฉันจะตรวจสอบตามที่ฉันไปเพื่อดูว่าไทล์ถัดไปนั้นใช้ได้หรือไม่ อดีต หากผู้เล่นจะเริ่มต้นในกระเบื้องสีแดง, ย้ายที่ถูกต้องต่อไปของพวกเขาเพียงอย่างเดียวคือไปยังกระเบื้องสีแดงที่อยู่ติดกัน (เส้นทแยงมุมไม่นับ) เมื่อผู้ใช้ยกนิ้วฉันต้องสามารถตรวจสอบ 3 รายการข้างต้น ดังนั้นความคิดเริ่มต้นของฉันก็คือตั้งแต่ฉันตรวจสอบความถูกต้องของโซ่ทุกครั้งที่ฉันไปเมื่อผู้เล่นยกนิ้วของฉันฉันสามารถตรวจสอบว่ากระเบื้องตัวแรกและตัวสุดท้ายติดกันหรือไม่ (ฉันรู้อยู่แล้วว่าพวกมันมีสีเดียวกัน) หากพวกเขาอยู่ติดกันฉันมีลางสังหรณ์ว่าฉันได้ทำร่างที่ปิดล้อมและฉันจะมาที่นี่เพื่อลองดูว่าฉันพลาดอะไรที่ยิ่งใหญ่หรือไม่ การพิสูจน์ตรรกะ / คณิตศาสตร์บางอย่างที่ว่าลางสังหรณ์ของฉันถูกต้อง (หรือตัวอย่างที่พิสูจน์ว่าไม่ถูกต้อง) แต่นั่นคือเมื่อฉันคิดว่ารายการหมายเลข 2: ฉันยังต้องคำนึงถึงโซ่ที่ใช้ขอบของกระดานเป็นด้านข้างของรูปที่แนบมา ในกรณีนั้นรายการแรกและชิ้นสุดท้ายในห่วงโซ่จะไม่ติดกัน แต่ฉันก็ยังคงมีรูปที่ล้อมรอบ ดังนั้นตอนนี้ฉันกลับไปที่จตุรัสหนึ่งหน่อย ฉันจะทำอย่างไรกับพิกัดกริดของโซ่นี้เพื่อหาว่าพวกมันสร้างรูปที่ล้อมรอบหรือไม่? และเมื่อฉันจะรู้ว่าฉันมีตัวเลขที่ล้อมรอบสิ่งที่เป็นวิธีที่ดีที่สุดที่จะได้รับรายชื่อที่เพิ่มขึ้นของกระเบื้องทั้งหมดที่ตกอยู่ภายในขอบเขตของตนหรือไม่ ด้านบนฉันวาดภาพสิ่งที่ฉันคาดหวังว่าผลลัพธ์ที่เป็นไปได้ 4 ข้อของการทดสอบนี้คือ โซ่ไม่ได้ทำรูปที่ถูกปิดล้อม โซ่ทำรูปที่ปิดล้อม หากคุณนับด้านข้างของกระดานเป็นขอบ (หรือมากกว่าหนึ่งขอบ) ของรูปภาพโซ่จะสร้างรูปที่ล้อมรอบ ห่วงโซ่จะสร้างรูปที่ถูกปิดล้อม แต่มีจุดข้อมูลเพิ่มเติม (ผู้ใช้เลือกอย่างถูกต้องเป็นส่วนหนึ่งของห่วงโซ่) ซึ่งไม่ได้เป็นส่วนหนึ่งของรูปที่สร้างขึ้น กรณีที่ 4 นั้นยากที่สุดเพราะคุณต้องแยกลิงก์โซ่ "พิเศษ" เพื่อค้นหารูปที่แนบมาและชิ้นส่วนที่อยู่ข้างใน (แต่ไม่ต้องอยู่รอบ ๆ พื้นที่ …
10 algorithm  grid  graph 

5
วิธีสร้าง GameObject ใหม่โดยไม่เพิ่มเข้าไปในที่เกิดเหตุ?
ฉันกำลังสร้างสิ่งที่เป็นพื้นฐานของระบบ prefab ของฉันเอง วัตถุของเกมถูกกำหนดโดยไฟล์ข้อมูลที่มนุษย์สามารถอ่านได้ ฉันต้องการสร้าง GameObject ที่ว่างเปล่าโหลดด้วยส่วนประกอบที่กำหนดในไฟล์ข้อมูลและเตรียมให้พร้อมและรอการInstantiate()โทร อย่างไรก็ตามเมื่อใดก็ตามที่ฉันใช้GameObject go = new GameObject()วัตถุเกมใหม่จะถูกเพิ่มเข้าไปในที่เกิดเหตุ การใช้ Unity ที่สร้างในรูปแบบสำเร็จรูปฉันสามารถโหลดรูปแบบสำเร็จรูปเป็น GameObject และมันไม่ได้เพิ่มเข้าไปในฉาก (ดูตัวอย่างด้านล่าง) เหตุผลที่อยู่เบื้องหลังนี้คือฉันต้องการมีหนึ่งรายการที่มี GameObjects บางรายการสร้างขึ้นโดยการโหลด Unity prefab และอื่น ๆ ที่สร้างขึ้นโดยระบบ prefab ที่กำหนดเองของฉัน สิ่งนี้ต้องเกิดขึ้นในเวลาทำงานและไม่สามารถมีส่วนร่วมกับ Unity Editor (เนื่องจากผู้ใช้ปลายทางจะสามารถกำหนดไฟล์ข้อมูลของตัวเองได้) ฉันจะสร้าง GameObject ใหม่โดยไม่มีความเป็นเอกภาพในการสร้างอินสแตนซ์ให้ฉันอัตโนมัติได้อย่างไร ตัวอย่างเช่นฉันสามารถโทรออกเช่นนี้ Resources.LoadAll("PrefabsDirectory", typeof(GameObject)) และฉันจะได้รับรายชื่อ GameObjects ซึ่งจะไม่มีการเพิ่มเข้าไปในที่เกิดเหตุเมื่อมีการโทรออก โดยพื้นฐานแล้วฉันกำลังสร้างLoadAllวิธีการสำหรับ prefab ของตัวเองและในทำนองเดียวกันฉันไม่ต้องการยกตัวอย่าง GameObjects เมื่อมีการโทร

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