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

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

4
ระดับที่เหมาะสมของความละเอียดสำหรับสถาปัตยกรรมที่ใช้ส่วนประกอบคืออะไร?
ฉันทำงานกับเกมที่มีสถาปัตยกรรมเป็นส่วนประกอบ Entityเป็นเจ้าของชุดของComponentกรณีแต่ละที่มีชุดของSlotกรณีที่ในการจัดเก็บส่งและรับค่า ฟังก์ชั่นจากโรงงานเช่นPlayerผลิตเอนทิตีด้วยส่วนประกอบที่จำเป็นและการเชื่อมต่อสล็อต ฉันกำลังพยายามหาระดับที่ดีที่สุดของส่วนประกอบสำหรับส่วนประกอบ ยกตัวอย่างเช่นในขณะนี้Position, VelocityและAccelerationมีทุกองค์ประกอบที่แยกจากกันเชื่อมต่อในชุด VelocityและAccelerationได้อย่างง่ายดายเขียนใหม่เข้าไปในเครื่องแบบDeltaส่วนประกอบหรือPosition, VelocityและAccelerationสามารถนำมารวมกันควบคู่ไปกับชิ้นส่วนเช่นFrictionและGravityเป็นเสาหินPhysicsส่วนประกอบ องค์ประกอบควรมีความรับผิดชอบที่น้อยที่สุดเท่าที่จะเป็นไปได้ (ในราคาที่มากจากการเชื่อมต่อระหว่างกัน) หรือส่วนประกอบที่เกี่ยวข้องควรรวมเข้าด้วยกันเป็นเสาหิน (ในราคาที่ยืดหยุ่น) ฉันเอนไปหาอดีต แต่ฉันสามารถใช้ความคิดเห็นที่สอง

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

5
จะออกแบบ AssetManager ได้อย่างไร
อะไรคือวิธีที่ดีที่สุดในการออกแบบ AssestManager ที่จะอ้างอิงถึงกราฟิกเสียง ฯลฯ ของเกม ควรเก็บสินทรัพย์เหล่านี้ไว้ในแผนที่คู่คีย์ / ค่าหรือไม่ เช่นฉันจะขอเนื้อหา "พื้นหลัง" และแผนที่ส่งคืนบิตแมปที่เกี่ยวข้องหรือไม่ มีวิธีที่ดีกว่านี้อีกไหม? โดยเฉพาะฉันเขียนเกม Android / Java แต่คำตอบได้ทั่วไป

