flightgear vs2013

本文描述flightgear vs2013编译调试可运行。以前也写过fg3.4的编译,如果想去看的请参考http://www.freeyun.com/flightgear-3-2-0-generation-debug.html

最早的fg2.6的编译已删除,因存在一定的误导性。适用3.4以上面的版本,注意看osg要求的版本。

必备软件

下载安装解压cmake、osg、3rdParty:http://pan.baidu.com/s/1qW9WOES

如果想自己编译osg的参考osg编译

新建环境变量OSG_DIR  D:Program Files (x86)OpenSceneGraph

flightgear simgear 开发的版本:http://sourceforge.net/p/flightgear/_list/git?source=navbar

flightgear simgear 稳定的版本:http://www.flightgear.org/download/source-code/

编译的目录说明

fg-dir

3rdParty:第三方库

flightgear-build:FG的生成vs2013目录

simgear-build:SG的生成vs2013目录

simgear及flightgear:源代码目录

bin:里面放了3rdParty的bin,和osg的bin目录,同时也需要指定fgfs.exe,比如我指定的vs2013的工作目录D:FlightGear-devbin。还有一种方法就是吧3rdParty和osg两者bin都添加到环境变量Path。

data:顾名思义就是fg的资源目录,你可以下载我提供的,那个是当前最新仓,当然你sim和fg也得是最新仓的,解压出来后,可以直接在我上面更新,省下很多时间,如你用了指定版本的,可以用安装版的data。

terrasync-dir:这个目录是空的,用于存放联网下载更新机场地景等等目录。

关于其他目录,不在这个范围之内就不解释。

Cmake简单三步

点击configure->选择编译器->点击Generate

编译simgear

修改simgearsimgearprops下面的PropertyInterpolationMgr.cxx函数

void PropertyInterpolationMgr::update(double dt)

,这个是一个bug,操作容器出错,

void PropertyInterpolationMgr::update(double dt)
  {
    if( _rt_prop )
      dt = _rt_prop->getDoubleValue();

	for (InterpolatorList::iterator it = _interpolators.begin();
		it != _interpolators.end();
		)
	{
		for (double unused_time = dt;;)
		{
			PropertyInterpolatorRef interp = it->second;
			unused_time = interp->update(*it->first, unused_time);

			if (unused_time <= 0.0)
				// No time left for next animation
			{
				++it;
				break;
			}
			if (interp->_next)
			{
				// Step to next animation. Note that we do not invalidate or delete
				// the current interpolator to allow for looped animations.
				it->second = interp->_next;
				++it;
			}
			else
			{
				// No more animations so just remove it
				it = _interpolators.erase(it);
				break;
			}
		}
	}
}

source code:D:/FlightGear-dev/simgear

the binaries:D:/FlightGear-dev/simgear-build

CMAKE_INSTALL_PRE:d:/Program Files (x86)/SimGear

打开sln文件, 编译INSTALL项目

新建环境变量SIMGEAR_DIR d:/Program Files (x86)/SimGear

编译flightgear

source code:D:/FlightGear-dev/flightgear

the binaries:D:/FlightGear-dev/flightgear-build

运行调试

设置fgfs启动项目并添加调试参数(选择fgfs->右键属性->调试->命令参数)

--fg-root="D:FlightGear-devdata" --geometry=800x600 --terrasync-dir="D:FlightGear-devterrasync-dir" --disable-ai-traffic --multiplay=out,10,127.0.0.1,5000 --multiplay=in,10,127.0.0.1,5001 --enable-terrasync  --log-level=debug

指定了data资源目录(如果按照目录结构也可以省掉fg-root参数) 分辨率 地景更新目录,关闭AI,联网的操作,然后你看你的网速了,会联网更新地景,进入到飞机画面,如果你想启动其他飞机,你也需要

--fg-aircraft=“飞机的目录名字(D:FlightGear-devdataAircraft)”比如 --aircraft="c172p"。

关于更多的参数请看手册。

最新飞机下载:https://svn.code.sf.net/p/flightgear/fgaddon/trunk/Aircraft/

