การพัฒนาเกมแตกต่างจากการพัฒนาซอฟต์แวร์อื่น ๆ อย่างไร? [ปิด]


18

สำหรับนักพัฒนาซอฟต์แวร์ที่ใช้งานทั่วไปอะไรที่แตกต่างกันโดยเฉพาะเกี่ยวกับการพัฒนาเกมไม่ว่าจะเป็นพื้นฐานหรือแตกต่างในระดับปริญญา

ฉันเล่นเกมทอยอย่าง Tic-Tac-Toe, Tetris และซูโดกุที่ใช้กำลัง (กับ UI) และตอนนี้ฉันกำลังเริ่มโครงการขนาดกลาง (ขนาดกลางสำหรับการเป็นนักพัฒนาเดียวและไม่มี ทำหลายเกม) และสิ่งหนึ่งที่ฉันได้พบกับโปรเจ็กต์นี้คือการแยกข้อกังวลนั้นยากกว่ามากเพราะทุกอย่างมีผลกระทบต่อสถานะ

จนถึงตอนนี้ฉันสามารถรักษาโค้ดให้สะอาดพอสมควรเพื่อความพึงพอใจของฉัน แต่ฉันพบว่าการรักษาโค้ดที่สะอาดในเกมที่ไม่สำคัญนั้นยากกว่ามากสำหรับงานประจำวันของฉัน

เกมที่ฉันกำลังทำอยู่นั้นเป็นแบบเทิร์นเบสและกราฟิกนั้นค่อนข้างง่าย (บนเว็บส่วนใหญ่ผ่านการจัดการ DOM) ดังนั้นเวลาจริงและงาน 3 มิติไม่เหมาะกับฉัน แต่ฉันยังคงเป็น สนใจคำตอบเกี่ยวกับสิ่งที่น่าสนใจ ส่วนใหญ่สนใจในตรรกะเกมทั่วไปว่า

PS รู้สึกอิสระที่จะติดแท็กสิ่งนี้อีกครั้งฉันไม่แน่ใจว่าแท็กใดที่ใช้งานได้

คำตอบ:


23

มีความแตกต่างที่สำคัญอย่างหนึ่ง ในความคิดของฉันมันเป็นความแตกต่างเพียงอย่างเดียวที่สำคัญจริงๆ

เราสามารถไปดูรายละเอียดทางเทคนิคว่าทำไมถึงแตกต่างกันอย่างแน่นอน เอนจิ้น 3 มิติฟิสิกส์ของอนุภาคสิ่งต่าง ๆ มากมายเข้ามาเล่น

แต่ซอฟต์แวร์ในรูปแบบที่แตกต่างกันจำนวนมากมีสตริงที่แนบมา ซอฟต์แวร์การสร้างแบบจำลองต้องทำสิ่งเดียวกันมากมาย ซอฟต์แวร์สำคัญทุกชิ้นมีไลบรารี่พิเศษที่ต้องใช้

ดังนั้นสิ่งที่ทำให้เกมแตกต่างกันอย่างไร

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

ด้วยเกมความต้องการทางธุรกิจของคุณคือ "สนุก" ลองเขียนข้อกำหนดทางเทคนิคสำหรับ "สนุก"

ในความเห็นที่ต่ำต้อยของฉันในฐานะนักพัฒนาเป็นสิ่งที่ทำให้เกมแตกต่างจากซอฟต์แวร์ปกติ คุณไม่สามารถพูดได้ว่า "เยี่ยมยอดซอฟต์แวร์นี้มีคุณสมบัติครบถ้วนตามคำขอของลูกค้า!" เพราะสิ่งที่พวกเขาต้องการทำคือความสนุก

คุณไม่จำเป็นต้องใช้กราฟิก 3 มิติและฟิสิกส์ขั้นสูงเพื่อความสนุก ทำไมคนยังเล่น Tetris ฟิสิกส์ของมันประกอบด้วย "เลื่อนบล็อกลง" "อย่าปล่อยให้บล็อกหลุดออกจากขอบเขต" และ "หยุดบล็อกเมื่อมันกระทบอะไรบางอย่าง" และในช่วงหลายปีที่ผ่านมามีหลายรุ่น บรรทัดล่างคือ - มันสนุก !!

