본문 바로가기
디지털노마드

[챗GPT게임개발4] ChatGPT를 활용하여 타일맵(무한의 계단) 추가하기

by 인텔리노마드라이프 2024. 4. 30.
728x90

안녕하세요. 인텔리원스튜디오(IntelliOneStudio)입니다.

오늘은 ChatGPT를 활용하여 나만의 타일맵(무한의 계단) 추가해볼께요.

이번에는 다른 방식으로 챗GPT와 대화해볼까해요

그리고 이번에는 기존에 문장으로 챗GPT와 대화하는 방식에서

화면을 캡쳐서 물어보는 방식을 사용해볼거예요.

 

"이런 것도 가능하구나" "ChatGPT의 능력은 어디까지 발전할까"를 다시 확인하는 기회가 될 수 있을 것 같아요.

 

[참고] 유니티게임개발 연재를 다 읽은 후에는 누구나 쉽게 Unity 에서 플랫포머 게임을 만들 수 있을 것 같아요. 챗GPT도 많은 도움이 되지만 Unity 의 개발자 환경도 너무 좋은 것 같아요.

나만의 타일맵을 추가해봐요.

지난 "[유니티게임개발3] 챗GPT를 활용하여 캐릭터에 다양한 애니메이션 추가"를 통해서 나만의 캐릭터에 다양한 동작을 추가했어요.

프로젝트 화면을 캡쳐해서 물어봐도 되요.

이제 타일맵을 추가해볼께요.  그리고 이번에는 질문을 이미지로 해볼께요.

[질문] 안녕 ChatGPT, 첨부 이미지의 내용을 참고해서 나만의 맵을 추가하는 방법을 알려줄래
[Hierachy 에 만들어져있는 Gird 오브젝트]
[팔레트 정보]

[답변]

보내주신 이미지를 보니, Unity의 2D Tilemap 기능과 같은 게임 개발 도구에서 사용되는 타일 기반 레벨 에디터에서 작업하고 계신 것 같습니다. 공유해주신 이미지를 바탕으로, 나만의 맵을 만드는 과정을 안내해드리겠습니다.

  1. 레이어 정리:
    •    첫 번째 스크린샷에 "Foreground(전경)", "Level(레벨)", "Background(배경)", "FarBackground(원경)" 같은 다양한 레이어가 보입니다. 이 레이어들은 장면 내 요소들을 분리하는 데 사용됩니다. 예를 들어, 플랫폼과 같은 게임플레이 요소는 "Level" 레이어에, 행동의 앞이나 뒤에 있는 미적 요소들은 "Foreground"나 "Background" 레이어에 배치합니다.
  2. 올바른 레이어 선택:
    •    맵을 구성할 때 올바른 레이어("Level"과 같은 메인 게임플레이 요소를 위한 레이어)가 선택되어 있는지 확인하세요.
  3. 타일 선택:
    •    두 번째 스크린샷에 "Tile Palette(타일 팔레트)"가 표시되어 있습니다. 이 팔레트에서 사용할 타일을 선택합니다. 타일은 바닥 조각, 환경 장식, 장애물 등 다양할 수 있습니다.
  4. 맵 편집:
    •    선택한 타일을 사용하여 레벨 에디터의 그리드에 타일을 배치하려면 클릭하세요. 에디터의 도구(브러시, 지우개, 채우기 등)를 사용하여 그리드 위의 타일을 조작할 수 있습니다.
  5. 타일 팔레트 사용:
    •    자신만의 타일을 팔레트에 생성하거나 가져오려면, 타일의 스프라이트 시트를 만들고 스프라이트 에디터에서 개별 타일을 정의하여 슬라이싱합니다.
    •    슬라이싱 후에는 새로운 "Tile Palette"를 생성하거나 기존의 것에 추가하여 타일을 드래그하여 사용할 수 있습니다.
  6. 브러시로 그리기:
    •    타일맵에 타일을 그리기 위해 브러시 도구를 선택하세요. 한 번에 여러 타일을 선택하여 빠르게 패턴이나 큰 구조를 만들 수 있습니다.
    •    실수로 배치한 타일을 지우려면 지우개 도구를 사용하세요.
  7. Z-Position 설정:
    •    게임에서 깊이감이 필요한 경우, Z-Position을 사용하여 게임 세계에서 요소가 얼마나 뒤쪽이나 앞쪽에 나타날지 정의합니다. 이는 올바른 요소들이 서로 겹치게 하는 데 중요합니다.
  8. 맵 저장:
    •    레벨에 만족하면 맵을 저장하세요. Unity에서는 일반적으로 장면이 저장될 때 변경 사항이 함께 저장되므로 전체 장면을 저장하여 맵을 유지하십시오.

이 설명을 바탕으로 에디터를 사용하여 나만의 맵을 만들 수 있을 것입니다. 멋진 레벨을 만드는 것은 시간이 걸리며 게임플레이를 테스트하고 다듬으면서 요소들을 계속 편집하는 과정을 포함합니다. 제작 과정을 즐기세요!

 

필요한 기능을 만들기 위해 요구 사항 정의 등의 문장을 만들어야 해요.

그런데 화면 캡쳐된 내용으로도 잘 이해하고 원하는 결과를 주는 걸 보면 이제는 문구를 만드는 과정도 필요 없을 것 같아요. 

챗GPT가 알려준 대로 나만의 타일맵을 추가했어요.

답변해준 내용대로 타일을 그리드에 추가했어요.

[나만의 타일맵 추가]

 

모든 변경사항을 적용한 후, Play 버튼을 클릭하여 게임을 실행하고 새 캐릭터가 제대로 작동하는지 확인했어요.

[나만의 타일맵 추가 후 실행 화면]

그런데 실행 중간에 캐릭터가 사라졌어요. 

맨위 타일로 뛰는 순간 캐릭터가 사라졌어요.

[실행 중에 캐릭터가 사라졌어요]

 

어떻게 수정을 해야 할지 몰랐어요.

문제 해결도 챗GPT와 같이 해봤어요

챗GPT 한테 문제를 이야기하고 해결 방법을 찾아달라고 했어요.

그런데 기존 대화하는 방법에서 화면 캡쳐한 내용으로 검토를 해달라고 했어요. 

[질문] 안녕 ChatGPT, 첨부와 같이 위로 계속 올라가는 타일을 추가했어. 그런데 카메라가 플레이어를 따라 움직이다가 맨 위 타일에 있을 때는 카메라가 플레이어를 더 이상 따라가지 않아. 이유가 뭘까?
[문제가 되는 화면]

[답변]

위로 계속 올라가는 타일을 추가한 상황에서 카메라가 플레이어를 따라가다가 맨 위 타일에 있을 때 카메라가 더 이상 플레이어를 따라가지 않는 문제는 몇 가지 일반적인 원인이 있을 수 있습니다.

  1. 카메라의 상한선 설정: 카메라 스크립트에 플레이어의 최대 높이를 따라가지 않도록 설정하는 상한선이 정의되어 있을 수 있습니다. 이는 플레이어가 맵의 끝에 도달했을 때 카메라가 더 이상 올라가지 않도록 하기 위한 것입니다.
  2. 카메라의 추적 로직: 카메라가 플레이어의 위치를 추적하는 로직에 문제가 있을 수 있습니다. 예를 들어, 플레이어가 일정 높이에 도달했을 때 카메라가 멈추는 조건을 체크하는 코드가 있을 수 있습니다.
  3. 레벨의 경계: 레벨 디자인에서 지정된 높이 이상으로 플레이어가 올라갈 수 없도록 경계를 설정했을 가능성이 있습니다. 이 경우 카메라도 그 경계를 넘어서 움직일 수 없습니다.
  4. 카메라 설정: Unity의 카메라 컴포넌트 또는 스크립트 설정에서 'Clipping Planes', 'Field of View' 또는 'Viewport Rect' 설정이 플레이어가 맨 위 타일에 있을 때 영향을 미치고 있을 수 있습니다.

이 문제를 해결하기 위해서는 다음과 같은 단계를 취할 수 있습니다:

  • 카메라 스크립트 검토: 플레이어를 추적하는 카메라 스크립트를 검토하여 플레이어가 맨 위 타일에 도달했을 때 카메라 움직임을 제한하는 조건이 있는지 확인합니다.
  • Unity 에디터 설정 확인: 카메라 객체의 인스펙터 창에서 관련 설정을 확인하여 경계 및 추적 로직에 문제가 없는지 확인합니다.
  • 디버깅: Unity의 디버그 모드를 사용하여 플레이어와 카메라의 위치를 실시간으로 모니터링하며 문제가 발생하는 시점을 정확히 파악합니다.

이러한 점검을 통해 문제의 원인을 찾아낼 수 있을 것이며, 그에 맞는 조치를 취할 수 있습니다.

 

챗GPT 에게 문제를 이야기하고 해결 방법을 찾아달라고 했어요.

[질문] 안녕 ChatGPT, 첨부 이미지 내용을 검토해서 어떤 부분에서 수정이 필요한지 알려줘

