핫한 IDE AI툴인 Cursor가 1.0 버전이 나오면서 점점 핫하다 못해 주변을 태우고 있다.
그래서 트렌드에 따라 사용해보려했으나 여러 어려움을 겪어... 다른 분들은 나와 같은 뻘짓을 하지 않으시길 바라며 글을 작성한다.
간단하게 순서는 다음과 같다.
- Unityhub에서 Unity6 설치 및 cursor 설치
- Unity와 cursor 연결 준비하기
- Unity와 cursor 연결하기
유니티와 커서AI를 설치하는 방법은 어렵지도 않고 이미 많은 글로 나와있어서 따로 설명하진 않겠다.
다만, 유니기 구버전과 유니티6는 유니티와 커서를 연결할 때 복붙힐 url형식이 좀 다르니 그 부분은 주의할 것. 유니티6가 더 엄격한 기준을 적용하기 때문이라고 어디서 들었던 것같다.
큰 차이는 없고, 그저 .git을 마지막에 붙이냐, 마냐의 차이다. 본 게시글은 Unity6를 기준으로 설명한다.
이제 설치가 다 됐다면 연결을 위한 준비를 해야한다.
먼저 Cursor의 설정을 해보자.
Cursor를 열면, 욉쪽 위 메뉴바 아래 4개의 아이콘이 있다.
그 중 마지막의 네모 4개에 하나 떨어져나가는(?) 아이콘을 누르면 마켓플레이스가 열린다. vscode를 사용하신 분이라면 익숙하겠지만 여기서 확장 프로그램을 설치, 사용할 수 있다.
여기서 아래 그림과 같이 C#과 C# Dev Kit, Unity를 설치해준다. 이외 확장 프로그램은 선택이다. 설치 후 반드시 사용하기가 체크되어있는지도 확인하자.
이제 Unity에 패키지를 받아줘야한다. 이를 위해 PackageManager에 들어가자. 유니티 프로그램 실행화면에서 좌측 상단 메뉴에서 window를 누르면 중간쯤에 PackageManager가 있다.
PackageManager가 열리면 +버튼을 눌러서

세번째줄에 있는 Add package from git URL을 클릭해 아래 주소를 복사해 붙여넣기하면 된다.
https://github.com/boxqkrtm/com.unity.ide.cursor.git
이렇게 붙여넣고 설치버튼을 누르면 끝!

제대로 설치됐는지 확인하고, 설치 표시가 됐다면 준비 끝!

이제 본격적으로 유니티를 연결해보자.
Unity6의 좌측 상단의 메뉴바에서 Edit를 누르면 맨아래쪽에 freference...라는 메뉴 클릭.
아래 그림과 같은 창이 뜨는데 왼쪽 메뉴에서 중앙에 있는 External Tools 탭을 누르고 External Script Editor를 Cursor[현재 설치된 버전]으로 바꿔준다.
난 여기서 막혀서 좀 헤맸다.ㅠㅠ
원래대로라면 External Script Editor을 눌렀을 때 cursor[1.0.0]가 떠야하는데, 아무것도 안 뜨는 것이었다...
이럴때는 External Script Editor의 선택 토글을 눌러, Browse...를 누르고 내 PC - 로컬 디스크(C:) - cursor - cursor.exe 이렇게 직접 cursor 실행파일과 연결을 시켜주면 된다.
이제 연결이 모두 됐으니 직접 사용해보자!
처음 만들어 볼것은 모든 게임의 기본, 플레이어 조작을 해볼 것이다.
먼저 unityhub를 열어서 새로운 프로젝트를 만들어준다.
프로젝트가 열렸다면, Hierarchy를 열어 3d object를 cube 1개와 capsule 1개, Plane 1개를 만들어 준다.
cube는 Player가 밀 수 있는 box의 역할을 하고, capsule은 player의 역할을 할것이다. Plane은 Ground의 역할이다.
이제 Scripts폴더를 만들어서 Player 스크립트를 추가하고 만들어진 스크립트를 열면 cursor가 에디터로 열리면 제대로 세팅된것이다!

이제 Cursor에게 Player를 움직일 수 있는 controller 스크립트를 짜달라고 해보자.

