惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
Cyberwarzone
Cyberwarzone
L
LINUX DO - 最新话题
N
News and Events Feed by Topic
T
Troy Hunt's Blog
Help Net Security
Help Net Security
S
Security @ Cisco Blogs
Google DeepMind News
Google DeepMind News
Security Archives - TechRepublic
Security Archives - TechRepublic
M
MIT News - Artificial intelligence
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V2EX - 技术
V2EX - 技术
Y
Y Combinator Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
大猫的无限游戏
大猫的无限游戏
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Microsoft Security Blog
Microsoft Security Blog
Cisco Talos Blog
Cisco Talos Blog
T
Threatpost
Recent Commits to openclaw:main
Recent Commits to openclaw:main
S
SegmentFault 最新的问题
I
InfoQ
H
Hacker News: Front Page
D
Docker
Scott Helme
Scott Helme
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Blog — PlanetScale
Blog — PlanetScale
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
N
Netflix TechBlog - Medium
AWS News Blog
AWS News Blog
Know Your Adversary
Know Your Adversary
博客园 - 【当耐特】
T
Tor Project blog
U
Unit 42
H
Heimdal Security Blog
Microsoft Azure Blog
Microsoft Azure Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
P
Privacy & Cybersecurity Law Blog
PCI Perspectives
PCI Perspectives
美团技术团队
O
OpenAI News
T
Tailwind CSS Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
B
Blog
GbyAI
GbyAI
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
MyScale Blog
MyScale Blog

元视角

