통계 위젯 (화이트)

271495
8881
2514304

저작권

Do not be afraid to fail. Be afraid not to try. Pain is temporary, suck is forever. Keep it small and simple.

카카오 광고







자바로 구현된 3D 게임 Jake 2.. by 미친병아리

jruby님 블로그에 놀러갔다가 발견한 멋진 Java 3D 게임엔진을 알게되었다.. 자신들의 엔진의 우수성을 홍보하기 위해 Quake 2 소스를 자바로 포팅해논 소스를 공개했는데, 이야 이거 정말 멋지다.. 간만에 이클립스 띄워서 빌드해 실행시켜보니 멋지게 잘 돌아간다.. 직접 경험해보고 싶은 사람은 이 멋진 것을 만든 사람들의 홈페이지로 놀러가서 소스를 다운로드 받고, 소스에 같이 들어있는 텍스트 파일 내용대로 따라하면 된다.. (홈페이지 구경하기)
홈페이지에 놀러가보면 "Jake 2 Play Now" 라는 버튼이 좌측 메뉴 하단에 있는데, 이것만 클릭하면 실행되는 모습을 구경할 수 있다.. 복잡스럽게 개발툴 설치하고, 소스코드 다운로드 받고, 빌드해서 실행시킬 필요가 없다.. Java Web Start 라는 것이 뭐하는 놈인가 했더니 이럴때 사용하는 것인가 보다.. 웹을 통해 깔끔하게 설치되고 실행되는 모습이 멋지다..


소스코드 감상을 위해 필요한 프로그램은
  1. Eclipse : 내가 사용한 버젼은 3.1.2인데, 최신버젼은 아닐거다.. 설치한지 1년은 넘은 것 같으니.. 3.x 버젼만 사용하면 문제없이 빌드가 가능한 것 같다..

  2. JDK : 가장 최신 버젼인 1.5를 설치하라고 한다.. 하지만, 1.4 버젼에서도 실행되는데 문제는 없는 것 같아서 (Jake 2 Play Now로 실행되는 모습을 구경했는데 JDK 최신버젼을 설치하라는 메시지는 나오지 않았었다.. 내 노트북에 JDK 1.4가 설치되어 있었는데..) 소스코드 빌드도 1.5 설치없이 해봤다..
    지금 참여중인 프로젝트 환경이 JDK 1.4로 세팅이 되어 있는데, 괜히 JDK 1.5를 설치했다가 안되면 골치 아플 것 같아서리.. 물론 JDK를 1.4와 1.5를 모두 설치하고 사용하도록 세팅하는 방법이 있을 것 같지만, 확실하지 않아서 모험을 해보긴 싫었다.. 요즘엔 이런 저런 실험해볼 시간이 넉넉치 못하거덩..

  3. Quake 2 : 게임이 실행되는데 필요한 데이터 파일들 때문에 필요하다.. 정품이 있으면 좋겠지만, 그냥 돌려보는 정도라면 데모버젼을 다운로드 받아 설치해도 된다.. 데모버젼의 경우 제일 처음 시작 부분의 맵 몇개만 즐길 수 있다..


공개된 C 소스코드
와 속도를 비교해보면, 차이를 거의 느낄 수 없을 정도로 잘 돌아간다.. 홈페이지에서 벤치마크 부분을 보면 C 코드와의 속도비교를 해놨는데, 일정 정도의 하드웨어만 갖춰지면 오히려 C 코드보다도 더 빠른 상황이 된다.. 이제 자바로도 3D 게임을 만드는데 아무런 문제가 없다고 하는데, 글쎄 내가 보기엔 그 반대이다.. 자바가 처음 등장한게 내가 대학 4학년때인 96년도 인데, 이제 정말 딱 10년이 지났다.. 하지만, 10년이 지나도록 현재까지도 VM의 속도 문제가 해결되지 못한 상태고, 그 때문에 3D 게임분야는 자바가 되네 안되네 논란이 있는 것이다.. Quake 2와 Jake 2를 비교하여 이젠 가능하다라는 주장은 좀 설득력이 없는 것이 Quake 2가 10년전 게임이라는 것이다.. 요즈음의 3D 게임들은 Quake 2와 비교하면 훨씬 더 화려한 3D 화면을 요구한다.. 이제서야 10년전 게임을 따라 잡고서 자바도 3D 게임 개발이 가능하다고 하는건 좀.. 물론, 2D 게임만 있던 임베디드 환경에서 이젠 Quake 2 정도의 그래픽이 (Quake 2 그래픽이 지금 봐도 허접 쓰레기 정도는 아니니..) 가능한 게임들이 돌아갈 수 있게 되었다는 것은 정말 기쁜 일이긴 하다.. 그리고 Quake 3, Quake 4 등의 소스가 자바로 포팅되어 C와 동등한 속도로 실행되는 날이 다가오는 속도가 점점 빨라질 것이다.. 하지만, 요즘의 게임들은 가장 최적화, 최대한의 H/W 성능을 사용하여 보다 더 화려한 그래픽과 움직임을 만들어 내는데 집중하고 있기 때문에 아직은 자바에서의 3D 게임은 갈길이 먼 것 같다.. 자바로 만들어진 오피스 프로그램도 나왔으니 이제 곧 3D 게임 분야에도 기대를..


