plain framework 1 一款主要用于网络(游戏)开发的C/C++框架 安装篇

上次介绍了一下plain framework的基础相关资料,今天该框架正式开源发布。项目的地址托管于github上,我相信大多数朋友都应该知道。今天要介绍的是该框架的目录基本结构,以及分别在linux以及windows平台上安装的例子。为了让初学或者技术不是太扎实的朋友也能快速上手,我在这里一步步从开发环境的搭建讲述到第一个比较完整的示例(网关服务器),每一步都是今日从空白的系统开始及时操作,由简入深,如果大家不太明白请到交流群询问。(新的系统centos7.0及以上我的脚本暂时无法通过环境安装)

源码地址

https://github.com/viticm/plainframework1

目录结构

框架基本介绍

地址:http://www.cnblogs.com/lianyue/p/3972492.html

参考手册

参考手册正在编写过程中,会第一时间先同步到博客上,由于这些文章可能上不了首页,感兴趣的朋友不妨关注博客。

持续更新

如果框架发现了新的BUG或者有内容更新,将会持续同步到github项目上。

LINUX INSTALL

本次选用的linux系统为centos(6.5),你可以尝试其他linux系统也可。安装好linux系统,或者已经存在linux系统的情况下,那么我们开始搭建lnmp环境(web开发环境)。你可以在网络上去寻找相关的资料,或者使用我提供的脚本进行安装,不过php版本最好为5.4以上版本,这是为以后扩展预留。

首先你要确保你的系统中安装了git,如果没有安装请用以下命令安装(需联网):

yum -y install git

其次将框架源码安装到你的开发目录中,如:

cd ~ && mkdir work #进入用户主目录,并创建工作目录
cd work && git clone https://github.com/viticm/plainframework1

1、使用框架内的脚本进行在线安装(必须使用root权限安装)

cd plainframework1/tools/script/linux/install/ && sudo sh install_web_develop.sh

2、使用提供的离线包及脚本进行离线安装(必须使用root权限,没有网络的需注意以下说明)

可以到百度云盘去取该离线安装包:链接:http://pan.baidu.com/s/1eQzQMem 密码:bycv

将包放到/web目录下并解压,命令如下:

mkdir -p /web && cd /web && tar -xjvf web.tar.bz2

如果没有网络的情况下,你保证了安装gcc、g++、cmake等必要的工具之后,设置脚本install_web_develop.sh的cDownload=on参数为off。

运行脚本进行安装(大约30~50分钟):

sh install_web_develop.sh #运行脚本

安装成功截图:

安装成功后,再安装框架的开发环境(使用root安装):

cd tools/script/linux/install/ && sh install_environment.sh --full

开发环境成功截图:

创建用户数据库(网关服务器用):

cd ~/work/plainframework1/tools/script/sql/ #进入脚本目录
mysql -uroot -pmysql #进入mysql命令行

mysql> CREATE DATABASE sword_user DEFAULT CHARSET UTF8; //创建数据库

mysql> source sword_user.sql; //执行脚本

配置数据源:

vim /etc/odbc.ini #编辑配置文件

最终的配置如下,其实可以不更改:

[sword_user]
Driver          = /usr/local/lib/mysqlodbc/libmyodbc5a.so
DATABASE        = sword_user
DESCRIPTION     = MySQL ODBC 5.3 Ansi Driver test
SERVER          = localhost
UID             = root
PASSWORD        =
SOCKET          = 

[sword_character]
Driver          = /usr/local/lib/mysqlodbc/libmyodbc5a.so
DATABASE        = sword_character
DESCRIPTION     = MySQL ODBC 5.3 Ansi Driver test
SERVER          = localhost
UID             = root
PASSWORD        =
SOCKET          = 

编译框架

框架使用了cmake等工具编译,如果你使用了我提供的脚本那么编译环境可以不用自己配置。

1、编译依赖

cd ~/work/plainframework1/pf/dependencies/lua/ #lua
cmake ./
make
cd ~/work/plainframework1/pf/dependencies/iconv/ #iconv
cmake ./
make

2、编译框架核心

cd ~/work/plainframework1/pf/core/
cmake ./
make

编译完整示例

完整示例中提供了一个网关服务器,其中用到了网络、数据库等核心接口。

cd ~/work/plainframework1/applications/gateway/
cmake ./
make

运行示例

1、拷贝运行库

cd ~/work/plainframework1/applications/bin/
cp ~/work/plainframework1/pf/dependencies/dll/lib*.so ./
cp ~/work/plainframework1/pf/core/dll/libpf_core.so ./

