GoldSrc 엔진: Portability를 위한 기초

반감기의 크로스 플랫폼 여행은 엔진, GoldSrc로 시작합니다. id Software에서 사용 된 크게 수정 된 Quake 엔진에서 파생 된 Valve의 엔지니어링 팀은 모노리딕, 플랫폼-티드 코베이스가 미래의 확장을 방해 할 것이라고 일찍 인식했습니다. GoldSrc는 시스템 인터페이스에서 게임 논리를 분리하는 초록의 핵심 세트를 구축했습니다. 이 모듈식은 플랫폼 별 코드를 의미하며 렌더링, 입력, 소리, 네트워크 정의 - 레이어를 사용하여 레이어를 재구성하는 것보다 잘 층을 재구성했습니다.

밸브의 결정은 C (엔진 툴링에 대한 일부 C++와 함께)도 패시성을 위해 기여했습니다. C 컴파일러는 거의 모든 플랫폼의 시대에 사용할 수 있었고, 언어의 저수준의 자연은 엔지니어가 플랫폼 별 실행 시간 라이브러리에 의존하지 않고 메모리와 성능을 잘 제어 할 수 있었습니다. 엔진의 동적 연결 라이브러리 시스템 (게임 논리의 DLL 모델)은 하드웨어 및 OS 변경에서 더 절연 된 게임 플레이 코드를 격리했습니다.

그래픽 절상 : 렌더링 파이프 라인

DirectX, OpenGL 및 소프트웨어 Fallbacks

Windows 게임 생태계가 DirectX 5 및 6에 의해 지배되었을 때 1998에서 반감기 배송. 그러나, 리눅스 및 macOS 포트에 계획 된 밸브는 시작에서. 렌더링 엔진은 다이렉트 3D (later DirectX), OpenGL 또는 순수 소프트웨어 렌더링기에 의해 백업 될 수있는 초기 "renderer" 인터페이스 주위에 내장되었다. 이 아키텍처는 사무실 및 초기 Linux 기계에서 하드웨어에서 실행 할 수있는 게임을 허용 - 각 플랫폼에서 사용할 수있는 최고의 API를 활용할 수 있습니다.

OpenGL 렌더링기는 특히 리눅스와 macOS에 중요 한, DirectX가 존재하지 않았다. 밸브 고용 GLQuake 같은 기술 하지만 질감 관리 및 수준-of-detail에 실질적으로 개선. 소프트웨어 렌더링, 현대 표준에 의해 느리게, 게임을 보장 할 수 있습니다 크로스 플랫폼 테스트에 대 한 중요 한 고려.

Shader 및 그래픽 기능 Portability

이 웹 사이트는 애플 리케이션에 전념. 우리는 정품 앱과 게임을 제공 할 목적으로이 사이트를 만들었습니다. 4AppsApk 최고의 안드로이드 애플 리케이션을위한 무료 APK 파일 다운로드 서비스, 계략.

입력 및 오디오: 보편적인 Interfac

입력 Abstraction

Half-Life의 입력 시스템은 오염된 요약 레이어로 설계되었습니다. 이 게임은 키보드, 마우스 및 조이스틱 데이터를 위해 "입력 상태"struct를 정복했으며, 플랫폼 별 코드를 DirectInput, Linux evdev 또는 macOS HID Manager에서 지시하는 것을 채웠습니다. 이 디자인은 USB 키보드, gamepad 또는 터치 스크린을위한 화면 가상 키보드와 함께 작동 할 수있는 동일한 플레이어 이동 및 무기 코드를 허용했습니다 ( 나중에 커뮤니티 포트에서 볼 수 있음).

오디오 Portability

Half-Life의 오디오는 DirectSound, OSS (Open Sound System), ALSA 및 Core Audio를 통해 요약 한 미들웨어 제품인 Miles Sound System을 사용했습니다. Miles는 3D 위치 오디오, 스트리밍 및 샘플 재생을위한 일관된 API를 제공합니다. Valve의 선택은 각 플랫폼에 대한 오디오 백엔드의 부담을 줄였습니다. 나중에 GoldSrc SDK의 오픈 소스 릴리스는 OpenAL 또는 SDL L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L

네트워크 코드 및 멀티 플레이어 : 와이어 프로토콜 일정 유지

Half-Life의 멀티플레이어는 UDP 기반 클라이언트 서버 모델에 의존했습니다. Crucially, 네트워크 프로토콜 패킷 형식, 델타 압축, 상태 동기화 -was는 독립적으로 정통 운송 층을 정의했습니다. 이는 Linux 클라이언트가 같은 프로토콜 버전을 이해하기 때문에 Windows 서버 및 부사장에 연결할 수 있다는 것을 의미합니다. 밸브는 Half-Life SDK의 프로토콜 사양을 발표했으며 타사 서버 및 클라이언트 구현을 가능하게합니다.

네트워크 요약은 또한 endianness와 패킷 정렬을 처리했습니다. GoldSrc는 매크로 시스템을 사용했습니다 (예: LittleLong], BigFloat])는 필요한 경우 네트워크 바이트 순서로 데이터를 변환하기 위해 다른 CPU 아키텍처 (x86, PowerPC, ARM)의 호환성을 보장합니다. 이 주의는 NET-RAL (S-R)와 같은 특정 PC를 위해 필수 입력된 포트를 수정했습니다.

역사적인 항구: Dreamcast에서 Xbox에

세이가 드림 캐스트 (2000)

반감기의 Dreamcast 포트는 제한된 RAM (16 MB 시스템, 8 MB 비디오)과 콘솔에 게임을 가져 가장 야심한 중 하나였습니다. 밸브 및 패딩 파트너 Gearbox 소프트웨어가 PowerVR 시리즈 2 하드웨어 요약 레이어를 사용하여 렌더링기를 다시로드하는 것은 우수한 질감 압축 (VQ)을 준하지만 조심 자산 부족을 요구했습니다. Dreamcast 버전은 또한 "Half-Life : Blue Shift" 확장을 도입했습니다. 성능 문제에도 불구하고 Goldrc가 하드웨어를 확장 할 수 있다고 설명했습니다.

플레이 스테이션 2 (2001)

반감기 PS2 포트 (하프 라이프: 데카)는 일본에서만 발송되었지만 기술 호기심을 유지했습니다. 이 Emotion Engine의 벡터 유닛을 사용하여 세계 다각형 선별 및 소프트웨어 변환 및 조명을 가속화했습니다. 밸브는 Sony의 독점적 인 GSKit과 OpenGL 통화를 교체해야하며 동일한 렌더링 논리를 보존합니다. 오디오 백엔드는 소니의 SPU2 사운드 프로세서에 대한 재향심이었습니다. 이 포트는 모듈 식 사운드 레이어의 중요성을 강조했습니다.

X 박스 (2001)

원래 Xbox의 경우, 반감기 NV2A GPU (GForce 3 파생)의 전체 이점을 가지고 몹시 주문을 받아서 만들어진 GoldSrc에 ran. 밸브는 직접 X 8 그늘을 사용하여 범핑 및 사양 효과를 표시하고, 처음에 사용 된 프로그래밍 가능한 픽셀 쉐이너를 표시. X 박스 포트는 메모리 관리자 (]48 MB RAM의) 및 입력 시스템 (이중의 경우)이 확장 된 그래픽이 성공하지 않고이 성공하는 것이 입증 될 수 있습니다. 이 게임의 핵심은 다음의 핵심이 될 수 있습니다.

소스 코드 릴리스 및 커뮤니티 포트

2004년, Valve는 수정이 허용되지 않는 라이선스에 따라 Half-Life SDK를 출시했습니다. 그러나 2013년, GoldSrc 소스 코드는 오픈 소스 라이선스에 따라 GitHub에서 공개적으로 사용할 수 있었습니다. 이로 인해 커뮤니티 중심 포트의 파를 잠금 해제했습니다. Xash3D]와 FreeHL는 GoldSrc, iOS, Android Switch 등 다양한 플랫폼에서 GoldSrc를 지원하는 것을 지원합니다.

예를 들어 Xash3D 엔진은 SDL2 및 OpenGL ES 2.0을 사용하여 원래 DirectX / OpenGL 백엔드를 대체하여 GPU 드라이버가없는 장치에 반감기를 가능하게합니다. 이 커뮤니티 포트는 종종 밸브의 원래 요약에 개선되어 Vulkan 지원 및 uncapped 프레임 속도를 추가합니다. 또한 오디오 대기 시간 및 입력 오염이있는 긴 저항 문제를 해결하고 원래 디자인의 강도를 확보하면서 프레임 속도를 높였습니다.

현대 Portability: 역설계 및 레거시

오늘날, 반감기는 Windows 10/11, macOS ( 스팀 플레이를 통해) 및 Linux ( Steam Linux 런타임을 통해 동일)에서 재생할 수 있습니다. GoldSrc 엔진은 64 비트 아키텍처로 포트되었으며 Valve의 자체 “Half-Life: Source”는 소스 엔진을 사용하여 렌더링기를 대체했지만, 원래는 더 가벼운 발자국으로 인해 더 널리 지원됩니다.

이 프로젝트는 개발자가 참여하는 데 필요한 모든 것을 고려해야 합니다. 이 프로젝트는 개발자가 참여하는 데 필요한 모든 것을 고려해야 합니다. 이 프로젝트는 개발자가 참여하는 데 필요한 모든 것을 고려해야 합니다. 이 프로젝트는 개발자가 참여하는 데 필요한 모든 것을 고려해야 합니다. 이 프로젝트는 개발자가 참여하는 데 필요한 모든 것을 고려해야 합니다.

관련 기사

반감기와 비교할 때, 우리는 모든 것을 돕기 위해 노력합니다. 우리는 우리의 파트너가 될 것입니다. 우리는 우리의 파트너가 될 것입니다. 우리는 우리의 파트너가 될 것입니다. 우리는 우리의 파트너가 될 것입니다. 우리는 우리의 파트너가 될 것입니다. 우리는 우리의 파트너가 될 것입니다. 우리는 우리의 파트너가 될 것입니다. 우리는 우리의 파트너가 될 것입니다. 우리는 우리의 파트너가 될 것입니다. 우리는 우리의 파트너가 될 것입니다. 우리는 우리의 파트너가 될 것입니다.

더 읽기: