การพัฒนาเกม

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

1
มีเอ็นจิ้นของเกมใดบ้างที่สามารถใช้เสียง 3D binaural ตำแหน่งจริงได้หรือไม่? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันไม่ได้เป็นผู้ออกแบบเกมดังนั้นฉันต้องขออภัยล่วงหน้าหากฉันล้มเหลวในการใช้ศัพท์แสงที่เหมาะสม อย่าลังเลที่จะแก้ไขข้อผิดพลาดของฉัน ความเข้าใจของฉันคือในตอนนี้ถ้าไม่ใช่มือปืนคนแรก (เช่น L4D2 หรือ Bioshock) ส่วนใหญ่ "เสียง 3D" จะถูกสร้างขึ้นโดยการรับตำแหน่งผู้เล่นและการกระจัดภายในเกม แต่ส่วนใหญ่มาจากการเล่น บน balance (เพื่อระบุทิศทางไปยังแหล่งกำเนิดเสียง) แอมพลิจูด (เพื่อระบุระยะห่างระหว่างเครื่องเล่นและแหล่งกำเนิดเสียง) อย่างไรก็ตามสำหรับการทดลองทางจิตวิทยาฉันต้องการให้วิชาของฉันเล่นเป็นนักกีฬาคนแรกที่กำหนดเองพร้อมเสียง 3D แบบ binaural ตำแหน่งจริงโดยใช้ฟังก์ชั่นการถ่ายโอนที่เกี่ยวข้องกับหัว (HRTFs) หากคุณไม่รู้ว่าฉันกำลังพูดถึงอะไรฉันเชิญคุณให้ฟังการบันทึก binaural ที่URLนี้ ฉันรู้ว่ามีเกมเดียวที่ใช้เสียง 3D แบบ binaural ตำแหน่งจริง: Papa Sangreแต่ไม่ใช่ FPS คำถามของฉัน (ที่เกี่ยวข้องทั้งหมด) คือ: เอ็นจิ้นเกมที่มีอยู่ในปัจจุบัน (Valve's Source?) สามารถใช้ในการออกแบบเกม FPS …

1
2D โปรไฟล์ผิวด้านบนของน้ำ
ฉันพยายามสร้างเอฟเฟกต์ของความหนาของผิวน้ำด้วย shader ที่ยอด ฉันอยู่ในสภาพแวดล้อมของเกม 3 มิติ แต่มันเป็นมุมมองเลื่อนดังนั้นมุมมอง "2D" นี่คือบทแนะนำที่ดีเกี่ยวกับการสร้างเอฟเฟกต์ดังกล่าวใน 2D จริงโดยใช้ตัวแบ่งส่วน แต่ฉันคิดว่ามันใช้ไม่ได้ในกรณีนี้ สำหรับช่วงเวลาที่ฉันมีเครื่องบินเพียงลำเดียวฉันก็ใช้การหักเหแสง และฉันต้องการใช้เอฟเฟกต์ความหนาของน้ำ แต่ฉันไม่รู้จะทำยังไง ฉันไม่ได้พยายามที่จะสร้างการเสียรูป / การเคลื่อนที่ของน้ำโดยใช้จุดยอดในขณะนี้นี่ไม่ใช่ประเด็น ฉันไม่รู้ว่ามันเป็นไปได้หรือเปล่ากับ quad ที่เรียบง่ายบางทีฉันควรใช้วัตถุแบบนี้ นี่คือตัวอย่างบางส่วน. ฉันไม่มีความคิดเกี่ยวกับวิธีสร้างเอฟเฟกต์นี้ ขอบคุณมาก ! [ แก้ไข ] เพิ่มเอฟเฟกต์น้ำเรย์แมนเพื่อการอ้างอิงที่ดีขึ้นของเอฟเฟกต์

1
การเพิ่มประสิทธิภาพการทำงานของเครื่องแยกชิ้นส่วนหนัก
ฉันต้องการความช่วยเหลือในการเพิ่มประสิทธิภาพชุดของเฉดสีต่อไปนี้: เวอร์เท็กซ์: precision mediump float; uniform vec2 rubyTextureSize; attribute vec4 vPosition; attribute vec2 a_TexCoordinate; varying vec2 tc; void main() { gl_Position = vPosition; tc = a_TexCoordinate; } Fragment: precision mediump float; /* Uniforms - rubyTexture: texture sampler - rubyTextureSize: size of the texture before rendering */ uniform sampler2D rubyTexture; uniform …

2
สายตาในแนวทแยงมุมมีสองมุม
ตอนนี้ฉันกำลังใช้อัลกอริธึมของ Bresenham สำหรับการมองเห็น ปัญหาคือฉันได้พบเคสที่ผู้เล่นสามารถมองทะลุกำแพงได้ เกิดขึ้นเมื่อผู้เล่นดูระหว่างสองมุมของกำแพงที่มีช่องว่างในอีกด้านหนึ่งในมุมที่เฉพาะเจาะจง ผลลัพธ์ที่ฉันต้องการคือการเรียงต่อกันระหว่างผนังทั้งสองจะมีการทำเครื่องหมายไม่ถูกต้องเช่นกัน วิธีใดที่เร็วที่สุดในการแก้ไขอัลกอริทึมของ Bresenham เพื่อแก้ปัญหานี้ หากไม่มีทางออกที่ดีจะมีอัลกอริทึมที่เหมาะสมกว่าหรือไม่ ยินดีต้อนรับความคิดใด ๆ โปรดทราบว่าการแก้ปัญหาควรจะรองรับ 3d ได้ด้วย แก้ไข: ทางออกที่ง่ายของฉันคือการตรวจสอบว่าทั้งสองมุมถูกปิดหรือไม่เมื่อพิกัด x และ y เปลี่ยนไป สำหรับซอร์สโค้ดที่ใช้งานได้และการสาธิตเชิงโต้ตอบของผลิตภัณฑ์ที่สมบูรณ์โปรดดูที่http://ashblue.github.io/javascript-pathfinding/

2
เกม Java บนเดสก์ท็อปสามารถกระจายโดยไม่ต้องพึ่งพา Java runtime อย่างไร
เป็นไปได้หรือไม่ที่จะเปลี่ยนแอปพลิเคชัน Java ให้กลายเป็นแพคเกจแบบสแตนด์อโลนที่เรียกว่า "ออกนอกกรอบ"? ผู้ใช้ไม่ควรต้องติดตั้ง Java JRE ใด ๆ และไม่ควรติดตั้ง JRE และติดตั้งให้กับผู้ใช้ การแจกจ่ายขั้นสุดท้ายควรมีการปฏิบัติการแบบเนทีฟ (หวังว่าจะเป็นหนึ่งเดียวสำหรับ Windows, Mac และ Linux) พร้อมกับไฟล์ข้อมูลปกติและ JAR พิเศษอื่น ๆ หากจำเป็น ฉันไม่ได้มองหาวิธีแก้ปัญหา "ไฟล์เดียว" โดยเฉพาะ - ฉันต้องการให้ไฟล์ข้อมูลไม่ได้ถูกทำให้ยุ่งเหยิง สิ่งนี้สามารถทำได้?

3
วิธีการหลีกเลี่ยงการควบคุมปริมาณ?
ฉันกำลังเขียนเกม iOS บนเครือข่าย เมื่อส่งแพ็คเก็ตที่มีGKMatchSendDataReliable(ซึ่งฉันสันนิษฐานว่าเป็น UDP พร้อมรหัสรับแพ็คเก็ตของตัวเองเขียน) ที่ 60 แพ็คเก็ตต่อวินาที (ดังนั้น 16 ms ระหว่างแพ็คเก็ตที่อยู่ติดกัน) เวลา ping เฉลี่ยแย่ลงอย่างรวดเร็ว: ) และเพียงแค่ส่ง "ท่วม" จาก 100 แพ็คเก็ต (ในอัตรา 60 แพ็คเก็ตต่อวินาที) ฉันวัดเวลาไปกลับโดยเฉลี่ยและนี่คือผลลัพธ์: [ 21:16:39 ]: I saw an average roundtrip time of 52.342787 ms, he saw 54.496590 ms [ 21:16:34 ]: I saw an average roundtrip …
9 networking  udp 

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