图flightgear vs2013运行后

flightgear vs2013 737-100

 

总结

如果你发现出现问题了,请重复查看是否漏了那些步骤。

本文写的在后面,flightgear也一直在更新,更多的信息推荐去看wiki.flightgear.org,如果你对最新版本的感兴趣也去下载git仓,sf.net上,由于之前的git仓也已移到sf.net上面。如果你只需要制作飞机地景,就不需要编译FG,因为它有提供专门的工具制作,直接运行FG起来看效果,前提是你要知道怎么使用。作为开源的项目可能代码写的不好,可以去修改它。用的是3.7的版本号,已经有QT 5.0在里面。用来代替fgrun的那个图形启动界面。

 

flightgear联飞服务器fgms构建

本文描述关于flightgewar的联飞服务器fgms的vs2013构建及简要的分析下。

必备

fgms项目:https://gitlab.com/fgms/fgms-0-x

多线程库pthread win32:ftp://mirrors.kernel.org/sourceware/pthreads-win32/pthreads-w32-2-9-1-release.zip

fgms的配置文件http://flightgear.mxchange.org/fgms/fgms.conf

生成工程方案

打开cmake,fgms的目录下分别填入

source code:E:/fgms-0-x-master

build the binaries:E:/fgms-0-x-master/build

configure->选择vs2013->Finish。

设置pthread的路径

E:fgms-0-x-masterpthreadsPre-built.2include

E:/fgms-0-x-master/pthreads/Pre-built.2/lib/x86/pthreadVC2.lib

Generate生成解决方案->编译生成exe,拷贝pthreadVC2.dll到E:fgms-0-x-masterbuildDebug目录下。

复制文件fgms.conf到C:Usersfreeyun(备注这个是我的用户文件夹,紧供参考。)

fgms.conf这个我还域名深入去研究过它的参数,参数说明http://fgms.freeflightsim.org/fgms_conf.html。

源码简要分析

全部联机玩家的列表:m_PlayerList

//发送数据
int netSocket::sendto ( const void * buffer, int size,
                        int flags, const netAddress* to )
//接收数据
int netSocket::recvfrom ( void * buffer, int size,
                          int flags, netAddress* from )

写在后面

本来是想研究网络游戏的位置同步,不停的查找开源的项目,想起flightgear的项目,发现支持cmake生成。笔者只是初略的看源码,没深入,希望能给flighgear的研究的抛砖引玉,这里没写出联机设置,手册已经有了没必要在这里重复。

联机设置:http://wiki.flightgear.org/Howto:Multiplayer

更多的参考资料:http://fgms.freeflightsim.org/。

FlightGear 3.2.0工程生成及调试

概述

使用vs2010 编译flightgear3.2,及调试

工具/原料:

vs2010 cmake flightgear3.2 simgear3.2 osg3.2.0 boost 3rdParty

下载

百度云下载地址:

http://pan.baidu.com/s/1dDw6i69

ftp://ftp.de.flightgear.org/pub/fgfs/Shared/(data3.2下面提到)

解压到D盘根目录

flightgear工程生成编译并调试

  • cmake打开D:FlightGear3.2flightgearCMakeLists.txt生成工程,然后点击Generate  参考图1
  • 打开D:FlightGear3.2bulid-fgFlightGear.sln
  • vs2010设置fgfs为启动项目
  • 设置fgfs输出路径D:FlightGear3.2bin 参考图2
  • 命令参数–fg-root=”D:FlightGear3.2data3.2″ –log-level=bulk参考图3

图1

图2

图3

遗留问题

一直在载入场景无法正常进入飞机界面,无法解决 这里有讨论:

http://forum.flightgear.org/viewtopic.php?f=17&t=24368

Release的版本有问题的,因为提供的osg Release的库没有链接入freetype

总结

调试还可以加的命令参数

–disable-random-objects   –disable-ai-models   –disable-ai-traffic   –disable-real-weather-fetch   –disable-terrasync

参考资料

http://flightgear.simpits.org:8080/view/Win/ 这里是官方的编译的