คู่มือการโปรแกรมเกม - เคล็ดลับ เครื่องมือ และอาชีพ

โดย Connor Taylor

นักโปรแกรมเกมคือบุคคลที่นำนักออกแบบมองการณ์ไกลให้ปฏิบัติการได้จริงในเครื่องยนต์เกมที่เราใช้ ฉันทำงานในทีมโปรแกรมเกมมือถือที่ Kwalee ดังนั้นสำหรับเรามักใช้ Unity เช่น ถ้านักออกแบบต้องการการทอยลูกเต๋าให้หมุนในแบบเฉพาะ ฉันจะเขียนสคริปต์เพื่อจัดการกับโลจิก นอกจากนี้เรายังทำงานร่วมกับนักศิลปะเกมเพื่อให้แน่ใจว่าเกมของเราทั้งดูดีและยังทำงานอย่างมีประสิทธิภาพบนอุปกรณ์

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

นักโปรแกรมเกมทำอะไร?

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

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

ความรับผิดชอบของเรายังรวมถึงการทำให้แน่ใจว่าเกมทำงานได้ดีบนฮาร์ดแวร์ของผู้ใช้ปลายทาง ตัวอย่างในเกมมือถือของเราเราต้องเลี่ยงไม่ให้อุปกรณ์เก่า ๆ ร้อนเกินไป ดังนั้นเราทำงานร่วมกับศิลปินเพื่อปรับจำนวน draw calls draw call คือ คำสั่งที่ส่งจากซีพียูไปยัง GPU เพื่อแสดงวัตถุบนหน้าจอ - มันบอกให้ GPU วาดองค์ประกอบกราฟิก เช่น เนื้อผ้า โมเดล หรือ shaders เราต้องลดจำนวน draw calls เหล่านี้ในเกมของเรา เพราะหากมีมากเกินไปอาจเกิดปัญหาเช่น อัตราเฟรมลดหรือการกระตุกฯลฯ

ภาษาการโปรแกรมเกมหลักๆมีอะไรบ้าง?

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

นี่คือนำเสนอภาษาการโปรแกรมเกมยอดนิยมบางตัว:

  • C# - ภาษาโปรแกรมที่หลายหน้าที่และได้รับความนิยมใช้กันอย่างแพร่หลายในพัฒนาเกม เหมาะสำหรับผู้เริ่มต้นเพราะเป็นภาษาโปรแกรมที่ง่ายมากๆ หนึ่งในคุณสมบัติที่ดีที่สุดคือการเก็บขยะอัตโนมัติ - ดังนั้นมันจัดการจัดสรรหน่วยความจำให้คุณ - มีประโยชน์มากสำหรับนักโปรแกรมที่งานยุ่งอย่างเรา
  • C++ - ตรงข้ามมันเป็นภาษาแบบไม่จัดการ คุณสมบัติตัวนี้ช่วยให้ต้องจัดการและปลดจัดสรรหน่วยความจำเอง ซึ่งทำให้ซับซ้อนและยากขึ้น แต่ให้ความเร็ว ควบคุมและประสิทธิภาพมากขึ้น
  • Java - เหมือนกับ C# Java มีการจัดการหน่วยความจำและเก็บขยะของตัวเอง ทำให้ง่ายขึ้นสำหรับนักพัฒนาในการจัดการหน่วยความจำโดยไม่ได้ลงลึกในรายละเอียดมากมาย มันใช้กันมากในพัฒนาเว็บและแอปพลิเคชันองค์กร ถึงแม้ว่ามันอาจไม่ใช่ตัวเลือกที่ดีที่สุดสำหรับการพัฒนาเกม แต่มันเป็นตัวเลือกที่มั่นคงในการสร้างแอปพลิเคชันขนาดใหญ่และมีประสิทธิภาพ
  • Swift - นี่คือภาษาพื้นเมืองของ Apple สำหรับการสร้างแอปและเกมสำหรับ iOS และ macOS อย่างไรก็ตามหมายความว่ามันมีประโยชน์น้อยกว่าในการพัฒนาครอสแพลตฟอร์ม - เพราะเรามุ่งมั่นที่จะเผยแพร่เกมมือถือของเราในทั้ง Android และ iOS เสมอ

