완벽함이란 더 이상 무엇인가를 더할 것이 없을때 이루어 지는 것이 아니라, 더 이상 무엇인가를 뺄 것이 없을 때 이루어진다. - 앙뜨완느 마리 로제 드 생떽쥐페리
by 미친병아리 이글루스 피플 2006 이글루스 TOP 100 2007 이글루스 TOP 100
포토로그
메뉴릿
주저리 주저리
라이프로그
자바로 구현된 3D 게임 Jake 2..
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 관련된 부분인데, 모두 주석처리~

읔~ 근데, 아무리 해도 새 소스로는 빌드가 잘 안된다.. 젠장..
by 미친병아리 | 2006/08/04 00:26 | ▣ 퀘크야그 ▣ | 트랙백 | 핑백(1) | 덧글(5)
트랙백 주소 : http://madchick.egloos.com/tb/1395746
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Linked at 미친병아리가 삐약삐약 : Hi.. at 2008/01/24 00:30

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

Commented by Gadenia at 2006/08/21 10:37
오.. 멋지군요~ 지금 내려받는중입니다. :)
Commented by 이재율 at 2006/08/21 11:20
축복된 공간에서 아름다운 창조에 관여하는 미친병아리님. 정진하세요.
Commented by 미디어몹 at 2006/08/22 18:11
미친병아리님의 상기 포스트가 미디어몹 헤드라인에 등록되었습니다.
Commented by 미친병아리 at 2006/08/28 12:06
Gadenia님 : 실행시켜보면 더 멋지답니다..

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

미디어몹님 : 아싸~
Commented by 이재율 at 2008/11/06 03:41
2008.06.16. C08-064 Fermat's Last Theorem proof 논문으로 접수시킨, 우리의 페르마정리 증명은 간명 완전무결합니다.
수학 증명의 진정한 가치는 진위 판별이 분명함에 있는 바, 수학사에 기록된 Elliptic curve에 관련된 Andrew Wiles의 FLT proof 논문은 난해한 추측으로서, 그 가치가 현저히 떨어지는 것입니다.

:         :

:

비공개 덧글

Creative Commons License

< 이전페이지 다음페이지 >


이글루 파인더
카테고리
태그
최근 등록된 덧글
참 오래간만이시네요.^^..
by gonny at 11/03
ㅅㅂ 나도 몰른다고
by 야동매니아 at 10/20
하하, 이런경험 있는데..
by 씩씩한강냉이 at 10/03
꺅. 한글이 위대하기에 ..
by 씩씩한강냉이 at 10/03
소설식이라 편하고 재미..
by ohyecloudy at 10/01
환영합니다 미병님~^^
by Paromix at 09/16
온국민이 싫어하고 혐오..
by 닭날다 at 09/16
살아계셨군요... 계속..
by 미친감자 at 09/08
가끔씩 들리는데, 진짜..
by 랄라 at 09/05
웰컴~투~~~~~~..
by S2nNAMU at 08/25
좋은 정보네요 ^^ 그..
by 난복잡한것은 at 08/24
kk//ㅗ^^ㅗ
by 뭐야이미친놈. at 08/23
반갑습니다. 알려하지 ..
by 쩌비 at 08/20
Welcome to your blog..
by 우하하 at 08/20
1년간 무엇을 하였는지 ..
by falconer at 08/13
지난 1년간 365번 이상 들어..
by 김상형 at 08/13
바뀐게있나하며꽤많은..
by inJURa at 08/12
1년만에 돌아오셔도 많은..
by 오픈검색 at 08/06
^^*
by 검은흰새™ at 08/06
웰컴 투 이글루스~~~
by Funny at 08/05
최근 등록된 트랙백
데드라인 - 소설로 재미..
by Ohyecloudy's S3
실전적 문장비법 글쓰기..
by 블로거1.0의 WEB2.0 도전기
우분투 리눅스 8.10 하루..
by joogunking
마이클잭슨 사망 소식들..
by Bluesky
후아유(2002) : 2000년대 ..
by 생활의 발견
知的人의 생각
by peter_c's me2DAY
톰캣!!
by 나두미키님의 이글루
정규 표현식 완전 해부와..
by 김재호의 디지털보단 아..
HTML 소스 제대로 보자,..
by [부동산]개발.정비구역
내 손안의 PC - 자바가 ..
by 上善若水
Stringbuilder OutOfMe..
by Pinch of Smack for D..
웹 오피스 정리
by Web N Bizr
네이버 블로그 검색 - ..
by InformationRedesign
에반게리온: 서 - 사운드..
by LG전자 XCANVAS홈..
블로그에서 수익은 기대..
by IT, 모바일, 엔터테..
"다음으로 지원한 이메일..
by 민노씨.네
알라딘 TTB2 둘러보다
by NKOKON's Web-Note
문답 # ActiveX 문답
by 아이리스가 만개한 언덕..
미친병아리의 생각
by madchick's me2DAY
소비지향의 대학축제
by 세상을 보는 또 다른 시선
이글루링크
EBC (Egloos Broad..
erehwon.LAB
About willy
Living Loving and L..
修身齊家萬事成
【 이름쟁이™의 눈으로 】
개 풀 뜯어먹는 소리
觀鷄者의 망상 공간
Oz in Wonderland
김명신의 즐거운 하루
함께.. 늘 그렇게..
荷花(hehua)
소스코드위를 걷다.....
가로등 프로젝트
zoops 이야기
까모의 룰루랄라~
▒ 제닉스의 사고뭉치 ▒
河伊兒의 고물상
가로수들은 여전히 제자..
餘分D: physics and fun
극한추리 hansang's wo..
길고양이 이야기
어쨌건간에 흘러가는 者
선인장 일지
~★~ 우하하!!~ 프로..
without coffee
Lady Nariel's Golde..
검색엔진 루씬 Lucene..
fire, walk with me
디지털을 말한다 by oojoo
♠후리지아 향기처럼♠
일상 생활 속의 파편들
뽐뿌 inside
책읽는 엄마의 보석창고
Mono log
blogger jely
반복되는 일상속의 비정..
골룸의 골방
질풍 17주의 머브러브 라..
maniacs
AURA's Showcase
ozzyz review 허지웅..
디제의 애니와 영화 이야기
ANTIEGOIST : GyuHo..
미달이의 육아일기
All about IT Trends
Suicide Solution
얼음집
Trouble n Travel
모기불통신
Trip
찬별은 초식동물
숲 속 작은 섬
snowcat blog
전도서에 바치는 장미
한글이 꿈틀
이우진의 UCC 제작실 ..
INVENT
위로..위로..위로..
woody's film review
Show me the money
전자음악 알아보기
sunny's store
이규영 연예영화 블로그
◀ M.HOUSE - Masade..
친절한(척) 쿨짹씨
쉽니다.
roadster
무디의 무책임한 세상
이제 다시... 바라보다.
random life
Beyond Web
ricordati di me
Jania's Blog
Gaious 功房 네오베..
애자일 이야기
- Last Paromix -
T9T9 Research Center
양군 블로그
소프트웨어 이야기
chef's garden
Software Engineering..
티오
고재관의 블로그
mocca
yundream의 프로그래..
통TON
lalou
생각이 없는 블로그
이전블로그
rss

skin by 이글루스