เกมที่ดีในการ“ รับปีกของคุณ” คืออะไร? [ปิด]


305

ฉันเชื่อว่าในการที่จะเป็นนักพัฒนาเกมที่ดีคุณต้องสร้างเกม

จากมุมมองของโปรแกรมเมอร์เกมระดับเริ่มต้นที่ดีสำหรับมือของคุณสกปรกคืออะไร? แต่ละเกมเหล่านี้สอนทักษะและความท้าทายอะไรให้คุณ?

คำตอบ:


217

ฝ่าวงล้อม

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

เล่นไพ่คนเดียว

กฎมีความซับซ้อนกว่าการฝ่าวงล้อมเล็กน้อยและอินเทอร์เฟซสำหรับมันแตกต่างกันมาก มันบังคับให้คุณคิดถึงวิธีการต่าง ๆ ในการนำเกมมาใช้ นั่นคือสิ่งที่ใช้ได้ผลในเกมหนึ่งไม่จำเป็นว่าคุณจะต้องใช้อะไรในเกมอื่น

Pac-Man

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

ฉันพบว่าหากคุณมองหาแรงบันดาลใจในวิดีโอเกมช่วงต้นคุณสามารถค้นหาแนวคิดมากมายที่ใช้งานได้ง่าย นอกจากนี้คุณยังสามารถหลบไปกับงานศิลปะและเสียงที่เรียบง่ายเพราะคุณกำลังคัดลอกบางสิ่งที่เรียบง่าย สิ่งนี้จะช่วยให้คุณมุ่งเน้นไปที่พื้นฐานก่อน - ทำให้เกมของคุณวนไปมาและวิ่งหาวิธีที่จะนำพิกเซลของคุณไปยังหน้าจอเล่นเสียงรักษาคะแนนทำคะแนนให้ผู้เล่นเข้าสู่เกม

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


49
+1 ในการฝ่าวงล้อม ฉันมีผู้พัฒนาเกม PRO หลายคนบอกฉันว่าเมื่อใดก็ตามที่พวกเขาได้รับเทคโนโลยีชิ้นใหม่พวกเขาเรียนรู้โดยการสร้าง Breakout เป็นครั้งแรก
Jeff

2
+1 การฝ่าวงล้อมเป็นเกมแรกที่ฉันสร้าง =) นอกจากนี้ฉันเห็นด้วยกับการพยายามสร้างวิดีโอเกมช่วงต้น (ด้วยการบิดของคุณเอง!) มุ่งเน้นที่แนวคิดไม่ใช่สินทรัพย์
user384918

16
@PhillC ไม่มีมันไม่คุ้มค่าแยก
Simurr

13
คุณลืมเกี่ยวกับ Tetris: มันเป็นเกมที่สองที่ผมดำเนินการกลับมาในโรงเรียนสูง :)
Emiliano

2
พวกคุณทุกคนสามารถให้ลิงก์ไปยัง breakouts ของคุณได้ไหม? ฉันรักเกมที่และอยากจะลอง remakes ทั้งหมด
Fent

256

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

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

เกมที่ดีที่สุดในการ "รับปีกของคุณ" ด้วยหรือไม่ คนที่คุณทำเสร็จแล้ว ฉันไม่สนใจว่าคุณสาธิตเกม PONG / Breakout / Galaga / Tetris เพียงครึ่งเดียวคุณไม่ใช่นักพัฒนาเกมจนกว่าคุณจะวางจำหน่ายเกมที่เสร็จสมบูรณ์แล้วจริง ๆ

นอกจากนี้ยังไม่มีใครอยากเล่นอีกรุ่นของเกมอายุ 40 ปีและอย่างน้อยประเด็นของการเขียนเกมก็คือให้คนเล่นใช่ไหม?


3
ฉันต้องการที่จะ Tripple โหวตคำตอบนี้!
เลน

2
+1 สำหรับความคิดเห็นเกี่ยวกับการปล่อยเกมจริง การเริ่มเกมและทำงานเป็นเพียงประมาณ 30% ของกระบวนการ IMO วนซ้ำอย่างต่อเนื่องในกลศาสตร์ขัดทุกอย่างเพื่อดูเรียบร้อยไล่ตามข้อผิดพลาดที่น่ารังเกียจที่เกิดขึ้นเฉพาะในสถานการณ์ที่เฉพาะเจาะจงและจริง ๆ แล้วสามารถมุ่งเน้นเพียงสิ่งที่ต้องทำคือ 70% อื่น ๆ
Dennis Munsie

1
+1 สำหรับพูดในสิ่งที่ฉันต้องการจะพูด เกมแรกของฉันคือpalmgadget.com/palmgo.htmlมันสามารถทำได้เพราะฉันรักเกม Go และฉันใช้มันเพื่อบันทึกเกมของฉันในคลับ "เกาคันของคุณเอง" ก่อน
ohho

16
ฉันชอบคำแนะนำนี้ แต่อาจเป็นอันตรายได้ ท้ายที่สุดแล้วความคิดนี้เป็นเหตุผลว่าทำไมผู้คนมากมายถึงไปที่ฟอรัมเกมและพูดว่า "ฉันไม่เคยทำเกมมาก่อนเลยฉันจะเริ่มเกม MMORPG" ฉันจะบอกว่าคุณควรเริ่มต้นด้วยเกมที่คุณชอบจากตัวเลือกเริ่มต้นที่ดี เช่นถ้าคุณเกลียด Tetris จริงๆก็ไม่เป็นไร แต่อย่าฝ่าวงล้อมแทนไม่ใช่แค่เกมสุ่มที่ดึงดูดความสนใจของคุณ
jhocking

