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灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP