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

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

8
เหตุใด MVC & TDD จึงไม่ได้ใช้งานสถาปัตยกรรมเกมมากขึ้น? [ปิด]
ฉันจะนำหน้าสิ่งนี้โดยบอกว่าฉันไม่ได้ดูแหล่งเกมเป็นจำนวนมากหรือไม่ได้สร้างในแบบของเกม แต่มาจากการพยายามใช้วิธีการเข้ารหัส 'องค์กร' ในเว็บแอปดูที่ซอร์สโค้ดของเกมทำให้เจ็บอย่างรุนแรง: "มุมมองนี้ทำอะไรกับตรรกะทางธุรกิจหรือไม่นี่จำเป็นต้องมีการปรับโครงสร้างใหม่ ... " สิ่งนี้ทำให้ฉันกังวลขณะที่ฉันกำลังจะเริ่มโครงการเกมและฉันไม่แน่ใจว่าพยายาม mvc / tdd กระบวนการ dev จะขัดขวางเราหรือช่วยเราเพราะฉันไม่เห็นตัวอย่างเกมมากมายที่ใช้สิ่งนี้ หรือผลักดันให้มีการปฏิบัติงานสถาปัตยกรรมที่ดีขึ้นในชุมชน ต่อไปนี้เป็นสารสกัดจากบทความที่ยอดเยี่ยมเกี่ยวกับเกมต้นแบบแต่สำหรับฉันแล้วดูเหมือนว่าทัศนคติที่ผู้พัฒนาเกมส่วนใหญ่ใช้ในการเขียนรหัสเกม ความผิดพลาด # 4: การสร้างระบบไม่ใช่เกม ... หากคุณพบว่าตัวเองกำลังทำงานบางอย่างที่ไม่ได้เดินหน้าต่อไปให้หยุดตรงนั้น ในฐานะโปรแกรมเมอร์เรามีแนวโน้มที่จะพยายามทำให้รหัสของเราเป็นแบบทั่วไปและทำให้มันดูสง่างามและสามารถรับมือกับทุกสถานการณ์ได้ เราพบว่าคันอย่างหนักไม่เกา แต่เราต้องเรียนรู้วิธี ฉันใช้เวลาหลายปีกว่าจะรู้ตัวว่ามันไม่เกี่ยวกับรหัส แต่มันเกี่ยวกับเกมที่คุณจัดส่งในตอนท้าย อย่าเขียนระบบองค์ประกอบของเกมที่หรูหราข้ามตัวแก้ไขไปอย่างสมบูรณ์และทำให้สถานะเป็นรหัสไม่ติดขัดหลีกเลี่ยงการใช้ข้อมูลการแยกวิเคราะห์ตัวเองความบ้าคลั่งของ XML และโค้ดสิ่งที่ถูกสาป ... รับของบนหน้าจอให้เร็วที่สุดเท่าที่จะทำได้ และไม่เคยใช้อาร์กิวเมนต์ "ถ้าเราใช้เวลาเพิ่มเติมและทำสิ่งนี้ในวิธีที่ถูกต้องเราสามารถนำมันกลับมาใช้ใหม่ได้ในเกม" EVER เป็นเพราะเกม (ส่วนใหญ่) มีการมุ่งเน้นการมองเห็นดังนั้นจึงสมเหตุสมผลว่าโค้ดจะถูกถ่วงน้ำหนักอย่างหนักในมุมมองดังนั้นประโยชน์ใด ๆ จากการเคลื่อนย้ายสิ่งของออกไปยังตัวแบบ / คอนโทรลเลอร์นั้นค่อนข้างน้อยดังนั้นทำไมต้องกังวล? ฉันได้ยินข้อโต้แย้งว่า MVC แนะนำค่าใช้จ่ายด้านประสิทธิภาพ แต่ดูเหมือนว่าฉันจะเพิ่มประสิทธิภาพก่อนวัยอันควรและมีประเด็นปัญหาด้านประสิทธิภาพที่สำคัญกว่าที่จะแก้ไขก่อนที่คุณจะกังวลเกี่ยวกับค่าใช้จ่าย MVC (เช่นเรนเดอร์ไลน์ การข้ามผ่าน ฯลฯ …

