คำถามติดแท็ก data-structure

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

11
วิธีการออกแบบระบบเล่นซ้ำ
ดังนั้นฉันจะออกแบบระบบเล่นซ้ำได้อย่างไร คุณอาจรู้จักเกมบางเกมเช่น Warcraft 3 หรือ Starcraft ที่คุณสามารถดูเกมได้อีกครั้งหลังจากเล่นไปแล้ว คุณจบด้วยไฟล์รีเพลย์ที่ค่อนข้างเล็ก ดังนั้นคำถามของฉันคือ: จะบันทึกข้อมูลได้อย่างไร? (รูปแบบกำหนดเองหรือไม่) (ขนาดเล็ก) อะไรจะถูกบันทึกไว้? จะทำให้เป็นเรื่องทั่วไปได้อย่างไรเพื่อให้สามารถใช้ในเกมอื่นเพื่อบันทึกช่วงเวลา (และไม่ใช่ตัวอย่างที่ตรงกันทั้งหมด) ทำให้สามารถส่งต่อและย้อนกลับได้ (WC3 ไม่สามารถย้อนกลับได้เท่าที่ฉันจำได้)

3
ฉันควรใช้รหัสฮาร์โค้ดเมื่อใดกับโหลดข้อมูลภายนอก
ฉันเขียนโค้ดหนึ่งพันหรือมากกว่านั้นเพื่อสร้างเกมตามพื้นที่ 2D ของฉันซึ่งสร้างเครือข่ายของระบบดาวที่สร้างขึ้นแบบสุ่มและเติมพวกมันด้วยการสุ่มเลือกดาวเคราะห์สถานีเรือและอาวุธ อาจมีหลายร้อยสถานี / เรือ / อื่น ๆ ที่เกมจะต้องใช้ - ดังนั้นนี่คือสิ่งที่ฉันสงสัย ฉันควรใช้เวลาในการสร้างตัวโหลดข้อมูลแบบ 'softcoded' ซึ่งจะเก็บข้อมูลทั้งหมดนี้ไว้ในไฟล์ XML (เช่น) และดังนั้นจะค่อนข้างง่ายกว่าที่จะแก้ไขในภายหลังหรือฉันควรจะไปกับสิ่งที่ฉันทำ ตอนนี้กำลังทำการฮาร์ดโค้ดวัตถุทั้งหมดไว้ในเอ็นจิ้นหลักของเกม ฉันเป็นคนเดียวในโครงการและอย่างที่ฉันพูดมันเป็นเพียงงานอดิเรกที่ฉันทำในเวลาว่างห่างจากมหาวิทยาลัย แต่ชุมชนจะแนะนำให้ลงทุนในการสร้างระบบพิเศษทั้งหมดในการจัดเก็บข้อมูลในไฟล์เพิ่มเติมหรือไม่ อะไรคือประโยชน์ของข้อมูล softcoding ในลักษณะเช่นนี้เมื่อเทียบกับ hardcoding ทุกอย่างผ่านทาง constructor? มีประโยชน์ระยะยาวในการมีไฟล์ภายนอกที่สามารถแก้ไขได้หรือไม่หากฉันไม่ต้องการให้เกมมี 'mods' จำเป็นต้องมีไฟล์ภายนอกหรือไม่ หากเป็นเพียงงานอดิเรกที่ฉันอาจยอมแพ้ในอีกไม่กี่สัปดาห์หรือหลายเดือนฉันควรเสียเวลากับเรื่องนี้ไหม?

