C / C ++에서 크로스 플랫폼 게임을 만들 때 팁 / 권장 사항이 있습니까?
C / C ++에서 크로스 플랫폼 게임을 만들 때 팁 / 권장 사항이 있습니까?
답변:
추상화 계층 뒤의 플랫폼 별 항목 숨기기
이는 렌더링, 오디오, 사용자 입력 및 파일 IO와 같은 것을 의미합니다. 런타임 성능 저하를 유발하지 않으면 서 플랫폼 별 구현 파일이있는 플랫폼에 구애받지 않는 헤더라는 것을 추상화하는 일반적인 트릭입니다.
// FileSystem.h
class FileSystem {
public:
FileHandle OpenFile(const char * path);
// other stuff...
}
// FileSystemWindows.cpp
FileHandle FileSystem::OpenFile(const char * path) {
// call windows API...
}
그런 다음 각 플랫폼의 빌드를 구성하여 적절한 .cpp 파일을 빌드하십시오.
컨텐츠 파이프 라인을 플랫폼 독립적 인 자산에서 읽고 각 플랫폼에 대한 플랫폼 별 컨텐츠를 출력하십시오.
예를 들어, 텍스처를 .tga 또는 .psd로 제작 한 다음 파이프 라인을 사용하여 필요한 다른 플랫폼 별 형식으로 자동 변환 할 수 있습니다.
데이터의 특정 메모리 레이아웃 또는 엔디안을 가정하지 마십시오
플랫폼은 바이트 순서, 패딩, 정렬 및 단어 크기가 다를 수 있습니다. 이에 관심이있는 모든 코드는 모든 플랫폼에서 철저히 테스트해야합니다.
모든 플랫폼에서 항상 테스트
당신은 것입니다 플랫폼 고유의 버그에 의해 물린 얻을. 차라리 물리지 않겠습니까, 아니면 게임을 문 밖으로 내보내려고 할 때 맞습니까?
플랫폼에서 플랫폼으로 갈 때 최소한의 번거 로움을주는 opengl / sdl과 같은 API를 사용하십시오.
지원하려는 플랫폼을 알고 있어야합니다. 향후 멀티 플랫폼을 지원할 것이라고 생각하기 때문에 OpenGL을 사용하지 마십시오. 계속해서 시작하십시오.
지원하려는 각 플랫폼에 어떤 하드웨어 제한 사항이 있는지 확인하십시오.
크로스 플랫폼 인 많은 라이브러리가 있습니다. 어디서나 실행하기 위해 OpenGL로 직접 작성할 필요는 없습니다. OGRE는 이름을 지정하려는 모든 플랫폼에서 작동하는 렌더링 엔진의 훌륭한 예입니다.
내 경험상 가장 큰 관심사는 빌드 시스템입니다. Visual Studio를 사용하여 Windows에서 개발하는 경우 코드 가 Linux에서 컴파일 될 수 있지만 쉽게 빌드 하는 데 어려움을 겪을 수 있습니다. 플랫폼 별 프로젝트 파일 (Linux의 makefile, Windows의 VS 프로젝트, Mac의 XCode 프로젝트 등)을 생성하기 위해 동일한 빌드 지침을 사용할 수있는 CMake와 같은 빌드 시스템을 살펴보십시오.
파일 저장 및로드 또는 네트워크를 통한 통신을위한 함수를 작성할 때 엔디안을 잊지 마십시오 .
fread / fwrite에 대한 단일 호출 또는 이와 유사한 저수준으로 큰 구조를 읽는 대신 ReadByte / WriteByte 및 ReadFloat / WriteFloat를 작성하십시오. 그러면 나중에 다른 플랫폼을 타겟팅하기로 결정한 경우 변경해야 할 장소가 줄어 듭니다.
#ifdef PLATFORM_WIN
ftw 부족