在游戏服务器开发中,跨平台不是必须的。线上游戏既有windows下的C++、.Net服务器也有linux下的C++、go、erlang服务器。但是无论如何都要保证开发环境和线上运行环境的一致,否则不同平台的问题可能引发致命的后果。

很多人希望使用windows开发,以使用其便利的开发环境,然后在linux下运行,使用其强大的运维系统。我以前也有这种想法,不过实践证明这绝对是个bad idea。为什么呢,咱们不妨看一下这种开发环境:



开发机用于程序员开发测试,而测试机用于内部压力测试,发布机则是外网测试机器。由于windows系统的单用户特点,不同用户的隔离效果并不好,开发机和发布机可能使用个人版和server版的windows,而且单机运行多组服务器程序对运维不是很友好。如果同时还要保证linux版本的运行效果,则需要另外搭建一组测试机和发布机,这都是成本。关键问题是开发流程管理起来就是两套模式,容易出错。

下面再来看一组linux的开发环境:



这种环境我也用过,感觉非常简洁容易理解,我们只需要购买一台强大的中心服务器,即可保证所有开发者共享高性能的运算能力。这种开发环境还有一个好处,就是主开发机可以使用管理员账户统一配置开发环境,新增用户不必安装各种开发工具、各种配置了。用户配置文件如.bashrc .vimrc等都可以放在svn上更新即可。发布过程也可以由管理员操作,避免误操作。这都是得益于linux的权限管理功能。

另外一些要注意的环境配置:

内网一定使用固定IP+网线直连,保证网络稳定快速。

成员之间通信使用内网通之类的软件,也是为了保证通信效率和安全。

注意svn分组管理权限,防止误操作。

代码提交之前必须要codereview,否则一个人的bug可能会迭代几个版本之后才出现,容易隐藏起来,且很难回退到正确的版本。

C++服务器linux开发环境管理的更多相关文章

  1. Linux开发板(树莓派)和服务器进行双向通信(socket)

    前言 ​ 物联网是目前嵌入开发必备的属性之一,我们常常需要把自己开发板和云端进行交互,本篇博文就记录一下. ​ 使用Socket来实现Linux开发板和服务器进行双向通信,Python中是默认集成了s ...

  2. 用Windows+VirtualBox搭建嵌入式Linux开发环境

    Windows+VirtualBox的嵌入式Linux开发环境的搭建 最近一直在学习Linux的设备驱动编写,一直是在物理机上安装的Ubuntu进行的,但是在Ubuntu12.04的系统中,已经不能用 ...

  3. 熟悉linux开发环境(实验)

    北京电子科技学院(BESTI) 实验报告 课程: 深入理解计算机系统 班级: 1353班 姓名:张若嘉 杨舒雯 学号:20135330 20135324 成绩: 指导教师:娄嘉鹏 实验日期:2015. ...

  4. 嵌入式Linux开发——内容介绍与开发环境的搭建

    嵌入式Linux开发步骤 设计自己的硬件系统 编写Bootloader 裁剪自己的Linux内核 开发移植设备驱动 构建根文件系统 开发应用程序 嵌入式Linux学习要点 熟练使用开发工具和相关指令集 ...

  5. Linux开发工具的使用

    1.   Linux开发工具的使用 Vim编译的使用 Gdb调试工具的使用 Makefile的编写 linux跟踪调试 SSH的使用 subversion的使用 1.   Linux开发工具的使用 V ...

  6. 嵌入式linux开发之工具------tftp

    我在嵌入式linux开发中用到tftp的地方主要有2个方面: 1.是在嵌入式目标板启动时,bootloader启动时通过uEnv文件,下载dtb文件和kernel文件: 2.是在嵌入式目标板启动后,通 ...

  7. 利用 WSL 在 Windows下打造高效的 Linux 开发环境

    WSL-Windows Subsystem for Linux 介绍 The Windows Subsystem for Linux lets developers run Linux environ ...

  8. 《嵌入式Linux开发实用教程》

    <嵌入式Linux开发实用教程> 基本信息 作者: 朱兆祺    李强    袁晋蓉 出版社:人民邮电出版社 ISBN:9787115334831 上架时间:2014-2-13 出版日期: ...

  9. 服务器(Linux) 安装python3

    1.python3和python2可以共存,不用删自带的python2 服务器Linux下默认系统自带python2.6的版本,这个版本被系统很多程序所依赖,所以不建议删除.如果使用最新的Python ...

随机推荐

  1. windows客户端连接到samba服务器(如何使用samba)

    首先确保你的服务端已经配置好samba并成功启动服务,方法可参考此文章http://blog.csdn.net/linglongwunv/archive/2010/01/19/5212875.aspx ...

  2. HDOJ(HDU) 2060 Snooker(英语很重要。。。)

    Problem Description background: Philip likes to play the QQ game of Snooker when he wants a relax, t ...

  3. EditText输入长度动态控制,最大长度为16位,小数点后面最大为2位,输入整数只能为13位

    首先在xml 中把inputType设置为numberDecimal (包含小数点)然后在把maxLeng设置为16 package com.example.numbertest; import an ...

  4. C#中枚举类型和int类型的转化

    先定义一个枚举类型 , 初中, 高中,大学 }; int ->enum int d=2; PropertyType  a=(PropertyType)d; int <- enum Prop ...

  5. ajax提交数据问题

    加入traditional:true属性 traditional 类型:Boolean 如果你想要用传统的方式来序列化数据,那么就设置为 true.请参考工具分类下面的 jQuery.param 方法 ...

  6. JQuery的ready函数与JS的onload的区别详解

    JQuery的ready函数与JS的onload的区别:1.执行时间window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行.$(document).ready()是DOM结构绘制 ...

  7. iOS8 Core Image In Swift:视频实时滤镜

    iOS8 Core Image In Swift:自己主动改善图像以及内置滤镜的使用 iOS8 Core Image In Swift:更复杂的滤镜 iOS8 Core Image In Swift: ...

  8. [转] The Single Biggest Obstacle to Trading Success

    Why do some people succeed spectacularly in the market while others fail? The market is the same for ...

  9. 秒味课堂Angular js笔记------$scope.$watch和$scope.$apply

    $scope.$watch(watchFn , watchAction , deepWatch) 其中,watchFn是带有angular表达式或函数字符串: watchAction是一个函数或者表达 ...

  10. servlet方式通过Cookie记住登录时的用户名和密码

    1.建立web工程 2.创建存放servlet的包 3右键包,新建servlet,路径将前面的servlet去掉,只需要doPost和doGet方法 编写servlet CookieServlet.j ...