2、配置文件

cd ~/work/plainframework1/applications/bin/
vim config/gateway_info.ini
[System]
DBIP=localhost
DBPort=3306
DBConnectionOrDBName=sword_user; 连接或数据库名称
DBUser=root
DBPassword=mysql
DBConnectorType=0; 连接类型 0 odbc,  1 mysql, 2 sqlserver, 3 mongodb(现在只实现了ODBC)
EncryptDBPassword=0; 是否加密了数据库密码
NetListenIP=127.0.0.1; 网络监听IP
NetListenPort=12680; 网络监听端口
NetConnectionMax=10240; 最大支持的网络连接数量

3、运行

cd ~/work/plainframework1/applications/bin/
./gateway

RESULT:

WINDOWS INSTALL

在windows上安装开发环境就相对比较容易了,因为不是使用源码编译安装的。我在这里使用的是wamp作为web开发环境,而odbc则是使用系统自带的odbc32位,如果你的机器不是64位的则没有关系。如果你想将框架和应用编译为64位则使用64位的ODBC,至于原因我就不解释了。

源码下载

如果用github朋友比较多的可以使用github的客户端,打开源码连接后:

PHP环境变量设置

将PHP的执行文件的路径设置到你的环境变量中,为了运行框架中的一些脚本,比较重要。

编译框架

由于vs编译时对重复的文件名则不能正确的链接到目标中,而框架中则存在了许多重复的文件名,所以这里使用到了为windows编译的工具。

路径: tools\script\bat\rename_forvsbuild.bat

双击打开,然后输入选项如下:

回车等待工具执行完成:

进入pf\core\scripts打开工程pf_core.vc9.sln进行编译(目前只支持release编译),当然你可以将此工程转换为vs的其他版本。

编译例子

同编译框架一样,例子的编译也需要重写项目文件。

打开tools\script\bat\rename_forvsbuild.bat

revert to standard是否还原为标准的,不用输入,直接回车,第二次执行该操作时工程将自动还原。

打开工程文件applications\gateway\scripts\gateway.vc9.sln进行编译。

安装mysql的odbc driver

地址为:http://dev.mysql.com/downloads/connector/odbc/ 版本3.5以上的即可

创建数据库

创建名为sword_user的数据库,编码设置为odbc,并在该数据库下执行脚本tools\script\sql\sword_user.sql。

配置ODBC

由于我使用的是32位的应用,所以使用32位的ODBC,如图:

添加你的mysql连接信息如下,连接名为sword_user:

运行示例

拷贝依赖和框架的动态库到applications\bin目录下。

依赖动态库:pf\dependencies\dll\Release

框架动态库:pf\core\dll\Release

保证mysql和数据库成功的前提下运行gateway.exe

RESULT

成员招募(长期有效)

如果你也对开源知识比较感兴趣,如果也对网络应用或者网络游戏感兴趣,如果你也对该框架感兴趣,你可以加入我们的QQ群(348477824)。

欢迎大家进群相互交流学习,同时也欢迎各位朋友对该框架供出自己的一份心力。

时间: 2024-08-02 06:43:52

plain framework 1 一款主要用于网络(游戏)开发的C/C++框架 安装篇的相关文章

10、Cocos2dx 3.0游戏开发找小三之容器篇:Vector、Map、Value

重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27705613 容器 3.0版本之前Cocos2d-x 引擎为我们提供了 CCArray. CCDictionary 等 Objective-C 风格的容器: 使用 Cocos2d-x 容器的一个重要原因在于 Cocos2d-x 的内存管理. 一般来说,被存入容器的对象在移除之前都应该保证是有效的, 但值得注意的是,在v3.0 beta版本中加入了数据结

unity3D 游戏开发之工程代码框架设计思路MVC

unity3D 游戏开发之工程代码框架设计思路MVC 设计目的 1.使工程结构更规范. 2.提高代码可读性,封装性,拓展性 3.提高工作效率. 正文内容: 1.Frame的组成结 (1)视图层(View) (2) 控制层(Control) (3)数据层(Model) 整个Frame是由这三个部分组成,每一层管理属于自己的逻辑,核心思想是游戏逻辑和UI 逻辑独立开.目前遇到的项目工程大多数View和Control逻辑都写在一起,这样后期修改 和维护效率会很低,因为耦合性很高而View又是经常要修改

1、Cocos2dx 3.0游戏开发找小三之前言篇

