[CoronaSDK] 블록 어태커 개발 일지
시작 글
정말 정말 오랜만에 개발 일지를 쓰는 느낌인데, 착각은 아니겠지? 하고 과거를 훑어보니 역시 착각이 아니다.
연말이니까, 그리고 그동안 한동안 바빴었으니까 보상심리가 강하게 작용한 탓이다.
뭐, 덕분에 그래비티 러쉬 1, 2를 연달아 깨기도 하고 영웅전설 5 - 바다의 함가도 중반 이상을 진행했다. 연말이니까 게임도 잔뜩 사고.. 그렇게 연말을 편안하게 보냈다.
그렇다고 개발을 아예 안한 건 아니니까, 지금까지 한 작업을 모아서 이젠 개발 일지를 써줘야 할 타이밍이다. 하는 생각이 들 쯤까지 미뤄 보았다. 이제 아, 이제쯤 정말 써야 하는데.. 할 타이밍.
아, 이제쯤 정말 써야 한다.
연초를 기념해서 어디 한번 써볼까. 뭘 했더라?
작업
그간 작업 분량
맵 이벤트를 작성하면서 부족한 것들을 전반적으로 정리하고 구성했다. 뭐, 안 그런 적이 있었던 건 아니지만.. 이렇게 필요에 의해 구현을 하다 보니 뭔가 주먹구구식의 느낌이 강하게 들긴 하지만, 조각도 덩어리에서 조금씩 깎아내서 만들어내는 과정으로 만들어내고, 그림도 전체적인 구성을 만들고 디테일을 수정하는 식으로 그리기도 하니까, 프로그래밍이 그러면 안된다는 법은 없다.. 하는 식으로 해커와 화가의 폴 그레이엄이 말했다. 그래, 그게 바로 내 작업 스타일이야. 하고 합리화 하며 오늘도 주먹구구식으로 흘러간다.
1. 다른 움직이는 오브젝트와의 필드 위치 겹침 문제 수정
AI 관련해서 제작해서 실제 동작을 확인해보니, 어떤 타이밍에서는 그 NPC와 주인공이 같은 위치로 이동할 수 있는 경우가 생겼다. 같은 위치로 갈 수 있는지 체크했을 때 둘 다 Movable 체크가 성공하는 경우가 발생하는 게 이유인데, 이것도 주먹구구로 수정.
Move 동작을 할 때 어느 위치로 이동 요청이 들어가면 그 정보도 가지고 있도록 적용했다.
2. 높이가 다른 지형으로 이동하는 기능
이건 해결 방법이 다양했다. 이 두가지 중에서 결정할 생각이었다.
1) layerTile 사이를 이어주는 어떤 타일 오브젝트 타입을 만든다.
2) layerTile 사이를 이어주는 이벤트를 만든다.
그 중 내 선택은 2번. 이유가 있다면, 오브젝트 타입을 만드는 게 코드 복잡도를 더 올리기도 하거니와 맵에 배치할 때는 어차피 같은 공수가 들 것 같다는 판단 때문이다.
그래서 이벤트로 그냥 처리했는데 글로벌한 이벤트 관련해서는 처음으로 만들어진 상황이라 폴더도 하나 새로 파야 했다. 기존에는 이벤트들을 맵별로 따로 폴더 정리 했었기에..
만들고 한번에 성공하는 적은 잘 없다. 이것도 그랬는데, 문제는 꽤 크리티컬했다.
터치를 하고 있으면 계속 그 방향으로 움직이는 기능이 있는데, 기존의 이벤트는 움직임을 강제로 멈춰버리는 기능이 붙어 있었다.. 그래서 이 계단 이벤트 쪽으로만 이동하면 뚝, 움직임이 멈추는 문제.
그래서 ‘설정 이벤트’라는 특정한 이벤트 타입을 또 설정해야 했다. 또륵.
3. 화면 바깥의 이미지는 invisible 처리 기능 제작
맵이 좀 커지니까 왠지 퍼포먼스가 문제가 있는 거 같아서 일단 화면 밖의 모든 이미지를 화면에 들어오기 전에는 invisible 시켜버리는 기능을 만들어 봤는데, 막상 적용 후 프레임을 확인해보니 오히려 좀 더 느려진 터라 적용을 보류했다.
코로나에서 화면 밖의 이미지는 드로우 하지 않는 최적화가 애초에 존재하는 걸까?
퍼포먼스 향상은 가장 나중에 해야 하는 작업이니까 일단 패스.
4. 이벤트성 동행자 나오는 기능
이런 기능이다.
동행자가 이제 정말로 생긴 이후의 맵을 작성해야 하는데 자, 이제 동행자의 대사는 어떻게 처리할 것인가. 이것도 두 가지 방안을 생각했다.
1) 동행자가 이벤트 시에만 나온다.
2) 주인공의 스프라이트를 특정 대사를 할 때만 바꿔준다.
1번의 공수가 좀 더 든다. 근데도 1번을 선택했다.
그 이유는 단순하다. 1, 2번을 모두 사용할 생각이기 때문이다.
동행자가 나오는 것의 문제점은 바로 동행자가 나올 위치가 반드시 비어있어야 한다는 점이다. 그리고 모든 이벤트를 그 위치를 비워둔 상태로 배치하는 것은 현실적으로 무리니까, 두 가지 방안을 적절히 섞어 써야겠다는 결론을 낼 수밖에 없었다.
스토리형 게임이니 꽤 중요한 기능이다. 써가면서 좀 더 폴리싱할 거리가 생긴다면 또 수정해보자. 동행자가 많아지면 어떨라나 싶은 생각이 좀 드는 기능인지라.
맺음 글
아직까지 세 번째 맵에서 지지부진하다. 맵을 어떻게 구성할지도 아직 완전하지 않은데, 하나 하나 생각나는대로 채워나가다 보면 괜찮을 것이다. 아마도..
이런 진행도로 정말 괜찮을까. 걱정도 되고 새해라서 왠지 게임에 다시 손을 대는 것에 죄책감이 느껴지기도 하고 해서 연초부터 지금까지 게임에서는 손을 떼고 코딩도 하고 운동도 했다. 새해니까. 그래, 새해니까.
매너리즘에서 벗어나야지.