오늘 TIL 의 주제는 트러블 슈팅이다.
위 코드는 10.02일에 만들어 놓은 코드이다.
선인장의 등장 자체를 패턴화 시키기 위해 사용한 방법으로,
for 문과 setTimeout 이 사용되었다.
문제점
1. setTimeout
현재 과제에서는, 전방위적으로 deltaTime을 이용하여 시간의 흐름을 계산하고 있다.
setTimeout 의 ms와는 방식이 다르기 때문에 개별적으로 흘러가는 두 종류의 Time 이
언제 엇나가게 될지 모른다.
실제로, 위의 for문 + setTimeout 의 형태를 유지한 채로, 원하는 박자의 게임 흐름을 구현하려고
했으나, 싱크가 맞지 않아 계속해서 실패했다.
해결방안
우선 createCactus 의 값을 초기 상태로 돌려주었다.
한 번의 createCactus 실행으로 패턴을 형성하는게 아니라,
createCactus 자체를 여러번 실행하게 만들어 보려고 한다.
update 에서 받고있던 deltaTime 과,
간이 인덱스 (?) 를 확용해서 일종의 유사 반복문을 구현해 보았다.
가독성이 좋지 않지만, 간단하게 해석하면,
최초 1600 rhythm 이 될 때 까지 대기 ( 1프레임 당, deltaTime*gameSpeed 만큼 증가 )
1 비트에 200 rhythm 기준으로 셋팅
pattern [0] 값이 0 인 경우, 선인장 생성하지 않음
pattern [0] 값이 0 이 아닌 경우, 선인장 생성 ( 효과음도 출력 )
patternIndex ++ 을 통해, 다음엔 pattern[1] 값 참조
pattertnIndex 를 ++ 해줘서 다음 1400 -> 1600 rhythm 이 되면 두번 째 index 패턴 실행
pattern.length 는 반드시 8이기 때문에,
8까지 모두 실행했으면, 새로운 패턴을 선택한다.
cactus_pattern 또한 수정했다.
pattern 0은 선인장이 등장하지 않는 값,
1은 선인장이 나오는 값 이다.
의도대로 박자가 잘 맞게 되었다.
아이템 획득 속도에 대한 검증
클라이언트 조작을 통해 아이템을 무분별하게 등장시켜 획득 할 수 있다.
간단하게, 이전 아이템 획득 시간과 현재 획득한 아이템의 획득 시간을 비교하여
비 정상적으로 빠른 속도로 아이템을 습득할 경우, fail을 반환하도록 해 보자.
해당 코드는, 아이템 획득 시간과 점수의 합에 대한 검증이다.
해당 아이템을 획득하기 이전에 획득한 아이템의 획득 시간과 점수의 합을 비교하는 코드이다.
문제점
위 코드는 스테이지 점수 획득 검증의 형태를 따라한 것인데,
처음 게임 시작할 때와 첫 아이템 습득 시에는
items 가 빈 배열이기 때문에, currentItemId 를 찾을 수 없게 된다.
해결 방법
본문에 나온것 처럼, if 문을 사용하여, currentItemId 값이 존재할 때, (items 가 빈 배열이 아닐 때)
에만 해당 검증을 진행하도록 했다.
'내일배움캠프' 카테고리의 다른 글
24.10.10 TIL 타워 디펜스 프로젝트 (0) | 2024.10.11 |
---|---|
24.10.07 TIL 데이터 베이스 정규화 (0) | 2024.10.07 |
24.10.02 TIL 리얼타임 과제 (0) | 2024.10.02 |
24.10.01 TIL 리얼타임 과제 (0) | 2024.10.01 |
24.09.30 TIL 리얼타임 과제 (0) | 2024.09.30 |