4
“ The Game Object” - และการออกแบบส่วนประกอบ
ฉันทำงานโครงการอดิเรกบางอย่างเมื่อ 3-4 ปีที่แล้ว เกม 2D และ 3D ที่เรียบง่าย แต่เมื่อเร็ว ๆ นี้ฉันได้เริ่มโครงการที่ใหญ่กว่า Soo ในช่วงสองสามเดือนที่ผ่านมาฉันพยายามออกแบบคลาสเกมวัตถุซึ่งอาจเป็นฐานของวัตถุเกมทั้งหมดของฉัน ดังนั้นหลังจากการทดสอบแบบลองและแบบตายตัวฉันจึงหันไปหา Google ซึ่งชี้ให้ฉันเห็นอย่างรวดเร็วใน GDC PDF และ PowerPoint บางส่วน และตอนนี้ฉันกำลังพยายามเข้าใจวัตถุของเกมที่มีส่วนประกอบ ฉันเข้าใจว่าเอ็นจิ้นสร้างวัตถุเกมแล้วแนบส่วนประกอบต่าง ๆ ที่จัดการสิ่งต่าง ๆ เช่นสุขภาพฟิสิกส์เครือข่ายและสิ่งที่คุณทำ แต่สิ่งที่ฉันไม่เข้าใจก็คือองค์ประกอบ X รู้ได้อย่างไรว่า Y ได้เปลี่ยนสถานะของวัตถุ PhysicsComponent รู้ได้อย่างไรว่าผู้เล่นยังมีชีวิตอยู่เพราะสุขภาพถูกควบคุมโดย HealthComponent .. ? และ HealthComponent เล่น "แอนิเมชั่นผู้เล่นที่เสียชีวิต" ได้อย่างไร? ฉันอยู่ภายใต้การแสดงผลว่าเป็นอะไรเช่นนี้ (ใน HealthComponent): if(Health < 0) { AnimationComponent.PlayAnimation("played-died-animation") …

3
อะไรทำให้ ALT-TAB เป็น 'น่ารำคาญ' / ช้า / ผิดพลาด?
นี่เป็นคำถามปลายเปิดมากกว่า แต่ฉันหวังว่าจะได้รับข้อมูลเชิงลึกที่ดีเกี่ยวกับวิธีหลีกเลี่ยงปัญหา เมื่อเล่นเกมบน Windows ฉันอาจต้องการ ALT-TAB เกมบางเกมไม่มีปัญหาอื่น ๆ ไม่ใช่เรื่องง่าย: พวกเขาอาจใช้เวลา AGES เพื่อสลับออกและกลับมาบางเกมมีแนวโน้มที่จะกระแทกหรือพฤติกรรมแปลก ๆ เช่นการบิดเบือนกราฟิกหรือเสียงพูดติดอ่าง ฉันแค่สงสัยว่าอะไรทำให้เกิดพฤติกรรมนี้ นี่เป็น DirectX หรือ OpenGL มากกว่านี้ใช่ไหม มันเกิดจากเกมที่ 'ฉลาด' และแคช / เช็ดแคชทุกครั้งที่เปลี่ยนการตั้งค่าหน้าจอหรือไม่? (ฉันคิดว่าพวกเขาจะได้รับสัญญาณบางอย่างเมื่อฉัน ALT-TAB?) ฉันไม่มีปัญหาใด ๆ ของฉันเอง แต่ฉันอยากรู้ว่าต้องหลีกเลี่ยงอะไรและเคล็ดลับ 'ฉลาด' ใดที่อาจทำให้เกิดประสบการณ์ลูกค้าที่น่ากลัวประเภทนี้

4
จะออกแบบซอฟต์แวร์ของเกมอย่างไรให้ง่ายต่อการทดสอบหน่วย?
เป็นจริงหรือไม่ที่จะใช้กรอบการทดสอบเช่น JUnit ในสถานการณ์การพัฒนาเกม ข้อควรพิจารณาในการออกแบบประเภทใดที่คุณสามารถติดตามเพื่อทำให้เกมของคุณทดสอบได้มากขึ้น? ส่วนใดของเกมที่สามารถ / ควรทดสอบและส่วนใดที่ควร / ต้องถูกทดสอบให้เป็นมนุษย์? ตัวอย่างเช่นหากวนเกมถูกห่อหุ้มในฟังก์ชั่นเดียวดูเหมือนว่าเป็นการยากที่จะทดสอบ ฉันต้องการ refactor ออกจากฟังก์ชั่น "update" ที่ต้องใช้เวลาเดลต้าและเลื่อนไปข้างหน้าตรรกะของเกม; วิธีนี้ช่วยให้ลูกเล่นที่น่าสนใจบางอย่างเช่นความสามารถในการทำให้เกมช้าลงโดยการให้อาหารมันปลอมเวลา deltas ช้าลง

3
วิธีการ wire machine state finite ให้เป็นสถาปัตยกรรมที่อิงองค์ประกอบ [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา เครื่องรัฐดูเหมือนจะก่อให้เกิดการพึ่งพาที่เป็นอันตรายในสถาปัตยกรรมที่ใช้ส่วนประกอบ มีการจัดการการสื่อสารระหว่างเครื่องรัฐและส่วนประกอบที่ดำเนินพฤติกรรมที่เกี่ยวข้องกับรัฐอย่างไรโดยเฉพาะ ฉันอยู่ที่ไหน: ฉันใหม่กับสถาปัตยกรรมที่อิงองค์ประกอบ ฉันกำลังสร้างเกมต่อสู้แม้ว่าฉันไม่คิดว่ามันจะสำคัญ ฉันนึกภาพเครื่องรัฐของฉันถูกใช้เพื่อสลับสถานะเช่น "หมอบคลาน", "ห้าว", "ปิดกั้น" ฯลฯ ฉันพบว่าเทคนิคการจัดการสถานะนี้เป็นระบบที่เป็นธรรมชาติที่สุดสำหรับสถาปัตยกรรมที่อิงองค์ประกอบ แต่มันขัดแย้งกับเทคนิคที่ฉันได้อ่าน: ระบบส่วนประกอบของวัตถุเกมแบบไดนามิกสำหรับตัวละครพฤติกรรมที่ไม่แน่นอนมันแสดงให้เห็นว่า ตัวเองโดยการตรวจสอบเงื่อนไขการเปิดใช้งานอย่างต่อเนื่อง ฉันคิดว่าการกระทำเช่น "วิ่ง" หรือ "เดิน" เข้าท่าเป็นเรื่องของรัฐซึ่งไม่เห็นด้วยกับคำตอบที่ยอมรับได้ที่นี่: /gamedev//a/7934 ฉันพบสิ่งนี้มีประโยชน์ แต่ไม่ชัดเจน: จะใช้พฤติกรรมอย่างไรในสถาปัตยกรรมเกมที่อิงส่วนประกอบได้อย่างไร มันแสดงให้เห็นว่ามีองค์ประกอบแยกต่างหากที่มีอะไรนอกจากเครื่องรัฐ แต่สิ่งนี้จำเป็นต้องมีการเชื่อมต่อระหว่างส่วนประกอบเครื่องรัฐกับส่วนประกอบอื่นเกือบทั้งหมด ฉันไม่เข้าใจวิธีจัดการข้อต่อนี้ นี่คือการเดาบางอย่าง: A. ส่วนประกอบขึ้นอยู่กับเครื่องของรัฐ: ส่วนประกอบได้รับการอ้างอิงถึงส่วนประกอบของเครื่องของgetState()รัฐซึ่งจะส่งกลับค่าคงที่การแจงนับ คอมโพเนนต์อัปเดตตัวเองเป็นประจำและตรวจสอบสิ่งนี้ตามความจำเป็น B. สถานะของเครื่องจักรขึ้นอยู่กับส่วนประกอบ: ส่วนประกอบ สถานะของเครื่องได้รับการอ้างอิงถึงส่วนประกอบทั้งหมดที่มีการตรวจสอบ มันสอบถามgetState()วิธีการของพวกเขาเพื่อดูว่าพวกเขาอยู่ที่ไหน C. สิ่งที่เป็นนามธรรมระหว่างพวกเขา ใช้ฮับเหตุการณ์? รูปแบบคำสั่ง? D. แยกสถานะของวัตถุที่ ใช้เป็นส่วนประกอบของรูปแบบสถานะอ้างอิง …

4
จะใช้โลกทดสอบที่ไม่ต้องรีบูตได้อย่างไร
กำลังมองหาแนวคิดในการทำสิ่งต่อไปนี้: ฉันต้องการเขียน "โลก" อย่างง่ายใน Java หนึ่งที่ฉันสามารถเริ่มต้นแล้วเพิ่มวัตถุใหม่ในภายหลังในภายหลังเพื่อจำลอง / สังเกตพฤติกรรมที่แตกต่างระหว่างวัตถุที่มีอยู่ แผนการนั้นคือการเขียนโค้ดของวัตถุที่ใหม่กว่าหลังจากดูวัตถุเก่าในขณะนั้นจากนั้นโหลด / วางวัตถุเหล่านั้นในโลกที่มีอยู่ ปัญหาคือฉันไม่ต้องการหยุดหรือเริ่มโลกใหม่เมื่อเริ่มต้นฉันต้องการให้ทำงานสองสามสัปดาห์ แต่ฉันต้องการความสามารถในการวางวัตถุและทำซ้ำ / เขียนใหม่ / ลบ / สร้าง / กลายพันธุ์ เมื่อเวลาผ่านไปโดยไม่จำเป็นต้องรีบูต โลกอาจเป็นเรื่องง่ายเหมือนอาร์เรย์ 100 x 100 ของตำแหน่ง X / Y พร้อม GUI แบบเรียงต่อกันที่เป็นไปได้ที่จะเป็นตัวแทนของโลก ฉันรู้ว่าฉันต้องการกระบวนการ ticktimer เพื่อติดตามวัตถุและให้โอกาสในการกระทำ ตัวอย่าง: ฉันโค้ด World.java ในวันจันทร์และปล่อยให้มันทำงานอยู่ จากนั้นในวันอังคารที่ฉันเขียนคลาสใหม่ที่เรียกว่า Rock.java (ที่ไม่ย้าย) จากนั้นฉันก็โหลด / วางมัน (อย่างใด?) ในโลกที่กำลังดำเนินอยู่นี้ (ซึ่งมันจะวางสุ่มลงไปในแถวลำดับโลกและไม่ย้าย) จากนั้นในวันพุธที่ฉันสร้างคลาสใหม่ที่เรียกว่า …

6
มีการออกแบบอะไรบ้างสำหรับระบบเอนทิตีที่อิงส่วนประกอบที่ใช้งานง่าย แต่ยังยืดหยุ่นได้
ฉันได้รับความสนใจในระบบเอนทิตีที่อิงองค์ประกอบอยู่พักหนึ่งแล้วอ่านบทความที่นับไม่ถ้วนในเกม (เกม InsomiacมาตรฐานEvolve Your Hierarchy , T-Machine , Chronoclast ... เพื่อชื่อไม่กี่คน) พวกเขาดูเหมือนจะมีโครงสร้างด้านนอกของสิ่งที่ชอบ: Entity e = Entity.Create(); e.AddComponent(RenderComponent, ...); //do lots of stuff e.GetComponent<PositionComponent>(...).SetPos(4, 5, 6); และถ้าคุณนำความคิดของข้อมูลที่ใช้ร่วมกัน (นี่คือการออกแบบที่ดีที่สุดที่ฉันเคยเห็นมาในแง่ของการไม่ทำซ้ำข้อมูลทุกที่) e.GetProperty<string>("Name").Value = "blah"; ใช่มันมีประสิทธิภาพมาก อย่างไรก็ตามการอ่านหรือเขียนนั้นไม่ใช่วิธีที่ง่ายที่สุด มันรู้สึกว่าเป็น clunky และทำงานกับคุณ โดยส่วนตัวฉันต้องการทำสิ่งที่ชอบ: e.SetPosition(4, 5, 6); e.Name = "Blah"; แม้ว่าแน่นอนว่าหนทางเดียวที่จะได้รับการออกแบบนั้นกลับมาอยู่ในเอนทิตี -> NPC-> ศัตรู -> FlyingEnemy-> FlyingEnemy- ด้วย …

6
การทดสอบพัฒนาขับเคลื่อนมีผลต่อการพัฒนาเกมหรือไม่?
เมื่อได้รับการรับรอง Scrum ฉันมักจะชอบวิธีการ Agile ในขณะที่พัฒนาระบบและแม้แต่ใช้ผืนผ้าใบบางส่วนจากเฟรมเวิร์ก Scrum เพื่อจัดการงานประจำวันของฉัน นอกจากนี้ฉันสงสัยว่า TDD เป็นตัวเลือกในการพัฒนาเกมหรือไม่ถ้าเป็นจริง? ถ้าฉันเชื่อคำถาม GD นี้ TDD ไม่ค่อยได้ใช้ในการพัฒนาเกม เหตุใด MVC & TDD จึงไม่ได้ใช้งานสถาปัตยกรรมเกมมากขึ้น? ฉันมาจากการเขียนโปรแกรมอุตสาหกรรมที่โครงการขนาดใหญ่ที่มีงบประมาณขนาดใหญ่จำเป็นต้องทำงานอย่างไม่มีที่ติเพราะอาจส่งผลให้เกิดสถานการณ์ที่เลวร้ายหากรหัสไม่ได้ทดสอบอย่างละเอียดทั้งภายในและภายนอก นอกจากนี้กฎต่อการต่อสู้ของ Scrum ยังสนับสนุนให้มีการนัดพบที่กำหนดในขณะที่ทุกการกระทำในการต่อสู้ของ Scrum นั้นได้รับการบรรจุในกล่องเวลา! ดังนั้นฉันเห็นด้วยเมื่อในคำถามเชื่อมโยงข้างต้นพวกเขาบอกว่าจะหยุดพยายามสร้างระบบและเริ่มเขียนเกม มันค่อนข้างที่ Scrum พูดว่าพยายามอย่าสร้างระบบที่สมบูรณ์แบบก่อนอื่น: ทำให้มันทำงานได้ในตอนท้ายของ Sprint จากนั้นให้ปรับรหัสในขณะที่ทำงานใน Sprint ที่สองหากจำเป็น! ฉันเข้าใจว่าหากไม่ใช่ทุกแผนกที่รับผิดชอบการพัฒนาเกมใช้ Scrum การต่อสู้กลายเป็นสิ่งที่ไร้ประโยชน์ แต่ลองพิจารณาสักครู่ว่าทุกแผนกใช้ Scrum ... ฉันคิดว่า TDD จะดีในการเขียนโค้ดที่ไม่มีข้อบกพร่องถึงแม้ว่าคุณไม่ต้องการเขียนระบบ / เกมที่สมบูรณ์แบบ ดังนั้นคำถามของฉันมีดังต่อไปนี้: TDD มีศักยภาพในการพัฒนาเกมหรือไม่?

3
วิธีหลีกเลี่ยงการเขียนโค้ดอย่างหนักในเอ็นจิ้นเกม
คำถามของฉันไม่ใช่คำถามที่เข้ารหัส มันใช้กับการออกแบบเอ็นจิ้นเกมโดยทั่วไป คุณจะหลีกเลี่ยงการเข้ารหัสยากอย่างไร คำถามนี้ลึกกว่าที่คิดมาก สมมติว่าถ้าคุณต้องการรันเกมที่โหลดไฟล์ที่จำเป็นสำหรับการทำงานคุณจะหลีกเลี่ยงการพูดอะไรบางอย่างload specificfile.wadในรหัสเครื่องยนต์หรือไม่ นอกจากนี้เมื่อโหลดไฟล์คุณจะหลีกเลี่ยงการพูดได้load aspecificmap in specificfile.wadอย่างไร คำถามนี้ใช้กับการออกแบบเครื่องยนต์ทั้งหมดและเครื่องยนต์ควรมีการเข้ารหัสน้อยที่สุด อะไรคือวิธีที่ดีที่สุดในการบรรลุเป้าหมายนั้น?

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

3
เอ็นจิ้นเกมและการออกแบบที่ขับเคลื่อนด้วยข้อมูล
ฉันได้ยินเกี่ยวกับการออกแบบที่ขับเคลื่อนด้วยข้อมูลและได้ทำการค้นคว้าเกี่ยวกับมันมาระยะหนึ่งแล้ว ดังนั้นฉันได้อ่านหลายบทความเพื่อให้ได้แนวคิด หนึ่งในบทความคือData Driven Design ที่เขียนโดย Kyle Wilson. ตามที่เขาอธิบายดูเหมือนว่ารหัสแอปพลิเคชัน (เช่นรหัสสำหรับการควบคุมทรัพยากรเช่นหน่วยความจำเครือข่าย ... ) และรหัสเกมควรแยกจากกันและรหัสเกมตรรกะควรถูกขับเคลื่อนโดยแหล่งข้อมูลภายนอก ณ จุดนี้ฉันสามารถจินตนาการได้ว่าผู้พัฒนาจะเขียนตัวแก้ไขเกมซึ่งยอมรับข้อมูลภายนอกเกี่ยวกับวัตถุในเกม (เช่นข้อมูลตัวละครข้อมูลอาวุธข้อมูลแผนที่ ... ) การออกแบบสถานการณ์จะถูกเขียนสคริปต์โดยภาษาที่กำหนดเอง / เครื่องมือที่เขียนโดยโปรแกรมเมอร์เพื่อให้ผู้ออกแบบเกมสร้างปฏิสัมพันธ์ระหว่างในวัตถุในเกม ผู้ออกแบบเกมจะใช้ภาษาสคริปต์ที่มีอยู่ / กำหนดเองเพื่อเขียนสคริปต์สำหรับเกมหรือเครื่องมือลากแล้ววางเพื่อสร้างโลกของเกม ตัวอย่างของวิธีการใช้เครื่องมือที่ฉันคิดได้คือ World Editor ซึ่งโดยปกติจะบรรจุพร้อมกับเกมของ Bliizard อย่างไรก็ตามบทความอื่นต่อต้านการใช้ข้อมูลขับเคลื่อนการออกแบบ, การออกแบบกรณีกับข้อมูลขับเคลื่อน ผู้เขียนแนะนำว่าอย่าปล่อยให้การออกแบบเกมขับเคลื่อนโดยข้อมูลเพราะมันต้องใช้เวลามากกว่าในการพัฒนาเกมเนื่องจากผู้ออกแบบเกมมีภาระในการเขียนโปรแกรม แต่จะมีผู้เขียนโปรแกรมเกมเขียนโปรแกรมเกมอย่างอิสระจากแบบร่างและได้รับการตรวจสอบโดยผู้ออกแบบเกมหลังจากการเขียนโปรแกรมเกมเสร็จสิ้น เขาเรียกสิ่งนี้ว่าเป็นโปรแกรมเมอร์ สิ่งที่ฉันคิดว่าวิธีนี้คล้ายกับวิธีที่ฉันเคยทำ: ตรรกะของเกมเป็นแอปพลิเคชันตัวเองตามที่กล่าวถึงข้างต้นความคิดแอพพลิเคชั่นเป็นตัวแก้ไขเกมและเกมจริงได้รับการออกแบบตามเครื่องมือ สำหรับฉันแล้ววิธีแรกดูเหมือนจะสมเหตุสมผลมากกว่าเนื่องจากส่วนประกอบเกมสามารถนำกลับมาใช้ใหม่ได้หลายโครงการ ด้วยวิธีที่สองซึ่งตรงข้ามกับการออกแบบที่ขับเคลื่อนด้วยข้อมูลรหัสเกมเป็นของเกมนั้นเท่านั้น นี่คือเหตุผลที่ฉันคิดว่า Warcraft มีประเภทเกมมากมายเช่น Warcraft ดั้งเดิมและแผนที่ที่กำหนดเองต่าง ๆ และหนึ่งในเกมที่โด่งดังที่สุด: DOTA ซึ่งกำหนดแนวใหม่จริงๆ ด้วยเหตุนี้ฉันได้ยินคนเรียก World Editor …

4
วิธีการใช้พฤติกรรมในสถาปัตยกรรมเกมตามองค์ประกอบ?
ฉันเริ่มใช้ผู้เล่นและศัตรู AI ในเกม แต่ฉันสับสนเกี่ยวกับวิธีการนำสิ่งนี้ไปใช้ในสถาปัตยกรรมเกมตามส่วนประกอบได้ดีที่สุด ว่าฉันมีตัวละครของผู้เล่นดังต่อไปนี้ที่สามารถนิ่งวิ่งและแกว่งดาบ ผู้เล่นสามารถผ่านไปยังสถานะดาบสวิงจากทั้งที่อยู่กับที่และนิ่ง แต่จากนั้นจะต้องสวิงให้เสร็จสิ้นก่อนที่ผู้เล่นจะสามารถกลับมายืนหรือวิ่งต่อได้ ในระหว่างการแกว่งผู้เล่นไม่สามารถเดินไปรอบ ๆ อย่างที่ฉันเห็นฉันมีสองวิธีดำเนินการ: สร้างส่วนประกอบ AI เดียวที่มีลอจิกของผู้เล่นทั้งหมด (แยกออกจากองค์ประกอบจริงหรือฝังเป็น PlayerAIComponent) ฉันสามารถบังคับใช้ข้อ จำกัด ของรัฐได้อย่างง่ายดายโดยไม่ต้องสร้างการเชื่อมต่อระหว่างส่วนประกอบแต่ละอย่างที่ประกอบกันเป็นเอนทิตีของผู้เล่น อย่างไรก็ตามส่วนประกอบ AI ไม่สามารถแตกหักได้ ตัวอย่างเช่นถ้าฉันมีศัตรูที่สามารถยืนและเดินไปมาหรือเดินไปรอบ ๆ และแกว่งดาบเป็นครั้งคราวฉันต้องสร้างส่วนประกอบ AI ใหม่ แยกพฤติกรรมออกเป็นส่วน ๆ โดยระบุแต่ละสถานะ ฉันได้รับ StandComponent, WalkComponent และ SwingComponent ในการบังคับใช้กฎการเปลี่ยนแปลงฉันต้องจับคู่แต่ละองค์ประกอบ SwingComponent ต้องปิดการใช้งาน StandComponent และ WalkComponent ในช่วงระยะเวลาของการสวิง เมื่อฉันมีศัตรูที่ยืนอยู่เฉยๆแกว่งดาบเป็นครั้งคราวฉันต้องแน่ใจว่า SwingComponent นั้นปิดการใช้งาน WalkComponent หากมีอยู่ แม้ว่าสิ่งนี้จะช่วยให้ส่วนประกอบผสมและการจับคู่ที่ดีขึ้น แต่ก็สามารถนำไปสู่ฝันร้ายในการบำรุงรักษาได้เมื่อมีการเพิ่มการพึ่งพาแต่ละครั้งส่วนประกอบที่มีอยู่จะต้องได้รับการอัปเดตเพื่อให้เล่นได้ดีขึ้นกับข้อกำหนดใหม่ สถานการณ์ในอุดมคติคือผู้ออกแบบสามารถสร้างศัตรู / …

2
การนำกล้อง / วิวพอร์ตไปใช้กับเกม 2D
วิธีการที่ใช้ประโยชน์ได้จริงในการนำกล้อง / วิวพอร์ตไปใช้กับเกม 2D คืออะไร? ฉันได้อ่านแล้วฉันควรจะเก็บตำแหน่งของวัตถุในโลกแทนตำแหน่งที่สัมพันธ์กับหน้าจอหรือไม่? สถานการณ์ปัจจุบัน: ฉันใช้เกม 2D ง่าย ๆ ที่ฉันโหลดวัตถุและระดับจากไฟล์ XML ปัจจุบันไฟล์ XML ระดับมีลักษณะดังนี้: <map> <tile obj="ground" x="0" y="555" /> <tile obj="ground" x="16" y="555" /> <tile obj="ground" x="32" y="555" /> ... </map> วัตถุทั้งหมดมี 2d-vector "position" ที่เก็บตำแหน่งปัจจุบันของพวกเขาบนหน้าจอ สิ่งที่ฉันต้องการให้เป็น: ในรูปภาพ: กล้องมีทั้งแบบ 800x600 หรือ 640x480 บล็อกและสไปรต์คือ 16x16 พิกเซล ขนาดโลกอาจแตกต่างกันไป พิกัดที่ควรจะเป็นมาตรฐานเมื่อเทียบกับโลกไม่ใช่ที่หน้าจอ? ตำแหน่งวิวพอร์ตที่สัมพันธ์กับ …
20 c++  2d  architecture  camera 

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