185

ฉันโพสต์บันไดนี้ที่ TIGsource เมื่อครู่ที่ผ่านมา มันเริ่มจากพื้นฐานมากไปจนถึงซับซ้อนมาก

  • "เดาหมายเลข" / Hangman (อินเทอร์เฟซพื้นฐานเลือกข้อมูลจากฐานข้อมูล)
  • Tic-Tac-Toe / Rock-Paper-Scissors (เกมเพลย์แบบเทิร์นอิง, ฝ่ายตรงข้าม AI)
  • Arkanoid / Pong (การชนอัตราเฟรมมั่นคงคะแนนระดับ)
  • Tetris (โครงสร้างข้อมูลและความสัมพันธ์กับเกม)
  • 1942 / Shoot-em-up (ศัตรูกระสุน)
  • เกม platformer / pinball ง่าย ๆถ้าเครื่องยนต์ของคุณทำการ platformers (ชนตามแรงโน้มถ่วง)
  • Bomberman / Pacman (การเคลื่อนไหวแบบเรียงต่อกัน, AI ศัตรูที่ซับซ้อน)
  • เกมที่มีผู้เล่นสองคนในประเภทใด ๆ ข้างต้น (ผู้เล่นสองคน)
  • Roguelike / Diablo (การจัดการสินค้าคงคลัง, AIs ศัตรูหลายคน, การบันทึกและการโหลดสถานะเกมที่ซับซ้อน)
  • Faceball / Wolfenstein 3D (การเคลื่อนไหวและการเรนเดอร์พื้นฐาน 3 มิติ)
  • เกมเทิร์นเบสบนเครือข่าย (เครือข่ายพื้นฐาน)
  • Gimmicky 3D platformer บุคคลที่สาม (ฟิสิกส์เคลื่อนไหว 3 มิติที่ซับซ้อน)
  • เกมเรียลไทม์ของเครือข่าย (การซิงโครไนซ์ไคลเอ็นต์เซิร์ฟเวอร์ความล่าช้า)
  • MMORPG (โลกถาวร)

7
คุณสามารถอธิบายสิ่งที่คุณควรจะเรียนรู้ได้ดีกว่าที่นี่ บันทึกย่อของคุณไม่ได้มีความหมาย / มีประโยชน์
SpoonMeiser

57
แม้ว่ามันจะเป็นเกมสุดท้าย แต่ฉันคิดว่า MMORPG จำเป็นต้องลงไปอีก รายการที่น่ากลัว +1
はると

6
รายการที่ยอดเยี่ยมถึงแม้ว่าฉันคิดว่ามุมบันไดทั้งหมดจะพังหลังจาก Pacman เมื่อถึงจุดนี้คุณก็พอที่จะไปเล่นเกมประเภทใดก็ได้ ฉันไม่คิดว่าคุณจะต้องพัฒนา Diablo ก่อนที่คุณจะพัฒนา Wolfenstein ทุกอย่างจนถึง Pacman คุณควรทำตามลำดับ
jhocking

5
"โลกถาวร" reeeeally ดูถูกความแตกต่างระหว่าง MMORPG ตัวเลือกก่อนหน้านี้
Malabarba

1
คุณสามารถจัดการ "Persistent World" ในเกมที่ไม่ใช่ MMORPG ได้เช่นกัน (เช่น roguelike)
ashes999

64

กฎการเรียนรู้การเขียนโปรแกรมเกมที่สำคัญที่สุด: การเรียนรู้การเขียนโปรแกรมยาก การเรียนรู้การออกแบบเกมนั้นยาก การเรียนรู้วิธีสร้างเกมหรือเสียงที่ดีนั้นเป็นเรื่องยาก พยายามทำสิ่งเหล่านี้ทั้งหมดในเวลาเดียวกันเป็นสูตรสำหรับความล้มเหลว เรียนรู้สิ่งหนึ่งครั้ง

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 ดั้งเดิม)

โชคดี!


39

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

ฉันคิดว่าฉันจะตอบคำถามที่แตกต่างออกไปเล็กน้อยจากที่คุณถามและฉันจะยกตัวอย่างเพื่อตอบสนองคำถามที่คุณถามในแหล่งกำเนิด เหตุผลที่ฉันทำอย่างนั้นก็เล็กน้อย แต่ฉันเชื่อว่าความแตกต่างอย่างมีนัยสำคัญในมุมมอง: มันไม่ได้เป็นเกมที่เฉพาะเจาะจงที่มีความสำคัญเท่าที่ความคิดของเกมเหล่านั้นทำให้นักออกแบบ