2
การกำหนดเป้าหมายเสียงหึ่งๆ
ลองจินตนาการถึง "โดรน" และจุดเป้าหมายบนระนาบ 2d มีพารามิเตอร์ที่แปด: P = my position Q = target position V = my velocity I = my moment of inertia w = my angular velocity s = my angular position T = max thrust U = max torque (เราจะบอกว่าเป้าหมายคงที่) งานของโดรนคือการไปถึงเป้าหมายให้เร็วที่สุดเท่าที่จะทำได้โดยเชื่อฟังแรงบิดสูงสุดและแรงขับสูงสุด มีเพียงสองวิธีในการใช้แรงบิดเนื่องจากเป็นเพียงในระนาบ 2d แรงขับถูก จำกัด ให้ไปในทิศทางเดียวเท่านั้นเมื่อเทียบกับทิศทางของยานและไม่สามารถเล็งได้หากไม่มีการหมุนเสียงพึมพำ ละเลยความต้านทานใด ๆ …

2
ฉันจะใช้ Editline สำหรับคอนโซลในเกมได้อย่างไร
ฉันต้องการเพิ่มคอนโซลในเกมให้กับเกม C ++ ที่ฉันสร้าง แม้ว่าการแสดงผลคอนโซลและการแยกคำสั่งที่ฉันใช้ได้ แต่การป้อนข้อความและการแก้ไข (เช่นการจัดการปุ่มซ้าย / ขวา, แบ็กสเปซและอื่น ๆ ... ) ดูเหมือนจะใช้ความพยายามอย่างมาก . ฉันจัดการเพื่อค้นหาไลบรารีชื่อEditlineที่จัดการป้อนข้อความสไตล์คอนโซลที่สมบูรณ์พร้อมประวัติและการเติมข้อมูลอัตโนมัติ แต่ฉันไม่แน่ใจว่าจะเชื่อมต่อสิ่งนี้กับเกมของฉันได้อย่างไรโดยเฉพาะตัวอย่างทั้งหมด ที่ฉันได้พบใช้จัดการอินพุตและเอาต์พุตมาตรฐานและreadline()ตัวเองเป็นสายการบล็อก ฉันต้องสามารถให้อินพุตของตัวเองและแสดงผลคอนโซลให้กับเอาต์พุตของตัวเองและฉันต้องแน่ใจว่าลูปเกมของฉันยังคงทำงานต่อไป ฉันควรจะทำสิ่งนี้อย่างไร?
9 c++  text-based 

