过去半年多来一直在负责开心农场2的server端开发,经历各种杯具洗具的洗礼,需求变更,架构改变,方案切换,每天都承受巨大压力。折腾到现在总得总结一番。
除了网络层用cpp写之外 游戏逻辑在服务端有大约3w行python代码,不是个小数字。
在这个层面上的开发考虑问题顺序永远是
1.灵活,就是架构保证了让各种需求变更容易实现,而且容易实现内部模块的开启和关闭,而策划想到的需求往往还不够周全,不能考虑所有的情况,而在这种情况下要保证代码整体的优雅,就得在层次和模块上多考虑如何划分
2.简单,即用最简单的方法满足大部分的实现,控制软件复杂度一直是大型软件开发的关键点。如果一个需求的实现过于复杂,则要考虑该需求是否真的有价值
3.论证方法,一个需求是不是靠谱,是不是能被千万级的用户接受,或者说一个实现,想要提高用户体验,到底从何下手。都不是决策者拍脑袋说了算的,需要有科学的论证方法。mixpanel是个很好的数据统计和分析工具,使用简单。而程序上各种profiler工具也应该经常利用,往往解决最早出现的几个瓶颈问题就能使性能提高很多
4.性能,放在最后的原因是性能永远不能考虑超过灵活性,“过早优化是万恶之源”的道理大家都明白,太早扣细节往往会失去性能提高的可能性,而且对性能瓶颈的判断往往是不正确的
除了网络层用cpp写之外 游戏逻辑在服务端有大约3w行python代码,不是个小数字。
在这个层面上的开发考虑问题顺序永远是
1.灵活,就是架构保证了让各种需求变更容易实现,而且容易实现内部模块的开启和关闭,而策划想到的需求往往还不够周全,不能考虑所有的情况,而在这种情况下要保证代码整体的优雅,就得在层次和模块上多考虑如何划分
2.简单,即用最简单的方法满足大部分的实现,控制软件复杂度一直是大型软件开发的关键点。如果一个需求的实现过于复杂,则要考虑该需求是否真的有价值
3.论证方法,一个需求是不是靠谱,是不是能被千万级的用户接受,或者说一个实现,想要提高用户体验,到底从何下手。都不是决策者拍脑袋说了算的,需要有科学的论证方法。mixpanel是个很好的数据统计和分析工具,使用简单。而程序上各种profiler工具也应该经常利用,往往解决最早出现的几个瓶颈问题就能使性能提高很多
4.性能,放在最后的原因是性能永远不能考虑超过灵活性,“过早优化是万恶之源”的道理大家都明白,太早扣细节往往会失去性能提高的可能性,而且对性能瓶颈的判断往往是不正确的