การพัฒนาเกม

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

5
การรับรู้สถานการณ์ในการค้นหาเส้นทาง
สมมติว่าคุณต้องหาเส้นทางที่สั้นที่สุดผ่านดันเจี้ยนซึ่งมีบางข้อความที่เปิดให้คุณหลังจากที่รวบรวมสิ่งของบางอย่างเช่นประตูและกุญแจที่ถูกล็อคเป็นต้น ปฏิกิริยาทางเดินอาหารปกติต่อคำว่า "เส้นทางที่สั้นที่สุด" จะเป็น A * อย่างชัดเจน แต่ A * จะล้มเหลวในสภาพแวดล้อมเช่นนี้เนื่องจากฉันเห็นปัญหามากมายที่กำหนดฮิวริสติกที่เชื่อถือได้และยิ่งมีความเป็นไปได้มากที่โหนดจะต้องเข้าชมหลายครั้งซึ่งเป็นไปไม่ได้ใน A * แบบเดิมและก็จะ ทำให้ฮิวริสติกหนักขึ้น สิ่งที่ฉันคิดคือเพียงแค่มองหาเส้นทางจากจุดเริ่มต้นของดันเจี้ยนไปยังจุดสิ้นสุดโดยไม่สนใจประตูที่ถูกบล็อก หลังจากพบเส้นทางนี้สำหรับประตูแต่ละบานที่ขวางทางของเราเส้นทางเพิ่มเติมที่ค้นหาคีย์ที่เหมาะสมและกลับไปที่ประตูจะถูกค้นหาและสำรวจก่อนที่จะถึงประตู ระบบเดียวกันนี้จะใช้ในการจัดการสถานการณ์ที่เส้นทางไปยังกุญแจที่จำเป็นในการเปิดประตูถูกบล็อกอีกครั้งโดยประตูอื่นซึ่งจะต้องเปิดก่อน ปัญหาใหญ่ที่ฉันเห็นด้วยวิธีแก้ปัญหาของฉันคือหลังจากพบเส้นทางทั้งหมดรวมถึงเส้นทางสำหรับการรับไอเท็มระยะทางทั้งหมดที่ตัวแทนเดินทางอาจไม่ได้น้อยที่สุดเนื่องจากอาจมีประตูปิดกั้นอื่น ๆ ที่อยู่ไกลกว่าเป้าหมาย แต่มีรหัสที่เหมาะสมของพวกเขาใช้ได้ง่ายขึ้นมาก A * จะละเลยประตูเหล่านี้ในการผ่านครั้งแรกที่มีการเพิกเฉยต่อประตูที่ถูกบล็อก ฉันแน่ใจว่าฉันไม่ใช่คนแรกที่พยายามแก้ไขปัญหานี้และขอขอบคุณที่ป้อนข้อมูลเกี่ยวกับปัญหา
11 ai  path-finding 

5
เราจะกำหนดความยาวของเส้นทางได้อย่างไร?
ฉันมีเกมที่ต้องการให้ผู้เล่นแต่ละคนเคลื่อนที่ตามเส้นทางที่ระบุ ฉันวาดเส้นทางโดยใช้เส้นโค้งเบซิเยร์ ฉันจะกำหนดความยาวรวมของจริง (ไม่ใช่แบบเส้นตรง) ของเส้นทางและระยะทางที่ผู้เล่นแต่ละคนทำไว้ได้อย่างไร (ระยะห่างระหว่างจุดเริ่มต้นและจุดที่ระบุบนเส้นทาง) UPDATE: พา ธ ถูกแสดงในระนาบคาร์ทีเซียน (2D)

2
เอ็กซ์ปอร์ตเครื่องปั่นรุ่น 2.59 พร้อมแอนิเมชันเป็น XNA 4
วิธีที่ดีที่สุดในการส่งออกจาก Blender 2.59 สำหรับ XNA 4 คืออะไร? ฉันได้ยินมาว่าคุณสามารถใช้ DirectX เพื่อส่งออกเป็น. x แทนที่จะเป็น. fbx ซึ่งทำงานได้ดีกว่ากับภาพเคลื่อนไหว โชคไม่ดีที่บทเรียนทั้งหมดออกมาค่อนข้างล้าสมัยและไปเกี่ยวกับนิสัยใจคอของคนรุ่นเก่า ..
11 xna-4.0  blender 

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

4
คุณสร้าง Minecraft mods ได้อย่างไร? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา ฉันใหม่เพื่อสร้าง minecraft mods และฉันสงสัยว่าฉันต้องทำอะไรเพื่อเริ่มต้นใช้งาน