이 똑똑하고 이뿐 녀석! 단 두문장만 적었을 뿐인데 알아서 분류하고 생각해서 wasd로 움직일 수 있는 컨트롤러 코드를 뚝딱 만들었다.
이젠 정말 코드는 cursor에게 맞기고, 나는 게임 디자인과 아트만 해도 빠르게 게임을 만들 수 있겠다는 생각이 든다.
하지만 cursor는 눈치를 많이 보는 아이다. 코파일럿은 하나하나 알려줘야하는 애라면, 커서는 눈치를 너무 많이 봐서 시키지 않은 일도 미리하는....
여기서도 볼 수 있지만 cursor는 내가 시킨 awsd만 코딩하는 게 아닌, 점프가 있는 버전과 없는 버전을 나눠 2개의 스크립트를 작성했다.
나는 점프 있는게 좋으니 점프 있는 버전을 선택해서 accept를 눌러주었다.
이 녀석이 멋대로 생성한 코드가 있어, 유니티로 돌아가보면 기존에 만들었던 player.cs외에 simplePlayerController.cs라는 스크립트가 추가되어있는 것을 볼 수 있다. AI를 사용할 때는 이렇게 추가로 생성된 녀석이 있지는 않은지, 어떤 파일들을 건드린건지 추적하고 확인하면서 작업할 필요가 있다.
cursor를 이용하여 기존 코드를 수정하고 저장하면 외부에서 수정된 파일이 있다고 백업하라는 경고문이 뜬다. 가볍고 무시하고 진행시켜버리기~
무서운 사람들은 git같은 곳에 주기적으로 커밋해두거나 따로 백업 파일을 만들어두시길. 조심해서 나쁠 건 없다!

이 프로젝트 소스 파일 중 일부는 변경된 API를 참조합니다.
이러한 파일은 자동으로 업데이트될 수 있습니다.
업데이트하기 전에 프로젝트를 백업하는 것이 좋습니다.
이 파일들을 업데이트하시겠습니까?
Assets/Scripts/Player.cs
이제 스크립트가 작성됐으니 스크립트를 적용시켜보자. cursor 에디터에서 Unity 화면으로 돌아와 미리 만들어두었던 Plyer용 캡슐 오브젝트에 rigidbody를 넣어주고, Player.cs 스크립트를 넣어주자.
cube에도 rigidbody를 넣어두고 실행하면 wasd키로 player가 잘 움직임을 알 수 있다.
* 주의: player object의 rigidbody에서 constraints의 회전을 고정시키지 않으면 플레이어 캡슐이 데굴데굴 굴러간다.

이번엔 코드를 추가해보자. 지금 플레이어는 기본적인 네 방향 수평 움직임과 1번의 점프만 가능하다.
그렇지만 자고로 게임은 점프가 2번은 될 수 있어야하지 않겠는가?
기존 스크립트를 Cursor를 이용하여 더블점프가 가능하도록 수정하고 실행해보자.
똑똑이에게 simplePlayerController스크립트를 켠 상태로 더블 점프를 추가해달라고 했지만 알아서 내가 사용중인 Player 스크립트를 수정해주더라. 대박박

추가된 코드를 보면 점프와 관련된 키와 점프 강도에 대한 변수 선언 등 관련 코드가 추가됐음을 알 수 있다. 유니티로 돌아와 실행해보면 아주 잘 작동한다.

cursor를 여러곳에서 사용하면서 좋았던 점 중 하나인데, AI가 던진 쓰레기 코드로 인해 에러가 발생해도 언제든 이전으로 되돌릴 수 있다는 것이다. 어던 서비스든 싱글턴 패턴은 큰 위험을 안고 간다는 것을 체감하는 순간이었다.
checkpoint로 돌아가는 방법은 간단하다.
이전에 나눈 chat기록을 보면 아래와 같이 restore checkpoint라는 버튼이 있다. 누르면 경고 표시가 뜨는데, 확인차 물어보는 것이고, 언제든 다시 실행할 수 있기에 크게 신경쓰지 않아도 된다.

유니티에서 확인해보면 더블점프관련 변수가 사라지고 제대로 적용된 것을 알 수 있다!
오늘은 cursor을 활용하여 간단한 코드를 작성해 유니티에서 실행시켜 보았다.
게임 업계도 AI의 여파가 굉장히 크게 느껴지고 있다.... 이젠 정말 코더는 필요없게 되어버렸다...
다음 글에서는 Unity 자체적으로 제공하는 AI툴을 사용하거나 OpenAI의 ChatAPI를 활용하여 NPC를 만들어보면 재밌을 듯하다.
추가적인 제안 사항이나 재밌을 법한 아이디어를 올려주신다면 함 만들어보겠다.