2
ฉันจะหามุมยิงของกระสุนได้อย่างไร
ฉันกำลังสร้างเกม 2d ที่หน่วยยิงธนูใส่กัน ฉันรู้ว่าปืนและตำแหน่งของเป้าหมายและความเร็วเริ่มต้นของกระสุนปืน ฉันต้องการทราบมุมที่กระสุนปืนควรมีเพื่อเข้าสู่เป้าหมาย เป้าหมายอาจมีความสูงแตกต่างจากมือปืน ในการสรุปฉันรู้ว่า v0, R และ g และฉันต้องหามุม (หรือความสูง?) ฉันอ่านhttp://en.wikipedia.org/wiki/Projectile_motionแต่ฉันไม่พบสิ่งที่เกี่ยวข้องกับสิ่งที่ฉันต้องการ

5
ฉันจะอัปเดตการตั้งค่าการแสดงผลจากหน้าจอตัวเลือกโดยไม่ต้องเริ่มต้นใหม่ได้อย่างไร
ขณะนี้ฉันกำลังสร้าง 2D RPG ใน C ++ 11 ด้วย Allegro 5 และเพิ่ม เป้าหมายของฉันคือการปรับปรุงการตั้งค่าเกมของฉันเมื่อมีการเปลี่ยนตัวเลือกในเมนูตัวเลือก ฉันไม่ต้องการบังคับให้ผู้ใช้รีสตาร์ทเกม เกมอื่นไม่จำเป็นต้องรีสตาร์ทเมื่อเปลี่ยนความละเอียดหรือเปลี่ยนจากเต็มหน้าจอเป็นหน้าต่างดังนั้นเกมของฉันก็ไม่ควรทำเช่นเดียวกัน โปรดดูมุมมองที่เรียบง่ายของระบบด้านล่าง โปรดทราบว่าฉันไม่ต้องการเรียกวัตถุเกมของฉันโดยตรงจาก OptionsScreen เส้นประเป็นเพียงเพื่อแสดงให้เห็นถึงผลกระทบที่ฉันพยายามทำ เพื่อทำให้เกิดการปรับปรุงของเกมเมื่อมีการเปลี่ยนตัวเลือกในส่วนต่าง ๆ ของระบบ คำอธิบายโดยละเอียด ScreenManager มีรายการของGameScreenวัตถุทั้งหมดที่มีอยู่ในปัจจุบัน เหล่านี้จะเป็นหน้าจอต่าง ๆ ในเกมรวมถึงป๊อปอัป การออกแบบนี้จะปฏิบัติตามมากหรือน้อยไปตัวอย่างการจัดการสถานะของเกมใน C ScreenManagerมีการอ้างอิงถึงฉันGameวัตถุ Gameinitializes วัตถุและแก้ไขการตั้งค่าเกม หากฉันต้องการเปลี่ยนความละเอียดให้ใช้งานแบบเต็มหน้าจอหรือปิดเสียงที่ฉันควรทำในGameชั้นเรียน อย่างไรก็ตามปัจจุบัน OptionsScreen ไม่สามารถเข้าถึงคลาสเกมได้ ดูแผนภาพด้านล่าง: GameScreen สามารถส่งสัญญาณสามเหตุการณ์onFinished, และonTransitionStart onTransitionEndไม่มีonOptionsChangedเพราะมีเพียงหน้าจอเดียวเท่านั้นที่ทำเช่นนั้น ScreenManager ไม่สามารถตั้งค่าการจัดการเหตุการณ์สำหรับสิ่งนั้นเพราะมันจัดการหน้าจอทั้งหมดเป็นGameScreens คำถามของฉันคือฉันจะเปลี่ยนการออกแบบของฉันอย่างไรเพื่อให้การเปลี่ยนแปลงใน OptionsMenu ไม่ต้องการการรีสตาร์ท แต่จะเปลี่ยนทันที ฉันควรขอให้Gameวัตถุของฉันอัปเดตเมื่อคลิกปุ่มนำไปใช้

