Product

Alpha Table[1] 출시

ClientProgrammer 2018. 12. 16. 22:54

알파테이블 ( Alpha Table )


* 왜 알파테이블?

그럴듯한 이름이 필요했다. 그래서 후보로 거론된 것들은 "테이블 매니져", "테이블 헬퍼" 였고, 이중에서 그나마 "테이블 헬퍼"라는 이름이 그나마 
앱의 목적을 약간이나마 표현해주는 것 같았다. 그러다 생각난.. 알파고의 "알파"와 테이블을 합친 "알파테이블"이 최종 이름이 되었다.


* 그래서 알파테이블이 뭐냐고1
 
알파테이블이란 바로 ..다! 라고 얘기하기 전에 태어낸 배경을 얘기 해보고자 한다. 필자 말고 알파테이블이 태어난 배경.. 
필자가 10년정도 실무에 있으면서 개발 및 유지보수 포함 총 6개의 프로젝트에 참여했다. 장르도 다양하고 ( MMO, MO, 레이싱 ), 같이 일했던 구  성원도 참 다양 했지만 한가지! 테이블을 사용해서 개발 한다는것만은 어느 프로젝트나 동일 했다. 여기서 말하는 테이블이란 게임에서 사용 될 온갖 값들을 미리 파일(excel, xml, csv, txt 등등 어떤것이라도 좋다)에 넣어둔것을 얘기한다. 물론.. 극적으로 표현하려고 한가지! 라고 표현 했지만, 그외에도 자잘하게 동일한 부분은 많다. 어쨌든.. 중요한건 어느 프로젝트를 진행하던지 테이블을 사용 했고, 테이블을 사용하면서 자동화에 대한 아쉬움을 항상 크거나 작게 느꼈었다. 


* 그래서 알파테이블이 뭐냐고2 ( 자동화 )
자동화? 자동화를 얘기하기전에 테이블을 사용하기 위해 클라이언트에서 하는 작업에 대해 얘기 할 필요가 있다.
아래 [그림1]을 보면 우측 초록색 박스 안에 기획팀 에서 만든 각종 테이블들이 있고, 좌측 검은 박스안에 클라이언트에서 이 테이블을 가지고 하는 기능들이 써있다. 

[그림1] 테이블과 클라이언트의 관계




간단하게 말해서 클라에선 테이블을 읽고, 참조한다. ActionTable과 AttributeTable 테이블을 읽어서 메모리에 로드 하려면 각각 테이블 형태에 맞는 클래스가 필요하다. 예를들어 아래 [그림2]와 같은 테이블 별 클래스 구조가 필요하게 된다. 여기까지 설명을 들었을때 테이블의 항목을 추가하거나 항목의 이름을 변경 or 삭제 했을때, 또는 새로운 테이블이 생겼을때마다 클라이언트에서도 아래와 같은 작업을 해줘야 한다는걸 알 수있다.
자! 여기서 자동화에 대한 필요성이 나오고 알파테이블의 탄생 배경이 나온다. "아래 내용을 툴로써 자동화 하고 클라이언트에서는 반복 작업을 하지 않게 해주자" 라는게 알파테이블의 탄생 배경이다.



[그림2] 테이블 별 클래스









* 알파테이블 사용법
우선, 알파테이블.exe를 실행 시키면 아래와 같은 UI를 볼 수 있다.

[그림3] 알파테이블 UI


본격적으로 알파테이블이 해주는 일을 설명 해보겠다. 

우선 알파테이블이 실행 될 머신? 즉 컴퓨터 가 필요하다. 그리고 준비 된 머신에 알파테이블을 적용시킬 클라이언트 프로젝트의 SVN, 클라이언트에서 읽어 올 테이블SVN, 그리고 유니티를 설치 해 두어야 한다. 설치후엔 위의 3 경로에서 각각 순서에 맞게 셋팅 해준다. 그리고 자동변환을 눌러주면 끝. 



* 알파 테이블 진행 순서
1. 기획팀에서 테이블 데이터 SVN에 COMMIT
2. 머신에서 돌고있는 알파테이블이 자동으로 커밋을 감지.
3. 감지 후에 변경 or 추가 된 엑셀만 로드하여 파싱, 클라에서 사용 할 binary파일 생성, 클라이언트 코드가 들어있는 cs파일 생성
4. 생성한 바이너리와 cs파일을 유니티 프로젝트로 이동. 
5. 이동 된 파일들의 메타파일 생성
6. SVN에 커밋


* 글 마무리
이런 역할을 해주는 툴이 알파 테이블이고, 사실 테이블 하나당 1개가 아닌 3개의 cs파일이 생성 된다. ( 이유는 다음 글에서.. )
결론은 알파테이블을 사용하게 되면 기획자가 테이블을 올릴때마다 수작업 할일이 없어서 시간을 엄청나게 많이 절약 할 수 있게되고, 그로인해 업무 집중시간을 늘릴 수 있으며 클라이언트 자체의 퀄리티업이나 매출을 위한 컨텐츠를 하나라도 더 개발 할 수 있으며, 잦은 테이블 수정으로 인한 인간적인 스트레스 및 서로의 스트레스를 풀기 위한 소모적인 논의를 할 필요도 없고...등등등 여튼 필수다. 
사실 이렇게 좋은? 개념의 툴이 적어도 내가 개발하는 10년 동안에는 그 기능이 "일부구현"된 곳은 봤으나 대부분 "일(1)도구현"되지 않은 상태로 작업을 했었고, 실제로 그로인해 위와같은 불편함과 스트레스를 누려야(?) 했던게 사실이다.
다음 글에서 알파테이블이 가지고있는 자잘한 문제와 업데이트 방향 및 해결책을 제시 할 예정이고, 실제 알파테이블을 zip형태로 올려서 필요한 분들(?)과 공유 해보려 한다.