ฉันเชื่อว่าในการที่จะเป็นนักพัฒนาเกมที่ดีคุณต้องสร้างเกม
จากมุมมองของโปรแกรมเมอร์เกมระดับเริ่มต้นที่ดีสำหรับมือของคุณสกปรกคืออะไร? แต่ละเกมเหล่านี้สอนทักษะและความท้าทายอะไรให้คุณ?
ฉันเชื่อว่าในการที่จะเป็นนักพัฒนาเกมที่ดีคุณต้องสร้างเกม
จากมุมมองของโปรแกรมเมอร์เกมระดับเริ่มต้นที่ดีสำหรับมือของคุณสกปรกคืออะไร? แต่ละเกมเหล่านี้สอนทักษะและความท้าทายอะไรให้คุณ?
คำตอบ:
ฝ่าวงล้อม
เกมที่ง่ายเนื่องจากคุณไม่มีสถานะที่ต้องกังวลมากนัก (มันเป็นค่าของอิฐ - ถ้าคุณมีเพียงสีอิฐหนึ่งสีมันคืออาร์เรย์ของธง) ไม่มี AI ใด ๆ และคุณต้องทำ ฟิสิกส์นิดหน่อยเพื่อให้ลูกบอลเด้งอย่างถูกต้อง
เล่นไพ่คนเดียว
กฎมีความซับซ้อนกว่าการฝ่าวงล้อมเล็กน้อยและอินเทอร์เฟซสำหรับมันแตกต่างกันมาก มันบังคับให้คุณคิดถึงวิธีการต่าง ๆ ในการนำเกมมาใช้ นั่นคือสิ่งที่ใช้ได้ผลในเกมหนึ่งไม่จำเป็นว่าคุณจะต้องใช้อะไรในเกมอื่น
Pac-Man
อันนี้ดีเพราะคุณได้ทำงานกับ AI เล็กน้อย การมีผีติดตามผู้เล่น (แต่ไม่ดีเกินไป - คุณต้องการให้ผู้เล่นมีโอกาส) สามารถนำไปใช้ได้อย่างรวดเร็วและคุณจะมีเกมเล็ก ๆ ที่สนุกที่คุณสามารถปรับแต่งและแสดงให้กับเพื่อนและครอบครัว (ข้อเสนอแนะในเชิงบวกอยู่เสมอ เป็นสิ่งที่ดีเมื่อคุณเริ่มต้น)
ฉันพบว่าหากคุณมองหาแรงบันดาลใจในวิดีโอเกมช่วงต้นคุณสามารถค้นหาแนวคิดมากมายที่ใช้งานได้ง่าย นอกจากนี้คุณยังสามารถหลบไปกับงานศิลปะและเสียงที่เรียบง่ายเพราะคุณกำลังคัดลอกบางสิ่งที่เรียบง่าย สิ่งนี้จะช่วยให้คุณมุ่งเน้นไปที่พื้นฐานก่อน - ทำให้เกมของคุณวนไปมาและวิ่งหาวิธีที่จะนำพิกเซลของคุณไปยังหน้าจอเล่นเสียงรักษาคะแนนทำคะแนนให้ผู้เล่นเข้าสู่เกม
แทบจะไม่สำคัญว่าเกมใดที่คุณเลือกก่อน - ให้แน่ใจว่าคุณเลือกสิ่งที่ง่ายที่คุณสามารถรับผลลัพธ์ได้อย่างรวดเร็วด้วยวิธีนี้คุณสามารถย้ายในวันถัดไปและสร้างอีกเกมหนึ่ง เเละอีกอย่าง. และอื่น ๆ - ยิ่งคุณทำมากเท่าไหร่คุณก็ยิ่งดันตัวเองขึ้นและในที่สุดคุณก็จะสร้างเกมที่ซับซ้อนก่อนที่คุณจะรู้ตัว
ผมขอขอแนะนำให้โปรแกรมเมอร์มือใหม่ควรเริ่มต้นด้วยเกมที่ง่ายที่สุดที่พวกเขาจริงต้องการที่จะเขียน ตามที่กล่าวไว้โดย Matt Rix ส่วนใหญ่ของการเขียนเกมกับการสาธิตกำลังผลักดันสิ่งที่น่าเบื่อจนจบ - เครดิตเมนูการทดสอบการเล่นคะแนนสูงการหยุดชั่วคราวการทดสอบการเล่นระดับความยากการเปลี่ยนสถานะเกมที่สะอาดเล่น การทดสอบ ฯลฯ สิ่งนั้นใช้เวลาอย่างน้อยครึ่งหนึ่งที่คุณจะใส่เข้าไปและมันก็ไม่สนุก มันไม่ใช่ ดังนั้นถ้าคุณรักแนวคิดและมีแรงจูงใจจริงๆคุณจะให้ขึ้นและย้ายไปก่อนที่เกมจะเป็นเกม
หากคุณต้องการเขียนเกม RPG ให้หาแนวความคิดเกี่ยวกับเกม RPG ที่ง่ายที่สุดและจัดการได้ง่ายที่สุดที่คุณสามารถทำได้โดยทำตามที่คุณต้องการและทำ เช่นเดียวกันถ้าคุณต้องการทำปืนไซไฟหรือ platformer ที่มีธีมแนวสยองขวัญหรืออะไรก็ตาม เลือกสิ่งที่คุณจะทำให้เสร็จเพื่อที่คุณจะยังคงอยากที่จะทำทุกอย่างให้เสร็จ แต่คุณยังคงต้องดูงานหลายสิบชั่วโมงก่อนที่คุณจะทำเสร็จ
เกมที่ดีที่สุดในการ "รับปีกของคุณ" ด้วยหรือไม่ คนที่คุณทำเสร็จแล้ว ฉันไม่สนใจว่าคุณสาธิตเกม PONG / Breakout / Galaga / Tetris เพียงครึ่งเดียวคุณไม่ใช่นักพัฒนาเกมจนกว่าคุณจะวางจำหน่ายเกมที่เสร็จสมบูรณ์แล้วจริง ๆ
นอกจากนี้ยังไม่มีใครอยากเล่นอีกรุ่นของเกมอายุ 40 ปีและอย่างน้อยประเด็นของการเขียนเกมก็คือให้คนเล่นใช่ไหม?
ฉันโพสต์บันไดนี้ที่ TIGsource เมื่อครู่ที่ผ่านมา มันเริ่มจากพื้นฐานมากไปจนถึงซับซ้อนมาก
กฎการเรียนรู้การเขียนโปรแกรมเกมที่สำคัญที่สุด: การเรียนรู้การเขียนโปรแกรมยาก การเรียนรู้การออกแบบเกมนั้นยาก การเรียนรู้วิธีสร้างเกมหรือเสียงที่ดีนั้นเป็นเรื่องยาก พยายามทำสิ่งเหล่านี้ทั้งหมดในเวลาเดียวกันเป็นสูตรสำหรับความล้มเหลว เรียนรู้สิ่งหนึ่งครั้ง
Corollary: ตั้งโปรแกรมเกมที่ออกแบบงานศิลปะและเสียงเสร็จเรียบร้อยแล้ว สร้างโคลนไม่ใช่เกมดั้งเดิม
ในชั้นเรียนของฉันฉันมักจะแนะนำเกมเหล่านี้ให้เริ่มต้นตามลำดับ:
1) เตตริส ศิลปะเป็นรูปสี่เหลี่ยมผืนผ้าสีซึ่งแม้แต่ klutz ทั้งหมดก็สามารถวาดใน Microsoft Paint ได้ คุณไม่ต้องการเสียง การเขียนโปรแกรมนั้นค่อนข้างง่าย แต่ยังคงต้องมีบางสิ่งที่สำคัญ: การทำความเข้าใจความแตกต่างระหว่างสถานะเกมภายในและสิ่งที่วาดบนหน้าจอ ความสามารถในการวาดบนหน้าจอช่วงเวลา (อาจเกี่ยวข้องกับสไปรต์และการผสม) ความสามารถในการรับอินพุตของผู้ใช้แบบเรียลไทม์แทนที่จะใช้เพียง getch () หรือ scanf () ที่คุณต้องรอ
2) การฝ่าวงล้อม / Arkanoid ศิลปะยังคงเป็นรูปสี่เหลี่ยมผืนผ้าสีและคุณยังไม่ต้องการเสียง ใช้แนวคิดพื้นฐานทั้งหมดของ Tetris รวมถึงการตรวจจับการชนขั้นพื้นฐานและฟิสิกส์ 2D เนื่องจากลูกบอลต้องเคลื่อนที่และเด้งอย่างราบรื่น
3) Gradius / R-Type คุณอาจพบชุดไพ่ฟรีแวร์เพื่อทำสิ่งนี้ ที่นี่พื้นหลังกำลังเลื่อนดังนั้นคุณต้องเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการทำงานของหน่วยความจำกราฟิกโดยใช้เทคนิคเช่นการพลิกหน้าและการบัฟเฟอร์สองครั้งและการวาดสิ่งนอกขอบเขตของหน้าจอที่มองเห็นได้ คุณมีแนวโน้มที่จะมีศัตรูแบบไดนามิกและกระสุนวางไข่ดังนั้นคุณจะต้องเรียนรู้ที่จะทำความสะอาดหลังจากตัวเอง (เช่นกำจัดศัตรูและกระสุนที่ออกจากหน้าจอเพื่อให้เกมของคุณไม่รั่วไหลของหน่วยความจำเช่นตะแกรง)
4) Super Mario Bros. คล้ายกับโครงการเลื่อนครั้งก่อนยกเว้นตอนนี้เลื่อนอยู่ภายใต้การควบคุมของผู้เล่นไม่ใช่อัตโนมัติ คุณต้องจัดการกับแรงโน้มถ่วงและทุกสิ่งที่สนุกไปกับมัน (เช่นไม่ล้มลงบนพื้นเพียงเพราะคุณมีพิกเซลไม่กี่พิกเซลด้านบนในเฟรมสุดท้ายและต้องการย้ายไปที่พิกเซลด้านล่างในเฟรมถัดไป ) โปรดทราบว่าแรงโน้มถ่วงเป็นเงื่อนไข: มันมีผลกับผู้เล่นและศัตรูบางคน แต่โดยทั่วไปแล้วไม่ใช่แพลตฟอร์มหรือเหรียญลอยหรืออะไรก็ตามซึ่งแตกต่างจากโลกจริงเล็กน้อย
หากคุณสามารถทำทั้งสี่อย่างนี้ได้คุณควรจะทำเกม 2D ที่คุณต้องการได้ เครื่องมือทั้งหมดอยู่ที่นั่น ถ้าคุณต้องการสร้างเกม 3 มิติ ... เรียนรู้ 2D ก่อนเพราะง่ายกว่ามากและคุณไม่จำเป็นต้องเข้าใจคณิตศาสตร์ในเชิงลึกและคุณต้องเข้าใจสิ่ง 2D ต่อไป ... และเมื่อคุณ สะดวกสบายกับสิ่งนั้นเริ่มทำงานกับเครื่องมือ 3D พื้นฐานบางอย่าง (เช่นไลบรารีเช่น Torque หรือ Unity หรือเกมโอเพนซอร์สเช่น Doom และ Quake ดั้งเดิม)
โชคดี!
ตอนนี้เป็นคำถามที่ดีจริง ฉันไม่รู้ว่าคุณอยู่ที่ไหนดังนั้นฉันจะแกว่งไปบนท้องฟ้าและคิดว่าคุณไม่เคยเขียนรหัสบรรทัดในชีวิตของคุณ ตัดส่วนใดก็ตามของจมูกที่ทำให้คุณขุ่นเคือง
ฉันคิดว่าฉันจะตอบคำถามที่แตกต่างออกไปเล็กน้อยจากที่คุณถามและฉันจะยกตัวอย่างเพื่อตอบสนองคำถามที่คุณถามในแหล่งกำเนิด เหตุผลที่ฉันทำอย่างนั้นก็เล็กน้อย แต่ฉันเชื่อว่าความแตกต่างอย่างมีนัยสำคัญในมุมมอง: มันไม่ได้เป็นเกมที่เฉพาะเจาะจงที่มีความสำคัญเท่าที่ความคิดของเกมเหล่านั้นทำให้นักออกแบบ
คุณรู้หรือไม่ว่าผู้คนพูดถึงคุณควรเรียนรู้ภาษาการเขียนโปรแกรมที่หลากหลายเพื่อที่จะกินความคิดและหัวใจและตับของพวกเขาและเพื่อให้ได้รับพลังอันทรงพลัง? มีความจริงที่แท้จริง - หลังจากภาษาการเขียนโปรแกรมบริสุทธิ์หรือใกล้บริสุทธิ์ครั้งแรกของคุณแม้ในภาษาที่จำเป็นคุณจะต้องเขียนฟังก์ชั่นฟรีผลข้างเคียงส่วนใหญ่เพราะพวกเขากำหนดไว้มากขึ้นและทุกสิ่งที่คุณเขียน แม้ในภาษาที่ไม่อยู่ในรูปแบบนั้นจะดีกว่า มันไม่สำคัญว่ามันจะเป็นภาษาใด - haskell, ml / ocaml / smlnj, formulaONE, c ++ template, อะไรก็ตาม - คุณยังจะได้เรียนรู้วิธีการทำงานหลาย ๆ ชั้นโดยไม่ต้องพึ่งพาสถานะผลข้างเคียง ครั้งแรกที่คุณเรียนรู้ภาษาโปรแกรมที่ใกล้เคียงกับเครื่องจักรคุณจะต้อง กำลังจะเรียนรู้เกี่ยวกับสิ่งที่เป็นนามธรรมประเภทขนาด ครั้งแรกที่คุณเรียนรู้ภาษาที่มีการประกาศหรือมีข้อ จำกัด คุณจะได้เรียนรู้เกี่ยวกับการกำหนดขอบเขตเป็นเครื่องมือในการตัดสินใจ ครั้งแรกที่คุณเรียนรู้ภาษาการค้นหาย้อนรอยคุณจะต้องเรียนรู้ที่จะอธิษฐาน Ia! เอีย! C'thulhu F'tagn Nagn! แล้วเราจะกลับไปกินหัวใจและตับและวงกลมของชีวิตก็จะสมบูรณ์
การออกแบบเกมไม่แตกต่างกัน คุณไม่จำเป็นต้องเรียนรู้เกมใด ๆ โดยขนานกับภาษาเฉพาะ แต่ต้องเรียนรู้เกมตัวแทนที่เป็นสัญลักษณ์ซึ่งสามารถจัดการกับความคิดเช่นครอบครัวที่มีลักษณะทางภาษา นอกจากนี้ยังมีการกินตับและหัวใจมากมาย รับข้าวเกรียบพริกไทย
ปิดปากที่นี่ (อย่างที่ฉันเห็นมันอย่างน้อย) คือคุณต้องการที่จะครอบคลุมรายการหัวข้อขนาดใหญ่ มันเหมือนกับการกำจัดความชำนาญในแผ่นอักขระ - คุณพร้อมที่จะให้กลไกของคุณมากขึ้นในการรับมือกับสถานการณ์ที่กำหนด ใช่พวกเขามีความสามารถในระดับ แต่มีจุดหนึ่งหรือสองในหลาย ๆ สิ่งที่คุณสามารถทำได้ทั่วกระดานนั่นหมายความว่าเมื่อถึงเวลาที่จะใช้อย่างใดอย่างหนึ่งคุณจะไม่เริ่มต้นจากศูนย์และคุณรู้ว่ามีกลวิธีอะไรบ้าง สำหรับคุณที่จะไต่ขึ้นไปด้วย
ดังนั้นดูสิ
ก่อนอื่นคุณต้องตัดฟันของคุณ สิ่งเหล่านี้มีประโยชน์เมื่อคุณเรียนรู้ที่จะกำหนดเป้าหมายแพลตฟอร์มใหม่หรือเมื่อคุณกู้คืนจากความจำเสื่อม สิ่งเหล่านี้มีความรวดเร็วไม่น่ากลัว
ในการสั่งซื้อ:
เมื่อคุณทำสิ่งเหล่านี้ล้มเหลวคุณก็พร้อมที่จะกำหนดเป้าหมายแพลตฟอร์มแล้วการเรียนรู้อาจเริ่มต้นขึ้น
สิ่งเหล่านี้อยู่ในลำดับที่ไม่เจาะจง คุณอาจจัดเรียงใหม่ตามที่เห็นสมควร ฉันจะยกตัวอย่างให้กับแต่ละคน แต่พวกมันไม่ได้เป็นกฎเกณฑ์ หากเกมอื่นให้ประสบการณ์เดียวกันกับคุณและมีขนาดเล็กพอที่จะเป็นส่วนหนึ่งของชุดบทเรียนคุณสามารถสลับไปมาได้ด้วยเหตุผลจริงมันดีที่จะมีความเชี่ยวชาญในการเรนเดอร์หน้าจอและการป้อนข้อมูลอย่างรวดเร็ว คุณจะต้องใช้มันให้มาก รอสักสองสามเกมก่อนที่จะพยายามเขียนคลาส abstraction คุณไม่ต้องการถูกจับในสิ่งที่ไร้เดียงสาไร้สาระ
... เอ๊ะ ฉันเบื่อ.
Tetris
เกมที่พบบ่อยมากโอเพนซอร์ซมากมายที่ทำออกมาถ้าหากคุณติดขัด สอนพื้นฐานของกราฟิก 2D การจัดการอินพุตการให้คะแนน ฯลฯ
จากนั้นนำความคิดดั้งเดิมนี้และวางลงบนหมุน ฉันได้เรียนรู้พื้นฐานของกราฟิก 3D / OpenGL โดยการเขียนTetris รุ่น 3 มิติสำหรับชั้นเรียนคอมพิวเตอร์กราฟิกในวิทยาลัย
GameDev.netมีบทความที่ดีแนะนำความก้าวหน้าของเกมเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการพัฒนาเกม คำแนะนำที่ชื่นชอบจากรายการคือการขัดเกมเหล่านี้ เสร็จสิ้นโดยสมบูรณ์เพื่ออยู่ในสถานะ releasable
รายการมีดังต่อไปนี้ (บางรายการได้รับคำตอบอื่น):
ฉันชอบที่จะเริ่มต้นทุกคนของฉันด้วยการผูกขาด ฉันมักจะใช้Monopoly ของ Brett Schuchert เป็น "รหัสกะตะ"เป็นพื้นฐานของการออกกำลังกาย แต่ฉันเพิ่มเข้าไปเยอะ มีหลายสาเหตุที่ฉันชอบทำสิ่งนี้
ฉันใส่ใจอย่างลึกซึ้งเกี่ยวกับวิธีการเข้ารหัสที่ดี (รูปแบบการออกแบบ, TDD, SOLID, การรวมอย่างต่อเนื่องและอื่น ๆ ) และวางข้อ จำกัด มากมายกับนักพัฒนาของฉันเมื่อพวกเขาทำแบบฝึกหัดนี้
ทุกคนรู้ดีว่ากฎของการผูกขาดและเกมทั้งหมดสามารถทำได้ในวันเดียว สิ่งนี้ทำให้ผู้พัฒนาใหม่ได้รับชัยชนะอย่างรวดเร็วและทำให้พวกเขามีส่วนร่วมมากขึ้น
ความต้องการเริ่มต้นเริ่มต้นด้วยการควบคุมแป้นพิมพ์ แต่จากนั้นฉันจะเพิ่มข้อกำหนดสำหรับการควบคุมเมาส์ในภายหลัง สิ่งนี้ทำให้ผู้พัฒนาคิดถึงสิ่งต่าง ๆ วิธีการปรับโครงสร้างโค้ดที่มีอยู่การเขียนโปรแกรมการเปลี่ยนชิ้นส่วนของระบบเป็นส่วนต่อประสานแทนที่จะเป็นคลาสที่เป็นรูปธรรมนามธรรมที่ดีขึ้น / เหมาะสมสิ่งที่ต้องทดสอบหน่วย ทำให้สำหรับการทดสอบหน่วยที่ดี
บางครั้งเราเสียบ AI ที่ซับซ้อนมากขึ้นบางครั้งเราก็ทำไม่ได้ บางครั้งเราทำงานกับเกมกระดานอื่นที่มีตรรกะที่ซับซ้อนกว่าเล็กน้อยเช่น Chutes และ Ladders หรืออะไรบางอย่าง บางครั้งเราแยกตัวออกจากเกมกระดานอย่างสมบูรณ์และทำเกมโป๊กเกอร์หรือแบล็คแจ็ค
ส่วนที่สำคัญจริงๆสำหรับฉันก็คือผู้คนจะได้รับชัยชนะอย่างรวดเร็วและพวกเขาเห็นว่าคุณสามารถสร้างซอฟต์แวร์ที่ยืดหยุ่นได้อย่างไรเมื่อคุณทำตามมาตรฐานการเขียนโปรแกรมที่ดี แบบฝึกหัดเหล่านี้สร้างความมั่นใจอย่างรวดเร็ว บางครั้งนักพัฒนาที่มีประสบการณ์ชอบทำสิ่งเหล่านี้ด้วยตัวเองเพียงเพื่อหยุดพักจากโครงการที่ซับซ้อนมากขึ้นหรือฝึกฝนเทคนิคใหม่ที่พวกเขาเพิ่งเรียนรู้
เลือกของคุณผจญภัย
มีเคล็ดลับนี้จากเพื่อนที่เริ่มต้นการเขียนโปรแกรมโดยการสร้างเกมมากคล้ายกับเลือกหนังสือผจญภัยของคุณ มันเป็นเกมผจญภัยข้อความธรรมดาที่มีผลลัพธ์เช่นนี้:
You are standing in a forest clearing in the middle of the night. You hear
some wolves howl in the distance. Should you:
a) make camp for the night
b) go further north
> _
การสร้างเกมดังกล่าวควรสอนให้คุณสร้างเกมสล็อตอินพุตคอนโซลพื้นฐานและสคริปต์พื้นฐาน มันค่อนข้างง่ายในการติดตั้งและง่ายสำหรับผู้เริ่มต้นที่จะกระโดดลงไปเนื่องจากคุณไม่จำเป็นต้องใช้เอ็นจิ้นกราฟิกในการเขียนเกม ผู้เริ่มต้นระดับสูงอาจเขียนเอ็นจิ้นสคริปต์
จากประสบการณ์ของฉันกับโปรแกรมเมอร์มือใหม่ความก้าวหน้ามักจะเป็นแบบนี้:
ฝ่าวงล้อมพงษ์หรือดาวเคราะห์น้อย
มีความแตกต่างกันมากระหว่างเป็นเกมและต้นแบบเกม หากคุณจริงจังกับการทำเกมในฝันให้จบคุณควรจบเกม "ระดับเริ่มต้น" ไปพร้อมกัน การสร้างส่วนการเล่นเกมของเกมเป็นเพียงครึ่งหนึ่งของการต่อสู้ ทุกสิ่งที่พิเศษเช่นเมนูและคะแนนสูงมักถูกมองข้ามหรือเพิกเฉย แต่พวกเขาใช้เวลามากกว่าที่ทุกคนคาดหวัง
มีคำแนะนำที่ดีในคำตอบอื่น ๆ แต่ฉันเพียงแค่ต้องการที่จะโยนในการลงคะแนนของฉันสำหรับ: เริ่มต้นด้วยสิ่งที่ดูเหมือนเกินไปลงโทษที่จะจัดการกับ
Pong เป็นตัวอย่างที่ดี
เป้าหมายคือ: ทำให้การออกแบบเกมและตั้งกฎเพื่อให้สมองต่ำที่คุณสามารถมุ่งความสนใจไปที่การเรียนรู้สิ่งใหม่ที่คุณกำลังเรียนรู้ (ภาษา, แพลตฟอร์ม, API) และไม่ต้องทำอย่างต่อเนื่อง หยุดพักเพื่อดูว่าเกมทำงานอย่างไร
เมื่อคุณไปคุณจะพบว่าปิงปองมีความซับซ้อนกว่าเล็กน้อยในตอนแรก (ฉันกำลังสอนคนเขียนโปรแกรมและเขาใช้ pong เป็นโครงการเรียนรู้ของเขาเราได้เพิ่มคุณสมบัติบางอย่างและตอนนี้เขาเริ่มหันเหความสนใจจากการเรียนรู้ไปยังโปรแกรมโดยเรียนรู้วิธีทำคุณสมบัติเจ๋ง ๆ เหล่านี้ :)
เมื่อคุณทำแอป # 1 ไปเรื่อย ๆ จนกระทั่งมันพร้อมที่จะให้ / ขายให้กับผู้อื่นแล้วพวกเขาก็ทำสิ่งที่ซับซ้อนกว่าเล็กน้อย (Tetris การผจญภัยหรืออะไรก็ตามที่คุณชอบ) แต่เพื่อเริ่มเรียนรู้เทคโนโลยีใหม่ ๆ สิ่งที่คุณเขียนโปรแกรมสมองง่าย ๆ
ตัวอย่างอื่น ๆ :
แต่อีกครั้ง - เริ่มต้นด้วยสิ่งที่ง่ายเกินไปเพื่อให้คุณสามารถทำบางสิ่งบางอย่างให้เสร็จสมบูรณ์และมองย้อนกลับไปและดูว่ามีอะไรเกี่ยวข้องบ้าง ความแตกต่างระหว่างการเขียนหนึ่ง app ในภาษา / แพลตฟอร์ม / SDK / เครื่องยนต์และมีการเขียน ZERO ปพลิเคชันขนาดใหญ่ ความแตกต่างระหว่าง 1 & 2 หรือ 2 & 5 นั้นน้อยมากดังนั้นคุณสามารถทำตามขั้นตอนที่ใหญ่กว่าได้ แต่ทำขั้นตอนที่ 0 ถึง 1 ให้เป็นขั้นตอนที่เล็ก มันจะใหญ่กว่าที่คุณคิด!
Flappy Bird
-alike ในฐานะโปรแกรมเมอร์มืออาชีพมันเป็นงานของช่วงบ่าย (ดีมากวันหยุดสุดสัปดาห์เพื่อให้มัน "ดี") แต่ในขณะที่สอนอีกโปรแกรมให้เรารู้ว่ามันมีความยุ่งยากน้อยมาก อีกครั้งหนึ่งคือประสบการณ์ที่ไกลกว่าศูนย์และเมื่อคุณมีแล้วคุณจะมีความคิดที่ดีเกี่ยวกับการก้าวไปข้างหน้า
ลองดูเว็บไซต์นี้: 12 แนวคิดเกี่ยวกับโครงการเกมวิทยาศาสตร์คอมพิวเตอร์
เกมเหล่านี้บางเกมมีสิ่งที่ผู้อื่นพูดถึงเช่น:
แต่มันก็พูดถึงเกมอื่นที่คุณสามารถลองเช่น:
นอกจากนี้ยังให้ความรู้สึกถึงสิ่งที่คุณควรลองทำก่อนเพราะจะทำให้รู้สึกถึงความยากลำบากในแต่ละเกม (และเป็นแผนของวิธีที่คุณควรเล่นเกม)
ผู้คนจำนวนมากเริ่มต้นด้วยการฝ่าวงล้อมเพราะมันคุณสมบัติ:
ส่วนที่ยากที่สุดเกี่ยวกับการเขียนเกม - หรือซอฟต์แวร์ใด ๆ - กำลังค้นหาสิ่งที่ต้องทำ คุณต้องการสเป็คอย่างแน่นอน! นั่นคือส่วนที่สนุกเกี่ยวกับการสร้างเกมที่มีอยู่: ข้อมูลจำเพาะมีอยู่แล้ว ข้อมูลจำเพาะของคุณคือ "ผลิตภัณฑ์ต้องทำทุกอย่างที่ผลิตภัณฑ์อื่นทำ" และหากคุณมีสำเนาของเกมอื่นในมือคุณจะต้องตรวจสอบให้ดี
เมื่อคุณพบสิ่งที่คุณต้องทำแล้วให้หาวิธีทำมันไม่ยากอย่างนั้นถ้าคุณเป็นโปรแกรมเมอร์ที่มีความสามารถ ฉันไม่ได้หมายถึงโปรแกรมเมอร์ที่มีทักษะหรือประสบการณ์ นั่นแปลว่าคุณรู้วิธีที่จะทำสิ่งที่คุณพยายามทำ แต่คุณต้องเข้าใจวิธีคิดใน abstractions และมีทักษะการแก้ปัญหาและความคิดเชิงตรรกะที่เป็นพื้นฐานของการเขียนโปรแกรม หากคุณสามารถทำสิ่งนั้นได้คุณสามารถทำอะไรก็ได้
ต้องบอกว่าฉันไม่เห็นด้วยกับสิ่งที่คนส่วนใหญ่พูดเกี่ยวกับการพยายามเรียนรู้ที่จะเขียนเกมโดยการเขียนอะไรที่เรียบง่ายจริงๆ รางวัลเป็นสัดส่วนโดยตรงกับความพยายามของคุณ หากคุณเรียนรู้ที่จะเขียนเกมโดยการเขียนเกมที่ง่ายจริงๆสิ่งที่คุณจะรู้ในตอนท้ายก็คือวิธีการเขียนเกมที่ง่ายมาก ๆและนั่นจะไม่ทำให้คุณเก่งเท่าไหร่
ในทางกลับกันถ้าคุณเริ่มต้นด้วยบางสิ่งที่ท่วมท้นคุณจะไม่มีวันจบ ดังนั้นเริ่มจากสิ่งที่ท้าทายพอสมควรซึ่งจะทำให้คุณจัดการกับปัญหาร้ายแรง การสร้างเกม RPG สไตล์คอนโซล 2D หรือ platformer การเลื่อนด้านข้างเป็นวิธีที่ดีมากในการเรียนรู้แนวคิดการเขียนโปรแกรมเกมจริง
มันขึ้นอยู่กับความสามารถของคุณในปัจจุบัน หากคุณค่อนข้างใหม่กับการเขียนโปรแกรมให้ไปกับหนึ่งในเกมที่ผู้คนแนะนำ มิฉะนั้นคุณควรคิดว่าเกมประเภทไหนที่จะช่วยให้คุณได้รับประสบการณ์ที่ดี
เมื่อฉันเริ่มเกมแรกของฉันฉันไม่มีประสบการณ์ในการพัฒนาเกม แต่ฉันได้ทำการพัฒนาแอพสำหรับองค์กร / สายธุรกิจมาหลายปีแล้ว โปรเจ็กต์เกมแรกของฉันคือเกมวางแผนเทิร์นเบสและการพูดเชิงสถาปัตยกรรมมันไม่ได้ดูแตกต่างจากแอพพลิเคชั่นระดับองค์กร ใช้ระบบไคลเอนต์ / เซิร์ฟเวอร์และการสื่อสารที่เกิดขึ้นผ่านช่องทางบริการดูเพล็กซ์ WCF การดำเนินการของผู้เล่นส่วนใหญ่ถูกจัดคิวเป็น "คำสั่งซื้อ" และส่งไปยังเซิร์ฟเวอร์เมื่อสิ้นสุดเทิร์น การประมวลผลเทิร์นทั้งหมดเกิดขึ้นบนเซิร์ฟเวอร์หลังจากที่อัปเดตข้อมูลเกมจักรวาลไปยังไคลเอนต์แต่ละราย
โครงการแรกนั้นให้ฉันได้พัฒนาวิธีการพัฒนาเกมโดยเริ่มจากพื้นที่ที่คุ้นเคย เมื่อโครงการพัฒนาขึ้นฉันได้เรียนรู้ที่จะคิดเหมือนนักพัฒนาเกมและไม่ชอบนักพัฒนาแอปองค์กร ผลลัพธ์ที่ได้ค่อนข้างดีและมันก็น่าประทับใจกว่า Battleship หรือ Tic-Tac-Toe :)
ค่อนข้างง่าย AI, กราฟิก, เกมเพลย์, การควบคุมและพวกเขาไม่จำเป็นต้องมีเอฟเฟกต์เสียงหรือเพลงเว้นแต่คุณต้องการที่จะเพิ่มสิ่งต่อไปนี้ฉันเริ่มด้วยสองสิ่งนี้เมื่อเรียนรู้วิธีการโปรแกรมใน QBasic สำหรับ MS-DOS และฉันคิดว่า เป็นเกมแรกที่ยอดเยี่ยม แพคแมนจะเป็นทางเลือกอื่นของฉัน
เกมสไตล์ Moonlander นั้นยอดเยี่ยม (ซึ่งคุณได้รับผลกระทบจากแรงดึงดูดของจรวดผู้เล่นสามารถควบคุมทิศทางและแรงขับเชื้อเพลิงที่ จำกัด เมื่อใช้แรงขับ) ได้รับประสบการณ์การใช้ฟิสิกส์ที่ง่ายมากและระบบการชนอาจเป็นแบบดั้งเดิม ไม่มี AI ที่ต้องกังวลและที่สำคัญที่สุดคือความสนุกและน่าติดตาม :)
ปืนอวกาศจากบนลงล่างอย่าง Galaga นั้นง่ายมากและสอนการตรวจจับการชนกันเป็นอย่างดี! นอกจากนี้ยังสามารถเปลี่ยนแปลงได้ในระดับความยากตั้งแต่ระดับที่มีศัตรูอยู่กับที่จนถึงระดับหลายระดับซึ่งการอัพเกรดอาวุธและศัตรูที่เคลื่อนไหวในรูปแบบพิเศษ
บางอย่างเช่น Gauntlet เพราะคุณต้องการระบบเอนทิตี AI ที่เป็นศัตรูรถปิคอัพแผนที่ย่อยการตรวจจับการชนการให้คะแนนเป็นต้นมันได้มาทั้งหมด แต่ไม่ใช่ในแบบที่ครอบงำ
mini Zelda clone นั้นเก่งและฝึกฝนทักษะบางอย่างที่ยังไม่ได้กล่าวถึงมากนัก การเลื่อนแผนที่ขนาดใหญ่ของกระเบื้องและการควบคุมการเคลื่อนไหว 8 ทิศทางอย่างง่ายเป็นสิ่งที่ควรรู้ คะแนนโบนัสหากคุณสามารถทำศัตรูได้ แต่ฉันไม่ต้องกังวลเกี่ยวกับเรื่องนั้นมากนัก
ฉันทำโคลน Tetris มากกว่าสองสามตัว ทุกครั้งที่ฉันทำฉันทำมันแตกต่างกันเล็กน้อย ทุกวันนี้ฉันมักจะสร้างดาวเคราะห์น้อยประเภทหนึ่ง ฉันยังทำสปินดาวน์ของ Missile Command ได้ไม่กี่ครั้ง
ฉันเริ่มต้นด้วยการเล่นเกมขั้นพื้นฐานและมากกว่าที่จะเพิ่มสิ่งอื่น ๆ เพิ่มพลังให้กับมัน
ฉันมักจะเริ่มต้นด้วยเกม Tanks / Gorillas / Worms มันทำให้คุณออกกำลังกายในการแสดงผลกราฟิกที่เรียบง่ายและการอ่านอินพุตของผู้ใช้รวมถึงวงเกมที่ใช้แรงโน้มถ่วงกับกระสุนปืนและการทดสอบการตรวจจับการชนกัน
หลังจากนั้นจะเป็นเกมอย่าง platformer ที่ง่ายมากหรือ shoot-em-up ที่คุณต้องอ่านอินพุตของผู้ใช้แบบเรียลไทม์มากกว่าข้อความ INPUT ที่ทำงานกับ Gorillas :)
Solitaire (หรือเกมไพ่ใด ๆ ก็ตาม) เป็นเกมที่ดีที่จะทำให้มือของคุณสกปรกด้วยระบบ UI ใหม่เนื่องจากมันออกกำลังกายวิดเจ็ตและกลไกการตอบโต้การโต้ตอบที่ควบคุมจำนวนมากที่คุณต้องใช้ บวกกับตรรกะของมันตรงไปตรงมาและไม่คลุมเครือดังนั้นคุณสามารถมีสมาธิกับการเรียนรู้และไม่ได้ออกแบบเกมมากนัก
สำหรับเกมจำลองสถานการณ์แบบเรียลไทม์ฉันมักจะแนะนำโป่งว่าเป็นจุดเริ่มต้นที่ง่าย ๆ อยู่เสมอเพราะการออกแบบนั้นเรียบง่ายเช่นเดียวกับอินเทอร์เฟซคอนโทรลเลอร์ดังนั้นคุณจึงสามารถเข้าถึงเนื้อของระบบ - การจำลองทางกายภาพ
ฉันยืนยันเสมอว่าถ้าคุณเป็นโปรแกรมเมอร์เกมคุณควรจะสร้างSpace Invadersได้บ้าง เฮ็คเกมนี้ง่ายพอที่คุณจะสามารถทำกราฟิคเองได้เช่นกัน
การมีเกมเล็ก ๆ ในแฟ้มสะสมผลงานของคุณเป็นประโยชน์เพิ่มเติมของการเป็นประโยชน์อย่างมากตัวอย่างเช่นถ้าฉันเรียนรู้ภาษาการเขียนโปรแกรมใหม่หรือกรอบการทำงานฉันมักจะพูดถึงหนึ่งในเกมง่ายๆของฉันเพื่อดูว่าวิธีการใหม่ ๆ ทำสิ่งที่ตรงกับวิธีการเขียนต้นฉบับ
มันขึ้นอยู่กับทักษะในการเป็นโปรแกรมเมอร์ประจำของคุณ คณิตศาสตร์ของคุณต้องการการทำงานหรือไม่? ความรู้ด้านกราฟิกของคุณ? คุณมีทั้งสองภายใต้ wraps?
แม้ว่าโดยทั่วไปแล้วฉันคิดว่า Tetris และ Breakout จะเป็น starters สองคนของฉันเช่นกัน อะไรที่ง่ายกว่านั้นไม่ได้มีการกระตุ้นพอ Tetris เป็นการทดสอบที่ดีว่าจะจัดวางข้อมูลของคุณอย่างไรการฝ่าวงล้อมเป็นตัวอย่างทางคณิตศาสตร์ที่เบา ฉันมักจะบอกให้ผู้คนตั้งเป้าไว้สูง ๆ เป้าหมายคือติดขัดและหาทางแก้ไข
หลังจากนั้นท้องฟ้าก็มีขีด จำกัด อีกครั้งมุ่งสูง ลองใช้ platformer ที่มีภูมิประเทศลาดชัน parralax และคุณจะได้รับกระเป๋า 2d tech ที่มีประโยชน์ เพิ่มเบาะสำหรับปักเข็ม (เตรียมที่จะผิดหวัง) และคณิตศาสตร์ของคุณจะดีขึ้น
จากนั้นไปสู่มิติที่สามเรียนรู้ทักษะหลัก (แอนิเมชั่นการเรนเดอร์) และคุณควรมีความพร้อมที่จะจัดการกับเกมที่หลากหลาย
ฉันจะบอกว่าเกมประเภท Tower Defense เป็นจุดเริ่มต้นที่ดีที่สุด คุณสามารถเริ่มต้นด้วยการดัดแปลงเกม / เอนจิ้นที่มีอยู่แล้ว (WarCraft III / HalfLife2 SDK / ฯลฯ ) เพื่อทำความเข้าใจกับตรรกะโดยรวมที่จำเป็นจากนั้นไปยังการใช้ฐานรหัสของคุณเอง
เกมแรกของฉันคือบางอย่างเช่น Super Mario
ย้ายไปมาหลีกเลี่ยงอุปสรรคกระโดด และงานทั้งหมดนั้นสามารถทำได้อย่างง่ายดายโดยไม่ต้องคำนวณทางฟิสิกส์ใด ๆ
มันเหมาะอย่างยิ่งที่จะนำสิ่ง 2D ง่าย ๆ ไปใช้เพราะคุณจะไม่ต้องพึ่งพาการนำไปใช้งาน / กรอบ / เอ็นจิ้นเฉพาะอย่างมาก