1
ฉันจะโหลดทรัพยากรกราฟิกแบบอะซิงโครนัสได้อย่างไร
สมมติว่าผู้ไม่เชื่อเรื่องพระเจ้าแพลตฟอร์ม: ฉันต้องการโหลดทรัพยากรกราฟิกในขณะที่เกมที่เหลือกำลังทำงานอยู่ โดยหลักการแล้วฉันสามารถโหลดไฟล์จริงในเธรดแยกต่างหากหรือใช้ async I / O แต่ด้วยวัตถุกราฟิกฉันจะต้องอัปโหลดไปยัง GPU และสามารถทำได้ (ปกติ) บนเธรดหลักเท่านั้น ฉันสามารถเปลี่ยนลูปเกมของฉันให้มีลักษณะดังนี้: while true do update() for each pending resource do load resource to gpu end draw() end ในขณะที่มีทรัพยากรโหลดด้ายแยกจากดิสก์เพื่อแรม อย่างไรก็ตามหากมีทรัพยากรจำนวนมากที่ต้องโหลดสิ่งนี้อาจทำให้ฉันพลาดกำหนดเส้นตายของเฟรม ดังนั้นฉันสามารถเปลี่ยนวงนี้: while true do update() if there are pending resources then load one resource to gpu remove that resource …