คุณจะเป็นนักโปรแกรมเกมได้อย่างไร?

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

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

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

วันทำงานประจำของนักโปรแกรมเกมเป็นยังไง?

ขอยกตัวอย่างตามชีวิตฉัน ฉันคือนักโปรแกรมหัวหน้า (ฉันเรียกมันว่างานในฝันของฉัน) ดังนั้นมันคือการผสมผสานระหว่างลงมือทำและการบริหารนักโปรแกรมคนอื่น!

วันทำงานทั่วไปในโลกของฉันคือการเริ่มงาน ดื่มลาเต้ แล้วตรวจสอบข้อบกพร่องหรือปัญหาที่มีต่อทีม QA ตรวจสอบกับทีมดูว่ามีใครต้องการให้ฉันทำอะไรเพื่อปรับงานของพวกเขา เพลงก็จะเปิดขึ้นและรายการงานก็จะปรากฏขึ้น เราจะแชร์วิดีโอความก้าวหน้าผ่าน Slack เพื่อได้ความคิดเห็นอย่างรวดเร็ว ขณะที่ระหว่างกันโปรเจก 2-3 งานเพื่อสนับสนุนสมาชิกทีมของฉัน นอกจากนี้เรายังใช้เวลามากในการลงทุนในระบบที่ใช้ร่วมกันเพื่อให้โปรแกรมของเรามีประสิทธิภาพมากขึ้น ซึ่งทั้งหมดจำเป็นต้องได้รับการดูแล ซ่อมแซมและอัปเดตตลอดเวลาเพื่อให้ทำงานได้ราบรื่น

เคล็ดลับการเขียนโปรแกรมเกมสำหรับผู้เริ่มต้น

ถ้าคุณกำลังเริ่มต้นและต้องการเป็นนักโปรแกรมที่ครบครัน นี่คือเคล็ดลับผู้เริ่มต้นของฉัน!

  • มีสิ่งมากมายให้เรียนรู้ออนไลน์บน YouTube และมีตัวอย่างเกมมากมายที่คุณไม่มีข้ออ้างที่จะไม่เรียนรู้! เครื่องยนต์ยอดฮิคจัดให้ฟรีและสนุกในการใช้!
  • ตรงข้ามกันสิ้นสุดมันอาจอายุ 30 ปี แต่คุณควรพยายามอ่านหนังสือที่มีอิทธิพล "Design Patterns: Elements of Reusable Object-Oriented Software" โดยกลุ่มผู้เขียนที่เรียกว่า Gang of Four ซึ่งเป็นการนำเสนอหลักพื้นฐานของลวดลายเกมที่เราใช้ทุกวันในการโปรแกรม
  • คุณอาจมีแนวคิดของตัวเอง แต่ทำให้แน่ใจว่าคุณเริ่มจากสิ่งง่าย ๆ ดังนั้นคุณจะได้เรียนรู้พื้นฐาน
  • เมื่อคุณไม่ผูกมัดกับโครงการพาณิชย์ คุณสามารถเขียนโค้ดได้เท่าไหร่ก็ได้ที่คุณอยาก เพราะฉะนั้นมีความสนุกสนานกับการสร้างสิ่งบ้า ๆ บอ ๆ
  • การสร้างพอร์ตโฟลิโอคือกุญแจที่แท้จริง (และเป็นวิธีที่ฉันได้งาน) แต่ระวังให้มากที่จะไม่เพิ่งอัปโหลดผลงานมหาวิทยาลัยที่เหมือนกันเพราะเราจะเห็นแอปพลิเคชันแบบนี้มากมาย แม้แต่การใช้เวลาวันหนึ่งในการเปลี่ยนสกินและเพิ่มฟีเจอร์จะช่วยให้คุณโดดเด่น
  • การสร้างเกมในโลกรอบเดิมของตัวเองก็เป็นความคิดอัจฉริยะ - มันถูกมากที่จะลงเกมบน Google Play ดังนั้นการสร้างบางอย่างเพื่อแสดงให้ผู้สรรหา/นักพิมพ์/ครอบครัว/สัตว์เลี้ยงบนโทรศัพท์ดู คุณอาจทำเงินได้อย่างไม่กี่พันดอลลาร์ต่อปีจนกว่าจะพร้อมสำหรับงานเต็มเวลาเต็มแรง ที่เป็นโบนัส! หรือมันอาจล่อลวงคุณให้สร้างเกมแบบเต็มรูปแบบและร่วมมือกับนักพิมพ์
  • อย่าเพียงเรียนรู้เกี่ยวกับโปรแกรม - เรียนรู้เกี่ยวกับศิลปะ การออกแบบ QA และสาขาอื่น ๆ ที่คุณจะมีปฏิสัมพันธ์ ตัวอย่างเช่น น่าจะคุ้นเคยกับวิธีการ QA เพราะคุณอาจตกในกับดักของการคิดว่าสิ่งใดทำงานได้ แต่คุณต้องเล่นมันเหมือนที่ผู้ใช้จะได้เรียนรู้ ไม่เหมือนคนที่เขียนโค้ดและมีมุมมองที่คาดคะเนว่าจะเล่นอย่างไร ลองทำลายมัน ลองสิ่งแปลก ๆ ที่คนอาจทำได้ กดปุ่มสุ่ม ๆ หรือพฤติกรรมที่บ้าบออื่น ๆ