คุณรู้หรือไม่ว่าผู้คนพูดถึงคุณควรเรียนรู้ภาษาการเขียนโปรแกรมที่หลากหลายเพื่อที่จะกินความคิดและหัวใจและตับของพวกเขาและเพื่อให้ได้รับพลังอันทรงพลัง? มีความจริงที่แท้จริง - หลังจากภาษาการเขียนโปรแกรมบริสุทธิ์หรือใกล้บริสุทธิ์ครั้งแรกของคุณแม้ในภาษาที่จำเป็นคุณจะต้องเขียนฟังก์ชั่นฟรีผลข้างเคียงส่วนใหญ่เพราะพวกเขากำหนดไว้มากขึ้นและทุกสิ่งที่คุณเขียน แม้ในภาษาที่ไม่อยู่ในรูปแบบนั้นจะดีกว่า มันไม่สำคัญว่ามันจะเป็นภาษาใด - haskell, ml / ocaml / smlnj, formulaONE, c ++ template, อะไรก็ตาม - คุณยังจะได้เรียนรู้วิธีการทำงานหลาย ๆ ชั้นโดยไม่ต้องพึ่งพาสถานะผลข้างเคียง ครั้งแรกที่คุณเรียนรู้ภาษาโปรแกรมที่ใกล้เคียงกับเครื่องจักรคุณจะต้อง กำลังจะเรียนรู้เกี่ยวกับสิ่งที่เป็นนามธรรมประเภทขนาด ครั้งแรกที่คุณเรียนรู้ภาษาที่มีการประกาศหรือมีข้อ จำกัด คุณจะได้เรียนรู้เกี่ยวกับการกำหนดขอบเขตเป็นเครื่องมือในการตัดสินใจ ครั้งแรกที่คุณเรียนรู้ภาษาการค้นหาย้อนรอยคุณจะต้องเรียนรู้ที่จะอธิษฐาน Ia! เอีย! C'thulhu F'tagn Nagn! แล้วเราจะกลับไปกินหัวใจและตับและวงกลมของชีวิตก็จะสมบูรณ์

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

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

ดังนั้นดูสิ

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

ในการสั่งซื้อ:

  1. การควบคุมหน้าจอ การฉาย Bluescreening ยอดเยี่ยมสำหรับเรื่องนี้เพราะคุณมีเหตุผลที่น่าเชื่อที่จะเชื่อว่าคุณกำลังจะเป็น Microsoft
  2. การตรวจสอบอินพุต Fooscreen ที่ซึ่งสีฟ้าเป็นสีฟ้าสำหรับสีแดงขึ้นลง ฯลฯ ตรวจสอบกุญแจทั้งหมดของคุณ มีสีมากเกินพอหรือคุณสามารถใช้แผนที่สี่สีหากคุณต้องการประหยัดสีแดงเข้มสำหรับสิ่งที่สำคัญกว่า
  3. การแสดงข้อความและสไปรต์ เนื่องจากคุณมีการตรวจสอบอินพุตดังนั้นเกมหน่วยความจำไทล์ไม่ใช่ความคิดที่ไม่ดี
  4. จับเวลา เวลาสำหรับการโคลนมาริโอหรือ Arkanoid
  5. เสียงและดนตรี ปรับปรุง mario clone ไม่มากแม้ว่า

เมื่อคุณทำสิ่งเหล่านี้ล้มเหลวคุณก็พร้อมที่จะกำหนดเป้าหมายแพลตฟอร์มแล้วการเรียนรู้อาจเริ่มต้นขึ้น

