这个“凪光”的游戏官网,我早就想动刀子了。之前的那个版本,简直就是用脚趾头搓出来的,看着就别扭,功能还特别卡。尤其是我最近准备把游戏推给几个发行商看看,那个老网站拿出来太丢人了,必须马上整容,重新搞一个像样的门面。
下定决心:先抓什么工具来干活?
我的想法很简单:官网这种东西,不是交易平台,也不是社交应用,它核心功能就是展示信息和更新日志。我不想被数据库拖着走,更不想去操心服务器的运维。稳定、快速、好部署,这是我的三个硬要求。我一开始就直接把那些需要跑动态数据库的方案全扔了,什么PHP、Java那一套,通通不要。
我手边正好在玩前端那一套,于是决定用静态生成方案来搞定。我没有选那些太老的静态生成器,直接抓了*这个框架。为什么抓它?因为它自带打包和路由管理,我不用自己去从零开始搭脚手架。而且它能搞静态导出,部署起来特别轻松,就是一些HTML文件,扔到哪里都跑得飞快。我选这个,纯粹就是为了最大限度地省事和省钱。
内容管理这块我也做了个很糙但高效的决定:我不用CMS,太重了。所有的游戏介绍和更新日志,我全部写成Markdown文件。程序自己去读取、解析、然后生成页面。这样我每次更新日志,只要写个文本文件丢进去,重新编译一下,新的内容就上去了,简单粗暴。
开始垒砖头:设计稿是硬伤
工具选完了,真正的痛苦才开始。我一个敲代码的,你让我去搞设计,那简直就是折磨。我硬是拉着我那边认识的美工朋友,求爷爷告奶奶,让他给我随便糊了几个主色调、字体、和版式布局,然后我就照着那几张图开始写CSS。反正外观不能太花里胡哨,必须稳重,突出“凪光”这个游戏本身的高冷调性。
我先开始搭核心的结构,这回我给官网分了四个主要的页面,逻辑要清晰:
- 主页:这必须是门脸,一个大大的宣传片,几个核心的Slogan,把玩家先给摁住。
- 游戏详情:这个页面我塞满了玩法介绍和截图,得让玩家看清楚我们到底在做什么。
- 媒体资源:一些高分辨率的Logo和素材,给媒体朋友下载用的,这个是专业网站必备。
- 更新日志:这个是本次更新的重点,我得让它看起来像个专业的开发记录,而不是随手写的流水账。
在写页面的过程中,我最大的时间都花在了图片处理上。游戏截图分辨率高得吓人,我得想办法让它在各种屏幕上看都不至于糊成一坨,同时加载速度还不能慢。我反复调整了*的图片组件配置,花了整整两天时间去优化图片大小和加载策略,最终实现了根据用户设备自动加载不同尺寸的图片。这搞定之后,网站速度立马就上来了。
实现日志功能:让更新自动跑起来
这回更新的重头戏就是“更新日志”模块(也就是标题里的“更新日志”部分)。我不能接受每次更新都要手动改HTML文件。我的目标是:我扔个文件进去,它自己就出活儿。
我的做法是这样的:
我创建了一个叫 `posts` 的文件夹。每当我完成一个版本更新,我就会新建一个Markdown文件扔进去。这个文件里包含了更新的日期、版本号和详细的修改内容。我在*里面写了一堆脚本,负责在网站构建的时候干几件事:
- 第一步:脚本会一把抓起 `posts` 文件夹里所有的MD文件。
- 第二步:它会根据文件头里写明的日期,把所有日志按照时间顺序给我排好队。
- 第三步:把Markdown的内容转换成浏览器能认的HTML格式,并且给它加上特定的样式。
- 第四步:将处理好的数据生成一系列的静态页面,确保每次访问日志的速度都是秒开。
这个过程中,Markdown解析库的配置让我踩了好几个坑。特别是当我在日志里需要嵌入代码片段或者特殊图表的时候,默认的样式丑得我没法看。我硬是花了半天时间去调整那个代码高亮库的颜色和边距,才勉强达到了我的审美标准。但最终实现的效果很现在我只要写完日志,一个命令下去,官网就同步更新了。
收尾:推出去!
既然用的是*的静态生成,部署起来就没什么难度了。我连服务器都没去租。我直接把代码托管到了Git上,然后选择了Vercel这个平台。Vercel天然支持*,我只需要把我的Git仓库链接过去,它自己就能完成所有的编译、构建和发布工作。我甚至不用去管缓存、CDN这些乱七八糟的事情。彻底省下了一大笔服务器的钱和维护的精力。每次我提交新的代码或者新的日志文件,Vercel会在几分钟内自动生成全新的静态网站,并且推送到全球节点。
上线前测试了一遍,发现有个小毛病,在一些老旧的浏览器上,字体和动画加载有点抽风。我硬是扒拉了一堆兼容性CSS代码才把它给按住。现在这个官网算是彻底拉皮成功了,运行起来贼快。虽然过程有点糙,但总算是把面子工程给做完了。这下可以安心去跟发行商吹牛逼了,告诉他们,看,我们是正经搞游戏的,官网都这么专业。