[답변]

이미지에서 Unity 에디터의 Hierarchy 뷰가 보이는데, 'CinemachineConfiner'라는 오브젝트가 선택되어 있습니다. 이것을 기반으로, 카메라가 플레이어를 따라가다가 특정 지점에서 멈추는 문제를 해결하기 위한 몇 가지 수정 방향을 제안해드리겠습니다.

'CinemachineConfiner' 컴포넌트는 카메라가 게임 월드 내에서 이동할 수 있는 경계를 지정하는 데 사용됩니다. 카메라가 플레이어를 따라가지 않는 문제는 이 컴포넌트의 설정에 의해 발생할 수 있습니다.

수정을 위해 다음 사항들을 확인하십시오:

  1. CinemachineConfiner 설정 확인:
    •    CinemachineConfiner 컴포넌트의 'Bounding Shape'가 플레이어가 도달하는 가장 높은 지점을 포함할 만큼 충분히 큰지 확인하십시오. Bounding Shape가 너무 작으면 플레이어가 상한선에 도달했을 때 카메라가 멈출 수 있습니다.
  2. Bounding Volume 수정:
    •    Confiner가 사용하는 'Bounding Volume' (예: Polygon Collider 2D, Box Collider 2D 등)을 검사하여 모든 필요한 영역을 포함하도록 수정하십시오. 특히, 플레이어가 올라갈 수 있는 맵의 상단 부분이 포함되어 있는지 확인해야 합니다.
  3. 씬 구조 검토:
    •    Hierarchy의 다른 오브젝트들이 카메라 이동에 영향을 주지 않는지 검토합니다. 예를 들어, 'Zones' 내에 'Victory'나 'DeathZone' 같은 트리거가 카메라 경계에 영향을 주는 스크립트를 가지고 있지 않은지 확인하세요.
  4. Cinemachine Virtual Camera 검사:
    •    'CM vcam1'이라는 Cinemachine Virtual Camera의 설정을 확인하여 카메라의 이동을 제한하는 다른 설정이 있는지 검토합니다.
  5. 스크립트 검토:
    •    'GameController', 'Player' 또는 카메라 관련 컴포넌트에 연결된 스크립트에 플레이어 또는 카메라의 이동을 제한하는 로직이 있는지 확인하십시오.
  6. 카메라와 플레이어 상호작용 검토:
    •    카메라가 플레이어의 이동을 어떻게 추적하는지를 담당하는 스크립트 또는 설정을 검토하고, 이상한 동작을 보이는 부분이 있다면 수정하십시오.
  7. 에디터에서 테스트:
    •    Unity 에디터에서 Play 모드로 진입하여 문제가 발생하는 순간을 살펴보고, 문제가 될 만한 설정을 실시간으로 조정해보세요.

이 단계들을 통해 카메라가 플레이어를 따라가지 않는 문제의 원인을 찾아 해결할 수 있어야 합니다.

 

정확히 문제가 되는 부분을 찾아서 수정하는 챗GPT

맞아요. 맞아요.

 

지난 글([5분개발] ChatGPT를 활용하여 카메라의 움직임을 제한하기)에서 Cinemachine Confiner가 카메라의 움직임을 제한하는 역할을 살펴봤어요. 

 

CinemachineConfiner 선택하고 씬 에디터에서 바라보면 카메라 이동이 제한되는 영역 위해 타일이 있어요.

그래서 캐릭터가 보이지 않았어요.

[캐릭터가 보이지 않았던 이유를 설명하는 화면]

이미지를 줘도 정확히 문제가 되는 찾아서 해결하는 챗GPT 가 정말 놀랍네요.

Cinemachine Confiner를 수정했어요

[Cinemachine Confine 수정]

 

 

모든 변경사항을 적용한 후, Play 버튼을 클릭하여 게임을 실행하고 새 캐릭터가 제대로 작동하는지 확인했어요.

원하는 결과대로 동작하네요.

 

[카메라 이동이 정상적으로 실행되는 화면]

 

참고로 무한의 계단도 이런 방식으로 만들면 될 거예요.

 

지금 우리가 한 내용을 보면 코딩은 필요가 없고 궁금한 점은 챗GPT랑 해결했어요.

이제 개발 경험과 지식이 없어도 게임을 만들 수 있을 것 같아요.

 

[나도 게임을 만들 수 있다 !! IntelliOneStudio]

 

 

지금까지,

언제나 성장하는 인텔리원스튜디오(IntelliOneStudio)입니다.

감사합니다.

728x90