FAQ

From KlayGE
Revision as of 20:11, 29 March 2011 by Gongminmin (Talk | contribs)

Jump to: navigation, search

Q: What is KlayGE?

A: KlayGE is an open source, cross-platform game engine. It’s written in C++, and use Python as scripting language. KlayGE is released under GPL license.

Q: You are the only developer of KlayGE?

A: Yes. Almost all of the development is completed by myself. However, during this process, some 3rd-party libraries are used, for example 7zip encoding/decoding. Many friends also provide their indispensable advices in the development.

Q: Where can I find KlayGE’s documents?

A: The only documents are files in the Documentation page. The main reason of lacking documentation is I do not have enough time to write them down. Also, I hope the code can achieve self-explanatory.

Q: Why GPL?

A: Before 2.7, KlayGE is released under LGPL. But, in order to prevent KlayGE from annexation by some proprietary projects, it’s replaced by GPL since 2.7.

Q: Why not using LUA instead of Python?

A: Before 2.0 (named Clay! Engine at that time), LUA is the primary scripting language. The advantage of LUA is fast. However, calling it in C++ is extremely complex. And LUA’s ability is weaker than Python. Although Python is not as fast as LUA, it’s a much more powerful language, and easier for calling. In KlayGE, runtime efficiency of scripting is not a concern, so Python is more desirable.

Q: Why requires Shader Model 2.0 and above?

A: KlayGE is a high-end game engine, so it requires to be run on some powerful machine to meet the need of advanced techniques. On the other hand, Shader Model 2.0 is not a very high demand. Nearly all graphics cards now support Shader Model 3.0. For a game developer, using a card that doesn’t support Shader Model 2.0 is behind the times too much.

Q: How’s the network system in KlayGE?

A: The network part is a weak point of KlayGE, or even impossible be used. Therefore it needs to be developed, or using 3rd-party network library.

Q: When compiling samples, there are some link errors such as: “libcmtd.lib(dbgheap.obj) : error LNK2005: __CrtSetDbgFlag already defined in MSVCRTD.lib(MSVCR80D.dll)”. How to solve this problem?

A: KlayGE in VC is compiled with multi-threaded DLL runtime library. So it requires ALL lib that link to an exe uses multi-threaded DLL (Project- >Properties->Configuration Properties->C/C++->Code Generation->Runtime Library, choose Multi-threaded Debug DLL/Multi-threaded DLL).

Q: What’s the parameters when compiling Boost?

A: Boost 1.36+’s parameters are set though bjam’s command line. They can be written in a batch:

   SET BZIP2_SOURCE="D:/bzip2-1.0.5"
   SET ZLIB_SOURCE="D:/zlib-1.2.3"
   SET ICU_PATH="D:/icu4c-3_6"
   bjam --toolset=msvc-9.0 --stagedir=./lib_vc9_x86 --builddir=./ address-model=32 link=shared runtime-link=shared threading=multi cxxflags=-wd4819 cxxflags=-wd4910 define=_CRT_SECURE_NO_DEPRECATE define=_SCL_SECURE_NO_DEPRECATE define=_SECURE_SCL=0 stage debug release
   bjam --toolset=msvc-9.0 --stagedir=./lib_vc9_x64 --builddir=./ address-model=64 link=shared runtime-link=shared threading=multi cxxflags=-wd4819 cxxflags=-wd4910 define=_CRT_SECURE_NO_DEPRECATE define=_SCL_SECURE_NO_DEPRECATE define=_SECURE_SCL=0 stage debug release

Run this batch under boost’s directory compiles boost into the dll form.

Q: Why running any sample inside Visual Studio cause assert failed in ResLoader::Load?

A: Project’s working directory should be set to $(OutDir). This problem no longer exists since KlayGE 3.10.

Q: How to solve compling error “‘yasm’ is not recognized as an internal or external command, operable program or batch file.”?

A: According to the project settings, Visual Studio must call yasm to compile .asm files. One solution is that rename the downloaded yasm-X.X.X-winYY.exe (X is the version, YY is 32 or 64) to yasm.exe. Then copy it to VC’s bin folder, for example, C:\Program Files\Microsoft Visual Studio 9.0\VC\bin. This problem will be by-passed in KlayGE 3.11.