난 조작감이라는 것에 대해 민감하지가 않음.

게이머로써는 이득이라고 생각하는데 개발자로써는 영 좋지 않음...

만드는게 퍼즐게임이라고 해도 조작감은 중요하다.




아무튼 내가 잘 모르는 영역이지만, 그동안 검색하고 고민해본 것들 정리해봄


일단 키를 꾹 누르고 있는 동안의 입력은 별로 고민할게 없음.

그래서 키가 안눌린 상태에서 눌린 상태로 전환되는 순간에 대한 처리만 적을거임





1. 설정에서 속도 조절

플레이어는 설정에서 한칸 이동하는데 걸리는 시간을 조절할 수 있음




2. 이동 트윈 중 입력을 받으면 캔슬하고 즉시 이동 트윈 시작하기

게임의 상태 로직과 시각적 표현 로직을 분리해놓는게 편함.

그리고 이동 트윈은 일정 거리를 이동하는 것이 아니라 목적지를 향하도록 함

그래서 캐릭터가 아직 중간 지점에 있어도 이동을 시작함(약간 사선으로 움직이겠지만)


캔슬은 전체 이동모션의 2/3가 완료되었을 때부터 가능하게 했음

너무 널널하게 하니까 흐물거리는 느낌이 들더라




3. 이동트윈에 이징 적용

키를 눌렀을 때 바로 반응한다는 느낌을 주기 위해서 이동을 시작한 순간의 속도를 더 빠르게 함(내 경우에는 OutQuad)

squeeze and stretch 효과를 적용하면 더 좋음(나는 안넣었음)




4. 인풋 버퍼

소코반에는 인풋버퍼를 크게 줄 필요가 없다.

너무 많으면 생기는 문제점은, 마구잡이로 누른다음 떼면 캐릭터가 계속 계속 움직인다는 점

나는 버퍼 2칸으로 했음.


물론 길게 누르는 입력은 버퍼에 넣을 필요 없음.




5. 인풋버퍼가 차있으면 트윈시간 감소시키기

이동시간 * (0.85 ^ 저장된 입력 수)

이런 식으로 구성해놓으면 연타했을 때 이동시간이 줄어듬(이동 속도가 빨라짐)



6. undo기능을 넣는다면 점점 빠르게 감기도록 할것.




Delayed autoshift 라는 기술도 있던데 입력이 길게 누른 입력으로 간주되는데 필요한 시간을 두는 거임. 이건 소코반에는 안어울리는 것 같아서 제거했음.