본문 바로가기
AI/AI활용

[ AI로 게임 만들기 ][ GPT3.5 ] 01_프로토타이핑 - 스크립팅

by OhEasy 2024. 4. 1.
728x90

이전 글은 아래 링크 참조
프로젝트 완료 시 GitHub 주소 공개 예정
(3일 술먹어서 작업 못함)

 

[ AI로 게임 만들기 ][ GPT3.5 ] 01_프로토타이핑 - 모험 씬 기능 도출

이전 글은 아래 링크 참조 일하면서 하다보니까 작업 시간이 매우 적다. (야근 개싫음) [ AI로 게임 만들기 ][ GPT3.5 ] 00_컨셉 및 디자인 깃허브 설정 이런 내용은 생략 이전 글은 아래 링크 참조 [ AI

525easy.tistory.com

1. 작업 내용 - 프로토타이핑 - 모험 씬 기능 제작

GPT가 제공해 준 작업 순서는 다음과 같다. 기니까 접어둔다.
(복붙 시 번호가 안붙는 상황이 나와서 내용 복붙 후 번호만 붙임)

더보기

1. 컨셉 및 디자인 단계:
게임의 핵심 메커니즘 및 재미 요소를 결정합니다.
게임의 세계관, 스토리, 캐릭터, 백그라운드 등을 설계합니다.

2. 프로토타이핑:
기본적인 게임 메커니즘을 구현한 프로토타입을 만듭니다.
플레이어의 움직임, 환경 상호작용, 기본 적과의 전투 등을 구현합니다.

3. 2D 아트 및 애니메이션 제작:
캐릭터, 배경, 아이템 등에 필요한 2D 그래픽을 디자인합니다.
필요한 애니메이션을 만들어 캐릭터 및 게임 요소에 적용합니다.

4. 레벨 디자인:
탐험 가능한 세계를 설계합니다.
던전, 지형, 비밀 통로 등을 배치하고 연출합니다.

5. 게임 로직 구현:
플레이어의 조작, 아이템 사용, 적과의 전투, 퀘스트 시스템 등의 게임 로직을 프로그래밍합니다.

6. 생성형 AI 구현:
생성형 AI를 사용하여 매번 새로운 지형, 던전, 아이템을 생성하는 시스템을 구현합니다.

7. 사운드 및 음악 추가:
게임 플레이에 필요한 효과음과 배경 음악을 추가합니다.

8. 테스트 및 디버깅:
게임의 오류를 찾고 수정하며, 균형을 맞추기 위해 게임을 반복해서 플레이합니다.

9. 최적화 및 마무리:
게임의 성능을 최적화하고 필요한 추가 기능을 구현합니다.
게임을 출시할 준비를 마치고 마무리 작업을 진행합니다.

10. 출시 및 마케팅:
게임을 적절한 플랫폼에 출시하고, 마케팅을 통해 게임을 홍보합니다.
플레이어들의 피드백을 수집하고 게임을 업데이트하여 지속적으로 향상시킵니다.

 

  • 이번 글은 이전 글에서 도출한 UML을 통해 클래스별 스크립트 제작을 다룬다.

2. 클래스 스크립트 제작

과정은 단순하다.
최종 다이어그램을 도출한 채팅방 내에서 다음과 같이 질문하여 각각의 스크립트를 제작한다.

  • 각각의 클래스의 스크립트를 작성해달라고 요청한다.
  • 채팅방 생성 시 Unity로 개발하고 있다는 정보를 제공하였으므로 언어 및 환경은 따로 지정하지 않아도 된다.

  • 다른 클래스에 대한 스크립트 파일이 존재하지 않아 에러가 뜬다.
  • 도출한 모든 클래스 파일을 위와 같은 과정을 통해 프로젝트 내 생성 시킨다.

  • 클래스 파일을 생성 후 에러가 남아있는 GameManager 클래스 생성이 필요하다.

  • void가 아닌 bool로 반환을 해줘야 한다. 안그러면 에러 상태가 유지된다.

  • 위 질문을 통하여 에러를 제거한다.
  • 위와 같은 질문 및 피드백을 통해 모든 클래스 파일을 생성한다.

3. 함수 구체화

  • 위 이미지는 Enemy 클래스의 일부이다.
  • 이미지를 보면 각각의 함수에 대해 구체화 되어 있지 않고 기능을 구현하라는 주석만 적혀있다.
  • 해당 주석들을 실제 작동하도록 변환해줘야 한다.
  • [ ~~~클래스의 함수를 작성해줘 ] 라는 질문을 한다.

  • 이 때 미구현 기능들도 냅두고 대략적인 틀만 잡는다.
  • 틀만 먼저 잡는 이유는 질문들을 반복함으로써 점점 구체화 시킬 예정이기 때문이다.
  • 근데 AdventureScene 클래스부터 문제가 생겼다.
using UnityEngine;

public class AdventureScene : MonoBehaviour
{
    private Dungeon dungeon;
    private Player player;
    private UIManager uiManager;
    private GameManager gameManager;

    // Start is called before the first frame update
    void Start()
    {
        // 필요한 컴포넌트들을 초기화합니다.
        dungeon = GetComponent<Dungeon>();
        player = FindObjectOfType<Player>();
        uiManager = FindObjectOfType<UIManager>();
        gameManager = FindObjectOfType<GameManager>();
    }

    // 던전 선택 기능
    public void SelectDungeon(int dungeonIndex)
    {
        // 선택한 던전에 따라 필요한 초기화 작업을 수행합니다.
        // 예를 들어, 던전 맵을 생성하고 적을 배치할 수 있습니다.
        // 이를 위한 Dungeon 클래스의 메서드들을 호출합니다.
    }

    // 던전 탐색 기능
    public void ExploreDungeon()
    {
        // 던전 내부를 탐색하는 로직을 구현합니다.
        // 적과 아이템을 생성하고 배치하는 등의 Dungeon 클래스의 메서드들을 호출하여 던전을 구성합니다.
    }

    // 보상 제공 기능
    public void ProvideReward()
    {
        // 던전에서 보상을 제공하는 로직을 구현합니다.
        // GameManager 클래스의 메서드를 호출하여 보상을 처리합니다.
    }

    // 플레이어 사망 처리 기능
    public void PlayerDeath()
    {
        // 플레이어가 사망했을 때의 처리를 구현합니다.
        // 예를 들어, 게임을 재시작하거나 다른 작업을 수행할 수 있습니다.
    }
}
  • 이전에 뱉었던 함수들이 대다수 변경 되어있다.

  • 이전 코드들을 참조하여 다시 지시한다.
  • 해당 방법은 기존에 학습 된 자료 외 추가 자료를 제공함으로써 구체적 답변을 얻는 방식이다.

  • 많은 빨간줄이 생겼다. AdventureScene 클래스를 추가 학습 자료로 제공하며 다른 스크립트들을 수정할 예정이다.

  • AdventureScene 클래스를 다시 한번 인지 시킨다.

  • GameManager를 구체화한다.

빨간줄

  • 위와 같은 방식으로 나머지 빨간줄(에러)를 제거한다.

  • 중간중간 이렇게 직접 말해준다.

  • 위 함수는 Item 클래스의 ApplyEffect 함수이다.
  • 아이템 효과는 여러개가 될 것이기 때문에 해당 함수는 일단 주석처리 해두고 종료한다.

  • 모든 에러를 해결했다. 중간중간 여러 함수들이 추가 되었다. 구조가 변경되었는지 확인해봐야 할 것 같다.

  • 기능들이나 이것저것 많이 추가 되었다.
  • 변수명 변경이라던가 참조 되는 부분들이 수정 되었다.
728x90

댓글