ดังนั้นหากคุณต้องการเป็นผู้พัฒนาเกมที่ยอดเยี่ยมอย่าทิ้งสิ่งที่คุณได้เรียนรู้ในฐานะนักพัฒนาซอฟต์แวร์ปกติ มันยังมีสิ่งที่มีประโยชน์มาก และ @Sion นั้นถูกต้องเกี่ยวกับการแยกส่วนประกอบของคุณเหมือนกับที่คุณทำในซอฟต์แวร์ทั่วไป แต่ฟีเจอร์ที่สำคัญที่สุดที่คุณสามารถเพิ่มลงในเกมของคุณคือความสนุก สนุก ๆ สนุก ๆ สนุก ๆ สนุก ๆ นั่นเป็นสาเหตุที่การพัฒนาเกมมีอยู่นั่นคือสิ่งที่คุณต้องทำให้เกมของคุณประสบความสำเร็จ และเชื่อใจฉันในเรื่องนี้อย่างไรก็ตามมันสนุกที่จะเล่นมันเป็นอย่างน้อย 10 เท่าที่จะทำให้สนุก !!

ขอให้โชคดีกับการพัฒนาเกมของคุณ !! : D


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

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

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

1
@Phil และนั่นก็ดี หากคุณรู้ว่าอะไรสนุกกับคุณคุณต้องจำไว้ว่ามีเพียงสองร้อยตัวอักษรต้นแบบในโลกนี้ มองไปรอบ ๆ ที่ทำงานของคุณและจับคู่บุคลิกของเพื่อนร่วมงานกับคนที่คุณไปโรงเรียนมัธยมหรือวิทยาลัยด้วย คุณจะพบว่าส่วนใหญ่สามารถจับคู่ได้ ดังนั้นหากสิ่งใดที่สนุกสำหรับคุณอาจเป็นเรื่องสนุกสำหรับคนมากกว่าที่คุณรู้ เคล็ดลับคือการทำให้พวกเขารู้เกี่ยวกับเกมเพื่อให้พวกเขาสามารถสนุกได้!
corsiKa

นี่คือคำตอบที่ดีที่สุดที่ฉันเคยเห็น มีบทความมากมายเกี่ยวกับแนวคิดเฉพาะธุรกิจซอฟต์แวร์และอื่น ๆ แต่มีไม่มากเกี่ยวกับการพัฒนาเกม hmmmm
johnny

21

ฉันเป็นนักพัฒนาเกมเป็นหลักและไม่ใช่นักพัฒนาซอฟต์แวร์แบบดั้งเดิม แต่ฉันคิดว่ามีความแตกต่างที่สำคัญหลายประการ

เห็นได้ชัดว่าเป็นข้อสรุปทั่วไปหลายประการและไม่ครอบคลุม:
ทีมที่ใหญ่กว่า ภูมิหลังที่หลากหลายมากขึ้น (ศิลปินโปรแกรมเมอร์ผู้ผลิตแต่ละคนมีการเปลี่ยนแปลงมากขึ้น) รอบการพัฒนาอีกต่อไป มาตรฐานประสิทธิภาพที่สูงขึ้น ขนาดโครงการที่ใหญ่ขึ้น ความเสี่ยงที่ใหญ่กว่าและมีราคาแพงกว่าของความล้มเหลว สภาพแวดล้อมที่เครียดมากขึ้น

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

บางระบบระบุและแยกได้ง่าย?

  • ตรวจจับการชนกัน
  • การตอบสนองการชนกัน
  • ฟิสิกส์
  • นิเมชั่น
  • กราฟิก (2D และ 3D)
  • ปัญญาประดิษฐ์
  • อินพุตของผู้ใช้
  • ไฟล์อินพุต / เอาท์พุต
  • ระบบเครือข่าย

+1 สำหรับคำตอบที่ดีสำหรับคำถามแม้ว่าสำหรับเกมของฉันโดยเฉพาะฉันไม่ต้องจัดการกับเกมเหล่านั้นส่วนใหญ่ (แบบเทิร์นเบสและไทล์ดังนั้นไม่มีการชนจริงไม่มีฟิสิกส์กราฟิกประกอบด้วยสไปรต์และการขว้าง JQuery เพิ่มเติม ที่มัน, ผู้เล่น 2 คนดังนั้นไม่มี AI, การป้อนข้อมูลผู้ใช้จะถูกจัดการในลักษณะที่สงบซึ่งส่วนใหญ่ยังครอบคลุมถึงเครือข่ายด้าน) ฉันไม่แน่ใจว่าคุณหมายถึงอะไรโดย File IO แม้ว่านอกเหนือจากการพูด / บันทึกเกม จำเป็นต้องใช้ IO แบบไหนในเกมทั่วไป
Davy8

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