5
ใช้อินสแตนซ์หรือคลาสสำหรับทรัพยากรเกม (ไม้เหล็กทอง)
ดังนั้นฉันจึงสร้างเกมที่คุณสามารถส่งเรือไปยังสถานที่ต่างๆเพื่อขายหรือซื้อทรัพยากรเช่นไม้เหล็กทองคำ ฯลฯ ตอนนี้ฉันกำลังสงสัยว่าจะสร้างทรัพยากรในเกมได้อย่างไร ฉันมากับ 2 ตัวเลือก สร้างคลาสสำหรับแต่ละทรัพยากร: public class ResourceBase { private int value; // other base properties } public class Gold : ResourceBase { public Gold { this.value = 40 // or whatever } } สร้างอินสแตนซ์ของคลาสทรัพยากร public class Resource { string name; int value; public Resource(string name, int value) …

4
มีแผนที่ย่อย hex แบบ 3 มิติหรือไม่
น่าจะเป็นข้อได้เปรียบที่ใหญ่ที่สุดของการเรียงแผนที่เป็นฐานหกเหลี่ยมและฐานสี่เหลี่ยมคือจุดศูนย์กลางของแต่ละฐานสิบหกมีระยะห่างเท่ากันกับฐานสิบหกที่อยู่ใกล้เคียงทั้งหมด มีรูปร่างที่คล้ายกันซึ่งเรียงต่อกันด้วยวิธีนี้ในแบบ 3 มิติและเอ็นจิ้นที่รองรับรูปแบบดังกล่าวหรือไม่?

4
ฉันควรใช้โครงสร้างข้อมูลใดสำหรับต้นไม้พรสวรรค์ของ Diablo / WoW
ฉันกำลังพิจารณาที่จะนำระบบพรสวรรค์ไปใช้กับ RPG ออนไลน์ซึ่งคล้ายกับที่เห็นใน World of Warcraft ซึ่งการได้รับทักษะจะปลดล็อค "ระดับ" ถัดไปที่อยู่ใต้ต้นไม้ ไม่มีใครรู้วิธีที่ดีที่สุดในการใช้โครงสร้างนี้ในฐานข้อมูล / รหัส?

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

2
จะแก้ไขคู่ค่าคีย์ (เช่นพจนานุกรม) ในตัวตรวจสอบของ Unity ได้อย่างไร
ฉันมีระบบสะกดคำที่ฉันสร้างหลักการมีดังนี้: แต่ละคาถาเป็นรูปแบบสำเร็จรูปอัตโนมัติ มันมีสคริปต์ที่มีคุณสมบัติบางอย่าง (ความเสียหายพื้นฐานระยะเวลา ... ) ที่สามารถแก้ไขได้ในการตรวจสอบ ฉันมี Spell enum ที่แสดงรายการคาถาที่เป็นไปได้ทั้งหมดในรหัสซึ่งใช้ในตรรกะของเกม เมื่อฉันต้องการเสกคาถาฉันต้องได้รับพรีสแลชของคาถานี้เพื่อยกตัวอย่างและอ่านข้อมูล นักแสดงแต่ละคน (ไม่ว่าจะเป็นผู้เล่นหรือศัตรู) จำเป็นต้องมีรายการอนิเมชั่นที่เป็นไปได้สำหรับคาถา ปัญหาเกี่ยวกับวิธีที่ฉันพยายามใช้คือ: สำหรับการแสดงรายการแอนิเมชั่นของนักแสดงแต่ละคนฉันสามารถใช้ a Dictionary<Spell, Animation>ได้ แต่พจนานุกรมไม่ได้รับการสนับสนุนจากผู้ตรวจสอบซึ่งทำให้ยากที่จะแก้ไขนักแสดงหลายประเภทได้อย่างง่ายดาย ฉันต้องการวิธีในการเข้าถึง prefab คาถาจาก enum ที่เกี่ยวข้องได้อย่างง่ายดาย ที่นี่ฉันสามารถใช้พจนานุกรมได้ แต่ฉันสามารถอ้างอิงเฉพาะ prefab ในตัวตรวจสอบไม่ใช่ในรหัสซึ่งหมายความว่าฉันจะไม่สามารถเติมพจนานุกรมนี้ได้ ฉันกำลังมองหาวิธีที่จะเชื่อมโยงคาถาของฉันได้อย่างง่ายดาย enums กับ prefabs และภาพเคลื่อนไหวที่สอดคล้องกัน

2
ข้อดีและข้อเสียของรูปแบบไฟล์ข้อมูลของ voxel คืออะไร [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน7 เดือนที่ผ่านมา .VXL .VOX .KVX .KV6 .V3A .V3B ฉันพยายามที่จะตัดสินใจว่ามันคุ้มค่าที่จะไปกับใด ๆ ข้างต้นหรืออื่น ๆ หรือถ้าฉันควรจะม้วนตัวเอง ปัจจัยการตัดสินใจตามลำดับความสำคัญคือ: การสนับสนุนภาพเคลื่อนไหว (ฉันรู้ว่านี่เป็นเรื่องยากเมื่อพูดถึง voxels) โดยใช้ voxel deltas หรือคำอธิบายการแปลงตัวเลข ความเรียบง่าย (หรืออย่างน้อยก็เป็นรูปแบบย่อ) การอัด จากสิ่งที่ฉันสามารถบอกได้ว่ารูปแบบ Tiberian Sun VXL เป็นรูปแบบเดียวที่ออกแบบมาสำหรับการเคลื่อนไหว แต่ Ken Silverman จากชื่อเสียง Voxelstein3D อ้างว่า VXL ไม่สนับสนุนการเคลื่อนไหว (ในไฟล์เดียวเป็นคำพูดของเขา) ดังนั้นฉันจึงสงสัยว่าอาจมีรูปแบบ. VXL ไม่แตกต่างกันสองแบบเนื่องจากดูเหมือนว่าเป็นตัวเลือกที่ชัดเจนของนามสกุลไฟล์สำหรับข้อมูล …

4
โครงสร้างข้อมูลใดที่ควรใช้เพื่อเป็นตัวแทนของภูมิประเทศ voxel
ตามหน้า Wikipediaเกี่ยวกับ voxels "[... ] ตำแหน่งของ voxel นั้นอนุมานตามตำแหน่งของมันเมื่อเทียบกับ voxels อื่น ๆ (เช่นตำแหน่งของมันในโครงสร้างข้อมูลที่ทำขึ้นเป็นรูปปริมาตรเดียว)" เราควรนำโครงสร้างข้อมูลไปใช้อย่างไร? ฉันกำลังคิดเกี่ยวกับลำดับที่หนึ่ง แต่ฉันสงสัยว่ามีอย่างอื่นที่ฉันไม่เคยได้ยิน

5
ควรใช้ vector / list เมื่อใด
ฉันสามารถเข้าใจได้ว่าจะใช้รายการเมื่อใด แต่ฉันไม่เข้าใจว่าเมื่อใดควรใช้เวกเตอร์ดีกว่าการใช้รายการในวิดีโอเกม: เมื่อใดจึงจะมีการเข้าถึงแบบสุ่มอย่างรวดเร็ว (และฉันเข้าใจว่าทำไมการแทรก / ลบในรายการเร็วขึ้นเพราะเพิ่งลบ / เพิ่มตัวชี้ แต่ยังต้องค้นหารายการที่เกี่ยวข้อง ... )

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

4
จะค้นหาเอนทิตีทั้งหมดภายในรัศมีได้อย่างมีประสิทธิภาพได้อย่างไร
ฉันมีเอนทิตีจำนวนมาก (หน่วย) ในแต่ละขั้นตอนแต่ละหน่วยจำเป็นต้องทราบตำแหน่งของหน่วยทั้งหมดที่อยู่ใกล้กับมัน (ระยะทางน้อยกว่าเมื่อกำหนดค่าคงที่R ) ทุกหน่วยเคลื่อนที่อย่างต่อเนื่อง นี่เป็นแบบ 3 มิติ โดยเฉลี่ยจะมี 1% ของจำนวนหน่วยทั้งหมดที่อยู่ใกล้กับหน่วยอื่น ๆ ที่มีข้อ จำกัด ที่กำหนด ฉันจะทำสิ่งนี้ได้อย่างมีประสิทธิภาพโดยปราศจากการหักห้ามใจ?

3
วัตถุของอาร์เรย์หรืออาร์เรย์ของวัตถุ?
ฉันกำลังสร้างเกมซิมการจัดการบางอย่างตามแนวของ Roller Coaster Tycoon ฉันต้องการทราบว่าวิธีที่ดีที่สุดในการจัดโครงสร้างวัตถุในโลกของฉันคืออะไรเพื่อเพิ่มประสิทธิภาพ สมมติว่าฉันมี 5,000 คนในเกมของฉันฉันสามารถ: ทำวัตถุและเก็บไว้ในอาร์เรย์อย่างนั้น class person() { this.x = 0; this.y = 0; this.thirst = 15; this.hunger = 15; // etc.. add methods: public findPath(int destX, int destY) { // and so on } people = new person[5000]; for (int = 0; i < 5000; …

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

1
จะแสดงใบหน้าหน้าผาในภูมิประเทศได้อย่างไร
ฉันกำลังพยายามหาวิธีที่ดีที่สุดในการแสดงภูมิประเทศโดยทางโปรแกรมในเกมของฉัน ฉันกำลังพิจารณาใช้heightmap (หรือตารางของจุดยอดที่เว้นระยะเท่ากัน) เพื่อแสดงพื้นผิวของภูมิประเทศและsplatmapเพื่อให้พื้นผิวเรียบ สิ่งนี้จะใช้ได้กับภูมิประเทศที่ราบเรียบโดยสิ้นเชิง แต่ปัญหาคือวิธีการแสดงหน้าผาและหน้าผาที่คมชัด หน้าผาเองนั้นต้องถูกทำให้แตกต่างจากภูมิประเทศที่เหลือ ตัวอย่างเช่นพวกเขาจะต้องมีพื้นผิวที่แตกต่างกัน (ไม่ยืด) ที่ด้านหน้าของหน้าผา แต่ถ้าฉันใช้ splatmap สำหรับสิ่งนี้มันคงเป็นไปไม่ได้ที่จะมีใบหน้าหน้าผาชันพอที่พื้นผิวของหน้าผา แยกจากพื้นดินโดยสิ้นเชิง รูปภาพบอกหนึ่งพันคำดังนั้น ... อะไรคือวิธีทั่วไปในการเก็บและ / หรือแสดงหน้าผาและความแตกต่างที่คมชัดในความสูงของภูมิประเทศ

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