그럴 사람은 거의 없겠지만, Jake 2 소스를 JDK 1.4에서 돌려보려는 사람은..
  1. 이클립스를 실행시킨 후 CVS 퍼스펙티브로 전환해서 CVS 접속을 한다..
    (새 CVS repository를 아래의 내용을 입력해 만든다.)
    host : jake2.cvs.sourceforge.net
    repository path : /cvsroot/jake2
    user : anonymous
    password : 없음
    connection type : pserver

  2. 접속이 되면 트리에 HEAD 라고 보일 것이고 그 밑에 jake2라고 있다.. 마우스 우측 클릭을 해서 Checkout As.. 를 선택하고 원하는 웍스페이스 명, 파일 경로 등을 입력하면 이클립스용 웍스페이스를 만들고 선택한 경로에 소스파일들을 다운로드 받아준다

  3. Java 퍼스펙티브에서 src/jake2/Jake2.java 를 마우스 우측 버튼 클릭하여 Run As -> Run을 선택하면 다이얼로그 창이 하나 뜬다.. Java Application을 선택하고 "New" 버튼을 클릭하면 옵션들을 지정할 수 있는 화면이 나타나는데 Arguments 탭을 선택한 후에 VM arguments 부분에
    -Xmx80M -Dsun.java2d.noddraw=true
    -Djava.library.path=lib/jogl/windows;lib/joal/windows;lib/lwjgl/windows
    라고 입력을 한다..

  4. 빌드를 해보면 에러가 우수수 떨어질 것인데 assert (f >= 0) : "negative time and cursor bug"; 이런 구문 때문이다.. Java 5 부터 새로 추가된 문법인가본데, 잘 모르겠고.. 이런 점검문은 없어도 실행되는데 문제가 없으니 모두 주석처리.. 그외에 많은 경고들이 떨어지는데 건 JDK 1.5를 사용한다고 해도 날만한 것들이니 무시..

  5. 또 하나의 에러는 JDK 1.4에는 없는 System.nanoTime() 을 사용한다는 것인데..
    base = (long)(System.currentTimeMillis() * 1000000); 이런 식으로 nanoTime을 사용하는 곳에서는 밀리타임을 나노타임처럼 만들어주는 코드로 바꿔줬다.. 2군데만 주석처리해주고 수정하면 된다..

  6. Q2DataDialog.java 파일의 컨스트럭터 부분을 보면 Quake 2 데이터 파일들이 있는 경로의 초기값을 설정하는 부분이 있는데, 매번 지정해주기 귀찮으므로 내 하드디스크의 경로를 이곳에 하드코딩 해버렸다..
    // dir = home + sep + "Jake2" + sep + "baseq2";
    dir = "C:\\Project\\madchick\\Game\\Quake II\\baseq2";

역시, 자바코드의 가장 큰 매력은 Write Once, Run Everywhere.. 항상 모든 상황에서 그런건 아니지만, Jake 2의 경우는 아주 대표적인 적용 예.. 한번 빌드하면 윈도우즈, 리눅스, OS X 등의 환경에서 다 잘 돌아가는 실행코드가 나온다.. 이건 정말 매력적인 부분이다..



2008.08.28

노트북을 포멧해 새로 세팅을 해보는데, 오류가 나는 양상이 좀 틀리다.. 애플릿에서 오류가 나는데, 이건 무시하고 나머지 오류들은 모두 assert 관련된 부분인데, 모두 주석처리~