5
เหตุใดจึงต้องวางเอนทิตี config นอกสคริปต์?
ฉันเห็นเกมจำนวนมากที่กำหนดองค์ประกอบเอนทิตีในไฟล์สคริปต์ แต่เมื่อพวกเขากำหนดค่าแต่ละเอนทิตีและระบุว่ามีองค์ประกอบใดพวกเขาใช้รูปแบบไฟล์อื่น (เช่น XML) ทำไมพวกเขาทำอย่างนั้น? ฉันขอให้ส่วนใหญ่ดูว่าเหตุผลของคนอื่นคืออะไรสำหรับเรื่องนี้ ฉันยังกำหนดค่าเอนทิตีของฉันนอกสคริปต์ (แม้ว่าฉันเลือก JSON ไม่ใช่ XML) เหตุผลของฉันในการทำเช่นนี้คือทำให้ฉันง่ายต่อการใช้เกมบันทึกและเพราะฉันคิดว่าการกำหนดค่าประเภทนี้จัดระเบียบได้ดีกว่าในสิ่งที่ชอบ XML หรือ JSON คำตอบของ @ Christopher Larsenยาวเกินกว่าจะโพสต์เป็นความคิดเห็น ฉันกลัวว่าคุณอาจเบี่ยงเบนไปเล็กน้อยจากเรื่องของคำถาม ปัญหาที่คุณกำลังอธิบายเกี่ยวข้องกับหน่วยงานที่ใช้ลำดับชั้นมากกว่า ในคำถามของฉันฉันพูดถึงฉันกำลังพูดถึงเอนทิตีที่อิงองค์ประกอบ นี่คือตัวอย่างของสิ่งที่ฉันต้องการถาม ด้านล่างมีสองทางเลือกในการกำหนดค่าเอนทิตี: ผ่านสคริปต์และผ่านไฟล์ JSON ภายนอก คำถามของฉันคือทำไมผู้คนจำนวนมากต้องการกำหนดเอนทิตีนอกสคริปต์? คลาสเอนทิตีฐาน: class Entity: def __init__(self, name): pass def addComponent(self, comp): pass วิธีการสคริปต์: orc = Entity('Orc') orc.addComponent(PositionComponent(3.4, 7.9)) วิธีการ JSON: { "name" : …

2
อะไรคือวิธีที่ดีที่สุดในการทำให้เป็นอันดับและยกเลิกการบอกกล่าวข้อความเครือข่ายสำหรับเกมที่มีผู้เล่นหลายคนใน C / C ++
เรากำลังใช้ JSON ในขณะนี้และต้องการย้ายไปยังรูปแบบไบนารีสำหรับข้อความบางประเภทระหว่างไคลเอนต์และเซิร์ฟเวอร์ ฉันควรจะอ่าน structs ลงในซ็อกเก็ตหรือไม่? ใช้บัฟเฟอร์โปรติคอล / เจริญเติบโตอย่างรวดเร็ว? ฉันควรแสดงอาร์เรย์ของข้อมูลอย่างไร อินเตอร์เฟสควรมีลักษณะอย่างไรสำหรับการบรรจุ / เปิดออกข้อมูล

3
Age of Empires II ชื่ออะไร?
ใครจะอธิบาย "มุมมอง" ของ Age of Empires 1 เป็นเกมสไปรต์ 2D: ด้านล่างเป็นภาพหน้าจอของ Age of Empires II คุณจะอธิบาย "มุมมอง" อย่างไร? มันเป็นเกมสไปรต์ 2D หรือไม่? "เปอร์สเปคทีฟ" อาจไม่ใช่คำที่ถูกต้อง ถ้าไม่ใช่ฉันควรใช้อะไร

1
การค้นหาไฟล์เนื้อหาในเกม Linux
อะไรคือวิธีปกติในการจัดเก็บแบบจำลอง 3 มิติพื้นผิวเสียงและสคริปต์ (เช่นไฟล์ Lua) ในระหว่างการพัฒนาและในรีลีส? ฉันกำลังพัฒนาเกมกับเพื่อนของฉันในภาษา C ++ เป็นหลัก; ในขั้นตอนการสร้างต้นแบบเรามีเพียงพื้นผิวเดียวที่ได้รับการบันทึกเป็นส่วนหัว C กับ GIMP แต่แน่นอนวิธีการนี้ไม่ได้ปรับขนาดได้ดีและเพิ่มเวลาการรวบรวมอย่างมาก ภายใต้ Windows การปฏิบัติตามปกติคือการทิ้งไว้ใน%PROGRAMFILES%ไดเรกทอรีย่อยที่มีเกมปฏิบัติการอยู่บางทีอาจจัดเรียงไว้ในโครงสร้างต้นไม้ที่เหมาะสม อย่างไรก็ตามบน Linux ภาพดูเหมือนซับซ้อนมากขึ้น ปฏิบัติการมักจะอาศัยอยู่ใน/usr/binขณะที่การใช้งานจัดเก็บไฟล์อื่น ๆ ของพวกเขาใน/usr/shareและฉันคิดว่ามันจะเป็นปฏิบัติไม่ดีอย่างยิ่งที่จะนำ executables /usr/binไม่ใช่ใน อย่างไรก็ตามโครงสร้างไดเรกทอรีระหว่างการพัฒนานั้นแตกต่างกันโดยสิ้นเชิง ฉันสามารถหาวิธีแก้ปัญหาที่เป็นไปได้สองแบบ: /optให้หาไฟล์ปฏิบัติการเทียบกับตัวเองสินทรัพย์และติดตั้งเกมที่จะ จากนั้นวาง symlink /usr/binไว้ที่ ในระหว่างการพัฒนาเส้นทางสัมพัทธ์ของสินทรัพย์ไปยังไบนารีนั้นเหมือนกับในระหว่างการปรับใช้ เข้าถึงไฟล์ด้วยพา ธ สัมบูรณ์ซึ่งกำหนดเป็นสัญลักษณ์ตัวประมวลผลล่วงหน้า ปล่อยให้กระบวนการสร้าง (ในกรณีของเราดิบMakefile) ดูแลการกำหนดตามความเหมาะสม ทั้งสองวิธีดูเหมือนจะไม่ค่อยเหมาะสมกับฉันในด้านใดด้านหนึ่ง มีวิธีปฏิบัติทั่วไปในอุตสาหกรรมการพัฒนาเกมเกี่ยวกับเรื่องนี้หรือไม่? คำถามที่เกี่ยวข้องเท่านั้นที่ฉันสามารถค้นหาได้คือการระบุตำแหน่งของสินทรัพย์เกมดิสก์ที่ติดตั้ง / บนและเส้นทางไดเรกทอรีสำหรับทรัพยากรและสินทรัพย์แต่คำถามเหล่านั้นไม่ได้แก้ไขปัญหาในการเรียกใช้ "จากแผนผังต้นไม้"

4
ทำอย่างไรจึงจะทำให้วัตถุสูญเสียความเร็วได้น้อยลงเมื่อความเร็วเพิ่มขึ้น
ฉันกำลังพัฒนาเกมใน Flash และฉันต้องการความช่วยเหลือเล็กน้อย ถือได้ว่าเป็นปัญหาทางคณิตศาสตร์ วัตถุของฉันบินด้วยความเร็วXและวัตถุของฉันสามารถชนกับก้อนหินได้ เมื่อมันชนกับหินฉันต้องการวัตถุของฉันที่จะทำลายหินและดำเนินการต่อ แต่มีความเร็วน้อยกว่า ง่ายต่อการเขียนโค้ดยากและเขียนสิ่งที่ชอบ: myVelocity -= 10;แต่ปัญหาหลักของฉันคือฉันต้องการให้ความเร็วลดลงน้อยกว่าความเร็วเริ่มต้นที่สูงขึ้น ตัวอย่างเช่น: ถ้าความเร็วเป็น 300 ฉันอยากให้มันลด 10 และถ้าเป็น 200 ฉันอยากให้มันลด 20 สามารถใช้สูตรบางอย่างได้ไหม

3
มีทางเลือกอื่นสำหรับสติ๊กเกอร์ที่จะให้ฉันใส่รูกระสุนลงบนวัตถุที่ซับซ้อนหรือไม่?
ฉันกำลังพยายามหาวิธีที่จะทำ "รูกระสุน" แต่ใช้พื้นผิวที่ระดับ shader จริงหรือไม่ ถ้าฉันจัดการกับนางแบบที่ไม่มีใบหน้า "แบน" ฉันอยากจะห่อ "รูปลอก" ข้ามโมเดล ทุกคนชี้ให้ฉันดูการสอนที่จะทำสิ่งที่คล้ายกับเรื่องนี้
11 shaders 

9
เอ็นจิ้นเกม jquery / javascript ที่ดีคืออะไร [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา ดังนั้นฉันจึงตัดสินใจลองพัฒนาเกม javascript / html5 เล็กน้อย (ทำงานร่วมกับ XNA / Unity จนถึงปัจจุบัน) สงสัยว่าถ้าใครมีข้อเสนอแนะใด ๆ ฉันกำลังดูผลกระทบ, เกมเคียวรีและขากรรไกร (ยังประหม่าเล็กน้อยที่ฉันจะไม่สามารถสร้างเกมที่ทรงพลังเหมือนใน XNA ... ทำแค่ 2d เท่านั้น)
11 javascript  html5 

1
ควอเทอร์เนียนและการหมุนรอบแกนโลก
ข้อจำกัดความรับผิดชอบ: ฉันเป็นโปรแกรมเมอร์เกมมืออาชีพและใช้งาน quaternions เกือบทุกวัน แต่พวกเขาก็ใกล้เคียงกับเวทย์มนตร์ดำสำหรับฉัน ฉันค่อนข้างอยู่บ้านกับคณิตศาสตร์ แต่ตัวเลขในจินตนาการมักทำให้ฉันสับสน ฉันมักจะปฏิบัติต่อ quats ว่ามีประโยชน์และจบลงด้วยการทวีคูณมากกว่าหนึ่งครั้ง ฉันพยายามให้เหตุผลกับพวกเขาเช่นเดียวกับการฝึกอบรมด้วยความสำเร็จที่ จำกัด ทั้งนี้ .... สิ่งที่ทำให้ฉันงุนงงคือต่อไปนี้ เมื่อฉันต้องการหมุนวัตถุรอบ ๆ มันเป็นแกนท้องถิ่นฉันคูณการหมุนด้วย quaternion ที่แสดงถึงการหมุนที่ฉันต้องการใช้ ดังนั้นจึงเป็นการหมุนในพื้นที่ท้องถิ่น ตอนนี้ถ้าฉันต้องการหมุนรอบแกนในอวกาศโลกเหตุผลของฉันก็คือ: หมุนพื้นที่โลกเป็น quaternion ทวีคูณการผกผันของการหมุนวัตถุของฉันด้วย quaternion นี้ สิ่งนี้จะทำให้โลกหมุนของฉันในอวกาศ ทวีคูณการหมุนของฉันด้วยควอเทอร์ชันใหม่นี้ เช่น: newRot = oldRot * (ผกผัน oldRot * worldRot) อย่างไรก็ตามสิ่งที่ฉันต้องทำคือ newRot = oldRot * (ผกผัน oldRot * worldRot) * oldRot ทำไมฉันหลังจากคูณด้วย …
11 quaternion 

1
ลดขนาดโครงตาข่าย 4D จินตนาการลงบนหน้าจอ
เป็นการออกกำลังกายทางจิตฉันพยายามจินตนาการการฉายตาข่าย 4 มิติบนหน้าจอ (2D) โดยพลการ ฉันเดาว่าสามเหลี่ยม 4D เดียวจะยังคงมีเพียง 3 คะแนน แต่ 3 คะแนนนั้นจะถูกกำหนดโดยคอลัมน์ที่มี 4 มิติ มันจะเหมาะสมกว่าหรือไม่ที่จะกำหนดเมทริกซ์การฉายภาพเพื่อแมปพื้นที่ 4D ไปยังพื้นที่ 3D ก่อนจากนั้นให้ OpenGL ทำการฉายภาพของตัวเองจากข้อมูลนั้นไปยังพื้นที่ 2D หรือจะเป็นการดีที่สุดถ้าคุณวางแผนที่จะฉายจาก 4 เป็น 2 โดยตรง ขอบคุณมาก.

5
คะแนนเสียงแบบไดนามิก / เพลง [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ฉันสนใจที่จะพัฒนาเกมที่มีดนตรีประกอบเปลี่ยนแปลงไปตามอารมณ์และสถานการณ์ของเกม แน่นอนว่าเกมที่มีอยู่จำนวนมากทำเช่นนี้ (ตัวอย่างเช่น halo) แต่ฉันสนใจทรัพยากร / เอกสาร / บทความที่พูดถึงเทคนิคในการพัฒนาระบบเช่นนี้ ฉันมีความคิดบางอย่างและฉันเข้าใจว่าสิ่งนี้จะเป็นการท้าทายที่จะนำมาใช้ในระดับรหัสอย่างเท่าเทียมกันเนื่องจากจะเกิดขึ้นหรือรับเพลงที่เหมาะกับรุ่นนี้ การเชื่อมโยงใด ๆ หรือคำตอบที่มีความคิดในพวกเขาเขาจะชื่นชม แก้ไข: นี่คือประเภทของข้อมูลที่ฉันกำลังมองหา :) http://halo.bungie.org/misc/gdc.2002.music/
11 audio 

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