태그 보관물: filesystem

filesystem

Linux 게임에서 자산 파일 찾기 일반적인 방법은 무엇입니까? 저는

개발 중 및 릴리스에서 3D 모델, 텍스처, 사운드 및 스크립트 (예 : Lua 파일)를 저장하는 일반적인 방법은 무엇입니까? 저는 주로 C ++에서 친구들과 게임을 개발하고 있습니다. 프로토 타이핑 단계에서는 GIMP와 함께 C 헤더로 저장된 단일 텍스처 만 있었지만 물론이 방법은 확장 성이 떨어지고 컴파일 시간이 크게 증가합니다.

Windows에서 일반적인 관행은 %PROGRAMFILES%게임 실행 파일이있는 서브 디렉토리에 파일 을 덤프 하여 적절한 트리 구조로 정렬하는 것입니다. 그러나 Linux에서는 그림이 훨씬 더 복잡해 보입니다. 실행 파일은 일반적으로에있는 /usr/bin반면 응용 프로그램은 다른 파일을 저장하며 /usr/share실행 파일을 넣지 않는 것은 매우 나쁜 습관이라고 생각합니다 /usr/bin. 그러나 개발 중 디렉토리 구조는 완전히 다릅니다.

가능한 두 가지 해결책을 생각해 낼 수 있습니다.

  • 실행 파일이 자신과 관련된 자산 파일을 찾도록하고 게임을에 설치하십시오 /opt. 그런 다음에 심볼릭 링크를 배치하십시오 /usr/bin. 개발 중에 자산의 이진에 대한 상대 경로는 배포 중과 동일합니다.
  • 전 처리기 기호로 정의 된 절대 경로를 사용하여 파일에 액세스하십시오. 빌드 프로세스 (이 경우 raw Makefile)가 적절하게 정의되도록주의하십시오.

두 가지 접근법 모두 한 측면에서 나에게 다소 우아하지 않은 것처럼 보입니다. 게임 개발 업계에서 이에 대한 일반적인 관행이 있습니까?

내가 찾을 수있는 유일한 관련 질문 은 설치된 / 디스크 게임 자산의 위치리소스 및 자산의 디렉토리 경로를 결정하는 것이지만 “소스 트리에서”실행 문제를 해결하지 못했습니다.



답변

../lib/programname또는 자산이 아키텍처에 따라 달라지는 지 여부에 따라 ../share/programname/dirname(3)를 기준으로합니다 argv[0].

이것은 다른 모든 Linux (및 대부분의 비 Mac Unix) 프로그램과 동일한 표준입니다.

“소스 트리”에서 실행하려면

  1. “소스 트리에서 실행하지”않기 때문에 실제 빌드 시스템을 구축하고 빌드를 수행해야합니다. 빌드 시스템은 어딘가에 뱉어 낸 빌드 실행 파일을 실행하며 자산을 쉽게 복사하거나 링크 할 수 있습니다.
  2. 빌드 시스템이 너무 엉성한 경우 .또는 ./assets등을 확인한 다음 나중에 개발시 새 빌드 시스템을 살펴보십시오.

happy_emi와 달리 환경 변수로 이것을 재정의하는 방법을 제공해야합니다. 그것은 그들이 의도 한 것입니다.


답변