واحد 7 / 11

تولید کد و ادغام موتور: Unity (C#) و Unreal (Blueprint/C++)

سود:

  • امکان تولید کد بازی قابل اعتماد و قابل کامپایل از هوش مصنوعی با دادن موتور، نسخه، زبان و زمینه معماری و ادغام آن با خواندن و درک کد
  • توانایی مدیریت عملکرد خاص کد بازی (تخصیص در هر فریم)، چرخه عمر موتور و خطرات توهم از طریق جمع‌آوری، آزمایش و پروفایل
  • امکان اعمال اصل میزبان-مرجع در بازی های چند نفره و استفاده مسئولانه از اطلاعات امنیتی تنها برای دفاع و تایید بازی خود.

بازی نرم افزاری است. مهم نیست که چقدر خوب طراحی شده باشد، با کد پیاده سازی می شود. موتور بازی زیرساختی است که بازی را اجرا می کند: Unity (موتور پرکاربردی که در سی شارپ نوشته شده است) و Unreal Engine (موتور با استفاده از C++ و زبان برنامه نویسی بصری Blueprint) رایج ترین دو مورد هستند. هوش مصنوعی یکی از پیشرفته‌ترین کمک‌ها در تولید کد است: کنترل‌کننده پخش، سیستم موجودی، ماشین‌های حالت، ذخیره/بارگذاری، منطق رابط، اشکال‌زدایی و بازآفرینی (بازسازی کد بدون شکستن رفتار آن). اما کد بازی مشکلات خاص خود را دارد: عملکرد (نرخ فریم)، ​​چرخه عمر موتور، امنیت چند نفره. در این بخش شما یاد خواهید گرفت که چگونه از هوش مصنوعی به طور ایمن و کارآمد در کد بازی استفاده کنید.

اصل بحرانی: زمینه موتور و نسخه

اگر هوش مصنوعی نداند برای کدام موتور و نسخه می نویسد، یک API اشتباه، منسوخ یا ناموجود تولید می کند. بنابراین موتور، نسخه، زبان و زمینه معماری را در هر دستور کد ارائه دهید. "Write player جنبش برای Unity" ضعیف است. "Unity 2022.3، C#، سیستم ورودی جدید، جنبش فیزیک مبتنی بر بدنه سخت" قدرتمند است. مشخص کنید که Blueprint یا C++ را در Unreal می خواهید و از کدام نسخه استفاده می کنید.

گام به گام جریان کد امن:

  1. زمینه (موتور، نسخه، زبان، معماری فعلی، محدودیت ها) را ارائه دهید.
  2. آن را کوچک و تعریف شده می خواهید (تک جزء، نه کل سیستم).
  3. کد را بخوانید و درک کنید (درک کنید خط به خط چه کاری انجام می دهد؛ کدی را که متوجه نمی شوید قرار ندهید).
  4. ساخت و تست (اجرا روی موتور؛ مشخصات - اندازه گیری عملکرد).
  5. Refactor و ادغام (مطابقت با استاندارد پروژه).
نکته: هنگام درخواست کد از هوش مصنوعی، بگویید «با نظرات توضیح دهید». هدف شما درک کد است. قرار دادن کد هوش مصنوعی که نمی‌دانید در پروژه، بدهی غیرقابل نگهداری را انباشته می‌کند. همچنین کد را در قطعات کوچک و قابل آزمایش بخواهید: به جای یک سیستم 500 خطی، یک مؤلفه 30-50 خطی که یک کار تعریف شده را انجام می دهد، هم تأیید و هم ادغام آن آسان است.

تله های مخصوص کد بازی

عملکرد. کد بازی 30-60+ بار در ثانیه اجرا می شود. هوش مصنوعی می تواند عملیات گران قیمت (تخصیص حافظه، جستجو، دستکاری رشته) را در حلقه Update که در هر فریم اجرا می شود قرار دهد. این باعث کاهش نرخ فریم می شود. کدهای حیاتی عملکرد را مشخص کنید و محدودیت‌های هوش مصنوعی مانند "اجرا در هر فریم، بدون تخصیص" را ارائه دهید.

چرخه عمر موتور. AI گاهی اوقات زمانی که متدهای خاص فراخوانی می شوند، مانند Awake/Start/Update در Unity، BeginPlay/Tick در Unreal گیج می شوند. با آزمایش خطاهای چرخه عمر را پیدا کنید.

امنیت چند نفره این مهم ترین مسئله از نظر فناوری اطلاعات / امنیت است. هرگز به مشتری در چند نفره اعتماد نکنید: کلاینت در رایانه بازیکن را می توان برای تقلب دستکاری کرد. بررسی وضعیت بحرانی مانند امتیاز، آسیب، پول در سرور (سرور-معتبر). کد شبکه تولید شده توسط هوش مصنوعی را در برابر این اصل کنترل کنید. اگر هوش مصنوعی آسیب پذیری قابل اعتماد مشتری ایجاد کرده است، آن را برطرف کنید. از این اطلاعات فقط برای دفاع و تأیید بازی خود استفاده کنید. دسترسی غیرمجاز به سرور شخص دیگری یا تقلب در آن غیرقانونی و غیراخلاقی است.

احتیاط: کد تولید شده توسط هوش مصنوعی ممکن است دارای آسیب‌پذیری‌هایی باشد (مقید اعتبار ورودی، اعتماد مشتری، دستکاری فایل ذخیره‌سازی). کورکورانه کد را نپذیرید. یک بررسی امنیتی، به ویژه در مورد شبکه، اقتصاد و کد ذخیره کنید.

بدهی معماری و نگهداری

هوش مصنوعی عملکردهای فردی را به سرعت تولید می کند. اما معماری یک بازی – اینکه سیستم‌ها چگونه تقسیم می‌شوند، چگونه با یکدیگر صحبت می‌کنند، کجا داده‌ها نگهداری می‌شوند – یک تصمیم بلندمدت است و به انسان تعلق دارد. اگر به هوش مصنوعی بگویید «کل موجودی، مبارزه و ذخیره سیستم را با هم بنویسد» یک گلوله نخی کارآمد اما محکم، سخت برای نگهداری و غیرقابل انبساط دریافت خواهید کرد. در عوض، معماری را طراحی می کنید، از هوش مصنوعی برای پر کردن اجزای کوچک با رابط های تعریف شده استفاده می کنید. معماری خوب با رشد بازی تفاوت ایجاد می کند: تصمیمات بد یک سال بعد به عنوان بدهی فنی بازمی گردند که هر ویژگی جدید را به تاخیر می اندازد.

یکی دیگر از منابع بدهی تعمیر و نگهداری کدی است که بدون فهمیدن وارد پروژه می شود. یک سیستم نوشته شده توسط هوش مصنوعی می تواند امروز کار کند. اما وقتی شش ماه بعد باید آن را تعویض کنید و هیچکس یادش نمی‌آید چه کار کرده‌اند، بدهی به بهره تبدیل می‌شود. به همین دلیل است که دو رشته ضروری است: خواندن و درک کد در زمان تولید، و درخواست برای شفاف سازی نظرات از هوش مصنوعی. به عنوان یک قاعده کلی، هیچ کد AI را در پروژه خود قرار ندهید که نتوانید خودتان آن را بازنویسی کنید یا حداقل خط به خط توضیح دهید. هوش مصنوعی سرعت می دهد. نظم و انضباط شما پایداری می بخشد.

سه کیف کوچک

مورد 1 - زمینه انتشار از بروز اشکال جلوگیری کرد. یک برنامه نویس ابتدا گفت: "برای Unity موجودی بنویسید". کد از یک API قدیمی استفاده می کرد، کامپایل نشد. سپس متن "Unity 2022.3، C#، بر اساس ScriptableObject" را ارائه کرد. کد بار اول کامپایل شده و متناسب با پروژه است. زمینه یک ساعت اشکال زدایی را ذخیره کرد.

مورد 2 - تله عملکرد. در یک بازی نرخ فریم پایین بود. هنگام نمایه سازی، مشاهده شد که یک روش به روز رسانی تولید شده توسط هوش مصنوعی، لیست جدیدی را در هر فریم اختصاص داده و دشمنان را جستجو می کند. کد را با مرجع کش و به روز رسانی غیر درجه دوم رفع کرد و نرخ فریم را از 42 به 60 افزایش داد.

مورد 3 - آسیب پذیری امنیتی کشف شد. در یک بازی چند نفره، کد تولید شده توسط هوش مصنوعی، آسیب وارده به کلاینت را محاسبه کرده و به سرور گزارش می دهد. این برای تقلب باز بود (مشتری می تواند خسارت بی نهایت وارد کند). کد سرور اقتدارگرا ساخته شده است (سرور آسیب را محاسبه می کند). ممیزی از رسوایی تقلب پس از انتشار جلوگیری کرد.

چهار قالب قابل کپی

1) درخواست کد با زمینه:

