Ajax 板


LINE

※ [本文轉錄自 java 看板] 作者: PsMonkey (痞子軍團團長) 看板: java 標題: [GWT] GwtQuake:將 Web 提昇到下一個境界 時間: Fri Apr 2 21:13:04 2010 有影片之 blog 版:http://pt2club.blogspot.com/2010/04/gwtquake-web.html ================ 原文:http://timepedia.blogspot.com/2010/04/ gwtquake-taking-web-to-next-level.html 技術校正、審閱:tkcn 早在 2009 年 11 月的 GWT 高層腦會議上,我和 Joel Webber 就專注於改善 Web 和 UI latency 議題。有人在介紹 WebGL 時,我發現坐在後頭 Joel 看起 來完全沒在聽。當我走近他時,他說:「看過這玩意了嗎?」他晃了晃 notebook 展示 Jake2——將 Quake2 用 Java 移植成 Java Web Start application。幾 年前我就看過這個 project 了,只是不知道已經進展到這種地步。 就在那時,我不用問也知道他想幹麼——他提議我們用 GWT 改寫 Jake2! Web 化的方式 「將 Jake2 這類的東西,用 GWT 來 compile 成 JavaScript」的想法,看起來 好像很簡單。因為 GWT 本來就是把 Java compile 成 JavaScript。不過要能 compile 仍需要對程式碼作一堆調整、以及將 I/O 對應到合適的 Web API。 你可能已經知道,GWT 其實只有實做 JRE 的一部份,而 Jake2 使用了很多 GWT 當中沒有的 Java class: →3D 的 LWJGL library →java.nio.Buffer →網路對戰需要用的 java.net.* →AWT 中關於鍵盤的內容 →載入資料要用到的檔案系統 API →影音要用的 OpenAL 更重要的是,它是用 synchronous API 作 I/O,但是 JavaScript 是使用 event driven 的 I/O 方式。 I/O 對應 Joel 將 Jake2 的 I/O 系統重新改寫成用 event driven pump 來載入檔案。我 們做的第一件事就是處理關卡與 model 的檔案載入,使用 2D <canvas> wireframe renderer 來處理 rendering(沒有用 WebGL)。接著 Stefan Haustein 貢獻了使用 WebGL 的 javascript array 來實做 Java NIO Buffer 的 JRE class,以及用 WebGL 為基礎的 GL renderer。 Joel 很神奇的用 WebSocket 加上了多人對戰的功能,即使測試的人分散在 Atlanta、Mountain View、甚至是 Sydney(雪梨),我們還是廝殺的很爽。 我繼續轉換所有的聲音成 MP3 格式,並且實做了只用 DOM Audio element 的初 步 sound renderer。後來,我把 OpenAL 程式碼重構成一個(譯註:GWT 的) base class,並且提供了 OpenAL Inverse Distance Clamped 聲音 model 的實 做,用來調整 3D 位置中的音量變化。除了 audio.volumn 之外,沒有用其他東 西。 Stefan 使用 LocalStorage 來實做 RandomAccessFile 供遊戲存檔用,以及用 <video> tag 來實做 video 播放。 大部分的工作在今年一月用 part time 的方式完成,但在那之後進度就卡住了 。例如 Stefan 就專注在移植整個單人遊戲(無須 server)成靜態的內容。 我會在 Google I/O 上頭作更詳細的解剖報告,請務必參加! 執行速度呢? 我覺得執行速度可能不快,不過說實話,我從來沒想過我們會做到這種程度;但 事實證明,正常播放的 framerate 是有達成的。在 MacBook 上的 WebKit/Chrome 有 20~25fps、在 Mac Pro 桌機則有 45fps。Joel 則說在 Linux(notebook)可以到 60fps。 這對 web 的意義是什麼? 多年來,人們總覺得 browser 對這類事情而言,是一個貧乏的平台,所以需要 Flash、Silverlight、JavaFX 或 native 程式碼。儘管你不應該期望在瀏覽器 上頭看到像《Far Cry》或《Call of Duty》這種頂級的作品,但這不能解釋為 甚麼一堆 casual game 是用 Flash、或是用 Objective-C(在 iPhone/iPad 上)寫的,而我們使用的類似技術卻作不到。 此外,因為是網頁,你要邀請某人進入你的遊戲或分享遊戲,只要傳一個網址就 可以了。你可以只接 tweet 你的遊戲網址、點下去就可以加入遊戲當中。而不 需要安裝。雖然 Flash 也可以做到,但直接在 browser 當中會覺得比較「自然 」。 我希望這個移植可以鼓勵某些人變得更大膽、更瘋狂地嘗試建立各種 Web App, 因為如果 Quake2 用 JavaScript 跟 browser API 都辦得到,更令人驚艷的 application 正等你開發出來。所以,開始動手吧! 移植版的 source code 在:http://code.google.com/p/quake2-gwt-port ---- 譯註:關於 quake2 的 GWT 移植版,在 GWT 官方 Blog 也有提到,不過該篇文 章沒有這篇仔細,所以選擇翻譯這篇。雖然這個時間點實在令人遐想 [炸],不 過在 Google Code 上頭的確有「非常真實」的程式碼可以觀看,有興趣者不妨 試試看。 -- 錢鍾書: 說出來的話 http://www.psmonkey.org 比不上不說出來的話 Java 版 cookcomic 版 只影射著說不出來的話 and more...... --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.70.183.25 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.70.183.25







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP