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

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

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

3
การสร้างเอนทิตีเป็นการรวมตัว
ฉันเพิ่งถามเกี่ยวกับวิธีแยกเอนทิตีออกจากพฤติกรรมและคำตอบหลักที่เชื่อมโยงกับบทความนี้: http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/ แนวคิดขั้นสุดยอดที่เขียนเกี่ยวกับที่นี่คือ: วัตถุประสงค์ในการรวมบริสุทธิ์ ฉันสงสัยว่าฉันจะทำอย่างไรเพื่อสร้างเอนทิตีเกมเป็นการรวมที่บริสุทธิ์โดยใช้ C # ฉันยังไม่เข้าใจแนวคิดเกี่ยวกับวิธีการทำงานนี้ (บางทีเอนทิตีเป็นอาร์เรย์ของวัตถุที่ใช้อินเทอร์เฟซหรือชนิดฐานที่แน่นอน?) ความคิดปัจจุบันของฉันยังคงเกี่ยวข้องกับการมีคลาสที่เป็นรูปธรรมสำหรับแต่ละประเภทเอนทิตีที่ใช้อินเทอร์เฟซที่เกี่ยวข้อง (IMoveable, ICollectable, ISpeakable และอื่น ๆ ) ฉันจะดำเนินการเกี่ยวกับการสร้างเอนทิตี้อย่างเดียวเป็นการรวมตัวโดยไม่ต้องมีรูปธรรมใด ๆ สำหรับเอนทิตีนั้น

11
วิธีการสร้างแบบจำลอง“ ใช้” หลายอย่าง (เช่นอาวุธ) สำหรับสินค้าคงคลังวัตถุ / รายการ (เช่นคาตานะ) ภายในฐานข้อมูลเชิงสัมพันธ์
ดังนั้นฉันจึงพยายามขยายการใช้รายการต่างๆที่www.ninjawars.netและฉันไม่แน่ใจว่าจะนำเสนอสิ่งเหล่านี้ได้อย่างยืดหยุ่นในฐานข้อมูลเชิงสัมพันธ์ที่เราใช้ ฉันอาจเห่าต้นไม้ที่ไม่ถูกต้องดังนั้นอย่าลังเลที่จะให้คำแนะนำในทิศทางอื่น แต่ขณะนี้ฉันคิดว่าแต่ละรายการควรมี "แท็ก" ที่เกี่ยวข้อง ตัวอย่างเช่น Katana ปัจจุบันเป็นแถวในฐานข้อมูล "items" เพื่อให้เป็นอาวุธและสิ่งที่สามารถเก็บได้ฉันคิดว่าฉันจะมีฐานข้อมูล "ลักษณะ" และตาราง item_traits ที่เชื่อมโยงระหว่างพวกเขา // Objects and their basic data item_id | item 1 | Naginata // Things that objects can do trait_id | trait 1 | weapon 2 | holdable // How those objects do those things, e.g. powerfully, …