موتور: Unity 2022.3. زبان: سی شارپ معماری: [به عنوان مثال. مبتنی بر مؤلفه]. محدودیت: تخصیص در به روز رسانی. قابل خواندن و اظهار نظر باشد. وظیفه: [یک جزء، تعریف شده، به عنوان مثال. "کنترل کننده کاراکتر پرش دوبل"]. بررسی کنید که هر API که استفاده می کنید در این نسخه باشد. اگر مطمئن نیستید به من اطلاع دهید.

2) توضیح / بررسی کد:

کد زیر را خط به خط توضیح دهید و بنویسید (1) چه کاری انجام می دهد، (2) مشکلات عملکرد احتمالی (تخصیص در هر فریم، جستجوی گران قیمت)، (3) اشکالات احتمالی، (4) پیشنهادات برای بهبود. کد: [پیست کردن]

3) ممیزی امنیتی چند نفره:

کد چند نفره زیر را برای امنیت بررسی کنید. به طور خاص: مکان‌هایی که مشتری مورد اعتماد است، وضعیت بحرانی که باید روی سرور تأیید شود (آسیب، امتیاز، پول)، اعتبار سنجی ورودی از دست رفته است. راه حلی را پیشنهاد کنید تا سرور اقتدارگرا شود. این فقط برای دفاع از بازی خودم است. کد: [چسباندن]

