ปัญหาของฉันคือเมื่อใดก็ตามที่ฉันเริ่มเขียนโปรแกรมโคลนเกม (สำหรับฝึกซ้อม) หรือเกมของตัวเองหรือปัญหาอื่น ๆ ฉันหยุดที่ใดที่หนึ่งในระหว่างการพัฒนาเพราะฉันหมดความสนใจ
คุณติดตามความสนใจในการพัฒนาเกมหรือพัฒนาโดยทั่วไปอย่างไร?
ปัญหาของฉันคือเมื่อใดก็ตามที่ฉันเริ่มเขียนโปรแกรมโคลนเกม (สำหรับฝึกซ้อม) หรือเกมของตัวเองหรือปัญหาอื่น ๆ ฉันหยุดที่ใดที่หนึ่งในระหว่างการพัฒนาเพราะฉันหมดความสนใจ
คุณติดตามความสนใจในการพัฒนาเกมหรือพัฒนาโดยทั่วไปอย่างไร?
คำตอบ:
ในฐานะนักออกแบบฉันมักจะคิดว่าคนเป็นคอลเลกชันของสถิติและตัวแปร เมื่อคุณถามคำถามฉันสามารถเห็น [Pong_Dev_Interest] ลดลงอย่างง่ายดายและ [Spa_Inv_Dev_Interest] เพิ่มขึ้น เมื่อความแตกต่างระหว่างทั้งสองมีค่ามากกว่า [Dev_Project_Inertia] (ค่อนข้างเกี่ยวข้องกับ [Dev_Completion_Desire]) กิจกรรมใน [Pong_Dev] หยุดและหยุด [Spa_Inv_Dev]
ในภาษาอังกฤษ: คุณล้มเหลวในการทำโครงการให้เสร็จเพราะความปรารถนาที่จะได้เห็นผลิตภัณฑ์สำเร็จรูปถูกแทนที่โดยที่คุณไม่สนใจโครงการปัจจุบัน หากคุณจริงๆต้องการที่จะจบหนึ่งเพียงการแก้ปัญหาคือการเลือกอย่างใดอย่างหนึ่ง (ฉันไปกับโคลนสาบของคุณ) และจบมัน พูดกับตัวเองว่า "ตัวเองฉันรู้ว่าบางทีฉันสามารถคัดลอกโคลนนั้นได้มากกว่านี้ แต่เอ้ยแล้วมันแน่ใจว่ารู้สึกดีที่จะเตะโครงการออกไปนอกประตู" จากนั้นทำงานต่อไป
เมื่อคุณเบื่อให้ทำงานต่อไป เมื่อมันไปได้ดีทำงานต่อไป เมื่อมันตกลงไปอึทำงานต่อไป! อดทน! เป็น Dev ตัวน้อยที่ทำได้! ฉันเชื่อในตัวคุณ!
เสียงกระแอม เตรียมพร้อมที่นั่นมากไปหน่อย แต่คุณจะได้ดริฟท์
ฉันทำตามคำแนะนำของตัวเองทุกวัน ฉันได้รับสภาพแวดล้อมและนักแสดงของฉันทำงานสร้างขึ้นในเงื่อนไขการชนะและการสูญเสียของฉันและสร้างวัตถุที่ผู้เล่นจะใช้ โดยทั่วไปฉันพร้อมที่จะเริ่มออกแบบระดับและความสนใจของฉันแล้ว แต่ฉันทำทุกวัน ทุกวัน วันหนึ่งฉันจะทำ
และมันจะให้ความรู้สึกสบายมาก
ฉันมักจะถามคำถามเดียวกันกับตัวเองอยู่เสมอและมีสองสิ่งที่คุณสามารถทำได้เพื่อกระตุ้นตัวเอง (ส่วนมากโพสต์ไว้ที่นี่แล้ว) สิ่งที่ใช้งานได้ดีสำหรับฉันคือสิ่งที่ฉันได้ยินจากหนึ่งใน Indie Talks ที่ GDC ในปีนี้ฉันคิดว่าเป็นคนที่สร้างเกมโมนาโก :-)
ขั้นแรกค้นหาโครงการที่มีอยู่ในสายงานประสบการณ์ของคุณ คืออย่าเริ่มทำ FPS ถ้าคุณไม่รู้พื้นฐานของ OpenGL / DirectX (นอกเสียจากว่าคุณใช้เอ็นจิ้นเกม แต่นั่นไม่ใช่จุดที่นี่ ;-))
จากนั้นทำรายการสิ่งที่ต้องทำและเหตุการณ์สำคัญที่คุณชอบเพื่อให้บรรลุดังนั้นคุณจะรู้ได้เสมอว่าจะไปที่ไหน สิ่งที่ต้องทำเป็นส่วนสำคัญ กำหนดงานของคุณเช่นกันว่างานที่สามารถทำได้ในวันหรือในสองสามชั่วโมง ดังนั้นเมื่อคุณเริ่มเขียนโค้ดออกแบบสร้างแบบจำลอง ฯลฯ คุณจะเห็นแสงที่ปลายอุโมงค์ ไม่มีอะไรน่าตกต่ำไปกว่าการออกแบบและเขียนโปรแกรม Game Engine ขนาดใหญ่ของคุณเป็นเวลาหนึ่งเดือนโดยไม่ต้องใกล้ถึงเส้นชัย แยกงานใหญ่ออกเป็นชิ้นเล็ก ๆ การทำภารกิจให้สำเร็จอย่างรวดเร็วนั้นเป็นรางวัลที่คุ้มค่าและทำให้คุณดำเนินต่อไป ตัวอย่างเช่นนี่คือรายการงานของฉันสำหรับเกมยิงอวกาศขนาดเล็กในคราวเดียว:
งานทั้งหมดนี้ง่ายต่อการทำและเมื่อพวกเขาทำงานในเกมคุณสามารถทำซ้ำในพื้นที่เหล่านั้นและขัดมัน
และเดี๋ยวก่อนฉันจบเกมเล็ก ๆ มันไม่สวย แต่ก็ทำโดยทั่วไปซึ่งให้ผลคุ้มค่าในตอนท้าย :-)
คุณต้องระบุปัญหาก่อนจึงจะสามารถแก้ไขได้ ทำไมคุณถึงหมดความสนใจ?
สำหรับฉันมันมักจะเกิดขึ้นเพราะฉันใช้เวลามากกับเฟรมเวิร์กและหลังจากผ่านไปหลายสัปดาห์
วิธีหนึ่งที่ฉันค้นพบเพื่อปรับปรุงแรงจูงใจคือการทำต้นแบบซ้ำ ๆ หรือการพัฒนาแบบทดสอบขับเคลื่อน โดยทั่วไปแล้วจะเกี่ยวข้องกับกรณีทดสอบอัตโนมัติ แต่เนื่องจากเกมเป็นเกมที่ใช้กราฟิกมากคุณจะไม่สามารถทำการทดสอบหน้าจอและภาพเคลื่อนไหวโดยอัตโนมัติได้
สำหรับชิ้นส่วนที่ไม่สามารถเป็นแบบอัตโนมัติได้โดยทั่วไปฉันจะวางแผนสองเหตุการณ์สำคัญสำหรับเกม เหตุการณ์สำคัญที่ 1 อาจจะทำให้ผีสางบนหน้าจอและทำให้ WASD ทำงานได้ ฉันจะเพิ่มฟีเจอร์และ refactor เพิ่มทีละน้อย
มันเป็นรูปแบบของการแบ่งและพิชิต เจาะเข้าไปในช่องเล็ก ๆ ทำงานบนสิ่งที่คุณคุ้นเคยแล้วรวมเข้าด้วยกัน ล้างและทำซ้ำ ในที่สุดคุณอาจเห็นวิธีที่ดีกว่าในการจัดเรียงสิ่งต่าง ๆ อีกครั้งและคุณสามารถสร้างรหัสของคุณใหม่ได้ มันไม่ยุ่งที่จะมีสถาปัตยกรรมอยู่ข้างหน้า แต่โดยปกติเมื่อเริ่มต้นในการเขียนโปรแกรมมันยากที่จะมองเห็นสถาปัตยกรรมจนกว่าคุณจะมีประสบการณ์หลายปี
ฉันพยายามหาส่วนที่ง่ายกว่าที่จะทำ เช่นถ้าฉันไม่สามารถหาวิธีทำบางอย่างหรือไม่ต้องการฉันก็เปลี่ยนเกียร์และทำโมเดลหรือเขียน shader เป็นต้น
หากคุณไม่ทราบวิธีการจัดโครงสร้างเกมอย่างถูกต้องคุณควรเริ่มเรียนรู้วิธีทำให้องค์ประกอบของเกมเหล่านั้นกลายเป็นบล็อกอิสระของเกม สิ่งนี้อาจช่วยคุณได้หลายวิธี (นอกเหนือจากความน่าสนใจ) เช่น: ประสบการณ์การแบ่ง abstractions จากการใช้งานการใช้ประโยชน์จากการสืบทอดและการออกแบบอินเตอร์เฟสที่ดีขึ้นหรือเพียงวิธีทำให้เกมเป็นไฟล์หลาย ๆ ไฟล์ ความน่าเชื่อถือของการนำไปใช้งานโดยใช้ dynamic link libraries หรือส่วนต่อประสานอื่น ๆ ที่ใช้) ไม่ช้าก็เร็วคุณจะรู้ว่าทุกสิ่งสามารถทำได้และจากนั้นคุณจะพบว่าตัวเองไม่มีปัญหาแรงจูงใจนั้นอีกต่อไป (คุณเพิ่งทำ)
ฉันมีปัญหาเดียวกันเมื่อฉันติดอยู่ในตอนแรก แต่ทางออกที่ดีที่สุดคือการเคลื่อนที่ต่อไปหรือคุณสามารถหยุดนิ่งตลอดไปจนกว่าจะมีบางสิ่งรีเซ็ตคุณอย่างใด (และอาจใช้เวลานานเกินไป) มันไม่สำคัญว่าคุณจะเขียนโค้ด 2 บรรทัดบางวัน แต่ทุกวันคุณมีอย่างน้อยต้องเปิดโครงการและพยายามปรับปรุงบางอย่าง (มันเป็นงานที่ไม่รู้จบ แต่นั่นไม่ใช่ปัญหา)
หาก ณ จุดหนึ่งโปรแกรมไม่ทำงานคุณควรเลิกทำสิ่งที่คุณทำล่าสุด (สำรองข้อมูลให้ใช้ svn หรืออย่างน้อย. rar ที่มีชื่อของวันที่) จนถึงจุดที่ใช้งานได้และลองทำใหม่ อีกครั้งหรือทำงานกับการเปลี่ยนแปลงอื่น ๆ ที่คุณต้องทำจนกว่าคุณจะต้องการลองอีกครั้ง
ตอนแรกคุณควรลองแก้ไขข้อผิดพลาดด้วยความช่วยเหลือของตัวดีบัก แต่ฉันไม่รู้ว่าภาษาของคุณรองรับตัวดีบักหรือไม่ ... แต่ถ้าคุณบังเอิญใช้ C ++ หรืออะไรทำนองนั้น (ซึ่งฉันอยากจะแนะนำถ้าคุณ ต้องการสร้างเกม) คุณควรใช้ดีบักเกอร์ให้ดีขึ้นเพราะจะช่วยคุณได้มากในการค้นหาข้อผิดพลาดได้อย่างรวดเร็วในการเรียกใช้ครั้งเดียว
การอ่านเกี่ยวกับการเขียนโปรแกรมเกมเป็นสิ่งที่ดีที่คุณควรอ่านต่อหากคุณไม่ต้องการทำงานเป็นพิเศษ มีหนังสือและบทความดีๆเกี่ยวกับเอ็นจิ้นเกมและการออกแบบที่คุณสามารถหาได้ทางออนไลน์
คุณจะไม่สามารถทำอะไรได้ถ้าคุณไม่ฝึก การพยายามหาจุดบกพร่องอาจทำให้รู้สึกหงุดหงิดมากในตอนแรก แต่จากนั้นคุณเรียนรู้ว่ามันง่ายจริง ๆ ถ้าคุณรู้วิธีที่จะทำ นี่คือสิ่งที่คุณเรียนรู้วิธีหลีกเลี่ยงเวลาด้วยการเขียนโปรแกรมในแบบที่การเปลี่ยนแปลงของคุณจะไม่ส่งผลกระทบต่อโปรแกรมทั้งหมดลดจำนวนสถานที่ที่จะหาข้อผิดพลาด ถ้าทุกครั้งที่คุณยอมแพ้มันก็ยากที่จะทำเกมครั้งต่อไปที่คุณคิดว่าจะเลิกเล่น เพียงแค่เรียนรู้วิธีเอาชนะช่วงเวลาที่เลวร้ายด้วยการเอาชนะมัน: P หากคุณไม่ผ่านช่วงเวลาที่คุณสูญเสียแรงจูงใจความเกียจคร้านของคุณจะชนะและคุณจะสูญเสียนั่นคือวิธีการทำงานจนกว่าคุณจะเรียนรู้วิธีฟื้นแรงบันดาลใจ โดยไม่ต้องใช้ความพยายามมาก
ป.ล. ฉันสงสัยว่า ... คุณกำลังใช้ทำเกมอะไร
[หมายถึงถูกทิ้งไว้เป็นความคิดเห็นต่อคำตอบของอานนท์ซึ่งถูกลบเมื่อฉันโพสต์ เขาบอกว่าเขาใช้งานฟังก์ชั่นนี้ได้ทั้งหมดจากนั้นแบ่งรหัสไฟล์เดียวออกเป็นหลายไฟล์
Re: Refactoring เนื้อหาสามารถเกิดขึ้นได้ บางครั้งถึงแม้จะมีเครื่องมือที่ดีเช่น Git แต่การผสานอาจล้มเหลวแทนที่จะใช้คุณสมบัติ A และฟีเจอร์ B ทั้งสองทำงานไม่ได้ผล! ตัวเลือกเดียวคือกลับไปที่ A แล้วลองอีกครั้ง โชคดีที่การควบคุมเวอร์ชันจะบันทึกรหัสนี้ให้คุณ หากคุณไม่ได้ใช้การควบคุมเวอร์ชันจริงอย่างน้อยก็ทำได้ด้วยตนเองโดยการซิปโฟลเดอร์ dev ของคุณเป็นประจำ - พื้นที่ HD ราคาถูก! โดยสรุปกลับไปที่สิ่งที่ใช้ได้ผลและสร้างใหม่ในขั้นตอนที่เล็กลงทำให้แน่ใจว่าเกมยังคงทำงานในแต่ละขั้นตอน มันเป็นเรื่องน่าหดหู่ที่จะทำความสะอาดโค้ดเพื่อดูทุกสิ่งที่แตกสลาย เพียงเปลี่ยนกลับเป็นรหัสเดิม
เพื่อให้มีแรงบันดาลใจอยู่เรื่อย ๆ บอกตัวเองว่าคุณกำลังสร้างเกมไม่ใช่เครื่องมือสร้างเกม - ดียกเว้นว่าเป็นของคุณ และมันก็เจ๋งเกมเอ็นจิ้นก็ยอดเยี่ยม แต่บ่อยครั้งที่พวกมันเข้าสู่เกม
เพื่ออธิบายประเด็นของฉันฉันสามารถบอกคุณได้ว่าสิ่งต่าง ๆ เกิดขึ้นบ่อยแค่ไหน: ในตอนแรกคุณสร้างสไปรต์ไม่กี่เคลื่อนย้ายพวกมันบนหน้าจอด้วยโปรโตเฟรม - ของคุณและคุณตื่นเต้น! คุณสามารถเห็นความก้าวหน้าของคุณและมันก็เป็นไปด้วยดี; คุณสามารถแสดงให้เพื่อนของคุณ
จากนั้นเมื่อคุณเล่นกับแนวคิดของคุณแล้วคุณจะรู้ว่าคุณต้องทำให้เฟรมเวิร์ก (หรือเอ็นจิ้นของเกม) มีความยืดหยุ่นมากขึ้น หรือว่าคุณควรพิจารณาปัจจัยบางคลาสที่ไม่เป็นไปตามรูปแบบล่าสุด และจากที่นั่นคุณเริ่มต้นความตาย: คุณหยุดทำงานในเกมและเริ่มทำงานกับเกมเอ็นจิ้น และเอ็นจิ้นของเกมไม่สนุกเท่าที่จะทำ คุณสามารถใช้การปรับโครงสร้างเป็นเวลาหลายชั่วโมงและไม่มีอะไรให้แสดงในเกม แล้วคุณก็หมดความสนใจ
ดังนั้นอย่าลืม: สร้างเกมไม่ใช่เครื่องมือสร้างเกม refactor เท่านั้นเมื่อคุณต้องการ อย่ายืดหยุ่นเกินไป - เพียงแค่ขั้นต่ำสุด *
*: แน่นอนว่าการปรับโครงสร้างและความยืดหยุ่นเป็นสิ่งสำคัญ แต่ไม่สำคัญเท่ากับการมีเกมเสร็จ
ลองสร้างเวอร์ชั่นที่เล่นได้ในหนึ่งวันไม่ว่าจะง่ายขนาดไหน จากนั้นทำซ้ำ
อย่าพยายามทำให้เกมของคุณซับซ้อนเกินไป!
แบ่งงานของคุณออกเป็นงานย่อยขนาดเล็กเฉพาะเจาะจงที่วัดได้ หากภารกิจย่อยใด ๆ ดูใหญ่เกินไปให้แบ่งย่อยเพิ่มเติม
ตรวจสอบให้แน่ใจว่าคุณเขียน "DONE" ด้วยอักษรตัวใหญ่ในรายการงานของคุณ (ฉันใช้ไฟล์. txt) เมื่องานของคุณเสร็จสิ้น อย่าลบงานออกเพราะจะทำให้คุณไม่ก้าวหน้า
นี่คือสิ่งที่ฉันทำ มันทำงานในอดีต