읔~ 근데, 아무리 해도 새 소스로는 빌드가 잘 안된다.. 젠장..



2011.07.06

맥북에어에서 실행시키느라 좀 삽질.. 맥북에서 실행 안되는 이유는 성능을 위해서 사용된 JOAL, JOGL, LWJGL 라이브러리들이 64비트를 지원하지 못함.. 하지만, 부지런한 프로그래머들이 문제를 해결해둔 소스를 배포하고 있었으니..

원 소스폴더 : jake2
새로 다운로드 받은 소스 : jake2-ext

1. http://code.google.com/p/jake2-ext/downloads/list 접속해서 jake2-ext-0.97.zip 파일을 다운로드 받아 압축을 푼다..

2. 원래소스에서 src 폴더 하위의 jake2 폴더를 통째로 지워버린다.. (jake2/src/jake2 폴더 삭제)

3. 1번에서 압축 푼 폴더에서 src 폴더 하위의 소스를 복사한다.. (jake2-ext/src/0.9.7/jake2 폴더를 jake2/src/jake2로 복사)

4. lib 파일을 복사한다.. (jake2-ext/lib/0.9.7-macosx 폴더의 3개 파일을 jake2/lib 폴더로 복사)

5. build path의 jar 라이브러리들을 모두 삭제해 버린다.. 그리고 아래 그림과 같이 4번에서 복사한 lwjgl.jar만 추가한다..

6. 실행옵션 중에 VM 아규먼트 부분을 -Djava.library.path=lib 으로 수정한다..




핑백

  • 미친병아리가 삐약삐약 : History Of Quake.. 2008-01-24 00:30:47 #

    ... 해당 플랫폼으로 포팅된 퀘이크 1을 3D 게임 데모로 보여주는 모습이 자주 보이는데, 이 또한 역사적인 사건.. 가장 먼저 포팅되는 게임이 퀘이크 1 이라는.. 자바 3D 엔진 데모로도 퀘이크 2가 사용되고.. 그럼, 퀘이크는 3D FPS의 표준? 요즘의 다른 게임들도 이와 비슷한 수준의 그래픽이 나오기는 하는 것 같더라.. 특히 언리얼 엔진을 사용하는 게 ... more

  • 미친병아리가 삐약삐약 : Wolfenstein 아이폰 버젼 오픈소스 구경하기.. 2011-02-09 08:55:40 #

    ... 있었는지를 짐작하자면 두 소스를 좀 비교해봐야 하겠지만.. OpenGL 기반이라 가능한 일이라는 생각이 듭니다..) 역시, 콘텐츠는 많이 가지고 있는게 장땡이네요.. ㅎㅎㅎ 나중에 Jake2와 Quake 1, 2, 3 소스들을 맥에서도 빌드하여 가지고 놀 수 있는지도 함 찾아봐야겠네요.. 아마 맥에서도 빌드가 될 것으로 기대가 됩니다.. ... more

덧글

  • Gadenia 2006/08/21 10:37 #

    오.. 멋지군요~ 지금 내려받는중입니다. :)
  • 이재율 2006/08/21 11:20 #

    축복된 공간에서 아름다운 창조에 관여하는 미친병아리님. 정진하세요.
  • 미디어몹 2006/08/22 18:11 # 삭제

    미친병아리님의 상기 포스트가 미디어몹 헤드라인에 등록되었습니다.
  • 미친병아리 2006/08/28 12:06 #

    Gadenia님 : 실행시켜보면 더 멋지답니다..

    이재율님 : 감사합니다..

    미디어몹님 : 아싸~
  • 이재율 2008/11/06 03:41 #

    2008.06.16. C08-064 Fermat's Last Theorem proof 논문으로 접수시킨, 우리의 페르마정리 증명은 간명 완전무결합니다.
    수학 증명의 진정한 가치는 진위 판별이 분명함에 있는 바, 수학사에 기록된 Elliptic curve에 관련된 Andrew Wiles의 FLT proof 논문은 난해한 추측으로서, 그 가치가 현저히 떨어지는 것입니다.
  • 미친병아리 2014/08/18 11:40 #

    무슨 말씀이신지 잘은 모르겠지만.. 네네..
  • mc.레지스탕스 2014/07/10 15:33 # 삭제

    퍼갑니다~
  • 미친병아리 2014/08/18 11:40 #

    ^^
※ 로그인 사용자만 덧글을 남길 수 있습니다.

카카오 광고