9
รูปแบบการออกแบบการเขียนโปรแกรมอะไรบ้างที่มีประโยชน์ในการพัฒนาเกม [ปิด]
ฉันมีหนังสือสองสามเล่มเกี่ยวกับรูปแบบการออกแบบและได้อ่านบทความบางอย่าง แต่ไม่สามารถเข้าใจได้อย่างชัดเจนว่ารูปแบบการออกแบบโปรแกรมใดที่จะเป็นประโยชน์ในการพัฒนาเกม ตัวอย่างเช่นฉันมีหนังสือชื่อว่า ActionScript 3 ที่มีรูปแบบการออกแบบที่มีรายละเอียดรูปแบบการออกแบบหลายอย่างเช่นตัวควบคุมมุมมองโมเดล, ซิงเกิล, โรงงาน, คำสั่ง ฯลฯ ในฐานะที่เป็นคนใหม่ในเรื่องนี้ฉันไม่สามารถคิดได้ว่าสิ่งใดจะเป็นประโยชน์หรืออันที่จริงหากสิ่งเหล่านี้เป็นรูปแบบการออกแบบที่ฉันควรจะเรียนรู้และพยายามใช้ บางทีอาจมีรูปแบบการออกแบบเฉพาะโปรแกรมเกมอื่น ๆ ที่ฉันไม่รู้ด้วยซ้ำ หากคุณมีประสบการณ์ในการใช้รูปแบบการออกแบบบางอย่างในการพัฒนาเกมฉันชอบที่จะได้ยิน การให้เหตุผลว่าเหตุใดจึงใช้ตัวอย่างรหัสหรือแหล่งข้อมูลออนไลน์จะมีประโยชน์มากเช่นกันหากคุณมี ตอนนี้ฉันสนใจการใช้ ActionScript 3 และ C ++ มากที่สุด แต่อาจได้รับประโยชน์จากประสบการณ์และตัวอย่างจากภาษาใด ๆ ขอบคุณ!

5
จะหลีกเลี่ยงวัตถุ GameManager god ได้อย่างไร?
ฉันเพียงแค่อ่านคำตอบสำหรับคำถามเกี่ยวกับโครงสร้างรหัสเกม มันทำให้ฉันสงสัยเกี่ยวกับGameManagerคลาสที่แพร่หลายและบ่อยครั้งที่มันจะกลายเป็นปัญหาในสภาพแวดล้อมการผลิต ให้ฉันอธิบายสิ่งนี้ อย่างแรกคือการสร้างต้นแบบ ไม่มีใครสนใจเกี่ยวกับการเขียนโค้ดที่ยอดเยี่ยมเราเพียงแค่พยายามทำให้บางสิ่งบางอย่างทำงานเพื่อดูว่าการเล่นเกมเพิ่มขึ้นหรือไม่ แล้วมี Greenlight GameManagerและในความพยายามที่จะทำความสะอาดสิ่งขึ้นบางคนเขียน อาจเป็นไปได้ที่จะถือมัดGameStatesอาจจะเก็บไม่กี่GameObjectsไม่มีอะไรใหญ่จริงๆ ผู้จัดการเล็ก ๆ น้อย ๆ ที่น่ารัก ในดินแดนที่สงบสุขก่อนการผลิตเกมกำลังก่อตัวขึ้นอย่างสวยงาม โคเดอร์มีคืนนอนหลับที่เหมาะสมและมีไอเดียมากมายในการสร้างสถาปัตยกรรมด้วยรูปแบบการออกแบบที่ยอดเยี่ยม จากนั้นการผลิตจะเริ่มขึ้นและในไม่ช้าแน่นอนว่าจะมีเวลาที่ จำกัด อาหารที่สมดุลหายไปนานแล้วตัวติดตามบั๊กแตกกับปัญหาผู้คนเครียดและเกมต้องได้รับการปล่อยตัวเมื่อวานนี้ ณ จุดนั้นโดยปกติแล้วสิ่งGameManagerนี้จะเป็นระเบียบขนาดใหญ่ที่แท้จริง (เพื่อให้สุภาพ) เหตุผลที่ง่าย หลังจากที่ทุกเมื่อเขียนเกมดี ... ทุกรหัสที่มาเป็นจริงที่นี่เพื่อจัดการเกม ง่ายเพียงเพิ่มคุณสมบัติพิเศษเล็ก ๆ น้อย ๆ นี้หรือแก้ไขข้อบกพร่องในGameManagerที่ซึ่งทุกอย่างจะถูกจัดเก็บอยู่แล้ว เมื่อเวลากลายเป็นปัญหาไม่มีวิธีการเขียนชั้นแยกต่างหากหรือแยกผู้จัดการยักษ์รายนี้เป็นผู้จัดการย่อย หลักสูตรนี้เป็นคลาสสิกต่อต้านรูปแบบที่: วัตถุพระเจ้า มันเป็นสิ่งที่ไม่ดีความเจ็บปวดที่จะผสานความเจ็บปวดที่จะรักษาความเจ็บปวดที่จะเข้าใจความเจ็บปวดที่จะเปลี่ยนแปลง คุณอยากแนะนำอะไรให้ป้องกันไม่ให้สิ่งนี้เกิดขึ้น แก้ไข ฉันรู้ว่ามันเป็นการล่อลวงที่จะตำหนิการตั้งชื่อ แน่นอนว่าการสร้างGameManagerชั้นเรียนไม่ได้เป็นความคิดที่ยอดเยี่ยม แต่สิ่งเดียวกันนี้สามารถเกิดขึ้นได้กับสิ่งที่สะอาดGameApplicationหรือGameStateMachineหรือGameSystemกลายเป็นที่ชื่นชอบของท่อเทปในตอนท้ายของโครงการ ไม่ว่าคุณจะตั้งชื่ออะไรคุณมีคลาสนั้นในรหัสเกมของคุณมันเป็นเพียงตัวอ่อนในตอนนี้คุณแค่ไม่รู้ว่ามันจะกลายเป็นมอนสเตอร์ตัวไหน ดังนั้นฉันจึงไม่คาดหวังคำตอบ "ตำหนิการตั้งชื่อ" ฉันต้องการวิธีที่จะป้องกันไม่ให้สิ่งนี้เกิดขึ้นเอกสารการเข้ารหัสและ / หรือกระบวนการที่ทีมสามารถติดตามได้โดยรู้ว่าสิ่งนี้จะเกิดขึ้นในบางช่วงของการผลิต เป็นเรื่องที่แย่เกินกว่าจะพูดได้ว่าหนึ่งเดือนของการแก้ไขข้อบกพร่องและคุณสมบัติในนาทีสุดท้ายเพียงเพราะพวกเขาทั้งหมดอยู่ในผู้จัดการที่ไม่มีใครสามารถจัดการได้

5
นักแสดงในเกมควรมีความรับผิดชอบในการวาดภาพตนเองหรือไม่?
ฉันยังใหม่ต่อการพัฒนาเกม แต่ไม่ได้เขียนโปรแกรม ฉัน (อีกครั้ง) เล่นกับเกมประเภท Pong โดยใช้canvasองค์ประกอบของ JavaScript ฉันสร้างPaddleวัตถุที่มีคุณสมบัติดังต่อไปนี้ ... width height x y colour ฉันยังมีPongวัตถุที่มีคุณสมบัติเช่น ... width height backgroundColour draw(). draw()วิธีการในปัจจุบันคือการรีเซ็ตcanvasและที่เป็นที่คำถามขึ้นมา ควรPaddleวัตถุมีdraw()วิธีการรับผิดชอบสำหรับการวาดภาพหรือควรdraw()ของPongวัตถุต้องรับผิดชอบสำหรับการวาดภาพของนักแสดง (ฉันคิดว่าเป็นคำที่ถูกต้องโปรดแก้ไขฉันหากฉันไม่ถูกต้อง) ฉันคิดว่ามันจะเป็น advantagous สำหรับPaddleการวาดตัวเองที่ผมยกตัวอย่างวัตถุสองและPlayer Enemyถ้ามันไม่ได้อยู่ในPongของdraw()ฉันจะต้องเขียนรหัสที่คล้ายกันสองครั้ง การปฏิบัติที่ดีที่สุดที่นี่คืออะไร? ขอบคุณ

