한동안 개발을 많이 못해서 벌로 오늘은 좀 많이 구현했다(근데 난 억울해.. 토요일에는 밭 갔다오고 일요일에 SUAPC 연습하러 서울 갔다오고, 어제는 동생 데리고 안과에 하루종일 있었으므로! 3일동안 이동한 거리 400키로는 그냥 넘을거같다. 뭐, 그래도 그동안 이동할 때랑 대기할 때 잠은 푹 잤다). 먼저, 링 ID 17(탐욕), 30(식물), 31(네크로)번을 구현하면서 드디어 0~32번 링을 모두 구현했다. 경축!. 짤에서 앞의 세 개 링이 각각 17, 30, 31번이다. 더불어 오늘은 몬스터 웨이브를 조정하고, 전투 보상을 얻는 것을 구현했으며, 게임 오버 방식을 변경했다.
1) 17번 링은 배치 시 공격력만큼 게임 종료 후 골드 획득량이 늘어난다. 이는 전투가 완전히 종료되었을 때 BattleManager.goldGain값을 curATK%만큼 증가시키게 했다. 또한 curATK * 0.01f + curEFF의 확률로 emeraldGain을 3~5로 바꾼다.
2) 30번 링은 공격방식은 0번 링과 같지만 생성 방식이 독특하다. 최초에는 RP로 생성하지만 이후에는 10초마다 쿨타임이 돌 때만 배치할 수 있으며(대신 이때부터는 RP를 소모하지 않는다), 따라서 deck의 RPText가 plantCoolTime이라는 변수의 값이 되도록 했고(이때 소수점 아래 두번째 짜리까지로 포맷팅했다), 이 문자열이 정확히 "10.00"인 경우에만 가림막을 비활성하여 링을 생성할 수 있게 했다. plantCoolTime은 최초로 30번 링을 생성한 이후 Time.deltaTime값이 매 Update문마다 더해지며 10.0f를 넘지 않는다.
3) 31번 링도 위와 동일한 방식으로 구현했다. 다만 여기는 necroCount라는 변수가 몬스터가 사망할 때마다 하나씩 증가하며, 문자열이 정확히 "20/20"인 경우에만 생성할 수 있다. 포맷팅은 "{necroCount}/20"의 형태를 띈다.
4) 드디어 페이즈변수가 쓰인다. 페이즈가 3인 경우, 생존 몬스터수 = 0이고 더이상 생성할 몬스터 수 = 0이면 전투 종료로 처리하여 몬스터를 처치함으로 얻은 goldGet과 emeraldGet을 실제 플레이어 gold, emerald 값에 더해준다. 페이즈가 1 또는 2인 경우, phase++하고 StartPhase()로 다음 웨이브를 불러온다.
5) 각 페이즈에서 몬스터들의 HP와 생성될 몬스터 개수는 현재 위치한 층인 floor와 phase값에 따라 점차 커지도록 했다. 그리고 페이즈 3일때는 몬스터 웨이브의 중앙, 맨 마지막에 보스몬스터가 나오게 했다.
6) 이제 몬스터가 EndLine에 닿는다고 무조건 전투가 종료되지 않는다. 대신 플레이어가 자체로 HP값을 가져서 endline을 건드릴 때마다 일반몬스터는 1, 보스몬스터는 20만큼 플레이어 HP를 잃도록 했다. 이 값이 0 이하가 되는 순간 게임 오버로 판정한다(현재는 게임 오버 이후의 동작을 전혀 구현하지 않았기 때문에 Time.timeScale = 0으로 하여 게임을 정지시키는것으로 일시적으로 처리했다).
링을 다 구현해두니.. 진짜 뿌듯하다. 벌써 개발 다 한것처럼 느껴진다. (실제로는 안그렇다.. 기분만 그렇다는거지ㅋㅋ 앞으로도 유물, 보스몬스터, 상점, 미스터리 스테이지, 링 제련 등등 구현할 게 많다.) 아참, 일요일에 SUAPC연습하러 서울 갔다 오는 길에 생각난게 있다. 나는 원래 게임이 1층=10스테이지로 두고 스테이지마다 연속적으로 씬이 이어지게 할 생각이었다. 쉽게말하면, 플레이어가 하나의 스테이지를 클리어하고, "다음 스테이지로" 버튼을 누르면 그냥 말그대로 바로 다음 스테이지로 넘어간다(그 스테이지는 전투일수도 있고, 미스터리일 수도 있다). 마치 퍼즐 게임에서나 볼법한 방식이어서, 플레이어의 선택으로 인한 긴장감이란게 없어진달까? 이를 해결하기 위해 어떤 방법이 좋을까 생각해보니 아이작의 번제처럼 하나의 층을 여러개의 방으로 구성하여 플레이어가 시작점에서 보스 방까지 움직이게 만들면 될 것 같다. 즉, 보스방까지 이어지는 경로는 플레이어의 선택이며 그 과정에서 전투를 많이 하여 전투 스펙은 쎄지만 HP가 줄어들었을 수 있고, 반대로 전투를 적게하여 HP는 많지만 스펙이 떨어질 수 있다. 또는 미스터리 스테이지 등을 아껴두었다 다시 방문할수도 있다. 결론이 뭐냐? 내일이랑 내일 모레는 이거 구현한다는거지. 내일은 UI임시로 준비하고 알고리즘을 짤거다. 그리고 임시로 상점과 미스터리 스테이지를 만들어둘 것이다. 내일 모레는 실제로 랜덤 층 생성을 구현하고 이것을 전투 스테이지랑 연결까지 시켜봐야겠다.
- 랜덤한 층 생성 방식 구현
'게임 개발 > Tower of Rings' 카테고리의 다른 글
7/14 - 층 생성, 방 이동, 맵 (0) | 2022.07.15 |
---|---|
7/13 - 랜덤 층 생성 알고리즘 (0) | 2022.07.13 |
7/8 - 링 ID 28, 29, 32번 (0) | 2022.07.09 |
7/7 - 링 ID 25~27번 (0) | 2022.07.08 |
7/3 - 링 ID 22~24번 (0) | 2022.07.04 |