2
เครื่องมือท่อส่งเนื้อหาควรจะฝังตัวอยู่ในเครื่องยนต์หรือไม่?
เอ็นจิ้นเกมควรมีขนาดเล็กเพียงใด ไปป์ไลน์เนื้อหาควรฝังอยู่ในเอ็นจิ้นเท่าใด บางกรณีใช้งานที่ super engine อาจมีประโยชน์: เมื่อโหลดเนื้อหาของผู้ใช้ผู้ใช้ไม่จำเป็นต้องทำพื้นผิวของตัวเองเครื่องยนต์จะทำมันในเวลาโหลด สคริปต์ร้องขอแบบอักษรที่มีขนาดใหญ่กว่าที่สร้างไว้ล่วงหน้าเครื่องยนต์สามารถแยกโฆษณาไฟล์ ttf เพื่อสร้าง atlas ใหม่ รัศมีปลอม ไม่มีสิ่งนี้แน่นอน สิ่งนี้ต้องใช้เครื่องมือไปป์ไลน์เนื้อหาของคุณเพื่อเขียนใน C ++ ไลบรารีสนับสนุนที่คุณใช้ในไพพ์ไลน์จำเป็นต้องรวบรวมเพื่อใช้งานบนอุปกรณ์ มันต้องการการสร้างเนื้อหาที่จะไม่บั๊ก และโดยทั่วไปแล้วทำให้เครื่องยนต์ของคุณใหญ่ขึ้นและเทอะทะ ข้อดีและข้อเสียอื่น ๆ คืออะไร? ข้อดีมีมากกว่าข้อเสียหรือไม่ คำถามเฉพาะ: เครื่องยนต์ควรโหลดรูปแบบภาพต่างๆได้หรือไม่? ตัวโหลด TGA เท่านั้นนั้นค่อนข้างง่ายต่อการเขียนด้วยมือ รูปแบบเสียงเป็นอย่างไร เป็นไปได้หรือไม่ที่จะรองรับการโหลดไฟล์ wav เท่านั้น? ไฟล์เพลงโดยรอบมักมีขนาดใหญ่มาก เครื่องยนต์ควรมีความสามารถในการแยกวิเคราะห์ TTF และการสร้างแผนที่แบบไดนามิกหรือไม่? บรรจุพื้นผิว

6
เครือข่าย Pong Clone
ฉันมีพื้นฐานของซ็อกเก็ต TCP การสื่อสาร UDP และอื่น ๆ แต่ไม่สามารถหาวิธีใช้สิ่งเหล่านี้กับสภาพแวดล้อมเกมแบบเรียลไทม์ได้ ฉันมีโป่งโคลนที่มีผู้เล่น 4 คนและจำเป็นต้องซิงโครไนซ์ตำแหน่งการพายระหว่างไคลเอนต์ทั้งสามกับเซิร์ฟเวอร์ (เซิร์ฟเวอร์คือผู้เล่นคนที่สี่) ขณะนี้ฉันใช้ UDP เพื่อส่งการอัปเดตตามเวลาจริง (การพายเรือ) และ TCP สำหรับการตั้งค่าล็อบบี้เกมเป็นต้น เป็นสิ่งที่ดีที่จะส่งสแปมปริมาณการใช้งาน UDP จำนวนมากหรือไม่ ฉันควรตรวจสอบ DCCP เพื่อดูว่ามีความแออัดหรือไม่ หรือนี่ไม่ใช่ปัญหาของโครงการขนาดเล็กเช่นนี้ใช่หรือไม่ เมื่อใดควรทำการซิงโครไนซ์ข้อความระหว่างไคลเอนต์ / เซิร์ฟเวอร์ ปัจจุบันเซิร์ฟเวอร์กำลังทำการส่งสแปมแพ็กเก็ต UDP ด้วยสถานะเกมปัจจุบันอย่างรวดเร็วที่สุดเท่าที่จะทำได้และลูกค้ากำลังส่งสแปมออกจากตำแหน่งพายกลับไปยังเซิร์ฟเวอร์ให้เร็วที่สุดเท่าที่จะทำได้ นี่เป็นวิธีที่ดีที่สุดที่จะทำ? มีความล่าช้าบ้างไหมที่ฉันควรเพิ่มดังนั้นข้อความจะถูกส่งหนึ่งครั้งในทุกๆ X มิลลิวินาทีหรือฉันควรจะส่งข้อความเมื่อเกิดเหตุการณ์เท่านั้น (เช่นความเร็วพายเปลี่ยนไปเนื่องจากผู้ใช้ป้อน) จะเป็นการดีกว่าหรือไม่ที่จะทำให้ลูกค้าสื่อสารตำแหน่งพายเรือของพวกเขากับเพื่อนคนอื่น ๆ ฉันถามคำถามเหล่านี้ในบริบทของโป่ง แต่ก็สนใจว่าจะเอาชนะปัญหาเหล่านี้ได้อย่างไรในเกมอื่นหรือแก้ไขปัญหาทั่วไป

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

