피드로 돌아가기
Devlog: How I Generate Levels for The Last Ball
Dev.toDev.to
Backend

역방향 시뮬레이션을 통한 Procedural Generation 레벨 설계

Devlog: How I Generate Levels for The Last Ball

Igor Stepanov2026년 4월 14일6intermediate

Context

수동 설계된 100개의 레벨 외에 무한 모드 구현을 위한 절차적 생성 알고리즘 필요성 제기. 단순 무작위 배치 시 발생 가능한 Unsolvable 레벨 생성 문제와 흑백 공의 상호작용 제약 사항 해결이 핵심 과제.

Technical Solution

  • 정방향 플레이 순서에 따른 Reverse Construction 방식으로 레벨을 설계하여 Solvability 보장
  • Black Ball의 이동 경로와 Offset 기반으로 White Ball의 초기 위치를 역산하는 알고리즘 적용
  • Move History Table을 구축하여 White Ball 배치 시 Black Ball의 과거 경로와 충돌 여부를 검증하는 Validation 로직 구현
  • White Ball이 이전 Move의 화살표에 위치할 경우, 해당 벡터를 따라 위치를 Shift 하는 재귀적 좌표 보정 수행
  • Black Ball의 이동 거리에 가중치를 부여하여 레벨의 복잡도와 재미를 높이는 Weighting 전략 채택

- 절차적 콘텐츠 생성 시 '결과 상태'에서 '시작 상태'로 역산하는 역방향 설계 도입 검토 - 상태 변화 이력을 Table 형태로 기록하여 새로운 요소 배치 시의 유효성을 검증하는 충돌 체크 로직 적용 - 무작위성 기반 생성물에 가중치(Weighting)를 부여하여 사용자 경험의 질적 향상 도모

원문 읽기