กำไร:
- ความสามารถในการสร้างโค้ดเกมที่เชื่อถือได้และคอมไพล์ได้จากปัญญาประดิษฐ์โดยให้เอ็นจิ้น เวอร์ชัน ภาษา และบริบททางสถาปัตยกรรม และบูรณาการโดยการอ่านและทำความเข้าใจโค้ด
- ความสามารถในการจัดการประสิทธิภาพเฉพาะโค้ดเกม (การจัดสรรต่อเฟรม) วงจรชีวิตของเครื่องยนต์ และความเสี่ยงต่อภาพหลอนผ่านการรวบรวม การทดสอบ และการสร้างโปรไฟล์
- ความสามารถในการใช้หลักการของอำนาจโฮสต์ในเกมที่มีผู้เล่นหลายคน และใช้ข้อมูลความปลอดภัยอย่างรับผิดชอบเพื่อปกป้องและตรวจสอบเกมของตนเองเท่านั้น
เกมดังกล่าวเป็นซอฟต์แวร์ ไม่ว่าจะออกแบบมาดีแค่ไหน ก็ยังใช้งานด้วยโค้ดได้ เอ็นจิ้นเกมเป็นโครงสร้างพื้นฐานที่ทำให้เกมทำงานได้: Unity (เอ็นจิ้นที่ใช้กันอย่างแพร่หลายซึ่งมีสคริปต์ใน C#) และ Unreal Engine (เอ็นจิ้นที่ใช้ C++ และพิมพ์เขียวภาษาสคริปต์ภาพ) เป็นสองสิ่งที่พบบ่อยที่สุด AI เป็นหนึ่งในตัวช่วยที่เติบโตเต็มที่ที่สุดในการสร้างโค้ด: ตัวควบคุมผู้เล่น, ระบบสินค้าคงคลัง, เครื่องสถานะ, บันทึก/โหลด, ลอจิกอินเทอร์เฟซ, การดีบักและการปรับโครงสร้างใหม่ (การปรับโครงสร้างโค้ดใหม่โดยไม่ทำลายพฤติกรรมของมัน) แต่โค้ดเกมก็มีข้อผิดพลาดของตัวเอง: ประสิทธิภาพ (อัตราเฟรม), วงจรชีวิตของเครื่องยนต์, ความปลอดภัยของผู้เล่นหลายคน ในหน่วยนี้คุณจะได้เรียนรู้วิธีใช้ AI อย่างปลอดภัยและมีประสิทธิภาพในโค้ดเกม
หลักการสำคัญ: บริบทของกลไกและเวอร์ชัน
หาก AI ไม่รู้ว่ามันเขียนถึงกลไกและเวอร์ชันใด มันจะสร้าง API ที่สับสน ล้าสมัย หรือไม่มีอยู่จริง ดังนั้นให้ระบุบริบทของกลไก เวอร์ชัน ภาษา และสถาปัตยกรรมในทุกโค้ดพร้อมท์ "เขียนการเคลื่อนไหวของผู้เล่นเพื่อ Unity" นั้นอ่อนแอ "Unity 2022.3, C#, ระบบอินพุตใหม่, การเคลื่อนไหวทางฟิสิกส์แบบ Rigidbody" นั้นทรงพลัง ระบุว่าคุณต้องการ Blueprint หรือ C++ ใน Unreal และเวอร์ชันที่คุณใช้อยู่
การไหลของรหัสที่ปลอดภัยทีละขั้นตอน:
- ให้บริบท (กลไก เวอร์ชัน ภาษา สถาปัตยกรรมปัจจุบัน ข้อจำกัด)
- ต้องการขนาดเล็กและชัดเจน (องค์ประกอบเดียว ไม่ใช่ทั้งระบบ)
- อ่านและทำความเข้าใจโค้ด (ทำความเข้าใจว่ามันทำอะไรทีละบรรทัด อย่าใส่โค้ดที่คุณไม่เข้าใจ)
- สร้างและทดสอบ (ทำงานบนเครื่องยนต์ โปรไฟล์ — วัดประสิทธิภาพ)
- ปรับโครงสร้างใหม่และบูรณาการ (ตรงกับมาตรฐานโครงการ)
เคล็ดลับ: เมื่อขอโค้ดจาก AI ให้พูดว่า "อธิบายพร้อมแสดงความคิดเห็น" เป้าหมายของคุณคือการเข้าใจโค้ด การใส่โค้ด AI ที่คุณไม่เข้าใจลงในโปรเจ็กต์จะสะสมหนี้ที่ไม่สามารถรักษาได้ นอกจากนี้ ขอโค้ดเป็นชิ้นเล็กๆ ที่ทดสอบได้: แทนที่จะใช้ระบบ 500 บรรทัด ส่วนประกอบ 30-50 บรรทัดที่ทำงานที่กำหนดไว้เพียงงานเดียวนั้นง่ายต่อการตรวจสอบและบูรณาการ
กับดักเฉพาะรหัสเกม
ประสิทธิภาพ รหัสเกมรัน 30-60+ ครั้งต่อวินาที AI สามารถใส่การดำเนินการที่มีราคาแพง (การจัดสรรหน่วยความจำ การค้นหา การจัดการสตริง) ลงในลูปการอัปเดตที่ทำงานในแต่ละเฟรม สิ่งนี้จะลดอัตราเฟรม โปรไฟล์รหัสสำคัญด้านประสิทธิภาพและให้ข้อจำกัด AI เช่น "ทำงานบนทุกเฟรม ไม่มีการจัดสรร"
วงจรชีวิตของเครื่องยนต์ บางครั้ง AI อาจสับสนเมื่อมีการเรียกใช้วิธีการพิเศษ เช่น Awake/Start/Update ใน Unity, BeginPlay/Tick ใน Unreal ตรวจจับข้อผิดพลาดวงจรชีวิตโดยการทดสอบ
ความปลอดภัยของผู้เล่นหลายคน นี่เป็นปัญหาที่สำคัญที่สุดในแง่ของไอที/ความปลอดภัย อย่าไว้ใจไคลเอนต์ในโหมดผู้เล่นหลายคน: ไคลเอนต์บนคอมพิวเตอร์ของผู้เล่นสามารถถูกหลอกให้โกงได้ ตรวจสอบสถานะที่สำคัญ เช่น คะแนน ความเสียหาย เงินบนเซิร์ฟเวอร์ (เซิร์ฟเวอร์มีสิทธิ์) ควบคุมโค้ดเครือข่ายที่สร้างโดย AI ขัดกับหลักการนี้ หาก AI ได้สร้างช่องโหว่ที่ Client-Trust ให้แก้ไข ใช้ข้อมูลนี้เพื่อปกป้องและตรวจสอบการเล่นของคุณเองเท่านั้น การเข้าถึงหรือการโกงเซิร์ฟเวอร์ของผู้อื่นโดยไม่ได้รับอนุญาตถือเป็นการกระทำที่ผิดกฎหมายและผิดจริยธรรม
ข้อควรระวัง: โค้ดที่สร้างโดย AI อาจมีช่องโหว่ (ขาดการตรวจสอบอินพุต ความไว้วางใจจากไคลเอ็นต์ บันทึกการจัดการไฟล์) อย่ายอมรับรหัสแบบสุ่มสี่สุ่มห้า ดำเนินการตรวจสอบความปลอดภัย โดยเฉพาะเครือข่าย เศรษฐศาสตร์ และบันทึกโค้ด
หนี้สถาปัตยกรรมและการบำรุงรักษา
AI สร้างฟังก์ชันแต่ละอย่างอย่างรวดเร็ว แต่สถาปัตยกรรมของเกม—วิธีการแบ่งระบบ, วิธีพูดคุยกัน, ที่เก็บข้อมูล—เป็นการตัดสินใจระยะยาว และมันเป็นของมนุษย์ หากคุณบอกให้ AI "เขียนสินค้าคงคลังทั้งหมด ต่อสู้ และบันทึกระบบเข้าด้วยกัน" คุณจะได้เส้นด้ายที่ใช้งานได้แต่มีความเชื่อมโยงกันแน่นหนา บำรุงรักษายาก และไม่สามารถขยายได้ แต่คุณออกแบบสถาปัตยกรรม ใช้ AI เพื่อเติมส่วนประกอบขนาดเล็กด้วยอินเทอร์เฟซที่กำหนดไว้แทน สถาปัตยกรรมที่ดีจะสร้างความแตกต่างเมื่อเกมเติบโตขึ้น การตัดสินใจที่ไม่ดีจะกลับมาในอีกหนึ่งปีต่อมา เนื่องจากหนี้ทางเทคนิคที่ทำให้ฟีเจอร์ใหม่ทุกอย่างล่าช้า
หนี้การบำรุงรักษาอีกแหล่งหนึ่งคือรหัสที่เข้าสู่โครงการโดยไม่มีใครเข้าใจ ระบบที่เขียนโดย AI สามารถทำงานได้ในปัจจุบัน แต่เมื่อคุณต้องเปลี่ยนมันในหกเดือนต่อมาและไม่มีใครจำได้ว่าเขาทำอะไรไป หนี้ก็กลายเป็นดอกเบี้ย นั่นเป็นเหตุผลว่าทำไมสองสาขาวิชาจึงมีความสำคัญ: การอ่านและการทำความเข้าใจโค้ดในขณะใช้งานจริง และการขอความคิดเห็นที่ชี้แจงจาก AI ตามหลักการทั่วไป อย่าใส่โค้ด AI ใด ๆ ลงในโปรเจ็กต์ของคุณที่คุณไม่สามารถเขียนใหม่ด้วยตัวเองหรืออย่างน้อยก็อธิบายทีละบรรทัด AI ให้ความเร็ว ระเบียบวินัยของคุณให้ความยั่งยืน
มินิเคสสามอัน
กรณีที่ 1 — บริบทการเผยแพร่ป้องกันข้อผิดพลาด โปรแกรมเมอร์คนแรกพูดว่า "เขียนรายการสินค้าคงคลังสำหรับ Unity"; รหัสใช้ API เก่า แต่ไม่ได้คอมไพล์ จากนั้นจึงให้บริบท "Unity 2022.3, C#, based on ScriptableObject"; โค้ดรวบรวมครั้งแรกและเหมาะสมกับโปรเจ็กต์ บริบทช่วยประหยัดเวลาในการแก้ไขจุดบกพร่องได้หนึ่งชั่วโมง
กรณีที่ 2 — กับดักด้านประสิทธิภาพ ในเกมหนึ่งเฟรมเรตต่ำ เมื่อทำโปรไฟล์จะเห็นว่าวิธีการอัปเดตที่ AI สร้างขึ้นนั้นได้จัดสรรรายการใหม่ในแต่ละเฟรมและค้นหาศัตรู แก้ไขโค้ดที่มีการอ้างอิงแคชและการอัปเดตที่ไม่ใช่กำลังสอง โดยเพิ่มอัตราเฟรมจาก 42 เป็น 60
กรณีที่ 3 — ตรวจพบช่องโหว่ด้านความปลอดภัย ในเกมที่มีผู้เล่นหลายคน โค้ดที่สร้างโดย AI จะคำนวณความเสียหายที่เกิดกับไคลเอนต์และรายงานไปยังเซิร์ฟเวอร์ นี่เป็นการเปิดสำหรับการโกง (ลูกค้าสามารถสร้างความเสียหายได้ไม่จำกัด) รหัสถูกสร้างขึ้นโดยเซิร์ฟเวอร์เผด็จการ (เซิร์ฟเวอร์คำนวณความเสียหาย) การตรวจสอบดังกล่าวช่วยป้องกันเรื่องอื้อฉาวเกี่ยวกับการโกงหลังการตีพิมพ์
เทมเพลตที่สามารถคัดลอกได้สี่แบบ
1) คำขอรหัสพร้อมบริบท:
เครื่องยนต์: เอกภาพ 2022.3 ภาษา: C# สถาปัตยกรรม: [เช่น ตามส่วนประกอบ] ข้อ จำกัด : การจัดสรรในการอัปเดต; สามารถอ่านและแสดงความคิดเห็นได้ งาน: [องค์ประกอบเดียวที่กำหนดไว้ เช่น "ตัวควบคุมอักขระกระโดดสองครั้ง"] ตรวจสอบว่าทุก API ที่คุณใช้อยู่ในเวอร์ชันนี้ หากคุณไม่แน่ใจโปรดแจ้งให้เราทราบ
2) คำอธิบาย / ทบทวนรหัส:
อธิบายโค้ดต่อไปนี้ทีละบรรทัดและเขียน (1) มันทำอะไรได้บ้าง (2) ปัญหาด้านประสิทธิภาพที่เป็นไปได้ (การจัดสรรต่อเฟรม การค้นหาที่มีราคาแพง) (3) ข้อบกพร่องที่เป็นไปได้ (4) ข้อเสนอแนะสำหรับการปรับปรุง รหัส: [วาง]
3) การตรวจสอบความปลอดภัยของผู้เล่นหลายคน:
ตรวจสอบรหัสผู้เล่นหลายคนต่อไปนี้เพื่อความปลอดภัย โดยเฉพาะอย่างยิ่ง: สถานที่ที่ไคลเอนต์ได้รับความเชื่อถือ สถานะวิกฤติที่ต้องได้รับการตรวจสอบบนเซิร์ฟเวอร์ (ความเสียหาย คะแนน เงิน) ขาดการตรวจสอบอินพุต แนะนำให้แก้ไขเพื่อให้เซิฟเวอร์เผด็จการ นี่เป็นเพียงเพื่อปกป้องเกมของตัวเอง รหัส: [วาง]
4) รีแฟกเตอร์ที่เน้นโปรไฟล์ประสิทธิภาพ:
รหัสนี้ทำงานในทุกเฟรมและลดอัตราเฟรม: [รหัส] ค้นหาการจัดสรร การค้นหาที่มีราคาแพง และการดำเนินการทีละเฟรมโดยไม่จำเป็น ปรับให้เหมาะสมโดยไม่ทำลายพฤติกรรมด้วยแคชและการอัปเดตที่น้อยลง อธิบายการเปลี่ยนแปลง
พรอมต์อ่อน / พรอมต์แข็งแกร่ง
พรอมต์ที่อ่อนแอ:
เขียนระบบบันทึกใน Unity
ไม่มีเวอร์ชัน รูปแบบ ขอบเขตข้อมูล ความปลอดภัย ผลลัพธ์ที่ได้คือเรื่องทั่วไปและมีความเสี่ยง
พรอมต์อันทรงพลัง:
เครื่องยนต์: Unity 2022.3, C# งาน: ระบบบันทึก/โหลดที่ใช้ JSON สิ่งที่ต้องบันทึกไว้: ตำแหน่งของผู้เล่น, สินค้าคงคลัง, ความคืบหน้า ข้อจำกัด: รับการจัดการข้อผิดพลาดจากความเสียหายของไฟล์ เพิ่มการตรวจสอบความสมบูรณ์ (แฮช) ให้กับไฟล์บันทึกเพื่อป้องกันการโกงโดยผู้เล่นเปลี่ยนไฟล์ได้อย่างง่ายดาย ใส่ความคิดเห็นโค้ดและตรวจสอบว่า API แต่ละรายการเป็นเวอร์ชันนี้
การกำหนดเวอร์ชัน ขอบเขต การจัดการข้อผิดพลาด และการตรวจสอบความสมบูรณ์จะทำให้เอาต์พุตแข็งแกร่งขึ้น
ตารางบริบทของกลไก/ภาษา
เครื่องยนต์
ภาษา
สิ่งที่คุณต้องมอบให้กับ AI
ความสนใจเป็นพิเศษ
ความสามัคคี
ค#
เวอร์ชัน ระบบอินพุต/ฟิสิกส์
อัปเดตการจัดสรร วงจรการใช้งาน
ไม่จริง
พิมพ์เขียว
เวอร์ชัน บริบทของโหนด
ขีดจำกัดลอจิกภาพ
ไม่จริง
ซี++
เวอร์ชัน โครงสร้างโมดูล
หน่วยความจำ, GC, มาโคร
ผู้เล่นหลายคน
ทั้งสองอย่าง
โมเดลเครือข่าย
ผู้นำเสนอเผด็จการ
ข้อผิดพลาดทั่วไป
- ไม่ระบุเครื่องยนต์/รุ่น มันมาจาก API ที่ล้าสมัยหรือสร้างขึ้น
- เชื่อถือโค้ดโดยไม่เข้าใจ หนี้ที่ไม่สามารถรักษาได้สะสม
- ไม่ใช่การวัดประสิทธิภาพ การจัดสรรแบบเฟรมต่อเฟรมจะลดอัตราเฟรมโดยไม่แจ้งให้ทราบ
- ไว้วางใจลูกค้า. มีช่องโหว่ในการโกงในโหมดผู้เล่นหลายคน
- ต้องการทั้งระบบพร้อมกัน ชิ้นเล็กที่ทดสอบได้จะปลอดภัยกว่า
โดยสรุป
AI เป็นตัวช่วยที่ทรงพลังในโค้ดเกม แต่ต้องใช้กลไก เวอร์ชัน และบริบททางสถาปัตยกรรม อย่าใส่ไว้ในโปรเจ็กต์โดยไม่ได้อ่านและทำความเข้าใจโค้ด คอมไพล์และทดสอบ และตรวจสอบประสิทธิภาพและความปลอดภัย รักษาอำนาจเผด็จการเซิร์ฟเวอร์ในโหมดผู้เล่นหลายคน และใช้ข้อมูลความปลอดภัยเพื่อวัตถุประสงค์ในการป้องกันและการตรวจสอบเท่านั้น
งานสมัคร
เลือกส่วนประกอบขนาดเล็ก (เช่น การกระโดดสองครั้งหรือสินค้าคงคลังแบบง่าย) สร้างโค้ดโดยจัดเตรียมกลไกและเวอร์ชันด้วยเทมเพลต "คำขอโค้ดพร้อมบริบท" จากนั้นขจัดความเสี่ยงด้านประสิทธิภาพและจุดบกพร่องโดยให้โค้ดเดียวกันได้รับการตรวจสอบด้วยเทมเพลต "คำอธิบาย/การตรวจสอบโค้ด" รวบรวมและทดสอบโค้ดในเครื่องยนต์
รายการตรวจสอบ
- [ ] ฉันให้บริบทของกลไก เวอร์ชัน ภาษา และสถาปัตยกรรม
- [ ] ฉันอ่านและเข้าใจโค้ดแล้ว ฉันต้องการมันพร้อมคำอธิบาย
- [ ] ฉันรวบรวมและทดสอบในเครื่องยนต์และวัดประสิทธิภาพ
- [ ] ฉันได้ตรวจสอบความปลอดภัยในเครือข่าย/ประหยัด/รหัสบันทึก
- [ ] ฉันใช้ข้อมูลความปลอดภัยเพื่อปกป้องเกมของตัวเองเท่านั้น