Единици
1. Вовед во вештачката интелигенција во развојот на игри: улоги, граници, верификација, авторски права и етика 2. Прототип и механички дизајн: брза итерација од идеја до јадро што може да се игра 3. NPC однесување и системи за дијалог: вештачка интелигенција која го оживува ликот 4. Процедурално генерирање содржина (PCG): Ниво, карта, потрага и наратив 5. Асет и визуелна продукција: концепт уметност, 2D/3D и текстура 6. Продукција на звук, музика и ефекти: Слушаниот свет на играта 7. Генерирање код и интеграција на моторот: Unity (C#) и Unreal (Blueprint/C++) 8. Баланс на игри, симулација и економичност: фер игра со бројки 9. Обезбедување квалитет (QA), дебагирање и автоматско тестирање 10. Авторско право, оригиналност, лиценца и етика: објавена и одговорна содржина 11. Работен тек од крај до крај, интеграција на производна линија, управување и услуга во живо
Единица 7 / 11

Генерирање код и интеграција на моторот: Unity (C#) и Unreal (Blueprint/C++)

Добивки:

  • Способност да се произведе сигурен, компајбилен код за игра од вештачка интелигенција со давање на мотор, верзија, јазик и архитектонски контекст и да се интегрираат со читање и разбирање на кодот
  • Способност за управување со перформансите специфични за кодот на играта (распределба по рамка), животниот циклус на моторот и ризиците од халуцинации преку компилација, тестирање и профилирање
  • Способност да се примени принципот на домаќин-авторитет во игрите со повеќе играчи и да се користат безбедносните информации одговорно само за одбрана и проверка на сопствената игра.

Играта е софтверска; Колку и да е добро дизајниран, се имплементира со код. Моторот на играта е инфраструктурата што ја прави играта да работи: Unity (широко користен мотор напишан во C#) и Unreal Engine (мотор кој користи C++ и визуелен јазик за скриптирање Blueprint) се двете најчести. Вештачката интелигенција е едно од најзрелите помагала во генерирањето кодови: контролер на плеер, систем за залихи, машини за состојби, зачувување/оптоварување, логика на интерфејсот, дебагирање и рефакторирање (рефакторирање на кодот без да се прекрши неговото однесување). Но, кодот на играта има свои стапици: перформанси (стапка на слики), животен циклус на моторот, безбедност на повеќе играчи. Во оваа единица ќе научите како безбедно и ефикасно да користите вештачка интелигенција во кодот на играта.

Критички принцип: контекст на моторот и верзијата

Ако вештачката интелигенција не знае за кој мотор и верзија пишува, ќе произведе збунет, застарен или непостоечки API. Затоа, дајте му контекст на моторот, верзијата, јазикот и архитектурата во секое барање за код. „Write player движење за единство“ е слабо; „Единство 2022.3, C#, нов влезен систем, движење засновано на физика на цврсто тело“ е моќно. Наведете дали сакате Blueprint или C++ во Unreal и која верзија ја користите.

Безбеден проток на код чекор по чекор:

  1. Наведете контекст (мотор, верзија, јазик, моментална архитектура, ограничувања).
  2. Сакајте да биде мал и дефиниран (една компонента, а не целиот систем).
  3. Прочитајте го и разберете го кодот (разберете што прави ред по ред; не ставајте код што не го разбирате).
  4. Изградба и тестирање (работа на мотор; профил - мерење на перформансите).
  5. Рефакторирајте и интегрирајте (совпаѓајте со стандардот на проектот).
Совет: Кога барате код од вештачката интелигенција, кажете „објаснете со коментари“. Вашата цел е да го разберете кодот; Ставањето на код за вештачка интелигенција што не го разбирате во проект ќе акумулира неодржлив долг. Исто така, побарајте код во мали парчиња што може да се тестираат: наместо систем од 500 линии, компонента од 30-50 линии што врши една дефинирана работа е лесна за проверка и интегрирање.

Стапици специфични за кодот на играта

Изведба. Кодот на играта работи 30-60+ пати во секунда. Вештачката интелигенција може да стави скапи операции (распределба на меморија, пребарување, манипулација со низа) во јамката за ажурирање што работи на секоја рамка; ова ја намалува стапката на слики. Критичните кодови за изведбата на профилот и даваат ограничувања на вештачката интелигенција како „работи на секоја рамка, без распределба“.

Животниот циклус на моторот. Вештачката интелигенција понекогаш збунува кога се повикуваат специјални методи, како што се Awake/Start/Update in Unity, BeginPlay/Tick in Unreal. Фатете ги грешките во животниот циклус со тестирање.

Безбедност со повеќе играчи. Ова е најкритичното прашање во однос на ИТ/безбедноста. Никогаш не му верувајте на клиентот во мултиплеер: клиентот на компјутерот на играчот може да се манипулира за мамење. Потврдете го критичниот статус како што се поени, штета, пари на серверот (сервер-овластен). Контролирајте го мрежниот код генериран од вештачката интелигенција наспроти овој принцип; Ако вештачката интелигенција создаде ранливост од доверба на клиентот, поправете ја. Користете ги овие информации само за да ја одбраните и потврдите вашата игра; Неовластен пристап или мамење на туѓ сервер е нелегален и неетички.

Внимание: кодот генериран со вештачка интелигенција може да содржи пропусти (недостасува валидација на влезот, доверба на клиентот, манипулација со зачувување на датотеки). Не го прифаќајте слепо кодот; Направете безбедносен преглед, особено на мрежата, економијата и зачувајте код.

Долг за архитектонско и одржување

AI брзо произведува индивидуални функции; Но, архитектурата на играта - како се поделени системите, како разговараат меѓу себе, каде се чуваат податоците - е долгорочна одлука и му припаѓа на човекот. Ако и кажете на вештачката интелигенција „да го напише целиот инвентар, да се бори и да го спаси системот заедно“, ќе добиете работна, но цврсто поврзана, тешко одржувачка, непроширлива топка предиво. Наместо тоа, вие ја дизајнирате архитектурата, користете вештачка интелигенција за да ги пополните малите компоненти со дефинирани интерфејси. Добрата архитектура прави разлика додека играта расте: лошите одлуки се враќаат една година подоцна како технички долг што ја одложува секоја нова карактеристика.

Друг извор на долг за одржување е кодот што влегува во проектот без да биде разбран. Систем напишан од вештачка интелигенција би можел да работи денес; Но, кога ќе треба да го замените шест месеци подоцна и никој не се сеќава што направил, долгот се претвора во камата. Затоа две дисциплини се од суштинско значење: читање и разбирање на кодот за време на производството и барање појасни коментари од вештачката интелигенција. Како правило, не ставајте никаков код за вештачка интелигенција во вашиот проект што не можете сами да го преработите или барем да го објасните ред по ред. ВИ дава брзина; Вашата дисциплина дава одржливост.

три мини футроли

Случај 1 - Контекстот на издавање ја спречи грешката. Еден програмер прво рече: „Напиши инвентар за единство“; кодот користел стар API, тој не се компајлирал. Потоа го даде контекстот „Единство 2022.3, C#, базирано на ScriptableObject“; кодот составен прв пат и одговара на проектот. Контекстот заштеди еден час од дебагирање.

Случај 2 - Замка за перформанси. Во една игра стапката на слики беше ниска. При профилирањето, се виде дека методот за ажурирање произведен од вештачката интелигенција доделува нова листа во секоја рамка и бара непријатели. Го поправа кодот со кеширана референца и неквадратично ажурирање, зголемувајќи ја стапката на слики од 42 на 60.

Случај 3 - Утврдена безбедносната ранливост. Во игра со повеќе играчи, кодот генериран со вештачка интелигенција ја пресметал штетата на клиентот и ја пријавил на серверот; ова беше отворено за мамење (клиентот може да нанесе бесконечна штета). Кодот е направен сервер-авторитарен (серверот ја пресметува штетата). Ревизијата спречи скандал со мамење по објавувањето.

Четири шаблони за копирање

1) Барање за код со контекст:

Мотор: Unity 2022.3. Јазик: C#. Архитектура: [на пр. базирани на компоненти].Ограничување: Распределба во ажурирање; да биде читлив и коментиран.Задача: [единечна, дефинирана компонента, на пр. „Контролор со знаци со двоен скок“]. Потврдете дека секое API што го користите е во оваа верзија; Ако не сте сигурни, известете ме.

2) Објаснување/преглед на кодот:

Објаснете го следниов код ред по ред и напишете (1) што прави, (2) можни проблеми со перформансите (распределба по рамка, скапо пребарување), (3) можни грешки, (4) предлози за подобрување. Код: [залепи]

3) Безбедносна ревизија на повеќе играчи:

