Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
一款在浏览器里运行的 3D 恐龙骑乘跑道射击游戏。恐龙沿着远古大道自动向前奔跑,背上的骑手自动开火;你只需要左右走位:撞飞小怪、躲开硬怪和落石、穿过强化门。击败怪物还能让武器一路升到 Lv.10,跑到终点后迎战首领。 游戏有 24 种恐龙 和 12 位骑手 可选,共 7 个地形关卡,外加一个无尽模式。所有 3D 模型、地形、特效、音效和音乐都是代码实时生成的,项目里没有任何图片或音频素材文件。 打开网页就能玩,不用安装。推荐用电脑上的 Chrome 或 Edge,手机和平板也能玩。每次推送到 main 分支,GitHub Actions 都会自动重新构建并发布(见 .github/workflows/pages.yml)。 需要 Node.js 18 或更高版本。 macOS 也可以直接双击 start.command。 生成的 dist/index.html 不需要服务器,直接双击就能用浏览器打开,也可以拷到其他电脑上玩。查看完整 README ↗
一款在浏览器里运行的 3D 恐龙骑乘跑道射击游戏。恐龙沿着远古大道自动向前奔跑,背上的骑手自动开火;你只需要左右走位:撞飞小怪、躲开硬怪和落石、穿过强化门。击败怪物还能让武器一路升到 Lv.10,跑到终点后迎战首领。
游戏有 24 种恐龙 和 12 位骑手 可选,共 7 个地形关卡,外加一个无尽模式。所有 3D 模型、地形、特效、音效和音乐都是代码实时生成的,项目里没有任何图片或音频素材文件。
https://zhangxchao.github.io/dino-rider/
打开网页就能玩,不用安装。推荐用电脑上的 Chrome 或 Edge,手机和平板也能玩。每次推送到 main 分支,GitHub Actions 都会自动重新构建并发布(见 .github/workflows/pages.yml)。
需要 Node.js 18 或更高版本。
cd dino-rider
npm install # 已安装过可跳过;国内网络已在 .npmrc 中配置 npmmirror 镜像
npm run dev # 自动打开 http://localhost:5173
macOS 也可以直接双击 start.command。
npm run build # 生成 dist/index.html(所有代码内联在这一个文件里)
生成的 dist/index.html 不需要服务器,直接双击就能用浏览器打开,也可以拷到其他电脑上玩。
npm run mac # 生成 release/恐龙骑士.app
恐龙骑士.app 会用 Chrome 的应用模式打开游戏:独立窗口,没有地址栏和标签页。可以把它拖进「应用程序」文件夹或程序坞,按 ⌃⌘F 进入全屏。| 按键 | 作用 |
|---|---|
A D / ← → | 左右移动(恐龙会自动向前跑) |
| 按住鼠标左右拖动 | 同样可以左右移动 |
空格 / W | 跳跃:跳过怪物、落石和地面冲击;落地时震地踩踏周围的怪物 |
Q / E / Shift | 恐龙专属技能 |
R | 狂热槽满后释放“远古觉醒” |
Esc / P | 暂停 |
R 释放。6 秒内恐龙变大、无敌、撞飞一切,骑手弹幕 +1 道并变成彩虹色,每隔一会儿自动放出冲击波,音乐也会加速。结束时还有一次全屏冲击波。24 种恐龙:霸王龙、三角龙、迅猛龙、剑龙、腕龙、棘龙、甲龙、无齿翼龙、副栉龙、异特龙、食肉牛龙、双冠龙、肿头龙、禽龙、南方巨兽龙、镰刀龙、重爪龙、梁龙、戟龙、似鸡龙、鲨齿龙、羽王龙、巨盗龙、角鼻龙。每种都有自己的技能,比如咆哮、无敌冲锋、飞扑、旋风、震地冲击波、狂暴、铁甲堡垒、空中轰炸、音波、毒液、音爆、尖刺和疾风冲刺。
12 位骑手:圣光骑士、精灵弓手、烈焰法师、太空宇航员、西部牛仔、暗影忍者、机甲战士、冰雪公主、原始人阿猛、海盗船长、淘气精灵布布、武士剑豪。每位骑手的武器和被动加成都不同。
3 种语言:简体中文、English、日本語。第一次打开时按浏览器语言自动选择,之后可以在设置里切换,也可以点标题页右上角的按钮。
7 个关卡(由易到难):炽热沙海古道、冰封雪原大道、迷雾沼泽栈道、熔岩火山大道、暗影要塞符文路、翠绿丛林小径(剧毒小蛛 + 剧毒蛛后),以及最终关「螳螂巢穴」:暗红色的地底虫巢,最终 Boss 螳螂王会用十字斩、横扫整条路的镰刃波(要跳过去)和瞬移突袭进攻,三个阶段越打越快。每关的道路都会无限生成,沿途有拱门、火把等地标。
每日任务与成就:每天 3 个任务(击杀、连击、强化门、首领、完美闪避、金币、觉醒等),加上 20 个成就,完成后在标题页「任务与成就」里领取金币。
商城:标题页的「🛒 商城」可以用金币买皮肤和宝石。宝石 4000 金币一颗,先放进宝石袋,再到「选择坐骑」界面镶嵌到某只恐龙身上:每颗 +2 攻击、+11 生命,每只恐龙最多 5 颗;取下的宝石会回到宝石袋,可以换给别的恐龙。排名和奖杯按面板数值计算,不算宝石。
皮肤:金币可以在「选择坐骑」界面解锁皮肤(翡翠、寒冰、熔岩、暗影、白银、黄金),买一次所有恐龙都能穿,每只恐龙各自记住穿哪套;皮肤只改外观,血量、攻击等数值完全不变。
结算:显示本局得分和总伤害,数字滚动;刷新最短用时会盖「新纪录」印章,第一次通关额外奖励金币。
对象池:怪物、弹体、恐龙宝宝都回收复用,不再每次出生重建模型和材质;阵型刷怪按预算分帧生成。
地形流式生成:地形高度按行缓存;新的一块地形拆成几步分摊到多帧,逻辑帧最长耗时从约 20~30 ms 降到 7 ms 以内。
只上传用到的缓冲:弹幕、粒子、血条、金币等实例数据只上传实际用到的部分。
合并静态零件:游戏会先把模型动画跑一遍,找出不会动的零件,按"同一父节点 + 同一材质"合并;只差颜色的零件会改用顶点色再合并。
刚体蒙皮:会动的零件(腿、头、尾巴、翅膀…)也合进少数几个蒙皮网格,每个零件的顶点绑定在零件自己身上,动画代码不用改。一只怪物从平均约 32 次绘制降到约 5 次,恐龙加骑手从 92 次(投影再画 92 次)降到 16 次。
骨骼图集:所有怪物和恐龙宝宝共用一张骨骼贴图,每帧只上传一次,不用每只怪物各传一次。
按着色器排序:不透明物体先按用到的着色器分组再绘制,着色器切换从每帧约 180 次降到约 40 次。第 7 关 30 多只怪物同屏时,每帧的 WebGL 调用从约 2300 次降到约 1200 次。
批量渲染:子弹、金币、血条和怪物的圆形投影都是实例化网格,每一类只需要 1~2 次绘制。怪物不再实时投射阴影。
开局预热:开场倒计时期间会预先编译并实际绘制一遍本关会用到的所有着色器,包括强化门的文字贴图和全屏打击感特效,游戏中不会因为第一次出现某种怪、子弹或特效而卡顿。地面红色预警用对象池复用:以前每个预警用完就销毁材质,three.js 会连着色器一起释放,首领每次出招都要重新编译,卡顿 100~240 ms。
少画一遍:半透明的双面特效(冲击波、护盾、拖光、强化门、地面预警)改成单遍绘制;高画质的多重采样只开在后期离屏缓冲上,屏幕缓冲不再重复开。
动态分辨率:看帧时间的中位数,连续两秒低于 50 帧才降一档,降完冷却 6 秒;偶尔一帧卡顿不会触发。提高分辨率要重建后期缓冲,会顿一下,所以只在菜单和暂停时往回调。
空批次不绘制:子弹、粒子、金币、血条等实例化批次没有内容时直接隐藏。three.js 不会跳过 0 个实例的网格,以前每帧有十几次空绘制;其中冲击波和镰刃波还是半透明双面材质,被拆成两遍画,每遍都要重新切换着色器,现在改成单遍。
泛光半分辨率:泛光的模糊链在所有设备上都用一半分辨率(以前只有手机这样),看不出区别,显存带宽省下不少。
设置选项:设置里可以开关"显示帧率",也可以把画质切到"流畅"(关闭泛光、降低分辨率)。另有全部静音、减少动效(也会跟随系统设置)、手机震动反馈。
src/
main.js 入口:渲染器、后期处理、场景状态机
game.js 一局游戏的流程:路线事件、强化门、碰撞、首领战、镜头、结算
player.js 玩家:自动前进、左右走位、自动射击、武器升级、13 类技能
enemy.js 怪物 AI、路障(落石/宝箱)与首领招式状态机
projectiles.js 弹道系统
effects.js 粒子、冲击波、地面预警、护盾、伤害飘字、镜头震动
hud.js / ui.js 游戏内 HUD 与各个菜单界面
track.js 6 种地形的无限跑道(分段流式生成,上下坡起伏)
bend.js 弯道:在顶点着色器里统一弯曲整个世界
i18n.js 多语言:界面文案与游戏数据的翻译(locales/ 下是各语言包)
world.js 菜单背景用的地形场景(地形、植被、天空、天气)
audio.js 程序化音效与音乐
models/ 恐龙、骑手、怪物、首领的程序化模型
data.js 全部数值配置
scripts/make-mac-app.sh 打包 Mac 应用