1P by GN⁺ 7시간전 | ★ favorite | 댓글 1개
  • 도시 건설 게임에서 도로 시스템의 사실적 구현은 핵심 요소로, 단순한 시각적 요소를 넘어 구조적 완성도를 결정하는 기반임
  • 기존 게임들은 Bezier 스플라인을 사용해 도로를 표현하지만, 이는 실제 도로의 곡률과 평행성 유지에 한계를 가짐
  • 현실의 도로는 차량의 차축 간 거리와 곡선 제약을 반영해야 하며, Bezier 방식은 오프셋 시 형태가 왜곡되어 비현실적인 곡선을 초래함
  • 이를 해결하기 위해 원호(Circle Arc)클로소이드(Clothoid) 같은 공학적 곡선을 적용하면, 부드러운 곡률 변화와 병렬 오프셋 유지가 가능함
  • 작성자는 이러한 한계를 극복하기 위해 직접 도로 시스템을 구축했으며, 향후 기술적 구현 과정을 공개할 예정임

도로와 패턴의 매력

  • 자연의 질서 속 무질서한 패턴에서 느끼는 만족감을 도로에서도 발견함
    • 개미굴, 벌집, 잎맥처럼 단순한 규칙이 쌓여 복잡한 구조를 만드는 현상에 비유
    • 도로망 역시 인간이 만든 가장 흥미로운 패턴 중 하나로 묘사됨
  • 도시가 사라진 후에도 남을 도로망의 흔적을 상상하며, 그 구조적 아름다움을 강조함

도시 건설 게임과 도로의 진화

  • SimCity 2000부터 Cities: Skylines 2까지, 도로 시스템은 꾸준히 발전해 왔음
    • SimCity 4는 고도와 대각선 도로, SimCity 2013은 곡선 도로, Cities: Skylines는 자유로운 배치와 교차로 구성을 지원
  • 그러나 여전히 곡선의 부자연스러움, 급격한 회전 반경, 비현실적 고속도로 램프 등의 문제가 존재
  • 모드(Mod) 를 통해 현실적인 차선, 표식, 곡선 구현이 가능해졌지만, 여전히 엔진의 근본적 제약을 벗어나지 못함

Bezier 스플라인의 한계

  • Bezier 곡선은 두 점 사이를 부드럽게 연결하는 강력한 수학적 도구로, 대부분의 게임 엔진에서 사용됨
  • 그러나 이 곡선은 오프셋 시 형태와 곡률이 유지되지 않음, 즉 “Bezier 곡선의 오프셋은 Bezier 곡선이 아님”
  • 이로 인해 내측과 외측 곡선의 불일치, 자기 교차, 핀칭(pinch) 현상이 발생
  • 결과적으로 현실의 도로처럼 차량 궤적을 반영한 병렬 곡선을 구현하기 어려움

원호(Circle Arc)와 클로소이드(Clothoid)의 적용

  • 원호는 오프셋 후에도 동일한 형태를 유지하는 완벽한 평행성을 제공
    • 두 원호의 교차 계산은 Bezier보다 훨씬 단순하며, O(1) 의 계산 복잡도로 효율적
    • 서로 다른 반지름의 원호를 연결하면 공학적으로 타당한 도로 형태를 구성 가능
  • 그러나 원호는 곡률이 일정하여, 직선에서 곡선으로 진입 시 측면 가속도의 급격한 변화가 발생
  • 이를 보완하기 위해 클로소이드(Clothoid) 가 사용됨
    • 곡률이 점진적으로 증가해 자연스러운 조향과 승차감을 제공
    • 수학적으로 복잡하지만, 고속 주행 도로 설계에 필수적
  • 도시 내 교차로처럼 저속 구간에서는 원호 기반 설계로도 충분한 현실감을 확보 가능

직접 도로 시스템을 만든 이유

  • 대부분의 플레이어는 교차로 곡률의 정확성에 큰 관심이 없지만, 개발자는 호기심과 기술적 도전으로 이를 탐구함
  • 기존 상용 게임의 구현 수준은 높지만, 인디 개발자가 접근할 수 있는 자료나 에셋은 부족
  • 단순한 격자형 도로 대신, 더 정교하고 공유 가능한 시스템을 만들기 위해 자체 구현을 진행
  • 다음 글에서 기술적 세부 구현 과정을 공개할 예정이며, 구독을 통해 업데이트를 받을 수 있음
Hacker News 의견들
  • 도시 건설 게임에서 도로가 핵심이라 말한 글을 보고, 나는 도시계획가들이 악몽 꾸는 이유를 알 것 같음
    도시의 기반은 자동차용 도로(road) 가 아니라, 보행자·자전거·대중교통이 함께 쓰는 거리(street)
    관련 개념으로 Stroad 문서를 참고할 만함

    • 두 단어의 차이를 생각해본 적 없었는데, Wikipedia 설명을 보니 납득됨
      도로는 운송(transportation) 중심이고, 거리는 공공 상호작용(public interaction) 중심임
      그래도 나는 원문 인용이 과하게 비판받는다고 느낌. 현대 사회는 운송 수요가 엄청나서, 도시 안팎의 도로망이 도시의 뼈대를 이룸
      1900년대 이전엔 수로 근처에만 도시를 지을 수 있었지만, 지금은 도로 덕분에 내륙에서도 가능해졌음
    • 샌프란시스코의 거리들도 19세기부터 토목공학 원리로 설계된 것임
      현실적인 도시를 만들려면 가짜 도로 대신 이런 접근이 맞다고 생각함
    • 나도 보행자 중심 인프라(자전거 도로, 보행로, 대중교통)를 좋아하지만, 도로는 본래 마차와 자동차를 위해 설계된 게 사실임
      가끔 상상함 — 만약 오직 자전거와 도보만 사용하는 문명이 도시를 설계한다면 어떤 모습일까 하는 생각임
  • 저자가 좋아할 만한 게임이 있음. 바로 Junxions라는 샌드박스 게임으로, 도로 교차로를 만드는 데 집중함
    관련 서브레딧은 여기임. 이 게임이 도로 설계 욕구를 잘 채워줄 듯함

    • 나는 이 도로 시스템의 제작자임. 사실 아직 뭘 할지 확실히 모르겠음 — 에셋으로 낼지, 게임으로 만들지 고민 중임
      Junxions도 좋아하지만 내 접근법은 다름. 그쪽은 노드 기반 베지어 구조를 쓰지만, 나는 도로 세그먼트 간 충돌로 교차점을 자동 생성함
      다음 블로그 글에서 두 접근의 차이를 자세히 다룰 예정임
  • “교차로 모서리 반경에 신경 쓰는 사람은 1%뿐”이라는데, 나는 바로 그 1% 에 속함

  • 베지어 곡선으로 도로를 정의하는 건 쉽지 않음
    특히 급회전 구간에서는 시각적으로 보기 안 좋은 결과가 나옴
    나도 작년에 Azoth 프로젝트를 하며 같은 문제를 겪었고, 단순화된 해결책을 찾았음
    참고: Azoth 저장소, 베지어 예시

  • 게임에서 당연하게 보이는 요소들이 사실은 엄청난 노동과 설계의 결과임
    예를 들어 도로는 플레이어가 자세히 보지 않지만, 이상하게 보이면 바로 어색함
    최근 Kingdom Come 2를 하며 느꼈음 — 현실처럼 자연스러워 보이지만, 그 모든 디테일은 개발자들의 땀과 눈물로 만들어진 것임
    그래서 게임 산업이 크런치에 시달리는 게 이해됨

    • 게임 속 도 복잡한 문제임. 실제보다 30%는 크고, 대부분 슬라이딩 도어를 쓰는 이유가 물리 처리 때문임
      관련 글: The Door Problem, IGN 기사
  • 이런 글이 있어서 Hacker News를 계속 보게 됨. 저자에게 계속 글 써달라고 전하고 싶음

    • 저자임. 관심 가져줘서 고마움. 사실 HN을 몰랐는데, 트래픽이 몰려와서 알게 됨
      비슷한 관심사를 가진 사람들이 많아 앞으로 더 활동할 생각임
  • 이 글은 정말 내 취향임. 도로에 대한 집착이 나도 똑같음
    도시는 혈관처럼 도로로 구성되고, 유럽·아시아의 마을길은 발자국 경로 위에 세워진 이야기임
    반면 내 고향의 시골길은 직선으로 뻗다가 농부가 땅을 안 팔면 갑자기 꺾임
    식민지 시기나 계획도시 일부만 격자형이고, 대부분은 강의 흐름이나 지형에 따라 방향이 달라짐
    이런 격자 간 교차 지점이 도시에서 가장 아름답고 건축적으로 흥미로운 부분임
    도시 성장의 변화를 시뮬레이션하는 게임이 있다면 정말 좋겠음

    • 나도 역사 기반 도시 건설 게임이 격자형일 때 몰입이 깨짐
      실제 도시는 개미집처럼 자연스러운 질서 속 복잡성으로 발전했음
      이 주제는 나중에 따로 글로 써보고 싶음
  • 다음 게임 Canalpunk에서는 베지어 스플라인을 계속 사용할 예정임
    경로가 자기 교차할 때 생기는 재난 시스템이 흥미로울 것 같음

  • 나는 철도 트랙 에디터에서 클로소이드(curve transition) 를 구현하려고 집착 중임
    빈 공간에선 쉽지만, 트랙을 연결할 때가 어렵음
    예전에 만든 설명 자료가 있음: Euler Spiral Explanation

    • 궁금한 점이 있음. 왼쪽에서 오른쪽으로 두 갈래로 갈라지는 선이 있을 때, 클로소이드를 뒤로 연장하면 파형이 교차하지 않을까?
      그 교차점을 이용해 새로운 스플라인을 보간할 수 있을지 실험해보고 싶음
      참고 그림: 시각 예시
    • 설명이 정말 자세해서 저장해둠. 클로소이드 연결이 그렇게 어려운 줄 몰랐음. 직접 구현은 아직 엄두가 안 남
  • 로마인처럼 직선 도로로 만들면 간단함 :-)
    물론 로마인들은 사유지 따위 신경 안 썼음. 내가 사는 영국 Lincolnshire엔 아직도 로마 도로가 쓰이고 있음
    RAF Scampton 활주로 확장 때만 예외적으로 도로를 꺾었음

    • 사실 로마인들도 사유지 문제를 겪었음. 예를 들어 두 번째 수도교는 지주 Crassus가 땅을 내주지 않아 지연됐음
      자세한 내용은 Roman aqueduct 참고
    • 내 지역의 도로는 중세부터 교회탑과 교회탑을 잇는 구조
      지금도 도로 중앙선이 교회탑 방향과 완벽히 일치함. 교회 중심의 토지 개념이 로마와 닮았음