สิ่งเหล่านี้อยู่ในลำดับที่ไม่เจาะจง คุณอาจจัดเรียงใหม่ตามที่เห็นสมควร ฉันจะยกตัวอย่างให้กับแต่ละคน แต่พวกมันไม่ได้เป็นกฎเกณฑ์ หากเกมอื่นให้ประสบการณ์เดียวกันกับคุณและมีขนาดเล็กพอที่จะเป็นส่วนหนึ่งของชุดบทเรียนคุณสามารถสลับไปมาได้ด้วยเหตุผลจริงมันดีที่จะมีความเชี่ยวชาญในการเรนเดอร์หน้าจอและการป้อนข้อมูลอย่างรวดเร็ว คุณจะต้องใช้มันให้มาก รอสักสองสามเกมก่อนที่จะพยายามเขียนคลาส abstraction คุณไม่ต้องการถูกจับในสิ่งที่ไร้เดียงสาไร้สาระ

  • นิเมชั่น เกือบทุกสิ่งที่คุณสามารถเรียกได้ว่าเป็นสไปรต์เคลื่อนไหว รับเอนจินแอนิเมชั่นอิสระใต้เข็มขัดของคุณแม้ว่าจะเป็นโปรแกรมเมอร์ ทำเกมไขปริศนาง่ายๆที่มีการเต้นเป็นจังหวะอยู่พอ
  • คะแนนที่ซับซ้อน รับศัตรูทั้งห้าในปีก? โบนัส. ที่ดินสามหมัดต่อเนื่องกัน? โบนัส. ทำให้ผ่านระดับทั้งหมดโดยไม่พลาดสัญลักษณ์แสดงหัวข้อย่อย? โบนัสมาก
  • pathfinding เกมจำนวนมากต้องการสิ่งนี้ แต่เกมป้องกันหอคอยนั้นเป็นเกมที่ง่ายที่สุด คุณสามารถเริ่มต้นด้วยความกว้างก่อนและลึกแรกหากคุณไม่เคยทำมาก่อน แต่คุณยังไม่ได้ดำเนินการจนกว่าคุณจะใช้ A * ตั้งแต่เริ่มต้น (ไม่ใช่รหัสที่คัดลอกมาแล้ว) อย่างน้อยหนึ่งครั้ง
  • พฤติกรรมของศัตรู พฤติกรรมอัตโนมัติของคนโง่จะได้รับการคุ้มครองโดยมาริโอของคุณ แต่พฤติกรรมการตอบโต้ก็สำคัญเช่นกัน นี่เป็นข้อแก้ตัวที่ดีในการสร้างเกมกลยุทธ์หรือโร๊คไลค์ (คำเตือน: คุณจะทำงานกับ roguelike ตลอดชีวิตของคุณ)
  • แสงไดนามิก 2d นี่ก็เป็นเหตุผลที่ดีในการเขียนโร๊คไลค์ การแชโดว์ด้วยอาร์คเป็นวิธีที่สำคัญในการดูแถบและการแยกซึ่งเป็นสิ่งสำคัญสำหรับโครงสร้างข้อมูลจำนวนมาก
  • ฟิสิกส์ 2 มิติ สิ่งนี้เกิดขึ้นได้ในหลาย ๆ เกมในทุกระดับรายละเอียด ลอง platformer (mario-ish,) ซึ่งสามารถทำให้ง่ายขึ้น; เกมรถถัง (เกรียม - โลก - ish,) ซึ่งสามารถทำให้ง่ายขึ้นเท่า ๆ กัน; และในที่สุดเกมอย่าง N the Ninja ที่ทำให้คุณรับมือกับการวิ่งในมุมโมเมนตัมและอื่น ๆ (คุณสามารถทำได้โดยใช้ระบบการชนกันของกล่องที่มีการจัดแนวแกนในแนวแกนตรงไปตรงมา) ฟิสิกส์และการชนนั้นค่อนข้างสัมพันธ์กัน
  • ตรวจจับการชนกัน มีกรณีง่าย ๆ อย่างน่าขันเช่น Arkanoids กริดและมาริโอโคลนกรณีที่ซับซ้อนปานกลางเช่น N the Ninja และกรณีที่ซับซ้อนอย่างแท้จริงเช่นเกมฟิสิกส์ sandbox (เครื่องเหลือเชื่อ, arkanoids ที่ทันสมัยเช่น BreakQuest และอื่น ๆ ) ในหลาย ๆ กรณีคุณสามารถทำได้ด้วย บางอย่างเช่นAABBแต่ถ้าคุณชอบคณิตศาสตร์มันอาจมีประโยชน์ที่จะนำบางสิ่งมาใช้อย่างสมบูรณ์ อย่างน้อยทำความคุ้นเคยกับไลบรารีที่สมบูรณ์เช่น APE หรือ Box2D
  • ความเสี่ยง / ผลตอบแทนความสัมพันธ์ในการเล่นเกม เกมลูกเต๋าง่าย ๆ (ไปขุดหาสิ่งที่เรียกว่า "เหม็น" จากยุค 50) และเกมกระดานเสี่ยงชีวิต
  • ความแปรปรวนในกลศาสตร์ ตอกย้ำตัวเองเป็นกฎเล็ก ๆ น้อย ๆ จากนั้นเรียนรู้ที่จะทำให้มันมีความแตกต่างมากมาย เกมไพ่สำรับแบบกำหนดเองเป็นวิธีที่ยอดเยี่ยมในการทำงานกับเกมนี้ ลองดูที่ดาดฟ้า Dvorak และเกมในโลกแห่งความเป็นจริงเช่น Mille Bornes, Rage และ Uno จากนั้นสร้างเกมของคุณเอง พวกเขาจะไม่เหมือนกัน
  • เนื้อหาที่สร้างขึ้น เกมกลยุทธ์ที่ใช้แผนที่เรียบง่ายโร๊คไลค์และเกมไขปริศนาบางชนิดเป็นวิธีที่ยอดเยี่ยมในการเรียนรู้การทำเช่นนี้ คะแนนโบนัสหากเป็นเกมประเภทหนึ่งที่ไม่รู้จักกันโดยทั่วไปว่ามีเนื้อหาที่สร้างขึ้น
  • สไตล์ อย่าพลาด: นี่เป็นเรื่องใหญ่ ทำเกมแล้วสกินให้เป็นสี่เกมที่แตกต่างอย่างสิ้นเชิง แตกต่างกันจริงๆ หนึ่งเกมสำหรับเด็ก ๆ (คิดเกี่ยวกับมัน: Mega Man ทำให้รู้สึกที่สมบูรณ์แบบในการผจญภัยของนักมายากลไปสู่นรกหรือเป็น Rogue จาก X-Men หรือ ... ) ตอนนี้ให้คนสี่กลุ่มทำคะแนนในแต่ละเกมของคุณ หลังจากนั้นให้พวกเขาทำคะแนนในเกมถัดไปทวนเข็มนาฬิการอบวงแหวนและอื่น ๆ สังเกตว่าการเปลี่ยนแปลงการให้คะแนนของพวกเขาอย่างรุนแรงขึ้นอยู่กับรูปแบบและความคาดหวังก่อน
  • ทำให้ลำดับแผนของผู้เล่น เกมปริศนาเป็นวิธีที่สะอาดที่สุดในการดำเนินเรื่องนี้
  • การจัดการทรัพยากร
  • อัพเกรด
  • หมุนแรงดันเวลาขึ้น

... เอ๊ะ ฉันเบื่อ.


11
คำตอบที่ยอดเยี่ยม น่าผิดหวังจริงๆจบที่นั่น มันคงจะวิเศษมากถ้าคุณสามารถทบทวนสิ่งนี้และผูกมันเข้าด้วยกันเพื่อให้มันจบกัน
Ricket

