คำถามติดแท็ก design-patterns

รูปแบบการออกแบบเป็นโซลูชันที่ใช้ซ้ำได้ทั่วไปสำหรับปัญหาที่เกิดขึ้นโดยทั่วไปภายในบริบทที่กำหนดในการออกแบบซอฟต์แวร์

2
หากคลาส“ ResourceManager” ถือว่าไม่ดีตัวเลือกอื่นคืออะไร
ฉันได้ยินความคิดเห็นที่ขัดแย้งเช่น: "คลาส Dedicated Manager แทบไม่เคยเป็นเครื่องมือทางวิศวกรรมที่เหมาะสม" "คลาส Dedicated Manager เป็นวิธีที่ดีที่สุดในการอยู่รอดโครงการขนาดใหญ่ที่มีทรัพยากรนับพัน" ลองคลาส ResourceManager คลาสสิกที่มีฟังก์ชั่นต่อไปนี้: โหลดเนื้อหา (พื้นผิว, เสียง, โมเดล 3 มิติ ฯลฯ ) ตรวจสอบให้แน่ใจว่ามีการโหลดเนื้อหาเพียงครั้งเดียวโดยเก็บแคชไว้ การอ้างอิงนับสินทรัพย์เพื่อพิจารณาว่าสามารถยกเลิกการจัดสรรได้หรือไม่ ซ่อนที่สินทรัพย์จริงมาจาก (เช่นอาจเป็นหนึ่งไฟล์ต่อสินทรัพย์หรือสินทรัพย์ทั้งหมดในไฟล์แพ็คเกจหนึ่งหรือสินทรัพย์สามารถโหลดผ่านเครือข่ายได้) สามารถโหลดเนื้อหาโดยไม่ต้องเริ่มโปรแกรมใหม่ซึ่งมีประโยชน์อย่างยิ่งสำหรับศิลปินที่ทำงานในเกม Let 's ยังใช้อาร์กิวเมนต์ "singletons ที่ไม่ดี" ออกจากตารางโดยแกล้งทำเป็นวัตถุ ResourceManager เหล่านี้จะไม่ singletons และแทนจะถูกส่งผ่านไปรอบ ๆ ผ่านฉีดพึ่งพา จากนั้นมีอาร์กิวเมนต์ "ใช้เป็นโรงงาน" หรือ "เรียกว่าเป็นโรงงาน" ปัญหาของฉันเกี่ยวกับเรื่องนี้คือใช่มันเป็นโรงงาน แต่ก็เป็นแคชและตัวโหลดซ้ำ (เนื่องจากไม่มีคำที่ดีกว่า) การเรียกมันว่าโรงงานไม่ได้อธิบายอย่างถูกต้องและถ้าฉันทำให้มันเป็นโรงงานที่เหมาะสมแล้วการแคชและการโหลดใหม่จะถูกนำไปใช้ที่ไหน ฉันยอมรับว่าคลาส "ผู้จัดการ" มักเป็นอาการของสถาปัตยกรรมที่ไม่ดี แต่ในกรณีนี้จะปรับโครงสร้างและยังคงใช้งานได้ทั้งหมดหรือไม่ นี่เป็นสถานการณ์ที่ระดับ …

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

6
อะไรคือข้อผิดพลาดที่ใหญ่ที่สุดที่ต้องพิจารณาเมื่อพัฒนาเกมใหม่
จริง ๆ แล้วฉันเพิ่งเริ่มติดตาม (ขอบคุณ David Young สำหรับการแก้ไขการตั้งชื่อ) สองสามเกมบนเว็บใหม่สำหรับ Facebook เมื่อไม่กี่สัปดาห์ที่ผ่านมาและฉันเพิ่งถูกน้ำท่วมด้วยบล็อกจิตและเวลาจากการเขียนโค้ดซ้ำ ฉันกำลังทำงานกับสิ่งที่คล้ายกับเกม RPG แนวสวมบทบาท (Vampire Wars) ฉันมีทักษะในการเขียนรหัสเกม แต่ฉันกำลังโหยหาผ่านรูปแบบการออกแบบที่ถูกต้องและทำให้ผลิตภัณฑ์ตรงกับสิ่งที่ฉันเห็นในใจ โดยปกติเมื่อสร้างเว็บไซต์ที่ฉันชอบ 'คิดเป็นโค้ด' และฉันพบว่าเร็วกว่าสำหรับฉันเพียงแค่เปลี่ยนรหัส / HTML เพื่อปรับแต่งสิ่งต่อไปนี้อาจเป็นเพราะฉันสบายใจในสิ่งที่ฉันทำและฉันรู้ว่าจะคาดหวังอะไร อย่างที่ฉันทำมันซ้ำแล้วซ้ำอีก ณ จุดนี้ด้วยการพัฒนาเกมฉันพบว่าตัวเองเริ่มต้นบนกระดาษอีกครั้ง (เหมือนที่ฉันเคยทำกับเว็บไซต์) และฉันสงสัยว่านี่เป็นเพียงการขาดสมาธิและปรีชากับตรรกะของเกมหรือถ้านี่เป็นวิธีที่เหมาะสมในการคิด โค้ดล่วงหน้า ฉันขอขอบคุณคำแนะนำเกี่ยวกับวิธีการโจมตีปัญหานี้อย่างถูกต้องและทำให้ตัวเองทำงานได้ทัน ฉันเรียนรู้อย่างรวดเร็วว่าเอ็นจิ้นเกมแตกต่างจากเว็บไซต์ธุรกิจมาตรฐานมากน้อยเพียงใด! ทุกครั้งที่ฉันทำอะไรบางอย่างมันแค่รู้สึกโมโหและไม่สมบูรณ์และมันก็กลายเป็นเรื่องน่าหงุดหงิด ขยาย ตัวอย่างเช่นเครื่องมือการต่อสู้ที่ให้ปัญหามากกับฉันเมื่อเร็ว ๆ นี้ใช้ทักษะการโจมตีอย่างง่ายจากนั้นทำการสุ่มหมุนระหว่าง -50% ถึง + 50% จากนั้นคูณทักษะการโจมตีเดิมกับเปอร์เซ็นต์นั้น สิ่งเดียวกันนี้ทำขึ้นเพื่อป้องกันและจากนั้นฉันก็นำสิ่งเหล่านั้นมาพิจารณาว่ามีความเสียหายใด ๆ เกิดขึ้นกับสุขภาพของศัตรูหรือไม่ ฉันคิดว่าฉันควรตระหนักว่าฉันอยู่ในหัวของฉันเมื่อฉันเริ่มถามตัวเองว่านี่เป็นวิธีที่ถูกต้องหรือไม่หรือแม้แต่มีวิธีที่ 'ถูกต้อง' ความผิดพลาดที่สำคัญอย่างหนึ่งที่ฉันพบคือตัวละครสองตัวที่อยู่ในระดับเดียวกันสามารถมี 'ม้วน' ได้หลายตัวเมื่อการโจมตีอยู่ที่ -50% …

4
ฉันจะออกแบบการโจมตีประเภทต่าง ๆ จำนวนมากที่สามารถรวมกันได้อย่างไร
ฉันสร้างเกม 2D จากบนลงล่างและฉันต้องการที่จะมีประเภทการโจมตีที่แตกต่างกันมากมาย ฉันต้องการทำให้การโจมตีมีความยืดหยุ่นมากและรวมกันได้อย่างที่ The Binding of Isaac ทำงานได้ นี่คือรายชื่อของสะสมทั้งหมดในเกม ที่จะหาตัวอย่างที่ดีให้ดูที่ช้อนประมาทรายการ Spoon Bender ทำให้ไอแซคมีความสามารถในการยิงน้ำตากลับบ้าน หากคุณดูที่ส่วน "การทำงานร่วมกัน" คุณจะเห็นว่ามันสามารถใช้ร่วมกับของสะสมอื่น ๆ เพื่อเอฟเฟกต์ที่น่าสนใจ แต่ใช้งานง่าย ตัวอย่างเช่นถ้ามันรวมเข้ากับThe Inner Eyeมัน "จะทำให้ Isaac ยิงกระสุนกลับบ้านหลายนัดพร้อมกัน" มันสมเหตุสมผลแล้วเพราะ The Inner Eye ทำให้ Isaac ยิงได้สามครั้ง สถาปัตยกรรมที่ดีในการออกแบบสิ่งนี้คืออะไร นี่คือวิธีการแก้ปัญหากำลังดุร้าย: if not spoon bender and not the inner eye then ... if spoon bender and …

1
การออกแบบคลาส ResourceManager
ฉันตัดสินใจว่าฉันต้องการเขียนคลาส ResourceManager / ResourceCache สำหรับเอนจิ้นเกมอดิเรกของฉัน แต่ฉันมีปัญหาในการออกแบบรูปแบบแคช แนวคิดก็คือ ResourceManager มีเป้าหมายนุ่มนวลสำหรับหน่วยความจำทั้งหมดที่ใช้โดยทรัพยากรทั้งหมดของเกมรวมกัน คลาสอื่น ๆ จะสร้างออบเจ็กต์ทรัพยากรซึ่งจะอยู่ในสถานะไม่โหลดและส่งไปยัง ResourceManager จากนั้น ResourceManager จะตัดสินใจเมื่อใดที่จะโหลด / ยกเลิกการโหลดทรัพยากรที่กำหนดโดยคำนึงถึงขีด จำกัด ซอฟต์ เมื่อต้องการทรัพยากรโดยชั้นเรียนอื่นคำขอจะถูกส่งไปยัง ResourceManager สำหรับมัน (โดยใช้ id ของสตริงหรือตัวระบุที่ไม่ซ้ำกัน) หากโหลดทรัพยากรแล้วการอ้างอิงแบบอ่านอย่างเดียวไปยังทรัพยากรจะถูกส่งผ่านไปยังฟังก์ชั่นการโทร หากไม่ได้โหลดทรัพยากรผู้จัดการจะทำเครื่องหมายวัตถุที่จะโหลดในโอกาสถัดไป (โดยปกติจะอยู่ที่ส่วนท้ายของการวาดเฟรม) โปรดทราบว่าแม้ว่าระบบของฉันจะทำการนับการอ้างอิงบางอย่างจะนับเฉพาะเมื่อมีการอ่านทรัพยากร (ดังนั้นจำนวนการอ้างอิงอาจเป็น 0 แต่เอนทิตีอาจยังคงติดตาม uid อยู่) นอกจากนี้ยังเป็นไปได้ที่จะทำเครื่องหมายทรัพยากรเพื่อการโหลดที่ดีก่อนการใช้งานครั้งแรก นี่เป็นภาพร่างของชั้นเรียนที่ฉันใช้อยู่: typedef unsigned int ResourceId; // Resource is an abstract data type. class Resource …

6
ฉันจะใช้ซิงเกิลตันอย่างถูกต้องในการเขียนโปรแกรมเอ็นจิน C ++ ได้อย่างไร?
ฉันรู้ว่าซิงเกิลตันไม่ดีเอ็นจิ้นเกมเก่าของฉันใช้วัตถุ 'เกม' ซิงเกิลตันที่จัดการทุกอย่างตั้งแต่การเก็บข้อมูลทั้งหมดจนถึงลูปเกมจริง ตอนนี้ฉันกำลังสร้างใหม่ ปัญหาคือการวาดอะไรบางอย่างใน SFML คุณใช้ที่เป็นหน้าต่างwindow.draw(sprite) sf::RenderWindowมี 2 ​​ตัวเลือกที่ฉันเห็นอยู่ที่นี่: สร้างวัตถุเกม Singleton ที่ทุกหน่วยงานในเกมดึง (สิ่งที่ฉันใช้มาก่อน) ทำให้นี่เป็นตัวสร้างสำหรับเอนทิตี: Entity(x, y, window, view, ...etc)(นี่เป็นเพียงเรื่องไร้สาระและน่ารำคาญ) อะไรจะเป็นวิธีที่เหมาะสมในการทำเช่นนี้ในขณะที่รักษานวกรรมิกของ Entity ให้เป็นแค่ x และ y ฉันสามารถลองและติดตามทุกสิ่งที่ฉันทำในลูปเกมหลักและเพียงแค่วาดเทพดาในลูปเกมด้วยตนเอง แต่ดูเหมือนว่ายุ่งเกินไปและฉันยังต้องการการควบคุมเต็มรูปแบบสำหรับฟังก์ชั่นการดึงทั้งหมด

2
การพัฒนาเกมมีรูปแบบของตัวเองหรือไม่?
ต้องการปรับปรุงโพสต์นี้หรือไม่? ให้คำตอบโดยละเอียดสำหรับคำถามนี้รวมถึงการอ้างอิงและคำอธิบายว่าทำไมคำตอบของคุณถึงถูกต้อง คำตอบที่ไม่มีรายละเอียดเพียงพออาจแก้ไขหรือลบออกได้ วิทยาการคอมพิวเตอร์ทั่วไปมีการสร้างแบบจำลอง "ภาษา" (อ่าน: เทคนิคการสร้างไดอะแกรมมาตรฐาน) เช่น UML 1 , 2 , ในฐานข้อมูลมีสิ่งที่เหมือน ERD 3ในธุรกิจมีชนิดอื่น ๆ เช่น BPMN 4 , 5 มีอะไรแบบนี้ที่เฉพาะเจาะจงกับการออกแบบเกมหรือไม่?

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

2
การออกแบบเกมที่ใช้องค์ประกอบ
ฉันกำลังเขียนปืน (เช่น 1942, กราฟิก 2D แบบคลาสสิก) และฉันต้องการใช้การอนุมัติตามส่วนประกอบ จนถึงตอนนี้ฉันคิดถึงการออกแบบต่อไปนี้: องค์ประกอบแต่ละเกม (เรือเหาะขีปนาวุธเพิ่มพลังศัตรู) เป็นเอนทิตี แต่ละหน่วยงานคือชุดของส่วนประกอบที่สามารถเพิ่มหรือลบได้ในเวลาทำงาน ตัวอย่างเช่นตำแหน่ง, Sprite, Health, IA, Damage, BoundingBox เป็นต้น แนวคิดคือ Airship, Projectile, Enemy, Powerup ไม่ใช่คลาสเกม เอนทิตีถูกกำหนดโดยส่วนประกอบที่เป็นเจ้าของเท่านั้น (และสามารถเปลี่ยนแปลงได้ในช่วงเวลา) ดังนั้นผู้เล่นเรือเหาะเริ่มต้นด้วย Sprite, ตำแหน่ง, สุขภาพและส่วนประกอบอินพุต Powerup มี Sprite, Position, BoundingBox และอื่น ๆ หลักวนรอบจัดการเกม "ฟิสิกส์" นั่นคือส่วนประกอบต่าง ๆ มีปฏิสัมพันธ์กันอย่างไร: foreach(entity (let it be entity1) with a …

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

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

4
เซิร์ฟเวอร์ซ็อกเก็ตและเซิร์ฟเวอร์เกมควรแยกกระบวนการหรือไม่
สมมติว่าเกมไคลเอนต์ / เซิร์ฟเวอร์มาตรฐานที่เรียบง่าย สำหรับเซิร์ฟเวอร์มันคุ้มค่าหรือไม่ที่จะมีกระบวนการแยกต่างหากที่รับฟังการเชื่อมต่อและข้อความจากไคลเอนต์และส่งข้อมูลผ่านซ็อกเก็ตท้องถิ่นหรือ stdin ไปยังกระบวนการอื่นที่รันเซิร์ฟเวอร์เกมจริง อีกทางเลือกหนึ่งคือให้ทำทั้งสองอย่างในขั้นตอนเดียว การจัดคิวข้อความขาเข้าและดำเนินการตามลำดับที่ถูกต้องไม่ควรมีปัญหาการหยุดชะงัก ฉันสงสัยว่าทรัพยากรพิเศษที่จะแยก "กิจกรรม" สองรายการนั้นคุ้มค่าหรือไม่ ฉันควรตัดสินใจอย่างไร ฉันต้องการได้ยินข้อดี / ข้อเสียใด ๆ

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

3
วิธีหลีกเลี่ยงรูปแบบซิงเกิลสำหรับ Event Scheduler
ฉันต้องการสร้าง Event scheduler สำหรับเกมของฉันโดยพื้นฐานแล้วฉันต้องการที่จะสามารถกำหนดตารางเวลาการเรียกเหตุการณ์ของเกมได้ นี่อาจเป็นทริกเกอร์ครั้งเดียวหรือทริกเกอร์เป็นระยะ (เหตุการณ์ทริกเกอร์ "E_BIG_EXPLOSION" เป็นเวลา 5 วินาที ... ) มันน่าดึงดูดที่จะคิดว่านี่อาจเป็นสถานที่ที่ดีในการใช้ซิงเกิลตัน แต่ซิงเกิลนั้นค่อนข้างชั่วร้ายและพวกเขามักจะแพร่กระจายอย่างโรค ... ดังนั้นฉันจึงพยายามหลีกเลี่ยงพวกเขาทั้งหมด คุณจะเสนอการออกแบบแบบใดเพื่อหลีกเลี่ยงการใช้งานแบบซิงเกิลในกรณีนี้

2
ฉันจะหลีกเลี่ยงการเขียนคลาส Manager ได้อย่างไร
ฉันดูเหมือนจะอ่านต่อไปมันเป็นความคิดที่ดีที่จะใช้XxxManagerสไตล์คลาสในการเขียนโปรแกรมเกมเอ็นจิ้น แต่ถึงแม้ว่าฉันพยายามที่จะหลีกเลี่ยงการใช้พวกเขาฉันมักจะจบลงด้วยสิ่งที่เก็บนักแสดง / เอนทิตี้ / จบลงด้วยการเป็นManagerถ้าด้วยชื่ออื่น นี่เป็นรูปแบบที่ไม่ดีที่จะติดตามหรือไม่ ถ้าเป็นเช่นนั้นทางเลือกคืออะไร?

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