흥미로운 점은 실제로 엔진이 가장 많은 움직이는 부품을 갖고 있지만, 코드에서는 오히려 자동차 시뮬레이션 전체 중에 가장 단순한 부분임을 말하고 싶음. 엔진의 핵심 역할이 토크 계산기이기 때문임. 여러 입력을 받아 회전 토크라는 하나의 출력만 내는 블랙박스의 느낌임. AngeTheGreat의 엔진 시뮬레이터 비디오 시리즈를 꼭 추천하고 싶음. 실시간으로 동작할 정도로 최적화되어 있고, 실제 같은 엔진 소리까지 만들어내는 걸 보면 정말 놀라움을 느낌. AngeTheGreat 엔진 시뮬레이터 영상 참고
게임 Automation은 엔진 빌더/시뮬레이션이 매우 깊이 있게 구현되어 있음. 각종 엔진 실험이 정말 재미있으며, 사운드 시뮬레이션 부분도 AngeTheGreat의 영상에서 다뤄지는 개념을 일부 차용하고 있음
Houdini에서 큐브를 애니메이션하는 클래식 예시가 떠오름. 실시간 내연기관 시뮬레이션에서 예상밖의 일이 벌어지는 재미가 있음. Houdini 큐브 애니메이션 예시
내가 프로그래밍을 시작하게 된 계기는 아버지가 BASIC으로 엔진 시뮬레이터를 작성하시는 것이었음. 기계공학 엔지니어였던 아버지는 여러 엔진 설계의 토크 곡선을 비교하고 싶어했음. CIRCLE과 LINE 명령어로 피스톤, 크랭크 어셈블리, 크랭크샤프트의 1초 미만 프레임으로 움직이는 와이어프레임을 그려낼 때, 컴퓨터로 무언가를 그리고 움직일 수 있다는 사실이 내게 충격을 줬음. 이 분이 더 나은 레이싱카 사운드를 만들기 위해 같은 일을 했다는 사실이 정말 인상적임
EV 모터는 실제로 매우 단순하지 않음? 엔진은 작은 폭발을 활용해서 토크를 만드는 것이 비싸고 복잡함. 그래서 게임 속 대부분의 자동차가 EV처럼 움직이는 게 아닌가 궁금함. 혹은 ICE(내연기관)를 더 정확하게 시뮬레이션하지 않는다면 말임
내가 Army of Two에서 차량 시뮬레이션 전체를 담당했었음. 이 글은 좋은 입문서임. Pacejka의 타이어 모델과 트랜스미션 디퍼렌셜을 적용해서 큰 도움이 되었음. 이 외에도 안티롤바 물리 시뮬레이션과 서스펜션이 “재미있는” 운전감을 만들어주는 데 엄청 중요하다는 점이 의외임. 이게 빠지면 주행이 미끄럽고 몰입이 어려워짐. 데모 영상에도 그 느낌이 있음. 안티롤바와 서스펜션을 구현하지 않으면 차가 쉽게 전복되어서, 타이어 미끄러짐이나 표면 마찰 설정만 자꾸 만지작거리게 되는데, 오히려 운전 경험이 나빠짐
이 정보 진짜 고마움! 안티롤바가 기초 모델에서 그 정도로 중요하다는 건 몰랐음. 관련 내용을 더 공부하고, 잘 구현되면 글에도 업데이트할 계획임
최근 내 차 서스펜션 쪽에 문제가 생겨서 ‘재미없는 운전’을 직접 체험하게 됐음. 이 말에 더 공감이 생김
이 내용이 Flightle 게임을 만들면서 내가 직접 깨달은 것과 매우 비슷함. 모바일용 횡스크롤 비행 시뮬레이터를 했는데 비행기 움직임이 너무 어색해서, 분노에 차 “이게 뭐가 어렵지?” 싶어 직접 만들기 시작함. 비행 원리 공부를 하다보니, 적절한 추상화 레벨이 중요함을 알게 됨. 너무 비현실적이면 재미 없고, 너무 사실적이면 플레이 밸런싱이 어려움. Flightle 링크
이미 댓글 수정하기엔 늦었지만, 자세한 경험 정리를 따로 글로 모아봤음. 사이드스크롤 비행 시뮬레이터 제작기 봐주길 바람. 참고로, 나중에 비행기를 점 형태에서 두 날개가 막대기로 연결된 구조로 바꿔봤는데, 재미있게 튜닝하는 데 고생 엄청 했음. 기술 있는 사람이라면 더 잘 했을 것 같음
게임 재미있게 즐겼음. 데스크톱 사용자라면 마우스 스크롤 휠로 슬라이더 조작하게 하면 어떨지 제안하고 싶음
예전에 iOS용으로 차량과 드리프트를 시뮬레이션하는 게임을 만든 적 있음. SpriteKit 기반이었지만, 2D 게임 엔진이면 어디서든 쉽게 구현 가능함. 기본 아이디어는 앞에 바퀴 두 개를 핀 조인트로 사각형 차체에 연결하고, 바퀴에 힘을 가하는 방식임. 힘의 각도는 다음과 같이 계산함:
x = force * cos(bodyRotation + wheelRotation)
y = force * sin(bodyRotation + wheelRotation)
여기에 스키드 파티클도 추가함. 드리프트는 바퀴와 차체 댐핑 값을 조절하며 구현했음. Drift Mania Infinite Car Racer 앱
게임 정말 느낌 있음! 즉시 시작되는 점이 마음에 들었음. 스키드 파티클은 실용적임. 비주얼도 좋음. 하지만 내겐 난이도가 너무 높았음. 벽에 부딪혀도 리셋되지 않는 “젠 모드” 같은 걸 추가해주면 더 많이 플레이할 수 있을 것 같음
게임 정말 멋짐. 앱 마켓이 워낙 경쟁이 심한데, 22개나 되는 평가를 받은 게 대단함. 홍보는 어떻게 했는지 궁금함
“이 게임은 놀라운 그래픽을 제공합니다...” 자기 비하적인 유머가 정말 귀여움. 바로 다운로드 중임
이 글은 진심으로 흥미로웠음. 타이어 모델 부분만으로도 여러 번 읽겠음. 시뮬레이션이나 리얼리티 같은 거 다 필요 없이 재미만 위해서라면, 1980년대 아케이드 게임 Super Sprint만한 게 없음. Super Sprint 게임 정보
글 자체는 멋지지만, 서두 부분이 약간 혼란스러웠음. 자동차가 게임에서 다양한 비현실적 경험을 제공한다고 말하는데, 총기는 그렇지 않다고 주장하는 점에 의문이 듦. 사실 게임에서는 다양한 비현실 총기가 넘쳐남. 게다가, 우리가 자동차 운전에 대한 기대를 직접 경험이 아니라 미디어나 문화적 간접 경험에서 얻는다고 주장하는데, 오히려 총기에 더 해당하는 이야기 아님? 점프 같은 것도 게임에서 매우 다양한 방식으로 처리되는데, 점프에 대한 내 기대는 실제 ‘점프해본 경험’에서 오는 게 훨씬 강한 편임
FPS 게임 제작 경험이 많지 않은 듯함. 실제 총기는 게임 속 경험과 다름. 게임이 실제 총기와 똑같았으면 훨씬 재미없고 답답했을 것임. 레이싱 게임도 마찬가지로, 재미를 위해 현실을 적당히 비틀어야 함
이 주제는 ‘리얼리즘’이 아니라 ‘그럴듯함(베리시밀리튜드)’의 문제라고 생각함. 플레이어가 ‘믿을 수 있는’ 경험을 만드는 게 중요함. 게임 속 총기는 실제와 다르지만, 힘 있고 위협적으로 보이는 판타지를 우선함. 점프 역시 현실적 근거는 없지만, 게임 목적에 가장 잘 어울리는 형태로 디자인됨. 반면, 자동차처럼 물리적 사실성과 시스템화가 가능한 영역에서는 현실적 묘사를 지향하며, 산업계 시뮬레이션과 비교할 수 있을 정도임. 그러나 인간 움직임, 경제 시스템, 전투 흐름 등은 그 정도 현실적 접근이 어렵기 때문에 훨씬 만화적인 표현이 많음. 게임 디자이너는 플레이어 기대와 전체 게임 목표에 부합하는 방향으로 적절한 절충을 해야 함. 너무 자세한 리얼리즘만 추구하다 전체 구조를 망치는 것은 흔한 함정임
FPS 예시는 급하게 무대에서 떠올렸던 것인데, 곰곰히 생각해보니 좋은 예시는 아님을 깨달음. 의견 지적 고마움
언덕, 경사로, 서스펜션 같은 요소가 빠진 것 같음. Unreal Engine에는 아주 단순한 차량 데모도 있고, 실제 서스펜션 모델이 있는 데모도 존재함
발표와 글 마지막 부분에 실제 엔진 현황을 보여주는 짧은 영상이 있고, 영상에는 언덕과 경사로 등 다양한 지형이 구현되어 있음. 발표에서는 단순한 평면 그리드를 사용함. 서스펜션도 구현되어 있지만, 자동차 전용 특수 문제라기보단 단순히 무게를 버틸 수 있게 만드는 일반적인 기능이라, 발표 분량과 흐름상 깊게 다루지 않았음
Wassim이 QA에서 언급했듯, 서스펜션은 물리 엔진이 알아서 처리해주고, 그 영향이 타이어 부하에 반영되어 타이어 힘에도 자연스럽게 영향을 주는 구조임
Rocket League의 차량 물리에 관한 좋은 GDC 강연이 있음. Rocket League 물리 강연 참고. 참고로, 본인은 Rocket League에서 게임 클라이언트는 아니고 다른 부분을 담당했던 팀원이었음
Hacker News 의견
흥미로운 점은 실제로 엔진이 가장 많은 움직이는 부품을 갖고 있지만, 코드에서는 오히려 자동차 시뮬레이션 전체 중에 가장 단순한 부분임을 말하고 싶음. 엔진의 핵심 역할이 토크 계산기이기 때문임. 여러 입력을 받아 회전 토크라는 하나의 출력만 내는 블랙박스의 느낌임. AngeTheGreat의 엔진 시뮬레이터 비디오 시리즈를 꼭 추천하고 싶음. 실시간으로 동작할 정도로 최적화되어 있고, 실제 같은 엔진 소리까지 만들어내는 걸 보면 정말 놀라움을 느낌. AngeTheGreat 엔진 시뮬레이터 영상 참고
게임 Automation은 엔진 빌더/시뮬레이션이 매우 깊이 있게 구현되어 있음. 각종 엔진 실험이 정말 재미있으며, 사운드 시뮬레이션 부분도 AngeTheGreat의 영상에서 다뤄지는 개념을 일부 차용하고 있음
Houdini에서 큐브를 애니메이션하는 클래식 예시가 떠오름. 실시간 내연기관 시뮬레이션에서 예상밖의 일이 벌어지는 재미가 있음. Houdini 큐브 애니메이션 예시
내가 프로그래밍을 시작하게 된 계기는 아버지가 BASIC으로 엔진 시뮬레이터를 작성하시는 것이었음. 기계공학 엔지니어였던 아버지는 여러 엔진 설계의 토크 곡선을 비교하고 싶어했음. CIRCLE과 LINE 명령어로 피스톤, 크랭크 어셈블리, 크랭크샤프트의 1초 미만 프레임으로 움직이는 와이어프레임을 그려낼 때, 컴퓨터로 무언가를 그리고 움직일 수 있다는 사실이 내게 충격을 줬음. 이 분이 더 나은 레이싱카 사운드를 만들기 위해 같은 일을 했다는 사실이 정말 인상적임
EV 모터는 실제로 매우 단순하지 않음? 엔진은 작은 폭발을 활용해서 토크를 만드는 것이 비싸고 복잡함. 그래서 게임 속 대부분의 자동차가 EV처럼 움직이는 게 아닌가 궁금함. 혹은 ICE(내연기관)를 더 정확하게 시뮬레이션하지 않는다면 말임
내가 Army of Two에서 차량 시뮬레이션 전체를 담당했었음. 이 글은 좋은 입문서임. Pacejka의 타이어 모델과 트랜스미션 디퍼렌셜을 적용해서 큰 도움이 되었음. 이 외에도 안티롤바 물리 시뮬레이션과 서스펜션이 “재미있는” 운전감을 만들어주는 데 엄청 중요하다는 점이 의외임. 이게 빠지면 주행이 미끄럽고 몰입이 어려워짐. 데모 영상에도 그 느낌이 있음. 안티롤바와 서스펜션을 구현하지 않으면 차가 쉽게 전복되어서, 타이어 미끄러짐이나 표면 마찰 설정만 자꾸 만지작거리게 되는데, 오히려 운전 경험이 나빠짐
이 정보 진짜 고마움! 안티롤바가 기초 모델에서 그 정도로 중요하다는 건 몰랐음. 관련 내용을 더 공부하고, 잘 구현되면 글에도 업데이트할 계획임
최근 내 차 서스펜션 쪽에 문제가 생겨서 ‘재미없는 운전’을 직접 체험하게 됐음. 이 말에 더 공감이 생김
이 내용이 Flightle 게임을 만들면서 내가 직접 깨달은 것과 매우 비슷함. 모바일용 횡스크롤 비행 시뮬레이터를 했는데 비행기 움직임이 너무 어색해서, 분노에 차 “이게 뭐가 어렵지?” 싶어 직접 만들기 시작함. 비행 원리 공부를 하다보니, 적절한 추상화 레벨이 중요함을 알게 됨. 너무 비현실적이면 재미 없고, 너무 사실적이면 플레이 밸런싱이 어려움. Flightle 링크
이미 댓글 수정하기엔 늦었지만, 자세한 경험 정리를 따로 글로 모아봤음. 사이드스크롤 비행 시뮬레이터 제작기 봐주길 바람. 참고로, 나중에 비행기를 점 형태에서 두 날개가 막대기로 연결된 구조로 바꿔봤는데, 재미있게 튜닝하는 데 고생 엄청 했음. 기술 있는 사람이라면 더 잘 했을 것 같음
게임 재미있게 즐겼음. 데스크톱 사용자라면 마우스 스크롤 휠로 슬라이더 조작하게 하면 어떨지 제안하고 싶음
예전에 iOS용으로 차량과 드리프트를 시뮬레이션하는 게임을 만든 적 있음. SpriteKit 기반이었지만, 2D 게임 엔진이면 어디서든 쉽게 구현 가능함. 기본 아이디어는 앞에 바퀴 두 개를 핀 조인트로 사각형 차체에 연결하고, 바퀴에 힘을 가하는 방식임. 힘의 각도는 다음과 같이 계산함: x = force * cos(bodyRotation + wheelRotation) y = force * sin(bodyRotation + wheelRotation) 여기에 스키드 파티클도 추가함. 드리프트는 바퀴와 차체 댐핑 값을 조절하며 구현했음. Drift Mania Infinite Car Racer 앱
게임 정말 느낌 있음! 즉시 시작되는 점이 마음에 들었음. 스키드 파티클은 실용적임. 비주얼도 좋음. 하지만 내겐 난이도가 너무 높았음. 벽에 부딪혀도 리셋되지 않는 “젠 모드” 같은 걸 추가해주면 더 많이 플레이할 수 있을 것 같음
게임 정말 멋짐. 앱 마켓이 워낙 경쟁이 심한데, 22개나 되는 평가를 받은 게 대단함. 홍보는 어떻게 했는지 궁금함
“이 게임은 놀라운 그래픽을 제공합니다...” 자기 비하적인 유머가 정말 귀여움. 바로 다운로드 중임
이 글은 진심으로 흥미로웠음. 타이어 모델 부분만으로도 여러 번 읽겠음. 시뮬레이션이나 리얼리티 같은 거 다 필요 없이 재미만 위해서라면, 1980년대 아케이드 게임 Super Sprint만한 게 없음. Super Sprint 게임 정보
내 노트에 저장해둔 관련 강연 자료들 중 일부를 복사/붙여넣기 함: Hamish Young, ‘Just Cause 4’ 차량 물리 및 타이어 다이내믹 Vehicle Physics and Tire Dynamics in 'Just Cause 4' Jan Erik Steel & Patrick Donnelly, ‘Skylanders’에서의 슈퍼차지드 차량 물리 Supercharged! Vehicle Physics in 'Skylanders' Edward Pereira, 오프로드 과학 관련 강연 The Science of Off-Roading Jared Cone, ‘Rocket League’의 물리학 It IS Rocket Science! The Physics of 'Rocket League' Detailed
글 자체는 멋지지만, 서두 부분이 약간 혼란스러웠음. 자동차가 게임에서 다양한 비현실적 경험을 제공한다고 말하는데, 총기는 그렇지 않다고 주장하는 점에 의문이 듦. 사실 게임에서는 다양한 비현실 총기가 넘쳐남. 게다가, 우리가 자동차 운전에 대한 기대를 직접 경험이 아니라 미디어나 문화적 간접 경험에서 얻는다고 주장하는데, 오히려 총기에 더 해당하는 이야기 아님? 점프 같은 것도 게임에서 매우 다양한 방식으로 처리되는데, 점프에 대한 내 기대는 실제 ‘점프해본 경험’에서 오는 게 훨씬 강한 편임
FPS 게임 제작 경험이 많지 않은 듯함. 실제 총기는 게임 속 경험과 다름. 게임이 실제 총기와 똑같았으면 훨씬 재미없고 답답했을 것임. 레이싱 게임도 마찬가지로, 재미를 위해 현실을 적당히 비틀어야 함
이 주제는 ‘리얼리즘’이 아니라 ‘그럴듯함(베리시밀리튜드)’의 문제라고 생각함. 플레이어가 ‘믿을 수 있는’ 경험을 만드는 게 중요함. 게임 속 총기는 실제와 다르지만, 힘 있고 위협적으로 보이는 판타지를 우선함. 점프 역시 현실적 근거는 없지만, 게임 목적에 가장 잘 어울리는 형태로 디자인됨. 반면, 자동차처럼 물리적 사실성과 시스템화가 가능한 영역에서는 현실적 묘사를 지향하며, 산업계 시뮬레이션과 비교할 수 있을 정도임. 그러나 인간 움직임, 경제 시스템, 전투 흐름 등은 그 정도 현실적 접근이 어렵기 때문에 훨씬 만화적인 표현이 많음. 게임 디자이너는 플레이어 기대와 전체 게임 목표에 부합하는 방향으로 적절한 절충을 해야 함. 너무 자세한 리얼리즘만 추구하다 전체 구조를 망치는 것은 흔한 함정임
FPS 예시는 급하게 무대에서 떠올렸던 것인데, 곰곰히 생각해보니 좋은 예시는 아님을 깨달음. 의견 지적 고마움
언덕, 경사로, 서스펜션 같은 요소가 빠진 것 같음. Unreal Engine에는 아주 단순한 차량 데모도 있고, 실제 서스펜션 모델이 있는 데모도 존재함
발표와 글 마지막 부분에 실제 엔진 현황을 보여주는 짧은 영상이 있고, 영상에는 언덕과 경사로 등 다양한 지형이 구현되어 있음. 발표에서는 단순한 평면 그리드를 사용함. 서스펜션도 구현되어 있지만, 자동차 전용 특수 문제라기보단 단순히 무게를 버틸 수 있게 만드는 일반적인 기능이라, 발표 분량과 흐름상 깊게 다루지 않았음
Wassim이 QA에서 언급했듯, 서스펜션은 물리 엔진이 알아서 처리해주고, 그 영향이 타이어 부하에 반영되어 타이어 힘에도 자연스럽게 영향을 주는 구조임
Rocket League의 차량 물리에 관한 좋은 GDC 강연이 있음. Rocket League 물리 강연 참고. 참고로, 본인은 Rocket League에서 게임 클라이언트는 아니고 다른 부분을 담당했던 팀원이었음
이 글을 읽으며 레이싱 물리학에 관한 좋은 강연이 떠올랐음. Andre Marziali - Physics of Racing