이전 글은 아래 링크 참조
프로젝트 완료 시 GitHub 주소 공개 예정
https://525easy.tistory.com/72
1. 작업 내용 - 프로토타이핑 - 모험 씬 기능 제작
GPT가 제공해 준 작업 순서는 다음과 같다. 기니까 접어둔다.
(복붙 시 번호가 안붙는 상황이 나와서 내용 복붙 후 번호만 붙임)
1. 컨셉 및 디자인 단계:게임의 핵심 메커니즘 및 재미 요소를 결정합니다.게임의 세계관, 스토리, 캐릭터, 백그라운드 등을 설계합니다.
2. 프로토타이핑:
기본적인 게임 메커니즘을 구현한 프로토타입을 만듭니다.
플레이어의 움직임, 환경 상호작용, 기본 적과의 전투 등을 구현합니다.
3. 2D 아트 및 애니메이션 제작:
캐릭터, 배경, 아이템 등에 필요한 2D 그래픽을 디자인합니다.
필요한 애니메이션을 만들어 캐릭터 및 게임 요소에 적용합니다.
4. 레벨 디자인:
탐험 가능한 세계를 설계합니다.
던전, 지형, 비밀 통로 등을 배치하고 연출합니다.
5. 게임 로직 구현:
플레이어의 조작, 아이템 사용, 적과의 전투, 퀘스트 시스템 등의 게임 로직을 프로그래밍합니다.
6. 생성형 AI 구현:
생성형 AI를 사용하여 매번 새로운 지형, 던전, 아이템을 생성하는 시스템을 구현합니다.
7. 사운드 및 음악 추가:
게임 플레이에 필요한 효과음과 배경 음악을 추가합니다.
8. 테스트 및 디버깅:
게임의 오류를 찾고 수정하며, 균형을 맞추기 위해 게임을 반복해서 플레이합니다.
9. 최적화 및 마무리:
게임의 성능을 최적화하고 필요한 추가 기능을 구현합니다.
게임을 출시할 준비를 마치고 마무리 작업을 진행합니다.
10. 출시 및 마케팅:
게임을 적절한 플랫폼에 출시하고, 마케팅을 통해 게임을 홍보합니다.
플레이어들의 피드백을 수집하고 게임을 업데이트하여 지속적으로 향상시킵니다.
- 이전 글에서 AdventureScene의 스크립트를 어느정도 제작 하였다.
- 어느정도라는 뜻은... 안돌아 갈 것이 뻔하기 때문
- 이번 글에서는 제작해 둔 스크립트를 실제 Unity에 적용하는 과정을 다룬다.
2. 기본 적용
1) 오브젝트 생성
- AdventureScene이라는 Scene를 만들어준다.
- 그 뒤 AdventureScene, GameManager, UIManager를 만들어준다.
- 스크립트를 다 만들었다고 일단 오브젝트 만들면 안된다. 스크립트 좀 봐야된다.
- UIManager와 GameManger를 찾는 부분이 보인다. 저래서 일단 2개는 필수로 만들어야 한다.
- 안그러면 에러 남
- 그 뒤 SelectDungeon 함수와 ExploreDungeon 함수를 봐봐야 한다.
- SelectDungeon 함수는 별게 없어보이는데 ExploreDungeon의 경우 필요한 작업들이 많을 것 같다.
- 플레이어를 일단 만들고... 던전에서 적도 생성시키고... 그러면 적은 또 플레이어를 추격 해야된다.
- SelectDungeon 먼저 확인해본다.
- UIManager와 GameManager에 위와 같이 에러에 대한 처리도 되어 있다.
- ExploreDungeon을 주석처리하고 돌려본다.
- 에러에 대한 처리가 나오고 나머지는 에러가 없다.
- 정상적으로 돌아가게 만들어야 한다.
2) UI 생성 및 스크립트 수정
void Start()
{
// 각 클래스의 인스턴스 생성
dungeon = new Dungeon();
player = new Player();
uiManager = FindObjectOfType<UIManager>(); // UIManager는 Scene에 단 하나만 존재한다고 가정
gameManager = FindObjectOfType<GameManager>(); // GameManager는 Scene에 단 하나만 존재한다고 가정
// 던전 선택
SelectDungeon();
// 던전 탐색 시작
ExploreDungeon();
}
// 던전 선택 기능
private void SelectDungeon()
{
// 던전 선택 UI 표시 및 사용자 입력 받기
uiManager.DisplayDungeonSelectionUI();
int selectedDungeonIndex = uiManager.GetSelectedDungeonIndex();
// 선택된 던전 정보를 가져와서 설정
dungeon = gameManager.GetDungeon(selectedDungeonIndex);
}
// 던전 탐색 기능
private void ExploreDungeon()
{
// 플레이어 위치 설정
player.SetPosition(dungeon.GetRandomStartPosition());
// 던전 내의 적 생성
dungeon.SpawnEnemies();
// 플레이어 상태 표시
uiManager.DisplayPlayerStatus(player);
// 플레이어가 던전을 탐험하는 동안 지속적으로 업데이트
StartCoroutine(ExploreCoroutine());
}
- Start 함수를 보면...
- 고를 틈도 없이 골랐다 하고 던전을 셋팅하고 있다. 뭔가 많이 이상하다.
- 일단 고쳤다 한다. 복붙하고 유니티에서 시작을 돌려본다.
- 아무것도 안나온다. 아무것도 안나와서 사진을 안넣는다. 그래서 AdventureScene 스크립트를 올린다.
- using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AdventureScene : MonoBehaviour
{
private Dungeon dungeon; // 던전 클래스 인스턴스
private Player player; // 플레이어 클래스 인스턴스
private UIManager uiManager; // UI 매니저 클래스 인스턴스
private GameManager gameManager;// 게임 매니저 클래스 인스턴스
private bool isDungeonSelected; // 던전 선택 여부를 나타내는 변수
void Start()
{
// 각 클래스의 인스턴스 생성
player = new Player();
uiManager = FindObjectOfType<UIManager>(); // UIManager는 Scene에 단 하나만 존재한다고 가정
gameManager = FindObjectOfType<GameManager>(); // GameManager는 Scene에 단 하나만 존재한다고 가정
// 초기화
isDungeonSelected = false;
// 던전 선택 대기
StartCoroutine(WaitForDungeonSelection());
}
// 던전 선택을 대기하는 코루틴
private IEnumerator WaitForDungeonSelection()
{
// 던전 선택 UI 표시 및 사용자 입력 받기
uiManager.DisplayDungeonSelectionUI();
// 던전이 선택될 때까지 대기
while (!isDungeonSelected)
{
yield return null;
}
// 던전 탐색 시작
ExploreDungeon();
}
// 던전 선택 기능
public void SelectDungeon(int selectedDungeonIndex)
{
// 선택된 던전 정보를 가져와서 설정
dungeon = gameManager.GetDungeon(selectedDungeonIndex);
isDungeonSelected = true;
}
// 던전 탐색 기능
private void ExploreDungeon()
{
// 플레이어 위치 설정
player.SetPosition(dungeon.GetRandomStartPosition());
// 던전 내의 적 생성
dungeon.SpawnEnemies();
// 플레이어 상태 표시
uiManager.DisplayPlayerStatus(player);
// 플레이어가 던전을 탐험하는 동안 지속적으로 업데이트
StartCoroutine(ExploreCoroutine());
}
// 던전 탐험 코루틴
private IEnumerator ExploreCoroutine()
{
while (!gameManager.CheckDungeonCompletion())
{
// 전투 시스템 관리
ManageCombatSystem();
yield return null; // 한 프레임 대기
}
// 던전 완료 시 보상 제공
ProvideReward();
}
// 보상 제공 기능
private void ProvideReward()
{
// 보상 아이템 획득
Item rewardItem = dungeon.GetRewardItem();
player.AddItemToInventory(rewardItem);
// 보상 UI 표시
uiManager.DisplayRewardUI(rewardItem);
// 경험치 획득
int experienceEarned = dungeon.GetExperienceReward();
player.AddExperience(experienceEarned);
}
// 플레이어 사망 처리 기능
private void PlayerDeath()
{
// 플레이어 사망 시 게임 오버 처리 등을 구현합니다.
// 예를 들어, 게임 오버 UI를 표시하거나 게임을 재시작할 수 있습니다.
}
// 전투 시스템 관리
private void ManageCombatSystem()
{
// 적과의 전투를 관리합니다.
// 플레이어와 적의 공격, 피격 처리 등을 수행합니다.
}
// 아이템 사용 기능
private void UseItem()
{
// 플레이어가 아이템을 사용하는 동작을 처리합니다.
// 사용할 아이템을 선택하고, 그에 맞는 효과를 적용합니다.
}
// 플레이어 상태 표시 기능
private void DisplayPlayerStatus()
{
// 플레이어의 상태를 UI에 표시합니다.
// 예를 들어, 체력, 마나, 경험치 등을 표시할 수 있습니다.
}
// 플레이어가 던전을 선택하고 탐험하는 동안 지속적으로 업데이트
void Update()
{
// 던전이 선택되지 않았다면 업데이트하지 않습니다.
if (!isDungeonSelected)
return;
// 던전이 완료되지 않았다면
if (!gameManager.CheckDungeonCompletion())
{
// 던전 탐험 중이므로 플레이어 상태 표시 업데이트
DisplayPlayerStatus();
// 던전 탐험 중이므로 아이템 사용 가능
if (Input.GetKeyDown(KeyCode.I))
{
UseItem();
}
}
}
}
- UIManager를 확인해 봐야 한다.
- UI를 만들어줘야 한다.
- 우선 함수를 만들고
- 뭐 하라는대로 해주긴 하겠지만
- 함수를 보면 어떻게 선택하는지는 없음
- 하지만 선택하지 않고 랜덤으로 가는 것도 재미지 않을까 싶어서 냅둔다.
- 하라는대로 만들어줬다.
- 뭔가 뜨긴 뜨는데 10초 제한 시간인 부분도 보이면 좋을 것 같다.
- 텍스트로 나타내는 것이 구리긴 하지만 디테일은 추 후에 작업 하는 쪽으로 한다.
- 현재 남은 시간이 0초가 되더라도 아무 일도 일어나지 않는다.
- UIManager가 선택이 완료 되면 AdventureScene에게 완료 되었다고 알려주는 부분이 누락 되어 있기 때문이다.
- 꼽을 준다.
- ChatGPT를 예전에 쓸때와 다른 점이 있다면 [ 이어서 작성하기 버튼 ]이 생겼다는 점이다.
- AdventureScene과 UIManager 모두 수정해주었다.
- 뭔가 진행이 되었다 해당 에러 로그를 타고 들어가봐야 한다.
- 로그를 확인해보니 [ 던전 선택 ] -> [ 던전 탐색 ]으로 전이 된 것은 확인할 수 있었다.
- [ 던전 탐색 ]의 경우 Player와 Dungeon, Enemy의 추가 작성이 필요하기 때문에 다음 글에서 이어서 작성한다.
'AI > AI활용' 카테고리의 다른 글
[ AI로 게임 만들기 ][ GPT3.5 ] 01_프로토타이핑 - 스크립팅 (1) | 2024.04.01 |
---|---|
[ AI로 게임 만들기 ][ GPT3.5 ] 01_프로토타이핑 - 모험 씬 기능 도출 (1) | 2024.03.27 |
[ AI로 게임 만들기 ][ GPT3.5 ] 00_컨셉 및 디자인 (1) | 2024.03.26 |
[ AI로 게임 만들기 ] GPT3.5 vs Google Gemini 시작 (0) | 2024.03.25 |
[NFT] AI 그림으로 NFT 작가 되기 (0) | 2023.05.18 |
댓글