종료되었습니다. 이 질문은
주제에서 벗어남 입니다. 현재 답변을 받고 있지 않습니다.
댓글
Answer
예, 이 목록 에서 증거를 확인하세요. LWJGL (Lightweight Java Game Library)을 사용하여 Java로 만든 게임입니다. 고품질 그래픽에는 OpenGL을, 사운드에는 OpenAL을 제공하는 저수준 프레임 워크입니다. 입력 API도 제공합니다. 이것들을 사용하면 자바로 진지한 게임 개발을 아주 쉽게 시작할 수 있습니다.
저는 현재 Java로 취미 프로젝트로 두 번째 3D 게임을 작성하고 있습니다. 과거에는 C ++로 게임을 작성했지만 Java로 전환 한 후에는 되돌아 갈 수 없습니다. Java로 여러 운영 체제를 지원하는 것은 매우 쉬울 수 있습니다. 예를 들어 Windows에서 1 년 동안 개발 한 이전 Java 게임은 Linux에서 즉시 작업했으며 OS X에서는 해당 플랫폼에서 아무것도 컴파일 할 필요없이 버그가 하나뿐입니다.
반면에 Java에서는 몇 가지 문제가 있습니다.
- 쓰레기 수집기. 다른 사람들이 말했듯이 비 결정적 메모리 관리는 문제이며이를 염두에두고 코딩해야합니다.
- 타사 라이브러리 부족. 사용 가능한 대부분의 라이브러리는 Java를 지원하지 않습니다. 반면에 Java에서 이러한 네이티브 라이브러리를 호출 할 수도 있지만 더 많은 작업이 필요합니다. 인기 라이브러리에 사용할 수있는 Java 포트 또는 기성품 래퍼도 있습니다 (예 : I “m using JBullet-Bullet Physics Library의 Java 포트 . 반면 Java에는 거대한 클래스 라이브러리가 내장되어있어 게임과 관련이없는 타사 라이브러리의 필요성을 줄여줍니다. 라이브러리 부족은 나에게 문제가되지 않았지만 다른 사람들에게도 문제가 될 수 있다고 생각합니다.
- Java는 인기있는 게임 콘솔에서 지원되지 않으며 지금까지 Java에서 쉽게 전환 할 수 없습니다. 내가 아는대로. 반면에 인기있는 모바일 플랫폼 인 Android는 어떤 형태의 Java를 사용합니다. 이것은 또한 옵션이지만 PC와 Android 장치에서 모두 작동하는 동일한 Java 코드를 제외하고는 안됩니다.
- 소규모 커뮤니티. 대부분의 게임 프로그래머는 C ++를 사용하며 제 경험상 Java를 싫어하는 경우가 많습니다. Don ” t 다른 사람들로부터 많은 도움을 받기를 기대합니다. C ++ 기술 없이는 게임 개발 분야에서 일할 것으로 기대하지 마십시오.
답변
그렇지 않습니다. 여기 “첫째, C ++ 용 가상 모든 것 에 비해 Java 용 기존 라이브러리가 거의 없습니다.
둘째, Java를 단순히 언어로 “게임 개발에 적합하지 않습니다. 예를 들어,”GPU 버퍼를 처리하는 경우 Java는 올바르게 잠금 및 잠금 해제 또는 폐기되었는지 확인하는 데 도움이되는 언어 기능을 제공하지 않습니다. C ++ 게다가 성능 문제가 있습니다. GC는 비 결정적입니다. 이는 게임에 매우 좋지 않습니다.
나는 한 번도 인디가 아닌 게임에서 실행 전에 네이티브 코드로 컴파일되지 않은 언어와 그렇게하는 인디 게임조차도 드뭅니다.그래서 지금 당장은 그렇게 할 수 없다고 생각합니다.
또한 지금 Java를 계속 배우고 개선하면 나중에 알게됩니다. C ++를 배워야합니다. 전환이 어려울까요?
예, 물론입니다. 자바와 C ++는 피상적 인 구문 유사성에도 불구하고 매우 다릅니다. Java 경험은 C ++를 배울 때 사실상 아무것도 중요하지 않습니다.
그래픽을 통한 게임 플레이는 실행 가능한 선택이며 Terarria 및 Minecraft와 같은 게임의 성공에서이를 확인할 수 있습니다. 하지만 srs 그래픽을 만들려고한다면 Java에서는 불가능합니다.
Comments
답변
그래서 저는 게임 개발, Java는 여전히 실행 가능한 선택입니까? C ++를 배우기 위해 여러 번 시도했지만 언어가별로 마음에 들지 않습니다. 이유는 모르겠지만 일반적으로 배우려고 할 때마다 주제를 파악할 수 없습니다.
Java를 선택하는 이유가 C ++를 이해할 수 없기 때문이라면 Java 프로그램이 고품질 그래픽을 위해 충분히 빠르지 않을 것입니다. 높은 수준의 언어를 사용하는 것은 생산성을 높이기 때문이되어야합니다. 낮은 수준의 언어를 이해할 수 없기 때문이 아닙니다.
나는 게임을 작성하는 것이 완전히 나쁜 생각이라고 생각하지 않습니다. Java, 특히 게임이 단순하지만 “버팀목으로 사용하는 경우 Java에서 즉시 성능 문제가 발생합니다.
간단히 말해서 진지한 게임 개발을 위해 Java를 진지하게 받아 들일 수 있습니다. 여기에는 무거운 그래픽, 지연없는 빠른 게임 플레이, 그리고 콘솔로의 쉬운 전환이 포함됩니다.
-
무거운 그래픽 : 가능하지만 C ++ / GL에서와 동일한 작업을 Java / LWJGL에서 수행 할 것입니다. GPU 버퍼에 바이트 쓰기 및 / 또는 Minecraft처럼 사용되지 않는 디스플레이 목록. 메모리 관리를 “이해하지 못하면”올바르게 수행하지 못할 것입니다.
-
지연없는 빠른 게임 플레이 : 어떤 언어로도 쉬운 작업이 아니며 “생각하지 않고 어느 쪽이든 자신의 발을 쏠 가능성이 더 큽니다.
p>
-
아니요, Java는 콘솔에서 사용할 수 없습니다.
댓글
Answer
전문가 전문 프로그래머는 일반적으로 많은 프로그래밍 언어를 알고있을 것입니다. 프로그래밍 언어를 잘 알고 나면 추가 프로그래밍 언어를 배우는 것이 그리 어렵지 않습니다. 그러나 저는 C ++가 첫 번째 언어가 아니고 아마도 두 번째 언어가되어서는 안됩니다.
C ++는 중요한 런타임 오류 검사를 수행하지 않음으로써 많은 효율성을 얻을 수 있기 때문입니다. 예를 들어 Java에서 배열 끝의 요소에 액세스하면 항상 프로그래머에게 정확히 무엇이 잘못되었는지 알려주는 예외가 발생합니다.C ++에서는 운이 좋을 수 있으며 즉시 충돌이 발생하지만 매우 자주 일부 다른 데이터를 자동으로 폐기하고 오류가 훨씬 더 나중까지 표시되지 않습니다. .
지금은 Java를 사용하는 것이 좋습니다 (또는 원하는 경우 C #으로 전환). 그러면 C ++를 사용하는 것보다 더 빨리 작업을 수행 할 수 있으며 PC에서의 성능이 문제가되지 않아야합니다.
안전한 언어로 몇 가지 프로젝트를 완료 한 후 C ++를 배우는 것에 대해 생각해보십시오. C ++는 대부분의 전문적인 게임 개발 작업에 필요한 것입니다.
C # / XNA를 제외하고 콘솔에 작성한 게임은 최소한 회사를 설정해야합니다. 개발 하드웨어 및 기타 비용에 사용할 수있는 많은 예산이 있습니다.
댓글
답변
면책 조항 : 이것은 귀하의 질문에 정확히 대답하지 않습니다. 그러나 나는 당신이 관심을 가질만한 몇 가지 요점을 (간단하게) 언급하려고 시도했습니다.
C ++에 대해 많이 보는 이유는 C ++가 여전히 업계 표준 (콘솔 등에서 가장 일반적인 언어)이기 때문입니다.
Java는 자주 사용되지 않습니다. Minecraft는 Java로 크게 만든 꽤 인기있는 게임입니다. 하지만 그래픽 적으로는 그리 대단하지 않습니다. Spiral Knights도 나쁘지 않습니다. Java로도 만들어졌고 상당한 그래픽이 있습니다.
Java를 좋아한다면 C #은 구문이 매우 유사하고 할 수있는 이점이 있습니다. C ++와의 상호 운용-필요한 경우 C ++에서 저수준 작업을 수행 할 수 있습니다. Unity는 스크립팅에 C #을 사용할 수 있으며 XNA는 훌륭한 선택입니다.
다시 말하지만 Java는 널리 사용되지 않습니다. 스타일과 구문을 고려할 때 “C #이 매우 유사하고 즐거운 코딩 경험이 될 것입니다.
꿈이 이루어지기를 바랍니다. p>
댓글
답변
이봐, “Is Java viable for game dev “는 명백한 예입니다. 모든 프로그래밍 언어를 사용하여 게임을 만들 수 있습니다. 그렇다고해서 를 사용해야하는 것은 아닙니다.
아마도 C ++ ( 낮은 수준의 메모리 관리, 가비지 수집기 없음, 포인터에주의해야 함, 배열과 같은 구조체 등) 는 컴퓨터를 악용하려는 경우 배워야 할 바로 그 것입니다. 리소스를 가장 효율적으로 .컴퓨터의 리소스를 가장 효율적으로 활용하는 경우 게임이 가장 잘 실행됩니다.
Java는 속도를 느리게 만드는 몇 가지 작업 (예 : 배열 경계 검사)을 수행합니다. 이 최적화 된 Java Perlin 노이즈 예제 코드에서 저자는 “(배열 액세스가 멤버 액세스보다 훨씬 느립니다)”라고 말했습니다. 이런 종류의 것은 C ++ 배경에서 비롯된 매우 직관적이지 않습니다. Java, 그런 것들이 있습니다.
총알을 피하고 C ++를 배우고 사용하십시오.
Answer
이것은 귀하의 질문에 대한 답변이 아닙니다. 그래픽 및 콘솔 문제는 매우 고려해야 할 사항 인 것 같습니다. 또한 GC는 성능에 영향을 미칩니다. 하지만 내가 쓴 내용 :
크고 복잡한 OO 프로그램을 작성하는 경우 C ++보다 Java로 5 배 더 빠르게 작성합니다. 또한 유지 관리가 훨씬 쉬워집니다. 나는 (비 게임 소프트웨어의 경우 인정됨) 전환했고 생산성이 급증했습니다. 또 다른 좋은 대안 인 C #은 자바보다 배우기가 더 어렵습니다. 더 많은 것이 있기 때문입니다. 알고 있으면 자바보다 훨씬 빠르게 코드를 작성할 수 있으며 많은 트릭을 제공합니다. 그러나 이러한 트릭을 발견했습니다. 유지 관리를 어렵게 만들 수 있습니다. 그리고 Sun 라이브러리 및 자신의 이전 코드를 지원하는 “Java 문서”가 있습니다. C #은 그다지 좋아하지 않습니다.
저는 자바로 큰 게임을했고 언어가 완벽하다는 것을 알았습니다.하지만 제 그래픽은 초보적이었고 1/10 초가 영원했던 슈팅 게임이 아니 었습니다. 또한 나중에 많은 것을 추가 할 예정이지만 대부분의 사람들은 그냥 가서 새로운 게임을 작성한다고 생각합니다.
답변
게임 디자인을 강조하면서 컴퓨터 과학에 대한 정식 교육 (과학 학사?)을받을 수있을 때까지 가장 잘 아는 언어로해야합니다. . 게임을 사용하여 장학금을받을 수 있습니다. 특히 “자바에 대한 공식 교육없이이 작업을 수행했습니다”라고 말할 수 있다면 더욱 그렇습니다.
최신 JVM, Oracle의 제품조차도 여기에서 사람들이 제기 한 우려를 해결할 수있는 많은 기능을 가지고 있습니다. 다른 가비지 수집기를 사용하여 더 결정적인 가비지 수집기 동작을 얻을 수 있습니다. 저는 “3D 라이브러리에 대한 광범위한 경험이 없습니다. Java3D에 대해서는 조금만 있습니다.하지만 여기에 아무도 불평하지 않은 것 같습니다. 이제 탈출 분석을 통해 잠금 제거가 가능하고 수명이 매우 짧은 객체를 훨씬 빠르고 무시할 수있는 할당이 가능합니다.
문제는 C ++의 Java를 선택하든 동시성을 올바르게 사용하는 방법을 배우고 메모리 관리를 잘 이해해야한다는 것입니다. 결국 malloc
를 사용하면 new
를 사용하는 것처럼 쉽게 망칠 수 있습니다. C ++ 용 도구가 어떤 것인지 모르겠지만 Java 용 프로파일 링 도구는 사용하기 쉽고 무료이며 IDE와 통합되어 있습니다. 이러한 도구를 사용하여 성능 문제를 추적하고 학습 .
댓글
UI, 아이콘 등 실제 코딩을 가르치지 않습니다.
@ ashes999 : 그럼 운이 좋았습니다. 내 과정은 쓸모없고 거기에 있다는 것을 압니다. 같은 느낌을받는 많은 사람들입니다.
@DeadMG 그것은 ' 공부할 때 '보기가 어렵습니다. . 몇 년 동안 F / T로 일하고 다른 무료 기술을 배우면 ' 알 수 있습니다. 저는 많은 관심을 기울이고 모든 것을 제 게임 개발 취미에 적용하려고했습니다.
나는 ' 학교와 교수에 따라 다르다고 말합니다. 저는 몇 가지 훌륭한 프로그래밍 수업을 받았고 많은 것을 배웠습니다. 참석하여 지식을 잃어버린 느낌이 들었던 곳도 몇 군데있었습니다. ' 모두 좋은 교수의 유무에 있습니다. IMO.