이득:
- 엔진, 버전, 언어 및 아키텍처 컨텍스트를 제공하여 인공 지능으로부터 안정적이고 컴파일 가능한 게임 코드를 생성하고 코드를 읽고 이해하여 이를 통합하는 능력
- 컴파일, 테스트, 프로파일링을 통해 게임 코드별 성능(프레임당 할당), 엔진 수명주기, 환각 위험을 관리하는 기능
- 멀티플레이어 게임에서 호스트 권한 원칙을 적용하고 자신의 게임을 방어하고 검증하기 위해서만 보안 정보를 책임감 있게 사용할 수 있는 능력.
게임은 소프트웨어입니다. 아무리 잘 디자인해도 코드로 구현됩니다. 게임 엔진은 게임을 실행하는 인프라입니다. Unity(C#으로 스크립팅된 널리 사용되는 엔진)와 Unreal Engine(C++ 및 시각적 스크립팅 언어 Blueprint를 사용하는 엔진)이 가장 일반적입니다. AI는 플레이어 컨트롤러, 인벤토리 시스템, 상태 머신, 저장/로드, 인터페이스 로직, 디버깅 및 리팩토링(동작을 중단하지 않고 코드 리팩토링) 등 코드 생성에서 가장 성숙한 보조 도구 중 하나입니다. 그러나 게임 코드에는 성능(프레임 속도), 엔진 수명 주기, 멀티플레이어 보안이라는 자체적인 함정이 있습니다. 이번 단원에서는 게임 코드에서 AI를 안전하고 효율적으로 사용하는 방법을 배웁니다.
중요 원칙: 엔진 및 버전 컨텍스트
AI가 어떤 엔진과 버전에 대해 작성하고 있는지 알지 못하면 혼란스럽고 쓸모없거나 존재하지 않는 API를 생성하게 됩니다. 따라서 모든 코드 프롬프트에 엔진, 버전, 언어 및 아키텍처 컨텍스트를 제공하십시오. "Unity용 플레이어 움직임 쓰기"는 약합니다. "Unity 2022.3, C#, 새로운 입력 시스템, Rigidbody 기반 물리 움직임"은 강력합니다. Unreal에서 Blueprint를 원하는지, C++를 원하는지, 그리고 어떤 버전을 사용하고 있는지 지정하세요.
보안 코드 흐름 단계별:
- 컨텍스트(엔진, 버전, 언어, 현재 아키텍처, 제약 조건)를 제공합니다.
- 작고 정의된 것을 원합니다(전체 시스템이 아닌 단일 구성 요소).
- 코드를 읽고 이해하십시오(한 줄씩 수행하는 작업을 이해하십시오. 이해하지 못하는 코드를 넣지 마십시오).
- 빌드 및 테스트(엔진에서 실행, 프로필 — 성능 측정)
- 리팩터링 및 통합(프로젝트 표준 일치)
Tip: AI에게 코드를 물어볼 때 "설명으로 설명해주세요"라고 말하세요. 귀하의 목표는 코드를 이해하는 것입니다. 이해하지 못하는 AI 코드를 프로젝트에 넣으면 유지 관리할 수 없는 부채가 쌓이게 됩니다. 또한 테스트 가능한 작은 덩어리로 코드를 요청하세요. 500줄 시스템 대신 정의된 단일 작업을 수행하는 30~50줄 구성 요소는 확인 및 통합이 쉽습니다.
게임 코드 관련 트랩
성능. 게임 코드는 초당 30~60회 이상 실행됩니다. AI는 비용이 많이 드는 작업(메모리 할당, 조회, 문자열 조작)을 각 프레임에서 실행되는 업데이트 루프에 넣을 수 있습니다. 이렇게 하면 프레임 속도가 감소합니다. 성능에 중요한 코드를 프로파일링하고 "모든 프레임에서 실행, 할당 없음"과 같은 AI 제약 조건을 제공합니다.
엔진 수명주기. AI는 Unity의 Awake/Start/Update, Unreal의 BeginPlay/Tick과 같은 특수 메서드가 호출될 때 때때로 혼동을 일으킵니다. 테스트를 통해 수명주기 오류를 포착하세요.
멀티플레이어 보안. 이는 IT/보안 측면에서 가장 중요한 문제입니다. 멀티플레이어에서는 절대로 클라이언트를 신뢰하지 마십시오. 플레이어 컴퓨터의 클라이언트는 부정행위를 위해 조작될 수 있습니다. 서버 내 포인트, 피해, 금전 등 중요 상태를 확인합니다(서버 권한). 이 원칙에 반하여 AI가 생성한 네트워크 코드를 제어합니다. AI가 클라이언트 신뢰 취약점을 생성한 경우 이를 수정하세요. 이 정보는 자신의 플레이를 방어하고 검증하는 데에만 사용하십시오. 다른 사람의 서버에 무단으로 액세스하거나 부정 행위를 하는 것은 불법이며 비윤리적입니다.
주의: AI 생성 코드에는 취약점(입력 유효성 검사 누락, 클라이언트 신뢰, 저장 파일 조작)이 포함될 수 있습니다. 맹목적으로 코드를 받아들이지 마십시오. 특히 네트워크, 경제성 및 저장 코드에 대한 보안 검토를 수행합니다.
건축 및 유지 관리 부채
AI는 개별 기능을 빠르게 생성합니다. 그러나 게임의 아키텍처(시스템이 분할되는 방식, 서로 통신하는 방식, 데이터가 보관되는 위치)는 장기적인 결정이며 이는 인간에게 속합니다. AI에게 "전체 인벤토리 작성, 전투 및 저장 시스템을 함께 작성"하라고 지시하면 작동하지만 단단히 결합되어 있고 유지 관리가 어렵고 확장할 수 없는 실뭉치를 얻게 됩니다. 대신 아키텍처를 설계하고 AI를 사용하여 정의된 인터페이스로 작은 구성 요소를 채웁니다. 좋은 아키텍처는 게임이 성장함에 따라 변화를 가져옵니다. 잘못된 결정은 1년 후 모든 새로운 기능을 지연시키는 기술 부채로 다시 발생합니다.
유지 관리 부채의 또 다른 원인은 이해되지 않은 채 프로젝트에 들어가는 코드입니다. AI가 작성한 시스템은 오늘날에도 작동할 수 있습니다. 그러나 6개월 후에 그것을 교체해야 하고 아무도 그들이 무엇을 했는지 기억하지 못하면 부채는 이자로 변합니다. 그렇기 때문에 생산 시 코드를 읽고 이해하는 것과 AI의 명확한 설명을 요청하는 두 가지 원칙이 필수적입니다. 경험상, 스스로 다시 작성할 수 없거나 최소한 한 줄씩 설명할 수 없는 AI 코드를 프로젝트에 넣지 마십시오. AI는 속도를 제공합니다. 귀하의 규율은 지속 가능성을 제공합니다.
세 개의 미니 케이스
사례 1 — 릴리스 컨텍스트로 인해 버그가 방지되었습니다. 한 프로그래머가 처음에 "Unity용 인벤토리 작성"이라고 말했습니다. 코드가 이전 API를 사용하고 있었기 때문에 컴파일되지 않았습니다. 그런 다음 "Unity 2022.3, C#, based on ScriptableObject"라는 컨텍스트를 제공했습니다. 코드가 처음으로 컴파일되어 프로젝트에 적합합니다. 컨텍스트를 통해 디버깅 시간이 1시간 절약되었습니다.
사례 2 - 성능 함정. 한 게임에서는 프레임 속도가 낮았습니다. 프로파일링을 해보니 AI가 생성한 Update 메소드가 각 프레임마다 새로운 목록을 할당하고 적을 검색하는 것으로 나타났다. 캐시된 참조 및 비2차 업데이트로 코드를 수정하여 프레임 속도를 42에서 60으로 늘렸습니다.
사례 3 — 보안 취약점이 발견되었습니다. 멀티플레이어 게임에서 AI 생성 코드는 클라이언트의 피해량을 계산하여 서버에 보고했습니다. 이는 부정행위의 가능성이 있었습니다(클라이언트가 무한한 피해를 입힐 수 있음). 코드는 서버 권한을 갖도록 만들어졌습니다(서버가 피해를 계산함). 감사를 통해 출판 후 부정 행위 스캔들을 예방했습니다.
복사 가능한 템플릿 4개
1) 컨텍스트가 포함된 코드 요청:
엔진: 유니티 2022.3. 언어: C#. 아키텍처: [예: 구성 요소 기반].제약: 업데이트에 할당; 읽을 수 있고 주석이 달려 있습니다. 작업: [단일 정의된 구성 요소, 예: "이중 점프 캐릭터 컨트롤러"]. 사용하는 모든 API가 이 버전에 있는지 확인하세요. 확실하지 않다면 알려주세요.
2) 코드 설명/리뷰:
다음 코드를 한 줄씩 설명하고 (1) 기능, (2) 가능한 성능 문제(프레임당 할당, 비용이 많이 드는 검색), (3) 가능한 버그, (4) 개선을 위한 제안을 작성합니다.코드: [붙여넣기]
3) 멀티플레이어 보안 감사:
보안을 위해 다음 멀티플레이어 코드를 검사하세요. 구체적으로 말하면 클라이언트가 신뢰할 수 있는 장소, 서버에서 확인해야 하는 중요한 상태(손상, 포인트, 금전), 입력 유효성 검사가 누락된 곳입니다. 서버를 권위주의적으로 만들기 위한 수정을 제안합니다. 이것은 단지 내 게임을 방어하기 위한 것입니다. 코드: [붙여넣기]
4) 성능 프로필 중심 리팩터링:
이 코드는 모든 프레임에서 실행되며 프레임 속도를 줄입니다. [코드]. 할당, 비용이 많이 드는 조회 및 불필요한 프레임별 작업을 찾습니다. 캐싱 및 빈도가 낮은 업데이트를 통해 동작을 중단하지 않고 최적화합니다. 변경 사항을 설명하세요.
약한 프롬프트 / 강한 프롬프트
약한 프롬프트:
Unity에서 저장 시스템을 작성합니다.
버전, 형식, 데이터 범위, 보안이 없습니다. 결과는 일반적이고 위험합니다.
강력한 프롬프트:
엔진: 유니티 2022.3, C#. 작업: JSON 기반 저장/로드 시스템. 저장 대상: 플레이어 위치, 인벤토리, 진행 상황. 제약: 파일 손상에 대한 오류 관리를 얻습니다. 플레이어가 쉽게 변경하여 부정 행위를 방지하려면 저장 파일에 무결성 검사(해시)를 추가하세요. 코드를 주석 처리하고 각 API가 이 버전인지 확인하세요.
버전 관리, 범위, 오류 처리 및 무결성 검사는 출력을 강화합니다.
엔진/언어 컨텍스트 테이블
엔진
언어
AI에게 주어야 할 것
특별한 관심
화합
C#
버전, 입력/물리 시스템
할당, 수명주기 업데이트
비현실적인
청사진
버전, 노드 컨텍스트
시각적 논리 한계
비현실적인
C++
버전, 모듈 구조
메모리, GC, 매크로
멀티플레이어
둘 다
네트워크 모델
발표자 권위주의
일반적인 실수
- 엔진/버전을 지정하지 않았습니다. 오래되었거나 만들어진 API에서 비롯되었습니다.
- 코드를 이해하지 않고도 코드를 신뢰합니다. 감당할 수 없는 부채가 쌓입니다.
- 성능을 측정하지 않습니다. 프레임별 할당은 프레임 속도를 자동으로 줄입니다.
- 클라이언트를 신뢰합니다. 멀티플레이어에는 부정행위 취약점이 있습니다.
- 전체 시스템을 한 번에 원합니다. 작고 테스트 가능한 조각이 더 안전합니다.
요약하면
AI는 게임 코드의 강력한 도우미이지만 엔진, 버전 및 아키텍처 컨텍스트가 필요합니다. 코드를 읽고 이해하고, 컴파일하고 테스트하고, 성능과 보안을 확인하지 않고 프로젝트에 넣지 마십시오. 멀티플레이어에서 서버 권위주의를 유지하고 보안 정보를 방어 및 확인 목적으로만 사용하십시오.
응용과제
작은 구성 요소(예: 이중 점프 또는 단순 인벤토리)를 선택합니다. "컨텍스트가 포함된 코드 요청" 템플릿으로 엔진과 버전을 제공하여 코드를 생성합니다. 그런 다음 "코드 설명/검토" 템플릿을 사용하여 동일한 코드를 검토함으로써 성능 및 버그 위험을 제거합니다. 엔진에서 코드를 컴파일하고 테스트합니다.
체크리스트
- [ ] 엔진, 버전, 언어 및 아키텍처 컨텍스트를 제공했습니다.
- [ ] 코드를 읽고 이해했습니다. 나는 해설과 함께 그것을 원했다.
- [ ] 엔진에서 컴파일하고 테스트하여 성능을 측정해봤습니다.
- [ ] 네트워크/경제/저장코드에서 보안검사를 했습니다.
- [ ] 나는 내 게임을 방어하기 위해 보안 정보만을 사용했습니다.