Проверете го следниов код за повеќе играчи за безбедност. Поточно: места каде што му се верува на клиентот, критична состојба која треба да се потврди на серверот (оштетување, поени, пари), недостасува валидација на влезот. Предложете поправка за да се направи сервер-авторитарен. Ова е само за да ја одбранам мојата сопствена игра. Код: [залепи]

4) Рефактор фокусиран на профилот на изведба:

Овој код работи на секоја рамка и ја намалува стапката на слики: [code]. Најдете алокации, скапи пребарувања и непотребни операции рамка по рамка; Оптимизирајте без прекин на однесување со кеширање и поретко ажурирање. Објаснете ги промените.

Слаб промпт / Силен промпт

Слаба навестување:

Напишете систем за зачувување во Unity.

Нема верзија, формат, опсег на податоци, безбедност; Резултатот е општ и ризичен.

Моќен потсетник:

Мотор: Unity 2022.3, C#. Задача: систем за зачувување/вчитување базиран на JSON. Да се ​​зачува: локација на играчот, инвентар, напредок. Ограничување: добијте управување со грешки против корупција на датотеки; Додадете проверка на интегритетот (хаш) во зачуваната датотека за да спречите мамење со лесно менување од страна на плеерот. Коментирајте го кодот и потврдете дека секое API е во оваа верзија.

