방문자

오늘
—
어제
—
누적
—

불러오는 중

게임 개발 · 기술 동향 · 팀 블로그MIRO
헤드라인

성장하는 도시

폭발을 넓힐까, 폭탄을 더 실을까

공개 빌드에서 폭격기가 도시를 공격하는 장면
공개 빌드에서 폭격기가 도시를 공격하는 장면

모은 골드를 다음 공격에 쓰기

도시를 파괴해 얻은 골드로 폭격 범위와 폭탄 수를 각각 강화하도록 만들었습니다. 범위가 넓어지는 것과 같은 경로에 폭탄이 더 떨어지는 것은 공격 결과가 다르므로, 두 강화를 별도 버튼과 레벨로 나눴습니다.

상단의 범위 강화 첫 가격은 300G, 폭탄 수 강화는 450G입니다. 각 강화는 최대 10레벨이며, 다음 가격은 단계별 1.7배를 기준으로 50G 단위로 올림합니다. 잔액이 부족하거나 최대 레벨에 도달하면 구매 버튼을 비활성화합니다.

공개 빌드에서 폭격기가 도시를 공격하는 장면

별도 공개 빌드의 폭격 장면입니다. 이 화면만으로 강화 버튼이나 강화 수치의 적용을 검증한 것은 아닙니다.

누적 점수와 쓸 수 있는 잔액을 분리했습니다

기존 파괴 점수인 Score와 사용할 수 있는 Gold를 나눴습니다. 파괴 보상은 양쪽에 더하지만, 강화 구매에서는 Gold만 차감합니다. 얼마를 파괴했는지 보여 주는 누적 기록이 구매 때문에 줄어들지 않도록 한 것입니다. 새 도시를 시작하면 잔액과 강화 레벨을 함께 초기화합니다.

범위는 레벨당 기본 반경의 15%씩 늘어납니다. 폭탄 수는 레벨당 일반 폭탄 2발, 핵폭탄 1발을 더합니다. 계산 기준을 별도로 두어 어느 강화를 샀는지 결과를 구분할 수 있게 했습니다.

출격한 비행기의 수치는 바꾸지 않습니다

범위와 폭탄 수는 비행기가 출격할 때 고정합니다. 비행 도중 강화해도 이미 출격한 기체에는 적용하지 않습니다. 한 번의 공격 중간에 규칙이 바뀌지 않도록 하기 위해서입니다.

카메라는 자동 거리 계산에 0.8을 적용하고, 비행기의 긴 진입·이탈 경로 때문에 도시가 지나치게 작게 보이던 구도 계산을 조정했습니다. 이 값은 실제 화면에서 측정한 확대율이 아닙니다.

구매 규칙은 확인했고, 플레이 확인은 남았습니다

독립 시나리오 101개에서 잔액 부족 시 무변경, 정확한 차감, 누적 점수 보존, 레벨 상한, 출격 시 수치 고정 등을 검사했습니다. Unity 참조 컴파일과 씬의 버튼 연결 검사도 통과했습니다.

당시 실제 Play와 웹 실행은 하지 않았습니다. 버튼 가독성, 강화 체감, 비행 중 구매의 표시, 가까워진 카메라에서 기체가 보이는지는 실제 실행으로 확인해야 합니다. 계산과 연결이 통과했다는 결과와 화면 검증은 분리해 남깁니다.

구매 처리를 한곳에 모으기

UI에서 골드 부족을 표시하더라도 실제 구매 함수가 같은 조건을 확인해야 합니다. 편집 시 읽은 공개 소스의 CitySimulation.BuyRadiusUpgrade는 아래처럼 비용을 검사한 뒤 잔액과 레벨을 함께 바꿉니다. 현재 공개 커밋의 원문을 줄바꿈만 정리한 발췌입니다.

public bool BuyRadiusUpgrade()
{
    long cost = Upgrades.RadiusCost;
    if (cost <= 0 || Gold < cost) return false;
    Gold -= cost;
    Upgrades.RaiseRadius();
    return true;
}

비용이 0 이하인 최대 단계와 잔액 부족은 모두 상태를 바꾸기 전에 반환합니다. 성공한 경우에만 골드를 차감하고 레벨을 올립니다. 이 함수에는 누적 Score를 감소시키는 처리가 없어, 구매가 누적 파괴 기록을 지우지 않는다는 규칙을 코드에서도 확인할 수 있습니다.

이 발췌만으로 버튼 표시나 출격 시 수치 고정까지 검증되는 것은 아닙니다. 구매 규칙과 화면 갱신, 비행기에 전달되는 값은 서로 다른 확인 지점입니다. 이 구분을 유지하면 골드가 줄었는데 화면 가격이 남는 문제와 이미 출격한 기체가 바뀌는 문제를 나눠 추적할 수 있습니다.

작업 근거

댓글

이 글에 대한 생각을 남겨 주세요.

댓글 삭제

헤드라인

같은 카테고리의 글

프로젝트 개발일지 전체 보기 ↗