2
วิธีการใช้ปฏิสัมพันธ์ระหว่างชิ้นส่วนเครื่องยนต์?
ฉันต้องการถามคำถามเกี่ยวกับวิธีการแลกเปลี่ยนข้อมูลระหว่างชิ้นส่วนกลไกเกม เครื่องยนต์ถูกแยกออกเป็นสี่ส่วน: ลอจิก, ข้อมูล, UI, กราฟิก ในตอนแรกฉันทำการแลกเปลี่ยนนี้ผ่านธง ตัวอย่างเช่นถ้าวัตถุใหม่จะถูกเพิ่มในข้อมูลธงในชั้นเรียนของวัตถุจะถูกกำหนดให้เป็นisNew trueและหลังจากนั้นส่วนกราฟิกของเครื่องยนต์จะตรวจสอบธงนี้และจะเพิ่มวัตถุลงในโลกของเกม แม้ว่าด้วยวิธีนี้ฉันต้องเขียนโค้ดมากเพื่อประมวลผลค่าสถานะของวัตถุแต่ละชนิด ฉันคิดว่าจะใช้ระบบเหตุการณ์บางอย่าง แต่ฉันไม่มีประสบการณ์เพียงพอที่จะรู้ว่านี่จะเป็นทางออกที่ถูกต้องหรือไม่ ระบบเหตุการณ์เป็นแนวทางที่เหมาะสมหรือฉันควรใช้อย่างอื่นหรือไม่ ฉันใช้ Ogre เป็นเอ็นจิ้นกราฟิคถ้ามันสำคัญ
10 c++  architecture 

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

