คำถามติดแท็ก architecture

รหัสมีโครงสร้างอย่างไร สำหรับคำถามเกี่ยวกับการออกแบบภายในของเอ็นจิ้นเกม

4
การจัดสรรหน่วยความจำแบบไดนามิกและการจัดการหน่วยความจำ
ในเกมเฉลี่ยมีหลายร้อยหรือหลายพันวัตถุในฉาก มันถูกต้องสมบูรณ์ในการจัดสรรหน่วยความจำสำหรับวัตถุทั้งหมดรวมถึงปืนนัด (กระสุน) แบบไดนามิกผ่านการเริ่มต้นใหม่ () ? ฉันควรสร้างพูลหน่วยความจำสำหรับการจัดสรรแบบไดนามิกหรือไม่จำเป็นต้องกังวลกับสิ่งนี้? เกิดอะไรขึ้นถ้าแพลตฟอร์มเป้าหมายเป็นอุปกรณ์เคลื่อนที่ จำเป็นต้องมีผู้จัดการหน่วยความจำในเกมมือถือไหม? ขอขอบคุณ. ภาษาที่ใช้: C ++; ขณะนี้ได้รับการพัฒนาภายใต้ Windows แต่มีแผนที่จะให้บริการในภายหลัง

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

4
สิ่งที่เกี่ยวข้องกับเกม UDP ง่ายๆ?
ฉันเคยลองเขียนเกมง่ายๆกับ UDP ในหนึ่งสัปดาห์เพื่อทดสอบการโยนทิ้ง มันไปอย่างน่ากลัว ฉันโยนมันออกไปก่อน ปัญหาหลักที่ฉันได้คือการแก้ไขสถานะเกมของผู้เล่น / ศัตรู / วัตถุทั้งหมดให้เป็นสถานะเก่าและส่งต่อเกมอย่างรวดเร็วไปยังช่วงเวลาที่ผู้เล่นกำลังเล่น (เช่นครึ่งวินาทีก่อนที่จะกระโดดกระโดดเร็วหรือช้าเล็กน้อย ทำให้ผู้เล่นพลาดการกระโดด) บางทีวิธีนี้ไม่ใช่วิธีที่ง่ายที่สุด? ฉันสงสัยว่ามันเป็น แต่ฉันออกแบบมันผิดตั้งแต่ต้นและตระหนักในตอนท้ายของวันที่ 2 (ดังนั้นฉันไม่ได้เรียนรู้มากเกินไปหรือเสียเวลามาก) สำหรับตัวเองและคนอื่น ๆ สิ่งที่เกี่ยวข้องกับเกม UDP อย่างง่ายและฉันจะเขียนได้อย่างไร? หรือฉันจะแก้ปัญหาการทำนายการคืนค่าสถานะอย่างถูกต้องได้อย่างไร ฉันจะทำเครื่องหมายนี้เป็น CW bc ฉันรู้ว่าจะมีคำตอบที่เป็นประโยชน์มากมาย

2
มรดกเทียบกับองค์ประกอบ
ฉันทำเงินของฉันเป็นภาษา C # โดยทั่วไปแล้วในภาษานั้นฉันชอบที่จะแยกทุกสิ่งออกสู่สวรรค์ชั้นสูงโดยใช้อินเทอร์เฟซ สิ่งนี้ให้บริการฉันเป็นอย่างดีในรหัสองค์กร แต่ในการเขียนเกมใน C # ฉันพบว่าตัวเองพุ่งเข้าหาการสืบทอดเนื่องจากความสามารถในการกำหนดพฤติกรรมเริ่มต้นบางอย่างสำหรับคลาสพื้นฐาน ฉันรู้สึกสกปรกที่ทำสิ่งนี้แม้ว่าฉันจะไม่เชื่อฟังพระเจ้าสถาปัตยกรรมผู้ซึ่งเคยกล่าวไว้ว่า ฉันรู้ว่ามันไม่ใช่ขาวดำ แต่ฉันก็รู้สึกเหมือนว่าฉันสามารถใช้อินเทอร์เฟซที่มีงานมากขึ้นและบรรลุสิ่งเดียวกัน คนอื่นทำอะไร การสืบทอดเป็นวิธีการที่เหมาะสมสำหรับเกมหรือฉันควรปรับโครงสร้างในส่วนต่อประสานบางส่วนหรือไม่
16 c#  architecture 

