# 3쿠션 당구 물리 시뮬레이터 (Billiards)

이 프로젝트는 Typescript로 작성된 정교한 당구 물리 엔진을 브라우저에서 구현한 오픈 소스 프로젝트입니다.

## 온라인 데모

데모는 모든 주요 데스크톱 및 모바일 브라우저에서 실행되며 WebGL을 사용합니다.

- 나인볼 ⬀ - 브레이크 샷을 기록하고 리플레이 링크를 친구들과 공유하세요.
- 3쿠션 당구 ⬀ - 물리 엔진과 플레이어의 기량을 시험하는 궁극의 테스트입니다. 입문자라면 비기너 모드 ⬀를 추천하며, 특정 배치 연습을 위해 연습 모드 ⬀를 활용해보세요.
- 스누커 ⬀ - 리더보드에 첫 147점 기록이 올라오기를 기다리고 있습니다.
- 8볼 ⬀ - 고해상도 모드로 즐겨보세요!
- 봇과의 대결: Claw ⬀ 및 TheFarJaw ⬀.
- 2인 플레이 온라인 로비 ⬀ - nchan을 사용한 온라인 대전.
- 리더보드 ⬀ - 최고 득점 기록을 확인하세요.
- 물리 엔진 분석 ⬀ - 물리 상수를 조정하며 궤적을 확인하세요.
- 예술구 및 연습 ⬀ - 트릭 샷을 설정하고 연습하세요.
- 3쿠션 물리 튜닝 ⬀ 및 파라미터 최적화 ⬀.

## 주요 기능

- 백스핀(끌어치기), 사이드스핀(회전), 쿠션 반발력이 정교하게 모델링되었습니다.
- WebGL을 사용하여 모바일, 리눅스, 맥, 윈도우의 모든 현대적 브라우저에서 구동됩니다.
- 브레이크 샷 기록 및 재생 기능을 지원합니다.
- nchan 엔진 서버를 통한 온라인 2인 대전 모드를 지원합니다.
- 나인볼, 스누커, 3쿠션 당구 규칙이 구현되어 있습니다.
- 라즈베리 파이 4와 같은 저사양 기기에서도 원활하게 작동하도록 최적화되었습니다.

## 참고 자료

공의 역학, 쿠션 반발력, 최대 회전량 등에 대한 학술적 논문을 바탕으로 정밀하게 설계되었습니다. Han (2005), Mathavan (2010), Stronge의 충격 역학 모델 등을 참조하였습니다.

## 조작 방법

마우스, 터치 스크린 또는 키보드를 사용하세요:

조작 | 설명
--- | ---
`⇦` `⇨` | 조준 (Aim)
`Control` + `⇦` `⇨` | 정밀 조준
`⇧` `⇩` | 상단 회전(밀어치기) 및 하단 회전(끌어치기)
`Shift` + `⇦` `⇨` | 좌우 회전 (사이드 스핀)
`Space` | 타격 - 길게 누르면 파워가 증가합니다.
`A` | 조준 가이드 토글
`M` | 맛세(Massé) 각도 조절
`O` | 카메라 뷰 전환
`F` | 전체 화면
`C` | 채팅
`H` | 도움말
`+` `-` | 카메라 높이 조절
마우스 휠 | 샷 파워 조절
더블 클릭 | 타격

## 개발 현황

2018년부터 현재까지 꾸준히 발전해 오고 있습니다.

2018년 7월
2019년 7월
2021년 3월

모바일 버전 (2023년 8월):

GitHub 프로젝트 페이지에서 더 많은 정보를 확인하세요.