1
จะสร้างพอร์ทัลเอฟเฟกต์คุณภาพสูงและรวดเร็วได้อย่างไร?
แก้ไข: ดังนั้นฉันจึงได้รับพอร์ทัลวิชวลเอฟเฟกต์ทำงานโดยไม่มีประสิทธิภาพในการทำงานและฉันได้รับการตั้งค่าทางฟิสิกส์ของวัตถุที่มีวัตถุเคลื่อนที่ผ่านทางพอร์ทัลอย่างราบรื่นและวัตถุที่มีตัวควบคุมตัวละครเคลื่อนไหวอย่างราบรื่น สิ่งเดียวที่ฉันพยายามคิดตอนนี้คือการผสมผสานมุมมองของกล้องสองตัวเพื่อให้ได้เอฟเฟกต์การเปลี่ยนคนแรกที่เหมาะสม มีแนวคิดใดบ้างที่ฉันจะผสมผสานสองสิ่งนี้เข้าด้วยกัน? ฉันกำลังคิดบางอย่างที่ใช้ shader ที่มีความลึกเท่านั้นหรือ rect ของวิวพอร์ตปกติ ปัญหาหลักของฉันคือการคำนวณว่าในเวลาจริงและมีมุม ดังนั้นฉันจึงพยายามสร้างพอร์ทัลเอฟเฟกต์ใน Unity3D เห็นได้ชัดว่าฉันได้ยึดพอร์ทัลของ Valve เป็นอิทธิพลอย่างมากต่อการเขียนโปรแกรมนี้ ขณะนี้ฉันเพียงแค่ใช้การเรนเดอร์พื้นผิวของกล้องเพื่อให้ได้เอฟเฟกต์กราฟิกแบบข้ามและจากนั้นโค้ดบางอย่างที่เหลือ ปัญหาอยู่ที่ 2048x2048 ดูเหมือนว่าคุณภาพสูงเท่ากับพอร์ทัล แต่เป็นสาเหตุของการสูญเสีย FPS หนัก เพื่อแก้ปัญหานี้ฉันต้องลดคุณภาพพื้นผิวหรือลดจำนวนครั้งที่ฉันอัปเดตพื้นผิว Valve ประสบความสำเร็จในการสร้างเอฟเฟกต์พอร์ทัลคุณภาพสูงโดยไม่ทำให้เฟรมเรตสูญหาย ฉันจะทำสิ่งเดียวกันได้อย่างไร ใครบ้างมีความคิดที่ดีสำหรับการแสดงผลพื้นผิวความละเอียดสูงโดยไม่ทำให้เกิดการสูญเสียเฟรม? ฉันกำลังพิจารณาที่จะสร้างรหัสของตัวเองสำหรับการแสดงผลพื้นผิวแทนที่จะใช้ระบบในตัวของ Unity มันเป็นไปได้ แต่น่าจะเป็นเรื่องยุ่งยาก ดังนั้นความคิดความคิดหรือคำแนะนำใด ๆ จึงเป็นที่นิยมอย่างสูง
9 unity  valve  portals 

2
วิธีการใช้ LuaJIT แบบเดียวกับที่ Lua ในโปรแกรม C ++
ฉันใช้LuaในโปรแกรมC ++เป็นห้องสมุด แต่ฉันอ่านว่าLuaJITเป็นการปฏิบัติที่ดีกว่า มันเป็นไปได้ไหมที่จะแทนที่ด้วยLuaJITด้วยการเปลี่ยนแปลงเพียงเล็กน้อย? อย่างไร?
9 lua 