4
ฉันสามารถใช้คุณสมบัติการคืบเพื่อประโยชน์ของฉันได้หรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ฉันสามารถใช้คุณสมบัติการคืบเพื่อประโยชน์ของฉันได้หรือไม่? ทุกครั้งที่ฉันสร้างเกมขึ้นมาคุณสมบัติจะถูกเพิ่มเข้ามาโดยไม่ตั้งใจ สิ่งนี้เกิดขึ้นไม่ว่าจะโดยบังเอิญหรือเป็นการง่ายที่จะเพิ่มตามเนื้อหาที่มีอยู่ หากฉันรู้ประเภทของเกมฉันจะเริ่มสร้างกลไกพื้นฐานและเพิ่มคุณสมบัติตามที่เห็นได้ชัดหรือไม่? ตัวอย่างเช่นถ้าฉันต้องการสร้าง platformer 2d ตลอดระยะเวลา 6 เดือนฉันจะเริ่มวิ่งกระโดดยิงและอื่น ๆ และเพิ่มกลไกหลักเมื่อฉันค้นหามันโดยไม่ตั้งใจได้หรือไม่? หรือมีความเสี่ยงต่อการลงทุนครั้งโดยไม่มีการวางแผนล่วงหน้าหรือไม่? ตรรกะของฉันที่อยู่เบื้องหลังสิ่งนี้คือการออกแบบจะมีผลมากกว่าสำหรับเจ้าชู้ ตัวเลือกการออกแบบจะสร้างขึ้นได้ง่ายขึ้นในสิ่งที่ง่ายต่อการทำ (เวลาที่เหมาะสม) โดยสรุปมีอะไรผิดปกติในการสร้างเกมก่อนที่ฉันจะออกแบบหรือไม่