1
สำหรับฉากสุดท้ายแล้วมีคำแนะนำในการปรุงอาหารตับอย่างไรบ้าง Giantitp.com/comics/oots0738.html
Cyclops

4
นี่เป็นบทเรียนชีวิตที่ปลอมตัวเป็นโพสต์เกี่ยวกับการเขียนโปรแกรมเกมอย่างน่าอัศจรรย์
sdasdadas

30

Tetris

เกมที่พบบ่อยมากโอเพนซอร์ซมากมายที่ทำออกมาถ้าหากคุณติดขัด สอนพื้นฐานของกราฟิก 2D การจัดการอินพุตการให้คะแนน ฯลฯ

จากนั้นนำความคิดดั้งเดิมนี้และวางลงบนหมุน ฉันได้เรียนรู้พื้นฐานของกราฟิก 3D / OpenGL โดยการเขียนTetris รุ่น 3 มิติสำหรับชั้นเรียนคอมพิวเตอร์กราฟิกในวิทยาลัย


2
หรือ "คอลัมน์" ถ้าคุณเป็นเซก้า;)
แอนดรูรัสเซล

บทเพลงของคิว Tetris ...
Nick Bedford

3
qntm.org/hatetris (โอเคมันขาดเพลงธีม แต่ฉันแค่ต้องการเชื่อมโยง ... )
user384918

1
@bloots ว้าวนั่นเป็นสิ่งที่ชั่วร้าย
Bryan Denny

Woot! นี่คือเว็บไซต์ของฉัน
Steven Lu

25

GameDev.netมีบทความที่ดีแนะนำความก้าวหน้าของเกมเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการพัฒนาเกม คำแนะนำที่ชื่นชอบจากรายการคือการขัดเกมเหล่านี้ เสร็จสิ้นโดยสมบูรณ์เพื่ออยู่ในสถานะ releasable

รายการมีดังต่อไปนี้ (บางรายการได้รับคำตอบอื่น):

  1. Tetris
  2. ฝ่าวงล้อม
  3. Side Scroller / Platformer

คุณพลาด Pac-Man, Galaga และ Gauntlet จากบทความที่คุณเชื่อมโยง
Adam Harte

15

ฉันชอบที่จะเริ่มต้นทุกคนของฉันด้วยการผูกขาด ฉันมักจะใช้Monopoly ของ Brett Schuchert เป็น "รหัสกะตะ"เป็นพื้นฐานของการออกกำลังกาย แต่ฉันเพิ่มเข้าไปเยอะ มีหลายสาเหตุที่ฉันชอบทำสิ่งนี้

  1. ฉันใส่ใจอย่างลึกซึ้งเกี่ยวกับวิธีการเข้ารหัสที่ดี (รูปแบบการออกแบบ, TDD, SOLID, การรวมอย่างต่อเนื่องและอื่น ๆ ) และวางข้อ จำกัด มากมายกับนักพัฒนาของฉันเมื่อพวกเขาทำแบบฝึกหัดนี้

  2. ทุกคนรู้ดีว่ากฎของการผูกขาดและเกมทั้งหมดสามารถทำได้ในวันเดียว สิ่งนี้ทำให้ผู้พัฒนาใหม่ได้รับชัยชนะอย่างรวดเร็วและทำให้พวกเขามีส่วนร่วมมากขึ้น

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

บางครั้งเราเสียบ AI ที่ซับซ้อนมากขึ้นบางครั้งเราก็ทำไม่ได้ บางครั้งเราทำงานกับเกมกระดานอื่นที่มีตรรกะที่ซับซ้อนกว่าเล็กน้อยเช่น Chutes และ Ladders หรืออะไรบางอย่าง บางครั้งเราแยกตัวออกจากเกมกระดานอย่างสมบูรณ์และทำเกมโป๊กเกอร์หรือแบล็คแจ็ค

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


6
คุณใช้การผูกขาดในหนึ่งวันได้อย่างไร ดูเหมือนว่าโครงการขนาดใหญ่กว่านั้นมาก
Michael Kristofik

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

# 3 จะมอบประสบการณ์การใช้งานจริงให้กับลูกค้าที่เปลี่ยนแปลงข้อกำหนดของคุณหลังจากที่คุณเริ่มต้นแล้ว
Jarett Millard

Sadly the Monopoly link นั้นตายแล้ว: (
Casey

เครื่อง wayback ยังคงมีมัน web.archive.org/web/20090919075257/http://…
hokiecsgrad

15

เลือกของคุณผจญภัย

มีเคล็ดลับนี้จากเพื่อนที่เริ่มต้นการเขียนโปรแกรมโดยการสร้างเกมมากคล้ายกับเลือกหนังสือผจญภัยของคุณ มันเป็นเกมผจญภัยข้อความธรรมดาที่มีผลลัพธ์เช่นนี้:

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
> _

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


7
+1 แต่ถ้าคุณเพียงแค่เรียนรู้การเขียนโปรแกรม หากคุณรู้จักการเขียนโปรแกรมอยู่แล้วฉันจะไม่เริ่มต้นด้วยสิ่งนี้
Jeff

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

8
อันที่จริงนี่เป็นวิธีที่ดีมากในการเรียนรู้เกี่ยวกับการเขียนสคริปต์และการพัฒนาที่ขับเคลื่อนด้วยข้อมูล สร้าง "engine" สำหรับสิ่งนี้และเขียนส่วนที่เหลือในสคริปต์
Nick Bedford

1
@Jeff nah ถ้าพวกเขามีประสบการณ์โปรแกรมเมอร์พวกเขาจะเสร็จใน 2 ชั่วโมง ดังนั้นให้พวกเขาเพิ่มสองสามรายการประตูต่อสู้เจ้านาย
bobobobo

13

จากประสบการณ์ของฉันกับโปรแกรมเมอร์มือใหม่ความก้าวหน้ามักจะเป็นแบบนี้:

  1. สาบ
  2. Tetris
  3. เกม 3D RPG ที่ยอดเยี่ยมและน่าทึ่งมาก ๆ ที่น่าทึ่งมาก 50 ชั่วโมง (หมายเหตุ: คนส่วนใหญ่ยอมแพ้การเขียนโปรแกรมผ่านขั้นตอนนี้)

4. Fantasy MMORPG: P
Nick Bedford

12

ฝ่าวงล้อมพงษ์หรือดาวเคราะห์น้อย

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


4
+1 สำหรับการกล่าวถึงรายละเอียดใช้เวลามากกว่าที่คุณคาดหวัง
mpen

11

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

Pong เป็นตัวอย่างที่ดี

เป้าหมายคือ: ทำให้การออกแบบเกมและตั้งกฎเพื่อให้สมองต่ำที่คุณสามารถมุ่งความสนใจไปที่การเรียนรู้สิ่งใหม่ที่คุณกำลังเรียนรู้ (ภาษา, แพลตฟอร์ม, API) และไม่ต้องทำอย่างต่อเนื่อง หยุดพักเพื่อดูว่าเกมทำงานอย่างไร

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

เมื่อคุณทำแอป # 1 ไปเรื่อย ๆ จนกระทั่งมันพร้อมที่จะให้ / ขายให้กับผู้อื่นแล้วพวกเขาก็ทำสิ่งที่ซับซ้อนกว่าเล็กน้อย (Tetris การผจญภัยหรืออะไรก็ตามที่คุณชอบ) แต่เพื่อเริ่มเรียนรู้เทคโนโลยีใหม่ ๆ สิ่งที่คุณเขียนโปรแกรมสมองง่าย ๆ

ตัวอย่างอื่น ๆ :

  • เดาตัวเลข (ระหว่าง 1 และ 1,000)
  • บงการ (คาดเดาจำนวนขั้นสูง)
  • SimplePaint
  • งู / หนอน / สิ่งที่คุณเรียกมัน

แต่อีกครั้ง - เริ่มต้นด้วยสิ่งที่ง่ายเกินไปเพื่อให้คุณสามารถทำบางสิ่งบางอย่างให้เสร็จสมบูรณ์และมองย้อนกลับไปและดูว่ามีอะไรเกี่ยวข้องบ้าง ความแตกต่างระหว่างการเขียนหนึ่ง app ในภาษา / แพลตฟอร์ม / SDK / เครื่องยนต์และมีการเขียน ZERO ปพลิเคชันขนาดใหญ่ ความแตกต่างระหว่าง 1 & 2 หรือ 2 & 5 นั้นน้อยมากดังนั้นคุณสามารถทำตามขั้นตอนที่ใหญ่กว่าได้ แต่ทำขั้นตอนที่ 0 ถึง 1 ให้เป็นขั้นตอนที่เล็ก มันจะใหญ่กว่าที่คุณคิด!


2
+1 สำหรับ "เริ่มต้นด้วยบางสิ่งที่ดูเกินกว่าจะรับมือกับ" และ "ความแตกต่างระหว่างการเขียนแอปหนึ่งแอป ... และการเขียนแอป ZERO นั้นมีขนาดใหญ่มาก"
Luc125

1
การอัปเดต 2014: แอป "เรียนรู้ภาษา / เทคโนโลยี" ที่ดีอีกอย่างหนึ่งคือFlappy Bird-alike ในฐานะโปรแกรมเมอร์มืออาชีพมันเป็นงานของช่วงบ่าย (ดีมากวันหยุดสุดสัปดาห์เพื่อให้มัน "ดี") แต่ในขณะที่สอนอีกโปรแกรมให้เรารู้ว่ามันมีความยุ่งยากน้อยมาก อีกครั้งหนึ่งคือประสบการณ์ที่ไกลกว่าศูนย์และเมื่อคุณมีแล้วคุณจะมีความคิดที่ดีเกี่ยวกับการก้าวไปข้างหน้า
Olie

9

ลองดูเว็บไซต์นี้: 12 แนวคิดเกี่ยวกับโครงการเกมวิทยาศาสตร์คอมพิวเตอร์

เกมเหล่านี้บางเกมมีสิ่งที่ผู้อื่นพูดถึงเช่น:

  1. Pacman
  2. Tetris
  3. สาบ

แต่มันก็พูดถึงเกมอื่นที่คุณสามารถลองเช่น:

  1. โอเอกซ์
  2. ใครอยากเป็นเศรษฐี
  3. และโคลนมาริโอ

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

  1. ผู้เริ่ม
  2. สื่อกลาง
  3. สูง
  4. ดีที่สุด

2
+1 รักลิงค์นั้น "เกม RPG - ถ้าคุณเกลียดชีวิตของคุณ (และบางคนก็ทำ) ความพยายามในการเขียนโปรแกรมวิดีโอเกมในปีสุดท้ายนี้น่าจะจบลงอย่างไม่ดีตัวเกมมักจะแพร่กระจายออกไปอย่างไม่น่าเชื่อ (การเดินทางรอบโลก และอื่น ๆ ) และต้องใช้ความพยายามอย่างมาก "
ไซคลอป

5

ผู้คนจำนวนมากเริ่มต้นด้วยการฝ่าวงล้อมเพราะมันคุณสมบัติ:

  • อินพุต: ย้ายไม้ตีกลับไปกลับมา
  • Simple Collision: ลูกบอลกระดอนจากไม้พายอิฐและผนัง
  • การเปลี่ยน "สถานะเกม:" การอัปเดตคะแนนเมื่อลูกบอลชนก้อนอิฐและเอาก้อนอิฐออกจำนวนลูกที่ลดลงเมื่อลูกบอลกระทบกับด้านล่างของหน้าจอทำให้สูญเสียเกมเมื่อจำนวนลูก == 0 เป็นต้น
  • นอกจากนี้ยังเป็นการแนะนำกราฟิกที่ค่อนข้างอ่อนโยนเนื่องจากเป็นรูปสี่เหลี่ยมผืนผ้าและวงกลมทั้งหมด

5

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

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

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

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


5

มันขึ้นอยู่กับความสามารถของคุณในปัจจุบัน หากคุณค่อนข้างใหม่กับการเขียนโปรแกรมให้ไปกับหนึ่งในเกมที่ผู้คนแนะนำ มิฉะนั้นคุณควรคิดว่าเกมประเภทไหนที่จะช่วยให้คุณได้รับประสบการณ์ที่ดี

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

โครงการแรกนั้นให้ฉันได้พัฒนาวิธีการพัฒนาเกมโดยเริ่มจากพื้นที่ที่คุ้นเคย เมื่อโครงการพัฒนาขึ้นฉันได้เรียนรู้ที่จะคิดเหมือนนักพัฒนาเกมและไม่ชอบนักพัฒนาแอปองค์กร ผลลัพธ์ที่ได้ค่อนข้างดีและมันก็น่าประทับใจกว่า Battleship หรือ Tic-Tac-Toe :)