Верзијата, опсегот, справувањето со грешки и проверката на интегритетот го зацврстуваат излезот.

Контекст табела за мотор/јазик

моторот

јазикот

Што треба да и дадете на вештачката интелигенција

посебно внимание

единство

C#

Верзија, Влезен/физички систем

Ажурирајте ја распределбата, животниот циклус

нереален

Планот

Верзија, контекст на јазол

Ограничувања на визуелната логика

нереален

C++

Верзија, структура на модул

Меморија, GC, макроа

мултиплеер

и двете

мрежен модел

Презентер-авторитаризам

Вообичаени грешки

  • Не се наведува мотор/верзија. Доаѓа од застарено или измислено API.
  • Да му верувате на кодот без да го разберете. Се акумулира неодржлив долг.
  • Не се мери перформансите. Распределбата кадар по кадар тивко ја намалува стапката на слики.
  • Доверба на клиентот. Постои ранливост при мамење во мултиплеер.
  • Сакајќи го целиот систем одеднаш. Малото парче што може да се тестира е побезбедно.

Сумирано

ВИ е моќен помошник во кодот на играта, но бара мотор, верзија и архитектонски контекст. Не ставајте го во проект без да го прочитате и разберете кодот, да го составите и тестирате и да ги проверите перформансите и безбедноста. Одржувајте го авторитаризмот на серверот во мултиплеер и користете безбедносни информации само за одбранбени цели и за верификација.

Задача за апликација

Изберете мала компонента (на пр. двоен скок или едноставен инвентар). Генерирајте код со обезбедување на моторот и верзијата со шаблонот „барање за код со контекст“. Потоа отстранете ги ризиците за перформанси и грешки со прегледување на истиот код со шаблонот „Опис/преглед на кодот“. Компилирајте и тестирајте го кодот во моторот.

листа за проверка

  • [ ] Ги дадов контекстот на моторот, верзијата, јазикот и архитектурата.
  • [ ] Го прочитав и разбрав кодот; Сакав со коментар.
  • [ ] Го составив и тестирав во моторот и ги измерив перформансите.
  • [ ] Направив безбедносна проверка во мрежата/економично/зачувај код.
  • [ ] Користев само безбедносни информации за да ја одбранам сопствената игра.