5
พจนานุกรมชื่อสามัญสำหรับวัตถุรหัส [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันกำลังมองหาพจนานุกรมทั่วไปของคำศัพท์ (คล้ายกับรูปแบบการออกแบบมีภาษาทั่วไปสำหรับสิ่งที่โต้ตอบ) ที่เฉพาะเจาะจงกับเกม ตัวอย่างเช่นถ้าฉันสร้างเกมปิงปองที่มีความซับซ้อนในระดับสูงฉันต้องการตั้งชื่อให้เหมาะสม ฉันได้เห็นวัตถุที่เป็นภาพซึ่งผู้ใช้สามารถโต้ตอบด้วยเรียกว่าวิดเจ็ตบางรายการที่ไม่โต้ตอบเรียกว่าdoodad (ย้อนกลับไปเมื่อฉันเล่นกับตัวแก้ไขแผนที่ starcraft ต่อไป) มีชื่อที่ถูกต้องสำหรับนาฬิกาอัตราเฟรมหรือไม่? มีชื่อที่เหมาะสมสำหรับนาฬิกาของเกม (นาฬิกาที่เกี่ยวกับการเคลื่อนที่ของวัตถุในโลก แต่ไม่ใช่การวาดภาพ) ฉันแค่ต้องการพจนานุกรมเพื่อให้ฉันสามารถพูดภาษาเดียวกันและไม่ได้ทำสิ่งต่าง ๆ ตามที่ฉันไป ฉันเป็นห่วงฉันจะสร้างสิ่งต่าง ๆ ที่ชื่อ doodads, whosits, whatsists และ flim-flams ... และฉันไม่ต้องการทำเช่นนั้น

3
การออกแบบระบบเอฟเฟกต์เสียง
ฉันกำลังสร้างเกม RPG / RTS ใน Unity มีอักขระจำนวนมากและอาจมีสภาพแวดล้อมที่แตกต่างกันมาก ฉันค่อนข้างมั่นใจในส่วนการเข้ารหัส (ดังนั้นคำถามนี้ไม่ได้ผูกติดอยู่กับเอ็นจิ้นเกม) ฉันยังสร้างดนตรีด้วยตัวเอง (งานเดี่ยว, กลองสดแบบอิงแผ่นในวงดนตรี, ผสมเพื่อเพื่อน ฯลฯ ) ดังนั้นฉันคิดว่าฉันมีความเข้าใจที่ดีเกี่ยวกับเครื่องมือที่จำเป็นทั้งหมด อย่างไรก็ตามฉันไม่เคยสร้างการออกแบบเสียงสำหรับเกมและฉันไม่เข้าใจวิธีการทำเช่นนั้นจริงๆ คุณจะจัดระเบียบและใช้เอฟเฟกต์เสียงอย่างไร ตัวอย่างเช่นคุณมี 5 ประเภทตัวละครที่แตกต่างกันและ 3 พื้นที่ที่แตกต่างกัน - หญ้าโคลนและไม้ตัวอย่างเช่นคุณจะสร้างเสียงฝีเท้า 5 * 3 หรือไม่? การเพิ่มพิชช์แบบสุ่มสำหรับความหลากหลายเป็นตัวอย่างที่ดีหรือไม่ สิ่งที่เกี่ยวกับเสียงของสภาพแวดล้อม - คุณสร้างวงวนหลักที่คุณเพิ่งเปิดตัวบนพื้นหลังหรือคุณวางเสียงจริง (น้ำลมลมต้นไม้เห่าเคลื่อนที่) นกทั่วทั้งเกม? โดยรวมแล้วฉันมีคำถามสุ่มโง่ ๆ มากเกินไปเพราะฉันไม่ค่อยเข้าใจว่าระบบนี้ควรได้รับการออกแบบอย่างไร ฉันจะขอบคุณมากหากมีคนให้ลิงก์ไปยังคู่มือหรือบทความเกี่ยวกับเรื่องนั้น

3
วิธีการใช้“ การ์ดเทคนิคพิเศษ” ในเกมการ์ดซื้อขาย
ฉันกำลังพยายามเขียนการ์ดเกมซื้อขายที่นี่ในทางใดทางหนึ่งมันคล้ายกับMagic The GatheringหรือYu-Gi-Oh! เกมการ์ด. สำหรับผู้ที่ไม่คุ้นเคยในเกมนั้นมีการ์ดพิเศษ (การ์ดคาถา / การ์ดกับดัก / ฯลฯ ) ซึ่งมีเอฟเฟกต์พิเศษที่สามารถโค้งงอกฎของเกมได้ สิ่งที่ฉันไม่รู้โดยสิ้นเชิงคือวิธีใช้ตรรกะของการ์ดเหล่านี้ ฉันมีความคิดเกี่ยวกับการจัดเก็บข้อมูลการ์ดด้วยธงบางอย่างที่สามารถส่งสัญญาณว่ามีความสามารถ แต่มีข้อ จำกัด ในสิ่งที่สามารถทำได้ (อาจเป็นเพียงการดัดแปลงสถิติอย่างง่าย) เพื่อให้คุณเข้าใจว่าเอฟเฟกต์การ์ดเหล่านี้มีอะไรบ้างนี่คือตัวอย่างของเอฟเฟกต์การ์ดคาถาที่มีอยู่ในYu-Gi-Oh! เกมการ์ด: รื้อฟื้นสิ่งมีชีวิตที่ถูกทำลาย ควบคุมสิ่งมีชีวิตของคู่ต่อสู้ แก้ไขสถิติของสิ่งมีชีวิตตามเงื่อนไขบางอย่าง (เช่นจำนวนสิ่งมีชีวิตที่มีชื่อบางอย่างที่ถูกทำลาย) อัญเชิญสัตว์ประหลาดชนิดพิเศษมาเป็นพิเศษหากเงื่อนไขบางอย่างครบถ้วน หลอมสิ่งมีชีวิตสองชนิดขึ้นไปให้กลายเป็นสิ่งมีชีวิตที่แข็งแกร่งขึ้น การยกเว้นจากเอฟเฟกต์การ์ดพิเศษบางอย่าง Konami ทำวิดีโอเกมหลายเกมพร้อมด้วย AI และการ์ดหลายพันใบ ฉันไม่คิดว่ามันจะเป็นไปได้จริง ๆ ที่จะเข้ารหัสรหัสฐานข้อมูลทั้งหมดใช่ไหม? แน่นอนว่าสิ่งที่ฉันพยายามจะทำคือไม่มีที่ไหนที่ซับซ้อนเท่าเกมเหล่านั้น แต่ฉันอยากรู้อยากเห็นพวกเขาใช้สิ่งเหล่านี้อย่างไร

2
คำแนะนำเกี่ยวกับสถาปัตยกรรมเกม / รูปแบบการออกแบบ
ฉันได้ทำงานกับ RPG 2d มานานแล้วและฉันก็ตระหนักว่าฉันได้ตัดสินใจออกแบบที่ไม่ดี โดยเฉพาะอย่างยิ่งมีบางสิ่งที่ทำให้ฉันมีปัญหาดังนั้นฉันจึงสงสัยว่าคนอื่น ๆ ที่ใช้ในการเอาชนะพวกเขาหรือใช้ สำหรับพื้นหลังเล็กน้อยฉันเริ่มทำงานในเวลาว่างของฉันเมื่อฤดูร้อนปีที่แล้ว ตอนแรกฉันสร้างเกมใน C # แต่ประมาณ 3 เดือนที่แล้วตัดสินใจเปลี่ยนเป็น C ++ ฉันต้องการได้รับการจัดการที่ดีใน C ++ เพราะมันไม่นานมานี้เพราะฉันใช้มันอย่างหนักและคิดว่าโครงการที่น่าสนใจเช่นนี้จะเป็นแรงจูงใจที่ดี ฉันใช้ห้องสมุดเพิ่มอย่างกว้างขวางและใช้ SFML สำหรับกราฟิกและ FMOD สำหรับเสียง ฉันมีโค้ดที่ค่อนข้างเป็นธรรม แต่กำลังพิจารณาที่จะทิ้งมันและเริ่มต้นใหม่ นี่คือประเด็นสำคัญที่ฉันกังวลและต้องการรับความคิดเห็นเกี่ยวกับวิธีการที่เหมาะสมที่ผู้อื่นแก้ไขได้หรือจะแก้ปัญหา 1. การพึ่งพาตามวัฏจักร เมื่อฉันทำเกมใน C # ฉันไม่ต้องกังวลเกี่ยวกับสิ่งนี้เพราะมันไม่มีปัญหา การย้ายไปที่ C ++ นี้ได้กลายเป็นปัญหาใหญ่พอสมควรและทำให้ฉันคิดว่าฉันอาจออกแบบสิ่งต่าง ๆ ไม่ถูกต้อง ฉันไม่สามารถจินตนาการได้ว่าจะแยกชั้นเรียนของฉันอย่างไรและยังให้พวกเขาทำสิ่งที่ฉันต้องการ นี่คือตัวอย่างบางส่วนของห่วงโซ่การพึ่งพา: ฉันมีคลาสเอฟเฟ็กต์สถานะ ชั้นเรียนมีวิธีการมากมาย (ใช้ / นำไปใช้, ขีด, ฯลฯ ) …
16 c++  architecture  rpg 

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

4
ทางเลือกในการ Singletons / globals
ฉันเคยได้ยินครั้งนับไม่ถ้วนเกี่ยวกับข้อผิดพลาดของ Singletons / กลมและฉันเข้าใจว่าทำไมพวกเขาถึงขมวดคิ้วบ่อยครั้ง สิ่งที่ฉันไม่เข้าใจคือทางเลือกที่หรูหราและไม่ยุ่งคืออะไร ดูเหมือนว่าทางเลือกในการใช้ Singletons / globals เกี่ยวข้องกับการส่งผ่านวัตถุเป็นล้านระดับผ่านวัตถุเครื่องยนต์ของคุณจนกว่าจะถึงวัตถุที่ต้องการ ตัวอย่างเช่นในเกมของฉันฉันโหลดเนื้อหาบางส่วนไว้ล่วงหน้าเมื่อเกมเริ่มต้นขึ้น สินทรัพย์เหล่านี้ไม่ได้ใช้จนกว่าจะถึงเวลาต่อมาเมื่อผู้เล่นนำทางผ่านเมนูหลักและเข้าสู่เกม ฉันควรจะส่งข้อมูลนี้จากวัตถุเกมของฉันไปยังวัตถุ ScreenManager ของฉัน (แม้ว่าข้อเท็จจริงที่ว่ามีเพียงหน้าจอเดียวที่ให้ความสำคัญกับข้อมูลนี้) จากนั้นไปยังวัตถุหน้าจอที่เหมาะสมและที่อื่น ๆ ดูเหมือนว่าฉันกำลังแลกเปลี่ยนข้อมูลสถานะทั่วโลกสำหรับการฉีดขึ้นต่อกันที่ยุ่งเหยิงส่งผ่านข้อมูลไปยังวัตถุที่ไม่สนใจข้อมูลยกเว้นจุดประสงค์ในการส่งต่อไปยังวัตถุลูก นี่เป็นกรณีที่ Singleton น่าจะเป็นสิ่งที่ดีหรือมีวิธีแก้ปัญหาอันงดงามที่ฉันขาดไปหรือไม่?

6
วิดีโอเกมจะเก็บข้อมูลไว้ที่หน้าจอนอกได้อย่างไร
ฉันกำลังพยายามสร้างวิดีโอเกมตั้งแต่เริ่มต้น แต่ฉันยังใหม่กับสิ่งนี้และยังคงพบกับปัญหาพื้นฐาน ที่สำคัญที่สุดวิดีโอเกมจะจัดเก็บข้อมูลนอกจอได้อย่างไร สิ่งที่ฉันหมายถึงคือโปรแกรมรู้ได้อย่างไรว่าจะแสดงอะไรต่อไปบนหน้าจอ หรือแม้กระทั่งหากผู้เล่นเปลี่ยนสภาพแวดล้อมการเปลี่ยนแปลงนี้จะยังคงอยู่ในครั้งต่อไปที่โหลดลงบนหน้าจออย่างไร ตัวอย่างเช่นใน New Super Mario Bros ถ้าคุณกดปุ่ม? ปิดกั้นแล้วออกจากหน้าจอและกลับมาก็ยังคงถูกโจมตี ข้อมูลนี้ถูกเก็บไว้อย่างไรและดำเนินการในครั้งต่อไปที่ผู้เล่นโหลดบล็อก? ทำไมมันไม่รีเซ็ต

3
การแยก Game Engine ออกจากรหัสเกมในเกมที่คล้ายกันโดยมีการกำหนดเวอร์ชัน
ฉันมีเกมเสร็จแล้วที่ฉันต้องการปฏิเสธในเวอร์ชั่นอื่น สิ่งเหล่านี้จะเป็นเกมที่คล้ายกันโดยมีการออกแบบประเภทเดียวกันมากกว่าหรือน้อยกว่า แต่ไม่เสมอไปโดยทั่วไปสิ่งต่าง ๆ อาจมีการเปลี่ยนแปลงบางครั้งเล็กน้อยบางครั้งก็ใหญ่ ฉันต้องการให้คอร์โค้ดแยกเป็นเวอร์ชั่นแยกต่างหากจากเกมดังนั้นถ้าฉันแก้ไขข้อบกพร่องที่พบในเกม A การแก้ไขจะปรากฏในเกม B ฉันพยายามหาวิธีที่ดีที่สุดในการจัดการสิ่งนั้น แนวคิดเริ่มต้นของฉันคือ: สร้างengineโมดูล / โฟลเดอร์ / อะไรก็ตามที่มีทุกสิ่งที่สามารถวางนัยและเป็นอิสระ 100% จากส่วนที่เหลือของเกม ซึ่งจะรวมถึงรหัสบางส่วน แต่ยังเป็นสินทรัพย์ทั่วไปที่ใช้ร่วมกันระหว่างเกม วางเอ็นจินนี้ลงในที่gitเก็บของมันเองซึ่งจะรวมอยู่ในเกมด้วยgit submodule ส่วนที่ฉันกำลังดิ้นรนคือวิธีการจัดการรหัสที่เหลือ สมมติว่าคุณมีฉากเมนูของคุณรหัสนี้เป็นเกมเฉพาะ แต่ส่วนใหญ่มีแนวโน้มที่จะเป็นเกมทั่วไปและสามารถนำกลับมาใช้ในเกมอื่นได้ ฉันไม่สามารถใส่มันได้engineแต่การเขียนโค้ดซ้ำสำหรับแต่ละเกมจะไม่มีประสิทธิภาพ บางทีการใช้ความแตกต่างของกิ่งก้านบางอย่างอาจมีประสิทธิภาพในการจัดการ แต่ฉันไม่รู้สึกว่านี่เป็นวิธีที่ดีที่สุด ใครมีความคิดประสบการณ์ในการแบ่งปันหรืออะไรก็ตาม

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 …

6
องค์ประกอบของเกมผู้จัดการเกมและคุณสมบัติของวัตถุ
ฉันกำลังพยายามทำให้การออกแบบเอนทิตีอิงองค์ประกอบ ขั้นตอนแรกของฉันคือการสร้างส่วนประกอบต่าง ๆ ที่สามารถเพิ่มไปยังวัตถุ สำหรับส่วนประกอบทุกประเภทที่ฉันมีผู้จัดการซึ่งจะเรียกฟังก์ชั่นการอัพเดทของทุกองค์ประกอบผ่านสิ่งต่าง ๆ เช่นสถานะแป้นพิมพ์ ฯลฯ ตามต้องการ สิ่งต่อไปที่ฉันทำคือลบวัตถุออกและมีส่วนประกอบแต่ละอันที่มีรหัส ดังนั้นวัตถุจะถูกกำหนดโดยส่วนประกอบที่มีรหัสเดียวกัน ตอนนี้ฉันกำลังคิดว่าฉันไม่ต้องการผู้จัดการสำหรับส่วนประกอบทั้งหมดของฉันเช่นฉันมี a SizeComponentซึ่งเพิ่งมีSizeคุณสมบัติ) ดังนั้นSizeComponentวิธีนี้จึงไม่มีวิธีการอัพเดทและวิธีการอัพเดทของผู้จัดการก็ไม่ได้ทำอะไรเลย ความคิดแรกของฉันคือการมีObjectPropertyคลาสที่ส่วนประกอบสามารถสอบถามได้แทนที่จะให้เป็นคุณสมบัติของส่วนประกอบ ดังนั้นวัตถุจะมีจำนวนและObjectProperty ObjectComponentส่วนประกอบจะมีลอจิกการอัพเดทที่สอบถามวัตถุสำหรับคุณสมบัติ ผู้จัดการจะจัดการโทรวิธีการปรับปรุงองค์ประกอบ ดูเหมือนว่าจะเกินความเป็นจริงสำหรับฉัน แต่ฉันไม่คิดว่าฉันจะสามารถกำจัดองค์ประกอบได้เพราะฉันต้องการวิธีที่ผู้จัดการจะต้องรู้ว่าวัตถุใดที่ต้องใช้ตรรกะขององค์ประกอบที่จะเรียกใช้ (มิฉะนั้นฉันจะลบองค์ประกอบออก สมบูรณ์และผลักดันตรรกะการอัปเดตเป็นผู้จัดการ) นี้คือ (มีObjectProperty, ObjectComponentและComponentManagerชั้นเรียน) มากกว่าวิศวกรรม? อะไรจะเป็นทางเลือกที่ดี?

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