EVE Online 및 WOW와 같은 MMORPG를 개발하는 데 어떤 언어가 사용됩니까? [닫은]


22

내가 이해하는 것처럼 MMORPG는 다른 일반 3D 비디오 게임처럼 컴퓨터에서 실행되는 게임이지만 게임에서 발생하는 각 작업마다 서버에 대한 HTTP 호출을 통해 유니버스가 변경됩니다. 따라서 플레이어 컴퓨터는 그래픽과 애니메이션 렌더링 측면에서 많은 노력을 기울이지 만 웹 프레임 워크는 온라인 통신을 수행합니다.

  • EVE Online 및 WOW와 같은 MMORPG를 만드는 데 어떤 웹 프레임 워크, 웹 서버 및 데이터베이스가 사용되고 있는지 궁금합니다.

  • 또한 클라이언트 측 (3d 그래픽 / 애니메이션 / 사운드)을 게임의 일부로 만드는 데 어떤 프로그래밍 언어와 3D 게임 엔진이 사용되고 있습니까?


나는 거의 모든 MMO가 기성품 기술로 시작하여 특정 크기로 성장하고 도구를 전문화하기 시작하면 지옥을 커스터마이징했다고 생각합니다. EVE Online의 스택리스 I / O는 환상적인 예입니다. eveonline.com/devblog.asp?a=blog&bid=584
Michael Stum

서버에 대한 TCP 호출을 의미합니까? HTTP (HyperText Transfer Protocol)는 웹 서버 및 웹 페이지 용 브라우저에서 사용되며 urbandead와 같은 브라우저 기반 게임을 의미하지 않는 한 MMO와 관련이 없습니다.
stonemetal

Michael Stum, Stackless I / O는 Stackless Python으로 만들어 졌습니까?

@Adam이 두 가지가 관련되어 있는지 여부는 알 수 없습니다.
Michael Stum

@Michael Stum 방금이 비디오에서 찾았습니다. us.pycon.org/2009/conference/schedule/event/91

답변:


30

대부분의 회사는 C ++를 사용합니다. Eve는 특이 치이며, 핵심 그래픽 엔진은 C ++에 있으며 게임 로직은 다른 사람들이 지적했듯이 Python입니다. CCP는 또한 스택리스 자체에 많은 공헌을하는데 이는 대부분 C에 있습니다. UI는 Lua로 스크립팅되지만 WoW는 게임 자체를위한 C ++입니다. Cryptic (Champions Online, Star Trek Online)은 일반 C를 사용하지만 업계에서는 다소 드물다. 자바는 이제 갑자기 나타납니다. Runescape이지만 AAA는 생각할 수 없습니다. 디즈니는 다수의 MMO에 Panda3D (C로 작성된 Python 기반 엔진)를 사용했지만 이브와 마찬가지로 드문 경우입니다.

전반적으로 게임 로직과 엔진의 경우 C ++처럼 보이며, 클라이언트 스크립팅을위한 Lua는 표준에 가장 가깝습니다.

웹 측면은 끝났습니다. 우리 (Cryptic)는 다양한 비트에 PHP, C 및 Python (Django)을 혼합하여 사용합니다. CCP는 웹 사이트 자체에 ASP를 사용하고 Python은 백엔드를 강화합니다 (느리게 표류하지만). WAR과 LOTRO는 모두 자신의 사이트에 PHP를 사용하지만 어떤 프레임 워크를 사용하고 있는지 확실하지는 않습니다.

MMO는 웹 API 호출을 통해 작동한다고 언급했지만 그렇지 않습니다. HTTP 기반 프로토콜은 너무 비효율적이며 HTTP는 오래 실행되는 연결을 위해 설계되지 않았습니다. Loathing 또는 Urban Dead와 같이 웹 기반이 아닌 거의 모든 MMO는 사용자 지정 서버와 사용자 지정 프로토콜을 사용합니다. 클라이언트는 매우 상태가 양호하며 인벤토리 UI를 가져 오는 등의 모든 작업은 클라이언트에 모든 정보가 캐시되므로 서버에 대한 요청을 발생시키지 않습니다.


coderanger 그래서 '클라이언트가 매우 상태가 양호합니다'라고 말할 때 클라이언트 앱이 모든 데이터를 저장하고 항상 서버에 요청을 보내는 것은 아니라는 것을 의미합니까? 또한 사용자 정의 서버 및 사용자 정의 프로토콜 개발에 대해 어떻게 학습합니까?

2
예, 네트워크 트래픽을 줄이려면 클라이언트는 일반적으로 모든 것이 서버에서 직접 오는 웹 게임과 달리 많은 정보를 로컬로 캐시합니다. 부정 행위를 막기 위해 서버는 여전히 권위적입니다. 이런 종류의 것을 개발하는 방법에 대해 배우십시오. "네트워크 프로그래밍"에 관한 책을 찾고 싶습니다. Twisted, Protocol Buffers 등을 도울 수있는 많은 도구가 있습니다. 많은 언어와 프레임 워크 중 가장 편한 언어에 따라 다릅니다.
coderanger

3
Panda3d는 C가 아닌 C ++로 프로그래밍되었습니다.
jokoon

5

이브 온라인에 대한 몇 가지 링크 :

기본적으로 EVE Online은 SQL Server 2005 및 기타 Microsoft 소프트웨어에서 실행됩니다. 클라이언트 백본은 대부분 파이썬으로 작성되었지만 (필자가 기억할 수있는 정확한 스택리스 파이썬) 일부 C ++이 가장 가능성이 높습니다.

월드 오브 워크래프트에 관해서는 모든 클라이언트 GUI에 Lua를 사용한다는 것을 알고 있지만 다른 것에는 Lua를 사용하지 않는다고 생각합니다. C ++이 사용 된 것 같습니다. 와우, 일부 Windows 상자도 사용한다고 생각하지만 Windows 기반이 아닐 수도있는 특정 작업과 관련된 다른 유형의 상자가있을 것 같습니다.

많은 정보는 아니지만 도움이되기를 바랍니다.

이러한 많은 게임은 기능에 따라 서버를 분리하므로, 오브젝트 / 무엇을 저장하는 책임이있는 데이터베이스 서버와 실제로 게임 세계를 실행하는 서버 (플레이어 조치 확인 등)가 있습니다.


3

나는 EVE와 WoW에 대해 잘 모르겠지만 MMO 게임이 서버에 C ++, C #, Java 및 PHP를 사용하는 것을 보았습니다 (후자는 단순한 브라우저 기반 게임에만 해당).

클라이언트는 대부분 C ++ (또는 브라우저 기반 게임 인 경우 Flash)로 작성됩니다. .NET 기반 클라이언트로 한 번 작업했습니다 (C #이 C ++ / CLI와 혼합 됨).

그리고 거의 항상 어떤 종류의 동적 스크립팅 언어가 자주 변경되는 능력, 퀘스트 등과 같은 "디자이너"컨텐츠 개발을 용이하게하는 데 사용되며 프로그래머와 달리 게임 디자이너가 변경할 수 있습니다.


3

첫째, MMORPG 또는 온라인 게임은 우선 HTTP 또는 "웹 프레임 워크"를 사용하지 않습니다.

서버는 C ++에서 게임 자체와 같이 프로그래밍되며 소켓을 사용하여 네트워크를 통해 패킷을 전송함으로써 통신이 이루어집니다.

서버는 종종 다른 OS를 실행하고 게임 코드 만 포함하므로 많은 플레이어가 단일 서버에서 원활하게 재생할 수 있습니다.

블리자드가 서버를 관리하는 방법을 모르겠습니다. 클러스터를 사용하는지 여부를 모르겠습니다.

물론 "소켓"과 "C ++"라고 말하면 실시간 게임에 대해 이야기하고 있습니다. 예를 들어 와우와 같은 병기 같은 게임이 제공 할 수있는 다른 서비스는 아닙니다. 그들은 포럼, 병기, 게임, 계정 관리 등과 같은 여러 서비스에서 읽을 수있는 데이터베이스를 사용할 수 있지만 내 생각은 새로운 항목 등을 찾는 종속 데이터베이스가 있으므로 모든 것이 동기화 될 수 있다는 것입니다. 멋지게.

WoW의 네트워크 부분을 담당하는 사람은 정말 나쁜 것 같습니다.


3
"WoW의 네트워크 부분을 담당하는 사람은 정말 나쁜 것 같습니다." 제 생각에 작은 서버 인구와 클라이언트 측 움직임은 실제로 나쁜 조립을 만들지 않습니다. 비록 후 시도 20/20이지만.


0

거기에는 수십 개의 게임 엔진이 있습니다. 내 마음에 떠오르는 두 가지는 언리얼 엔진과 소스입니다.

언어는 작업에 따라 다릅니다. 렌더링 및 기타 성능 결정적인 부분은 일반적으로 모국어 중 하나로 수행됩니다. 예를 들어 C ++. 그러나 스크립트를 정의하기 위해 일부 동적 언어를 사용하는 것이 일반적입니다.이 코드는 변경 가능성이 높고 종종 '하드 코어'프로그래머가 작성하지 않기 때문입니다.-) Lua, Python, Ruby-모두 여기에서 사용할 수 있습니다.


0

WoW는 모든 내부 스크립팅에도 Lua를 사용합니다. 그들이 언어 자체를 수정했는지는 확실하지 않지만, 필요에 맞게 언어를 의심하지는 않습니다. 디자이너가 스크립트를 쉽게 수정 / 조정할 수있는 다양한 도구가있을 수 있습니다. 이것은 WoW 개발자로 사용되는 내 친구들의 내부 정보입니다.


Lua와 같은 언어를 수정하면 Lua를 기반으로하는 고유 한 개인 프레임 워크를 만드는 것입니다. 옳은? 그렇다면 개발 된 프로그램의 성능 / 속도가 저하됩니까?

@ J3M7OR3-Lua를 기반으로 자체 내부 프레임 워크를 만들었 음을 이해하지만 성능 / 속도에 대해서는 말할 수 없었습니다.
Kyle C
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.