@ glowcoder ฉันรู้ว่าคุณกำลังพูดอะไร แต่ฉันคิดว่าฉันเข้าใจจุดที่ไซออนพยายามทำด้วยโดยทั่วไปเกมทั้งโครงการประสบความสำเร็จหรือล้มเหลวและมักเป็นปัจจัยที่คุณพูดถึงในคำตอบของคุณ : สนุกไหม? คุณสามารถแก้ไขข้อบกพร่องได้อย่างร้อนแรง แต่คุณไม่สามารถแก้ไขปัญหาความสนุกได้
Davy8

3
ฉันไม่เชื่อเลยว่า "ทีมใหญ่" นั้นเป็นความจริงแม้จะเป็นเรื่องทั่วไป แน่นอนว่าเกม AAA มีทีมใหญ่ - แต่ทำผลิตภัณฑ์ซอฟต์แวร์ที่ไม่ใช่เกมที่มีความซับซ้อนเทียบเท่า เกมมีจำนวนมากโดยบุคคลหรือทีมของสองหรือสามคน
Peter Taylor

@ Davy8 โอ้ถ้าเพียง แต่ความสำเร็จในเชิงพาณิชย์ของเกมเป็นสัดส่วนกับความสนุก :)
tenpn

2

ฉันไม่คิดว่าการเขียนโปรแกรมเกมจะแตกต่างจากโดเมนแอปพลิเคชันอื่น ๆ จากมุมมองของมันยากที่จะเลือกแยกความกังวลที่ถูกต้อง เมื่อใดก็ตามที่คุณใช้ทักษะของคุณไปยังโดเมนแอปพลิเคชันประเภทอื่นคุณจะพบว่าการเปลี่ยนแปลงไม่ราบรื่นอย่างที่คุณคาดหวังเพราะมีความแตกต่างอยู่เสมอ สิ่งที่ทำงานได้ในแอปพลิเคชันฐานข้อมูลของคุณมีรูปแบบ / สำนวนมากมายที่ทำงานได้ไม่ดีในแอพฝังตัวของคุณซึ่งมีรูปแบบ / สำนวนมากมายที่ทำงานได้ไม่ดีในระบบเรียลไทม์ซึ่งมีรูปแบบ / สำนวนมากมาย ไม่ทำงานในการเขียนโปรแกรมเกม อย่างไรก็ตามโปรแกรมเมอร์เกมมีปัญหาแบบเดียวกันเมื่อพวกเขาออกจากโดเมนโปรแกรมเกม ทุกอย่างเป็นเรื่องของสิ่งที่คุณคุ้นเคย

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


0

และสิ่งหนึ่งที่ฉันได้พบกับโครงการนี้คือการแยกความกังวลนั้นหนักกว่ากันมากเพราะทุกอย่างมีผลกระทบต่อสถานะและวัตถุทุกอย่างสามารถโต้ตอบกับวัตถุอื่น ๆ ได้หลายวิธี

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


0

ฉันคิดว่าการเขียนโปรแกรมเกมสนุกกว่าเดิม คุณสามารถทดสอบเกมของคุณตลอดเวลาคุณใช้ฟิสิกส์ที่แตกต่างกันซึ่งส่งผลให้เกิดพฤติกรรมที่แตกต่างกัน

จากประสบการณ์ของฉันการเขียนโปรแกรมเกมนั้นสนุกกว่าเมื่อเปรียบเทียบกับการพัฒนาซอฟต์แวร์ ในการพัฒนาซอฟต์แวร์คุณมีกฎเกณฑ์ทางธุรกิจที่ต้องปฏิบัติตาม คุณกำลังสร้างซอฟต์แวร์มันไม่สนุก การใช้ซอฟต์แวร์นั้นยอดเยี่ยมมีประโยชน์มีประโยชน์ แต่ไม่สนุก

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

PS: ฉันใช้เครื่องมือล่าสุดสำหรับการพัฒนาซอฟต์แวร์, HTML5, Asp.Net, C #, ฯลฯ ฉันยังคงพบ DirectX, UDK, XNA, Unity สนุกกับการเขียนโค้ดมากขึ้น

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