4) بازساز متمرکز بر مشخصات عملکرد:

این کد روی هر فریم اجرا می شود و نرخ فریم را کاهش می دهد: [کد]. تخصیص ها، جستجوهای گران قیمت و عملیات فریم به فریم غیر ضروری را پیدا کنید. بهینه سازی بدون شکستن رفتار با حافظه پنهان و به روز رسانی های کمتر. تغییرات را توضیح دهید.

اعلان ضعیف / اعلان قوی

اعلان ضعیف:

یک سیستم ذخیره در یونیتی بنویسید.

بدون نسخه، فرمت، دامنه داده، امنیت؛ نتیجه کلی و مخاطره آمیز است.

اعلان قدرتمند:

موتور: یونیتی 2022.3، سی شارپ. وظیفه: سیستم ذخیره/بارگیری مبتنی بر JSON. برای ذخیره: مکان پخش، موجودی، پیشرفت. محدودیت: دریافت مدیریت خطا در برابر فساد فایل. برای جلوگیری از تقلب با تغییر آسان آن توسط پخش کننده، یک بررسی یکپارچگی (هش) به فایل ذخیره اضافه کنید. کد را نظر دهید و بررسی کنید که هر API در این نسخه است.

نسخه سازی، دامنه، رسیدگی به خطا و بررسی یکپارچگی خروجی را سخت می کند.

جدول زمینه موتور/زبان

موتور

زبان

آنچه شما باید به هوش مصنوعی بدهید

توجه ویژه

وحدت

سی شارپ

نسخه، سیستم ورودی/فیزیک

تخصیص به روز رسانی، چرخه عمر

غیر واقعی

طرح اولیه

نسخه، زمینه گره

محدودیت های منطق بصری

غیر واقعی

C++

نسخه، ساختار ماژول

حافظه، GC، ماکروها

چند نفره

هر دو

مدل شبکه

ارائه اقتدارگرایی

اشتباهات رایج

  • موتور/نسخه مشخص نشده است. از API قدیمی یا ساخته شده می آید.
  • اعتماد به کد بدون درک آن. بدهی غیرقابل حفظ انباشته می شود.
  • عدم سنجش عملکرد تخصیص فریم به فریم به صورت بی صدا نرخ فریم را کاهش می دهد.
  • اعتماد به مشتری. یک آسیب پذیری تقلب در چند نفره وجود دارد.
  • تمام سیستم را به یکباره می خواهید. قطعه کوچک و قابل آزمایش ایمن تر است.

به طور خلاصه

هوش مصنوعی یک کمک کننده قدرتمند در کد بازی است، اما به موتور، نسخه و زمینه معماری نیاز دارد. بدون خواندن و درک کد، کامپایل و آزمایش آن و بررسی عملکرد و امنیت آن را در پروژه قرار ندهید. سرور-اقتدارگرایی را در چند نفره حفظ کنید و از اطلاعات امنیتی فقط برای اهداف دفاعی و تأیید استفاده کنید.

وظیفه کاربردی

یک جزء کوچک را انتخاب کنید (مثلاً پرش دوبل یا موجودی ساده). با ارائه موتور و نسخه با الگوی "درخواست کد با زمینه" کد تولید کنید. سپس با بررسی همان کد با الگوی "شرح کد/بررسی"، ریسک عملکرد و اشکال را حذف کنید. کد را در موتور کامپایل و تست کنید.

چک لیست

  • [ ] من موتور، نسخه، زبان و زمینه معماری را دادم.
  • [ ] من کد را خواندم و فهمیدم. با نظر میخواستم
  • [ ] من آن را در موتور جمع آوری و تست کردم و عملکرد را اندازه گرفتم.
  • [ ] من یک بررسی امنیتی در شبکه/اقتصاد/ذخیره کد انجام دادم.
  • [ ] من فقط از اطلاعات امنیتی برای دفاع از بازی خودم استفاده کردم.