안녕하세요! 오랜만에 동방탄주록 일지 써볼려고 왔습니다.
아티스트는 다행히 구해졌습니다.
인디 게임 개발의 시작 - 인디게임 팀빌딩, 게임 개발팀 만들기
mandlemandle.com
아티스트를 어떻게 구했냐고 궁금할까봐 이야기 드리자면 여기서 구하게 되었는데
솔직히 사이트가 막 만들어지기도 했고 크지도 않아서 별 기대 안 했는데 오픈 톡방이 의외로 적극적인 사람이 많더군요?
그래서 이런 느낌으로 그래픽이 진행될 거 같습니다 ㅎㅎ
최근에 계속 버그 찾고 고치기에 반복이라 뭔가 일지 쓸만한 게 없었는데
Tiled -> LDtk 로 레밸 디자인 툴을 바꾸게 된 과정에 대해서 설명드리고 싶네요.
사실 처음에 레밸 디자인 툴로 Tiled로 선택하게 된 이유는 레밸 디자인과 유니티의 분리였는데.
결정 당시 LDtk를 선택 안 한 이유는 옛날에 써봤을 때 "아직 미개발된 툴 아닌가??" 라고 생각했기 때문입니다.
그러다 우연히 LDtk 최근 버전을 접했는데 특히 게임 엔진에 import 처리가 깔끔하고 문서도 잘 되어 있는 게 Tiled 보다 낫더군요
Tiled는 SuperTiled2Unity 라는 걸 사용하고 있는데 문서도 빈약하고 런타임에서 다루기가 힘들어서 개인적으로 커스텀해서 사용하고 있었습니다.
그렇게 부족한 걸 자꾸 커스텀해서 추가 하다 보니 어느 순간 Tiled, Unity가 강하게 결합되어 원래 목적에서 벗어나더군요...
결국 LDtk로 갈아타는 과정을 2~3일 정도 투자하게 되었습니다.
갈아타고 LDtk를 사용할 때 특히 매력적인 부분이 있는데 그것에 대해 설명 드리겠습니다.
1. ILDtkImported 인터페이스
ILDtkImported 인터페이스는 LDtk의 파일을 Unity로 import 할 때 불려지는 콜백들의 인터페이스입니다.
유니티 MonoBeha.viour의 Awake, Start 같은 콜백 메소드들을 재정의 할 수 있도록 인터페이스를 만들어둔겁니다.
이전 SuperTiled2Unity의 경우 이런 처리는 다음과 같은 과정을 거칩니다.
Tiled로 만든 레밸 안에 PlayerStart 라는 객체를 만들었다고 치면
1. PlayerStartComponent 정의
2. PlayerStartComponent가 달린 프리팹 생성
3. PlayerStart 프리팹을 https://github.com/Seanba/SuperPrefabReplacement 이런 식으로 바인딩
4. Tiled에서 정의한 Custom Property 마다 메소드나 프로퍼티 생성 (public으로)
이 과정에서 철자를 조금이라도 틀리거나 달라지면 위 과정을 새롭게 해야하는 게 디버깅도 힘들고 고달프죠
LDtk에서는 이 과정이 매우 간단해집니다.
1. ILDtkImportedFields를 상속받은 PlayerStartComponent 정의
2. PlayerStartComponent가 달린 프리팹 생성
3. PlayerStart 프리팹을 다음처럼 자동으로 리스팅된 곳에 바인딩
4. 콜백함수로 LDtk로 정의된 프로퍼티 중 필요한 부분을 적절히 가져오기
public void OnLDtkImportFields(LDtkFields fields) { LDtkFieldElement element = fields.GetField(SPAWN_OFFSET).GetSingle(); if (element.IsNull()) { spawnPoint = transform; } else { spawnPoint = element.GetPointTransform(); } }과정의 횟수 자체는 똑같지만 휴먼에러가 생길 구석을 차단하고 디버깅도 쉽다는 점에서 LDtk가 압승이라고 생각합니다.
커스텀하느라 코드를 자세히 까본 입장에서는 성능도 더 좋을거라고 생각합니다만 이건 뭐 개인적인 의견입니다.
2. 자유도를 제한했지만 실수를 줄이는 또는 협업하기 쉬운 UX
LDtk 툴에서는 Tiled 만큼 자유로운 데이터를 가질 수는 없지만 대신 사용성에서 큰 이점을 챙겼습니다.
위가 Tiled이고 아래가 LDtk 입니다.
Tiled는 그룹화도 안되어서 Enum 정의와 Entity 정의가 뒤섞여서 보여지지만 LDtk는 태그를 통한 그룹화와 프로퍼티를 정의하는 템플릿이 있어 사용성에 큰 차이를 보여줍니다.
심지어 Tiled는 정의한 Entity가 맵상에 표시되는 아이콘도 설정할 수 없는데 반해 LDtk는 해줍니다.
여튼 LDtk는 크게 2가지 이점이 있었고 다들 레밸디자인 툴로 Tiled 쓰지말고 저 처럼 LDtk로 이쁘게 레밸디자인 하시길 바랍니다. 심지어 이 툴은 무료로 해줍니다!
해당 댓글은 삭제되었습니다.
감사합니다~
고오수