4

NibblesและSpace Invaders

ค่อนข้างง่าย AI, กราฟิก, เกมเพลย์, การควบคุมและพวกเขาไม่จำเป็นต้องมีเอฟเฟกต์เสียงหรือเพลงเว้นแต่คุณต้องการที่จะเพิ่มสิ่งต่อไปนี้ฉันเริ่มด้วยสองสิ่งนี้เมื่อเรียนรู้วิธีการโปรแกรมใน QBasic สำหรับ MS-DOS และฉันคิดว่า เป็นเกมแรกที่ยอดเยี่ยม แพคแมนจะเป็นทางเลือกอื่นของฉัน


ฉันไม่เคยได้ยินเกี่ยวกับ Nibbles มาก่อน แต่ได้รับการโหวตอย่างชัดเจนจาก Space Invaders
jhocking

3

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


2
ตกลงเกมสไตล์ Thrust / Lunar Lander เป็นโครงการแรกที่ยอดเยี่ยม การจัดการกับการหมุนและความเร็ว / ความเร่งจะเผยให้เห็นความลึกลับของไซน์ / โคไซน์ (สำหรับทุกคนที่ไม่ได้จัดการกับพวกมันมาระยะหนึ่ง) คุณสามารถใช้แผนที่ย่อยแบบคงที่หรือแบบเลื่อนและสามารถใช้การตรวจจับการชนกันโดยไม่ต้องใช้การตรวจสอบการชนที่ซับซ้อนมาก (สัมผัสอะไรบางอย่าง -> ระเบิด) นอกจากนี้ยังเป็นสิ่งที่ดีสำหรับการคิดเกี่ยวกับการปรับแต่งระบบควบคุม - รับสมดุลแรงขับแรงโน้มถ่วงและความเร็วในการหมุนที่ดีเพื่อให้รู้สึกถูกต้อง
bluescrn

@bluscrn อันที่จริงความคิดเห็นที่ดี หลังจากให้ผู้คนทดลองเล่นเวอร์ชันแฟลชของฉันฉันสังเกตว่าผู้คนมีความคิดเห็นที่ต่างกันว่าควรรู้สึกอย่างไร บางส่วนนี้เกิดจากเกมก่อนหน้านี้ที่ผู้ใช้มีประสบการณ์ มันไม่ใช่สิ่งที่ฉันคิดเป็นพิเศษก่อนที่จะพัฒนามัน
อัลลัน

2

ปืนอวกาศจากบนลงล่างอย่าง Galaga นั้นง่ายมากและสอนการตรวจจับการชนกันเป็นอย่างดี! นอกจากนี้ยังสามารถเปลี่ยนแปลงได้ในระดับความยากตั้งแต่ระดับที่มีศัตรูอยู่กับที่จนถึงระดับหลายระดับซึ่งการอัพเกรดอาวุธและศัตรูที่เคลื่อนไหวในรูปแบบพิเศษ


1

บางอย่างเช่น Gauntlet เพราะคุณต้องการระบบเอนทิตี AI ที่เป็นศัตรูรถปิคอัพแผนที่ย่อยการตรวจจับการชนการให้คะแนนเป็นต้นมันได้มาทั้งหมด แต่ไม่ใช่ในแบบที่ครอบงำ


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