.NET 生态下的 Agent 框架选型:从 ReAct 到原生推理 - 元视角 从「能用」到「好用」:LLM 流式响应实现方式的探索之路 - 元视角 当我用 2000 条聊天记录,让 AI 为我画一幅自画像 - 元视角 基于 Supabase 的 AI 应用开发探索 - 元视角 微博 × MCP:社交媒体新玩法解锁 - 元视角 四点钟海棠花未眠 - 元视角 Semantic Kernel × MCP:智能体的上下文增强探索 - 元视角 基于 K-Means 聚类分析实现人脸照片的快速分类 - 元视角 容器技术驱动下的代码沙箱实践与思考 - 元视角 温故而知新:后端通用查询方案的再思考 - 元视角 浅议 CancellationToken 在前后端协同取消场景中的应用 - 元视角 Semantic Kernel 视角下的 Text2SQL 实践与思考 - 元视角 关于 ChatGPT 的流式传输,你需要知道的一切 - 元视角 RAG 的是与非、Rewrite 和 Rerank - 元视角 使用 EFCore 和 PostgreSQL 实现向量存储及检索 - 元视角 基于 LLaMA 和 LangChain 实践本地 AI 知识库 - 元视角 使用 llama.cpp 在本地部署 AI 大模型的一次尝试 - 元视角 如何为 Git 配置多个 SSH Key - 元视角 C# 使用 LibUsbDotNet 实现 USB 设备检测 - 元视角 基于 C# 实现样式与数据分离的打印方案 - 元视角 基于 SVG 的图形交互方案实践 - 元视角 前端视频播放技术概览 - 元视角 温故而知新,再话 Python 动态导入 - 元视角 后 GPT 时代,NLP 不存在了? - 元视角 视频是不能 P 的系列:使用 Milvus 实现海量人脸快速检索 - 元视角 GDI+下字体大小自适应方案初探 - 元视角 小爱音箱集成 ChatGPT 的不完全教程 - 元视角 程序员视角下的三体世界随想 - 元视角 关于 Docker 容器配置信息的渐进式思考 - 元视角 在 Docker 容器内集成 Crontab 定时任务 - 元视角 为你的服务器集成 LDAP 认证 - 元视角 似花还似非花 - 元视角 视频是不能 P 的系列:使用 Dlib 实现人脸识别 - 元视角 浅议分布式链路追踪与日志的整合 - 元视角 关于 Git 大文件上传这件小事 - 元视角 .NET 进程内队列 Channel 的入门与应用 - 元视角 使用 Fody 实现 .NET 的静态编织 - 元视角 .NET Core + ELK 搭建可视化日志分析平台(下) - 元视角 聊一聊前端图片懒加载背后的故事 - 元视角 支持外部链接跳转的 Vue Router 扩展实现 - 元视角 视频是不能 P 的系列:OpenCV 和 Dlib 实现表情包 - 元视角 不得不说的 ASP.NET Core 集成测试 - 元视角 再议 DDD 视角下的 EFCore 与 领域事件 - 元视角 Vue.js 前端项目容器化部署实践极简教程 - 元视角 再见,人间四月天 - 元视角 Python 图像风格化迁移助力画家梦想 - 元视角 利用 ASP.NET Core 中的标头传播实现分布式链路追踪 - 元视角 利用 gRPC 实现文件的上传与下载 - 元视角 七种武器:延迟队列的原理和实现总结 - 元视角 gRPC 流式传输极简入门指南 - 元视角 Envoy 集成 Jaeger 实现分布式链路追踪 - 元视角 浅议非典型 Web 应用场景下的身份认证 - 元视角 gRPC 借助 Any 类型实现接口的泛化调用 - 元视角 分布式丛林探险系列之 Redis 集群模式 - 元视角 分布式丛林探险系列之 Redis 主从复制模式 - 元视角 通过 Python 预测 2021 年双十一交易额 - 元视角 gRPC 搭配 Swagger 实现微服务文档化 - 元视角 SSL/TLS 加密传输与数字证书的前世今生 - 元视角 使用 Python 自动识别防疫健康码 - 元视角 你不可不知的容器编排进阶技巧 - 元视角 ASP.NET Core 搭载 Envoy 实现 gRPC 服务代理 - 元视角 再话 AOP,从简化缓存操作说起 - 元视角 ASP.NET Core 搭载 Envoy 实现微服务身份认证(JWT) - 元视角 ASP.NET Core 搭载 Envoy 实现微服务的监控预警 - 元视角 ASP.NET Core 搭载 Envoy 实现微服务的反向代理 - 元视角 ASP.NET Core gRPC 打通前端世界的尝试 - 元视角 EFCore 实体命名约定库:EFCore.NamingConventions - 元视角 ASP.NET Core gRPC 集成 Polly 实现优雅重试 - 元视角 ASP.NET Core gRPC 健康检查的探索与实现 - 元视角 ASP.NET Core gRPC 拦截器的使用技巧分享 - 元视角 SnowNLP 使用自定义语料进行模型训练 - 元视角 使用 HttpMessageHandler 实现 HttpClient 请求管道自定义 - 元视角 ABP vNext 的实体与服务扩展技巧分享 - 元视角 ABP vNext 对接 Ant Design Vue 实现分页查询 - 元视角 源代码探案系列之 .NET Core 跨域中间件 CORS - 元视角 源代码探案系列之 .NET Core 限流中间件 AspNetCoreRateLimit - 元视角 源代码探案系列之 .NET Core 并发限制中间件 ConcurrencyLimiter - 元视角 通过 EmbededFileProvider 实现 Blazor 的静态文件访问 - 元视角 低代码,想说爱你不容易 - 元视角 记一次失败的 ThoughtWorks 面试经历 - 元视角 从 C# 1.0 到 C# 9.0,历代 C# 语言特性一览 - 元视角 通过 Python 分析 2020 年全年微博热搜数据 - 元视角 基于 Python 和 Selenium 实现 CSDN 一键三连自动化 - 元视角 使用多线程为你的 Python 爬虫提速的 N 种姿势,你会几种? - 元视角 实现网页长截图的常见思路总结 - 元视角 温故而知新,由 ADO.NET 与 Dapper 所联想到的 - 元视角 视频是不能 P 的系列:OpenCV 人脸检测 - 元视角 作为技术宅的我,是这样追鬼滅の刃的 - 元视角 使用 Python 抽取《半泽直树》原著小说人物关系 - 元视角 厉害了!打工人用 Python 分析西安市职位信息 - 元视角 使用 dotTrace 对 .NET 应用进行性能分析与优化 - 元视角 一道 HashSet 面试题引发的蝴蝶效应 - 元视角 基于选项模式实现.NET Core 的配置热更新 - 元视角 Dapper.Contrib 在 Oracle 环境下引发 ORA-00928 异常问题的解决 - 元视角 .NET Core 中对象池(Object Pool)的使用 - 元视角 利用 MySQL 的 Binlog 实现数据同步与订阅(下):EventBus 篇 - 元视角 利用 MySQL 的 Binlog 实现数据同步与订阅(中):RabbitMQ 篇 - 元视角 利用 MySQL 的 Binlog 实现数据同步与订阅(上):基础篇 - 元视角 记一次从已损坏的 Git 仓库中找回代码的经历 - 元视角 .NET Core 原生 DI 扩展之属性注入实现 - 元视角
使用 Coding.NET 和 Hexo 实现网页游戏的发布 - 元视角
飞鸿踏雪 · 2015-03-24 · via 元视角

本文将尝试借助 Coding.NET 的项目演示功能,通过对 Hexo 中支持的发布类型进行扩充,实现可以在 Hexo 中发布网页游戏,从而方便博主展示游戏作品和帮助读者了解游戏效果。

为什么要这样做

博主是一名至今为止都还没有做出一款完整游戏(指已上线)的游戏开发者,可是即使这样,博主依然愿意将自己在游戏开发过程中的感悟和体会分享给大家,因为博主在学习编程的路上摸索了这么久,首先要感谢的就是那些愿意在互联网上分享技术的人们,不管是 Github 上愿意将项目开源的那些技术大牛,还是在博客圈子里不断探索追逐梦想的人们,如果没有他们不求回报的辛勤付出,我是绝对不可能在环境科学这样一个专业中学好编程技术的。作为一名开源技术的追逐者,我们应该抱着"既取之,必与之"来回馈开源社区。况且将自己的知识分享给其他人,不仅可以敦促自己不断地学习,更能促进相互之间的学习,所以说写博客其实本来就是一件百利而无一害的事情。