9
ใน Unity ฉันจะใช้รูปแบบซิงเกิลได้อย่างถูกต้องได้อย่างไร?
ฉันได้เห็นวิดีโอและแบบฝึกหัดหลายประการสำหรับการสร้างวัตถุเดี่ยวใน Unity ซึ่งส่วนใหญ่เป็น a GameManagerซึ่งดูเหมือนจะใช้วิธีการต่าง ๆ ในการสร้างอินสแตนซ์และตรวจสอบความถูกต้องของซิงเกิล มีวิธีที่ถูกต้องหรือค่อนข้างที่ต้องการในการนี ตัวอย่างหลักสองอย่างที่ฉันพบคือ: เป็นครั้งแรก public class GameManager { private static GameManager _instance; public static GameManager Instance { get { if(_instance == null) { _instance = GameObject.FindObjectOfType<GameManager>(); } return _instance; } } void Awake() { DontDestroyOnLoad(gameObject); } } ที่สอง public class GameManager { private static …

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 

1
เหตุใดฉันจึงควรพิจารณาสร้างและใช้กลุ่มออบเจ็กต์แทนการสร้างวัตถุใหม่ในทันที
ฉันได้อ่านเกี่ยวกับรูปแบบนี้หลายครั้ง (จากมุมมองแนวปฏิบัติที่ดีที่สุด): การจัดสรรหน่วยความจำ : แทนที่จะสร้างวัตถุใหม่ในทันทีให้พิจารณาสร้างและใช้กลุ่มวัตถุเสมอ มันจะช่วยให้การกระจายตัวของหน่วยความจำน้อยลงและทำให้ตัวเก็บขยะทำงานน้อยลง อย่างไรก็ตามฉันไม่รู้ว่าที่จริงแล้วมันหมายถึงอะไร ฉันจะใช้มันได้อย่างไร ตัวอย่างเช่นฉันสามารถสร้างอินสแตนซ์ของการGameObjectใช้InstantiateUnity ได้หรือไม่ Instantiate(prefab, new Vector3(2.0F, 0, 0), Quaternion.identity); การใช้งานนี้หมดกำลังใจหรือไม่? มันหมายความว่าอะไร?

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") …

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

9
วิธีสร้างระบบเวทย์มนตร์ที่ใช้งานง่าย
ฉันกำลังออกแบบเกมการเอาชีวิตรอดแบบบนโลกล่างแบบ 2D จากบนลงล่างด้วยระบบเวทย์มนตร์ วิธีการใช้งาน: ผู้เล่นจะได้รับ "ไม้กายสิทธิ์" ในตอนต้นของเกม ในขณะที่ผู้เล่นพบไอเท็มและศัตรูใหม่พวกเขาจะได้รับคาถาเพื่อช่วยให้พวกเขาใช้ไอเท็มเหล่านั้น / กำจัดศัตรูเหล่านั้น ปัญหาที่ฉันมีคือออกแบบวิธีการร่ายคาถา ตอนแรกฉันเพิ่งผูกเวทย์ต่าง ๆ กับกุญแจ 0-10 แต่ในไม่ช้าจำนวนคาถาก็ท่วมท้นและคุณก็มีปัญหาเรื่องคาถาระดับล่างที่ไม่ได้ใช้ในเกมตอนปลาย แต่ก็ยังถูกผูกไว้กับกุญแจที่มีประโยชน์ที่สุด . ดังนั้นวิธีที่ดีที่สุดในการสร้างระบบสะกดคำที่ใช้งานง่ายคืออะไร ฉันสามารถยกเครื่องวิธีการทำงานของเวทมนตร์ในเกมของฉันหากจำเป็น แก้ไข: เพื่ออธิบายอย่างชัดเจนฉันกำลังพัฒนาสำหรับพีซีแบบเรียลไทม์ด้วยรูปแบบการสะกดและวัตถุประสงค์ที่หลากหลายแม้ว่าคำถามนี้ควรใช้กับทุกแพลตฟอร์ม

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

2
วิธีการออกแบบเมนูบริบทตามวัตถุใด ๆ
ฉันกำลังมองหาวิธีแก้ปัญหาสำหรับพฤติกรรม "คลิกขวา" โดยพื้นฐานทุกรายการในเกมเมื่อคลิกขวาสามารถแสดงชุดของตัวเลือกตามสิ่งที่วัตถุเป็น ตัวอย่างคลิกขวาสำหรับสถานการณ์ต่าง ๆ : สินค้าคงคลัง:หมวกกันน็อกแสดงตัวเลือก (สวมใส่ใช้วางคำอธิบาย) ธนาคาร: Helmet แสดงตัวเลือก (รับ 1, Take X, Take All, Description) ชั้น:หมวกกันน็อกแสดงตัวเลือกต่าง ๆ (ถ่ายเดินที่นี่รายละเอียด) เห็นได้ชัดว่าตัวเลือกแต่ละตัวชี้ไปที่วิธีการบางอย่างที่ทำในสิ่งที่พูด นี่เป็นส่วนหนึ่งของปัญหาที่ฉันพยายามหา ด้วยตัวเลือกการมีเสน่ห์มากมายสำหรับรายการเดียวฉันจะให้ชั้นเรียนของฉันออกแบบในลักษณะที่จะไม่ยุ่งมากได้อย่างไร ฉันเคยคิดเกี่ยวกับการสืบทอด แต่นั่นอาจจะยืดเยื้อและห่วงโซ่อาจมีขนาดใหญ่มาก ฉันคิดเกี่ยวกับการใช้อินเทอร์เฟซ แต่สิ่งนี้อาจ จำกัด ฉันเล็กน้อยเพราะฉันจะไม่สามารถโหลดข้อมูลรายการจากไฟล์ Xml และวางลงในคลาส "รายการ" ทั่วไป ฉันอ้างอิงผลลัพธ์ที่ต้องการในเกมที่ชื่อว่า Runescape วัตถุทุกชิ้นสามารถคลิกขวาในเกมและขึ้นอยู่กับว่ามันอยู่ที่ไหนและอยู่ที่ไหน (สินค้าคงคลัง, พื้น, ธนาคาร ฯลฯ ) แสดงชุดตัวเลือกต่าง ๆ ที่ผู้เล่นสามารถโต้ตอบได้ ฉันจะประสบความสำเร็จในเรื่องนี้ได้อย่างไร ฉันควรใช้วิธีใดก่อนอื่นตัดสินใจว่าควรแสดงตัวเลือกใดและเมื่อคลิกวิธีเรียกวิธีที่สอดคล้องกัน ฉันกำลังใช้ C # …

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

3
การออกแบบเกมเทิร์นเบสที่การกระทำมีผลข้างเคียง
ผมเขียนรุ่นคอมพิวเตอร์ของเกมการปกครอง มันเป็นเกมไพ่เทิร์นเบสที่การ์ดแอคชั่นการ์ดขุมทรัพย์และการ์ดแต้มชัยชนะจะถูกสะสมไว้ในเด็คส่วนบุคคลของผู้เล่น ฉันมีโครงสร้างของชั้นเรียนที่พัฒนาค่อนข้างดีและฉันเริ่มออกแบบตรรกะของเกม ฉันใช้หลามและฉันอาจเพิ่ม GUI อย่างง่ายด้วย pygame ในภายหลัง ลำดับการหมุนของผู้เล่นนั้นควบคุมโดยกลไกของรัฐที่ง่ายมาก หมุนตามเข็มนาฬิกาและผู้เล่นไม่สามารถออกจากเกมก่อนที่จะจบ การเล่นของเทิร์นเดี่ยวยังเป็นกลไกของรัฐ โดยทั่วไปผู้เล่นจะผ่าน "ขั้นตอนการกระทำ", "ขั้นตอนการซื้อ" และ "ขั้นตอนการทำความสะอาด" (ตามลำดับ) ตามคำตอบของคำถามวิธีการใช้เอ็นจิ้นเกมเทิร์นเบส เครื่องสถานะเป็นเทคนิคมาตรฐานสำหรับสถานการณ์นี้ ปัญหาของฉันคือในระหว่างขั้นตอนการกระทำของผู้เล่นเธอสามารถใช้การ์ดแอคชั่นที่มีผลข้างเคียงไม่ว่าจะด้วยตัวเองหรือกับผู้เล่นคนอื่นอย่างน้อยหนึ่งคน ตัวอย่างเช่นการ์ดแอคชั่นหนึ่งใบอนุญาตให้ผู้เล่นทำการเลี้ยวที่สองทันทีตามข้อสรุปของเทิร์นปัจจุบัน การ์ดการกระทำอีกใบหนึ่งทำให้ผู้เล่นคนอื่น ๆ ทิ้งการ์ดสองใบจากมือของพวกเขา อีกหนึ่งการ์ดแอคชั่นไม่ทำอะไรเลยสำหรับเทิร์นปัจจุบัน แต่อนุญาตให้ผู้เล่นวาดการ์ดพิเศษในเทิร์นถัดไปของเธอ เพื่อให้สิ่งต่าง ๆ มีความซับซ้อนยิ่งขึ้นมีการขยายเกมใหม่ ๆ เพิ่มการ์ดใหม่บ่อยครั้ง สำหรับฉันแล้วดูเหมือนว่าการเขียนโค้ดผลลัพธ์ของแอ็คชั่นการ์ดทุกใบลงในเครื่องสถานะของเกมจะน่าเกลียดและไม่สามารถปรับเปลี่ยนได้ คำตอบของTurn-based Strategy Loop ไม่เข้าสู่ระดับรายละเอียดที่เน้นการออกแบบเพื่อแก้ไขปัญหานี้ ฉันควรใช้รูปแบบการเขียนโปรแกรมประเภทใดเพื่อครอบคลุมข้อเท็จจริงที่ว่ารูปแบบทั่วไปสำหรับการเลี้ยวสามารถแก้ไขได้ด้วยการกระทำที่เกิดขึ้นภายในเทิร์น? วัตถุของเกมควรติดตามผลของการ์ดทุกใบหรือไม่ หรือหากการ์ดควรใช้เอฟเฟ็กต์ของตนเอง (เช่นโดยใช้อินเทอร์เฟซ) จำเป็นต้องมีการตั้งค่าใดเพื่อให้มีพลังงานเพียงพอ ฉันคิดวิธีแก้ปัญหานี้เล็กน้อย แต่ฉันสงสัยว่ามีวิธีมาตรฐานในการแก้ปัญหาหรือไม่ โดยเฉพาะฉันต้องการทราบว่าวัตถุ / คลาส / อะไรก็ตามที่รับผิดชอบในการติดตามการกระทำที่ผู้เล่นทุกคนจะต้องทำตามผลของการ์ดแอ็คชั่นที่กำลังเล่นและวิธีการที่เกี่ยวข้องกับการเปลี่ยนแปลงชั่วคราวในลำดับปกติของ เครื่องเปลี่ยนสถานะ

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