‫สวัสดีและยินดีต้อนรับ.
‫ในการบรรยายนี้ เราจะมาแนะนำสิ่งใหม่ในแผนผังพฤติกรรม บริการ
‫เราจะค้นหาว่าบริการคืออะไร บริการเหล่านี้ช่วยให้เราทำงานอย่างต่อเนื่องได้อย่างไร และเราจะเขียนบริการของเราเองใน
‫C++ ได้อย่างไร
‫มาดำดิ่งกันเลย
‫ขณะนี้มีตรรกะเพียงไม่กี่ชิ้นที่เหลืออยู่ในตัวควบคุม AI ของเราที่ไม่ได้อยู่ในแผนผังพฤติกรรมของเรา
‫หนึ่งในนั้นคือการตั้งค่าตำแหน่งเริ่มต้น
‫ฉันยังต้องการตั้งค่าที่นี่จากตัวควบคุม I
‫แต่สิ่งที่ชอบติ๊กตอนนี้ที่ฉันต้องการจะทำจากภายในต้นไม้พฤติกรรมของเรา
‫ฉันมาทำอะไรที่นี่?
‫ฉันจะได้รับมันจะทำอย่างไร?
‫ตั้งค่าตำแหน่งผู้เล่นของเราเพื่ออัปเดตตำแหน่งผู้เล่นที่รู้จักล่าสุด
‫ทั้งสองสิ่งนี้เราสามารถทำอะไรได้บ้างที่เรียกว่าบริการพิมพ์เขียว
‫ลองไปที่พิมพ์เขียวของเราและดูว่าเกิดอะไรขึ้น
‫ดังนั้น ถ้าฉันไปที่ AI ของฉันและเปิดแผนผังพฤติกรรม เชื่อมต่อเข้ากับหน้าต่างหลัก ฉันต้องแสดงให้คุณเห็นว่าบริการคืออะไร
‫เราไม่เคยใช้มาก่อน และโดยพื้นฐานแล้วมันคือวิธีการเรียกใช้บางสิ่งทุกๆ ขีดหรือทุกๆ
‫ครั้งเมื่อใดก็ตามที่เส้นทางนั้นทำงานอยู่
‫ดังนั้นถ้าฉันมีบริการเกี่ยวกับพฤติกรรม Chase แล้วโค้ดบางอย่างจะสามารถทำงานตลอดเวลาที่พฤติกรรม
‫Chase ทำงานอยู่ ไม่ว่าเราจะเคลื่อนที่ ยิง ชั่งน้ำหนักสิ่งเหล่านี้ก็ตาม
‫วิ่ง.
‫แต่ถ้าเราอยู่ในการสอบสวนมันจะไม่เป็นเช่นนั้น
‫นี่คือสถานการณ์ที่เราต้องการใช้บริการ
‫ตอนนี้ขอมีบริการตัวอย่าง
‫สิ่งหนึ่งที่เราสังเกตเห็นเมื่อเรากำลังเล่นคือเมื่อ AI เข้ามาอยู่ในระยะของเราและเราเคลื่อนที่ไปรอบ
‫ๆ เขาไม่หมุนมามองเราและเราสามารถแก้ไขได้ด้วยบริการที่มีอยู่แล้วที่นี่
‫ดังนั้นหากเราคลิกขวาที่โหนดนี้แล้วไปที่เพิ่มบริการและค้นหาบริการโฟกัสเริ่มต้น คุณจะเห็นว่ามันเป็นสีอื่น
‫มันคือสีเขียว
‫และถ้าเราเลือกบริการเริ่มต้นนั้น มันจะไปอยู่ใต้โหนดลำดับเหล่านี้ด้วย ซึ่งตรงข้ามกับโหนดด้านบน
‫ซึ่งเป็นสิ่งที่นักตกแต่งทำ
‫ดังนั้นเมื่อเลือกโฟกัสเริ่มต้น คุณจะสามารถเลือกสิ่งที่คุณต้องการโฟกัสได้
‫และในกรณีนี้ เราต้องการเน้นที่ตำแหน่งของผู้เล่น กดบันทึก และกดเล่น
‫และตอนนี้ถ้าเราไปดูและย้ายไปรอบๆ คุณจะเห็นว่าเขาหมุนตามเรา
‫สิ่งที่เย็น.
‫ตอนนี้เราต้องการใช้บริการที่คล้ายกันใน C ++ ซึ่งจะอัปเดตตำแหน่งผู้เล่นของเราตลอดเวลาและอัปเดตตำแหน่งผู้เล่นที่รู้จักล่าสุดของเราในขณะที่เรากำลังไล่ล่า
‫ดังนั้นเราจะทำเป็นสองบริการแยกกัน และคุณจะเห็นได้ว่าบริการอัตโนมัตินั้นสามารถทำให้สิ่งต่าง
‫ๆ มีประสิทธิภาพมากกว่าการทำเครื่องหมายเล็กน้อยได้อย่างไร เพราะคุณสามารถเรียกใช้ตำแหน่งผู้เล่นที่รู้จักล่าสุดเมื่อคุณอยู่ใน
‫ส่วนขวาของแผนผังพฤติกรรม
‫ไปที่แซนด์บ็อกซ์ ไปที่เนื้อหาเบราว์เซอร์ เพิ่มคลาส C++ ใหม่ จะแสดงคลาสทั้งหมด และค้นหาตัวเลือกของเราที่นี่
‫เรากำลังมองหาบริการ BT และมีตัวเลือกสองทาง เช่นเดียวกับงาน BT ของเรา เรามีฐาน Blackboard และเราต้องการฐาน
‫Blackboard เพราะเราต้องการทราบว่าคีย์ใดที่เรา ควรจะปรับปรุง
‫ตัวอย่างเช่น ควรเป็นตำแหน่งของผู้เล่นหรือไม่?
‫ควรเป็นตำแหน่งผู้เล่นที่รู้จักล่าสุดหรือไม่
‫ดังนั้นเราจะไปต่อในรายการนี้โดยเลือก Blackboard Base และเราจะเรียกใช้บริการ
‫BT นี้ ขีดเส้นใต้ตำแหน่งของผู้เล่นเช่นนั้น และสร้างคลาสนั้นต่อไป
‫เมื่อเราคอมไพล์เสร็จแล้ว เราจะไปที่โค้ดของ Visual Studio และคุณจะเห็นว่าเราได้ตำแหน่งโปรแกรมเล่นบริการ
‫BT ซึ่งสืบทอดมาจาก Service Blackboard Base Call
‫นั่นคือสิ่งที่เราต้องการ
‫ตอนนี้เราจะย้ายไปใช้ฟังก์ชันอะไร?
‫ฉันจะลองย้ายฟังก์ชันที่ง่ายที่สุดเท่าที่จะทำได้ ซึ่งก็แค่ตั้งค่าตำแหน่งผู้เล่นที่รู้จักล่าสุดโดยพื้นฐานแล้ว
‫แม้ว่าคีย์นี้จะได้รับการกำหนดค่าในแผนผังลักษณะการทำงาน ไม่ใช่ที่นี่ในข้อความธรรมดา
‫แต่จะรับตำแหน่งผู้เล่นและตั้งค่าเป็นคีย์กระดานดำ
‫และจะไม่ทำให้เกิดการตรวจสอบด้วยสายตาเพราะถ้าเราใช้มันในแผนผังพฤติกรรมของเราเฉพาะเมื่อเราไล่ตาม
‫เราก็ไม่จำเป็นต้องตรวจแนวสายตา
‫เราสามารถเห็นผู้เล่นที่โดยอัตโนมัติเรารู้ว่าเป็นกรณี
‫ดังนั้นการทำให้เข้าใจง่ายขึ้นอีกประการหนึ่งสำหรับการทำในบริการ
‫ดังนั้นสิ่งนี้ควรจะตรงไปตรงมาถ้าเรารู้วิธีรับเมธอดที่นี่ในบริการ BT
‫ลองไปดูที่บริการ BT ของเราเพื่อดูว่ามีอะไรบ้าง
‫เอกสารอะไรครับ ทำอะไรได้บ้าง?
‫วิธีการหลักที่นี่คุณสามารถเห็นได้ว่ามีความเกี่ยวข้องกับ C ที่เกี่ยวข้องกับโหนดติ๊กและเมื่อเริ่มต้นการค้นหา
‫ในการค้นหาเริ่มต้น
‫เราไม่สนใจเป็นพิเศษ แต่ติ๊กโหนด
‫ใช่ นั่นคือที่ที่เราจะได้รับการอัปเดตตลอดเวลาว่าบริการนี้อยู่บนเส้นทางที่ใช้งานอยู่
‫นั่นคือเวลาที่เราต้องการนำไปใช้
‫เราไปค้นหาไฟล์นี้เพื่อค้นหาลายเซ็นแบบเต็มที่นี่
‫เราจะเห็นว่าที่นี่
‫มาดูกันว่าอยู่ในภาคไหน?
‫มันอยู่ภายใต้ส่วนที่ได้รับการคุ้มครอง
‫ดังนั้นเราจะไปที่บริการ BT ของเราที่เราได้สร้างและสร้างส่วนที่มีการป้องกัน
‫และวางลงใน จะเป็นการลบล้างที่นี่โดยอัตโนมัติ เนื่องจาก BT Service สืบทอดมันเองจากคลาสพาเรนต์ แต่การแทนที่ด้วยตัวเราเองอีกครั้งก็ไม่เสียหาย
‫เราสามารถทำ control shift P เพื่อสร้างการนำไปปฏิบัติ จากนั้นเราต้องการเรียกใช้ super
‫ดังนั้นเราจึงต้องการ super tick node และเราต้องการส่งผ่านในคอมพ์ของเราเองและหน่วยความจำของโหนดของเรา
‫ลองดูว่ามีอย่างอื่นในนี้
‫เรามีเดลต้าวินาทีเช่นเดียวกับสิ่งที่เราต้องผ่านเช่นกัน และสุดท้ายจบด้วยเซมิโคลอนควรจบการใช้งานโหนดติ๊กของเรา
‫ในที่นี้โดยพื้นฐานแล้วเราต้องการทำพฤติกรรมนั้นจาก I controller CP ซึ่งเป็นที่ที่เราได้รับส่วนประกอบกระดานดำจากนั้นตั้งค่าเป็นเวกเตอร์
‫เรารู้วิธีรับส่วนประกอบกระดานดำจากการอ้างอิงส่วนประกอบเจ้าของ
‫นั่นค่อนข้างตรงไปตรงมา
‫เราแค่จะทำ Owner comp dot จากนั้นเราจะทำ get blackboard component โดยจำได้ว่าเราจำเป็นต้อง
‫hash รวมไว้ที่นี่สำหรับองค์ประกอบ behavior tree forward slash blackboard
‫จากนั้นเราสามารถใช้ตัวดำเนินการลูกศรของเราได้
‫และสิ่งที่เราควรทำตรงนี้คือตั้งค่าเป็นเวกเตอร์ แล้วเราต้องการคีย์
‫เรารู้วิธีจัดการกับสิ่งนี้ แต่มาทบทวนความจำของเรากันเถอะ
‫ถ้าเราไปที่บริการ BT ของเราที่ขีดเส้นใต้ Blackboard Base คุณจะเห็นได้ว่าเหมือนกับงาน เรามีคีย์กระดานดำที่เลือกไว้
‫นั่นคือสิ่งที่เราจะใช้
‫รับคีย์ Blackboard ที่เลือก รับคีย์ที่ถูกเลือกในแผนผังพฤติกรรม จากนั้นเราต้องการค่าเวกเตอร์ของเรา
‫เราจะไปเอามาจากไหน?
‫เราจะเหมือนกันทุกประการกับตัวควบคุม AI
‫เรากำลังจะได้รับผู้เล่น -- อันดับแรกและสำคัญที่สุดที่นี่ที่ด้านบน
‫จากนั้นเราต้องตรวจสอบว่านี่เป็นโมฆะหรือไม่และเราจำเป็นต้องรวมสถิติการเล่นเกมของเราด้วย
‫ตรวจสอบให้แน่ใจว่าเรามีสถิติการเล่นเกมรวมจากคอนโทรลเลอร์ CP ที่รวมอยู่ในตำแหน่งผู้เล่นบริการผู้เล่นของเรา
‫จากนั้นเราจะทำ และถ้าจำนำผู้เล่นมีค่าเท่ากับตัวชี้ null สิ่งที่เราจะทำคือกลับมาที่นี่อีกครั้งก่อนกำหนด
‫มันจะคืนค่าเป็นโมฆะ เพื่อให้เราสามารถกลับมาก่อนกำหนดได้อย่างรวดเร็ว
‫จากนั้นเราสามารถใช้ตัวแสดงแทนผู้เล่นของเราที่นี่เพื่อรับตำแหน่งนักแสดงและเราอาจจำเป็นต้องรวมที่นี่
‫เราจะดูว่าเราจะไปอย่างไร
‫มันไม่เจ็บที่จะปลอดภัย ทำมัน และชัดเจนเกี่ยวกับสิ่งเหล่านี้
‫ดังนั้นเราจะทำการรวมสำหรับเฟรมเวิร์กเกมแล้วฟอร์เวิร์ดสแลช
‫มันจะถูกจำนำบน H เพื่อให้เราแน่ใจว่าเรามีทุกอย่างตามลำดับตรงนี้ แล้วเราก็ตั้งค่าเป็นเวกเตอร์
‫นั่นควรเป็นสิ่งที่เราต้องการ
‫ลองไปรวบรวมและดูว่าใช้งานได้หรือไม่
‫อันที่จริงอีกสิ่งหนึ่ง
‫เราอาจต้องการชื่อที่สวยงาม ดังนั้นเราจึงควรมีคอนสตรัคเตอร์ที่นี่
‫ฉันจะสร้างส่วนสาธารณะด้วยตัวสร้าง ซึ่งจะเป็นชื่อของคลาส จากนั้นเราจะสร้างการใช้งานนั้นต่อไป
‫ฉันจะนำการใช้งานของฉันไปใช้งานเหนือการใช้งานสำหรับโหนดติ๊ก
‫จากนั้นเราจะตั้งชื่อโหนดให้เท่ากับที่ควรอัปเดตตำแหน่งของผู้เล่น แล้วมาสร้างและดูว่าใช้งานได้หรือไม่
‫ดูเหมือนว่าฉันมีอัฒภาคหายไป
‫ลองอีกครั้ง
‫เมื่อรวบรวมสำเร็จแล้ว เราก็สามารถข้ามไปยังศัตรูของเราได้
‫ฉันและเช่นเดียวกับจุดโฟกัสของการตั้งค่า ต้องการเพิ่มบริการใหม่ที่เราได้แสดงไว้ที่นี่ในฐานะตำแหน่งของผู้เล่น
‫ซึ่งโดยพื้นฐานแล้วชื่อที่สวยงามนั้นจะปรากฏเป็นตำแหน่งอัปเดตของผู้เล่น
‫คุณจะเห็นว่ามันต้องการบอกความถี่ของการติ๊กทุกๆ 0 4 ถึง 0 6 วินาที
‫ดีกว่าการใช้ติ๊กเพราะเรารู้ว่าติ๊กทำงานทุกเฟรมที่นี่
‫นี้ทำงานน้อยลงซึ่งเป็นสิ่งที่ดี
‫และเราสามารถเข้าไปดูรายละเอียดและสร้างคีย์กระดานดำ เลื่อนลงมา แล้วเลือกว่าเราต้องการอัพเดทไม่ใช่แค่ตำแหน่งผู้เล่นแต่เป็นตำแหน่งผู้เล่นที่รู้จักล่าสุด
‫เพราะนั่นจะเกิดขึ้นทุกเฟรมตราบใดที่เราไล่ตาม คือพฤติกรรมที่เราต้องการ
‫โหนดบริการอีกหนึ่งโหนดที่เราอยากจะสร้างต่อไปคือพฤติกรรมของตัวควบคุม AI เพื่อลงไปติ๊กและดูว่ามีอะไรเหลืออยู่
‫สำหรับเราที่จะทำที่นี่คือการอัปเดตตำแหน่งผู้เล่นโดยมีเงื่อนไขว่าเรามีแนวสายตาหรือไม่
‫ดังนั้นเราจึงต้องการให้อัปเดตตำแหน่งผู้เล่น
‫ถ้าเรามีแนวสายตา ให้เคลียร์ตำแหน่งถ้าไม่มี
‫นั่นจะเป็นโหนดบริการใหม่เพราะมันมีพฤติกรรมที่แตกต่างออกไปเล็กน้อย
‫เราจะเพิ่มคลาส C ++ ใหม่
‫เราจะไปแสดงคลาสทั้งหมด และอีกครั้ง เราจะให้บริการ BT ขีดเส้นใต้ฐานกระดานดำ
‫คลาสพื้นฐานของเรา และเราจะเรียกมันว่า ขีดล่างของการบริการ
‫ตำแหน่งของผู้เล่นหากเห็น
‫และไปข้างหน้าและสร้างชั้นเรียนนั้น
‫และเนื่องจากนี่คือสิ่งที่คุณเคยเห็นเป็นส่วนใหญ่ จึงเป็นความท้าทายในการใช้บริการนี้
‫ดังนั้นคุณจะติดตั้ง tic node โดยใช้โค้ดในตัวควบคุม AI
‫คุณจะต้องใช้ตัวชี้ตัวควบคุม AI จากภายในบริการ BT ตามคำแนะนำของคุณ
‫ตอนนี้ก็เหมือนกับที่เราทำในงาน BT ดังนั้นให้ใช้สิ่งนั้นเป็นแนวทางในการรับตัวชี้ตัวควบคุม
‫AI นั้น
‫คุณจะต้องใช้ตัวชี้ตัวควบคุม AI เพื่อตรวจสอบแนวสายตา
‫โปรดจำไว้ว่า แนวสายตาเป็นวิธีการบนตัวควบคุม AI จากนั้นคุณต้องอัปเดตหรือล้างคีย์โดยขึ้นอยู่กับแนวการตรวจสอบของคุณ
‫จากนั้นวางโหนดนี้ในแผนผังการทำงาน
‫คุณคิดว่าจะอยู่ในระดับใดที่เหมาะสมของแผนผังพฤติกรรมสำหรับบริการนี้ในการทำงาน
‫จะคิดยังไงกับเรื่องนั้น?
‫มีรอยขีดข่วนเล็กน้อยที่คาง หยุดวิดีโอชั่วคราวแล้วเริ่มเลย
‫ตกลง.
‫ยินดีต้อนรับกลับ.
‫นี่จึงเป็นการเปิดบริการด้านความงามใหม่ในโค้ด Visual Studio
‫ตอนนี้มันค่อนข้างจะเหมือนกันในส่วนหัว ดังนั้นฉันจะดำเนินการต่อและคัดลอกไปที่ส่วนหัวที่สร้างขึ้นใหม่ของเรา
‫ยกเว้นว่าเราจำเป็นต้องเปลี่ยนชื่อของตัวสร้างให้ตรงกัน
‫ตอนนี้เรากำลังจะสร้างการใช้งานสำหรับ Constructor และตั้งชื่อโหนดเพื่ออัปเดตตำแหน่งของผู้เล่น
‫หากเห็นและเพิ่มเครื่องหมายอัฒภาคต่อท้ายที่นี่
‫อย่าลืมว่าครั้งนี้
‫จากนั้นกลับไปที่ C ++ เพื่อใช้ขีดโหนดเช่นกันและฉันจะคัดลอกข้ามถ้าเราสามารถหาตำแหน่งของผู้เล่นได้
‫CP และเพียงแค่จะคัดลอกข้ามการเรียกไปยัง super และการรับจำนำผู้เล่นและการตรวจสอบการส่งคืนค่าว่าง
‫อันที่จริง ฉันจะคัดลอกเนื้อหาทั้งหมด และเราจะแก้ไขจากที่นั่น
‫ดังนั้นการคัดลอกข้ามนั้นและเรากำลังจะคัดลอกการเข้าถึงส่วนประกอบกระดานดำด้วยการรวมสำหรับองค์ประกอบกระดานดำ
‫สถิติการเล่นเกมและการจำนำ เพราะเราต้องการเข้าถึงสิ่งเหล่านี้ทั้งหมด
‫อันที่จริง ฟังก์ชันการทำงานส่วนใหญ่มีการแบ่งปันกันที่นี่
‫คุณสามารถคิดเกี่ยวกับการให้พวกเขาแบ่งปันรหัสนี้ แต่ฉันคิดว่าไม่มีความซ้ำซ้อนมากนักที่เราใส่ใจเพียงพอ
‫สิ่งที่เราต้องทำที่นี่ก็คือ ตรวจสอบว่าเรามีตัวควบคุมการมองด้วยหรือไม่
‫ดังนั้นฉันจะทำถ้าองค์ประกอบเจ้าของหรือเจ้าของ comp dot รับ I เจ้าของเท่ากับตัวชี้ค่า null แล้วเราจะต้องการดำเนินการต่อและกลับมาที่ขั้นตอนนี้
‫จากนั้นสิ่งต่อไปที่เราจะต้องทำคือตรวจสอบการมองเห็นของเรา
‫เราจะทำ if owner comp dot รับ I owner แล้วเราจะทำลูกศรตรงนี้ และเราจำเป็นต้องรวมคอนโทรลเลอร์ของเราไว้ที่นี่
‫มันก็จะแฮชรวมอยู่ด้วย
‫แล้วมันจะเป็น I controller H.
‫แล้วเราอยากจะทำเส้นแล้วมาดูกันว่าการใช้งานที่ถูกต้องคืออะไรที่นี่
‫ถ้าเราไปที่ I controller CP มันจะเป็นแนวที่สองที่เราต้องการ
‫ดังนั้นแนวสายตาที่สองแล้วเราต้องทำแนวสายตาให้กับผู้เล่นจำนำ
‫ในกรณีนี้ เรามีแนวสายตาในการจำนำผู้เล่นหรือไม่?
‫นั่นคือสิ่งที่เรากำลังทำใน CP?
‫ลองตรวจสอบอีกครั้งว่า
‫ใช่.
‫จากนั้นเราจะต้องการดำเนินการต่อและตั้งค่าให้แตกต่างออกไป
‫ดังนั้นเราจึงตั้งค่าเวกเตอร์ให้จำนำผู้เล่นรับตำแหน่งนักแสดง
‫ใช่ นั่นคือถ้าเรามีสายตาอย่างอื่น
‫ถ้าเราไม่มีเส้นสายตา เรารู้ว่าเราต้องล้างค่านั้น
‫ดังนั้นเราจะยังคงได้รับส่วนประกอบเจ้าของ รับส่วนประกอบกระดานดำ
‫จากนั้นจะเป็นค่าที่ชัดเจน และเราจะล้างค่าของคีย์กระดานดำที่เลือกไว้
‫และนั่นน่าจะครอบคลุมเรามากสำหรับการนำตำแหน่งของผู้เล่นไปใช้
‫ถ้าเห็นก็ไปคอมไพล์กันดูว่าจะดีไหม
‫การรวบรวมสำเร็จ
‫เข้าเรื่องต้นไม้พฤติกรรมกันเถอะ
‫ตอนนี้ ระดับที่ฉันต้องการให้ดำเนินการอยู่ที่ระดับบนสุดในตัวเลือกเริ่มต้น เพราะฉันต้องการให้อัปเดตตำแหน่งของผู้เล่นโดยทั่วไปตลอดเวลา
‫เพราะเราต้องสามารถยกเลิกพฤติกรรมอื่นๆ เหล่านี้โดยอิงจาก ตำแหน่งผู้เล่นถูกตั้งค่า
‫ดังนั้นเราต้องสามารถตั้งค่า unset ได้ตลอดเวลา
‫ฉันจะไปและคลิกขวาที่ตัวเลือกระดับบนสุด เพิ่มบริการ เพิ่มตำแหน่งเล่นถ้าเห็น
‫จากนั้นเราจะต้องเลือกโหนดบริการนั้นและเลือกคีย์กระดานดำซึ่งจะเป็นตำแหน่งผู้เล่นของเรา
‫ดังนั้นชุดหนึ่งที่ตั้งอยู่ในตำแหน่งของผู้เล่น ตำแหน่งของผู้เล่นที่อัปเดต ยิ่งมีการอัปเดตตำแหน่งผู้เล่นที่รู้จักล่าสุด
‫และตอนนี้เราควรสามารถลงไปที่ตัวควบคุม AI ของเราและลบรหัสนี้ทั้งหมดใน
‫TTIC เพราะมันถูกแทนที่โดยบริการของเราแทน
‫และเราสามารถดำเนินการรวบรวมและดูว่าได้ผลหรือไม่
‫ไปหาบรรณาธิการและเล่นกันดูว่าเรายังมีศัตรูเข้ามาหาเราหรือไม่
‫เขาวิ่งมาหาเรา มองไม่เห็น แล้วกลับมาหาเรา เริ่มยิง
‫ใช่.
‫โดยพื้นฐานแล้วทุกอย่างทำงานได้เหมือนที่เคยทำมา ยกเว้นตอนนี้มันทำทั้งหมดผ่านบริการที่เราเขียนขึ้นเองใน
‫C++
‫การบรรยายครั้งต่อไป เราจะแก้ไขข้อบกพร่องที่น่ารำคาญซึ่ง AI ยังคงยิงต่อไปและในที่สุดก็สามารถฆ่าตัวตายได้
‫ฉันจะไปพบคุณที่นั่น.