Ubuntu에서 OpenTTD를 빌드하는 방법
Ubuntu 20.04(16.04, 18.04 동일)에서 OpenTTD를 빌드하는 방법이다. 자세한 것은 COMPILING.md 파일을 참고하기 바란다.
-
빌드에 필요한 Dependency를 설치한다.
cmake
와make
,g++
는 기본적으로 있어야 하고, 그 외 추가적으로 빌드에 필요한 라이브러리와 그 상세 용도는 아래와 같다.- zlib: 오래된(0.3.0-1.0.5) 세이브 파일, 다운로드한 콘텐츠, 높이맵의 압축(해제) 용도
- liblzo2: 오래된(0.3.0 이전) 세이브 파일 압축(해제) 용도
- liblzma: 세이브 파일(1.1.0 이후) 압축(해제) 용도
- libzstd: 멀티플레이 세이브 파일 압축(해제) 용도
- libpng: 스크린 샷을 생성하고 높이맵을 생성하는 용도
- libfreetype: 폰트를 불러오고 렌더링하기 위한 용도
- libfontconfig: 폰트를 찾고 실제 폰트의 이름을 가져오는 용도
- libicu: 오른쪽에서 왼쪽으로 쓰는 글(e.g. 아랍어, 페르시아어 등)이나 문자열의 자연 정렬(리눅스만 해당) 용도
- libsdl2: 하드웨어 접근(비디오, 사운드, 마우스) (Windows나 MacOS에서는 불필요)
- libcurl: 콘텐츠 다운로드
다른 건 몰라도 liblzma는 있어야 최근 사용되는 대부분의 세이브 파일을 읽을 수 있다.
sudo apt install -y cmake pkg-config g++ zlib1g-dev liblzo2-dev liblzma-dev libpng-dev libfreetype6-dev libfontconfig-dev libicu-dev libsdl2-dev fcitx-libs-dev libzstd-dev libcurl4-openssl-dev -y
-
OpenTTD Github에서 저장소를 클론해온다
git clone https://github.com/OpenTTD/OpenTTD.git
- JGR's Patch Pack을 가져오려면
git clone https://github.com/JGRenisson/OpenTTD-patches.git ./OpenTTD
를 위 명령어 대신 실행한다.
- JGR's Patch Pack을 가져오려면
-
OpenTTD 폴더로 진입하고 build 폴더를 만든 다음,
cmake ..
와make
명령어를 실행한다cd OpenTTD mkdir build && cd build cmake .. make
- cmake의 버전은 3.12.4 이상이 필요하므로 https://kalten.tistory.com/267 을 참고하여 최신 버전으로 업데이트
-
Let's Encrypt 인증서 발급 (certonly)
Let's Encrypt 인증서는 무료로 사용할 수 있는 인증서로, 무료가 장점이지만 3개월마다 재발급해주어야 하는 것이 단점이다. 재발급은 crontab과 같은 스케쥴러를 이용하면 되므로 결국 우리는 무료+기한없이 SSL 인증서를 웹 서버에 사용할 수 있다. 여기에서는 Let's Encrypt 인증서를 인증서만 발급(certonly)받아 Apache ...
-
Windows에서 OpenTTD를 빌드하는 방법
Windows 10에서 OpenTTD를 빌드하는 방법이다. 자세한 것은 COMPILING.md 파일을 참고하기 바란다. Windows에서 OpenTTD를 빌드하기 위해서는 Visual Studio 2017 이상이 필요하다. 2022년 기준으로 Visual Studio 2022가 나와있으므로 그걸 설치한다. Visual Studio Community 버전 ...
-
블로그 마이그레이션
블로그를 jekyll에서 Laravel로 마이그레이션했습니다. jekyll도 훌륭한 도구이지만 아무래도 자주 포스팅하는 입장이 아니다보니 포스트를 Markdown으로 작성한 뒤에 bundle exec jekyll build를 입력하고 Github에 push 하는 것이 여간 귀찮은 일이 아니었습니다. 2021/12/19에 simplePHPRouter를 이용 ...
-
[PHP] 참조(reference)를 이용해서 재귀함수 없이 row data를 계층형 배열로 가공
카테고리나 답댓글이 있는 댓글 등과 같이 계층형 구조를 가져야 하는 경우, 보통 각 row data를 [no, name, parent, ...] 형식으로 저장하는데 이를 참조(reference)를 이용해서 재귀함수를 사용하지 않고 계층형 배열로 가공하는 방법이다. 예를 들어 아래와 같은 데이터를: //no name parent [1, ...