เห็นด้วยเล็กน้อยที่ครอบงำสำหรับผู้ที่เพิ่งเริ่มต้น แนวคิดมากเกินไปทั้งหมดในครั้งเดียว เริ่มต้นด้วยสิ่งที่เป็นเพียงการให้คะแนนและการป้อนข้อมูล จากนั้นสร้างเกมที่ทำสิ่งใหม่ 1 หรือ 2 อย่างเช่นการตรวจจับการชนและศัตรู เลือกเกมที่ต่อยอดจากแนวคิดที่คุณรู้จัก แต่แนะนำสิ่งที่คุณไม่ชอบ หากคุณไม่ทราบคุณไม่ควรลอง ง่าย ๆ เข้าไว้.
384918

ฉันคิดอย่างตรงไปตรงมาว่าใน Gauntlet-clone มีจำนวนมากเกินไปที่จะนับเป็นเกม "ระดับเริ่มต้น"
PhillC

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

คุณได้รับคะแนนพิเศษสำหรับการทำเสียงอย่างถูกต้อง: "เอลฟ์ยิงอาหาร!" "พ่อมดกำลังจะตาย!" หรือรายการโปรดของฉัน: "คุณได้พบห้องพักที่แน่นอนของฉัน!"
rtperson

1

mini Zelda clone นั้นเก่งและฝึกฝนทักษะบางอย่างที่ยังไม่ได้กล่าวถึงมากนัก การเลื่อนแผนที่ขนาดใหญ่ของกระเบื้องและการควบคุมการเคลื่อนไหว 8 ทิศทางอย่างง่ายเป็นสิ่งที่ควรรู้ คะแนนโบนัสหากคุณสามารถทำศัตรูได้ แต่ฉันไม่ต้องกังวลเกี่ยวกับเรื่องนั้นมากนัก


1

ฉันทำโคลน Tetris มากกว่าสองสามตัว ทุกครั้งที่ฉันทำฉันทำมันแตกต่างกันเล็กน้อย ทุกวันนี้ฉันมักจะสร้างดาวเคราะห์น้อยประเภทหนึ่ง ฉันยังทำสปินดาวน์ของ Missile Command ได้ไม่กี่ครั้ง

ฉันเริ่มต้นด้วยการเล่นเกมขั้นพื้นฐานและมากกว่าที่จะเพิ่มสิ่งอื่น ๆ เพิ่มพลังให้กับมัน


1

ฉันมักจะเริ่มต้นด้วยเกม Tanks / Gorillas / Worms มันทำให้คุณออกกำลังกายในการแสดงผลกราฟิกที่เรียบง่ายและการอ่านอินพุตของผู้ใช้รวมถึงวงเกมที่ใช้แรงโน้มถ่วงกับกระสุนปืนและการทดสอบการตรวจจับการชนกัน

หลังจากนั้นจะเป็นเกมอย่าง platformer ที่ง่ายมากหรือ shoot-em-up ที่คุณต้องอ่านอินพุตของผู้ใช้แบบเรียลไทม์มากกว่าข้อความ INPUT ที่ทำงานกับ Gorillas :)


1

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

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


1

ฉันยืนยันเสมอว่าถ้าคุณเป็นโปรแกรมเมอร์เกมคุณควรจะสร้างSpace Invadersได้บ้าง เฮ็คเกมนี้ง่ายพอที่คุณจะสามารถทำกราฟิคเองได้เช่นกัน

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


1

มันขึ้นอยู่กับทักษะในการเป็นโปรแกรมเมอร์ประจำของคุณ คณิตศาสตร์ของคุณต้องการการทำงานหรือไม่? ความรู้ด้านกราฟิกของคุณ? คุณมีทั้งสองภายใต้ wraps?

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

หลังจากนั้นท้องฟ้าก็มีขีด จำกัด อีกครั้งมุ่งสูง ลองใช้ platformer ที่มีภูมิประเทศลาดชัน parralax และคุณจะได้รับกระเป๋า 2d tech ที่มีประโยชน์ เพิ่มเบาะสำหรับปักเข็ม (เตรียมที่จะผิดหวัง) และคณิตศาสตร์ของคุณจะดีขึ้น

จากนั้นไปสู่มิติที่สามเรียนรู้ทักษะหลัก (แอนิเมชั่นการเรนเดอร์) และคุณควรมีความพร้อมที่จะจัดการกับเกมที่หลากหลาย


0

ฉันจะบอกว่าเกมประเภท Tower Defense เป็นจุดเริ่มต้นที่ดีที่สุด คุณสามารถเริ่มต้นด้วยการดัดแปลงเกม / เอนจิ้นที่มีอยู่แล้ว (WarCraft III / HalfLife2 SDK / ฯลฯ ) เพื่อทำความเข้าใจกับตรรกะโดยรวมที่จำเป็นจากนั้นไปยังการใช้ฐานรหัสของคุณเอง


0

เกมแรกของฉันคือบางอย่างเช่น Super Mario

ย้ายไปมาหลีกเลี่ยงอุปสรรคกระโดด และงานทั้งหมดนั้นสามารถทำได้อย่างง่ายดายโดยไม่ต้องคำนวณทางฟิสิกส์ใด ๆ

มันเหมาะอย่างยิ่งที่จะนำสิ่ง 2D ง่าย ๆ ไปใช้เพราะคุณจะไม่ต้องพึ่งพาการนำไปใช้งาน / กรอบ / เอ็นจิ้นเฉพาะอย่างมาก

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