距离上次更新已经过去九个月了,纠结了很久才在键盘上敲下了本文的第一个字符,简单回顾一下自己这段时间都干了些什么。
年初自己制定了精确到每周甚至每天的学习计划,以期尽快地追赶进度,而且初期也确实很好地执行了一段时间。
之后因为要赶5月份的项目演示Demo,2-4月份基本都在深圳出差。临近各种DDL时,工作内容和压力都会增加,尽管自己在尽力推进学习计划,但还是逐渐掉队了,并且随着各种节假日补齐计划的破灭,学习最终被完全搁置。不过这期间每天跟同事一起体验版本、解决问题,甚至在验收前一天晚上还在做临时被修改的需求,还是一段很美妙的体验,那种集体熬夜和争分夺秒,跟项目上线有得一比。
随着5月份演示结束,自己回到了北京。之后的工作也逐渐轻松起来,项目开始了为期两个月的引擎升级和代码重构,这段时间项目的框架发生了很大变化,我也意识到开发中的代码设计和架构能力同样十分重要。
6-8月份,自己也有时间捡起之前的学习计划,顺利完成了一些课程的学习,同时为了代码同步方便,自己还在家里的软路由上搭建了Svn和DDNS服务,这是两件目前回忆起来挺有成就感的事情。
不过这段时间自己工作上也有些受挫,在Unity编辑器工具开发和ECS学习上与同事有不小的差距,需求延期严重,有些甚至现在都还没有做好。同时这段时间自己也养成了一个不好的习惯,总想着把工作拖到周末来做,而周五下班到周六又因为盲目地乐观和缺少DDL的压力,经常什么都不会做。周日又会将工作拖到很晚才开始,最后也只能草草收场,等待周一的延期。这种恶性循环目前很是困扰我……
9月份,距离下半年的绩效评估只剩两个月,年初制定的每周阅读一篇晋升PPT的计划还从来没有执行过,嘴上总说着的开始行动,到头来变成了自我安慰的麻醉剂。
另外,由于上一篇博客耗费了自己较多的心力和时间,导致自己想到博客时就有一点阵痛,同时也无形中拉高了自己的创作门槛,最终使得自己一直都没有再鼓起勇气继续,而且这种拖延一旦开始,之后想再克服只会越来越难。
不过当事情不能更坏时,之后的每天都在变好。这个周末自己终于下定决心写下了这篇流水账,虽然依然没有什么高深的内容,不过是一个新的开始。
AcWing 《Unity3D应用课》学习总结
直播时了解到Y总要出Unity课,双十一果断上车。学完之后我的评价是,适合用来熟悉Unity引擎,一些基础的引擎操作、脚本编写、网络通信都涉及到了,但是在系统性方面专业性不强,代码设计也相对混乱。课程整体难度不高,对于Unity比较熟悉或者已经有使用经验的同学不是很建议学习,但如果想开始游戏开发,但不知从何动手的可以尝试。
贴个录屏,展示一下最终成果:
一些自认为的亮点:
- 枪械后坐力:准星跳动模拟算法,手K了一个手枪的后坐力动画
- 联机:基于Rpc和网络变量的基础同步,公网联机实现
- 镜头:相机固定在固定骨骼处,在播放死亡动画时很有感觉
- 动画:BlendTree动画平滑(即总-1到1不是瞬切,而是逐渐过渡,为此专门写了逻辑,不过总感觉做法有点像野鸡)
- Linux基础操作:云服务器使用、Django框架使用、tmux的使用、自动化脚本编写等(不得不说Y总Linux部分行云流水的操作还是很有观赏性的)
以上有一些是参考课程实现,也有一些是自己原创。目前自己的项目还有不少bug,估计后面大概率也不会再修了,不过目前玩起来还可以,至少如果联机条件下,基础的对枪还是挺有乐趣的。附上课程链接和自己的仓库链接。
软路由上Svn服务器的搭建
首先回答为什么不在Github上建仓库,因为对单个文件和仓库大小都有限制(单个文件100M,仓库大小1G),游戏又是一个重资产的项目类型,代码只占很小一部分。所以最终选择了自建Svn服务器。
安装与启动Svn
存储分配
在软路由上划分出合适的空间,不过我个人不是很喜欢分区,因为无法预测未来,经常出现分得太多或太少的情况,所以推荐在一整块存储下单独划分一个文件夹给Svn
安装Svn插件
直接使用命令行或者在软件包内搜索“Subversion-Server”安装即可:
opkg update
opkg install subversion-server
启动Svn服务
使用命令行:
svnserve -d --listen-port 3690 -r /path/to/your/SvnRoot
来启动SVN服务器,“-d
”表示在后台运行服务器,“3690
”为端口号,“-r
”表示指定服务器目录
配置开机自启动:定位到”/etc/rc.local
”下,在”exit 0
” 之前插入上一步中的代码即可
创建与配置项目
创建项目
使用命令行:
svnadmin create path/to/your/SvnRoot/YourRepoName
chmod 777 -R path/to/your/SvnRoot/YourRepoName
即可在指定目录下新建一个名称为“YourRepoName”的仓库
配置项目
- 项目基本属性:执行命令
vi /mnt/sdb/svn/MyRepoName/conf/svnserve.conf
,将下图中的代码前的注释去掉,最好把空格也一并去掉 - 配置项目的用户:执行命令
vi /mnt/sdb/svn/MyRepoName/conf/passwd
,在其中添加好自己的用户名和密码 - 配置项目禁用rep-cache:执行命令
vi /mnt/sdb/svn/MyRepoName/db/fsfs.conf
,否则会在提交之后报错(但是不影响使用)
配置外网访问
DDNS配置
为什么需要DDNS?家里的宽带虽然申请了公网IP,但这个IP地址并不是固定不变的,而是可能在拨号后发生变化的,因此我们不能使用可能会变化的IP地址来找到服务器,而是需要一个固定不变的地址。
DDNS的原理很简单,就是让你的设备定期将自己的IP地址上报到DDNS服务器,而我们再使用一个固定的域名去访问DDNS服务器,这样增加了一层映射后,我们就能实现稳定的访问了。
DDNS的配置并不复杂,网上教程也很多,这里就简单整理一下步骤:
- 准备一个域名:开始配置前需要准备一个用来稳定访问的域名
- 配置DNS解析:打开一个免费的DNS解析网站,如CloudFlare、DNSPod等,添加自己的域名和一条A类型的解析记录(腾讯云的域名可以直接在DNSPod中找到)
- 获取对应DNS网站的Token:Token用来作为本地设备将IP地址上传到DNS服务器的凭证,不同的DNS网站获取方式可能不同,例如CloudFlare就可以在账户处获取
- 软路由配置:回到OpenWrt,找到动态DNS,选择IPv4,按照下图设置,切换服务供应商为上一步的DNS供应商(这里是CloudFlare),主机名和域名与DNS解析记录保持一致,用户名为邮箱,密码为API Key
另外,如果使用了腾讯云的域名,OpenWrt中也有对应的“腾讯云DDNS”插件,配置起来更方便,具体可以参考官方文档,这里不再赘述。
端口转发
直接在软路由防火墙中增加一个端口转发规则,将外网来自3690的访问转发到内网3690即可
测试
在浏览器中输入地址:svn://your.domain.name:3690/YourRepoName
,如果正确列出根目录,即说明配置成功,之后就可以搭配本地Svn工具,实现上传和拉取了