포팅 게임. Android에서 애플리케이션 서명 및 설치

게임을 만드는 것은 흥미롭고 교육적인 과정입니다. 이는 원본의 아이디어와 캠페인을 완료하는 데 수십 시간이 소요된 내용을 바탕으로 직접 "클래식"을 리메이크할 때 특히 두드러집니다. 저는 Android 개발에 대한 특별한 경험이 없었기 때문에 "해야 하는 대로" 작동하는 태블릿용 애플리케이션을 만드는 것이 처음에는 다소 모호해 보였지만 그다지 매력적이지는 않았습니다. 시간과 기회가 주어지면 오래된 게임의 먼지를 털어낼 수 있습니다. 그리스와 접착제를 추가하고 "더 높은" 해상도에 대한 지원을 추가했으며 알파 채널이 없는 RGB565 팔레트를 사용하더라도 시장에 게시된 최신 제품보다 나쁘지 않은 것으로 나타났습니다. 나는 함정과 조심스럽게 숨겨진 갈퀴가 있을 것이라고 생각했습니다. 개발 시간에는 조용히 누워 있었지만 실제 하드웨어에서 게임을 실행하면 머리가 아프게 맞았습니다. 심하게 빠진 것은 디버거였고, 발생한 문제는 목표 달성에 대한 열망을 더욱 강화시켰을 뿐입니다. 아래 컷에서 거기 그것이 어떻게 작동했는지에 대한 이야기가 될 것입니다.


이것이 자전거에 관한 이야기일지도 모른다는 점을 즉시 경고할 가치가 있습니다; 인터넷에서 구글링할 수 없는 것은 아무것도 생각해내지 못했습니다. 또한 독자는 새로운 솔루션이나 대규모 기술을 볼 가능성이 없지만 Android용 SDL1/2를 사용하여 애플리케이션을 구축하기 위한 테스트된 지침을 찾을 수 있습니다.


3. libsdl-andlroid를 통해 게임 빌드를 위한 구성 파일 생성

소스 폴더에서 다른 프로젝트의 AndroidAppSettings.cfg 파일을 생성하거나 복사해야 합니다. 아래에서는 해당 내용을 내 구성에 제공했습니다.
댓글은 삭제될 수 있으니 기본 설정도 생략했어요
# Android libSDL 포트에 대한 애플리케이션 설정
#사용자에게 표시될 제목
앱 이름="CaesarIA"
#패키지 이름
AppFullName=net.dalerank.caesaria
#애플리케이션의 내부 버전
앱버전코드=1740
#이 버전이 사용자에게 표시됩니다
앱버전이름="0.3.1740"
#여기서 설치 후 압축이 풀릴 로컬 또는 원격 아카이브를 지정할 수 있습니다
AppDataDownloadUrl="!!게임 데이터는 100Mb|cache.zip"
#애플리케이션이 빌드된 라이브러리의 버전(버전 2.0은 작동하지 않음)
LibSdl버전=1.2
#화상 설명회
화면 방향=h
#색상 심도, 16/24/32 지원 - 16이 가장 빠르며, 눈으로 차이가 눈에 띄지 않습니다.
비디오 깊이Bpp=16
#이 플래그와 다음 두 플래그는 OpenGL을 애플리케이션에 연결하는 역할을 합니다.
#GL을 사용하지 않기 때문에 연결할 필요가 없습니다.
NeedDepthBuffer=n
NeedStencilBuffer=n
NeedGles2=n
#flag는 텍스처 저장을 담당합니다. 랜덤 액세스 메모리, 이것이 PC에 문제를 일으키지 않았다면
#이 플래그가 없는 Android에서는 텍스처가 표시되지 않을 수 있습니다.
SwVideoMode=y
#마우스 에뮬레이션, 다음 두 플래그가 작동하려면 플래그가 필요합니다.
AppUsesMouse=y
#여러 동시 클릭 처리
AppUsesMultitouch=y
#마우스 오른쪽 버튼 누르기, 두 번째 손가락으로 탭하기 에뮬레이션
AppNeedsTwoButtonMouse=y
#표시 커서
ShowMouseCursor=n
#실제로 여기에는 yes가 있어야 하지만 이 플래그가 활성화되면 입력 필드가 제거되지 않았습니다.
AppNeedsTextInput=n
#드라이브에서 읽기 권한
AccessSdCard=y
#캐시를 인터넷에서 가져온 경우에는 yes로 설정해야 합니다.
액세스인터넷=n
#내장된 가상 버튼 수 SDL, 자체 GUI를 사용하고 있으므로 버튼이 없습니다.
AppTouchscreenKeyboardKeysAmount=0
#애플리케이션을 시작하기 전에 SDL 스플래시 화면을 지연합니다.
StartupMenuButtonTimeout=3000
#애플리케이션은 어떤 Abi로 구축되나요?
MultiABI=armeabi-v7a
#libraries를 여기에 지정해야 합니다. 애플리케이션이 작동하는 데 필요한 sdl 외에도
CompiledLibraries="sdl_mixer sdl_ttf lzma ogg"
#추가 컴파일 플래그, RTTI 및 예외가 활성화되어 있습니다.
AppCflags="-O2 -finline-functions -frtti -f예외"
#현재 소스 외에 빌드 소스를 찾아야 하는 폴더는 다음과 같습니다.
AppSubdirsBuild="dep dep/smk dep/aes dep/lzma dep/bzip2 dep/libpng 소스 소스/vfs 소스/코어 소스/gfx 소스/게임 소스/gui 소스/음원 소스/장면 소스/경로 소스/워커 소스/개체 출처/좋은 출처/도시 출처/사건 출처/세계 출처/종교"


4. 컴파일 경로 설정 원하는 애플리케이션

$rm 프로젝트/jni/응용 프로그램/src
$ln -s caeasaria 프로젝트/jni/application/src


5. APK 빌드

$./changeAppSettings.sh -a
$android 업데이트 프로젝트 -p 프로젝트
$./build.sh


6. Android에서 애플리케이션 서명 및 설치

모든 것이 성공적으로 컴파일되면 MainActivity--unsigned.apk 파일이 Commandergenius/project/bin 폴더에 나타나며, 이 파일은 서명되어 장치에 설치되어야 합니다.

$ keytool -genkey -v -keystore rs.keystore -alias caesaria -keyalg RSA -keysize 2048 -validity 10000
$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore rs.keystore ~/projects/commandergenius/project/bin/MainActivity-release-unsigned.apk caesaria
$ mv ~/projects/commandergenius/project/bin/MainActivity-release-unsigned.apk ~/projects/caesaria.apk
$ adb 제거 net.dalerank.caesaria
$ adb 설치 ~/projects/caesaria.apk

수중 암석
0. 환경 결정: 먼저 Windows, Linux 또는 Linux Android가 작동할 환경을 결정해야 합니다.
해결 방법: ANDROID/__ANDROID__ 정의가 있는지 확인하세요.

1. 로그: 다음을 통해 오류 메시지 및 기타 출력을 볼 수 있습니다. abd 로그캣, 그러나 결과적으로 stdout/printf와 같은 표준 도구는 작동하지 않습니다. 물론 파일에 대한 로그 출력을 사용하여 볼 수 있지만 좀 더 친숙한 디버깅을 원했습니다.
해결 방법: Android 로그 헤더 파일 연결 #포함하다 , 메시지를 표시하기 위해 함수를 사용합니다.
__android_log_print(ANDROID_LOG_DEBUG, CAESARIA_PLATFORM_NAME, "%s", str.c_str());

일반적인 printf 구문을 사용합니다.

2. OpenGL 사용: OpenGL이 필요한 사람이 있다면 가까운 친척 GLES가 모바일 플랫폼에 있습니다.
해결책: 표준 헤더 파일 대신 연결 그리고 , 텍스처 사용 및 렌더링에 약간의 차이가 있지만 기본적으로 코드(내가 사용한 간단한 코드)는 거의 변경되지 않고 작동합니다.

3. 이벤트 처리: 화면에서 손가락을 움직이면 SDL_MOUSEBUTTONUP 이벤트가 사라집니다. 이는 libsdl-android 라이브러리 자체의 결함이거나 어딘가에서 잃어버렸을 수 있습니다. 예를 들어 이동 후 버튼에서 멈췄을 때 이론적으로 마우스 커서가 위에 있으면 상태로 전환되어야 하는 등 사용자 작업에 대한 인터페이스 요소의 반응이 부족하여 나타나는 경우도 있습니다.
해결 방법: 내 애플리케이션에만 해당됩니다. Android용으로 빌드할 때 커서가 움직일 때 커서 아래 요소 상태의 강제 업데이트가 추가되었습니다.

4. 작은 인터페이스: 최신 모바일 장치의 화면 해상도는 10~15년 전에 사용된 모니터의 해상도와 비슷하거나 높지만 물리적 크기가 눈에 띄게 작기 때문에 사용자 인터페이스 요소 자체가 작아 보이고 항상 사용하기 편리한 것은 아닙니다.
해결책: 인터페이스를 재설계하는 것은 매우 번거로운 작업이며 원래 모습을 유지하는 것이 항상 가능하지는 않습니다.


