Difference between revisions of "FAQ"
Gongminmin (Talk | contribs) m (2个修订) |
Gongminmin (Talk | contribs) |
(No difference)
|
Revision as of 23:40, 28 March 2011
Contents
- 1 Q: What is KlayGE?
- 2 Q: You are the only developer of KlayGE?
- 3 Q: Where can I find KlayGE’s documents?
- 4 Q: Why GPL?
- 5 Q: Why not using LUA instead of Python?
- 6 Q: Why requires Shader Model 2.0 and above?
- 7 Q: How’s the network system in KlayGE?
- 8 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?
- 9 Q: What’s the parameters when compiling Boost?
- 10 Q: Why running any sample inside Visual Studio cause assert failed in ResLoader::Load?
- 11 Q: How to solve compling error “‘yasm’ is not recognized as an internal or external command, operable program or batch file.”?
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.