3
จะพัฒนาเกมเอนทิตีแบบต่อเนื่องในเกมเทิร์นเบสได้อย่างไร?
จนถึงขณะนี้ระบบส่วนประกอบเอนทิตีที่ฉันใช้เคยทำงานเหมือนอาร์ทิมิสของ Java: ข้อมูลทั้งหมดในส่วนประกอบ ระบบอิสระไร้สัญชาติ (อย่างน้อยถึงระดับที่พวกเขาไม่ต้องการอินพุตในการกำหนดค่าเริ่มต้น) วนซ้ำแต่ละเอนทิตีที่มีเฉพาะส่วนประกอบที่ระบบเฉพาะสนใจ ทุกระบบประมวลผลเอนทิตีของพวกเขาหนึ่งขีดแล้วทุกอย่างก็เริ่มต้นขึ้น ตอนนี้ฉันพยายามที่จะใช้สิ่งนี้กับเกมเทิร์นเบสเป็นครั้งแรกโดยมีเหตุการณ์และคำตอบมากมายที่ต้องเกิดขึ้นตามลำดับที่สัมพันธ์กับแต่ละคนก่อนที่เกมจะสามารถเดินหน้าต่อไปได้ ตัวอย่าง: ผู้เล่น A ได้รับความเสียหายจากดาบ ในการตอบสนองต่อสิ่งนี้เกราะของ A จะเข้ามาและลดความเสียหายที่ได้รับ ความเร็วในการเคลื่อนที่ของ A นั้นลดลงด้วยเช่นกันเนื่องจากความอ่อนแอ ความเสียหายที่ได้รับนั้นเป็นสิ่งที่ทำให้เกิดปฏิสัมพันธ์ทั้งหมด เกราะจะต้องคำนวณและนำไปใช้กับความเสียหายที่เข้ามาก่อนที่ความเสียหายจะถูกนำไปใช้กับผู้เล่น การลดความเร็วในการเคลื่อนที่ไม่สามารถใช้กับยูนิตได้จนกว่าจะได้รับความเสียหายจริง ๆ แล้วเนื่องจากมันขึ้นอยู่กับจำนวนดาเมจสุดท้าย เหตุการณ์ยังสามารถทริกเกอร์เหตุการณ์อื่น ๆ การลดความเสียหายของดาบโดยใช้เกราะสามารถทำให้ดาบแตก (ต้องเกิดขึ้นก่อนที่การลดความเสียหายจะเสร็จสิ้น) ซึ่งจะทำให้เกิดเหตุการณ์เพิ่มเติมในการตอบสนองต่อมัน สรุปทั้งหมดนี้ดูเหมือนจะนำไปสู่ปัญหาเล็กน้อย: วงจรการประมวลผลที่สูญเปล่ามากมาย: ระบบส่วนใหญ่ (บันทึกสำหรับสิ่งต่าง ๆ ที่ทำงานอยู่ตลอดเวลาเช่นการเรนเดอร์) ก็ไม่มีอะไรคุ้มค่าที่จะทำเมื่อมันไม่ใช่ "การเลี้ยว" ในการทำงานและใช้เวลาส่วนใหญ่รอเกม สถานะการทำงานที่ถูกต้อง litters นี้ทุกระบบดังกล่าวด้วยการตรวจสอบที่มีการเติบโตในขนาดที่รัฐเพิ่มเติมจะถูกเพิ่มเข้าไปในเกม ในการตรวจสอบว่าระบบสามารถประมวลผลเอนทิตีที่มีอยู่ในเกมได้หรือไม่พวกเขาต้องการวิธีในการตรวจสอบสถานะเอนทิตี / ระบบอื่น ๆ ที่ไม่เกี่ยวข้อง (ระบบที่รับผิดชอบในการจัดการความเสียหายจำเป็นต้องรู้ว่ามีการใช้เกราะหรือไม่) นี่อาจทำให้ระบบยุ่งเหยิงด้วยความรับผิดชอบหลายอย่างหรือสร้างความต้องการระบบเพิ่มเติมโดยไม่มีจุดประสงค์อื่น แต่เพื่อสแกนคอลเล็กชั่นเอนทิตีหลังจากแต่ละรอบการประมวลผลและสื่อสารกับกลุ่มผู้ฟังโดยบอกพวกเขาเมื่อมันไม่เป็นไร จุดสองจุดด้านบนสมมติว่าระบบทำงานบนเอนทิตีชุดเดียวกันซึ่งจบลงด้วยการเปลี่ยนสถานะโดยใช้แฟล็กในส่วนประกอบ อีกวิธีในการแก้ปัญหาก็คือการเพิ่ม …

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