เคล็ดลับสำหรับโปรแกรมเมอร์ขั้นสูง

นี่คือเคล็ดลับบางประการที่ช่วยฉันมาก้าวจาก Junior ไป Programmer ไป Senior จนถึง Lead

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

หลักการสำคัญของการโปรแกรมเกมคืออะไร?

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

การควบคุมแหล่งที่มา/การควบคุมเวอร์ชัน

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

หากนักพัฒนาสองคนทำงานบนไฟล์เดียวกัน ไฟล์นั้นจะกลายเป็นส่วนหนึ่งของการรวม ถ้ามีความขัดแย้งเหล่านี้ เราสามารถแก้ไขพวกเขาทางมือหรือนำการเปลี่ยนแปลงของบางคนมาใช้ได้ มันจะเกิดขึ้นบ่อยเมื่อใช้ Prefabs หรือ Scenes ใน Unity

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

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

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

การโปรแกรมเชิงวัตถุ

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

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

รูปแบบการโปรแกรม (Programming Patterns)

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

ตัวอย่างเช่น รูปแบบการออกแบบ Singlepeople ช่วยให้แน่ใจว่ามีเพียงอินสแตนซ์เดียวของคลาสบางอย่าง เช่น ผู้จัดการการตั้งค่าเกมทั้งเกม และให้จุดการเข้าถึงทั่วทั้งระบบ

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

ฉันหวังว่าบล็อกนี้ให้รสชาติสำหรับการโปรแกรมเกม ไม่ว่าคุณจะเป็นคนใหม่ในวงการหรือนักโปรแกรมที่มีประสบการณ์! หากคุณเป็นบุคคลที่ขยัน แต่ชอบความสนุก คุณจะเหมาะกับทีมของเรา ดังนั้นหาข้อมูลเพิ่มเติมเกี่ยวกับ Kwalee careers. และสามารถเรียนรู้เกี่ยวกับ mobile games ของเราหรือ publishing และรู้จักเพิ่มเติมเกี่ยวกับสิ่งที่เราปล่อยออกมาเป็นนักพัฒนาและนักพิมพ์

เกี่ยวกับผู้เขียน:

Connor Taylor, หัวหน้านักโปรแกรมเกมที่ Kwalee ชื่นชอบการสร้างเกมและสนับสนุนทีมที่สนุกสนาน ด้วยประสบการณ์มากกว่า 5 ปี เขาได้สร้างเกมยอดนิยมเช่น Jetpack Jump และให้คำปรึกษาด้านการพัฒนา Unity

แบ่งปันบทความนี้: