멀티 플레이어 브라우저 기반 게임을 만들고 싶습니다. 애플릿 사용에 대한 좋은 점은 클라이언트와 서버를 동일한 언어 (java / closure / scala / etc)로 만들 수 있다는 것입니다. html5와 javascript가 있지만 서버 측 javascript는 jvm 플랫폼만큼 성숙하지 못하며 브라우저 지원은 여전히 잘못됩니다.
애플릿은 널리 사용되지 않는 것 같지만 (Runescape 제외) 애플이 부적합한 이유가 있거나 초기에 개발 한 평판이 나쁘기 때문입니까?
답변
RuneScape 및 Minecraft 및 기타 작은 Java 애플릿 게임 에서 알 수 있듯이 분명히 적합하지 않습니다 . 하드웨어 가속 3D 그래픽 ( LWJGL , JOGL ) 용 라이브러리도 있습니다 . 게임 개발 커뮤니티에서 인기있는 언어는 아닙니다.
그래도 지원되는 플랫폼을 고려해야합니다. Windows와 Linux에는 훌륭한 Java 플러그인이 있으며 Mac에는 괜찮은 플러그인이 있습니다 (제 경험상 Safari에서 최고 속도로만 작동합니다). 그러나 iPad 및 Google의 Chrome OS와 같은 플랫폼은 그렇지 않을 것이므로 완전히 놓칠 것입니다. Java VM을 사용하십시오.
답변
Java를 사용하여 게임을 작성하고 C ++을 사용하여 게임을 작성했으며 Java의 강점과 약점을 염두에 두는 한 Java가 훌륭하다는 것을 알았습니다. Java 프로그래밍의 가장 큰 두 가지 장점은 개발 속도와 배포 가능성 / 이동성입니다. 컴파일 시간은 VC ++ (XCode 또는 Clang에 대해서는 말할 수 없음)보다 훨씬 빠르므로 문제를 훨씬 빨리 해결할 수 있습니다. 또한 Eclipse가 지속적으로 컴파일되면서 오타 유형 오류가 줄어 듭니다. 다른 시스템이나 컴파일러에서 작동하는 C ++ 코드를 작성한 적이 없습니다. 자바에서는 이것이 표준입니다.
반면에 Java에는 몇 가지 주요 단점이 있습니다. 효율성은 종종 Java를 사용하지 않는 이유에 따라 결정되지만 특정 방식으로 코딩하는 한 Java가 성능이 우수하다는 것을 알았습니다. 문제는 코딩해야 할 특정 방법이 많은 Java 사람들이 좋은 디자인을 고려하는 것과 반대되는 것입니다.
Java의 핵심은 ‘가비지 수집기’이며 메모리 관리 시스템입니다. 효율적인 코드를 작성할 때 모든 언어의 모든 프레임에서 동적 할당을 피하려고합니다. 이는 특히 Java에 해당됩니다. 너절한 새로 인해 가비지 수집기를 끄면 부드러운 프레임 속도로 작별 인사를 할 수 있습니다. 둘째, (그리고 가장 성가신) Java는 1 급 사용자 데이터 형식을 지원하지 않습니다. Java의 모든 사용자 데이터 유형은 기본적으로 힙에 할당 된 클래스에 대한 포인터로 인스턴스화됩니다. 이것은 Vector3 객체 배열과 같은 것을 가질 수없고 메모리에 동시 적으로 가질 수있는 캐시 동시성에 대해 끔찍합니다. Vector3 포인터 배열을 가질 수는 있지만 전혀 같은 것은 아닙니다. 일반적으로 대신 기본 유형의 큰 배열에 오프셋을 사용해야합니다.
답변
웹 게임을위한 Java 애플릿에는 문제가 없습니다. Java 로 오픈 소스 로그 라이크 게임 ( Tyrant )을 작성했으며 애플릿처럼 잘 작동합니다.
내 경험상 Java의 큰 장점은 다음과 같습니다.
-
이식성이 우수합니다. Tyrant의 복잡성을 감안할 때 Windows, Mac 및 Linux에서 정확히 동일한 컴파일 코드를 실행하는 것이 매우 인상적이었습니다.
-
브라우저 단점에 대해 걱정할 필요가 없습니다.
-
약간의 영리함을 통해 동일한 코드를 애플릿 또는 독립형 데스크톱 응용 프로그램으로 실행할 수 있습니다.
-
최신 JVM을 가정하면 성능이 뛰어납니다.
-
다양한 오픈 소스 라이브러리 / API 등의 관점에서 Java의 모든 일반적인 장점
다음 사항에 유의하십시오.
-
로컬 파일 시스템에 데이터를 저장하거나 기본 라이브러리에 액세스하는 등의 작업을 수행하려면 애플릿에 서명하고 특권 권한을 얻어야합니다. 이것은 일부 사용자에게 장애물이 될 수 있습니다.
-
시작 시간은 Flash 또는 JavaScript보다 약간 느리게 나타납니다. 반면에 JVM이 실행되면 성능이 향상됩니다.
-
Java는 가비지 수집 언어이므로 간혹 GC가 약간 일시 중지됩니다. 캐주얼 / 롤 플레잉 / 전략 게임에는 실제로 문제가되지 않지만 일정한 지터가없는 120FP 프레임 속도를 유지하려는 고성능 3D FPS 타이틀에는 문제가 될 수 있습니다.
답변
게임을 프리웨어로 계획하거나 혼자서 돈을 벌 수 있도록 준비하고 있다면 Java는 괜찮습니다. 그러나 Flash처럼 널리 보급 된 게임 스폰서 십 모델이 없기 때문에 현금을 만드는 것이 조금 더 어려울 것입니다.