一转眼,毕业已经5年了,从实习开始,算是一直从事着游戏服务端的开发工作,但其实更多的都是在项目已有的引擎框架上做开发和迭代,还没有从头开始着手写过一个底层的服务器,这听起来还是有点不太过瘾的。于是乎,准备开始搭个工程开始搞搞,期望是从0开始,先写个基础的Echo服务器,然后慢慢迭代,从简单收发消息到RPC封装,从基础功能到性能优化,从单点架构到分布式架构,从手动部署到运维工具自动化。一个目的是想“过把瘾”,另个目的就当是自己这几年的总结复盘,想借此把那些零散的知识点串联起来,也看看自己目前的技术大概到哪个层面了。
在开发语言上,选择了自己使用较多的C++,再配合其优秀的boost::asio网络库来完成基础的搭建。工程采用CMake来构建,支持跨平台,在Windows上使用VS2022进行开发。代码仓库放在Github。
相对来说,需要准备的第三方环境就是boost库,这儿我使用的是1.73版本,下载下来后,运行其目录下的bootstrap.bat完成编译。编译完毕后配置下两个环境变量
$BOOST_ROOT=’boost库所在路径’
$BOOST_INCLUDE_DIR=’boost库所在路径’
$BOOST_LIBRARY_DIR=’boost链接库所在路径’ (在编译完成后,会在boost库所在目录下生成一个stage\lib的文件夹,这个文件夹就是链接库文件夹)
然后就可以利用vs创建一个CMake工程了,随意取了个工程名叫InitServer,然后编写下基础的CMakeLists.txt如下(上面的几个环境变量会用在CMake文件里面):
# CMakeList.txt: 顶层 CMake 项目文件,在此处执行全局配置
# 并包含子项目。
#
cmake_minimum_required (VERSION 3.8)
include_directories($ENV{BOOST_INCLUDE_DIR})
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/common)
link_directories($ENV{BOOST_LIBRARY_DIR})
project ("InitServer")
# 包含子项目。
# add_subdirectory ("InitServer")
# 将源代码添加到此项目的可执行文件。
add_executable (InitServer "InitServer/InitServer.cpp" "InitServer/InitServer.h")
add_executable (InitClient "InitClient/InitClient.cpp" "InitClient/InitClient.h")
至此,基础的环境就搭建完毕了。
这个系列的相关代码都会不定期提交到github上,仓库地址点这儿!