- 项目源码:
https://github.com/brunosimon/folio-2019 - 项目简介:
这个项目既可以被视为一个个人博客平台,又具有独特的游戏化交互方式。用户通过键盘控制一辆虚拟小汽车的方向来浏览和选择文章内容,从而实现了导航功能。
从另一个角度看,它确实是一个网页游戏,但其核心用途是展示和阅读博客文章。
总体而言,开发者的创意极具新颖性,巧妙地将游戏元素与博客功能结合,创造出一种全新的内容体验方式。

- 安装与部署步骤:
## 下载源代码
git clone https://github.com/brunosimon/folio-2019
## 安装项目依赖
cd folio-2019
npm install
## 运行开发模式(原始方法)
npm run dev
需要注意的是,在NAS环境中部署时,上述运行命令可能会遇到问题,因为它会尝试启动浏览器,而NAS系统通常没有图形界面。因此,建议采用以下替代方案:
## 不直接运行开发模式,先进行项目构建
npm run build
## 获取构建后文件的路径,记录下命令输出中的目录信息
realpath dist
## 配置nginx服务器
cat >/etc/nginx/conf.d/folio2019.conf <<EOF
server {
listen 8810 ; # 可根据需要修改端口号
server_name _;
root 【在此处填入上一步记录的路径】;
index index.html;
}
EOF
## 重新加载nginx配置
/usr/sbin/nginx -s reload
项目概述
核心功能定位:
该项目是一个利用Three.js 3D图形库和物理引擎技术构建的交互式个人博客网站。用户可以通过操纵一辆小汽车在虚拟三维场景中自由移动,浏览作者的各类设计和开发作品,并与环境中的元素进行互动。
技术实现亮点:
- 3D图形渲染:采用Three.js库实现精细的模型构建和动态光影效果处理。
- 物理模拟引擎:集成Cannon.js(或类似Ammo.js)引擎,模拟真实的物体碰撞和运动行为。
- 音频交互体验:借助Howler.js库,提供引擎声音和环境音效,增强沉浸感。
主要功能模块:
- 驾驶式导航:用户使用键盘控制汽车在无限扩展的地图中移动,探索不同的作品展示区域。
- 动态内容加载:场景资源根据用户位置按需加载,优化性能并保证流畅体验。
- 隐藏游戏元素:包含如“泡沫墙碰撞实验”和“野外越野挑战”等趣味互动环节。
用户体验指南
通过浏览器访问地址:http://<nas-ip>:8810即可进入网站。

使用方向键控制小汽车向前行驶,到达交叉路口:

首先向右转进入游戏广场,查看可玩的游戏内容。到达保龄球场地后,通过操控汽车撞击的方式投掷保龄球:

右侧区域设有撞墙游戏:

左侧为障碍越野赛道:

完成游戏体验后,返回之前的交叉路口,访问博客文章列表区域:

此时可以使用鼠标点击“OPEN”按钮打开博客文章。需要注意的是,默认显示的是原作者的文章内容,若要替换为自己的文章,需进行以下配置:
编辑文件:src/javascript/World/Sections/ProjectsSection.js

如图所示,需要修改的字段包括:name、floorTexture、href、x和y坐标。imageSources字段可以保持原样。
关于floorTexture字段,它对应一张图片资源,即在地面上显示的博客文章介绍信息。例如,为某篇博客文章制作了一张名为abc.png的PNG图片,需要将该文件放置于以下目录:
./static/models/projects/posts/abc.png
然后在ProjectsSection.js文件中,将floorTexture字段修改为:
this.resources.items.projectsPostsAbc
完成修改后,重新执行npm run build命令进行项目构建。
总结与评价
- 该项目以3D游戏形式呈现博客内容,提供了独特的交互体验。
- 驾驶汽车浏览文章的创意设计确实令人印象深刻,展示了技术创新的可能性。
- 项目基于MIT开源协议发布,允许用户自由进行二次开发和商业用途。