문제

프로젝트 다크스타 월간 화두였죠 자바SIG 어젯밤 뉴욕의 Google 사무실에서 만났어요.모르는 사람들 (아마도 모두)을 위해 Project Darkstar는 모든 "하드 물건"을 처리하려는 대규모 멀티 플레이어 온라인 게임의 프레임 워크입니다. 기본 아이디어는 모든 작업이 작은 작업으로 나뉘어지는 방식으로 게임 서버 로직을 작성한다는 것입니다.이러한 작업을 클러스터의 특정 노드에 배포하고 동시성 문제를 해결하고 최종적으로 데이터를 유지하는 작업을 처리하는 Project Darkstar 프레임워크에 전달합니다.

분명히 이런 종류의 작업을 수행하는 것은 엔터프라이즈 응용 프로그램의 경우와 비디오 게임의 경우 훨씬 다른 문제입니다.강의를 진행한 Jim Waldo는 MMO 게임의 DB 읽기/쓰기 비율이 50/50인 반면, 기업용 앱은 읽기 90%, 쓰기 10%에 가깝다고 주장합니다.그는 또한 대부분의 기존 MMO가 모든 것을 메모리에 독점적으로 보관하고 6시간마다 DB에만 덤프한다고 주장합니다.즉, 서버가 다운되면 마지막 DB 덤프 이후의 모든 작업이 손실됩니다.

이제 프로젝트 자체는 정말 멋있게 들리지만 업계에서는 이를 받아들일 것 같지 않습니다.먼저, 서버 코드를 Java로 작성해야 합니다.클라이언트 코드는 무엇이든 작성할 수 있지만(Jim은 ActionScript 3이 가장 널리 사용되며 그 다음은 C++라고 주장함) 서버 관련 코드는 Java여야 합니다.듣기에는 좋은 것 같지만 게임 업계의 모든 사람들이 Java를 싫어한다는 인상을 받았습니다.

둘째, 개발자가 기존 프레임워크와 라이브러리를 사용하는 것을 선호하는 다른 업계와 달리 게임 업계의 사람들은 모든 것을 직접 작성하는 것을 좋아하는 것 같습니다.뿐만 아니라 그들은 자신들이 제작하는 모든 새로운 게임의 모든 것을 다시 작성하는 것을 좋아합니다.개발자가 물리학에 Havok을 사용하고 플랫폼으로 Unreal Engine 3를 사용하는 경우 상황이 바뀌기 시작했지만 대부분의 경우 모든 것이 여전히 독점인 것처럼 보입니다.

그렇다면 Project Darkstar의 사람들은 단지 시간을 낭비하고 있는 것일까요?이와 같은 일반 프레임워크가 필요한 성능을 갖춘 복잡한 게임에 실제로 작동할 수 있습니까?설령 성공하더라도 게임회사에서는 이를 사용할 의향이 있을까요?

도움이 되었습니까?

해결책

편집하다:이것은 Oracle이 Sun을 인수하고 하루에 10억 달러를 벌지 못하는 모든 것을 죽이기 위해 날뛰기 시작하기 전에 작성된 것입니다.OSS 포크에 대한 설명을 참조하세요. 나는 여전히 그런 것(MMO 미들웨어)이 현실적이라는 내 의견을 고수합니다. 단지 그런 것에 뒤처지지 않는 회사가 필요할 뿐입니다.

시장은 소수의 대형 게임에 의해 지배될 수 있지만 이것이 더 많은 틈새 게임을 위한 공간이 많지 않다는 것을 의미하지는 않습니다.현실을 직시하자:100,000명 이상의 플레이어에 도달하려면 최소한 핵심 핵심에 대해서는 자체 기술 스택을 구축하게 됩니다.이것이 바로 CCP가 EVE Online을 위해 한 일입니다(스택리스IO), 이것이 바로 Blizzard가 World of Warcraft에 대해 수행한 작업입니다(그들은 많은 타사 라이브러리를 사용하지만). Mythic이 Warhammer Online에 대해 수행한 작업입니다(비록 Gamebryo를 기반으로 함).

그러나 소규모의 틈새 MMO(예: 수십 개의 무료 플레이/아이템샵 MMO)를 목표로 한다면 네트워크를 제대로 만드는 것이 엄청나게 어렵고, 데이터 일관성은 더욱 어렵고 확장성은 가장 큰 b*입니다. 쯧.

하지만 게임 기술만이 유일한 문제는 아닙니다. 결제 문제도 해결해야 합니다.신용카드만?그러면 독일에서 즐겁게 판매하세요. 그곳 사람들은 ELV를 원합니다.여기에는 신뢰할 수 있는 청구 공급자가 필요하지만, 청구가 실패할 경우 계정이 차단/재활성화되도록 하려면 계정과 함께 청구 애플리케이션을 연결해야 합니다.

이미 "MMO 인프라 서비스"를 제공하는 일부 회사가 있습니다(예: Arvato의 EEIS) 그러나 결론은 다음과 같습니다.Project Darkstar와 같은 것은 현실적이지만 타사 스택에서 완전히 수십억 MMO를 구축할 수 있다고 가정하는 것은 낙관적이거나 이상주의적일 수 있습니다.

그러나 모든 기술을 완전히 발명하는 것은 훨씬 더 어리석은 일입니다. 필요한 제3자 제품을 사용하십시오(예:청구, 글꼴 렌더링, 오디오 출력...), 하지만 당신의 사업을 실제로 성사시키거나 망가뜨리는 내용을 쓰십시오. (즉.네트워크 스택, 사용자 인터페이스 등)을 자체적으로 관리합니다.(메모:Jeff의 게시물은 다음과 같을 수 있습니다. 약간 결함이 있음, 그러나 전체적인 방향은 정확합니다. IMHO.)

부록:또한 게임 산업에서는 엔진 라이선스를 취득하고 재사용하는 경우가 많습니다.가장 눈에 띄는 게임 엔진은 언리얼 엔진, 소스 엔진 그리고 아이디테크, 수백 개의 게임은 아니더라도 수십 개의 게임을 제공합니다.그러나 덜 알려진(업계 외부) 엔진도 있습니다.있다 게임브리오, Civilization 4 및 Fallout 3와 같은 게임 뒤에 있는 미들웨어가 있었습니다. 렌더웨어 이는 현재 EA-in-House에만 해당되지만 Battlefield 2 또는 The Sims 3와 같은 게임에서 사용됩니다.오픈소스가 있어요 오우거3D, 에서 사용된 일부 광고 제목.사운드만 찾고 있다면 다음과 같은 것들이 있습니다. FMOD 또는 글꼴 렌더링을 수행하고 싶다면 제공하지 않으시겠습니까? 프리타입 스핀?

내가 말하는 것은:타사 엔진/미들웨어가 존재하며 10년 이상 동안 성공적으로 사용되고 있습니다(id의 Wolfenstein 엔진이 다른 회사에 라이센스가 부여된 것은 1992년이었습니다). 심지어 수백만 달러 규모의 대기업에서도 성공적으로 사용되고 있습니다. 달러 제목.중요한 것은 지원입니다. 문제가 발생한 경우 도움이 없는 좋은 엔진은 개발자가 불필요한 엔진 디버깅으로 게임 개발 시간을 소비해야 한다면 거의 쓸모가 없거나 적어도 매우 비용이 많이 들기 때문입니다.

Darkstar 사람들이 지원 측면을 제대로 확보하고 2~3개의 상위 프로필 타이틀을 출시한다면 훨씬 더 소규모 개발자와 인디에게 MMO 시장을 개방하는 데 성공할 수 있다고 믿습니다.

다른 팁

나에게는 쓸모없는 기술처럼 들린다.MMO 세계는 이미 자체 기술을 보유하고 있는 몇몇 대형 게임 회사에 의해 통제되고 있습니다.인디 게임 개발자들은 MMO를 만드는 것을 좋아하고 때로는 그렇게 하지만 이러한 게임은 거의 관심을 끌지 못합니다.MMO 세계에 진출하는 대기업은 아마도 "검증된" 기술을 라이센스하거나 자체 기술을 확장할 것입니다.

게임 회사는 게임마다 방대한 양의 코드를 재사용합니다.대부분의 게임 회사는 내부적으로 자체 기술을 개발하여 제작하는 모든 게임에 이를 사용합니다.때때로 물리 코드를 타사 물리 엔진으로 교체하는 등의 작업을 수행하기도 합니다.내부 코드 베이스(게임 엔진, 디자인 도구, 내부 파이프라인)가 너무 노후화되거나 다루기 어려워지면 Unreal과 같은 대형 게임 엔진 중 하나로 전환할 수 있습니다.그럼에도 불구하고 주요 코드 덩어리는 게임마다 계속 재사용됩니다.

내가 알 수 있는 바에 따르면, 비디오 게임 회사는 대부분의 코드를 재사용하지 않습니다. 왜냐하면 만약 그렇게 한다면 그들의 새 게임이 단지 오래된 게임을 재탕한 것일 뿐이라는 것을 의미하기 때문입니다.

음...비디오 게임 회사의 롱테일을 말하는 것이라면 아마도 그럴 것입니다.일련의 성공적인 게임을 보유한 회사 내에서는 일반적으로 어느 정도 재사용이 이루어집니다.주요 하드웨어 변경으로 인해 많은 작업이 중단될 수 있지만 실제로는 회사에 따라 다릅니다.

디자인하고 코딩하는 것이 재미있을 것 같지만 결국에는 다음과 같은 문제가 발생한다고 생각합니다. 쓸모없는 추상화 (조엘에게서 훔치기 위해).

게임에서 "게임 엔진"을 재사용하는 것은 매우 일반적이며, 심지어 타사의 엔진도 마찬가지입니다.이것은 그 방향으로 나아가는 또 다른 단계처럼 들립니다.

나는 그것이 대단한 일이라고 생각한다.개발자는 darkstar 프로젝트가 처리하는 이러한 모든 사항에 대해 걱정할 필요가 없으며 사용도 매우 쉽습니다.하지만 단순히 작동시키는 것이 전부가 아니며 인터넷 통신에 대한 모든 것을 배울 필요도 없습니다. 성능도 중요합니다.프로젝트 다크스타(Project darkstar)는 2년 넘게 개발 중이며 계속해서 더 좋아지고, 더 빠르고, 더 강력해지고 있습니다.

이런 기술을 대신 사용할 수 있는 특정 게임을 목표로 할 때 이러한 내용을 작성하는 것은 어려울 것이며 아마도 시간을 투자할 가치가 없을 것이라고 생각합니다.또한 런타임 중에 애플리케이션의 어느 부분에서 속도 저하나 교착 상태가 발생하는지 알려주는 유용한 정보를 얻을 수 있으므로 이를 개선할 수 있습니다.

나는 게임 업계에서 일하지 않지만 이것이 Quake 및 Half-Life 엔진과 마찬가지로 비디오 게임에도 동일한 역할을 할 것으로 보입니다.즉, 젊은 개발자들이 업계에 관심을 갖도록 유도하고 인디 게임 개발을 촉진할 것입니다.

내가 알 수 있는 바에 따르면, 비디오 게임 회사는 대부분의 코드를 재사용하지 않습니다. 왜냐하면 만약 그렇게 한다면 그들의 새 게임이 단지 오래된 게임을 재탕한 것일 뿐이라는 것을 의미하기 때문입니다.누구나 멋지고 새로운 물리 엔진, 더 나은 그래픽, 게임을 플레이하는 새로운 방법을 원합니다.대부분의 비디오 게임 엔진과 프레임워크는 특정 시나리오를 위해 만들어졌기 때문에 다른 상황에 잘 적응하지 못합니다.

어쩌면 Darkstar가 제대로 해낼 수도 있지만, 일반화는 너무 많은 일에만 효과가 있기 때문에 다소 의심스럽습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top