尊重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27094663 前言 Cocos2d-x 是一个通用平面游戏引擎,基于一个同样十分著名的游戏引擎 Cocos2d-iPhone 设计. 它继承了 Cocos2d 系列引擎一贯的特点:使用简单,运行高效.灵活,且功能强大. 与 Cocos2d-iPhone 不同的是,Cocos2d-x 还拥有强大的跨平台能力,只需要编写一次代码, 就可以无缝地部署在包括

FSM:游戏开发中的有限状态机(理论篇)转

游戏系统的本质是输入加输出.我们把游戏系统划分为多个不同状态,不同的状态在不同输入下产出不同输出.按照这种思想,我们可以把游戏中复杂的子系统,比如战斗系统,划分成多个不同状态,然后我们要做的只是,对于不同的战斗操作输入,转换相应状态,执行相应状态下的动作输出. 那么什么是有限状态机? 我们要说的状态机输入和输出都是离散的.有限的:在这个基础上,我们所说的有限状态机就是描述这一类问题:在有限的输入里,由于不同的输入时序产生的有限的输出组合的映射关系.要描述这种映射关系,有两种表达方式: 状态迁移表

plain framework 1(简约框架)一款主要用于网络(游戏)开发的C/C++框架 即将开源发布

在我们的日常开发中,我们往往会遇到这种情况,当我们换了一个开发环境时很可能会重新利用一套新的框架进行开发.由于不同框架有着不同的接口,所以我们不得不花时间再次熟悉这些接口,这将造成开发时间上的重复,而对于一个程序来说又经历了一段重复造轮子的过程.在游戏开发领域,我介入的时间并不太长,大约三年时间.抱着对于游戏的热爱和激情,在这几年时间里也是一个苦苦摸索的过程.我们国人有着这么一个通病,那就是所谓的“闭关自守”,我发现有些开发者是拥有了一套代码之后便利用这套代码可以玩转整个游戏界.我能了解这些朋友

开发者必须mark的一款2D移动游戏开发工具

摘要:灸热的夏季渐行渐远,凉爽的秋季迈着轻盈的脚步悄悄来到我们身边.站在初秋的窗前,凝望着远山.白云,总会心生很多遐想,总会有百感交集的情愫浮上心头.我想我是喜欢这个季节的."早上好"."今天又堵车了",伴随着同事们的说话声,突然意识到,额.我神游了--咳咳.步入正题,小编今天跟大家分享一款轻轻松松便能够实现2D画面动态光影的开发工具--Sprite Lamp. 何为Sprite Lamp? 开门见山,Sprite Lamp是一款能够帮助游戏开发者将2D画面与动态光

毕业2年,unity3d游戏开发2个月,第一篇随笔

今天是个值得纪念的日子.因为: 人生第一次通宵加班了,开通博客了,毕业刚好2年了,来上海2个月了. 欧了,说点什么吧(- o -)~zZ 一. [西安的日子]   大学过得很普通很普通,没什么波澜起伏的经历(额,我就不说是浑浑噩噩了,还是打算来电正能量吧@[email protected]).一句话就是——也是顺利毕业了,挂过科,还好有个证.就是毕业后,还觉着没玩好&没学好. 哦对了,在西安上的学,在西安开始的人生第一份工作. 大三去了个还算规模比较大的金融行业的软件公司实习,算是真正上的第一份

Silverlight3游戏开发之空当接龙基础篇

说明:我是我2011年发表在IT168上面的一篇空当接龙文章的第一部分,后面几部分不好查找了.当然,我主要侧重学习微软ASP.NET及Silverlight+Windows Phone 7开发等技术.搬到此处,仅供学员参考.另外,注意中仅针对中高级玩家,而且我使用的是随机的发牌技术. 在本篇中,我们将讨论空当接龙游戏开发中的基础编程工作. 一.定义全局变量 本游戏中使用的关键数据结构列举如下: private int nMaxMovingCards = 13; DispatcherTimer t

html5游戏开发-零基础开发《圣诞老人送礼物》小游戏

开言: 以前lufy前辈写过叫" HTML5游戏开发-零基础开发RPG游戏"的系列文章,在那里面我学习了他的引擎以及了解了游戏脚本.自从看了那几篇文章,我便对游戏开发有了基本的认识.今天我也以零基础为视点,为大家讲述如何开发一款简单的游戏.希望大家看了这篇文章,能使你对理解游戏开发有帮助. 你可以先测试一下游戏: http://lufylegend.com/lufylegend_developers/yorhom_Christmas/index.html 1,如何进行游戏开发 1.1游