한 번의 움직임은 두 번의 화재와 같습니다(민중의 지혜)
모든 것은 커미터 중 한 명이 개발 브랜치에 대한 링크를 보냈을 때 시작되었습니다. 그곳에서 그는 상대적으로 최신 SDL2 라이브러리를 사용하여 게임을 성공적으로 시작했으며 그 전에는 2008년에 출시된 SDL1.2 버전이 사용되었습니다. 나는 특히 Mac과 Android에 대한 정상적인 지원을 약속하는 변경 로그를 살펴본 후 새 버전으로 전환할 가능성을 고려했다고 말해야 합니다. 그런 다음 우리는 더 큰 큰 망치, 더 두꺼운 가이드 및 큰 컵커피, 리메이크를 새로운 "엔진"으로 옮기기 시작했습니다.
나는 이동의 기술적 세부 사항으로 독자를 지루하게 만들고 싶지 않습니다. 단지 하드웨어 지원의 출현으로 라이브러리 자체가 운영 이념을 변경했기 때문에 처음에는 익숙해질 때까지 특정 어려움을 겪었습니다. 이 작업은 일주일 동안 저녁 동안 지속되었으며 결국 남은 단점과 그래픽 인공물을 수정하는 것으로 구성되었습니다. 수정이 완료되고 "대형" OS용 어셈블리가 준비되었으며, libsdl-android는 일반적으로 SDL1.2와 작동하도록 조정되어 지원되므로 Android용 애플리케이션을 조립하기 위한 매뉴얼을 다시 읽어야 했습니다. SDL2의 경우 폐기된 것 같습니다(저자와 readme에 작성).

숨겨진 텍스트

libsdl.org에는 이제 공식 SDL 1.3 Android 포트가 있습니다.
처음부터 새로운 애플리케이션을 만드는 데 더 적합합니다. 이 포트는 주로
SDL 1.2에서 기존 애플리케이션을 컴파일하는 경우 어떤 포트가 더 나은지 결정하는 것은 사용자의 몫입니다.
또한 이 항구는 매우 느리게 개발되고 있지만 공식 항구의 경우에도 마찬가지입니다.

나는 libsdl-android를 통해 이전 구성에서 포트를 실행하려고 몇 시간을 소비했을 때 이 텍스트의 진실을 깨달았습니다. 음, 부정적인 경험도 경험입니다. 사용 가능한 도구를 사용하겠습니다.

두 번째 시도, 완전히 성공하지는 못함
SDL2에는 Android용 애플리케이션을 구축하는 데 필요한 모든 구성이 이미 포함되어 있습니다. 공식 웹사이트에서 권장하는 구성을 읽은 후 무언가를 구축해 볼 수 있습니다. 이번에도 adt 설치 및 구성을 제외한 여러 단계가 있습니다.

0. SDL2 전달에서 예제 복사

저는 포트를 만드는 데 보낸 시간을 절대 후회하지 않습니다. 게임이 시작되었을 때 저는 약간의 경험과 많은 긍정적인 감정을 얻었습니다. 아직 해볼지 말지 고민하고 계신 분들은 꼭 해보세요. 나중으로 미루지 마세요!

ZY 항상 프로젝트의 발전을 지켜볼 수 있습니다.

태그:

태그 추가

네트워크미디어는 국내에서 주문형 게임을 포팅하는 몇 안 되는 기업 중 하나이다. 우리는 게임에서 "잡히는 것"을 보존하고 새로운 플랫폼에서 게임 플레이와 기능적 적응을 섬세하게 수행하는 것이 중요하다는 것을 이해합니다.

우리는 개인 고객 및 출판사와 협력하고 있습니다.

당신은 무엇을 얻을 것인가

네트워크미디어가 게임 포팅 시 특별히 주의하는 점

게임 제품을 포팅할 때 우리의 가장 큰 목표는 개발된 게임의 인기를 보장하는 것이며, 좋은 판매, 원래 주요 제품의 성공을 반복합니다. 따라서 네트워크 미디어 게임 개발 전문가들은 다음 사항에 특별한 관심을 기울이고 있습니다. 다음 사항, 포팅의 주요 성공 요인은 다음과 같습니다.

  • 새로운 아이디어:2차 교육을 받을 권리 없이

우리는 사용자를 위한 게임의 편의성이 가장 중요하다는 점을 이해하지만 새로운 플랫폼의 기능도 잊지 않습니다. 독창성과 편의성은 그래픽 디자인 및/또는 게임 플레이에 대한 혁신적인 접근 방식과 사용을 통해 달성할 수 있습니다. 새로운 기능과 개발 환경

  • 참여:스스로를 찢어버릴 수 없어

당신은 당신의 프로젝트와 타이틀 전체의 방향에 새로운 색을 불어넣을 게임을 받게 될 것입니다. 그들은 당신보다 먼저 열립니다 다양한 가능성새로운 플랫폼 - 우리와 함께 사용해보세요. 게임은 다시 한 번 게이머의 관심을 끌고 사로잡을 것이며 게이머는 끝까지 게임을 완료하고 아마도 계속을 요구할 것입니다.

  • 플레이 가능성:게이머의 편의를 위한 모든 것

당신은 플레이어가 매우 편안하게 게임을 플레이할 수 있는 제품을 받게 될 것입니다. 특히 게임의 플랫폼과 장르에 맞춰 제어 시스템, 기능, 게임 인터페이스, 그래픽 등. 유용성이 얼마나 중요한지 이해하려면 원래 출시된 일반 컴퓨터에서 게임을 플레이하는 것만으로도 충분합니다. 게임 콘솔(악마 울 수있다 3, Onimusha 3: Demon Siege - PC에서 제어 기능 상실; Tom Clancy's Ghost Recon: Future Soldier - PC 게임 클라이언트는 많은 플레이어에게 작동하지 않았습니다. Alone in the Dark - 끊임없이 자동으로 1인칭에서 3인칭으로 전환하고 제어 시스템을 변경하거나 그 반대로 변경하는 끔찍한 카메라입니다. 다크소울 PC - 끔찍한 최적화, 점핑 카메라, 일본어 컨트롤 등 모든 예제의 문제를 수집했습니다. 우리는 제품의 성공을 위해 이러한 특성이 중요하다는 것을 이해하고 있으며, 따라서 우리는 헌신할 것입니다. 특별한 관심플랫폼과 플레이어 간의 상호 작용

  • 게임플레이:균형 조정 및 디버깅

게임 포팅은 개발자들에게 정말 쉬운 일이 아닙니다. 우리 얘기 중이야실제로 개발된 PC 게임 출시에 대해 설명합니다. 그리고 이 기사에서는 Disparity Games 스튜디오의 창립자 중 한 명인 Jason Stark가 매장의 동료들이 어떤 어려움을 겪고 있는지 알려줄 것입니다.

PC Gamer 웹사이트의 기자들은 Disparity Games의 공동 창업자에게 질문을 했습니다. 자료는 영어를 기준으로 작성되었습니다.

게임이 PC로 이식되는 방법

게이머들은 왜 개발자들이 테스트 중에 PC에서 만든 게임 버전을 그냥 출시할 수 없는지 묻고 있습니다. 그리고 그들이 이 작업을 수행하고 버그가 있는 빌드를 출시하면 동일한 게이머가 실수에 대해 불평하고 개발자의 게으름을 비난합니다.
— 제이슨 스타크, Disparity Games의 공동 창립자

프로세스의 복잡성을 이해하려면 구성 요소 수를 상상하는 것만으로도 충분합니다. 현대 컴퓨터. 다양한 하드웨어, 수천 개의 드라이버 버전, 때로는 이들 조합이 특정 조건에서 어떻게 작동할지 예측하기가 매우 어렵습니다.

잘 최적화되고 디버깅된 게임이라도 컴퓨터에 특정 소프트웨어 및 구성 요소 세트가 있으면 예상대로 작동하지 않는 경우가 많습니다. 이러한 의미에서 "좋은" 또는 "나쁜" 포트의 문제는 돈과 시간을 투자하는 문제에 더 가깝습니다. 즉, 개발자가 제공하기 위해 얼마나 많은 리소스를 소비할 의향이 있습니까? 최고의 호환성? 그러나 절대적인 이상은 아직 도달할 수 없습니다.

게임을 콘솔로 옮기기는 어렵지만, 콘솔에서 버그가 발생하면 엑스박스 원, 다른 모든 Xbox One에서도 동일한 일이 발생한다는 것을 알게 될 것입니다.

더 많은 플랫폼 - 더 많은 문제

게임을 이식할 때 개발자는 실제로 게임의 고유한 버전을 만듭니다. 이는 게임을 출시하기 위해 선택한 각각의 추가 플랫폼이 출시 시간을 몇 배씩 증가시킨다는 것을 의미합니다. 이것은 덧셈이 아니라 곱셈입니다. 여러 플랫폼의 경우 출시뿐만 아니라 각종 문제에 대한 신속한 대응과 빠른 해결이 필요합니다.

각 패치 또는 업데이트는 각 플랫폼에서 개별적으로 테스트되어야 합니다. 그리고 그 중 어떤 것에도 문제가 없을 경우에만 대중에게 공개하십시오. 결국, 한 플랫폼의 무해한 "수정"이 다른 플랫폼에서 치명적인 오류를 일으킬 수 있습니다. 다양한 요소와 각 환경의 아키텍처 기능을 고려해야 합니다.

이전 세대 콘솔에서 게임의 PC 포트를 만드는 것도 상당히 문제가 많습니다. 이전에 30fps로 실행된 프로젝트가 항상 60fps로 빠르게 실행될 수는 없습니다. 그리고 지난 10년간의 게임은 아무리 쉬워 보이더라도 4K 해상도에 쉽게 적응할 수 없습니다.

실제로 많은 게임이 초당 30프레임을 위해 특별히 제작되었으며 해당 논리는 이 프레임 속도를 기반으로 작성되었습니다. 예를 들어, 주파수를 60fps로 변경하면 탄두가 프레임 변화를 고려하므로 피해가 두 배로 늘어납니다.

많은 사람들은 또한 PC 버전에서 무기 성능이 2배 더 빠르게 저하되는 버그를 기억합니다. From Software의 개발자들이 겉보기에 간단해 보이는 이 문제를 해결하는 데 1년이 걸렸습니다!

언제 게임을 리메이크하는 것이 더 쉽나요?

일부 게임을 플레이하려면 문자 그대로 처음부터 다시 작성해야 합니다. 즉, 프로그램 코드를 변경하고 그래픽 요소를 다시 실행해야 합니다. 예를 들어 PC 버전에서 이런 일이 발생했습니다. 그리고 재발매는 일반적으로 처음부터 이루어져야 했습니다. 소스 코드분실되었습니다.

요컨대 포팅은 꽤 . 그러나 동시에 개발자는 동일한 게임의 모든 버전이 기능과 측면에서 유사하도록 노력해야 합니다. 모습. 그러나 이는 플랫폼 간의 근본적인 차이로 인해 실제로 불가능한 경우가 많습니다. 또한 라이센스 계약을 준수해야 하기 때문입니다.

플랫폼 보유자의 요구 사항에 대해 제3자에게 교육하는 것은 개발자의 이익이 아니기 때문에 게임 포팅에 대한 부정적인 이야기를 거의 듣지 못합니다. 그들은 자신에 대한 비판을 읽고 싶어하지 않습니다.

프로모션 기능

잠시 잊어버리면 기술적 문제, 다른 플랫폼에서 게임을 출시하는 것은 여전히 ​​매우 어렵습니다. 결국 게임이 시스템으로 출시되면 이 시스템을 사용하는 사람들에게 판매되어야 합니다. 인기 유튜버를 찾고, 플레이어 커뮤니티와 연결을 구축하고, 플랫폼별 홍보 자료를 별도로 제작해야 합니다.

예를 들어, 20명으로 구성된 팀에서는 3명이 승진 문제를 다룰 수 있습니다. 그들은 개발 자체에는 관여하지 않고 출판, 마케팅, 판매에만 관여합니다. 소규모 스튜디오의 경우 여러 플랫폼에 출시하는 문제는 심각한 문제입니다. 두통: 손이 부족해요.

또한 품질 수준이 다른 포트를 출시하는 등 의도하지 않은 일을 취소하는 사람은 아무도 없습니다. 이것은 때때로 자연스럽게 나오지만 플레이어는 거의 항상 개발자가 "매진"하고 플레이어를 다른 플랫폼으로 끌고 간다고 비난하기 시작합니다. 현실은 대부분의 개발자가 모든 시스템에 적합한 포트를 출시하기를 원하지만 항상 그런 식으로 작동하는 것은 아닙니다.

그러나 일부 책을 재발행하는 경우에도 반대 현상이 발생합니다. 고대 게임그리고 그것은 판매 차트를 깨고 있습니다. 그러한 경우 플레이어는 자신이 좋아하는 게임의 개선된 버전을 얻기 위해 기꺼이 상당한 돈을 지불할 의향이 있습니다. 좋은 방법개발자에게 좋은 일을 해주셔서 감사합니다.

모바일 게임 산업은 첫 번째 공식 포트가 등장한 순간부터 더욱 급속한 발전을 시작했습니다. 유명한 게임 PC부터 Android 및 iOS를 실행하는 스마트폰, 태블릿까지. 다행스럽게도 하드웨어, 최적화 및 개발자의 엄청난 작업으로 인해 전례 없는 수준의 성과를 달성할 수 있었습니다.

이 기사에서 우리는 역대 최고의 항구를 선택했습니다. 게임 산업. 그들 각각은 돌파구가 되었고 플레이어들에게 많은 기쁨과 향수, 새롭고 멋진 작품을 보고 싶은 열망을 가져다주었습니다.

그리고 여기에 우리의 불후의 히트작이 있습니다:

포트

지구상의 Citadel City 17에서 Gordon의 주요 악당이자적인 Wallace Brin이 통제하는 "Alliance"로 대표되는 외계인 침략자들과의 싸움에서 Gordon Freeman의 장대 한 모험. 게임을 연결하려면 게임패드가 필요하지만 플롯과 그래픽은 100% 보존됩니다.

포트


절도 Auto III 게임은 게임 산업에 두 가지 혁명을 일으켰습니다. 열린 도시 Rockstar Games의 노력을 통해 모바일 플랫폼으로의 완벽한 포팅이 이루어졌습니다. 이 프로젝트의 성공을 믿는 사람은 거의 없었지만 2011년에 10주년을 기념했습니다.

포트


어떤 희생을 치르더라도 생존과 우승을 위한 추악한 경주 - 이것이 바로 카마게돈입니다! 다양한 차량의 특수 물리학 및 동작 모델을 갖춘 가장 기이하고 잔인하며 특이하고 중독성이 강한 게임 중 하나입니다. 추적하다 보면 사람을 짓밟을 수도 있고 가축, 적 차량은 물론 경찰까지 파괴하세요.

포트


우주 정거장을 배경으로 한 컬트 1인칭 호러 게임은 당대의 히트작이자 실제 전설이 되었을 뿐만 아니라 모방 장면이 포함된 좋은 예술적인 호러 영화를 만드는 이유이기도 했습니다. 컴퓨터 게임첫번째 사람. 뛰어난 적응력, 그래픽 설정 및 변경된 난이도는 프로젝트에만 도움이 되었습니다.

포트


프랑스 작가의 잊지 못할 모험 베누아 소칼 2002년 PC 사용자 평가. 이것은 Voralberg 가족을 위해 판매 계약을 체결하기 위해 오래된 장난감 가게에 가는 임무를 받은 변호사 지망생 케이트 워커의 이야기입니다. 이 게임은 포인트 앤 클릭 퀘스트 장르로 만들어졌으며 특별한 우울증 분위기를 가지고 있으며 줄거리의 예상치 못한 반전으로 항상 만족합니다.

포트


블리자드의 아이디어인 디아블로(Diablo)는 1996년 PC로 출시되었으며 여러 장르의 트렌드를 동시에 결합했습니다. 모든 이벤트는 대규모 Tristam 던전에서 진행되며 플레이어는 검, 도끼, 마법 및 무기의 도움을 받아 지옥에서 악령을 근절해야 합니다. 다양한 조합.

포트


독특한 무덤 침입자 라라 크로프트의 위험한 모험은 1996년에 시작되었습니다. 이것 컬트 게임우리를 정글, 동양 사원, 던전으로 데려갑니다. 희귀하고 값비싼 유물이 보관되어 있는 곳. 하지만 그것들을 차지하려면 많은 치명적인 함정을 통과하고 퍼즐을 풀어야 하며 사악한 도적의 손에 죽지 않아야 합니다.

Android용 Quake 포트


지옥 같은 미래형 1인칭 슈팅 게임으로, 먼 미래의 특별한 우주 경기장에서 액션이 펼쳐집니다. 이는 인류의 새로운 취미, 즉 죽음에 이르는 팀 전쟁의 발판입니다. 이 게임에는 무슨 일이 일어나고 있는지에 대한 관심을 끄는 최소한의 플롯과 특별한 역학이 있습니다.

포트


모든 세대를 통틀어 최고의 온라인 슈팅 게임입니다. 이는 인기와 장수 측면에서 다른 어떤 프로젝트도 능가할 수 없었던 Valve의 불멸의 걸작입니다. 특수 촬영 물리학, 역학, 국제 선수권 대회, 전설적인 카드장비 구매를 위한 키보드 단축키 - 이제 모든 스마트폰과 태블릿 사용자가 Android용 Counter-Strike 1.6을 사용할 수 있습니다.

포트 맥스 페인안드로이드에서


맥스 페인은 비밀경찰이다. 어느 날 그는 범죄 두목을 살해한 혐의로 모함을 받았고, 그 결과 경찰과 도적들이 영웅을 찾기 시작했습니다. 전설적인 3인칭 슈팅 게임은 2001년 Remedy에서 선보였습니다. 이 게임에서 처음으로 Bullet Time 시스템, 즉 느린 시간이 사용되었습니다.

포트 오브 스타워즈: 구공화국의 기사단(Android용)


이것은 우주 최초의 RPG입니다 스타 워즈, 2003년 루카스 아츠에서 발매. 클래스 구분, 극적인 줄거리, 많은 영웅, 유명한 장소, 광선검을 갖춘 전설적인 제다이, 고급 레벨링 시스템 등 이 모든 것이 이제 귀하의 장치에 있습니다.

포트


지금 당신은 BioWare 회사의 시작점에 있습니다. 롤플레잉 게임 PC에서. 그들의 아이디어인 Baldur's Gate는 1998년 PC에 등장했으며 아바타 책의 줄거리와 밀접하게 관련되어 있으며 고전적인 디아블로 스타일 RPG의 모든 정신을 전달합니다.

포트


Heroes 3는 1999년 PC로 출시된 2D 그래픽과 스크립트 애니메이션을 갖춘 놀라운 턴제 전략 RPG입니다. 놀라운 분위기, 놀라운 음악, 도시 건설 모드, 말을 탄 영웅들의 턴 기반 전투로 마침내 플레이어의 마음을 사로잡은 것은 대규모 시리즈의 이 부분이었습니다.

Android용 에일리언 슈터 포트


아이디어 러시아 회사 Sigma Team은 2003년에 PC에 등장하여 다른 슈팅 게임 형식을 제공했습니다. 하향식 관점에서 당신은 수천 마리의 화난 생물을 낳은 과학자들의 실수를 바로잡기 위해 비밀 연구소에 침입하는 용감한 전사를 조종합니다. 다른 유형그리고 크기.

Android의 Petka 항구와 Vasily Ivanovich


또 다른 성과 러시아 개발자– Petka가 얻었습니다 세계적인 인지도 1998년 발매 당시. 모바일 버전 hita는 약간 변경되고 수정되었지만 여전히 고전적인 포인트 앤 클릭 퀘스트의 원시적 분위기와 정신을 유지했습니다.

GDC(Game Developers Conference)에서 Valve와 Nvidia는 게임을 Linux로 포팅하는 방법에 대해 발표했습니다. Nvidia 웹사이트의 이 이벤트 프레젠테이션.

가장 흥미로운 점:

  • 게임을 Linux로 포팅해야 하는 이유는 다음과 같습니다.
    • Linux 운영 체제 및 생태계의 개방성.
    • 게임 플랫폼으로서 Linux의 인기가 상당히 빠르게 상승했습니다.
    • OpenGL 제품군 표준도 지배적인 모바일 플랫폼으로 게임을 포팅할 때 논리적인 중간 단계
    • 성능.
    • Steam은 공식적으로 Linux에서 사용할 수 있습니다.
    • OpenGL은 OS 버전이나 다른 것이 아닌 하드웨어 기능만을 기반으로 하드웨어 기능에 대한 액세스를 제공합니다. 특히 현재 중국에는 Direct3D 10/11을 사용할 수 없는 Windows XP 운영 체제 사용자가 여전히 많습니다. 그러나 OpenGL을 사용하는 경우 다음을 사용할 수 있습니다. 완전한 능력이 버전의 OS를 포함한 장비. 이를 통해 특정 사용자라도 최신 장비의 기능을 사용할 수 있습니다.
    • 공개적으로 이용 가능한 표준 사양.
    • 사양은 막대한 비용을 들이지 않고도 모든 이해관계자가 참여할 수 있는 위원회에 의해 개발됩니다.
    • OpenGL은 확장하기가 더 쉽습니다. 어떤 공급업체라도 자체 확장 기능을 제공할 수 있습니다.
    • OpenGL은 그 기능이 매우 풍부합니다.
  • 창을 관리하려면 비교적 작은 크로스 플랫폼 C 라이브러리인 SDL을 사용하는 것이 좋습니다. SDL은 다음을 포함하여 OS에 관계없이 Windows 작업과 관련된 모든 것을 처리합니다. 모바일 플랫폼. Valve는 프로젝트를 포팅할 때 이 라이브러리를 사용하는데, 이는 상당히 까다로운 응용 프로그램에 대한 라이브러리의 적합성을 입증합니다. 또한 주요 libsdl 개발자는 현재 Valve에서 근무하고 있습니다.
  • Valve에서 발생한 문제:
    • Unix 계열 운영 체제의 파일 시스템은 기본적으로 대소문자를 구분하지만 Windows의 파일 시스템은 기본적으로 대소문자를 구분하지 않습니다. 게임의 경우 게임 자산은 일반적으로 플랫폼 중립 컨테이너에 전달되므로 이는 일반적으로 문제가 되지 않습니다. 그러나 개발 중에는 문제가 될 수 있습니다. 최대 간단한 해결책모든 리소스 이름을 소문자로 변환하는 것입니다.
    • 예를 들어 Erroneous는 Linux에서는 전용 서버만 있을 수 있다고 제안합니다. 게임 서버그리고 그 이상은 없습니다.
    • 로케일 문제는 printf/scanf 기능에 문제를 일으킬 수 있습니다. 해결 방법: 로캘을 en_US.utf8로 설정하고 현지화는 응용 프로그램 자체에 맡기십시오. 어떤 경우에는 en_US.utf8 로케일이 시스템에 없을 수 있으므로 이 경우 경고가 제공되어야 합니다.
    • 글꼴: freetype 및 Fontconfig 라이브러리를 사용하는 것이 좋습니다. 그러나 글꼴 크기를 다시 계산해야 할 수도 있습니다.
    • RDTSC(최신 x86 CPU의 클럭 카운터를 기반으로 한 정밀 타이머)를 사용합니다. 대신 프로세서 아키텍처에 의존하지 않는 clock_gettime(CLOCK_MONOTONIC) 호출을 사용하는 것이 좋습니다.
    • 원시 마우스 입력을 사용하면 모든 마우스 입력이 하나의 프로그램으로 독점적으로 전송됩니다. 이는 게임에 매우 적합하지만 일부 창 관리자는 모든 키보드 입력을 리디렉션하기도 합니다. 특히 이로 인해 작업 전환을 위한 Alt-Tab 또는 유사한 단축키가 비활성화되어 일부 상황에서 사용자가 불만을 느낄 수 있습니다.
    • 다중 모니터 구성에 대한 지원이 향상되었습니다. 그러나 libsdl은 대부분의 문제를 처리할 수 있습니다.
  • 도구:
    • Steam Linux 런타임 및 SDK는 게임 개발자에게 배포 독립적인 ABI를 제공합니다.
    • 컴파일 및 디버깅:
      • gcc - 컴파일용.
      • gdb - 디버깅용.
      • cgdb - 저주 기반 인터페이스
      • ldd - 바이너리 파일의 라이브러리 종속성을 추적합니다(dumpbin과 동일).
      • nm - 프로그램에서 사용하는 기호에 대한 정보를 제공합니다.
      • objdump는 바이너리 파일에 대한 세부 정보를 보기 위한 디스어셈블러이자 도구입니다.
      • readelf는 ELF 파일(Linux의 주요 실행 파일 형식)에 대한 자세한 정보를 얻기 위한 도구입니다.
      • make는 프로젝트 빌드 도구입니다.
    • 성능 분석 - CPU:
      • perf는 최신 프로세서의 성능 카운터를 사용하는 Linux용 무료 프로파일러입니다.
      • vtune은 Linux 버전에서도 사용할 수 있는 Intel의 도구입니다.
      • 원격 측정 - 많은 상업용 게임 개발자가 이미 이 툴킷을 사용하고 있습니다.
  • OpenGL과 Direct3D 간의 대략적인 대응:
    • Direct3D 9는 OpenGL2의 기능과 거의 일치합니다. 이 버전부터 셰이더를 사용할 수 있습니다.
    • Direct3D 10은 대략 OpenGL3 제품군에 해당하며 최신 API가 나타났습니다. 기하학 셰이더를 구현했습니다.
    • Direct3D 11은 OpenGL4와 거의 동일합니다. 셰이더에서 테셀레이션 및 임의 계산을 지원합니다.
  • 개발자 관점에서 본 Direct3D와 OpenGL의 주요 차이점은 다음과 같습니다.
    • OpenGL에서 스레드에는 로컬 데이터가 있으므로 다음과 같습니다.
      • 스레드는 현재 컨텍스트를 하나만 가질 수 있습니다.
      • 컨텍스트는 하나의 스레드에 대해서만 최신 상태일 수 있습니다.
      • 사양에 따른 현재 컨텍스트가 없는 스레드에서 OpenGL을 호출하면 아무런 효과가 없습니다.
    • OpenGL은 C를 기반으로 합니다. 개체는 핸들을 통해 전달됩니다.
      • 많은 함수는 핸들 지정이 전혀 필요하지 않으며 현재 선택된 객체에 대해 작동합니다.
      • 일반적으로 핸들은 GLuint 유형입니다.
    • OpenGL은 확장을 지원합니다.
    • OpenGL은 상당히 장황하고 언뜻 보기에 더 많은 호출이 필요하지만 인상적인 효율성과 성능을 보여줍니다.
    • OpenGL은 장치 손실 문제가 없습니다.
  • OpenGL 확장:
    • 접두사 NV|AMD|APPLE이 있는 공급업체별 확장이 있습니다. 그러나 그 중 다수는 여러 공급업체에 의해 동시에 구현되었습니다. 예를 들어 NV_bindless_texture입니다.
    • EXT 접두사가 붙은 확장은 많은 공급업체에서 구현됩니다. 예를 들어 EXT_separate_shader_objects
    • ARB 접두사가 붙은 확장은 표준 개발 위원회에서 검토 및 승인되었습니다. 예를 들어 ARB_multitexture입니다.
    • 핵심 확장: 이후 버전의 OpenGL 표준의 핵심 기능은 이전 버전의 표준에 대한 확장으로 표시됩니다.
    • WGL, GLX, AGL 및 EGL과 같은 플랫폼별 확장이 있습니다.
  • 개발자를 위한 팁:
    • 해당 호출에 대해 GL_ 또는 gl 접두어를 사용하거나 사용하지 않고 인터넷을 검색하는 것이 합리적입니다.
    • 표준 사양을 읽으면 여러 번 성과를 거둘 수 있습니다.
    • OpenGL의 현재 방향이 마음에 들지 않으면 Khronos Group에 가입하여 표준 개발에 영향을 미치도록 노력하십시오. 자신의 미래를 스스로 결정하는 것이 가장 좋습니다.
    • 코어 대 호환성: 일부 제조업체는 코어 프로필을 사용하는 것이 호환 프로필보다 빠르다고 주장하지만 실제로 이 논문에 대한 확인은 찾을 수 없습니다. 따라서 특정 개발자에게 더 간단하고 편리한 것을 사용할 수 있습니다. * 개발자에 따르면 가장 유용한 OpenGL 확장: EXT_direct_state_access, EXT_swap_interval(및 EXT_swap_control_tear), ARB_debug_output, ARB_texture_storage 및 ARB_sampler_objects. 또한 NVX_gpu_memory_info 및 GL_ATI_meminfo가 표시되어 GPU 메모리 사용에 대한 정보를 얻을 수 있습니다.
  • 성능면에서 가장 문제가 되는 부분은 다음과 같습니다.
    • MakeCurrent를 호출하는 것은 매우 비쌉니다. 프레임당 한 번이라도 호출하는 것을 피해야 합니다.
    • 최신 드라이버는 일반적으로 2개 이상의 스레드를 사용합니다. 프로그램은 실제로 여러 스레드에 걸쳐 작업을 분산할 수 있는 상대적으로 얇은 계층과 상호 작용합니다. 일부 호출은 버퍼의 완전한 재설정과 스레드 간의 재동기화를 강제로 수행하므로 작업 속도가 크게 저하됩니다.
    • 가장 문제가 많은 함수는 glGet() 및 glGetError()였습니다(이 함수 대신 ARB_debug_output 사용을 권장함).