빅 인티져와 25진수
우리 회사 게임 같은 클리커 ( 탭 게임)의 특징은 엄청나게 큰 재화나 수치라고 할 수 있다.
1경 , 2해 를 넘어가는 .. 어마어마한 숫자를 다뤄야 하기 때문에
유저들에게 쉽게 보여주기 위해서
우리는 1000단위로 끊어
1.0A , 1.23BBA 등의 단위로 보여준다.
여기서 A ~Z 다음은
AA 이고, 그다음은 AB ~ 이런식으로 AZ를 넘으면
BA 가 되는 식이다.
잘 보면 알 수 있지만. 25진수를 사용하는 것이다. ( 알파벳은 모두 25개 이므로 )
그래서 빅인티저( 큰 수 )를 위처럼 축약된 형태의 스트링 값으로 변환하는 스크립트가
꼭 필요한데 .
기존의 레거시 코드는
if ( x > 100000000000) return 100B( 예를 든 것이라 실제와 다름 )
이런 식으로 하드코딩 되어있었다 ..
그래서 자릿수를 받아서
25진수로 변환해서 뒤에 붙는 알파벳과 앞에 붙는 숫자 ( 111.2 형태 ) 를 합쳐 스트링을 리턴하게 했다.
그래서 우리는 정말 무한대에 대해서 쉽게 , 추가작업 없이 나타낼 수 있게 되었다.
검기 이펙트 캘리브레이션 과 상대 , 절대 좌표
기존의 검기 이펙트는 어짜피 플레이어가 혼자 몬스터를 썰고 다니는 형태였기 때문에
절대 좌표로 구현되었는데 , PVP 컨텐츠 에서는 서로 마주보고
싸우므로 상대 좌표를 이용해서 하고 나머지 부속물들 ( 스킨, 몸 부위, 검 , 검기 ) 등은
플레이어 게임오브젝트의 자식으로 등록해서
적의 경우만 Localscale.x 를 음수로 바꿔주면 ( - 만 달아주면 )
상대 좌표로 쉽게 구현 가능해 보였다,.
( 하지만 절대 좌표의 값을 그대로 쓰지 못해서 일일히 손으로 검기 궤적을 맞추었다 ㅠ_ㅠ… )
여기서 시간을 많이 썼는데, 지금 생각해도 딱히 방법은 없었던 것 같다 .
데미지 텍스트 팝과 두트윈
기존의 물리엔진을 사용한 데미지 표시 텍스트 팝업을
두트윈으로 교체했다.
당연히 성능상의 이득이 많다.
(구현도 간편 .)
문제는 내가 Tween의 내부 로직이나 원리를 전혀 모른다는 것이다.
시간 될 때 살펴보고 건드려봐야겠다 !
일기
오늘은 정말 기술적인 구현을 많이 했다 @_@
점점 일이 능률이 붙고 자신이 생기니
일도 무척 재미있는 상태다.
무엇보다 기존 코드 유지보수나 업데이트가 아닌
새 설계를 하고 있어서
공개하긴 힘들지만
전보다 추상화나 객체를 살리면서도
함수나 변수명만 봐도 돌아가는 것이 이해가도록 노력하고
실력이나 지식의 문제로 그렇지 못하면 주석을 최대한 달며 진행하고 있다
마크다운으로 서류도 하나 쓰고 있는데 ..
시간이 없으면 하기는 힘드니 한텀 끝내고 ( 아마 월 ~ 화)
리팩토링 하며 다시 정리해야겠다 !
벌써 주말이네 .