คำถามติดแท็ก software-engineering

วิศวกรรมซอฟต์แวร์เป็นการออกแบบและพัฒนาซอฟต์แวร์ตามที่ใช้กับการพัฒนาเกม คำถามที่ใช้แท็กนี้ควรเกี่ยวกับแนวคิดและการปฏิบัติเชิงทฤษฎีที่เกี่ยวข้องกับภารกิจในการสร้างหรือออกแบบซอฟต์แวร์ ไม่ควรใช้แท็กนี้เพียงเพราะคำถามเกี่ยวข้องกับการเขียนโปรแกรมหรือมีรหัส

3
ลองจับหรือ ifs สำหรับการจัดการข้อผิดพลาดใน C ++
มีการใช้ข้อยกเว้นกันอย่างแพร่หลายในการออกแบบเกมเอ็นจิ้นหรือมันจะดีกว่าถ้าใช้ข้อความล้วน ๆ ? ตัวอย่างเช่นมีข้อยกเว้น: try { m_fpsTextId = m_statistics->createText( "FPS: 0", 16, 20, 20, 1.0f, 1.0f, 1.0f ); m_cpuTextId = m_statistics->createText( "CPU: 0%", 16, 20, 40, 1.0f, 1.0f, 1.0f ); m_frameTimeTextId = m_statistics->createText( "Frame time: 0", 20, 20, 60, 1.0f, 1.0f, 1.0f ); m_mouseCoordTextId = m_statistics->createText( "Mouse: (0, 0)", 20, …

7
เกมค้าปลีกใช้ "การควบคุมแบบผกผัน" และ "การฉีดพึ่งพา" หรือไม่?
นักพัฒนาซอฟต์แวร์ที่มีความขยันหมั่นเพียรมากขึ้นฉันรู้ว่ากำลังเคลื่อนที่ไปสู่การผกผันของการควบคุมและการฉีดพึ่งพาเพื่อจัดการการอ้างอิงไปยังวัตถุ มาจากมุมมองของเกม Flash ฉันไม่ทราบถึงส่วนลึกทั้งหมดของสตูดิโอ AAA ดังนั้น: สิ่งเหล่านี้ถูกนำมาใช้ในโลกของเกมค้าปลีกหรือไม่

3
ทีมป้องกันการเขียนทับทำงานในไฟล์ต้นฉบับได้อย่างไร [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Game Exchange Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว มันเป็นไปได้สำหรับฉันที่มีหลายคนที่กำลังทำงานอยู่ในขณะเดียวกันเช่นเอ็นจิ้นเกม สมมติว่านักพัฒนาคนหนึ่งกำลังทำงานAudio.cppและนักพัฒนาที่สองก็กำลังทำงานอยู่Audio.cppสิ่งนี้จัดการโดยทั่วไปในทีมขนาดใหญ่เพื่อต่อสู้กับการเขียนทับได้อย่างไร (ในคำอื่น ๆ ที่จะหยุดสองนักพัฒนาจากการเปิดไฟล์จนกว่านักพัฒนาคนหนึ่งจะเสร็จสิ้น)
26 project-management  version-control  teamwork  java  2d  collision-detection  vector  collision-resolution  unity  directx  directx11  directx10  xna  ios  monogame  windows-phone-8  xamarin  design-patterns  oop  xna  collision-detection  collision-resolution  bounding-boxes  rotation  collision-detection  mathematics  javascript  algorithm  separating-axis-theorem  xna  2d  monogame  image  xna  directx  graphics  performance  opengl  2d  3d  c++  directx11  unity  c#  scale  c#  xna  collision-detection  collision-resolution  leaderboards  scoring  glsl  srgb  tilemap  three.js  tiled  unity  physics  xml  dialog-tree  xna  c#  .net  opengl  lwjgl  vbo  physics  graphics  procedural-generation  simulations  water  opengl  java  textures  lwjgl  frame-buffer  unity  unity  2d  collision-detection  collision-resolution  trigonometry  java  android  libgdx  xna  c#  frame-rate  c++  unreal-4  procedural-generation  java  graphics  lwjgl  slick  c++  software-engineering 

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

1
กำหนดตำแหน่งขององค์ประกอบที่หมุนได้ใน Tetris
Tetris-Tiles ถูกเก็บไว้เป็น matrix 4x4 แบบบูล แต่ละขั้นตอนการหมุนมีเมทริกซ์เป็นของตัวเองการเป็นตัวแทนของT -Block จะมีลักษณะเช่นนี้: [ 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0, …

10
ภาษาการเขียนโปรแกรมที่ใช้บ่อยที่สุดคืออะไร [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการถกเถียงอภิปรายโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา เมื่อฉันเรียนหลักสูตร Java เมื่อปีที่แล้วฉันได้รับแจ้งว่า Java ส่วนใหญ่จะใช้ใน บริษัท เกมต่างประเทศในขณะที่ C ++ ใช้ที่นี่ในสหรัฐอเมริกา ฉันควรเน้นภาษาใดในการเรียนรู้เชิงลึก

7
วิธีการรับประสบการณ์ PS3 / Xbox 360 โดยไม่ต้องเข้าถึงชุด Dev?
ฉันเป็นโปรแกรมเมอร์เกมรุ่นที่พยายามเข้าสู่อุตสาหกรรมการเขียนโปรแกรมสำหรับ PS3, Xbox 360 ปัญหาหลักที่ฉันเห็นคือต้องแสดงทักษะของฉันกับนายจ้างที่มีศักยภาพ แต่ไม่สามารถเข้าถึงชุด Dev สำหรับ PS3 หรือ Xbox 360 ได้ สิ่งนี้เป็นไปไม่ได้โดยตรง คำถามของฉันคืออะไรทางเลือกที่ดีที่สุดในการแสดงทักษะให้นักพัฒนาคอนโซลของฉันคืออะไร การเขียนโปรแกรม C ++ ใน DirectX สำหรับ Windows ดูเหมือนจะใกล้เคียงกับการแสดงทักษะการเขียนโปรแกรม Xbox 360 และการเขียนโปรแกรม C ++ ใน OpenGL นั้นค่อนข้างใกล้เคียงกับการแสดงทักษะการเขียนโปรแกรม PS3 น่าเสียดายที่มันดูเหมือนว่าจากการวิจัยเว็บราวกับว่าทั้ง Xbox 360 และ PS3 มีห้องสมุดที่เป็นของตัวเองจริง ๆ ดังนั้นจึงดูเหมือนว่าจะไม่ได้พยายามอย่างเต็มที่ที่จะเกิดผล 100% วิธีนี้ดูใกล้เคียงที่สุด แต่ใช้เวลามากที่สุด รวมทั้งคุณไม่ได้ทำอะไรเลยบนคอนโซล ในทางกลับกันการเขียนโปรแกรมใน XNA มีประโยชน์กับเกมของคุณจริง ๆ บนคอนโซลแม้ว่าฉันจะได้รับความประทับใจว่านี่คือสิ่งที่มองว่าไม่ใช่ "ของจริง" …

3
หนึ่งจะทำการทดสอบหน่วยในเครื่องมือเกมได้อย่างไร
สิ่งที่น่าละอายเป็นอย่างมากฉันไม่เคยเขียนแบบทดสอบหน่วยที่เหมาะสมมีเพียงโปรแกรมทดสอบขนาดเล็กที่ไม่มีการรวบรวมกันซึ่งฉันจะทิ้งหลังจากการทดสอบประสบความสำเร็จ ฉันไม่มีความคิดที่ชัดเจนว่าจะทำการทดสอบหน่วยในโครงการเกมอย่างไร (ภาษาของฉันคือ C ++) ฉันควรมีโครงการแยกต่างหากสำหรับแต่ละระบบย่อยในเอ็นจินของฉันและการทดสอบที่เกี่ยวข้องกับมันแล้วมีโครงการ / โซลูชันที่ใหญ่กว่าที่สร้างเอ็นจิ้นจริง พูดเช่นฉันมีeventโมดูลในเครื่องยนต์ของฉัน ฉันจะจัดการกับสิ่งนั้นได้อย่างไร

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

5
นอกเหนือจากโครงการเกม "สามเณร"
ฉันได้อ่านคำตอบนี้เกี่ยวกับประเภทของคณิตศาสตร์ที่ผู้พัฒนาเกมควรรู้และส่วนนี้โดดเด่นสำหรับฉัน: How do I move my game object? The novice might say: "I know! I'll just do:" object.position.x++. นั่นคือวิธีที่ฉันคิดว่าจะทำดังนั้นฉันเดาว่าจะแสดงระดับความสามารถของฉัน อย่างน้อยสำหรับประเภทของเกมแนวอาร์เคดแบบเลื่อนสองมิติที่ฉันเคยทำในอดีตนั่นคือทั้งหมดที่ฉันต้องการ นั่นและตรีโกณมิติเล็กน้อย ในความเป็นจริงฉันไม่ได้ใช้พีชคณิตเชิงเส้นมากหรือได้ยิน quaternions ก่อนที่จะอ่านโพสต์นั้น เป็นเพราะคณิตศาสตร์เหล่านี้จะไม่ปรากฏจนกว่าคุณจะทำงานกับ 3D หรือเป็นเพราะเกม 2D ของฉันค่อนข้างง่ายที่ฉันไม่ได้ใช้งาน คำถามติดตาม:หากฉันต้องการทำความคุ้นเคยกับคณิตศาสตร์ประเภทนั้นฉันควรทำโครงการประเภทใด IE: เขียนเอ็นจิ้นเกมทำงานบนเกม 3D เป็นต้น

4
เอ็นจิ้นเกมควรทำอย่างไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันต้องการพัฒนาทักษะของฉัน / ลองสิ่งใหม่ ๆ และฉันต้องการเริ่มต้นด้วย 3D ฉันได้อ่านการเขียนโปรแกรมเริ่มต้นใน 3D ด้วย C ++แต่ฉันมีคำถามเกี่ยวกับเอ็นจิ้น: เครื่องยนต์ควรทำอย่างไร? ฉันรู้ว่ามันเป็นเลเยอร์ที่เป็นนามธรรมเหนือ 3D API (เช่น OpenGL หรือ DirectX) แต่มันควรทำอย่างไร?

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

1
ฟีเจอร์ใดเป็นของเอ็นจิ้นและอันไหนของเกม
ตอนนี้ฉันพบว่าตัวเองกำลังใช้งานและทดสอบคุณสมบัติใหม่สำหรับเอนจิ้นเกม 2D ของฉันโดยการเขียนโค้ดลงในเอ็นจิ้นโดยตรง ในขณะเดียวกันฉันมีเกมโชว์ที่มีการสนับสนุนการเขียนสคริปต์ซึ่งควรเรียกฟังก์ชั่นเอ็นจิ้น ฉันแนบเช่นการเคลื่อนไหวไทล์ถาวรกับคลาส Entity ในเอ็นจินแทนที่จะเขียนสคริปต์นี้โดยเฉพาะสำหรับเกม นี่เป็นการทำลายแนวคิดของเอ็นจิ้นทั่วไปที่ใช้สำหรับเกมมากกว่าหนึ่งเกม มีแนวทางปฏิบัติที่ดีที่สุดเพื่อมุ่งเน้นการใช้งานที่ถูกต้องในส่วนที่ถูกต้อง (นั่นคือเครื่องยนต์กับเกม) หรือไม่?

2
วิธีที่ดีที่สุดในการรับประสบการณ์การทำงาน C ++ สำหรับงานในเกม (มาจาก C #) [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้จะเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา ฉันเป็นนักพัฒนาซอฟต์แวร์ที่มีประสบการณ์กับ C # (ประสบการณ์ 5 ปี) พร้อมกับภาษาอื่น ๆ "งานในฝัน" ของฉันทำงานในวิดีโอเกมในฐานะนักพัฒนาซอฟต์แวร์ งานส่วนใหญ่ต้องการความรู้เกี่ยวกับ C ++ ซึ่งฉันยังไม่มีในขณะนี้ (ยกเว้นพื้นฐานบางอย่าง) ฉันได้ดูไปรอบ ๆ และ บริษัท เกมใหญ่ ๆ ส่วนใหญ่ต้องการบางสิ่งในช่วง 3-5 ปีที่ผ่านมาของ C ++ คำถามของฉันคือ - อะไรจะเป็นเส้นทางที่ดีในการรับตัวเองสู่ระดับประสบการณ์ที่จำเป็นนี้มาจาก C # ฉันคิดถึงวิธีที่เป็นไปได้ที่จะทำ: รับความรู้เพิ่มเติมเกี่ยวกับ C ++ จากหนังสือ เข้าร่วมในโครงการโอเพนซอร์ซที่เขียนด้วย C ++ อะไรจะเป็นวิธีที่ดีที่สุดในการเรียนรู้ C ++ …

7
คุณมีความสำคัญต่อความปลอดภัยของข้อยกเว้นในรหัส C ++ ของคุณหรือไม่
ทุกครั้งที่ฉันพิจารณาที่จะสร้างรหัสของฉันอย่างยิ่งยกเว้นที่ปลอดภัยฉันจะไม่ทำเพราะมันจะใช้เวลามาก ลองพิจารณาตัวอย่างข้อมูลที่ค่อนข้างง่าย: Level::Entity* entity = new Level::Entity(); entity->id = GetNextId(); entity->AddComponent(new Component::Position(x, y)); entity->AddComponent(new Component::Movement()); entity->AddComponent(new Component::Render()); allEntities.push_back(entity); // std::vector entityById[entity->id] = entity; // std::map return entity; ในการใช้การรับประกันข้อยกเว้นพื้นฐานฉันสามารถใช้ตัวชี้ที่กำหนดขอบเขตบนการnewโทร วิธีนี้จะป้องกันการรั่วไหลของหน่วยความจำหากมีการเรียกใด ๆ ที่จะทำให้เกิดข้อยกเว้น อย่างไรก็ตามสมมติว่าฉันต้องการใช้การรับประกันข้อยกเว้นที่รัดกุม อย่างน้อยฉันจะต้องใช้ตัวชี้ที่ใช้ร่วมกันสำหรับบรรจุของฉัน (ฉันไม่ได้ใช้ Boost) nothrow Entity::Swapสำหรับการเพิ่มส่วนประกอบอะตอมและการจัดเรียงบางส่วนของสำนวนสำหรับอะตอมเพิ่มทั้งและVector Mapสิ่งเหล่านี้ไม่เพียงใช้เวลานานในการติดตั้ง แต่ยังมีราคาแพงเนื่องจากต้องใช้การคัดลอกมากกว่าโซลูชันที่ไม่ปลอดภัยยกเว้น ในที่สุดฉันรู้สึกเหมือนว่าเวลาที่ใช้ในการทำทั้งหมดนั้นจะไม่ถูกต้องเพียงเพื่อให้CreateEntityฟังก์ชั่นที่เรียบง่ายนั้นปลอดภัยอย่างยิ่งยกเว้น ฉันอาจต้องการให้เกมแสดงข้อผิดพลาดและปิดที่จุดนั้นต่อไป คุณใช้เวลานานแค่ไหนในโครงการเกมของคุณเอง? โดยทั่วไปเป็นที่ยอมรับได้หรือไม่ในการเขียนรหัสที่ไม่ปลอดภัยสำหรับโปรแกรมที่อาจผิดพลาดเมื่อมีข้อยกเว้น

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