5
ทำไมฉันไม่สามารถใช้โอเปอเรเตอร์ '> =' กับ Vector3s ได้
ฉันพยายามที่จะได้รับรูปสี่เหลี่ยมผืนผ้าย้ายไปมาระหว่างสองตำแหน่งที่ผมพูดถึงและ_positionA ทั้งสองประเภท_positionB Vector3สี่เหลี่ยมผืนผ้าเคลื่อนไหวได้ดี อย่างไรก็ตามเมื่อมันมาถึง_positionBมันจะไม่เคลื่อนที่ในทิศทางตรงกันข้ามเหมือนอย่างที่ควร ฉันกลับไปที่โค้ดเพื่อดู ฉันมาถึงข้อสรุปว่าเป็นวัตถุย้ายที่ifงบในรหัสพลาดเฟรมซึ่งในตำแหน่ง rects _positionBเท่ากับ ฉันตัดสินใจที่จะปรับเปลี่ยนรหัสไปในทิศทางที่ตรงกันข้ามถ้าตำแหน่ง rects คือมากกว่าหรือเท่ากับ _positionBรหัสของฉันไม่ยาวเกินไปดังนั้นฉันจะแสดงด้านล่าง: using UnityEngine; using System.Collections; public class Rectangle : MonoBehaviour { private Vector3 _positionA = new Vector3(-0.97f, -4.28f); //Start position private Vector3 _positionB = new Vector3(11.87f, -4.28f); //End position private Transform _rect_tfm; private bool _atPosA = false, _atPosB = …
9 unity  c#  vector  mathematics  vector  matrix  unity  c#  transformation  java  3d  terrain-rendering  shading  ios  opengl-es  opengl  rendering  optimization  python  scripting  minecraft-modding  modding  pc  3d-meshes  mesh  culling  point-cloud  networking  interpolation  mathematics  game-design  ai  game-mechanics  animation  unreal-4  skeletal-animation  3dsmax  unity  c#  3d  opengl  c++  textures  unity  ide  cocos2d  cocos2d-x-js  unity  c#  mono  il2cpp  c++  game-loop  timer  linux  flash  actionscript-3  java  glsl  c++  vector  entity-component  c++  directx11  windows  visual-studio  libgdx  mouse  unity  c#  architecture  storage  unity  c#  rotation  coordinates  quaternion  vrpn  movement  vector  unreal-4  unity  shaders  unity  gui  text  bug  shooter  3d  animation  rendering  voxels  c++  mmo  multithreading  linux  textures  procedural-generation  terrain-rendering  multiplayer  mmo  game-state  java  android  libgdx  opengl  procedural-generation  unity  gui  3d  animation  tools  geometry-shader  mobile  advertisements  unity  c#  animation  scripting  unity  animation  unityscript  coroutines  unity  shaders  lighting  camera 

3
ตัวแทน AI จะเข้าถึงข้อมูลเกี่ยวกับสภาพแวดล้อมของพวกเขาได้อย่างไร
นี่อาจเป็นคำถามที่ไม่สำคัญ แต่ฉันมีปัญหาในการเข้าใจสิ่งนี้ จะขอบคุณมากสำหรับความช่วยเหลือของคุณ ในการพัฒนาเกมโดยใช้การออกแบบเชิงวัตถุฉันต้องการเข้าใจว่าตัวแทน AI เข้าถึงข้อมูลที่พวกเขาต้องการจากโลกของเกมเพื่อที่จะดำเนินการได้อย่างไร ดังที่เราทุกคนรู้ว่าในเกมตัวแทน AI มักจะต้อง 'รับรู้สภาพแวดล้อม' และปฏิบัติตามสิ่งที่เกิดขึ้นรอบตัวพวกเขา ตัวอย่างเช่นตัวแทนอาจถูกโปรแกรมให้ไล่ล่าผู้เล่นหากเขา / เธอเข้าใกล้มากพอหลีกเลี่ยงสิ่งกีดขวางในขณะเคลื่อนที่ (โดยใช้พฤติกรรมการหลบหลีกการหมุน) ปัญหาของฉันคือฉันไม่แน่ใจว่าจะทำอย่างไร ตัวแทน AI จะเข้าถึงข้อมูลที่ต้องการเกี่ยวกับโลกของเกมได้อย่างไร แนวทางหนึ่งที่เป็นไปได้คือเอเจนต์ร้องขอข้อมูลที่ต้องการจากโลกของเกมโดยตรง มีคลาสที่เรียกว่า GameWorld มันจัดการตรรกะของเกมที่สำคัญ (วนรอบเกมการตรวจจับการชน ฯลฯ ) และยังมีการอ้างอิงถึงเอนทิตีทั้งหมดในเกม ฉันสามารถทำให้คลาสนี้เป็นซิงเกิล เมื่อตัวแทนต้องการข้อมูลจากโลกของเกมมันก็จะได้รับโดยตรงจากอินสแตนซ์ GameWorld ตัวอย่างเช่นตัวแทนอาจถูกตั้งโปรแกรมให้Seekผู้เล่นเมื่อเขา / เธอปิด ในการทำสิ่งนี้ตัวแทนจะต้องได้ตำแหน่งของผู้เล่น GameWorld.instance().getPlayerPosition()ดังนั้นมันก็สามารถขอได้โดยตรง: ตัวแทนยังสามารถรับรายการเอนทิตีทั้งหมดในเกมและวิเคราะห์ตามความต้องการ (เพื่อค้นหาว่าเอนทิตีใกล้เคียงหรืออะไรอย่างอื่น): GameWorld.instance().getEntityList() นี่เป็นวิธีที่ง่ายที่สุด: ตัวแทนติดต่อชั้น GameWorld โดยตรงและรับข้อมูลที่ต้องการ อย่างไรก็ตามนี่เป็นวิธีเดียวที่ฉันรู้ มีดีกว่าไหม นักพัฒนาเกมที่มีประสบการณ์จะออกแบบสิ่งนี้ได้อย่างไร "รับรายการของเอนทิตีทั้งหมดและมองหาสิ่งที่คุณต้องการ" ไร้เดียงสาหรือไม่? มีวิธีการและกลไกใดบ้างที่อนุญาตให้ตัวแทน AI เข้าถึงข้อมูลที่ต้องการเพื่อดำเนินการ
9 architecture  ai  oop 

3
ทางเลือกที่ยืดหยุ่นสำหรับคลาส polymorphic ขนาดเล็กจำนวนมาก (เพื่อใช้เป็นคุณสมบัติหรือข้อความหรือเหตุการณ์) C ++
เกมของฉันมีสองคลาสที่มีประโยชน์มาก แต่ก็ค่อยๆเจ็บปวด ข้อความและคุณสมบัติ (คุณสมบัติเป็นส่วนประกอบหลัก) พวกเขาทั้งคู่มาจากคลาสพื้นฐานและมีสแตติก id เพื่อให้ระบบสามารถให้ความสนใจกับสิ่งที่พวกเขาต้องการ มันทำงานได้ดีมาก ... ยกเว้น ... ฉันกำลังสร้างประเภทข้อความและประเภทคุณสมบัติใหม่อยู่ตลอดเวลาขณะที่ฉันขยายเกม ทุกครั้งที่ฉันต้องเขียนไฟล์ 2 ไฟล์ (hpp และ cpp) และสำเร็จรูปจำนวนมากเพื่อให้ได้ classID และหนึ่งหรือสองชนิดข้อมูลมาตรฐานหรือตัวชี้ มันเริ่มที่จะทำให้การเล่นและการทดสอบความคิดใหม่ ๆ เป็นงานที่น่าเบื่อ ฉันต้องการเมื่อฉันต้องการสร้างข้อความใหม่หรือประเภทคุณสมบัติฉันต้องการให้สามารถพิมพ์บางสิ่งเช่น ShootableProperty: int gunType, float shotspeed; ItemCollectedMessage: int itemType; แทนการสร้างไฟล์ส่วนหัวและ cpp เขียนตัวสร้างรวมถึงผู้ปกครองชั้น ฯลฯ ฯลฯ มันอยู่ที่ประมาณ 20 - 40 บรรทัด (รวมถึงยามและทุกอย่าง) เพื่อทำในสิ่งที่เป็นตรรกะใน 1 หรือ 2 บรรทัดในใจของฉัน มีรูปแบบการเขียนโปรแกรมเพื่อหลีกเลี่ยงปัญหานี้หรือไม่? …

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วัตถุของฉันอัปเดตเมื่อคลิกปุ่มนำไปใช้

4
เหตุใดฉันจึงควรใช้วิธีการกำหนดค่าเริ่มต้นแยกต่างหากและล้างข้อมูลแทนการวางตรรกะในตัวสร้างและตัวทำลายสำหรับส่วนประกอบเครื่องยนต์?
ฉันทำงานกับเอ็นจิ้นเกมของตัวเองและตอนนี้ฉันกำลังออกแบบผู้จัดการของฉัน ฉันได้อ่านแล้วว่าสำหรับการจัดการหน่วยความจำการใช้Init()และCleanUp()ฟังก์ชั่นจะดีกว่าเมื่อใช้ Constructor และ Destructors ฉันกำลังมองหาตัวอย่างรหัส C ++ เพื่อดูว่าฟังก์ชั่นเหล่านั้นทำงานอย่างไรและฉันจะนำไปใช้ในเครื่องยนต์ได้อย่างไร ทำงานอย่างไรInit()และCleanUp()ทำงานอย่างไรและฉันจะนำไปใช้กับเครื่องยนต์ได้อย่างไร

4
ฉันควรแชร์ข้อมูลระหว่างกราฟิกและเอนจิ้นฟิสิกส์ในเกมหรือไม่
ฉันกำลังเขียนเอ็นจิ้นเกมที่ประกอบด้วยโมดูลไม่กี่ตัว สองของพวกเขาเป็นกราฟิกเครื่องยนต์และเครื่องยนต์ฟิสิกส์ ฉันสงสัยว่ามันเป็นทางออกที่ดีในการแบ่งปันข้อมูลระหว่างกันหรือไม่ สองวิธี (การแชร์หรือไม่) ดูเหมือนว่า: โดยไม่ต้องแชร์ข้อมูล GraphicsModel{ //some common for graphics and physics data like position //some only graphic data //like textures and detailed model's verticles that physics doesn't need }; PhysicsModel{ //some common for graphics and physics data like position //some only physics data //usually my physics data …

2
หลายแหล่งที่มาของการเคลื่อนไหวในระบบเอนทิตี
ฉันค่อนข้างใหม่กับแนวคิดของระบบเอนทิตีที่ได้อ่านสิ่งต่าง ๆ (ส่วนใหญ่เป็นประโยชน์บล็อกที่ยอดเยี่ยมนี้และคำตอบนี้ ) แม้ว่าฉันจะมีปัญหาเล็กน้อยในการทำความเข้าใจว่าบางสิ่งง่าย ๆ เช่นเดียวกับที่สามารถจัดการตำแหน่งของวัตถุด้วยแหล่งที่มาที่ไม่ได้กำหนดจำนวนมาก นั่นคือฉันมีหน่วยงานของฉันซึ่งมีองค์ประกอบตำแหน่ง ฉันมีเหตุการณ์บางอย่างในเกมที่บอกเอนทิตีนี้ให้ย้ายระยะทางที่กำหนดในเวลาที่กำหนด เหตุการณ์เหล่านี้สามารถเกิดขึ้นได้ตลอดเวลาและจะมีค่าแตกต่างกันสำหรับตำแหน่งและเวลา ผลก็คือพวกเขาจะรวมกัน ในโซลูชัน OO แบบดั้งเดิมฉันมีMoveByคลาสบางประเภทที่มีระยะทาง / เวลาและอาเรย์ของผู้ที่อยู่ในคลาสอ็อบเจ็กต์เกมของฉัน แต่ละเฟรมฉันจะวนซ้ำทั้งหมดMoveByและนำไปใช้กับตำแหน่ง หาก a MoveByถึงเวลาสิ้นสุดแล้วให้ลบออกจากอาร์เรย์ ด้วยระบบเอนทิตี้ฉันสับสนนิดหน่อยว่าฉันควรทำซ้ำพฤติกรรมแบบนี้อย่างไร หากมีเพียงหนึ่งในเหล่านี้ในแต่ละครั้งแทนที่จะสามารถรวมพวกเขาเข้าด้วยกันมันก็จะค่อนข้างตรงไปตรงมา (ฉันเชื่อ) และมีลักษณะเช่นนี้: PositionComponent มี x, y MoveByComponent มี x, y, time Entityซึ่งมีทั้งPositionComponentและMoveByComponent MoveBySystemที่รูปลักษณ์สำหรับนิติบุคคลที่มีทั้งส่วนประกอบเหล่านี้และเพิ่มมูลค่าของไปMoveByComponent PositionComponentเมื่อtimeถึงมันจะลบองค์ประกอบจากเอนทิตีนั้น ฉันสับสนเล็กน้อยว่าฉันจะทำสิ่งเดียวกันได้อย่างไรด้วยการเคลื่อนไหวหลายอย่างด้วยกัน ความคิดเริ่มต้นของฉันคือฉันจะมี: PositionComponent, MoveByComponentเช่นเดียวกับข้างต้น MoveByCollectionComponentซึ่งมีอาร์เรย์ของMoveByComponents MoveByCollectionSystemที่มองหาเอนทิตีที่มีPositionComponentและ a MoveByCollectionComponent, วนซ้ำMoveByComponents ข้างในนั้น, ใช้ / ลบตามความจำเป็น ฉันเดาว่านี่เป็นปัญหาทั่วไปมากขึ้นของการมีองค์ประกอบเดียวกันจำนวนมากและต้องการให้ระบบที่เกี่ยวข้องดำเนินการกับแต่ละองค์ประกอบ …

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