好了,说了这么多,其实博主的想法就是能够在博客中增加项目演示的需求。博主经常在博客上写一些游戏开发的技术文章,每次都会在文章最后给出这篇文章中具体实现了一种怎样的效果。如果是静态图片当然没有什么争议,可是我们知道游戏或者说程序是一种动态的东西,所以如果采用静态图片似乎不能完全展示出具体的效果。而游戏作为一种可互动的产品,它更加强调玩家的互动和代入感,所以能够为玩家提供一个可控的操作环境就显得特别重要。以往在CSDN博客都是利用 GIFCam 录制屏幕 Gif 动画来展示效果的,可是受制于 CSDN 每次上传图片必须小于 2M 的容量限制的要求,所以使用 Gif 基本只能让读者了解一个大概。现在博客采用七牛云存储来存储博客中的图片,这是在使用 CSDN 博客时所不能相提并论的,所以现在博主的博客基本上是以这个独立博客为主,CSDN 博客只是负责将独立博客的内容更新过去,博主每隔一段时间会去维护下 CSDN 博客,所以如何有时候没有及时回复大家的评论,还希望大家能够谅解啊。

那么,在 Gif 动画的基础上,有没有比这个方案更好的方案呢?博主的想法是直接将游戏嵌入到博客当中,这样读者在学习了技术上的实现以后可以立即体验到实际到操作游戏的感觉,从而更快地了解游戏的实现。因为博主认为只有真正热爱游戏的人才能够设计出好的游戏,所以博主最近打算在博客中开设一个专门推荐好游戏的栏目,这样可以让我们一边玩游戏、一边学习技术,这样的想法可好?哈哈,好了下面我们来说说怎样实现这个目标!

怎样实现这样的目标

Coding.NET 是一个类似于 Github 的网站,提供了免费的项目托管服务。和 Github 不同的是 Coding.NET 为所有的 Web 项目提供了提供一个在线的演示环境,就是说只要 Coding.NET 支持你的项目,那么你的项目就可以托管在这个网站上面进行演示。基于这样一种机制,博主便想到下面两种实现的思路:

思路 1

因为 Unity3D 可以将项目导出为 WebPlayer 项目,在 Unity5.0 中更是提供了 WebGL 的支持,可以将 Unity3D 游戏导出为网页游戏。既然可以导出网页游戏,那么我们就可以将网页项目托管到 Coidng.NET 上,然后 iframe 框架引用到博客当中。不过这种方法可能会影响到网页的加载速度和搜索引擎优化,因为所有的搜索引擎都讨厌 iframe。所以这种思路果断放弃咯!

思路 2

将 Unity3D 导出的.unity3d 文件托管到七牛云存储上,然后通过在 Hexo 中增加一个新的模版,来实现.unity3d 文件和模版文件的对接,模板文件采用 Unity3D 的 WebPlayer 插件进行编写,在实现目的的基础上保证整个页面布局美观大方。这种方法的优点是完全原生,没有第三方依赖关系。缺点是页面是针对某一个 Hexo 主题的,没有办法做到一次编写、完全通用的效果。好了,下面我们就以这种思路来开始实现这个伟(zhuang)大(bi)的目标吧!

模板修改

首先我们的目的是要实现在博客中集成游戏的功能,因此我们的游戏是不能作为博客的文章出现的首页,我们知道在 Hexo 中可以通过 hexo new page[PageName]这个命令来生成一个自定义页面,而且生成的自定义页面不会出现在博客首页,只有通过链接才可以访问到这个页面,因此我们可以从这里作为突破口。在输入 hexo new page[PageName]命令后我们发现在 hexo 的 source 文件夹下会生成一个以 PageName 命名的文件夹,在这个文件夹中有一个 index.md 的文件,通过修改这个文件的内容就能实现自定义页面。可是我们发现一个问题,每次生成一个新的页面就需要创建一个新的文件夹,这样的结构对我们管理游戏项目十分不便。怎么办呢?首先我们在 source 文件夹下创建一个 games 的文件夹,然后再该文件夹下创建一个子文件夹,子文件夹的命名可以任意(此处以 example 为例)关键是要在这个子文件夹里需要放置我们前面通过命令生成的 index.md 文件,此时我们就可以通过http://YourSite.com/games/example来访问这个页面了,此后如果需要发布新的游戏,可以将 example 文件夹复制一份然后重命名即可。好了,下面我们来重点说下这个 index.md 里的内容。通过查看 Unity3D 生成的网页文件我们了解到一个完整的 Unity3D 游戏需要两个东西,一个是描述页面结构的 HTML,一个是.unity3d 文件。这里面麻烦点的是 HTML,开始觉得蛮容易的,后来发现修改模板实在困难,所以不得不放弃这种思路了。

思路 3

博主是最近了解到,Github 除了可以用 xxx.github.io 这种方式搭建博客外,还可以通过 gh-pages 分支来实现,换句话说只要我们把静态的网页放到项目的 gh-pages 下,Github 就能帮你把页面显示出来,因此我们就可以将 Unity3D 导出的网页版本游戏放到 Github 上,从而实现游戏的在线演示。好吧,满满的罪恶感啊,要是有一天 Github 被 GFW 了,我就是那个断送它的人啊!

效果演示