2009-10-21 2 views
3

사용자가 가능한 한 많이 수정하고 사용자 지정할 수있게하려는 프로젝트에서 작업하고 있습니다.Lua는 게임 서버를위한 최고의/가장 빠른 선택입니까?

오픈 소스가 좋은 선택 일 수는 있지만 내부 클래스를 닫아두고 싶지는 않습니다.

내가 생각한 또 다른 두 가지 옵션은 외부 라이브러리와 Lua 스크립팅입니다.

라이브러리 (DLL)의 문제점은 플랫폼 간 호환성은 게임 서버의 일종이며 주로 전용 서버 (주로 Linux) 용으로 설계 되었기 때문에 반드시 있어야한다는 점입니다. 그러나 많은 사람들이 로컬 컴퓨터 (주로 Windows)에서 사용하십시오.

게임 성능과 관련된 많은 작업과 작업을 처리 할 수 ​​있어야하는 게임 서버 응용 프로그램이므로 Lua 스크립트에 의문을 가질 수 있습니다.

나의 의심이 합리적입니까, 아니면 루아가 좋은 해결책이 될까요? 또한 내 관심사에 대해 더 나은/다른 옵션을 생각할 수 있습니까? (-> 온라인 게임)

  • 플러그인/사람이 그/그녀만큼 만들 수있는 스크립트

    • 크로스 플랫폼 호환성
    • 좋은 성능 :

      는 중요한 측면을 요약하면 언어에 대해 알고는 루아, C 또는 닫힌 소스 플러그인/그렇게 중요하지 스크립트 (대한 어떤

    • 옵션이 될 수 있지만, 잘 될 것입니다 :
  • 답변

    5

    루아가 너를 위해 충분히 빠르면 대답 할 수있는 유일한 사람은 두려워 ... 너. 정확히 무엇을하고 있으며 어떻게 구현하고 있는지 전혀 알 수 없습니다. 내 제안은 프로토 타입을 작성하고 측정하는 것입니다. Lua와 C/C++ 모두에서 시스템의 작지만 관련성있는 부분을 작성하고 두 가지 성능을 측정하고 Lua가 충분히 빠르다고 판단하십시오. 와우를 사례 연구로 생각하면 루아는 클라이언트/UI 부분에 충분히 빠르지 만 서버에 대해서는 아무 것도 말할 수 없습니다. 하지만 어쨌든 루아와 비교하여 더 빠르고 쉽게 임베딩 할 수있는 언어는 없습니다. (면책 조항 : Lua 성능을 직접 측정하지 않았으며 특히 다른 유사한 언어와 비교하지 않았습니다.)

    크로스 플랫폼이 아닌 DLL에 대해 언급 했으므로 FYI : 플러그인에 DLL을 사용하고 DLL을 동적으로로드하려면 Linux에서도 동일한 기능이 필요합니다. "DLL"은 "공유 라이브러리"또는 "공유 객체"라고하며 보통 .so 확장자로 사용됩니다. LoadLibrary, GetProcAddressFreeLibrary 대신, dlopen, dlsymdlclose이 있습니다.

    +0

    지난 일은 너무 바빴습니다. 도움을 주셔서 감사 드리며, 저는 LUA를 가능한 빨리 시험해 보겠습니다. 내 서버 앱이 대상으로하는 게임은 워크래프트 III입니다. 많은 사람들이 50-100ms와 같은 일부 맵에서 매우 낮은 응답 시간에 매우 우선 순위를 두었습니다. 그래서 나는 성능에 대해 걱정하고 있습니다. 동적 라이브러리의 문제점은 Linux와 같은 저장소에 패킷 관리를 제공하고 싶다는 것입니다. 하지만 크로스 플랫폼 인 프리 컴파일 된 물건을 제공 할 가능성은 의심 스럽습니다. 어쩌면 이전에 언급 했어야 만하지만 고마워요. – Spoofy

    2

    애플리케이션에서 다른 모듈에 대해 다른 라이센스를 제공하는 것을 막을 수있는 방법은 없습니다. 분명히 GPL 3을 사용하면 모든 것을 즉시 커버 할 수 있습니다.

    +0

    모듈 결합 방식에 따라 GPL 2가 작동하지 않을 수도 있습니다.일반적으로 동적 연결은 GPL 라이센스가 다른 모듈에 적용되지 못하게하는 '방화벽'이 아닙니다. 모듈을 별도의 프로세스로 호출하면 대개 GPL 라이센스가 프로세스 경계에 적용되지 않을 수 있습니다. –

    +0

    LGPL은 어떻습니까? – Lazarus

    +0

    빠른 답장에 대해 감사드립니다. 어쩌면 내 discription 약간 오해하지만 내 관심사는 사용 권한이 아니라 LUA가 속도가 매우 높은 우선 순위 인 게임 서버 응용 프로그램에 대해 충분히 빨리 수행 할 수 있는지 여부입니다. 누구라도 좋은 옵션을 생각할 수없는 경우는, – Spoofy

    1

    AngelScript에 대해 생각해 본 적이 있습니까? 나도 그것에 대해 많이 알지는 못하지만 C++과 같은 문법을 사용하는 것으로 보이며 매우 유연하고 극도의 크로스 플랫폼입니다.

    +0

    그리고 C API를 사용하는 Lua와는 달리 C/C++를 완벽하게 OOP C++ API를 사용합니다. –

    관련 문제