<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.openuru.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Marten</id>
	<title>OpenUru - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.openuru.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Marten"/>
	<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php/Special:Contributions/Marten"/>
	<updated>2026-10-23T11:12:53Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3182</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3182"/>
		<updated>2020-09-15T05:51:57Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* Required source changes for Visual Studio 2010 Express */ - fix incorrect directory name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
* If you have a version of Visual Studio later than 2010 installed, you may need to uninstall it.&lt;br /&gt;
* If you have Microsoft Visual C++ 2010 Redistributable installed (x86 and/or x64), [https://support.microsoft.com/en-us/help/2728613/s1023-error-when-you-install-the-directx-sdk-june-2010 you will need to uninstall it before installing DirectX SDK]. While installing Visual Studio, the Redistributable package(s) will be reinstalled for you automatically.&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
See [[Build the client with MSVC 2010 Express|Build preparation steps]] for installation instructions!&lt;br /&gt;
* [https://git-scm.com/download/win git] (recommended but not required)&lt;br /&gt;
* [https://foundry.openuru.org/gitblit/summary/?r=CWE-ou.git The CWE OpenUru source code] - this does not include the Python code, which can be found in the [https://foundry.openuru.org/gitblit/summary/?r=MOULSCRIPT-ou.git MOULSCRIPT repo]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - This will be in two downloads, you'll need to search for and download both &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
* [https://www.zlib.net/fossils/zlib-1.2.7.tar.gz zlib 1.2.7]&lt;br /&gt;
* [https://ftp-osl.osuosl.org/pub/libpng/src/archive/gz/libpng15/libpng-1.5.12.tar.gz libpng 1.5.12]&lt;br /&gt;
Newer versions of these libraries may work, but no guarantees are offered; these are what have been tested.  See the next section for restrictions on using newer versions.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
: &amp;lt;u&amp;gt;The status URL:&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&lt;br /&gt;
=== git (Optional) ===&lt;br /&gt;
If you plan to make changes to the source code and contribute to the community, install git (accepting the default options).&lt;br /&gt;
&lt;br /&gt;
=== CWE-ou ===&lt;br /&gt;
Obtain CWE-OU source by one of these methods:&lt;br /&gt;
* Use '''git clone''' with the repository link found on the webpage referenced above&lt;br /&gt;
* Click &amp;quot;tree&amp;quot; in the top menu of the webpage reference above, then click &amp;quot;zip&amp;quot; to download a ZIP archive&lt;br /&gt;
&lt;br /&gt;
=== DirectX ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX SDK before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Visual Studio 2010 Express ===&lt;br /&gt;
&lt;br /&gt;
* Install Visual Studio 2010 Express&lt;br /&gt;
* Install Service Pack 1 (SP1) for Visual Studio 2010, plus security updates (run Windows Update a few times)&lt;br /&gt;
* Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;. The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;. As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenAL SDK ===&lt;br /&gt;
Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PhysX SDK ===&lt;br /&gt;
Install PhysX SDK, and copy PhysX subdirectories as follows:&lt;br /&gt;
* Copy from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&lt;br /&gt;
* Copy from and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== libogg and libvorbis ===&lt;br /&gt;
&lt;br /&gt;
Build Ogg and Vorbis&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.props file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE and perform the following steps:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, click on configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the project (e.g. &amp;quot;libogg_static&amp;quot;) in the Solution Explorer at upper left, and select Properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop down at the upper left of the panel and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, verify the configuration drop down is still set to &amp;quot;Release&amp;quot;. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE, and repeat the preceding steps for projects libvorbis_static and libvorbisfile.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy Ogg and Vorbis files to CWE&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the ogg and vorbis include directories into &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Speex ===&lt;br /&gt;
&lt;br /&gt;
Rebuild the Speex 1.0.1 included in the CWE tree.&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenSSL ===&lt;br /&gt;
&amp;lt;p&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain [https://wiki.openssl.org/index.php/Binaries precompiled binaries] (32-bit, not 64-bit).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As this is security software, it is best (in my opinion) to compile it yourself from source. You can choose either static or dynamic linking. '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Copy the installed OpenSSL files to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JPEG ===&lt;br /&gt;
Build in-tree JPEG library&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio Command Prompt (2010)&amp;quot; and change to the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== zlib and libpng ===&lt;br /&gt;
Build zlib and libpng&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit the ''png/projects/vstudio/zlib.props'' file. Towards the bottom is a path for ZLibSrcDir. Change the value to &amp;quot;..\..\..\..\zlib&amp;quot; (no -1.2.5 or such on the end) and save the file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, click on the configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release Library&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer and select &amp;quot;Add &amp;gt; Existing item&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzclose.c, gzlib.c, gzread.c, and gzwrite.c files (hold Ctrl while clicking to select multiple files).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Add&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project in the solution explorer and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Preprocessor&lt;br /&gt;
|Preprocessor Definitions&lt;br /&gt;
|''Remove '''Z_SOLO''' if present, leave everything else alone''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the following steps for each of these projects:  &amp;quot;libpng&amp;quot;, &amp;quot;pngtest&amp;quot;, &amp;quot;pngvalid&amp;quot;, and &amp;quot;zlib&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; General&lt;br /&gt;
|Project Defaults &amp;gt; Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on the configuration drop down at the upper left of the panel and select &amp;quot;Debug Library&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set (or verify) the following items as follows, noting that the 4th item is not the same as in the previous list.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; General&lt;br /&gt;
|Project Defaults &amp;gt; Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; General&lt;br /&gt;
|Treat Warnings As Errors&lt;br /&gt;
|No (/WX-)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and &amp;quot;OK&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;(Remember you need to follow these steps four times, once each for libpng, pngtest, pngvalid, AND zlib!)&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “Debug Library” from the ''Solution Configurations'' drop down in the IDE toolbar, then right click the top line in the Solution Explorer (Solution 'vstudio') and choose ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “Release Library” configuration, and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png'' folder, create a ''lib'' folder. Then:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Debug Library/libpng15.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib'' and rename it ''libpngd.lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/libpng15.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib'' and rename it ''libpng.lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib'' folder, create a ''lib'' folder. Then:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Debug Library/zlib.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib'' and rename it ''zlibd.lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
&amp;lt;p&amp;gt;Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;/p&amp;gt;&lt;br /&gt;
* Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
* Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;/p&amp;gt;&lt;br /&gt;
* Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;/p&amp;gt;&lt;br /&gt;
* Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&lt;br /&gt;
* Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3178</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3178"/>
		<updated>2020-08-29T18:49:45Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* Items needed to compile */ add link to MOULSCRIPT repo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
* If you have a version of Visual Studio later than 2010 installed, you may need to uninstall it.&lt;br /&gt;
* If you have Microsoft Visual C++ 2010 Redistributable installed (x86 and/or x64), [https://support.microsoft.com/en-us/help/2728613/s1023-error-when-you-install-the-directx-sdk-june-2010 you will need to uninstall it before installing DirectX SDK]. While installing Visual Studio, the Redistributable package(s) will be reinstalled for you automatically.&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
See [[Build the client with MSVC 2010 Express|Build preparation steps]] for installation instructions!&lt;br /&gt;
* [https://git-scm.com/download/win git] (recommended but not required)&lt;br /&gt;
* [https://foundry.openuru.org/gitblit/summary/?r=CWE-ou.git The CWE OpenUru source code] - this does not include the Python code, which can be found in the [https://foundry.openuru.org/gitblit/summary/?r=MOULSCRIPT-ou.git MOULSCRIPT repo]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - This will be in two downloads, you'll need to search for and download both &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
* [https://www.zlib.net/fossils/zlib-1.2.7.tar.gz zlib 1.2.7]&lt;br /&gt;
* [https://ftp-osl.osuosl.org/pub/libpng/src/archive/gz/libpng15/libpng-1.5.12.tar.gz libpng 1.5.12]&lt;br /&gt;
Newer versions of these libraries may work, but no guarantees are offered; these are what have been tested.  See the next section for restrictions on using newer versions.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
: &amp;lt;u&amp;gt;The status URL:&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&lt;br /&gt;
=== git (Optional) ===&lt;br /&gt;
If you plan to make changes to the source code and contribute to the community, install git (accepting the default options).&lt;br /&gt;
&lt;br /&gt;
=== CWE-ou ===&lt;br /&gt;
Obtain CWE-OU source by one of these methods:&lt;br /&gt;
* Use '''git clone''' with the repository link found on the webpage referenced above&lt;br /&gt;
* Click &amp;quot;tree&amp;quot; in the top menu of the webpage reference above, then click &amp;quot;zip&amp;quot; to download a ZIP archive&lt;br /&gt;
&lt;br /&gt;
=== DirectX ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX SDK before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Visual Studio 2010 Express ===&lt;br /&gt;
&lt;br /&gt;
* Install Visual Studio 2010 Express&lt;br /&gt;
* Install Service Pack 1 (SP1) for Visual Studio 2010, plus security updates (run Windows Update a few times)&lt;br /&gt;
* Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;. The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;. As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenAL SDK ===&lt;br /&gt;
Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PhysX SDK ===&lt;br /&gt;
Install PhysX SDK, and copy PhysX subdirectories as follows:&lt;br /&gt;
* Copy from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&lt;br /&gt;
* Copy from and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== libogg and libvorbis ===&lt;br /&gt;
&lt;br /&gt;
Build Ogg and Vorbis&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.props file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE and perform the following steps:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, click on configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the project (e.g. &amp;quot;libogg_static&amp;quot;) in the Solution Explorer at upper left, and select Properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop down at the upper left of the panel and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, verify the configuration drop down is still set to &amp;quot;Release&amp;quot;. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE, and repeat the preceding steps for projects libvorbis_static and libvorbisfile.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy Ogg and Vorbis files to CWE&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the ogg and vorbis include directories into &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Speex ===&lt;br /&gt;
&lt;br /&gt;
Rebuild the Speex 1.0.1 included in the CWE tree.&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenSSL ===&lt;br /&gt;
&amp;lt;p&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain [https://wiki.openssl.org/index.php/Binaries precompiled binaries] (32-bit, not 64-bit).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As this is security software, it is best (in my opinion) to compile it yourself from source. You can choose either static or dynamic linking. '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Copy the installed OpenSSL files to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JPEG ===&lt;br /&gt;
Build in-tree JPEG library&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio Command Prompt (2010)&amp;quot; and change to the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== zlib and libpng ===&lt;br /&gt;
Build zlib and libpng&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit the ''png/projects/vstudio/zlib.props'' file. Towards the bottom is a path for ZLibSrcDir. Change the value to &amp;quot;..\..\..\..\zlib&amp;quot; (no -1.2.5 or such on the end) and save the file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, click on the configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release Library&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer and select &amp;quot;Add &amp;gt; Existing item&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzclose.c, gzlib.c, gzread.c, and gzwrite.c files (hold Ctrl while clicking to select multiple files).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Add&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project in the solution explorer and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Preprocessor&lt;br /&gt;
|Preprocessor Definitions&lt;br /&gt;
|''Remove '''Z_SOLO''' if present, leave everything else alone''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the following steps for each of these projects:  &amp;quot;libpng&amp;quot;, &amp;quot;pngtest&amp;quot;, &amp;quot;pngvalid&amp;quot;, and &amp;quot;zlib&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; General&lt;br /&gt;
|Project Defaults &amp;gt; Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on the configuration drop down at the upper left of the panel and select &amp;quot;Debug Library&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set (or verify) the following items as follows, noting that the 4th item is not the same as in the previous list.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; General&lt;br /&gt;
|Project Defaults &amp;gt; Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; General&lt;br /&gt;
|Treat Warnings As Errors&lt;br /&gt;
|No (/WX-)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and &amp;quot;OK&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;(Remember you need to follow these steps four times, once each for libpng, pngtest, pngvalid, AND zlib!)&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “Debug Library” from the ''Solution Configurations'' drop down in the IDE toolbar, then right click the top line in the Solution Explorer (Solution 'vstudio') and choose ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “Release Library” configuration, and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png'' folder, create a ''lib'' folder. Then:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Debug Library/libpng15.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib'' and rename it ''libpngd.lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/libpng15.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib'' and rename it ''libpng.lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib'' folder, create a ''lib'' folder. Then:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Debug Library/zlib.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib'' and rename it ''zlibd.lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
&amp;lt;p&amp;gt;Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;/p&amp;gt;&lt;br /&gt;
* Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
* Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;/p&amp;gt;&lt;br /&gt;
* Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;/p&amp;gt;&lt;br /&gt;
* Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&lt;br /&gt;
* Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3177</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3177"/>
		<updated>2020-08-29T04:41:54Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* OpenAL SDK */  remove unnecessary bullet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
* If you have a version of Visual Studio later than 2010 installed, you may need to uninstall it.&lt;br /&gt;
* If you have Microsoft Visual C++ 2010 Redistributable installed (x86 and/or x64), [https://support.microsoft.com/en-us/help/2728613/s1023-error-when-you-install-the-directx-sdk-june-2010 you will need to uninstall it before installing DirectX SDK]. While installing Visual Studio, the Redistributable package(s) will be reinstalled for you automatically.&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
See [[Build the client with MSVC 2010 Express|Build preparation steps]] for installation instructions!&lt;br /&gt;
* [https://git-scm.com/download/win git] (recommended but not required)&lt;br /&gt;
* [https://foundry.openuru.org/gitblit/summary/?r=CWE-ou.git The CWE OpenUru source code]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - This will be in two downloads, you'll need to search for and download both &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
* [https://www.zlib.net/fossils/zlib-1.2.7.tar.gz zlib 1.2.7]&lt;br /&gt;
* [https://ftp-osl.osuosl.org/pub/libpng/src/archive/gz/libpng15/libpng-1.5.12.tar.gz libpng 1.5.12]&lt;br /&gt;
Newer versions of these libraries may work, but no guarantees are offered; these are what have been tested.  See the next section for restrictions on using newer versions.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
: &amp;lt;u&amp;gt;The status URL:&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&lt;br /&gt;
=== git (Optional) ===&lt;br /&gt;
If you plan to make changes to the source code and contribute to the community, install git (accepting the default options).&lt;br /&gt;
&lt;br /&gt;
=== CWE-ou ===&lt;br /&gt;
Obtain CWE-OU source by one of these methods:&lt;br /&gt;
* Use '''git clone''' with the repository link found on the webpage referenced above&lt;br /&gt;
* Click &amp;quot;tree&amp;quot; in the top menu of the webpage reference above, then click &amp;quot;zip&amp;quot; to download a ZIP archive&lt;br /&gt;
&lt;br /&gt;
=== DirectX ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX SDK before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Visual Studio 2010 Express ===&lt;br /&gt;
&lt;br /&gt;
* Install Visual Studio 2010 Express&lt;br /&gt;
* Install Service Pack 1 (SP1) for Visual Studio 2010, plus security updates (run Windows Update a few times)&lt;br /&gt;
* Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;. The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;. As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenAL SDK ===&lt;br /&gt;
Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PhysX SDK ===&lt;br /&gt;
Install PhysX SDK, and copy PhysX subdirectories as follows:&lt;br /&gt;
* Copy from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&lt;br /&gt;
* Copy from and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== libogg and libvorbis ===&lt;br /&gt;
&lt;br /&gt;
Build Ogg and Vorbis&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.props file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE and perform the following steps:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, click on configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the project (e.g. &amp;quot;libogg_static&amp;quot;) in the Solution Explorer at upper left, and select Properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop down at the upper left of the panel and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, verify the configuration drop down is still set to &amp;quot;Release&amp;quot;. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE, and repeat the preceding steps for projects libvorbis_static and libvorbisfile.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy Ogg and Vorbis files to CWE&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the ogg and vorbis include directories into &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Speex ===&lt;br /&gt;
&lt;br /&gt;
Rebuild the Speex 1.0.1 included in the CWE tree.&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenSSL ===&lt;br /&gt;
&amp;lt;p&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain [https://wiki.openssl.org/index.php/Binaries precompiled binaries] (32-bit, not 64-bit).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As this is security software, it is best (in my opinion) to compile it yourself from source. You can choose either static or dynamic linking. '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Copy the installed OpenSSL files to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JPEG ===&lt;br /&gt;
Build in-tree JPEG library&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio Command Prompt (2010)&amp;quot; and change to the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== zlib and libpng ===&lt;br /&gt;
Build zlib and libpng&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit the ''png/projects/vstudio/zlib.props'' file. Towards the bottom is a path for ZLibSrcDir. Change the value to &amp;quot;..\..\..\..\zlib&amp;quot; (no -1.2.5 or such on the end) and save the file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, click on the configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release Library&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer and select &amp;quot;Add &amp;gt; Existing item&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzclose.c, gzlib.c, gzread.c, and gzwrite.c files (hold Ctrl while clicking to select multiple files).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Add&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project in the solution explorer and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Preprocessor&lt;br /&gt;
|Preprocessor Definitions&lt;br /&gt;
|''Remove '''Z_SOLO''' if present, leave everything else alone''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the following steps for each of these projects:  &amp;quot;libpng&amp;quot;, &amp;quot;pngtest&amp;quot;, &amp;quot;pngvalid&amp;quot;, and &amp;quot;zlib&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; General&lt;br /&gt;
|Project Defaults &amp;gt; Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on the configuration drop down at the upper left of the panel and select &amp;quot;Debug Library&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set (or verify) the following items as follows, noting that the 4th item is not the same as in the previous list.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; General&lt;br /&gt;
|Project Defaults &amp;gt; Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; General&lt;br /&gt;
|Treat Warnings As Errors&lt;br /&gt;
|No (/WX-)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and &amp;quot;OK&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;(Remember you need to follow these steps four times, once each for libpng, pngtest, pngvalid, AND zlib!)&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “Debug Library” from the ''Solution Configurations'' drop down in the IDE toolbar, then right click the top line in the Solution Explorer (Solution 'vstudio') and choose ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “Release Library” configuration, and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png'' folder, create a ''lib'' folder. Then:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Debug Library/libpng15.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib'' and rename it ''libpngd.lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/libpng15.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib'' and rename it ''libpng.lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib'' folder, create a ''lib'' folder. Then:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Debug Library/zlib.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib'' and rename it ''zlibd.lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
&amp;lt;p&amp;gt;Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;/p&amp;gt;&lt;br /&gt;
* Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
* Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;/p&amp;gt;&lt;br /&gt;
* Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;/p&amp;gt;&lt;br /&gt;
* Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&lt;br /&gt;
* Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3176</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3176"/>
		<updated>2020-08-29T04:41:23Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* PhysX SDK */ remove unnecessary level of indentation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
* If you have a version of Visual Studio later than 2010 installed, you may need to uninstall it.&lt;br /&gt;
* If you have Microsoft Visual C++ 2010 Redistributable installed (x86 and/or x64), [https://support.microsoft.com/en-us/help/2728613/s1023-error-when-you-install-the-directx-sdk-june-2010 you will need to uninstall it before installing DirectX SDK]. While installing Visual Studio, the Redistributable package(s) will be reinstalled for you automatically.&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
See [[Build the client with MSVC 2010 Express|Build preparation steps]] for installation instructions!&lt;br /&gt;
* [https://git-scm.com/download/win git] (recommended but not required)&lt;br /&gt;
* [https://foundry.openuru.org/gitblit/summary/?r=CWE-ou.git The CWE OpenUru source code]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - This will be in two downloads, you'll need to search for and download both &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
* [https://www.zlib.net/fossils/zlib-1.2.7.tar.gz zlib 1.2.7]&lt;br /&gt;
* [https://ftp-osl.osuosl.org/pub/libpng/src/archive/gz/libpng15/libpng-1.5.12.tar.gz libpng 1.5.12]&lt;br /&gt;
Newer versions of these libraries may work, but no guarantees are offered; these are what have been tested.  See the next section for restrictions on using newer versions.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
: &amp;lt;u&amp;gt;The status URL:&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&lt;br /&gt;
=== git (Optional) ===&lt;br /&gt;
If you plan to make changes to the source code and contribute to the community, install git (accepting the default options).&lt;br /&gt;
&lt;br /&gt;
=== CWE-ou ===&lt;br /&gt;
Obtain CWE-OU source by one of these methods:&lt;br /&gt;
* Use '''git clone''' with the repository link found on the webpage referenced above&lt;br /&gt;
* Click &amp;quot;tree&amp;quot; in the top menu of the webpage reference above, then click &amp;quot;zip&amp;quot; to download a ZIP archive&lt;br /&gt;
&lt;br /&gt;
=== DirectX ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX SDK before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Visual Studio 2010 Express ===&lt;br /&gt;
&lt;br /&gt;
* Install Visual Studio 2010 Express&lt;br /&gt;
* Install Service Pack 1 (SP1) for Visual Studio 2010, plus security updates (run Windows Update a few times)&lt;br /&gt;
* Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;. The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;. As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenAL SDK ===&lt;br /&gt;
* Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PhysX SDK ===&lt;br /&gt;
Install PhysX SDK, and copy PhysX subdirectories as follows:&lt;br /&gt;
* Copy from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&lt;br /&gt;
* Copy from and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== libogg and libvorbis ===&lt;br /&gt;
&lt;br /&gt;
Build Ogg and Vorbis&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.props file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE and perform the following steps:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, click on configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the project (e.g. &amp;quot;libogg_static&amp;quot;) in the Solution Explorer at upper left, and select Properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop down at the upper left of the panel and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, verify the configuration drop down is still set to &amp;quot;Release&amp;quot;. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE, and repeat the preceding steps for projects libvorbis_static and libvorbisfile.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy Ogg and Vorbis files to CWE&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the ogg and vorbis include directories into &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Speex ===&lt;br /&gt;
&lt;br /&gt;
Rebuild the Speex 1.0.1 included in the CWE tree.&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenSSL ===&lt;br /&gt;
&amp;lt;p&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain [https://wiki.openssl.org/index.php/Binaries precompiled binaries] (32-bit, not 64-bit).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As this is security software, it is best (in my opinion) to compile it yourself from source. You can choose either static or dynamic linking. '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Copy the installed OpenSSL files to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JPEG ===&lt;br /&gt;
Build in-tree JPEG library&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio Command Prompt (2010)&amp;quot; and change to the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== zlib and libpng ===&lt;br /&gt;
Build zlib and libpng&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit the ''png/projects/vstudio/zlib.props'' file. Towards the bottom is a path for ZLibSrcDir. Change the value to &amp;quot;..\..\..\..\zlib&amp;quot; (no -1.2.5 or such on the end) and save the file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, click on the configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release Library&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer and select &amp;quot;Add &amp;gt; Existing item&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzclose.c, gzlib.c, gzread.c, and gzwrite.c files (hold Ctrl while clicking to select multiple files).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Add&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project in the solution explorer and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Preprocessor&lt;br /&gt;
|Preprocessor Definitions&lt;br /&gt;
|''Remove '''Z_SOLO''' if present, leave everything else alone''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the following steps for each of these projects:  &amp;quot;libpng&amp;quot;, &amp;quot;pngtest&amp;quot;, &amp;quot;pngvalid&amp;quot;, and &amp;quot;zlib&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; General&lt;br /&gt;
|Project Defaults &amp;gt; Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on the configuration drop down at the upper left of the panel and select &amp;quot;Debug Library&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set (or verify) the following items as follows, noting that the 4th item is not the same as in the previous list.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; General&lt;br /&gt;
|Project Defaults &amp;gt; Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; General&lt;br /&gt;
|Treat Warnings As Errors&lt;br /&gt;
|No (/WX-)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and &amp;quot;OK&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;(Remember you need to follow these steps four times, once each for libpng, pngtest, pngvalid, AND zlib!)&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “Debug Library” from the ''Solution Configurations'' drop down in the IDE toolbar, then right click the top line in the Solution Explorer (Solution 'vstudio') and choose ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “Release Library” configuration, and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png'' folder, create a ''lib'' folder. Then:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Debug Library/libpng15.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib'' and rename it ''libpngd.lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/libpng15.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib'' and rename it ''libpng.lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib'' folder, create a ''lib'' folder. Then:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Debug Library/zlib.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib'' and rename it ''zlibd.lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
&amp;lt;p&amp;gt;Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;/p&amp;gt;&lt;br /&gt;
* Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
* Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;/p&amp;gt;&lt;br /&gt;
* Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;/p&amp;gt;&lt;br /&gt;
* Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&lt;br /&gt;
* Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3175</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3175"/>
		<updated>2020-08-29T04:40:19Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* Required source code changes for newer version of DirectX SDK */ make easier to read&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
* If you have a version of Visual Studio later than 2010 installed, you may need to uninstall it.&lt;br /&gt;
* If you have Microsoft Visual C++ 2010 Redistributable installed (x86 and/or x64), [https://support.microsoft.com/en-us/help/2728613/s1023-error-when-you-install-the-directx-sdk-june-2010 you will need to uninstall it before installing DirectX SDK]. While installing Visual Studio, the Redistributable package(s) will be reinstalled for you automatically.&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
See [[Build the client with MSVC 2010 Express|Build preparation steps]] for installation instructions!&lt;br /&gt;
* [https://git-scm.com/download/win git] (recommended but not required)&lt;br /&gt;
* [https://foundry.openuru.org/gitblit/summary/?r=CWE-ou.git The CWE OpenUru source code]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - This will be in two downloads, you'll need to search for and download both &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
* [https://www.zlib.net/fossils/zlib-1.2.7.tar.gz zlib 1.2.7]&lt;br /&gt;
* [https://ftp-osl.osuosl.org/pub/libpng/src/archive/gz/libpng15/libpng-1.5.12.tar.gz libpng 1.5.12]&lt;br /&gt;
Newer versions of these libraries may work, but no guarantees are offered; these are what have been tested.  See the next section for restrictions on using newer versions.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
: &amp;lt;u&amp;gt;The status URL:&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&lt;br /&gt;
=== git (Optional) ===&lt;br /&gt;
If you plan to make changes to the source code and contribute to the community, install git (accepting the default options).&lt;br /&gt;
&lt;br /&gt;
=== CWE-ou ===&lt;br /&gt;
Obtain CWE-OU source by one of these methods:&lt;br /&gt;
* Use '''git clone''' with the repository link found on the webpage referenced above&lt;br /&gt;
* Click &amp;quot;tree&amp;quot; in the top menu of the webpage reference above, then click &amp;quot;zip&amp;quot; to download a ZIP archive&lt;br /&gt;
&lt;br /&gt;
=== DirectX ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX SDK before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Visual Studio 2010 Express ===&lt;br /&gt;
&lt;br /&gt;
* Install Visual Studio 2010 Express&lt;br /&gt;
* Install Service Pack 1 (SP1) for Visual Studio 2010, plus security updates (run Windows Update a few times)&lt;br /&gt;
* Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;. The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;. As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenAL SDK ===&lt;br /&gt;
* Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PhysX SDK ===&lt;br /&gt;
* Install PhysX SDK, and copy PhysX subdirectories as follows:&lt;br /&gt;
** Copy from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&lt;br /&gt;
** Copy from and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== libogg and libvorbis ===&lt;br /&gt;
&lt;br /&gt;
Build Ogg and Vorbis&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.props file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE and perform the following steps:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, click on configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the project (e.g. &amp;quot;libogg_static&amp;quot;) in the Solution Explorer at upper left, and select Properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop down at the upper left of the panel and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, verify the configuration drop down is still set to &amp;quot;Release&amp;quot;. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE, and repeat the preceding steps for projects libvorbis_static and libvorbisfile.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy Ogg and Vorbis files to CWE&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the ogg and vorbis include directories into &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Speex ===&lt;br /&gt;
&lt;br /&gt;
Rebuild the Speex 1.0.1 included in the CWE tree.&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenSSL ===&lt;br /&gt;
&amp;lt;p&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain [https://wiki.openssl.org/index.php/Binaries precompiled binaries] (32-bit, not 64-bit).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As this is security software, it is best (in my opinion) to compile it yourself from source. You can choose either static or dynamic linking. '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Copy the installed OpenSSL files to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JPEG ===&lt;br /&gt;
Build in-tree JPEG library&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio Command Prompt (2010)&amp;quot; and change to the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== zlib and libpng ===&lt;br /&gt;
Build zlib and libpng&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit the ''png/projects/vstudio/zlib.props'' file. Towards the bottom is a path for ZLibSrcDir. Change the value to &amp;quot;..\..\..\..\zlib&amp;quot; (no -1.2.5 or such on the end) and save the file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, click on the configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release Library&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer and select &amp;quot;Add &amp;gt; Existing item&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzclose.c, gzlib.c, gzread.c, and gzwrite.c files (hold Ctrl while clicking to select multiple files).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Add&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project in the solution explorer and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Preprocessor&lt;br /&gt;
|Preprocessor Definitions&lt;br /&gt;
|''Remove '''Z_SOLO''' if present, leave everything else alone''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the following steps for each of these projects:  &amp;quot;libpng&amp;quot;, &amp;quot;pngtest&amp;quot;, &amp;quot;pngvalid&amp;quot;, and &amp;quot;zlib&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; General&lt;br /&gt;
|Project Defaults &amp;gt; Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on the configuration drop down at the upper left of the panel and select &amp;quot;Debug Library&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set (or verify) the following items as follows, noting that the 4th item is not the same as in the previous list.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; General&lt;br /&gt;
|Project Defaults &amp;gt; Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; General&lt;br /&gt;
|Treat Warnings As Errors&lt;br /&gt;
|No (/WX-)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and &amp;quot;OK&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;(Remember you need to follow these steps four times, once each for libpng, pngtest, pngvalid, AND zlib!)&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “Debug Library” from the ''Solution Configurations'' drop down in the IDE toolbar, then right click the top line in the Solution Explorer (Solution 'vstudio') and choose ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “Release Library” configuration, and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png'' folder, create a ''lib'' folder. Then:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Debug Library/libpng15.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib'' and rename it ''libpngd.lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/libpng15.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib'' and rename it ''libpng.lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib'' folder, create a ''lib'' folder. Then:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Debug Library/zlib.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib'' and rename it ''zlibd.lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
&amp;lt;p&amp;gt;Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;/p&amp;gt;&lt;br /&gt;
* Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
* Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;/p&amp;gt;&lt;br /&gt;
* Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;/p&amp;gt;&lt;br /&gt;
* Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&lt;br /&gt;
* Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3174</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3174"/>
		<updated>2020-08-29T04:38:13Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* zlib and libpng */ tidy up and correct the ending copy instructions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
* If you have a version of Visual Studio later than 2010 installed, you may need to uninstall it.&lt;br /&gt;
* If you have Microsoft Visual C++ 2010 Redistributable installed (x86 and/or x64), [https://support.microsoft.com/en-us/help/2728613/s1023-error-when-you-install-the-directx-sdk-june-2010 you will need to uninstall it before installing DirectX SDK]. While installing Visual Studio, the Redistributable package(s) will be reinstalled for you automatically.&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
See [[Build the client with MSVC 2010 Express|Build preparation steps]] for installation instructions!&lt;br /&gt;
* [https://git-scm.com/download/win git] (recommended but not required)&lt;br /&gt;
* [https://foundry.openuru.org/gitblit/summary/?r=CWE-ou.git The CWE OpenUru source code]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - This will be in two downloads, you'll need to search for and download both &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
* [https://www.zlib.net/fossils/zlib-1.2.7.tar.gz zlib 1.2.7]&lt;br /&gt;
* [https://ftp-osl.osuosl.org/pub/libpng/src/archive/gz/libpng15/libpng-1.5.12.tar.gz libpng 1.5.12]&lt;br /&gt;
Newer versions of these libraries may work, but no guarantees are offered; these are what have been tested.  See the next section for restrictions on using newer versions.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
: &amp;lt;u&amp;gt;The status URL:&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&lt;br /&gt;
=== git (Optional) ===&lt;br /&gt;
If you plan to make changes to the source code and contribute to the community, install git (accepting the default options).&lt;br /&gt;
&lt;br /&gt;
=== CWE-ou ===&lt;br /&gt;
Obtain CWE-OU source by one of these methods:&lt;br /&gt;
* Use '''git clone''' with the repository link found on the webpage referenced above&lt;br /&gt;
* Click &amp;quot;tree&amp;quot; in the top menu of the webpage reference above, then click &amp;quot;zip&amp;quot; to download a ZIP archive&lt;br /&gt;
&lt;br /&gt;
=== DirectX ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX SDK before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Visual Studio 2010 Express ===&lt;br /&gt;
&lt;br /&gt;
* Install Visual Studio 2010 Express&lt;br /&gt;
* Install Service Pack 1 (SP1) for Visual Studio 2010, plus security updates (run Windows Update a few times)&lt;br /&gt;
* Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;. The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;. As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenAL SDK ===&lt;br /&gt;
* Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PhysX SDK ===&lt;br /&gt;
* Install PhysX SDK, and copy PhysX subdirectories as follows:&lt;br /&gt;
** Copy from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&lt;br /&gt;
** Copy from and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== libogg and libvorbis ===&lt;br /&gt;
&lt;br /&gt;
Build Ogg and Vorbis&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.props file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE and perform the following steps:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, click on configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the project (e.g. &amp;quot;libogg_static&amp;quot;) in the Solution Explorer at upper left, and select Properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop down at the upper left of the panel and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, verify the configuration drop down is still set to &amp;quot;Release&amp;quot;. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE, and repeat the preceding steps for projects libvorbis_static and libvorbisfile.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy Ogg and Vorbis files to CWE&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the ogg and vorbis include directories into &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Speex ===&lt;br /&gt;
&lt;br /&gt;
Rebuild the Speex 1.0.1 included in the CWE tree.&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenSSL ===&lt;br /&gt;
&amp;lt;p&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain [https://wiki.openssl.org/index.php/Binaries precompiled binaries] (32-bit, not 64-bit).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As this is security software, it is best (in my opinion) to compile it yourself from source. You can choose either static or dynamic linking. '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Copy the installed OpenSSL files to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JPEG ===&lt;br /&gt;
Build in-tree JPEG library&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio Command Prompt (2010)&amp;quot; and change to the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== zlib and libpng ===&lt;br /&gt;
Build zlib and libpng&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit the ''png/projects/vstudio/zlib.props'' file. Towards the bottom is a path for ZLibSrcDir. Change the value to &amp;quot;..\..\..\..\zlib&amp;quot; (no -1.2.5 or such on the end) and save the file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, click on the configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release Library&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer and select &amp;quot;Add &amp;gt; Existing item&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzclose.c, gzlib.c, gzread.c, and gzwrite.c files (hold Ctrl while clicking to select multiple files).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Add&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project in the solution explorer and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Preprocessor&lt;br /&gt;
|Preprocessor Definitions&lt;br /&gt;
|''Remove '''Z_SOLO''' if present, leave everything else alone''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the following steps for each of these projects:  &amp;quot;libpng&amp;quot;, &amp;quot;pngtest&amp;quot;, &amp;quot;pngvalid&amp;quot;, and &amp;quot;zlib&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; General&lt;br /&gt;
|Project Defaults &amp;gt; Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on the configuration drop down at the upper left of the panel and select &amp;quot;Debug Library&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set (or verify) the following items as follows, noting that the 4th item is not the same as in the previous list.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; General&lt;br /&gt;
|Project Defaults &amp;gt; Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; General&lt;br /&gt;
|Treat Warnings As Errors&lt;br /&gt;
|No (/WX-)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and &amp;quot;OK&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;(Remember you need to follow these steps four times, once each for libpng, pngtest, pngvalid, AND zlib!)&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “Debug Library” from the ''Solution Configurations'' drop down in the IDE toolbar, then right click the top line in the Solution Explorer (Solution 'vstudio') and choose ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “Release Library” configuration, and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png'' folder, create a ''lib'' folder. Then:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Debug Library/libpng15.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib'' and rename it ''libpngd.lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/libpng15.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib'' and rename it ''libpng.lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib'' folder, create a ''lib'' folder. Then:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Debug Library/zlib.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib'' and rename it ''zlibd.lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3173</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3173"/>
		<updated>2020-08-29T04:26:31Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* libogg and libvorbis */ cleanup unnecessary specificity&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
* If you have a version of Visual Studio later than 2010 installed, you may need to uninstall it.&lt;br /&gt;
* If you have Microsoft Visual C++ 2010 Redistributable installed (x86 and/or x64), [https://support.microsoft.com/en-us/help/2728613/s1023-error-when-you-install-the-directx-sdk-june-2010 you will need to uninstall it before installing DirectX SDK]. While installing Visual Studio, the Redistributable package(s) will be reinstalled for you automatically.&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
See [[Build the client with MSVC 2010 Express|Build preparation steps]] for installation instructions!&lt;br /&gt;
* [https://git-scm.com/download/win git] (recommended but not required)&lt;br /&gt;
* [https://foundry.openuru.org/gitblit/summary/?r=CWE-ou.git The CWE OpenUru source code]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - This will be in two downloads, you'll need to search for and download both &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
* [https://www.zlib.net/fossils/zlib-1.2.7.tar.gz zlib 1.2.7]&lt;br /&gt;
* [https://ftp-osl.osuosl.org/pub/libpng/src/archive/gz/libpng15/libpng-1.5.12.tar.gz libpng 1.5.12]&lt;br /&gt;
Newer versions of these libraries may work, but no guarantees are offered; these are what have been tested.  See the next section for restrictions on using newer versions.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
: &amp;lt;u&amp;gt;The status URL:&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&lt;br /&gt;
=== git (Optional) ===&lt;br /&gt;
If you plan to make changes to the source code and contribute to the community, install git (accepting the default options).&lt;br /&gt;
&lt;br /&gt;
=== CWE-ou ===&lt;br /&gt;
Obtain CWE-OU source by one of these methods:&lt;br /&gt;
* Use '''git clone''' with the repository link found on the webpage referenced above&lt;br /&gt;
* Click &amp;quot;tree&amp;quot; in the top menu of the webpage reference above, then click &amp;quot;zip&amp;quot; to download a ZIP archive&lt;br /&gt;
&lt;br /&gt;
=== DirectX ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX SDK before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Visual Studio 2010 Express ===&lt;br /&gt;
&lt;br /&gt;
* Install Visual Studio 2010 Express&lt;br /&gt;
* Install Service Pack 1 (SP1) for Visual Studio 2010, plus security updates (run Windows Update a few times)&lt;br /&gt;
* Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;. The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;. As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenAL SDK ===&lt;br /&gt;
* Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PhysX SDK ===&lt;br /&gt;
* Install PhysX SDK, and copy PhysX subdirectories as follows:&lt;br /&gt;
** Copy from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&lt;br /&gt;
** Copy from and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== libogg and libvorbis ===&lt;br /&gt;
&lt;br /&gt;
Build Ogg and Vorbis&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.props file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE and perform the following steps:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, click on configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the project (e.g. &amp;quot;libogg_static&amp;quot;) in the Solution Explorer at upper left, and select Properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop down at the upper left of the panel and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, verify the configuration drop down is still set to &amp;quot;Release&amp;quot;. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE, and repeat the preceding steps for projects libvorbis_static and libvorbisfile.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy Ogg and Vorbis files to CWE&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the ogg and vorbis include directories into &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Speex ===&lt;br /&gt;
&lt;br /&gt;
Rebuild the Speex 1.0.1 included in the CWE tree.&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenSSL ===&lt;br /&gt;
&amp;lt;p&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain [https://wiki.openssl.org/index.php/Binaries precompiled binaries] (32-bit, not 64-bit).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As this is security software, it is best (in my opinion) to compile it yourself from source. You can choose either static or dynamic linking. '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Copy the installed OpenSSL files to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JPEG ===&lt;br /&gt;
Build in-tree JPEG library&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio Command Prompt (2010)&amp;quot; and change to the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== zlib and libpng ===&lt;br /&gt;
Build zlib and libpng&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit the ''png/projects/vstudio/zlib.props'' file. Towards the bottom is a path for ZLibSrcDir. Change the value to &amp;quot;..\..\..\..\zlib&amp;quot; (no -1.2.5 or such on the end) and save the file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, click on the configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release Library&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer and select &amp;quot;Add &amp;gt; Existing item&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzclose.c, gzlib.c, gzread.c, and gzwrite.c files (hold Ctrl while clicking to select multiple files).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Add&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project in the solution explorer and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Preprocessor&lt;br /&gt;
|Preprocessor Definitions&lt;br /&gt;
|''Remove '''Z_SOLO''' if present, leave everything else alone''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the following steps for each of these projects:  &amp;quot;libpng&amp;quot;, &amp;quot;pngtest&amp;quot;, &amp;quot;pngvalid&amp;quot;, and &amp;quot;zlib&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; General&lt;br /&gt;
|Project Defaults &amp;gt; Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on the configuration drop down at the upper left of the panel and select &amp;quot;Debug Library&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set (or verify) the following items as follows, noting that the 4th item is not the same as in the previous list.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; General&lt;br /&gt;
|Project Defaults &amp;gt; Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; General&lt;br /&gt;
|Treat Warnings As Errors&lt;br /&gt;
|No (/WX-)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and &amp;quot;OK&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;(Remember you need to follow these steps four times, once each for libpng, pngtest, pngvalid, AND zlib!)&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “Debug Library” from the ''Solution Configurations'' drop down in the IDE toolbar, then right click the top line in the Solution Explorer (Solution 'vstudio') and choose ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “Release Library” configuration, and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/libpn16.lib'' to ''libpngd.lib'' and copy it to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Release Library/libpn16.lib'' to ''libpng.lib'' and copy it to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/zlib.lib'' to ''zlibd.lib'' and copy it to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3172</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3172"/>
		<updated>2020-08-29T04:25:39Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* libogg and libvorbis */ indent the set of steps that need to be repeated to make instructions easier to follow&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
* If you have a version of Visual Studio later than 2010 installed, you may need to uninstall it.&lt;br /&gt;
* If you have Microsoft Visual C++ 2010 Redistributable installed (x86 and/or x64), [https://support.microsoft.com/en-us/help/2728613/s1023-error-when-you-install-the-directx-sdk-june-2010 you will need to uninstall it before installing DirectX SDK]. While installing Visual Studio, the Redistributable package(s) will be reinstalled for you automatically.&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
See [[Build the client with MSVC 2010 Express|Build preparation steps]] for installation instructions!&lt;br /&gt;
* [https://git-scm.com/download/win git] (recommended but not required)&lt;br /&gt;
* [https://foundry.openuru.org/gitblit/summary/?r=CWE-ou.git The CWE OpenUru source code]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - This will be in two downloads, you'll need to search for and download both &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
* [https://www.zlib.net/fossils/zlib-1.2.7.tar.gz zlib 1.2.7]&lt;br /&gt;
* [https://ftp-osl.osuosl.org/pub/libpng/src/archive/gz/libpng15/libpng-1.5.12.tar.gz libpng 1.5.12]&lt;br /&gt;
Newer versions of these libraries may work, but no guarantees are offered; these are what have been tested.  See the next section for restrictions on using newer versions.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
: &amp;lt;u&amp;gt;The status URL:&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&lt;br /&gt;
=== git (Optional) ===&lt;br /&gt;
If you plan to make changes to the source code and contribute to the community, install git (accepting the default options).&lt;br /&gt;
&lt;br /&gt;
=== CWE-ou ===&lt;br /&gt;
Obtain CWE-OU source by one of these methods:&lt;br /&gt;
* Use '''git clone''' with the repository link found on the webpage referenced above&lt;br /&gt;
* Click &amp;quot;tree&amp;quot; in the top menu of the webpage reference above, then click &amp;quot;zip&amp;quot; to download a ZIP archive&lt;br /&gt;
&lt;br /&gt;
=== DirectX ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX SDK before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Visual Studio 2010 Express ===&lt;br /&gt;
&lt;br /&gt;
* Install Visual Studio 2010 Express&lt;br /&gt;
* Install Service Pack 1 (SP1) for Visual Studio 2010, plus security updates (run Windows Update a few times)&lt;br /&gt;
* Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;. The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;. As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenAL SDK ===&lt;br /&gt;
* Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PhysX SDK ===&lt;br /&gt;
* Install PhysX SDK, and copy PhysX subdirectories as follows:&lt;br /&gt;
** Copy from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&lt;br /&gt;
** Copy from and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== libogg and libvorbis ===&lt;br /&gt;
&lt;br /&gt;
Build Ogg and Vorbis&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.props file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE and perform the following steps:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, click on configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the project (&amp;quot;libogg_static&amp;quot;) in the Solution Explorer at upper left, and select Properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the &amp;quot;libogg_static Properties Pages&amp;quot; panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop down at the upper left of the &amp;quot;libogg_static Properties Pages&amp;quot; panel and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, verify the configuration drop down is still set to &amp;quot;Release&amp;quot;. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE, and repeat the preceding steps for projects libvorbis_static and libvorbisfile.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy Ogg and Vorbis files to CWE&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the ogg and vorbis include directories into &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Speex ===&lt;br /&gt;
&lt;br /&gt;
Rebuild the Speex 1.0.1 included in the CWE tree.&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenSSL ===&lt;br /&gt;
&amp;lt;p&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain [https://wiki.openssl.org/index.php/Binaries precompiled binaries] (32-bit, not 64-bit).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As this is security software, it is best (in my opinion) to compile it yourself from source. You can choose either static or dynamic linking. '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Copy the installed OpenSSL files to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JPEG ===&lt;br /&gt;
Build in-tree JPEG library&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio Command Prompt (2010)&amp;quot; and change to the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== zlib and libpng ===&lt;br /&gt;
Build zlib and libpng&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit the ''png/projects/vstudio/zlib.props'' file. Towards the bottom is a path for ZLibSrcDir. Change the value to &amp;quot;..\..\..\..\zlib&amp;quot; (no -1.2.5 or such on the end) and save the file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, click on the configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release Library&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer and select &amp;quot;Add &amp;gt; Existing item&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzclose.c, gzlib.c, gzread.c, and gzwrite.c files (hold Ctrl while clicking to select multiple files).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Add&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project in the solution explorer and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Preprocessor&lt;br /&gt;
|Preprocessor Definitions&lt;br /&gt;
|''Remove '''Z_SOLO''' if present, leave everything else alone''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the following steps for each of these projects:  &amp;quot;libpng&amp;quot;, &amp;quot;pngtest&amp;quot;, &amp;quot;pngvalid&amp;quot;, and &amp;quot;zlib&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; General&lt;br /&gt;
|Project Defaults &amp;gt; Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on the configuration drop down at the upper left of the panel and select &amp;quot;Debug Library&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set (or verify) the following items as follows, noting that the 4th item is not the same as in the previous list.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; General&lt;br /&gt;
|Project Defaults &amp;gt; Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; General&lt;br /&gt;
|Treat Warnings As Errors&lt;br /&gt;
|No (/WX-)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and &amp;quot;OK&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;(Remember you need to follow these steps four times, once each for libpng, pngtest, pngvalid, AND zlib!)&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “Debug Library” from the ''Solution Configurations'' drop down in the IDE toolbar, then right click the top line in the Solution Explorer (Solution 'vstudio') and choose ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “Release Library” configuration, and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/libpn16.lib'' to ''libpngd.lib'' and copy it to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Release Library/libpn16.lib'' to ''libpng.lib'' and copy it to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/zlib.lib'' to ''zlibd.lib'' and copy it to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3171</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3171"/>
		<updated>2020-08-29T02:27:15Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* zlib and libpng */ Added missing steps and made consistent with previous reformatting improvements&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
* If you have a version of Visual Studio later than 2010 installed, you may need to uninstall it.&lt;br /&gt;
* If you have Microsoft Visual C++ 2010 Redistributable installed (x86 and/or x64), [https://support.microsoft.com/en-us/help/2728613/s1023-error-when-you-install-the-directx-sdk-june-2010 you will need to uninstall it before installing DirectX SDK]. While installing Visual Studio, the Redistributable package(s) will be reinstalled for you automatically.&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
See [[Build the client with MSVC 2010 Express|Build preparation steps]] for installation instructions!&lt;br /&gt;
* [https://git-scm.com/download/win git] (recommended but not required)&lt;br /&gt;
* [https://foundry.openuru.org/gitblit/summary/?r=CWE-ou.git The CWE OpenUru source code]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - This will be in two downloads, you'll need to search for and download both &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
* [https://www.zlib.net/fossils/zlib-1.2.7.tar.gz zlib 1.2.7]&lt;br /&gt;
* [https://ftp-osl.osuosl.org/pub/libpng/src/archive/gz/libpng15/libpng-1.5.12.tar.gz libpng 1.5.12]&lt;br /&gt;
Newer versions of these libraries may work, but no guarantees are offered; these are what have been tested.  See the next section for restrictions on using newer versions.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
: &amp;lt;u&amp;gt;The status URL:&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&lt;br /&gt;
=== git (Optional) ===&lt;br /&gt;
If you plan to make changes to the source code and contribute to the community, install git (accepting the default options).&lt;br /&gt;
&lt;br /&gt;
=== CWE-ou ===&lt;br /&gt;
Obtain CWE-OU source by one of these methods:&lt;br /&gt;
* Use '''git clone''' with the repository link found on the webpage referenced above&lt;br /&gt;
* Click &amp;quot;tree&amp;quot; in the top menu of the webpage reference above, then click &amp;quot;zip&amp;quot; to download a ZIP archive&lt;br /&gt;
&lt;br /&gt;
=== DirectX ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX SDK before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Visual Studio 2010 Express ===&lt;br /&gt;
&lt;br /&gt;
* Install Visual Studio 2010 Express&lt;br /&gt;
* Install Service Pack 1 (SP1) for Visual Studio 2010, plus security updates (run Windows Update a few times)&lt;br /&gt;
* Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;. The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;. As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenAL SDK ===&lt;br /&gt;
* Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PhysX SDK ===&lt;br /&gt;
* Install PhysX SDK, and copy PhysX subdirectories as follows:&lt;br /&gt;
** Copy from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&lt;br /&gt;
** Copy from and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== libogg and libvorbis ===&lt;br /&gt;
&lt;br /&gt;
Build Ogg and Vorbis&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.props file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, click on configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the project (&amp;quot;libogg_static&amp;quot;) in the Solution Explorer at upper left, and select Properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the &amp;quot;libogg_static Properties Pages&amp;quot; panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop down at the upper left of the &amp;quot;libogg_static Properties Pages&amp;quot; panel and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, verify the configuration drop down is still set to &amp;quot;Release&amp;quot;. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE, and repeat all of the preceding steps beginning at step &amp;quot;d&amp;quot; for both projects libvorbis_static and libvorbisfile.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy Ogg and Vorbis files to CWE&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the ogg and vorbis include directories into &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Speex ===&lt;br /&gt;
&lt;br /&gt;
Rebuild the Speex 1.0.1 included in the CWE tree.&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenSSL ===&lt;br /&gt;
&amp;lt;p&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain [https://wiki.openssl.org/index.php/Binaries precompiled binaries] (32-bit, not 64-bit).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As this is security software, it is best (in my opinion) to compile it yourself from source. You can choose either static or dynamic linking. '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Copy the installed OpenSSL files to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JPEG ===&lt;br /&gt;
Build in-tree JPEG library&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio Command Prompt (2010)&amp;quot; and change to the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== zlib and libpng ===&lt;br /&gt;
Build zlib and libpng&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit the ''png/projects/vstudio/zlib.props'' file. Towards the bottom is a path for ZLibSrcDir. Change the value to &amp;quot;..\..\..\..\zlib&amp;quot; (no -1.2.5 or such on the end) and save the file.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, click on the configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release Library&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer and select &amp;quot;Add &amp;gt; Existing item&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzclose.c, gzlib.c, gzread.c, and gzwrite.c files (hold Ctrl while clicking to select multiple files).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Add&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project in the solution explorer and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Preprocessor&lt;br /&gt;
|Preprocessor Definitions&lt;br /&gt;
|''Remove '''Z_SOLO''' if present, leave everything else alone''&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the following steps for each of these projects:  &amp;quot;libpng&amp;quot;, &amp;quot;pngtest&amp;quot;, &amp;quot;pngvalid&amp;quot;, and &amp;quot;zlib&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; General&lt;br /&gt;
|Project Defaults &amp;gt; Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on the configuration drop down at the upper left of the panel and select &amp;quot;Debug Library&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Set (or verify) the following items as follows, noting that the 4th item is not the same as in the previous list.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; General&lt;br /&gt;
|Project Defaults &amp;gt; Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; General&lt;br /&gt;
|Treat Warnings As Errors&lt;br /&gt;
|No (/WX-)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties &amp;gt; C/C++ &amp;gt; Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and &amp;quot;OK&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt;(Remember you need to follow these steps four times, once each for libpng, pngtest, pngvalid, AND zlib!)&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “Debug Library” from the ''Solution Configurations'' drop down in the IDE toolbar, then right click the top line in the Solution Explorer (Solution 'vstudio') and choose ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “Release Library” configuration, and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/libpn16.lib'' to ''libpngd.lib'' and copy it to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Release Library/libpn16.lib'' to ''libpng.lib'' and copy it to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/zlib.lib'' to ''zlibd.lib'' and copy it to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3170</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3170"/>
		<updated>2020-08-28T23:08:16Z</updated>

		<summary type="html">&lt;p&gt;Marten: Change CWE to CWE-ou in all appropriate spots&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
* If you have a version of Visual Studio later than 2010 installed, you may need to uninstall it.&lt;br /&gt;
* If you have Microsoft Visual C++ 2010 Redistributable installed (x86 and/or x64), [https://support.microsoft.com/en-us/help/2728613/s1023-error-when-you-install-the-directx-sdk-june-2010 you will need to uninstall it before installing DirectX SDK]. While installing Visual Studio, the Redistributable package(s) will be reinstalled for you automatically.&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
See [[Build the client with MSVC 2010 Express|Build preparation steps]] for installation instructions!&lt;br /&gt;
* [https://git-scm.com/download/win git] (recommended but not required)&lt;br /&gt;
* [https://foundry.openuru.org/gitblit/summary/?r=CWE-ou.git The CWE OpenUru source code]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - This will be in two downloads, you'll need to search for and download both &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
* [https://www.zlib.net/fossils/zlib-1.2.7.tar.gz zlib 1.2.7]&lt;br /&gt;
* [https://ftp-osl.osuosl.org/pub/libpng/src/archive/gz/libpng15/libpng-1.5.12.tar.gz libpng 1.5.12]&lt;br /&gt;
Newer versions of these libraries may work, but no guarantees are offered; these are what have been tested.  See the next section for restrictions on using newer versions.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
: &amp;lt;u&amp;gt;The status URL:&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE-ou\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&lt;br /&gt;
=== git (Optional) ===&lt;br /&gt;
If you plan to make changes to the source code and contribute to the community, install git (accepting the default options).&lt;br /&gt;
&lt;br /&gt;
=== CWE-ou ===&lt;br /&gt;
Obtain CWE-OU source by one of these methods:&lt;br /&gt;
* Use '''git clone''' with the repository link found on the webpage referenced above&lt;br /&gt;
* Click &amp;quot;tree&amp;quot; in the top menu of the webpage reference above, then click &amp;quot;zip&amp;quot; to download a ZIP archive&lt;br /&gt;
&lt;br /&gt;
=== DirectX ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX SDK before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Visual Studio 2010 Express ===&lt;br /&gt;
&lt;br /&gt;
* Install Visual Studio 2010 Express&lt;br /&gt;
* Install Service Pack 1 (SP1) for Visual Studio 2010, plus security updates (run Windows Update a few times)&lt;br /&gt;
* Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;. The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;. As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenAL SDK ===&lt;br /&gt;
* Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PhysX SDK ===&lt;br /&gt;
* Install PhysX SDK, and copy PhysX subdirectories as follows:&lt;br /&gt;
** Copy from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&lt;br /&gt;
** Copy from and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== libogg and libvorbis ===&lt;br /&gt;
&lt;br /&gt;
Build Ogg and Vorbis&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.props file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, click on configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the project (&amp;quot;libogg_static&amp;quot;) in the Solution Explorer at upper left, and select Properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the &amp;quot;libogg_static Properties Pages&amp;quot; panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop down at the upper left of the &amp;quot;libogg_static Properties Pages&amp;quot; panel and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, verify the configuration drop down is still set to &amp;quot;Release&amp;quot;. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE, and repeat all of the preceding steps beginning at step &amp;quot;d&amp;quot; for both projects libvorbis_static and libvorbisfile.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy Ogg and Vorbis files to CWE&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the ogg and vorbis include directories into &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Speex ===&lt;br /&gt;
&lt;br /&gt;
Rebuild the Speex 1.0.1 included in the CWE tree.&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenSSL ===&lt;br /&gt;
&amp;lt;p&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain [https://wiki.openssl.org/index.php/Binaries precompiled binaries] (32-bit, not 64-bit).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As this is security software, it is best (in my opinion) to compile it yourself from source. You can choose either static or dynamic linking. '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Copy the installed OpenSSL files to &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JPEG ===&lt;br /&gt;
Build in-tree JPEG library&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio Command Prompt (2010)&amp;quot; and change to the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== zlib and libpng ===&lt;br /&gt;
Build zlib and libpng&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select Add -&amp;gt;  Existing item&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzlib.c, gzclose.c, gzread.c, and gzwrite.c files (hold Ctrl while clicking to select multiple files).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Add&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open 'Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Preprocessor''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Remove the ''Z_SOLO'' directive from  ''Preprocessor Directives'' - Do this for both the LIB Release and LIB Debug configurations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the “libpng” project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select configuration “LIB Debug” in the popup menu at the top.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' and set ''Treat Warnings As Errors'' to ''No''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Code Generation'' on the left.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change the ''Runtime Library'' line to “Multi-threaded Debug DLL (/MDd)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the “LIB Release” configuration and set ''Runtime Library'' to “Multi-threaded DLL (/MD)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the above 7 steps for the other two projects “pngtest” and “zlib”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “LIB Debug” from the ''Solution Configurations'' popup menu in the toolbar, then ''Build'' &amp;gt; ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “LIB Release” configuration and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/libpn16.lib'' to ''libpngd.lib'' and copy it to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Release Library/libpn16.lib'' to ''libpng.lib'' and copy it to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/zlib.lib'' to ''zlibd.lib'' and copy it to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3169</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3169"/>
		<updated>2020-08-28T23:05:02Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* PhysX SDK */ improve legibility of instruction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
* If you have a version of Visual Studio later than 2010 installed, you may need to uninstall it.&lt;br /&gt;
* If you have Microsoft Visual C++ 2010 Redistributable installed (x86 and/or x64), [https://support.microsoft.com/en-us/help/2728613/s1023-error-when-you-install-the-directx-sdk-june-2010 you will need to uninstall it before installing DirectX SDK]. While installing Visual Studio, the Redistributable package(s) will be reinstalled for you automatically.&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
See [[Build the client with MSVC 2010 Express|Build preparation steps]] for installation instructions!&lt;br /&gt;
* [https://git-scm.com/download/win git] (recommended but not required)&lt;br /&gt;
* [https://foundry.openuru.org/gitblit/summary/?r=CWE-ou.git The CWE OpenUru source code]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - This will be in two downloads, you'll need to search for and download both &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
* [https://www.zlib.net/fossils/zlib-1.2.7.tar.gz zlib 1.2.7]&lt;br /&gt;
* [https://ftp-osl.osuosl.org/pub/libpng/src/archive/gz/libpng15/libpng-1.5.12.tar.gz libpng 1.5.12]&lt;br /&gt;
Newer versions of these libraries may work, but no guarantees are offered; these are what have been tested.  See the next section for restrictions on using newer versions.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
: &amp;lt;u&amp;gt;The status URL:&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&lt;br /&gt;
:: &amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&lt;br /&gt;
=== git (Optional) ===&lt;br /&gt;
If you plan to make changes to the source code and contribute to the community, install git (accepting the default options).&lt;br /&gt;
&lt;br /&gt;
=== CWE-ou ===&lt;br /&gt;
Obtain CWE-OU source by one of these methods:&lt;br /&gt;
* Use '''git clone''' with the repository link found on the webpage referenced above&lt;br /&gt;
* Click &amp;quot;tree&amp;quot; in the top menu of the webpage reference above, then click &amp;quot;zip&amp;quot; to download a ZIP archive&lt;br /&gt;
&lt;br /&gt;
=== DirectX ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX SDK before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Visual Studio 2010 Express ===&lt;br /&gt;
&lt;br /&gt;
* Install Visual Studio 2010 Express&lt;br /&gt;
* Install Service Pack 1 (SP1) for Visual Studio 2010, plus security updates (run Windows Update a few times)&lt;br /&gt;
* Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;. The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;. As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenAL SDK ===&lt;br /&gt;
* Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PhysX SDK ===&lt;br /&gt;
* Install PhysX SDK, and copy PhysX subdirectories as follows:&lt;br /&gt;
** Copy from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&lt;br /&gt;
** Copy from and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== libogg and libvorbis ===&lt;br /&gt;
&lt;br /&gt;
Build Ogg and Vorbis&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.props file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, click on configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the project (&amp;quot;libogg_static&amp;quot;) in the Solution Explorer at upper left, and select Properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the &amp;quot;libogg_static Properties Pages&amp;quot; panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop down at the upper left of the &amp;quot;libogg_static Properties Pages&amp;quot; panel and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, verify the configuration drop down is still set to &amp;quot;Release&amp;quot;. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE, and repeat all of the preceding steps beginning at step &amp;quot;d&amp;quot; for both projects libvorbis_static and libvorbisfile.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy Ogg and Vorbis files to CWE&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the ogg and vorbis include directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Speex ===&lt;br /&gt;
&lt;br /&gt;
Rebuild the Speex 1.0.1 included in the CWE tree.&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenSSL ===&lt;br /&gt;
&amp;lt;p&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain [https://wiki.openssl.org/index.php/Binaries precompiled binaries] (32-bit, not 64-bit).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As this is security software, it is best (in my opinion) to compile it yourself from source. You can choose either static or dynamic linking. '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Copy the installed OpenSSL files to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JPEG ===&lt;br /&gt;
Build in-tree JPEG library&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio Command Prompt (2010)&amp;quot; and change to the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== zlib and libpng ===&lt;br /&gt;
Build zlib and libpng&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select Add -&amp;gt;  Existing item&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzlib.c, gzclose.c, gzread.c, and gzwrite.c files (hold Ctrl while clicking to select multiple files).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Add&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open 'Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Preprocessor''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Remove the ''Z_SOLO'' directive from  ''Preprocessor Directives'' - Do this for both the LIB Release and LIB Debug configurations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the “libpng” project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select configuration “LIB Debug” in the popup menu at the top.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' and set ''Treat Warnings As Errors'' to ''No''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Code Generation'' on the left.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change the ''Runtime Library'' line to “Multi-threaded Debug DLL (/MDd)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the “LIB Release” configuration and set ''Runtime Library'' to “Multi-threaded DLL (/MD)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the above 7 steps for the other two projects “pngtest” and “zlib”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “LIB Debug” from the ''Solution Configurations'' popup menu in the toolbar, then ''Build'' &amp;gt; ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “LIB Release” configuration and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/libpn16.lib'' to ''libpngd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Release Library/libpn16.lib'' to ''libpng.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/zlib.lib'' to ''zlibd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3168</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3168"/>
		<updated>2020-08-28T23:03:21Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* CWE-ou */ remove stray /LI tag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
* If you have a version of Visual Studio later than 2010 installed, you may need to uninstall it.&lt;br /&gt;
* If you have Microsoft Visual C++ 2010 Redistributable installed (x86 and/or x64), [https://support.microsoft.com/en-us/help/2728613/s1023-error-when-you-install-the-directx-sdk-june-2010 you will need to uninstall it before installing DirectX SDK]. While installing Visual Studio, the Redistributable package(s) will be reinstalled for you automatically.&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
See [[Build the client with MSVC 2010 Express|Build preparation steps]] for installation instructions!&lt;br /&gt;
* [https://git-scm.com/download/win git] (recommended but not required)&lt;br /&gt;
* [https://foundry.openuru.org/gitblit/summary/?r=CWE-ou.git The CWE OpenUru source code]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - This will be in two downloads, you'll need to search for and download both &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
* [https://www.zlib.net/fossils/zlib-1.2.7.tar.gz zlib 1.2.7]&lt;br /&gt;
* [https://ftp-osl.osuosl.org/pub/libpng/src/archive/gz/libpng15/libpng-1.5.12.tar.gz libpng 1.5.12]&lt;br /&gt;
Newer versions of these libraries may work, but no guarantees are offered; these are what have been tested.  See the next section for restrictions on using newer versions.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
: &amp;lt;u&amp;gt;The status URL:&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&lt;br /&gt;
:: &amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&lt;br /&gt;
=== git (Optional) ===&lt;br /&gt;
If you plan to make changes to the source code and contribute to the community, install git (accepting the default options).&lt;br /&gt;
&lt;br /&gt;
=== CWE-ou ===&lt;br /&gt;
Obtain CWE-OU source by one of these methods:&lt;br /&gt;
* Use '''git clone''' with the repository link found on the webpage referenced above&lt;br /&gt;
* Click &amp;quot;tree&amp;quot; in the top menu of the webpage reference above, then click &amp;quot;zip&amp;quot; to download a ZIP archive&lt;br /&gt;
&lt;br /&gt;
=== DirectX ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX SDK before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Visual Studio 2010 Express ===&lt;br /&gt;
&lt;br /&gt;
* Install Visual Studio 2010 Express&lt;br /&gt;
* Install Service Pack 1 (SP1) for Visual Studio 2010, plus security updates (run Windows Update a few times)&lt;br /&gt;
* Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;. The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;. As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenAL SDK ===&lt;br /&gt;
* Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PhysX SDK ===&lt;br /&gt;
* Install PhysX SDK, and copy PhysX subdirectories from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== libogg and libvorbis ===&lt;br /&gt;
&lt;br /&gt;
Build Ogg and Vorbis&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.props file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, click on configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the project (&amp;quot;libogg_static&amp;quot;) in the Solution Explorer at upper left, and select Properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the &amp;quot;libogg_static Properties Pages&amp;quot; panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop down at the upper left of the &amp;quot;libogg_static Properties Pages&amp;quot; panel and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, verify the configuration drop down is still set to &amp;quot;Release&amp;quot;. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE, and repeat all of the preceding steps beginning at step &amp;quot;d&amp;quot; for both projects libvorbis_static and libvorbisfile.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy Ogg and Vorbis files to CWE&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the ogg and vorbis include directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Speex ===&lt;br /&gt;
&lt;br /&gt;
Rebuild the Speex 1.0.1 included in the CWE tree.&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenSSL ===&lt;br /&gt;
&amp;lt;p&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain [https://wiki.openssl.org/index.php/Binaries precompiled binaries] (32-bit, not 64-bit).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As this is security software, it is best (in my opinion) to compile it yourself from source. You can choose either static or dynamic linking. '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Copy the installed OpenSSL files to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JPEG ===&lt;br /&gt;
Build in-tree JPEG library&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio Command Prompt (2010)&amp;quot; and change to the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== zlib and libpng ===&lt;br /&gt;
Build zlib and libpng&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select Add -&amp;gt;  Existing item&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzlib.c, gzclose.c, gzread.c, and gzwrite.c files (hold Ctrl while clicking to select multiple files).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Add&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open 'Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Preprocessor''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Remove the ''Z_SOLO'' directive from  ''Preprocessor Directives'' - Do this for both the LIB Release and LIB Debug configurations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the “libpng” project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select configuration “LIB Debug” in the popup menu at the top.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' and set ''Treat Warnings As Errors'' to ''No''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Code Generation'' on the left.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change the ''Runtime Library'' line to “Multi-threaded Debug DLL (/MDd)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the “LIB Release” configuration and set ''Runtime Library'' to “Multi-threaded DLL (/MD)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the above 7 steps for the other two projects “pngtest” and “zlib”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “LIB Debug” from the ''Solution Configurations'' popup menu in the toolbar, then ''Build'' &amp;gt; ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “LIB Release” configuration and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/libpn16.lib'' to ''libpngd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Release Library/libpn16.lib'' to ''libpng.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/zlib.lib'' to ''zlibd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3167</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3167"/>
		<updated>2020-08-28T03:36:30Z</updated>

		<summary type="html">&lt;p&gt;Marten: Reformat page for improved readability and edit-ability, from top through &amp;quot;zlib and libpng&amp;quot; section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
* If you have a version of Visual Studio later than 2010 installed, you may need to uninstall it.&lt;br /&gt;
* If you have Microsoft Visual C++ 2010 Redistributable installed (x86 and/or x64), [https://support.microsoft.com/en-us/help/2728613/s1023-error-when-you-install-the-directx-sdk-june-2010 you will need to uninstall it before installing DirectX SDK]. While installing Visual Studio, the Redistributable package(s) will be reinstalled for you automatically.&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
See [[Build the client with MSVC 2010 Express|Build preparation steps]] for installation instructions!&lt;br /&gt;
* [https://git-scm.com/download/win git] (recommended but not required)&lt;br /&gt;
* [https://foundry.openuru.org/gitblit/summary/?r=CWE-ou.git The CWE OpenUru source code]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - This will be in two downloads, you'll need to search for and download both &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
* [https://www.zlib.net/fossils/zlib-1.2.7.tar.gz zlib 1.2.7]&lt;br /&gt;
* [https://ftp-osl.osuosl.org/pub/libpng/src/archive/gz/libpng15/libpng-1.5.12.tar.gz libpng 1.5.12]&lt;br /&gt;
Newer versions of these libraries may work, but no guarantees are offered; these are what have been tested.  See the next section for restrictions on using newer versions.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
: &amp;lt;u&amp;gt;The status URL:&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&lt;br /&gt;
:: &amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&lt;br /&gt;
: &amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&lt;br /&gt;
:: &amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&lt;br /&gt;
=== git (Optional) ===&lt;br /&gt;
If you plan to make changes to the source code and contribute to the community, install git (accepting the default options).&lt;br /&gt;
&lt;br /&gt;
=== CWE-ou ===&lt;br /&gt;
Obtain CWE-OU source by one of these methods:&lt;br /&gt;
* Use '''git clone''' with the repository link found on the webpage referenced above&amp;lt;/li&amp;gt;&lt;br /&gt;
* Click &amp;quot;tree&amp;quot; in the top menu of the webpage reference above, then click &amp;quot;zip&amp;quot; to download a ZIP archive&lt;br /&gt;
&lt;br /&gt;
=== DirectX ===&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Install the DirectX SDK before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Visual Studio 2010 Express ===&lt;br /&gt;
&lt;br /&gt;
* Install Visual Studio 2010 Express&lt;br /&gt;
* Install Service Pack 1 (SP1) for Visual Studio 2010, plus security updates (run Windows Update a few times)&lt;br /&gt;
* Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;. The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;. As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenAL SDK ===&lt;br /&gt;
* Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== PhysX SDK ===&lt;br /&gt;
* Install PhysX SDK, and copy PhysX subdirectories from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== libogg and libvorbis ===&lt;br /&gt;
&lt;br /&gt;
Build Ogg and Vorbis&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.props file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, click on configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the project (&amp;quot;libogg_static&amp;quot;) in the Solution Explorer at upper left, and select Properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the &amp;quot;libogg_static Properties Pages&amp;quot; panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop down at the upper left of the &amp;quot;libogg_static Properties Pages&amp;quot; panel and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, verify the configuration drop down is still set to &amp;quot;Release&amp;quot;. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE, and repeat all of the preceding steps beginning at step &amp;quot;d&amp;quot; for both projects libvorbis_static and libvorbisfile.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Copy Ogg and Vorbis files to CWE&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the ogg and vorbis include directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Speex ===&lt;br /&gt;
&lt;br /&gt;
Rebuild the Speex 1.0.1 included in the CWE tree.&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In the panel that opens, set (or verify) the following items as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded DLL (/MD)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;li&amp;gt;Click on &amp;quot;Apply&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;. Set (or verify) the following items as follows, noting that the 3rd item is not the same as in the previous list.&amp;lt;/li&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Left Pane&lt;br /&gt;
!Right pane parameter&lt;br /&gt;
!Right pane value (drop down)&lt;br /&gt;
|-&lt;br /&gt;
|Configuration Properties -&amp;gt; General&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No Whole Program Optimization&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ -&amp;gt; Optimization&lt;br /&gt;
|Whole Program Optimization&lt;br /&gt;
|No&lt;br /&gt;
|-&lt;br /&gt;
|C/C++ Code Generation&lt;br /&gt;
|Runtime Library&lt;br /&gt;
|Multi-threaded Debug DLL (/MDd)&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenSSL ===&lt;br /&gt;
&amp;lt;p&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain [https://wiki.openssl.org/index.php/Binaries precompiled binaries] (32-bit, not 64-bit).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;As this is security software, it is best (in my opinion) to compile it yourself from source. You can choose either static or dynamic linking. '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Copy the installed OpenSSL files to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JPEG ===&lt;br /&gt;
Build in-tree JPEG library&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio Command Prompt (2010)&amp;quot; and change to the &amp;quot;CWE-ou\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== zlib and libpng ===&lt;br /&gt;
Build zlib and libpng&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select Add -&amp;gt;  Existing item&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzlib.c, gzclose.c, gzread.c, and gzwrite.c files (hold Ctrl while clicking to select multiple files).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Add&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open 'Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Preprocessor''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Remove the ''Z_SOLO'' directive from  ''Preprocessor Directives'' - Do this for both the LIB Release and LIB Debug configurations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the “libpng” project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select configuration “LIB Debug” in the popup menu at the top.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' and set ''Treat Warnings As Errors'' to ''No''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Code Generation'' on the left.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change the ''Runtime Library'' line to “Multi-threaded Debug DLL (/MDd)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the “LIB Release” configuration and set ''Runtime Library'' to “Multi-threaded DLL (/MD)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the above 7 steps for the other two projects “pngtest” and “zlib”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “LIB Debug” from the ''Solution Configurations'' popup menu in the toolbar, then ''Build'' &amp;gt; ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “LIB Release” configuration and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/libpn16.lib'' to ''libpngd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Release Library/libpn16.lib'' to ''libpng.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/zlib.lib'' to ''zlibd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3166</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3166"/>
		<updated>2020-08-28T03:31:50Z</updated>

		<summary type="html">&lt;p&gt;Marten: More step corrections.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
* If you have a version of Visual Studio later than 2010 installed, you may need to uninstall it.&lt;br /&gt;
* If you have Microsoft Visual C++ 2010 Redistributable installed (x86 and/or x64), [https://support.microsoft.com/en-us/help/2728613/s1023-error-when-you-install-the-directx-sdk-june-2010 you will need to uninstall it before installing DirectX SDK]. While installing Visual Studio, the Redistributable package(s) will be reinstalled for you automatically.&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
See [[Build the client with MSVC 2010 Express|Build preparation steps]] for installation instructions!&lt;br /&gt;
* [https://git-scm.com/download/win git] (recommended but not required)&lt;br /&gt;
* [https://foundry.openuru.org/gitblit/summary/?r=CWE-ou.git The CWE OpenUru source code]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - This will be in two downloads, you'll need to search for and download both &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
* [https://www.zlib.net/fossils/zlib-1.2.7.tar.gz zlib 1.2.7]&lt;br /&gt;
* [https://ftp-osl.osuosl.org/pub/libpng/src/archive/gz/libpng15/libpng-1.5.12.tar.gz libpng 1.5.12]&lt;br /&gt;
Newer versions of these libraries may work, but no guarantees are offered; these are what have been tested.  See the next section for restrictions on using newer versions.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
&amp;lt;u&amp;gt;The status URL:  &amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;(Optional) If you plan to make changes to the source code and contribute to the community, install git (accepting the default options)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Obtain CWE-OU source by one of these methods:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt; Use '''git clone''' with the repository link found on the webpage referenced above&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt; Click &amp;quot;tree&amp;quot; in the top menu of the webpage reference above, then click &amp;quot;zip&amp;quot; to download a ZIP archive&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;BR&amp;gt;&lt;br /&gt;
Install the DirectX SDK before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Install Visual Studio 2010 Express&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Install Service Pack 1 (SP1) for Visual Studio 2010, plus security updates (run Windows Update a few times).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;.  The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;.  As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install PhysX SDK, and copy PhysX subdirectories from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Build Ogg and Vorbis&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.props file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, click on configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the project (&amp;quot;libogg_static&amp;quot;) in the Solution Explorer at upper left, and select Properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In the &amp;quot;libogg_static Properties Pages&amp;quot; panel that opens, select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop down at the upper left of the &amp;quot;libogg_static Properties Pages&amp;quot; panel and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and verify it is set to &amp;quot;No Whole Program Optimization&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and verify &amp;quot;Whole Program Optimization&amp;quot; in the right pane is set to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and set it to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, verify the configuration drop down is still set to &amp;quot;Release&amp;quot;. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Repeat steps &amp;quot;d&amp;quot; through &amp;quot;p&amp;quot; for projects libvorbis_static and libvorbisfile.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy Ogg and Vorbis files to CWE &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the ogg and vorbis include directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rebuild the Speex 1.0.1 included in the CWE tree.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain [https://wiki.openssl.org/index.php/Binaries precompiled binaries] (32-bit, not 64-bit).  As this is security software, it is best (in my opinion) to compile it yourself from source.  You can choose either static or dynamic linking.&amp;lt;BR&amp;gt;  '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;  Copy the installed OpenSSL files to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build in-tree JPEG library&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio Command Prompt (2010)&amp;quot; and change to the &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build zlib and libpng&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select Add -&amp;gt;  Existing item&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzlib.c, gzclose.c, gzread.c, and gzwrite.c files (hold Ctrl while clicking to select multiple files).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Click &amp;quot;Add&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open 'Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Preprocessor''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Remove the ''Z_SOLO'' directive from  ''Preprocessor Directives'' - Do this for both the LIB Release and LIB Debug configurations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the “libpng” project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select configuration “LIB Debug” in the popup menu at the top.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' and set ''Treat Warnings As Errors'' to ''No''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Code Generation'' on the left.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change the ''Runtime Library'' line to “Multi-threaded Debug DLL (/MDd)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the “LIB Release” configuration and set ''Runtime Library'' to “Multi-threaded DLL (/MD)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the above 7 steps for the other two projects “pngtest” and “zlib”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “LIB Debug” from the ''Solution Configurations'' popup menu in the toolbar, then ''Build'' &amp;gt; ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “LIB Release” configuration and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/libpn16.lib'' to ''libpngd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Release Library/libpn16.lib'' to ''libpng.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/zlib.lib'' to ''zlibd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3165</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3165"/>
		<updated>2020-08-28T00:36:00Z</updated>

		<summary type="html">&lt;p&gt;Marten: Corrected instructions - you do need to build libvorbis&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
* If you have a version of Visual Studio later than 2010 installed, you may need to uninstall it.&lt;br /&gt;
* If you have Microsoft Visual C++ 2010 Redistributable installed (x86 and/or x64), [https://support.microsoft.com/en-us/help/2728613/s1023-error-when-you-install-the-directx-sdk-june-2010 you will need to uninstall it before installing DirectX SDK]. While installing Visual Studio, the Redistributable package(s) will be reinstalled for you automatically.&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
See [[Build the client with MSVC 2010 Express|Build preparation steps]] for installation instructions!&lt;br /&gt;
* [https://git-scm.com/download/win git] (recommended but not required)&lt;br /&gt;
* [https://foundry.openuru.org/gitblit/summary/?r=CWE-ou.git The CWE OpenUru source code]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - This will be in two downloads, you'll need to search for and download both &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
* [https://www.zlib.net/fossils/zlib-1.2.7.tar.gz zlib 1.2.7]&lt;br /&gt;
* [https://ftp-osl.osuosl.org/pub/libpng/src/archive/gz/libpng15/libpng-1.5.12.tar.gz libpng 1.5.12]&lt;br /&gt;
Newer versions of these libraries may work, but no guarantees are offered; these are what have been tested.  See the next section for restrictions on using newer versions.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
&amp;lt;u&amp;gt;The status URL:  &amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;(Optional) install git (accepting the default options)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Obtain CWE-OU source by one of these methods:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt; Use '''git clone''' with the repository link found on the webpage referenced above&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt; Click &amp;quot;tree&amp;quot; in the top menu of the webpage reference above, then click &amp;quot;zip&amp;quot; to download a ZIP archive&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;BR&amp;gt;&lt;br /&gt;
Install the DirectX SDK before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Install Visual Studio 2010 Express&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Update Visual Studio 2010 Express to SP1, plus security updates (run Windows Update a few times).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;.  The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;.  As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install PhysX SDK, and copy PhysX subdirectories from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Build Ogg and Vorbis&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.props file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, click on configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the project (&amp;quot;libogg_static&amp;quot;) in the Solution Explorer at upper left, and select Properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In the &amp;quot;libogg_static Properties Pages&amp;quot; panel that opens, select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop down at the upper left of the &amp;quot;libogg_static Properties Pages&amp;quot; panel and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and verify it is set to &amp;quot;No Whole Program Optimization&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and verify &amp;quot;Whole Program Optimization&amp;quot; in the right pane is set to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and set it to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, verify the configuration drop down is still set to &amp;quot;Release&amp;quot;. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Repeat steps &amp;quot;d&amp;quot; through &amp;quot;p&amp;quot; for projects libvorbis_static and libvorbisfile.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy Ogg and Vorbis files to CWE &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the ogg and vorbis include directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rebuild the Speex 1.0.1 included in the CWE tree.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain precompiled binaries.  As this is security software, it is best (in my opinion) to compile it yourself from source.  You can choose either static or dynamic linking.&amp;lt;BR&amp;gt;  '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;  Copy the installed OpenSSL files to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build in-tree JPEG library&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio 2010 Command Prompt&amp;quot; and change to the &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build zlib and libpng&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select Add -&amp;gt;  Existing item&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzlib.c file&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Do the same step above for gzclose.c, gzread.c, and gzwrite.c&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open 'Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Preprocessor''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Remove the ''Z_SOLO'' directive from  ''Preprocessor Directives'' - Do this for both the LIB Release and LIB Debug configurations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the “libpng” project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select configuration “LIB Debug” in the popup menu at the top.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' and set ''Treat Warnings As Errors'' to ''No''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Code Generation'' on the left.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change the ''Runtime Library'' line to “Multi-threaded Debug DLL (/MDd)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the “LIB Release” configuration and set ''Runtime Library'' to “Multi-threaded DLL (/MD)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the above 7 steps for the other two projects “pngtest” and “zlib”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “LIB Debug” from the ''Solution Configurations'' popup menu in the toolbar, then ''Build'' &amp;gt; ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “LIB Release” configuration and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/libpn16.lib'' to ''libpngd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Release Library/libpn16.lib'' to ''libpng.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/zlib.lib'' to ''zlibd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3164</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3164"/>
		<updated>2020-08-27T21:06:03Z</updated>

		<summary type="html">&lt;p&gt;Marten: add missing step to Save All&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
* If you have a version of Visual Studio later than 2010 installed, you may need to uninstall it.&lt;br /&gt;
* If you have Microsoft Visual C++ 2010 Redistributable installed (x86 and/or x64), [https://support.microsoft.com/en-us/help/2728613/s1023-error-when-you-install-the-directx-sdk-june-2010 you will need to uninstall it before installing DirectX SDK]. While installing Visual Studio, the Redistributable package(s) will be reinstalled for you automatically.&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
See [[Build the client with MSVC 2010 Express|Build preparation steps]] for installation instructions!&lt;br /&gt;
* [https://git-scm.com/download/win git] (recommended but not required)&lt;br /&gt;
* [https://foundry.openuru.org/gitblit/summary/?r=CWE-ou.git The CWE OpenUru source code]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - This will be in two downloads, you'll need to search for and download both &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
* [https://www.zlib.net/fossils/zlib-1.2.7.tar.gz zlib 1.2.7]&lt;br /&gt;
* [https://ftp-osl.osuosl.org/pub/libpng/src/archive/gz/libpng15/libpng-1.5.12.tar.gz libpng 1.5.12]&lt;br /&gt;
Newer versions of these libraries may work, but no guarantees are offered; these are what have been tested.  See the next section for restrictions on using newer versions.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
&amp;lt;u&amp;gt;The status URL:  &amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;(Optional) install git (accepting the default options)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Obtain CWE-OU source by one of these methods:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt; Use '''git clone''' with the repository link found on the webpage referenced above&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt; Click &amp;quot;tree&amp;quot; in the top menu of the webpage reference above, then click &amp;quot;zip&amp;quot; to download a ZIP archive&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;BR&amp;gt;&lt;br /&gt;
Install the DirectX SDK before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Install Visual Studio 2010 Express&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Update Visual Studio 2010 Express to SP1, plus security updates (run Windows Update a few times).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;.  The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;.  As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install PhysX SDK, and copy PhysX subdirectories from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Build Ogg and Vorbis&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.props file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, click on configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the project (&amp;quot;libogg_static&amp;quot;) in the Solution Explorer at upper left, and select Properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In the &amp;quot;libogg_static Properties Pages&amp;quot; panel that opens, select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop down at the upper left of the &amp;quot;libogg_static Properties Pages&amp;quot; panel and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and verify it is set to &amp;quot;No Whole Program Optimization&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and verify &amp;quot;Whole Program Optimization&amp;quot; in the right pane is set to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and set it to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, verify the configuration drop down is still set to &amp;quot;Release&amp;quot;. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Repeat steps &amp;quot;d&amp;quot; through &amp;quot;n&amp;quot; for projects libvorbis_static and libvorbisfile.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select File-&amp;gt; Save All.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy Ogg and Vorbis files to CWE &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the ogg and vorbis include directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rebuild the Speex 1.0.1 included in the CWE tree.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain precompiled binaries.  As this is security software, it is best (in my opinion) to compile it yourself from source.  You can choose either static or dynamic linking.&amp;lt;BR&amp;gt;  '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;  Copy the installed OpenSSL files to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build in-tree JPEG library&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio 2010 Command Prompt&amp;quot; and change to the &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build zlib and libpng&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select Add -&amp;gt;  Existing item&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzlib.c file&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Do the same step above for gzclose.c, gzread.c, and gzwrite.c&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open 'Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Preprocessor''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Remove the ''Z_SOLO'' directive from  ''Preprocessor Directives'' - Do this for both the LIB Release and LIB Debug configurations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the “libpng” project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select configuration “LIB Debug” in the popup menu at the top.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' and set ''Treat Warnings As Errors'' to ''No''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Code Generation'' on the left.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change the ''Runtime Library'' line to “Multi-threaded Debug DLL (/MDd)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the “LIB Release” configuration and set ''Runtime Library'' to “Multi-threaded DLL (/MD)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the above 7 steps for the other two projects “pngtest” and “zlib”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “LIB Debug” from the ''Solution Configurations'' popup menu in the toolbar, then ''Build'' &amp;gt; ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “LIB Release” configuration and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/libpn16.lib'' to ''libpngd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Release Library/libpn16.lib'' to ''libpng.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/zlib.lib'' to ''zlibd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3163</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3163"/>
		<updated>2020-08-27T05:02:56Z</updated>

		<summary type="html">&lt;p&gt;Marten: Clarified libogg/libvorbis setup instructions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
* If you have a version of Visual Studio later than 2010 installed, you may need to uninstall it.&lt;br /&gt;
* If you have Microsoft Visual C++ 2010 Redistributable installed (x86 and/or x64), [https://support.microsoft.com/en-us/help/2728613/s1023-error-when-you-install-the-directx-sdk-june-2010 you will need to uninstall it before installing DirectX SDK]. While installing Visual Studio, the Redistributable package(s) will be reinstalled for you automatically.&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
See [[Build the client with MSVC 2010 Express|Build preparation steps]] for installation instructions!&lt;br /&gt;
* [https://git-scm.com/download/win git] (recommended but not required)&lt;br /&gt;
* [https://foundry.openuru.org/gitblit/summary/?r=CWE-ou.git The CWE OpenUru source code]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - This will be in two downloads, you'll need to search for and download both &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
* [https://www.zlib.net/fossils/zlib-1.2.7.tar.gz zlib 1.2.7]&lt;br /&gt;
* [https://ftp-osl.osuosl.org/pub/libpng/src/archive/gz/libpng15/libpng-1.5.12.tar.gz libpng 1.5.12]&lt;br /&gt;
Newer versions of these libraries may work, but no guarantees are offered; these are what have been tested.  See the next section for restrictions on using newer versions.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
&amp;lt;u&amp;gt;The status URL:  &amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;(Optional) install git (accepting the default options)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Obtain CWE-OU source by one of these methods:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt; Use '''git clone''' with the repository link found on the webpage referenced above&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt; Click &amp;quot;tree&amp;quot; in the top menu of the webpage reference above, then click &amp;quot;zip&amp;quot; to download a ZIP archive&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;BR&amp;gt;&lt;br /&gt;
Install the DirectX SDK before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Install Visual Studio 2010 Express&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Update Visual Studio 2010 Express to SP1, plus security updates (run Windows Update a few times).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;.  The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;.  As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install PhysX SDK, and copy PhysX subdirectories from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Build Ogg and Vorbis&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.props file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, click on configuration drop down at the upper left (it defaults to &amp;quot;Debug&amp;quot;) and change it to &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the project (&amp;quot;libogg_static&amp;quot;) in the Solution Explorer at upper left, and select Properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In the &amp;quot;libogg_static Properties Pages&amp;quot; panel that opens, select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop down at the upper left of the &amp;quot;libogg_static Properties Pages&amp;quot; panel and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and verify it is set to &amp;quot;No Whole Program Optimization&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and verify &amp;quot;Whole Program Optimization&amp;quot; in the right pane is set to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and set it to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, verify the configuration drop down is still set to &amp;quot;Release&amp;quot;. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. Then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Repeat steps &amp;quot;d&amp;quot; through &amp;quot;n&amp;quot; for projects libvorbis_static and libvorbisfile. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy Ogg and Vorbis files to CWE &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the ogg and vorbis include directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rebuild the Speex 1.0.1 included in the CWE tree.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain precompiled binaries.  As this is security software, it is best (in my opinion) to compile it yourself from source.  You can choose either static or dynamic linking.&amp;lt;BR&amp;gt;  '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;  Copy the installed OpenSSL files to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build in-tree JPEG library&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio 2010 Command Prompt&amp;quot; and change to the &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build zlib and libpng&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select Add -&amp;gt;  Existing item&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzlib.c file&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Do the same step above for gzclose.c, gzread.c, and gzwrite.c&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open 'Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Preprocessor''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Remove the ''Z_SOLO'' directive from  ''Preprocessor Directives'' - Do this for both the LIB Release and LIB Debug configurations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the “libpng” project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select configuration “LIB Debug” in the popup menu at the top.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' and set ''Treat Warnings As Errors'' to ''No''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Code Generation'' on the left.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change the ''Runtime Library'' line to “Multi-threaded Debug DLL (/MDd)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the “LIB Release” configuration and set ''Runtime Library'' to “Multi-threaded DLL (/MD)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the above 7 steps for the other two projects “pngtest” and “zlib”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “LIB Debug” from the ''Solution Configurations'' popup menu in the toolbar, then ''Build'' &amp;gt; ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “LIB Release” configuration and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/libpn16.lib'' to ''libpngd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Release Library/libpn16.lib'' to ''libpng.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/zlib.lib'' to ''zlibd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3162</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3162"/>
		<updated>2020-08-27T04:44:26Z</updated>

		<summary type="html">&lt;p&gt;Marten: Fixed filename: libogg.props, not libogg.vsprops&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
* If you have a version of Visual Studio later than 2010 installed, you may need to uninstall it.&lt;br /&gt;
* If you have Microsoft Visual C++ 2010 Redistributable installed (x86 and/or x64), [https://support.microsoft.com/en-us/help/2728613/s1023-error-when-you-install-the-directx-sdk-june-2010 you will need to uninstall it before installing DirectX SDK]. While installing Visual Studio, the Redistributable package(s) will be reinstalled for you automatically.&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
See [[Build the client with MSVC 2010 Express|Build preparation steps]] for installation instructions!&lt;br /&gt;
* [https://git-scm.com/download/win git] (recommended but not required)&lt;br /&gt;
* [https://foundry.openuru.org/gitblit/summary/?r=CWE-ou.git The CWE OpenUru source code]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - This will be in two downloads, you'll need to search for and download both &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
* [https://www.zlib.net/fossils/zlib-1.2.7.tar.gz zlib 1.2.7]&lt;br /&gt;
* [https://ftp-osl.osuosl.org/pub/libpng/src/archive/gz/libpng15/libpng-1.5.12.tar.gz libpng 1.5.12]&lt;br /&gt;
Newer versions of these libraries may work, but no guarantees are offered; these are what have been tested.  See the next section for restrictions on using newer versions.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
&amp;lt;u&amp;gt;The status URL:  &amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;(Optional) install git (accepting the default options)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Obtain CWE-OU source by one of these methods:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt; Use '''git clone''' with the repository link found on the webpage referenced above&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt; Click &amp;quot;tree&amp;quot; in the top menu of the webpage reference above, then click &amp;quot;zip&amp;quot; to download a ZIP archive&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;BR&amp;gt;&lt;br /&gt;
Install the DirectX SDK before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Install Visual Studio 2010 Express&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Update Visual Studio 2010 Express to SP1, plus security updates (run Windows Update a few times).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;.  The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;.  As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install PhysX SDK, and copy PhysX subdirectories from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Build Ogg and Vorbis&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.props file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Repeat steps &amp;quot;d&amp;quot; through &amp;quot;n&amp;quot; for libvorbis_static and libvorbisfile. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy Ogg and Vorbis files to CWE &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the ogg and vorbis include directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rebuild the Speex 1.0.1 included in the CWE tree.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain precompiled binaries.  As this is security software, it is best (in my opinion) to compile it yourself from source.  You can choose either static or dynamic linking.&amp;lt;BR&amp;gt;  '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;  Copy the installed OpenSSL files to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build in-tree JPEG library&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio 2010 Command Prompt&amp;quot; and change to the &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build zlib and libpng&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select Add -&amp;gt;  Existing item&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzlib.c file&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Do the same step above for gzclose.c, gzread.c, and gzwrite.c&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open 'Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Preprocessor''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Remove the ''Z_SOLO'' directive from  ''Preprocessor Directives'' - Do this for both the LIB Release and LIB Debug configurations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the “libpng” project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select configuration “LIB Debug” in the popup menu at the top.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' and set ''Treat Warnings As Errors'' to ''No''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Code Generation'' on the left.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change the ''Runtime Library'' line to “Multi-threaded Debug DLL (/MDd)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the “LIB Release” configuration and set ''Runtime Library'' to “Multi-threaded DLL (/MD)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the above 7 steps for the other two projects “pngtest” and “zlib”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “LIB Debug” from the ''Solution Configurations'' popup menu in the toolbar, then ''Build'' &amp;gt; ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “LIB Release” configuration and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/libpn16.lib'' to ''libpngd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Release Library/libpn16.lib'' to ''libpng.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/zlib.lib'' to ''zlibd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3161</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3161"/>
		<updated>2020-08-27T03:45:25Z</updated>

		<summary type="html">&lt;p&gt;Marten: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
* If you have a version of Visual Studio later than 2010 installed, you may need to uninstall it.&lt;br /&gt;
* If you have Microsoft Visual C++ 2010 Redistributable installed (x86 and/or x64), [https://support.microsoft.com/en-us/help/2728613/s1023-error-when-you-install-the-directx-sdk-june-2010 you will need to uninstall it before installing DirectX SDK]. While installing Visual Studio, the Redistributable package(s) will be reinstalled for you automatically.&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
See [[Build the client with MSVC 2010 Express|Build preparation steps]] for installation instructions!&lt;br /&gt;
* [https://git-scm.com/download/win git] (recommended but not required)&lt;br /&gt;
* [https://foundry.openuru.org/gitblit/summary/?r=CWE-ou.git The CWE OpenUru source code]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - This will be in two downloads, you'll need to search for and download both &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
* [https://www.zlib.net/fossils/zlib-1.2.7.tar.gz zlib 1.2.7]&lt;br /&gt;
* [https://ftp-osl.osuosl.org/pub/libpng/src/archive/gz/libpng15/libpng-1.5.12.tar.gz libpng 1.5.12]&lt;br /&gt;
Newer versions of these libraries may work, but no guarantees are offered; these are what have been tested.  See the next section for restrictions on using newer versions.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
&amp;lt;u&amp;gt;The status URL:  &amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;(Optional) install git (accepting the default options)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Obtain CWE-OU source by one of these methods:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt; Use '''git clone''' with the repository link found on the webpage referenced above&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt; Click &amp;quot;tree&amp;quot; in the top menu of the webpage reference above, then click &amp;quot;zip&amp;quot; to download a ZIP archive&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;BR&amp;gt;&lt;br /&gt;
Install the DirectX SDK before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Install Visual Studio 2010 Express&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Update Visual Studio 2010 Express to SP1, plus security updates (run Windows Update a few times).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;.  The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;.  As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install PhysX SDK, and copy PhysX subdirectories from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Build Ogg and Vorbis&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.vsprops file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Repeat steps &amp;quot;d&amp;quot; through &amp;quot;n&amp;quot; for libvorbis_static and libvorbisfile. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy Ogg and Vorbis files to CWE &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the ogg and vorbis include directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rebuild the Speex 1.0.1 included in the CWE tree.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain precompiled binaries.  As this is security software, it is best (in my opinion) to compile it yourself from source.  You can choose either static or dynamic linking.&amp;lt;BR&amp;gt;  '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;  Copy the installed OpenSSL files to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build in-tree JPEG library&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio 2010 Command Prompt&amp;quot; and change to the &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build zlib and libpng&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select Add -&amp;gt;  Existing item&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzlib.c file&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Do the same step above for gzclose.c, gzread.c, and gzwrite.c&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open 'Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Preprocessor''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Remove the ''Z_SOLO'' directive from  ''Preprocessor Directives'' - Do this for both the LIB Release and LIB Debug configurations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the “libpng” project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select configuration “LIB Debug” in the popup menu at the top.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' and set ''Treat Warnings As Errors'' to ''No''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Code Generation'' on the left.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change the ''Runtime Library'' line to “Multi-threaded Debug DLL (/MDd)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the “LIB Release” configuration and set ''Runtime Library'' to “Multi-threaded DLL (/MD)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the above 7 steps for the other two projects “pngtest” and “zlib”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “LIB Debug” from the ''Solution Configurations'' popup menu in the toolbar, then ''Build'' &amp;gt; ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “LIB Release” configuration and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/libpn16.lib'' to ''libpngd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Release Library/libpn16.lib'' to ''libpng.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/zlib.lib'' to ''zlibd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3160</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3160"/>
		<updated>2020-08-27T03:44:00Z</updated>

		<summary type="html">&lt;p&gt;Marten: Added zlib and libpng download links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
* If you have a version of Visual Studio later than 2010 installed, you may need to uninstall it.&lt;br /&gt;
* If you have Microsoft Visual C++ 2010 Redistributable installed (x86 and/or x64), [https://support.microsoft.com/en-us/help/2728613/s1023-error-when-you-install-the-directx-sdk-june-2010 you will need to uninstall it before installing DirectX SDK]. While installing Visual Studio, the Redistributable package(s) will be reinstalled for you automatically.&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
See [[Build the client with MSVC 2010 Express|Build preparation steps]] for installation instructions!&lt;br /&gt;
* [https://git-scm.com/download/win git] (recommended but not required)&lt;br /&gt;
* [https://foundry.openuru.org/gitblit/summary/?r=CWE-ou.git The CWE OpenUru source code]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - This will be in two downloads, you'll need to search for and download both &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
* [https://www.zlib.net/fossils/zlib-1.2.7.tar.gz zlib 1.2.7]&lt;br /&gt;
* [https://ftp-osl.osuosl.org/pub/libpng/src/archive/gz/libpng15/libpng-1.5.12.tar.gz libpng 1.5.12]&lt;br /&gt;
Newer versions of these libraries may work, but no guarantees are offered; these are what have been tested.&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
&amp;lt;u&amp;gt;The status URL:  &amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;(Optional) install git (accepting the default options)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Obtain CWE-OU source by one of these methods:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt; Use '''git clone''' with the repository link found on the webpage referenced above&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt; Click &amp;quot;tree&amp;quot; in the top menu of the webpage reference above, then click &amp;quot;zip&amp;quot; to download a ZIP archive&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;BR&amp;gt;&lt;br /&gt;
Install the DirectX SDK before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Install Visual Studio 2010 Express&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Update Visual Studio 2010 Express to SP1, plus security updates (run Windows Update a few times).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;.  The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;.  As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install PhysX SDK, and copy PhysX subdirectories from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Build Ogg and Vorbis&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.vsprops file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Repeat steps &amp;quot;d&amp;quot; through &amp;quot;n&amp;quot; for libvorbis_static and libvorbisfile. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy Ogg and Vorbis files to CWE &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the ogg and vorbis include directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rebuild the Speex 1.0.1 included in the CWE tree.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain precompiled binaries.  As this is security software, it is best (in my opinion) to compile it yourself from source.  You can choose either static or dynamic linking.&amp;lt;BR&amp;gt;  '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;  Copy the installed OpenSSL files to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build in-tree JPEG library&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio 2010 Command Prompt&amp;quot; and change to the &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build zlib and libpng&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select Add -&amp;gt;  Existing item&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzlib.c file&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Do the same step above for gzclose.c, gzread.c, and gzwrite.c&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open 'Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Preprocessor''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Remove the ''Z_SOLO'' directive from  ''Preprocessor Directives'' - Do this for both the LIB Release and LIB Debug configurations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the “libpng” project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select configuration “LIB Debug” in the popup menu at the top.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' and set ''Treat Warnings As Errors'' to ''No''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Code Generation'' on the left.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change the ''Runtime Library'' line to “Multi-threaded Debug DLL (/MDd)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the “LIB Release” configuration and set ''Runtime Library'' to “Multi-threaded DLL (/MD)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the above 7 steps for the other two projects “pngtest” and “zlib”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “LIB Debug” from the ''Solution Configurations'' popup menu in the toolbar, then ''Build'' &amp;gt; ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “LIB Release” configuration and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/libpn16.lib'' to ''libpngd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Release Library/libpn16.lib'' to ''libpng.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/zlib.lib'' to ''zlibd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3159</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3159"/>
		<updated>2020-08-27T03:04:56Z</updated>

		<summary type="html">&lt;p&gt;Marten: Improved instructions for obtaining source code, and fixed indentation issue&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
* If you have a version of Visual Studio later than 2010 installed, you may need to uninstall it.&lt;br /&gt;
* If you have Microsoft Visual C++ 2010 Redistributable installed (x86 and/or x64), [https://support.microsoft.com/en-us/help/2728613/s1023-error-when-you-install-the-directx-sdk-june-2010 you will need to uninstall it before installing DirectX SDK]. While installing Visual Studio, the Redistributable package(s) will be reinstalled for you automatically.&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
See [[Build the client with MSVC 2010 Express|Build preparation steps]] for installation instructions!&lt;br /&gt;
* [https://git-scm.com/download/win git] (recommended but not required)&lt;br /&gt;
* [https://foundry.openuru.org/gitblit/summary/?r=CWE-ou.git The CWE OpenUru source code]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - This will be in two downloads, you'll need to search for and download both &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
&amp;lt;u&amp;gt;The status URL:  &amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;(Optional) install git (accepting the default options)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Obtain CWE-OU source by one of these methods:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt; Use '''git clone''' with the repository link found on the webpage referenced above&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt; Click &amp;quot;tree&amp;quot; in the top menu of the webpage reference above, then click &amp;quot;zip&amp;quot; to download a ZIP archive&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;BR&amp;gt;&lt;br /&gt;
Install the DirectX SDK before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Install Visual Studio 2010 Express&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Update Visual Studio 2010 Express to SP1, plus security updates (run Windows Update a few times).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;.  The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;.  As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install PhysX SDK, and copy PhysX subdirectories from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Build Ogg and Vorbis&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.vsprops file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Repeat steps &amp;quot;d&amp;quot; through &amp;quot;n&amp;quot; for libvorbis_static and libvorbisfile. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy Ogg and Vorbis files to CWE &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the ogg and vorbis include directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rebuild the Speex 1.0.1 included in the CWE tree.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain precompiled binaries.  As this is security software, it is best (in my opinion) to compile it yourself from source.  You can choose either static or dynamic linking.&amp;lt;BR&amp;gt;  '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;  Copy the installed OpenSSL files to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build in-tree JPEG library&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio 2010 Command Prompt&amp;quot; and change to the &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build zlib and libpng&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select Add -&amp;gt;  Existing item&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzlib.c file&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Do the same step above for gzclose.c, gzread.c, and gzwrite.c&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open 'Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Preprocessor''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Remove the ''Z_SOLO'' directive from  ''Preprocessor Directives'' - Do this for both the LIB Release and LIB Debug configurations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the “libpng” project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select configuration “LIB Debug” in the popup menu at the top.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' and set ''Treat Warnings As Errors'' to ''No''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Code Generation'' on the left.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change the ''Runtime Library'' line to “Multi-threaded Debug DLL (/MDd)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the “LIB Release” configuration and set ''Runtime Library'' to “Multi-threaded DLL (/MD)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the above 7 steps for the other two projects “pngtest” and “zlib”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “LIB Debug” from the ''Solution Configurations'' popup menu in the toolbar, then ''Build'' &amp;gt; ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “LIB Release” configuration and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/libpn16.lib'' to ''libpngd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Release Library/libpn16.lib'' to ''libpng.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/zlib.lib'' to ''zlibd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3158</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3158"/>
		<updated>2020-08-27T02:41:49Z</updated>

		<summary type="html">&lt;p&gt;Marten: Added link to the source code&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
* If you have a version of Visual Studio later than 2010 installed, you may need to uninstall it.&lt;br /&gt;
* If you have Microsoft Visual C++ 2010 Redistributable installed (x86 and/or x64), [https://support.microsoft.com/en-us/help/2728613/s1023-error-when-you-install-the-directx-sdk-june-2010 you will need to uninstall it before installing DirectX SDK]. While installing Visual Studio, the Redistributable package(s) will be reinstalled for you automatically.&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
See [[Build the client with MSVC 2010 Express|Build preparation steps]] for installation instructions!&lt;br /&gt;
* [https://foundry.openuru.org/gitblit/r/CWE-ou.git The CWE OpenUru source code]&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - This will be in two downloads, you'll need to search for and download both &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
&amp;lt;u&amp;gt;The status URL:  &amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&amp;lt;li&amp;gt;Obtain CWE-OU source&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;BR&amp;gt;&lt;br /&gt;
Install the DirectX SDK before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Install Visual Studio 2010 Express&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Update Visual Studio 2010 Express to SP1, plus security updates (run Windows Update a few times).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;.  The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;.  As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install PhysX SDK, and copy PhysX subdirectories from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Build Ogg and Vorbis&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.vsprops file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Repeat steps &amp;quot;d&amp;quot; through &amp;quot;n&amp;quot; for libvorbis_static and libvorbisfile. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy Ogg and Vorbis files to CWE &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the ogg and vorbis include directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rebuild the Speex 1.0.1 included in the CWE tree.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain precompiled binaries.  As this is security software, it is best (in my opinion) to compile it yourself from source.  You can choose either static or dynamic linking.&amp;lt;BR&amp;gt;  '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;  Copy the installed OpenSSL files to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build in-tree JPEG library&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio 2010 Command Prompt&amp;quot; and change to the &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build zlib and libpng&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select Add -&amp;gt;  Existing item&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzlib.c file&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Do the same step above for gzclose.c, gzread.c, and gzwrite.c&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open 'Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Preprocessor''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Remove the ''Z_SOLO'' directive from  ''Preprocessor Directives'' - Do this for both the LIB Release and LIB Debug configurations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the “libpng” project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select configuration “LIB Debug” in the popup menu at the top.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' and set ''Treat Warnings As Errors'' to ''No''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Code Generation'' on the left.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change the ''Runtime Library'' line to “Multi-threaded Debug DLL (/MDd)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the “LIB Release” configuration and set ''Runtime Library'' to “Multi-threaded DLL (/MD)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the above 7 steps for the other two projects “pngtest” and “zlib”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “LIB Debug” from the ''Solution Configurations'' popup menu in the toolbar, then ''Build'' &amp;gt; ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “LIB Release” configuration and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/libpn16.lib'' to ''libpngd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Release Library/libpn16.lib'' to ''libpng.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/zlib.lib'' to ''zlibd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3157</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3157"/>
		<updated>2020-08-27T02:34:54Z</updated>

		<summary type="html">&lt;p&gt;Marten: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
* If you have a version of Visual Studio later than 2010 installed, you may need to uninstall it.&lt;br /&gt;
* If you have Microsoft Visual C++ 2010 Redistributable installed (x86 and/or x64), [https://support.microsoft.com/en-us/help/2728613/s1023-error-when-you-install-the-directx-sdk-june-2010 you will need to uninstall it before installing DirectX SDK]. While installing Visual Studio, the Redistributable package(s) will be reinstalled for you automatically.&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
See [[Build the client with MSVC 2010 Express|Build preparation steps]] for installation instructions!&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - This will be in two downloads, you'll need to search for and download both &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
&amp;lt;u&amp;gt;The status URL:  &amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&amp;lt;li&amp;gt;Obtain CWE-OU source&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;BR&amp;gt;&lt;br /&gt;
Install the DirectX SDK before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Install Visual Studio 2010 Express&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Update Visual Studio 2010 Express to SP1, plus security updates (run Windows Update a few times).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;.  The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;.  As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install PhysX SDK, and copy PhysX subdirectories from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Build Ogg and Vorbis&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.vsprops file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Repeat steps &amp;quot;d&amp;quot; through &amp;quot;n&amp;quot; for libvorbis_static and libvorbisfile. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy Ogg and Vorbis files to CWE &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the ogg and vorbis include directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rebuild the Speex 1.0.1 included in the CWE tree.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain precompiled binaries.  As this is security software, it is best (in my opinion) to compile it yourself from source.  You can choose either static or dynamic linking.&amp;lt;BR&amp;gt;  '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;  Copy the installed OpenSSL files to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build in-tree JPEG library&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio 2010 Command Prompt&amp;quot; and change to the &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build zlib and libpng&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select Add -&amp;gt;  Existing item&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzlib.c file&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Do the same step above for gzclose.c, gzread.c, and gzwrite.c&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open 'Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Preprocessor''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Remove the ''Z_SOLO'' directive from  ''Preprocessor Directives'' - Do this for both the LIB Release and LIB Debug configurations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the “libpng” project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select configuration “LIB Debug” in the popup menu at the top.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' and set ''Treat Warnings As Errors'' to ''No''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Code Generation'' on the left.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change the ''Runtime Library'' line to “Multi-threaded Debug DLL (/MDd)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the “LIB Release” configuration and set ''Runtime Library'' to “Multi-threaded DLL (/MD)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the above 7 steps for the other two projects “pngtest” and “zlib”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “LIB Debug” from the ''Solution Configurations'' popup menu in the toolbar, then ''Build'' &amp;gt; ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “LIB Release” configuration and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/libpn16.lib'' to ''libpngd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Release Library/libpn16.lib'' to ''libpng.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/zlib.lib'' to ''zlibd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3156</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3156"/>
		<updated>2020-08-27T02:20:09Z</updated>

		<summary type="html">&lt;p&gt;Marten: Revised installation order and added Before you Begin steps.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Before you begin ==&lt;br /&gt;
* If you have a version of Visual Studio later than 2010 installed, you may need to uninstall it.&lt;br /&gt;
* If you have Microsoft Visual C++ 2010 Redistributable installed (x86 and/or x64), [https://support.microsoft.com/en-us/help/2728613/s1023-error-when-you-install-the-directx-sdk-june-2010 you will need to uninstall it before installing DirectX SDK]. While installing Visual Studio below, the Redistributable package(s) will be reinstalled for you automatically.&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile (recommended to install in this order) ==&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - This will be in two downloads, you'll need to search for and download both &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
&amp;lt;u&amp;gt;The status URL:  &amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&amp;lt;li&amp;gt;Obtain CWE-OU source&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;BR&amp;gt;&lt;br /&gt;
Do this before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Install Visual Studio 2010 Express&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Update Visual Studio 2010 Express to SP1, plus security updates (run Windows Update a few times).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;.  The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;.  As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install PhysX SDK, and copy PhysX subdirectories from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Build Ogg and Vorbis&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.vsprops file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Repeat steps &amp;quot;d&amp;quot; through &amp;quot;n&amp;quot; for libvorbis_static and libvorbisfile. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy Ogg and Vorbis files to CWE &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the ogg and vorbis include directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rebuild the Speex 1.0.1 included in the CWE tree.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain precompiled binaries.  As this is security software, it is best (in my opinion) to compile it yourself from source.  You can choose either static or dynamic linking.&amp;lt;BR&amp;gt;  '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;  Copy the installed OpenSSL files to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build in-tree JPEG library&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio 2010 Command Prompt&amp;quot; and change to the &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build zlib and libpng&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select Add -&amp;gt;  Existing item&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzlib.c file&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Do the same step above for gzclose.c, gzread.c, and gzwrite.c&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open 'Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Preprocessor''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Remove the ''Z_SOLO'' directive from  ''Preprocessor Directives'' - Do this for both the LIB Release and LIB Debug configurations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the “libpng” project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select configuration “LIB Debug” in the popup menu at the top.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' and set ''Treat Warnings As Errors'' to ''No''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Code Generation'' on the left.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change the ''Runtime Library'' line to “Multi-threaded Debug DLL (/MDd)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the “LIB Release” configuration and set ''Runtime Library'' to “Multi-threaded DLL (/MD)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the above 7 steps for the other two projects “pngtest” and “zlib”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “LIB Debug” from the ''Solution Configurations'' popup menu in the toolbar, then ''Build'' &amp;gt; ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “LIB Release” configuration and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/libpn16.lib'' to ''libpngd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Release Library/libpn16.lib'' to ''libpng.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/zlib.lib'' to ''zlibd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3155</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3155"/>
		<updated>2020-08-27T00:25:45Z</updated>

		<summary type="html">&lt;p&gt;Marten: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - you'll need to search for &amp;quot;Visual Studio 2010 VC Express&amp;quot; and &amp;quot;Visual Studio 2010 Service Pack 1&amp;quot;.&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
&amp;lt;u&amp;gt;The status URL:  &amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&amp;lt;li&amp;gt;Obtain CWE-OU source&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;BR&amp;gt;&lt;br /&gt;
Do this before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Install Visual Studio 2010 Express&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Update Visual Studio 2010 Express to SP1, plus security updates (run Windows Update a few times).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;.  The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;.  As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install PhysX SDK, and copy PhysX subdirectories from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Build Ogg and Vorbis&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.vsprops file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Repeat steps &amp;quot;d&amp;quot; through &amp;quot;n&amp;quot; for libvorbis_static and libvorbisfile. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy Ogg and Vorbis files to CWE &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the ogg and vorbis include directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rebuild the Speex 1.0.1 included in the CWE tree.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain precompiled binaries.  As this is security software, it is best (in my opinion) to compile it yourself from source.  You can choose either static or dynamic linking.&amp;lt;BR&amp;gt;  '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;  Copy the installed OpenSSL files to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build in-tree JPEG library&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio 2010 Command Prompt&amp;quot; and change to the &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build zlib and libpng&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select Add -&amp;gt;  Existing item&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzlib.c file&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Do the same step above for gzclose.c, gzread.c, and gzwrite.c&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open 'Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Preprocessor''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Remove the ''Z_SOLO'' directive from  ''Preprocessor Directives'' - Do this for both the LIB Release and LIB Debug configurations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the “libpng” project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select configuration “LIB Debug” in the popup menu at the top.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' and set ''Treat Warnings As Errors'' to ''No''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Code Generation'' on the left.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change the ''Runtime Library'' line to “Multi-threaded Debug DLL (/MDd)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the “LIB Release” configuration and set ''Runtime Library'' to “Multi-threaded DLL (/MD)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the above 7 steps for the other two projects “pngtest” and “zlib”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “LIB Debug” from the ''Solution Configurations'' popup menu in the toolbar, then ''Build'' &amp;gt; ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “LIB Release” configuration and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/libpn16.lib'' to ''libpngd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Release Library/libpn16.lib'' to ''libpng.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/zlib.lib'' to ''zlibd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3154</id>
		<title>Build the client with MSVC 2010 Express</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Build_the_client_with_MSVC_2010_Express&amp;diff=3154"/>
		<updated>2020-08-27T00:21:44Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* Items needed to compile */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UruDocProj}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
This document provides steps to build the CWE client with MSVC 2010 SP1 Express.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Items needed to compile ==&lt;br /&gt;
* [https://my.visualstudio.com/Downloads?q=visual%20studio%202010&amp;amp;wt.mc_id=o~msft~vscom~older-downloads Microsoft Visual Studio 2010 SP1 Express] - you'll need to search for &amp;quot;Visual Studio 2010 VC Express&amp;quot;.&lt;br /&gt;
* [https://www.microsoft.com/en-us/download/details.aspx?id=6812 DirectX 9.0c SDK (June 2010)]&lt;br /&gt;
* [https://www.openssl.org/source/openssl-1.0.2t.tar.gz OpenSSL 1.0.2t]&lt;br /&gt;
* [http://downloads.xiph.org/releases/ogg/libogg-1.3.2.zip libogg-1.3.2]&lt;br /&gt;
* [http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.6.zip libvorbis-1.3.6]&lt;br /&gt;
* [https://www.openal.org/downloads/OpenAL11CoreSDK.zip OpenAL v1.1 SDK]&lt;br /&gt;
* [http://developer.download.nvidia.com/PhysX/2.6.4/PhysX_2.6.4_SDK_Core.exe Ageia PhysX 2.6.4 Core SDK]&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&lt;br /&gt;
* This guide assumes you are going to use the 7.0A SDK installed with Visual Studio 2010, and are using a 64 bit Windows install.&lt;br /&gt;
* You can upgrade to a newer version of Speex if you like, but you will need to fix the Speex VS2010 projects first (by removing the architectures we do not have from the Speex project files).&lt;br /&gt;
* Libogg 1.3.2 was used because xiph removed the VS2010 projects from 1.3.3 and above.&lt;br /&gt;
* The client has physics bugs (cannot step off the Kadish elevator, and such) when compiled with PhysX 2.6.4 (the only available version).  If you can obtain it, PhysX 2.6.0 is the version Cyan used, and clients compiled with it do not seem to have these physics bugs.&lt;br /&gt;
* You must use a 2.6.x version of PhysX for CWE, because the cooked mesh format was changed in PhysX 2.7.x and later.&lt;br /&gt;
* All libraries are compiled with &amp;quot;Whole Program Optimization&amp;quot; turned off.&lt;br /&gt;
* Release version libraries are compiled as &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&lt;br /&gt;
* Debug version libraries are compiled as &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&lt;br /&gt;
* Crypto keys are located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\NucleusLib\pnNetBase&amp;quot;.  Edit the *.hpp files with a text editor to replace Cyan's keys with your own server's keys.  Always clean your solution and rebuild when you change crypto keys, to make sure they are updated.&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Server hostnames, IP addresses, and ports are located in the following files:&lt;br /&gt;
&amp;lt;u&amp;gt;The status URL:  &amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plUruLauncher/Main.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The auth/gatekeeper address&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/Private/pnNbSrvs.cpp&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;The default client port&amp;lt;/u&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;quot;CWE\MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/NucleusLib/pnNetBase/pnNbConstant.h&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build preparation steps ==&lt;br /&gt;
&amp;lt;li&amp;gt;Obtain CWE-OU source&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the DirectX 9.0c SDK and copy it to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\DX9.0c&amp;quot;.&amp;lt;BR&amp;gt;&lt;br /&gt;
Do this before you install VS2010 Express, or the DirectX SDK install will throw error S1023, due to a newer version of the C++ 2010 redistributables being installed.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      DX9.0c&lt;br /&gt;
        include&lt;br /&gt;
        Lib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Install Visual Studio 2010 Express&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Update Visual Studio 2010 Express to SP1, plus security updates (run Windows Update a few times).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the include and lib directories from the SDK installed with VS2010 SP1 Express to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PlatformSDK&amp;quot;.  The directory where the SDK resides will most likely be &amp;quot;Program Files (x86)\Microsoft SDKs\Windows\v7.0A&amp;quot;.  As the SDK is in our path, this step is probably not necessary but we will do it for consistency.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
StaticSDKs&lt;br /&gt;
  Win32&lt;br /&gt;
    PlatformSDK&lt;br /&gt;
      include&lt;br /&gt;
      lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install the OpenAL SDK and copy the include and lib directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenAL 1.1 with EFX SDK&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      OpenAL 1.1 with EFX SDK&lt;br /&gt;
        include&lt;br /&gt;
        libs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Install PhysX SDK, and copy PhysX subdirectories from &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\SDKs&amp;quot; and &amp;quot;Program Files (x86)\AGEIA Technologies\AGEIA PhysX SDK\v2.6.4\Bin&amp;quot; to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\PhysX&amp;quot;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    Win32&lt;br /&gt;
      PhysX&lt;br /&gt;
        Bin&lt;br /&gt;
        Cooking&lt;br /&gt;
        Docs&lt;br /&gt;
        Foundation&lt;br /&gt;
        Framework&lt;br /&gt;
        lib&lt;br /&gt;
        ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Build Ogg and Vorbis&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Create a directory and extract Ogg and Vorbis archives to it.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
oggvorbis&lt;br /&gt;
  libogg-1.3.2&lt;br /&gt;
  libvorbis-1.3.6&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Change directory to &amp;quot;libvorbis-1.3.6\win32\vs2010&amp;quot; and edit the libogg.vsprops file.  Make sure the &amp;quot;LIBOGG_VERSION&amp;quot; value matches your version of Ogg (1.3.2 in this document).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libogg-1.3.2\win32\VS2010\libogg_static.sln&amp;quot; in the Visual Studio IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open &amp;quot;libvorbis-1.3.6\win32\VS2010\vorbis_static.sln&amp;quot; in the Visual Studio IDE. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Repeat steps &amp;quot;d&amp;quot; through &amp;quot;n&amp;quot; for libvorbis_static and libvorbisfile. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy Ogg and Vorbis files to CWE &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the ogg and vorbis include directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include&amp;quot;.  It is okay to let it overwrite.&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libogg-1.3.2\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories into &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy the &amp;quot;libvorbis-1.3.6\win32\VS2010\Win32\Release&amp;quot; and &amp;quot;Debug&amp;quot; directories to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
    win32&lt;br /&gt;
      xiph&lt;br /&gt;
        include&lt;br /&gt;
          ogg&lt;br /&gt;
          vorbis&lt;br /&gt;
        lib&lt;br /&gt;
          Debug&lt;br /&gt;
          Release&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rebuild the Speex 1.0.1 included in the CWE tree.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\libspeex.sln in the Visual Studio 2010 IDE, and convert.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left and select &amp;quot;Release&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on project in the solution explorer and select properties.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General &amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded DLL (/MD)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on &amp;quot;Apply&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click on configuration drop-down on the upper left of the properties page and select &amp;quot;Debug&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;Configuration Properties -&amp;gt; General&amp;quot; in the left pane, and then select &amp;quot;Whole Program Optimization&amp;quot; in the right pane, and select &amp;quot;No Whole Program Optimization&amp;quot; from the drop-down.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select &amp;quot;C/C++ -&amp;gt; Code Generation&amp;quot; in the left pane, and select &amp;quot;Runtime Library&amp;quot; and verify it is set to &amp;quot;Multi-threaded Debug DLL (/MDd)&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Click &amp;quot;Apply&amp;quot; and then &amp;quot;OK&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Release&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; On the IDE toolbar, select &amp;quot;Debug&amp;quot; from the drop down. then right click on the project in the solution explorer and select &amp;quot;Build&amp;quot;. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy the headers (.h files) from CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\libspeex to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\include\speex&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Release\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Release&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Copy CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\speex-1.0.1\win32\libspeex\Debug\libspeex.lib to CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\xiph\lib\Debug&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Compile and install OpenSSL (see [[Build OpenSSL with MS Visual C++]]), or obtain precompiled binaries.  As this is security software, it is best (in my opinion) to compile it yourself from source.  You can choose either static or dynamic linking.&amp;lt;BR&amp;gt;  '''Note:''' If you link it dynamically, it will cause the Uru client to require the OpenSSL DLLs to be present in the client directory or in the system path.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;  Copy the installed OpenSSL files to &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\Win32\OpenSSL&amp;quot;.&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Directory structure in the CWE tree will look like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  StaticSDKs&lt;br /&gt;
     Win32&lt;br /&gt;
       OpenSSL&lt;br /&gt;
         bin&lt;br /&gt;
         include&lt;br /&gt;
           openssl&lt;br /&gt;
         lib&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build in-tree JPEG library&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open &amp;quot;Visual Studio 2010 Command Prompt&amp;quot; and change to the &amp;quot;CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\jpeg-8c-rgba directory.&amp;quot;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy makefile.vc to makefile.nmake&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy jconfig.vc to jconfig.h&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Run ''nmake nodebug=1 -f makefile.nmake''.  This will build the library in non-debug mode.  If you use a debug library, the linker will complain when we link the client executable.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build zlib and libpng&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the zlib archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/zlib''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Extract the files in the libpng archive to ''MOULOpenSourceClientPlugin/StaticSDKs/XPlatform/png''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open ''png/projects/vstudio/vstudio.sln'' in the Visual Studio 2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;The VS2010 zlib project file distributed in the png archive is set to build for embedded environments.  We need to reconfigure it.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:lower-latin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project tree in the solution explorer.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select Add -&amp;gt;  Existing item&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Browse to the zlib source directory (CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib) and select the gzlib.c file&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Do the same step above for gzclose.c, gzread.c, and gzwrite.c&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right click on the zlib project and select ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Open 'Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Preprocessor''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Remove the ''Z_SOLO'' directive from  ''Preprocessor Directives'' - Do this for both the LIB Release and LIB Debug configurations.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Right-click on the “libpng” project in the ''Solution Explorer'' and choose ''Properties''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select configuration “LIB Debug” in the popup menu at the top.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' and set ''Treat Warnings As Errors'' to ''No''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select ''Configuration Properties'' &amp;gt; ''C/C++'' &amp;gt; ''Code Generation'' on the left.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change the ''Runtime Library'' line to “Multi-threaded Debug DLL (/MDd)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select &amp;quot;C/C++ -&amp;gt; Optimization&amp;quot; in the left pane, and set &amp;quot;Whole Program Optimization&amp;quot; in the right pane to &amp;quot;No&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Choose the “LIB Release” configuration and set ''Runtime Library'' to “Multi-threaded DLL (/MD)”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Repeat the above 7 steps for the other two projects “pngtest” and “zlib”.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select “LIB Debug” from the ''Solution Configurations'' popup menu in the toolbar, then ''Build'' &amp;gt; ''Build Solution''.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Select the “LIB Release” configuration and build the solution.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/libpn16.lib'' to ''libpngd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Release Library/libpn16.lib'' to ''libpng.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\png\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Rename ''png/projects/vstudio/Debug Library/zlib.lib'' to ''zlibd.lib'' and copy it to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Copy ''png/projects/vstudio/Release Library/zlib.lib'' to ''CWE\MOULOpenSourceClientPlugin\StaticSDKs\XPlatform\zlib\lib''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Required source code changes for newer version of DirectX SDK ==&lt;br /&gt;
Since we are using a newer version of the DirectX SDK (which supports Visual Studio 2010 Express), we will need to change the source code slightly.  We are not changing this in the source tree, since OpenUru is still using the original libraries and VS2003.&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plPipeline\plDXPipeline.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;DXGetErrorString9&amp;quot; to &amp;quot;DXGetErrorString&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plWavFile.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; In file &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\PubUtilLib\plAudio\plEAXEffects.cpp&amp;quot;:&amp;lt;BR&amp;gt;&lt;br /&gt;
Remove the &amp;quot;#include &amp;lt;dmusici.h&amp;gt;&amp;quot; line&amp;lt;BR&amp;gt;&lt;br /&gt;
Change &amp;quot;#include &amp;lt;dxerr9.h&amp;gt;&amp;quot; to &amp;quot;#include &amp;lt;dxerr.h&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
== Required source changes for Visual Studio 2010 Express ==&lt;br /&gt;
&amp;lt;li&amp;gt;We do not have MFC with VS2010 SP1 Express, so we need to replace the first reference to afxres.h.  The client portion of CWE does not use MFC (I believe the MAX plugin does), so we can make this replacement.&amp;lt;/li&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Note: If you are compiling with VS2010 Professional or greater, you do *not* need to make these edits.  Only the Express edition excludes MFC.&amp;lt;/b&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Edit '''plClient.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Sources\Plasma\Apps\plClient\res\&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;edit '''plUruLauncher.rc''' file located in &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\Apps\plUruLauncher.rc&amp;quot;&amp;lt;BR&amp;gt;&lt;br /&gt;
This is the same change we just made in the previous file.&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Before'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''After'''&amp;lt;BR&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Microsoft Visual C++ generated resource script.&lt;br /&gt;
//&lt;br /&gt;
#include &amp;quot;resource.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define APSTUDIO_READONLY_SYMBOLS&lt;br /&gt;
/////////////////////////////////////////////////////////////////////////////&lt;br /&gt;
//&lt;br /&gt;
// Generated from the TEXTINCLUDE 2 resource.&lt;br /&gt;
//&lt;br /&gt;
//#include &amp;quot;afxres.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;windows.h&amp;gt;&lt;br /&gt;
#define IDC_STATIC (-1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Build the client ==&lt;br /&gt;
Now that the prep is done, you can actually build the client.&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Open the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\MSVC10Projects\Plasma\Apps\AllClient\AllClient.sln&amp;quot; in the VS2010 IDE.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Select the type of build you want from the dropdown on the IDE toolbar.&lt;br /&gt;
* Release&lt;br /&gt;
* Release_Internal&lt;br /&gt;
* Debug&lt;br /&gt;
* Debug_Internal&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Right click on the &amp;quot;AllClient&amp;quot; project and select &amp;quot;Build&amp;quot;.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
Completed builds are copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\test&amp;quot; directory.&lt;br /&gt;
&amp;lt;BR&amp;gt;&lt;br /&gt;
'''Note:''' You '''*must*''' make sure your client is using the same versions of the PhysX DLLs that you built with.  They are not compatible from version to version.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If, after building the client, you require the server prep tools (plFileSecure, plFileEncrypt, plPythonPak), right click on those specific projects and click &amp;quot;Build&amp;quot;.&amp;lt;BR&amp;gt; &lt;br /&gt;
The compiled files will be copied into the &amp;quot;CWE\MOULOpenSourceClientPlugin\Plasma20\tools&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cyan_Worlds]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Instancing_-_Bookmarks&amp;diff=2968</id>
		<title>Instancing - Bookmarks</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Instancing_-_Bookmarks&amp;diff=2968"/>
		<updated>2016-12-22T04:51:50Z</updated>

		<summary type="html">&lt;p&gt;Marten: Correct minor factual error - banners are in the library, not the museum&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{draft}}&lt;br /&gt;
Note: This page is a work in progress as I detail thoughts on my Instancing proposal.&lt;br /&gt;
-- Marten&lt;br /&gt;
&lt;br /&gt;
TODO:&lt;br /&gt;
* Identify and add any missing Location/Link pairs&lt;br /&gt;
* Add detailed linking information for remaining Ages&lt;br /&gt;
* Identify how existing Yeesha bookmarks work with the proposal&lt;br /&gt;
* Discuss issues and possible solutions to [http://forums.openuru.org/viewtopic.php?p=799#p799 Kenguin's Issues List]&lt;br /&gt;
* Note which instances are &amp;quot;default&amp;quot; in which situations&lt;br /&gt;
* Resolve any lingering inconsistencies&lt;br /&gt;
* Begin related proposal for [[KI Interface:Group Management]] &lt;br /&gt;
&lt;br /&gt;
{{TOClimit|2}}&lt;br /&gt;
&lt;br /&gt;
==Objective==&lt;br /&gt;
Replace the Instancing system with a consistent model that gives players greater control.  Under the MOUL model, some areas of the game could only be shared by neighbors; under the proposed model, players will be able to invite friends to share all areas of the game.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
* Performance Improvements for large groups in one Age&lt;br /&gt;
* Queuing system for high-population areas&lt;br /&gt;
* Grouping (&amp;quot;Party&amp;quot;) System implemented into KI&lt;br /&gt;
&lt;br /&gt;
==Origin of Concept==&lt;br /&gt;
First, this proposal is an attempt to incorporate the model of Instancing used in other popular multiplayer online games.  A detailed description of Instancing as it applies in most MMOs can be found at http://en.wikipedia.org/wiki/Instance_dungeons, but the key idea is that players do not need to be independently invited to every instance they wish to visit together; players may ally themselves with friends to form a group or party such that all members automatically enter an instance together.&lt;br /&gt;
&lt;br /&gt;
Second, this proposal is inspired by some unused assets hidden in the game files for Uru.  One of the more intriguing assets is series of [http://mystonline.com/forums/viewtopic.php?t=16333 three hanging banners] (one blue, one red, and one purple) that can appear in the Library area of Ae'gura.  Each of the pedestals under the banners has a set of matching ribbons, although not all pedestals have all ribbons.  The sequence of books and ribbons was as follows:&lt;br /&gt;
* Gahreesen: Red and Blue&lt;br /&gt;
* Teledahn: Purple, Red, Blue&lt;br /&gt;
* Kadish: Purple and Blue&lt;br /&gt;
* Ahnonay Cathedral: Purple and Blue&lt;br /&gt;
* Uran Silo: Purple and Blue&lt;br /&gt;
Each banner has [http://mystonline.com/forums/viewtopic.php?p=256592#256592 one of two symbols] on it.  The first symbol is named &amp;quot;Yeesha's Story&amp;quot; and it appears on the blue and purple banners.  The second symbol is named &amp;quot;Journey Story&amp;quot; and appears on the red banner.  This Bookmark Instance proposal is based upon personal musings of how these ribbons may have been intended to work.&lt;br /&gt;
&lt;br /&gt;
== Application: Rules ==&lt;br /&gt;
&lt;br /&gt;
=== Acquisition and Use ===&lt;br /&gt;
&lt;br /&gt;
A set of bookmarks are acquired by the player at the beginning of the game, perhaps in Cleft as an alternative to the Relto book, or with a Relto book.  Some sort of tutorial will need to be added to explain the function of the bookmarks.&lt;br /&gt;
&lt;br /&gt;
The bookmarks may be applied to books and Bahro stones; they may not, for obvious reasons, be applied to portals of more ethereal nature.&lt;br /&gt;
&lt;br /&gt;
Two bookmark ribbons appear when the player lifts a book or Bahro stone to examine it.  The bookmarks function in this manner:&lt;br /&gt;
* Solo Journey (solo hand symbol) - when active, the player will link to his or her own private Age.  The Solo Journey bookmark should always be available.&lt;br /&gt;
* Group Journey (paired hand symbols) - when active, the player and his or her companions will link to the same Age, which will be the private Age of the &amp;quot;expedition leader.&amp;quot;  The Group Journey bookmark is only available for a book or Bahro Stone if the player has joined a group, and the leader must have collected and unlocked the Age in his or her Relto.&lt;br /&gt;
* No bookmark (drc symbol) - when neither bookmark is active, the player will link to the authentic (public) instance of the Age.  This instance may be unavailable if it is at player capacity (see &amp;quot;Managing Access to Full Areas&amp;quot; below), and although this proposal does not mandate it, the public Age might also be unavailable if the player has not completed one or more tasks in his or her private version of the Age.&lt;br /&gt;
&lt;br /&gt;
There will few exceptions where the bookmarks do not apply in the above manner.&lt;br /&gt;
&lt;br /&gt;
Here is a comparison of the how this model replaces the sharing of Instances as it worked in Myst Online.&lt;br /&gt;
&lt;br /&gt;
In Myst Online, a player could reach a friend's Age by one of these methods:&lt;br /&gt;
* Meet the friend, link to the friend's Relto, then pull the unlocked book from the bookshelf&lt;br /&gt;
* Meet the friend at a copy of the book in a public space.  Accept a sharing of the book from the friend.&lt;br /&gt;
* Receive an invitation from the friend.  Link to Nexus, and access the book.&lt;br /&gt;
&lt;br /&gt;
In this proposal, a player can reach a friend's Age by:&lt;br /&gt;
* Join a group where the friend is leader.  Use the Group Journey bookmark with ''any'' book or Bahro stone that links to the friend's collected and unlocked Age.&lt;br /&gt;
&lt;br /&gt;
=== The Authentic (Public) Age ===&lt;br /&gt;
&lt;br /&gt;
The Authentic instance of an Age is the legitimate place, typically unmodified by Bahro or Yeesha, open for all explorers.  This version of the Age generally lacks rewards.  With few exceptions, players will not be able to obtain relto pages, clothing, or puzzle rings from the authentic instance.  These Ages are places to hang out, explore, and have parties without needing to invite anyone.&lt;br /&gt;
&lt;br /&gt;
=== The Journey (Private) Age ===&lt;br /&gt;
&lt;br /&gt;
The Journey Age is the private instance controlled by an individual or by the leader of a group of explorers who have banded together.  The Journey Age contains the Bahro doors, cloths, and rewards that represent progress in the game.&lt;br /&gt;
&lt;br /&gt;
=== Privacy Control ===&lt;br /&gt;
&lt;br /&gt;
When in a group, the tab at the top of a book in the leader's Relto bookshelf will enable or disable the group journey bookmark for all links to that Age.  Consequently, if the leader has not acquired a book, any group members using that book will find the group bookmark disabled for that Age.&lt;br /&gt;
&lt;br /&gt;
=== Managing Access to Full Areas ===&lt;br /&gt;
&lt;br /&gt;
The Bookmark Instancing system depends upon some new or extended method of managing access to high-population areas.  Though perhaps deserving of its own proposal, here are a few comments on such a method.&lt;br /&gt;
&lt;br /&gt;
In Prologue and in Myst Online, access to the &amp;quot;real&amp;quot; D'ni City was controlled through the Nexus.  Direct linking to the city was not possible; the City books in Relto &amp;amp; Kadish Tolesa and the City Bahro Stone in Neighborhood would link players to a Neighborhood-instanced City.  (There was a bug  in Myst Online that allowed players to circumvent the intended behavior and link to the main city, but that is not relevant to the discussion of how Cyan meant for the system to work.)  When it worked, this system prevented the city from becoming overcrowded.&lt;br /&gt;
&lt;br /&gt;
The original system did not provide a way for players to know when an empty spot had opened in the City.  Furthermore, the Bookmark Instancing proposal complicates matters by permitting players to link to public areas from any book - not just Nexus controlled books.&lt;br /&gt;
&lt;br /&gt;
For the Bookmarks proposal to be minimally viable, when the Public instance of an Age is full, the player should not be permitted to link to the that instance, even if he or she has an open book leading to that place.  (If an In-Cavern reason is desired for being unable to link, it could simply be that when an area is too crowded, it is not safe to link into that area, and perhaps the link becomes unstable.)  The link in the book could appear as a swirling black void, unless one of Yeesha's bookmarks is applied.&lt;br /&gt;
&lt;br /&gt;
This minimal system still leaves much to be desired.  A better system would permit background downloading of an Age as well as for waiting on an empty spot in a filled-to-maximum-capacity area.  Players attempting to use a book linking to a full area would be notified that they are unable to link to the Age (for whatever reason).  The player would be given the option to be notified later when the Age is available.  If the Age is downloaded but the public area is full, the player could also still link to a private instance.&lt;br /&gt;
&lt;br /&gt;
An even more advanced solution would introducing queuing, and could permit a player to immediately link to an area that he or she has been waiting to visit.  However, this solution is likely to be unsatisfactory to players who want canon rules enforced on actual gameplay, rather than &amp;quot;ICly&amp;quot; explaining that they had linked back to Relto first before linking to the destination Age.&lt;br /&gt;
&lt;br /&gt;
== Application: Specifics (List of Locations and Age Links) ==&lt;br /&gt;
&lt;br /&gt;
=== Self ===&lt;br /&gt;
* Relto&lt;br /&gt;
** There is no single &amp;quot;authentic&amp;quot; original Relto.  Each Relto is its own unique place, and so there is no need for a Solo Journey bookmark with this book.&lt;br /&gt;
** When the player is part of a group, as group leader, he or she can control whether people can link to his or her Relto by manipulating the Group bookmark in the Relto book.  This will enable or disable the Group bookmark in group members' Relto books.  If the player is not a member of a group, the Group bookmark does not appear.&lt;br /&gt;
&lt;br /&gt;
=== Relto===&lt;br /&gt;
*Neighborhood&lt;br /&gt;
** Each Neighborhood is considered a public place.  No private instances exists for these books.  The Solo and Group bookmarks do not appear when opening the Neighborhood book in Relto, and all links take the player to the neighborhood for which the player is a member.&lt;br /&gt;
*Nexus&lt;br /&gt;
** Nexus is a public place that operates in a way that prevents two explorers from occupying the same &amp;quot;cell.&amp;quot;  The Solo and Group bookmarks do not appear when opening the Nexus book.&lt;br /&gt;
*Ae'gura (many links)&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Cleft&lt;br /&gt;
** Book only available after Original Journey Ages are complete.  Authentic, Solo Journey, and Group Journey are available.  Dropping through the cleft in Relto to complete Original Journey will take the player to a Solo Journey Cleft.  Solo/Group Journey Cleft may be necessary to complete puzzles e.g. link to K'veer.&lt;br /&gt;
*Gahreesen&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.  Authentic Gahreesen might be similar to Neighborhood-instanced Gahreesen from Myst Online.&lt;br /&gt;
*Teledahn&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Kadish Tolesa&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Eder Gira&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Eder Kemo&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Negilahn/Dereno/Payiferen/Tetsonot&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Er'cana&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Ahnonay Cathedral&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Ahnonay&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Minkata&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.  Authentic Minkata might be Nighttime only and lacking Bahro stones, or could still be manipulated but would lack symbols&lt;br /&gt;
*Jalak Dador&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Myst&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available, although Authentic could probably become cramped quickly if only the Library is accessible.&lt;br /&gt;
&lt;br /&gt;
===Neighborhood===&lt;br /&gt;
*Gahreesen&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.  See notes for Relto.&lt;br /&gt;
*Eder Delin&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.  Solo Journey would still include Bahro doors but would obviously not be solvable.&lt;br /&gt;
*Eder Tsogal&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.  Solo Journey would still include Bahro doors but would obviously not be solvable.&lt;br /&gt;
*Great Zero&lt;br /&gt;
:In Prologue, Great Zero was a Nexus link.  Players linking to Great Zero found themselves in a private instance.&lt;br /&gt;
&lt;br /&gt;
:In MOUL, Great Zero was moved to the Neighborhood so that neighbors could gather at the Great Zero.  Unfortunately, being able to link from Neighborhood to Great Zero violates the rule against intra-Age linking.&lt;br /&gt;
&lt;br /&gt;
:Although this Proposal does not mandate it, with Bookmark Instancing, players could link from Nexus into the public Great Zero, a group Great Zero, or a totally private Great Zero by using the appropriate Instance bookmark; maintaining the book in the Neighborhood is no longer needed for group Great Zero gatherings.  However, if the book is moved to Nexus, the stained glass art for Great Zero no longer has a home.&lt;br /&gt;
&lt;br /&gt;
* Great Stair Bahro Stone&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
&lt;br /&gt;
===Nexus===&lt;br /&gt;
* City Links&lt;br /&gt;
* All Ages available from Relto (except Nexus itself)&lt;br /&gt;
* Watcher's Sanctuary&lt;br /&gt;
* Kirel&lt;br /&gt;
* Guild Pubs&lt;br /&gt;
&lt;br /&gt;
Although not mandated by this proposal, the KI and Nexus could interact according to these rules:  Ages visited with a KI would be added to the list of books available through Nexus.  Ages visited before picking up the KI would not be added.  &amp;quot;Unapproved Ages&amp;quot; might also not be added (as the book would not be added to the Nexus library), and the KI could display ??? while in these Ages (as it would not know the name to display).&lt;br /&gt;
&lt;br /&gt;
===D'ni===&lt;br /&gt;
====Ae'gura====&lt;br /&gt;
*Nexus&lt;br /&gt;
*Ferry: Teledahn Dock Bahro Stone&lt;br /&gt;
*Takotah: Descent Bahro Stone&lt;br /&gt;
*Museum: Negilahn&lt;br /&gt;
*Museum: Dereno&lt;br /&gt;
*Museum: Payiferen&lt;br /&gt;
*Museum: Tetsonot&lt;br /&gt;
*Gallery: Kadish Tolesa&lt;br /&gt;
*Library: Minkata&lt;br /&gt;
*Library: Jalak Dador&lt;br /&gt;
*Library: Kadish Tolesa Bahro Stone&lt;br /&gt;
&lt;br /&gt;
====Baron's Office====&lt;br /&gt;
*Teledahn&lt;br /&gt;
*Teledahn Mushroom Bahro Stone&lt;br /&gt;
&lt;br /&gt;
====Spyroom====&lt;br /&gt;
*Teledahn&lt;br /&gt;
*Phil's Relto&lt;br /&gt;
&lt;br /&gt;
====Watcher's Sanctuary====&lt;br /&gt;
*Er'cana&lt;br /&gt;
*Ahnonay Cathedral&lt;br /&gt;
&lt;br /&gt;
====K'veer====&lt;br /&gt;
*Nexus&lt;br /&gt;
*Myst&lt;br /&gt;
&lt;br /&gt;
====Uran Silo====&lt;br /&gt;
*Er'cana&lt;br /&gt;
&lt;br /&gt;
===Gahreesen===&lt;br /&gt;
*Neighborhood (Balcony) Bahro Stone&lt;br /&gt;
*D'ni (Ae'gura Balcony 1) Bahro Stone&lt;br /&gt;
*Nexus&lt;br /&gt;
*Wall Nexus&lt;br /&gt;
*Teledahn&lt;br /&gt;
&lt;br /&gt;
===Teledahn===&lt;br /&gt;
*D'ni (Baron's Office)&lt;br /&gt;
*D'ni (Spyroom) - book or stone?&lt;br /&gt;
*Gahreesen Bahro Stone&lt;br /&gt;
&lt;br /&gt;
===Kadish Tolesa===&lt;br /&gt;
*D'ni (Ae'gura Balcony 2) Bahro Stone&lt;br /&gt;
*D'ni (Ae'gura Gallery)&lt;br /&gt;
*Kadish Tolesa Alternate&lt;br /&gt;
&lt;br /&gt;
===Eder Gira===&lt;br /&gt;
*Eder Kemo&lt;br /&gt;
*D'ni (Ae'gura Takotah Roof) Bahro Stone&lt;br /&gt;
&lt;br /&gt;
===Eder Kemo===&lt;br /&gt;
*Eder Gira&lt;br /&gt;
*Neighborhood (Classroom Roof) Bahro Stone&lt;br /&gt;
&lt;br /&gt;
====Negilahn/Dereno/Payiferen/Tetsonot====&lt;br /&gt;
*Nexus&lt;br /&gt;
&lt;br /&gt;
===Er'cana===&lt;br /&gt;
*D'ni (Uran Silo)&lt;br /&gt;
*Upper Bahro Cave Bahro Stone&lt;br /&gt;
&lt;br /&gt;
===Ahnonay Cathedral===&lt;br /&gt;
*Ahnonay&lt;br /&gt;
&lt;br /&gt;
===Ahnonay===&lt;br /&gt;
*Ahnonay Cathedral&lt;br /&gt;
*Lower Bahro Cave Bahro Stone&lt;br /&gt;
&lt;br /&gt;
===Eder Delin/Eder Tsogal===&lt;br /&gt;
*Neighborhood&lt;br /&gt;
** The Neighborhood book in Eder Delin/Eder Tsogal must be replaced with a Nexus book.  A Neighborhood book should only link to a specific neighborhood and should not work differently for different players.&lt;br /&gt;
*Nexus&lt;br /&gt;
** Replaces Neighborhood book.  The Solo and Group bookmarks do not appear when opening the Nexus book.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Do not edit! --&amp;gt;&lt;br /&gt;
[[Category:Instancing]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Cyan_Content_Licensing_Proposals&amp;diff=1732</id>
		<title>Cyan Content Licensing Proposals</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Cyan_Content_Licensing_Proposals&amp;diff=1732"/>
		<updated>2012-02-05T15:44:33Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* Signatures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Localization Licensing Request ==&lt;br /&gt;
===  Problem Statement ===&lt;br /&gt;
==== Preface ====&lt;br /&gt;
Please note that this is not a complete statement of the aspirations of the fan developers in respect of Uru/MOUL content licensing; rather it is an exemplar of a specifc case where fan developer efforts to improve Uru/MOUL for the community are hindered by the absence of a suitable license for the adaptation and distribution of Cyan's content. This example is used as a means to explore the licensing possibilities with Cyan and to elicit feedback on potential difficulties so that we might collectively establish a way forward.&lt;br /&gt;
&lt;br /&gt;
==== Introduction ====&lt;br /&gt;
Uru has an international audience, and an extensible Localization system which allows content creators to provide translated text to be utilized automatically. Unfortunately, many of the dialogs currently in Uru don't take advantage of this capability and cannot be adapted to do so properly without modifying them.&lt;br /&gt;
&lt;br /&gt;
==== What the Community Has Accomplished Thus Far ====&lt;br /&gt;
Thanks to the efforts of everyone at GULP (http://rel.to/gulp, formerly the Uru Localization Project), we have a database of translations in a large number of languages. Changes have been made to the code to re-enable the functions which had been disabled after Untìl Uru, as well as fixes in the input routines that now allow non-US keyboards.&lt;br /&gt;
&lt;br /&gt;
==== What the Community Needs to Continue ====&lt;br /&gt;
There are two primary allowances we need from Cyan in order to continue our efforts to expand Uru's accessibility:&lt;br /&gt;
# A permissive license that would allow us to copy, translate, and distribute all textual information available in Uru, currently located in the .loc files. This would legalize the translations already done by the community and allow their distribution.&lt;br /&gt;
# Access to the 3ds Max source files for the GUIs used in Uru so that we can normalize their use of the provided hooks in the code which they currently do not use, and a license to re-distribute at least the compiled output with those fixes applied. If that is deemed impossible, an alternative solution that would allow at least this specific goal is a license to modify and distribute the existing PRPs containing translatable GUI items.&lt;br /&gt;
&lt;br /&gt;
At this time, we would ask: is Cyan able to indicate what difficulties they perceive over the licensing of content, are there particular aspects where Cyan is open to suggestions, and are there specific limitations which the fans should place on their aspirations for content licensing? We are not asking for a final solution for this specific case yet, but we are presenting a specific case in the hope that it will be helpful as a first step on the collaborative path to a general solution.&lt;br /&gt;
&lt;br /&gt;
Thank you for reading and considering this request.&lt;br /&gt;
&lt;br /&gt;
==== Signatures ====&lt;br /&gt;
[[User:OHB|OHB]] 19:24, 2 February 2012 (MST)&lt;br /&gt;
&lt;br /&gt;
[[User:Hoikas|Hoikas]] 19:31, 2 February 2012 (MST)&lt;br /&gt;
&lt;br /&gt;
[[User:Branan|Branan]] 21:08, 2 February 2012 (MST)&lt;br /&gt;
&lt;br /&gt;
[[User:Christian Walther|Christian Walther]] 05:28, 3 February 2012 (MST)&lt;br /&gt;
&lt;br /&gt;
[[User:Leonardo|Leonardo]] 06:16, 3 February 2012 (MST)&lt;br /&gt;
&lt;br /&gt;
[[User:Mac Fife|Mac Fife]] 12:12, 3 February 2012 (MST)&lt;br /&gt;
&lt;br /&gt;
[[User:Nadnerb|Nadnerb]] 14:36, 3 February 2012 (MST)&lt;br /&gt;
&lt;br /&gt;
[[User:Malfhok|Malfhok]] 05:14, 4 February 2012 (MST)&lt;br /&gt;
&lt;br /&gt;
[[User:Deledrius|Deledrius]] 08:57, 4 February 2012 (MST)&lt;br /&gt;
&lt;br /&gt;
[[User:Marten|Marten]] 09:44, 5 February 2012 (MST)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Following is additional technical information.&lt;br /&gt;
&lt;br /&gt;
=== Technical Information ===&lt;br /&gt;
The .loc files are XML files containing translations for all textual items in Uru. GULP (http://rel.to/gulp) already has an extensive library of translations and a system to export that database to Uru-ready .loc files. Not all of Uru uses these however, as some values are hard-coded in Python scripts or the PRPs themselves, but this can be converted as the GUI items have the ability to reference the XML paths directly. Much of this Python code references the GUI items by TagIDs, which are arbitrary unique numbers used to refer to the resource. This is messy, as it must be updated when the GUI is updated and can otherwise become out of sync; it is also problematic in the current data set as not all translatable GUI items have been assigned TagIDs, meaning they must be found (if at all) by very fragile code. There is also an embedded text field in these items, which currently contains only the English text. Fortunately, these items support a self-describing LocalizationPath which automatically informs the Plasma engine's LocalizationManager which string to use, allowing localization to be handled cleanly and consistently. All of these items are a part of the data and without a license to modify and distribute the PRPs, we cannot continue the efforts to localize Uru outside of using hacks and shims to the existing elegant but under-utilized engine.&lt;br /&gt;
&lt;br /&gt;
As an additional benefit to Cyan: the changes made under the proposed licensing could be relatively easy for Cyan to integrate back into their own assets without affecting current functionality. This would be impossible if only binary changes are allowed to the exported PRPs rather than the .max sources, and it allows Cyan to take advantage of the localization code changes in the engine once it reaches maturity in the community testing with very little friction.&lt;br /&gt;
&lt;br /&gt;
An extra note about the alternative suggestion in (2) which only allows modification of PRPs -- The reason this is inferior, aside from the obvious, is that while it would allow the immediate goal of activating the built-in localization, I anticipate minor bugs such as text flow and sizing in the UI when displaying languages other than the one for which they were designed. These will be extremely difficult to fix under the limited alternative solution and should be far simpler with access to the original 3D Studio Max source files.&lt;br /&gt;
&lt;br /&gt;
=== License Suggestions ===&lt;br /&gt;
I was going to wrap up by suggesting licenses in order to simplify the burden on Cyan, but as the OU Content Licensing thread proves there are many viable options and they all address different needs. Unfortunately, in order to find where that spot of compromise is we'll need feedback from Cyan on this point. I implore Cyan, should they wish to consider this request, to respond with their concerns and needs first. At that point tangible suggestions can be made regarding the specifics and the proposal can move forward should they be agreeable.&lt;br /&gt;
&lt;br /&gt;
At any rate, for the .loc files I'd suggest terms which preserves Cyan's ownership of the text (some of which, being canon from the Myst universe, has inherent value to them), while allowing edits and distribution by the community. A disclaimer stating that Cyan is only responsible for the original English text may also be desirable.&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
Forum link: [http://forums.openuru.org/viewtopic.php?f=91&amp;amp;t=635 Content Licensing]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1341</id>
		<title>MOSS/Distribution Specific Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1341"/>
		<updated>2011-11-04T03:43:06Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* MacOS X */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document is meant to collect any known distribution-specific instructions&lt;br /&gt;
for installing MOSS. There are two main parts: installing the prerequisite&lt;br /&gt;
packages, and setting up the PostgreSQL database. Feel free to add any other&lt;br /&gt;
notes you may find useful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prerequisite Packages ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Only PostgreSQL and the autotools are needed. You can build the packages&lt;br /&gt;
or use the prebuilt packages with pkg_add.&lt;br /&gt;
&lt;br /&gt;
 pkg_add automake&lt;br /&gt;
 pkg_add libtool&lt;br /&gt;
 pkg_add libpqxx&lt;br /&gt;
I recommend starting with libpqxx because it seems to lag the postgresql-client&lt;br /&gt;
package, and installing libpqxx will get the correct client.&lt;br /&gt;
 pkg_add postgresqlNN-server&lt;br /&gt;
Get the version number to match the client installed for pqxx.&lt;br /&gt;
&lt;br /&gt;
Now follow the instructions:&lt;br /&gt;
* copy /usr/pkg/share/examples/rc.d/pgsql to /etc/rc.d/pgsql&lt;br /&gt;
* chmod 555 /etc/rc.d/pgsql&lt;br /&gt;
* append pgsql=YES to /etc/rc.conf&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
First, you will need the MacOS X developer tools installed.&lt;br /&gt;
&lt;br /&gt;
Second, you will need to install libpqxx, zlib, and postgresql.  Here is one approach:&lt;br /&gt;
&lt;br /&gt;
You can use [[http://www.macports.org/ MacPorts]] to install as follows:&lt;br /&gt;
 sudo port install libpqxx zlib postgresql84 postgresql84-server&lt;br /&gt;
&lt;br /&gt;
Some instruction guides for installing PostgreSQL (such as the README for EnterpriseDB's version) suggest editing /etc/sysctl.conf and increasing the shmall setting from the default (8192 under Mac OS X 10.6, exactly 1/4096th of shmmax).  Whatever number you choose for shmall, it should be (a) smaller than shmmax, and (b) divisible by 4096.  For example, a valid value might be:&lt;br /&gt;
 kern.sysv.shmall=65536&lt;br /&gt;
&lt;br /&gt;
MacPorts might not create the user and group accounts for postgres.  For some reason, most instructions for installing PostgreSQL from MacPorts seem to gloss over this issue.  You may need to manually create the postgres User and Group.  This is accomplished in two phases.&lt;br /&gt;
&lt;br /&gt;
First, identify the last user and group IDs already present.&lt;br /&gt;
 sudo dscl . -list /Users UniqueID | sort -n -k 2 | tail -n 1&lt;br /&gt;
 sudo dscl . -list /Groups PrimaryGroupID | sort -n -k 2 | tail -n 1&lt;br /&gt;
For each, take the number shown and add 1.  These are your UniqueID and PrimaryGroupID numbers.  &lt;br /&gt;
&lt;br /&gt;
Second, replace the ### in the following commands as indicated to create the user and group.&lt;br /&gt;
 sudo dscl . -create /Users/postgres UniqueID ###&lt;br /&gt;
 sudo dscl . -create /Users/postgres PrimaryGroupID ###&lt;br /&gt;
 sudo dscl . -create /Users/postgres HomeDirectory /opt/local/var/db/postgresql84&lt;br /&gt;
 sudo dscl . -create /Users/postgres NFSHomeDirectory /opt/local/var/db/postgresql84&lt;br /&gt;
 sudo dscl . -create /Users/postgres RealName &amp;quot;PostgreSQL Administrator&amp;quot;&lt;br /&gt;
 sudo dscl . -create /Users/postgres Password \*&lt;br /&gt;
 sudo dscl . -create /Groups/postgres PrimaryGroupID ###&lt;br /&gt;
 sudo dscl . -create /Groups/postgres Password \*&lt;br /&gt;
&lt;br /&gt;
The following instructions must be performed after installing PostgreSQL.  If the 'chown' step fails, then you're probably missing the user and group settings indicated above.&lt;br /&gt;
 sudo mkdir -p /opt/local/var/db/postgresql84/defaultdb&lt;br /&gt;
 sudo chown -R postgres:postgres /opt/local/var/db/postgresql84&lt;br /&gt;
 sudo su postgres -c '/opt/local/lib/postgresql84/bin/initdb -D /opt/local/var/db/postgresql84/defaultdb'&lt;br /&gt;
 sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql84-server.plist&lt;br /&gt;
&lt;br /&gt;
The last line above should cause the server to start on reboot.  Don't reboot yet - proceed to the database setup instructions where there are more steps you'll want to complete before starting the server.&lt;br /&gt;
&lt;br /&gt;
==== Security Suggestion ====&lt;br /&gt;
For some installations of Postgres, experts recommend an additional step:&lt;br /&gt;
 sudo dscl . -create /Users/postgres UserShell /usr/bin/false&lt;br /&gt;
After setting this up, you'll lose the ability to su to the postgres account to run other programs.  So, this is a step you might take only after getting everything else working.  To revert this step:&lt;br /&gt;
 sudo dscl . -create /Users/postgres UserShell /bin/bash&lt;br /&gt;
&lt;br /&gt;
== Database Setup ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Copy moss_uuidgen.so to /usr/pkg/lib/postgresql/&lt;br /&gt;
&lt;br /&gt;
The database user is &amp;lt;tt&amp;gt;pgsql&amp;lt;/tt&amp;gt;. It has root access to the DB by default.&lt;br /&gt;
Connect from localhost (the default).&lt;br /&gt;
&lt;br /&gt;
Create the database:&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres&amp;quot;&lt;br /&gt;
 create database moss with encoding='UTF8';&lt;br /&gt;
 \c moss&lt;br /&gt;
 create role moss with login;&lt;br /&gt;
 \q&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres -f moss.sql&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then set db_user=moss in moss_backend.cfg.&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
Copy moss_uuidgen.so to /opt/local/lib/postgresql84/.  From the root of your MOSS build tree:&lt;br /&gt;
&lt;br /&gt;
 sudo cp postgresql/moss_uuidgen.so /opt/local/lib/postgresql84/&lt;br /&gt;
&lt;br /&gt;
Now you'll need to start the server.  The &amp;amp; will background the process:&lt;br /&gt;
 sudo su postgres -c '/opt/local/lib/postgresql84/bin/postgres -D /opt/local/var/db/postgresql84/defaultdb' &amp;amp;&lt;br /&gt;
&lt;br /&gt;
The database user is postgres.  Start psql, the postgreSQL command line interface, as user postgres:&lt;br /&gt;
&lt;br /&gt;
 sudo su -m postgres -c &amp;quot;/opt/local/lib/postgresql84/bin/psql postgres&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At the postgres prompt run these commands.  If you are going to run MOSS as a user other than &amp;quot;moss&amp;quot;, change the role name appropriately:&lt;br /&gt;
 &lt;br /&gt;
 create database moss with encoding='UTF8' template = template0;&lt;br /&gt;
 \c moss&lt;br /&gt;
 create role moss with login;&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Then from the root of your MOSS build tree:&lt;br /&gt;
 sudo su -m postgres -c &amp;quot;/opt/local/lib/postgresql84/bin/psql postgres -f postgresql/moss.sql&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Additional Notes ==&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
The bootstrap.sh file does not currently work because libtoolize is named glibtoolize under MacOS.  A patch has been submitted.  With the patched boostrap, you'll just need to &amp;lt;code&amp;gt;export LIBTOOLIZE=glibtoolize&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you installed PostgreSQL and libpqxx from MacPorts, your configure command line will need to look like this:&lt;br /&gt;
 ./configure --with-postgres=/opt/local/lib/postgresql84 --with-libpqxx=/opt/local&lt;br /&gt;
&lt;br /&gt;
In the postgres subdirectory, the Makefile for the UUID generator expects pg_config to be in your PATH.&lt;br /&gt;
 export PATH=${PATH}:/opt/local/lib/postgresql84/bin&lt;br /&gt;
&lt;br /&gt;
The UUID generator Makefile may also fail because the MacPorts package doesn't automate linking to SSL.  Alternate Makefile:&lt;br /&gt;
 MODULE_big = moss_uuidgen&lt;br /&gt;
 SHLIB_LINK += -lssl&lt;br /&gt;
 PGXS := $(shell pg_config --pgxs)&lt;br /&gt;
 include $(PGXS)&lt;br /&gt;
&lt;br /&gt;
[[Category:MOSS]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1340</id>
		<title>MOSS/Distribution Specific Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1340"/>
		<updated>2011-11-03T05:13:34Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* MacOS X */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document is meant to collect any known distribution-specific instructions&lt;br /&gt;
for installing MOSS. There are two main parts: installing the prerequisite&lt;br /&gt;
packages, and setting up the PostgreSQL database. Feel free to add any other&lt;br /&gt;
notes you may find useful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prerequisite Packages ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Only PostgreSQL and the autotools are needed. You can build the packages&lt;br /&gt;
or use the prebuilt packages with pkg_add.&lt;br /&gt;
&lt;br /&gt;
 pkg_add automake&lt;br /&gt;
 pkg_add libtool&lt;br /&gt;
 pkg_add libpqxx&lt;br /&gt;
I recommend starting with libpqxx because it seems to lag the postgresql-client&lt;br /&gt;
package, and installing libpqxx will get the correct client.&lt;br /&gt;
 pkg_add postgresqlNN-server&lt;br /&gt;
Get the version number to match the client installed for pqxx.&lt;br /&gt;
&lt;br /&gt;
Now follow the instructions:&lt;br /&gt;
* copy /usr/pkg/share/examples/rc.d/pgsql to /etc/rc.d/pgsql&lt;br /&gt;
* chmod 555 /etc/rc.d/pgsql&lt;br /&gt;
* append pgsql=YES to /etc/rc.conf&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
First, you will need the MacOS X developer tools installed.&lt;br /&gt;
&lt;br /&gt;
Second, you will need to install libpqxx, zlib, and postgresql.  Here is one approach:&lt;br /&gt;
&lt;br /&gt;
You can use [[http://www.macports.org/ MacPorts]] to install as follows:&lt;br /&gt;
 sudo port install libpqxx zlib postgresql84 postgresql84-server&lt;br /&gt;
&lt;br /&gt;
Some instruction guides for installing PostgreSQL (such as the README for EnterpriseDB's version) suggest editing /etc/sysctl.conf and increasing the shmall setting from the default (8192 under Mac OS X 10.6, exactly 1/4096th of shmmax).  Whatever number you choose for shmall, it should be (a) smaller than shmmax, and (b) divisible by 4096.  For example, a valid value might be:&lt;br /&gt;
 kern.sysv.shmall=65536&lt;br /&gt;
&lt;br /&gt;
MacPorts might not create the user and group accounts for postgres.  For some reason, most instructions for installing PostgreSQL from MacPorts seem to gloss over this issue.  You may need to manually create the postgres User and Group.  This is accomplished in two phases.&lt;br /&gt;
&lt;br /&gt;
First, identify the last user and group IDs already present.&lt;br /&gt;
 sudo dscl . -list /Users UniqueID | sort -n -k 2 | tail -n 1&lt;br /&gt;
 sudo dscl . -list /Groups PrimaryGroupID | sort -n -k 2 | tail -n 1&lt;br /&gt;
For each, take the number shown and add 1.  These are your UniqueID and PrimaryGroupID numbers.  &lt;br /&gt;
&lt;br /&gt;
Second, replace the ### in the following commands as indicated to create the user and group.&lt;br /&gt;
 sudo dscl . -create /Users/postgres UniqueID ###&lt;br /&gt;
 sudo dscl . -create /Users/postgres PrimaryGroupID ###&lt;br /&gt;
 sudo dscl . -create /Users/postgres HomeDirectory /opt/local/var/db/postgresql84&lt;br /&gt;
 sudo dscl . -create /Users/postgres NFSHomeDirectory /opt/local/var/db/postgresql84&lt;br /&gt;
 sudo dscl . -create /Users/postgres RealName &amp;quot;PostgreSQL Administrator&amp;quot;&lt;br /&gt;
 sudo dscl . -create /Users/postgres Password \*&lt;br /&gt;
 sudo dscl . -create /Groups/postgres PrimaryGroupID ###&lt;br /&gt;
 sudo dscl . -create /Groups/postgres Password \*&lt;br /&gt;
&lt;br /&gt;
The following instructions must be performed after installing PostgreSQL.  If the 'chown' step fails, then you're probably missing the user and group settings indicated above.&lt;br /&gt;
 sudo mkdir -p /opt/local/var/db/postgresql84/defaultdb&lt;br /&gt;
 sudo chown -R postgres:postgres /opt/local/var/db/postgresql84&lt;br /&gt;
 sudo su postgres -c '/opt/local/lib/postgresql84/bin/initdb -D /opt/local/var/db/postgresql84/defaultdb'&lt;br /&gt;
 sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql84-server.plist&lt;br /&gt;
&lt;br /&gt;
The last line above should cause the server to start on reboot.  Don't reboot yet - proceed to the database setup instructions where there are more steps you'll want to complete before starting the server.&lt;br /&gt;
&lt;br /&gt;
==== Security Suggestion ====&lt;br /&gt;
For some installations of Postgres, experts recommend an additional step:&lt;br /&gt;
 sudo dscl . -create /Users/postgres UserShell /usr/bin/false&lt;br /&gt;
After setting this up, you'll lose the ability to su to the postgres account to run other programs.  So, this is a step you might take only after getting everything else working.  To revert this step:&lt;br /&gt;
 sudo dscl . -create /Users/postgres UserShell /bin/bash&lt;br /&gt;
&lt;br /&gt;
== Database Setup ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Copy moss_uuidgen.so to /usr/pkg/lib/postgresql/&lt;br /&gt;
&lt;br /&gt;
The database user is &amp;lt;tt&amp;gt;pgsql&amp;lt;/tt&amp;gt;. It has root access to the DB by default.&lt;br /&gt;
Connect from localhost (the default).&lt;br /&gt;
&lt;br /&gt;
Create the database:&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres&amp;quot;&lt;br /&gt;
 create database moss with encoding='UTF8';&lt;br /&gt;
 \c moss&lt;br /&gt;
 create role moss with login;&lt;br /&gt;
 \q&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres -f moss.sql&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then set db_user=moss in moss_backend.cfg.&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
Copy moss_uuidgen.so to /opt/local/lib/postgresql84/.  From the root of your MOSS build tree:&lt;br /&gt;
&lt;br /&gt;
 sudo cp postgresql/moss_uuidgen.so /opt/local/lib/postgresql84/&lt;br /&gt;
&lt;br /&gt;
Now you'll need to start the server.  The &amp;amp; will background the process:&lt;br /&gt;
 sudo su postgres -c '/opt/local/lib/postgresql84/bin/postgres -D /opt/local/var/db/postgresql84/defaultdb' &amp;amp;&lt;br /&gt;
&lt;br /&gt;
The database user is postgres.  Start psql, the postgreSQL command line interface, as user postgres:&lt;br /&gt;
&lt;br /&gt;
 sudo su -m postgres -c &amp;quot;/opt/local/lib/postgresql84/bin/psql postgres&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At the postgres prompt:&lt;br /&gt;
 &lt;br /&gt;
 create database moss with encoding='UTF8' template = template0;&lt;br /&gt;
 \c moss&lt;br /&gt;
 create role moss with login;&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Then from the root of your MOSS build tree:&lt;br /&gt;
 sudo su -m postgres -c &amp;quot;/opt/local/lib/postgresql84/bin/psql postgres -f postgresql/moss.sql&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Additional Notes ==&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
The bootstrap.sh file does not currently work because libtoolize is named glibtoolize under MacOS.  A patch has been submitted.  With the patched boostrap, you'll just need to &amp;lt;code&amp;gt;export LIBTOOLIZE=glibtoolize&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you installed PostgreSQL and libpqxx from MacPorts, your configure command line will need to look like this:&lt;br /&gt;
 ./configure --with-postgres=/opt/local/lib/postgresql84 --with-libpqxx=/opt/local&lt;br /&gt;
&lt;br /&gt;
In the postgres subdirectory, the Makefile for the UUID generator expects pg_config to be in your PATH.&lt;br /&gt;
 export PATH=${PATH}:/opt/local/lib/postgresql84/bin&lt;br /&gt;
&lt;br /&gt;
The UUID generator Makefile may also fail because the MacPorts package doesn't automate linking to SSL.  Alternate Makefile:&lt;br /&gt;
 MODULE_big = moss_uuidgen&lt;br /&gt;
 SHLIB_LINK += -lssl&lt;br /&gt;
 PGXS := $(shell pg_config --pgxs)&lt;br /&gt;
 include $(PGXS)&lt;br /&gt;
&lt;br /&gt;
[[Category:MOSS]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1339</id>
		<title>MOSS/Distribution Specific Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1339"/>
		<updated>2011-11-03T05:12:29Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* MacOS X */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document is meant to collect any known distribution-specific instructions&lt;br /&gt;
for installing MOSS. There are two main parts: installing the prerequisite&lt;br /&gt;
packages, and setting up the PostgreSQL database. Feel free to add any other&lt;br /&gt;
notes you may find useful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prerequisite Packages ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Only PostgreSQL and the autotools are needed. You can build the packages&lt;br /&gt;
or use the prebuilt packages with pkg_add.&lt;br /&gt;
&lt;br /&gt;
 pkg_add automake&lt;br /&gt;
 pkg_add libtool&lt;br /&gt;
 pkg_add libpqxx&lt;br /&gt;
I recommend starting with libpqxx because it seems to lag the postgresql-client&lt;br /&gt;
package, and installing libpqxx will get the correct client.&lt;br /&gt;
 pkg_add postgresqlNN-server&lt;br /&gt;
Get the version number to match the client installed for pqxx.&lt;br /&gt;
&lt;br /&gt;
Now follow the instructions:&lt;br /&gt;
* copy /usr/pkg/share/examples/rc.d/pgsql to /etc/rc.d/pgsql&lt;br /&gt;
* chmod 555 /etc/rc.d/pgsql&lt;br /&gt;
* append pgsql=YES to /etc/rc.conf&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
First, you will need the MacOS X developer tools installed.&lt;br /&gt;
&lt;br /&gt;
Second, you will need to install libpqxx, zlib, and postgresql.  Here is one approach:&lt;br /&gt;
&lt;br /&gt;
You can use [[http://www.macports.org/ MacPorts]] to install as follows:&lt;br /&gt;
 sudo port install libpqxx zlib postgresql84 postgresql84-server&lt;br /&gt;
&lt;br /&gt;
Some instruction guides for installing PostgreSQL (such as the README for EnterpriseDB's version) suggest editing /etc/sysctl.conf and increasing the shmall setting from the default (8192 under Mac OS X 10.6, exactly 1/4096th of shmmax).  Whatever number you choose for shmall, it should be (a) smaller than shmmax, and (b) divisible by 4096.  For example, a valid value might be:&lt;br /&gt;
 kern.sysv.shmall=65536&lt;br /&gt;
&lt;br /&gt;
MacPorts might not create the user and group accounts for postgres.  For some reason, most instructions for installing PostgreSQL from MacPorts seem to gloss over this issue.  You may need to manually create the postgres User and Group.  This is accomplished in two phases.&lt;br /&gt;
&lt;br /&gt;
First, identify the last user and group IDs already present.&lt;br /&gt;
 sudo dscl . -list /Users UniqueID | sort -n -k 2 | tail -n 1&lt;br /&gt;
 sudo dscl . -list /Groups PrimaryGroupID | sort -n -k 2 | tail -n 1&lt;br /&gt;
For each, take the number shown and add 1.  These are your UniqueID and PrimaryGroupID numbers.  &lt;br /&gt;
&lt;br /&gt;
Second, replace the ### in the following commands as indicated to create the user and group.&lt;br /&gt;
 sudo dscl . -create /Users/postgres UniqueID ###&lt;br /&gt;
 sudo dscl . -create /Users/postgres PrimaryGroupID ###&lt;br /&gt;
 sudo dscl . -create /Users/postgres HomeDirectory /opt/local/var/db/postgresql84&lt;br /&gt;
 sudo dscl . -create /Users/postgres NFSHomeDirectory /opt/local/var/db/postgresql84&lt;br /&gt;
 sudo dscl . -create /Users/postgres RealName &amp;quot;PostgreSQL Administrator&amp;quot;&lt;br /&gt;
 sudo dscl . -create /Users/postgres Password \*&lt;br /&gt;
 sudo dscl . -create /Groups/postgres PrimaryGroupID ###&lt;br /&gt;
 sudo dscl . -create /Groups/postgres Password \*&lt;br /&gt;
&lt;br /&gt;
The following instructions must be performed after installing PostgreSQL.  If the 'chown' step fails, then you're probably missing the user and group settings indicated above.&lt;br /&gt;
 sudo mkdir -p /opt/local/var/db/postgresql84/defaultdb&lt;br /&gt;
 sudo chown -R postgres:postgres /opt/local/var/db/postgresql84&lt;br /&gt;
 sudo su postgres -c '/opt/local/lib/postgresql84/bin/initdb -D /opt/local/var/db/postgresql84/defaultdb'&lt;br /&gt;
 sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql84-server.plist&lt;br /&gt;
&lt;br /&gt;
The last line above should cause the server to start on reboot.  Don't reboot yet - proceed to the database setup instructions where there are more steps you'll want to complete before starting the server.&lt;br /&gt;
&lt;br /&gt;
==== Security Suggestion ====&lt;br /&gt;
For some installations of Postgres, experts recommend an additional step:&lt;br /&gt;
 sudo dscl . -create /Users/postgres UserShell /usr/bin/false&lt;br /&gt;
After setting this up, you'll lose the ability to su to the postgres account to run other programs.  So, this is a step you might take only after getting everything else working.  To revert this step:&lt;br /&gt;
 sudo dscl . -create /Users/postgres UserShell /bin/bash&lt;br /&gt;
&lt;br /&gt;
== Database Setup ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Copy moss_uuidgen.so to /usr/pkg/lib/postgresql/&lt;br /&gt;
&lt;br /&gt;
The database user is &amp;lt;tt&amp;gt;pgsql&amp;lt;/tt&amp;gt;. It has root access to the DB by default.&lt;br /&gt;
Connect from localhost (the default).&lt;br /&gt;
&lt;br /&gt;
Create the database:&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres&amp;quot;&lt;br /&gt;
 create database moss with encoding='UTF8';&lt;br /&gt;
 \c moss&lt;br /&gt;
 create role moss with login;&lt;br /&gt;
 \q&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres -f moss.sql&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then set db_user=moss in moss_backend.cfg.&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
Copy moss_uuidgen.so to /opt/local/lib/postgresql84/.  From the root of your MOSS build tree:&lt;br /&gt;
&lt;br /&gt;
 sudo cp postgresql/moss_uuidgen.so /opt/local/lib/postgresql84/&lt;br /&gt;
&lt;br /&gt;
The database user is postgres.  Start psql, the postgreSQL command line interface, as user postgres:&lt;br /&gt;
&lt;br /&gt;
 sudo su -m postgres -c &amp;quot;/opt/local/lib/postgresql84/bin/psql postgres&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At the postgres prompt:&lt;br /&gt;
 &lt;br /&gt;
 create database moss with encoding='UTF8' template = template0;&lt;br /&gt;
 \c moss&lt;br /&gt;
 create role moss with login;&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Then from the root of your MOSS build tree:&lt;br /&gt;
 sudo su -m postgres -c &amp;quot;/opt/local/lib/postgresql84/bin/psql postgres -f postgresql/moss.sql&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Additional Notes ==&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
The bootstrap.sh file does not currently work because libtoolize is named glibtoolize under MacOS.  A patch has been submitted.  With the patched boostrap, you'll just need to &amp;lt;code&amp;gt;export LIBTOOLIZE=glibtoolize&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you installed PostgreSQL and libpqxx from MacPorts, your configure command line will need to look like this:&lt;br /&gt;
 ./configure --with-postgres=/opt/local/lib/postgresql84 --with-libpqxx=/opt/local&lt;br /&gt;
&lt;br /&gt;
In the postgres subdirectory, the Makefile for the UUID generator expects pg_config to be in your PATH.&lt;br /&gt;
 export PATH=${PATH}:/opt/local/lib/postgresql84/bin&lt;br /&gt;
&lt;br /&gt;
The UUID generator Makefile may also fail because the MacPorts package doesn't automate linking to SSL.  Alternate Makefile:&lt;br /&gt;
 MODULE_big = moss_uuidgen&lt;br /&gt;
 SHLIB_LINK += -lssl&lt;br /&gt;
 PGXS := $(shell pg_config --pgxs)&lt;br /&gt;
 include $(PGXS)&lt;br /&gt;
&lt;br /&gt;
[[Category:MOSS]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1338</id>
		<title>MOSS/Distribution Specific Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1338"/>
		<updated>2011-11-03T05:04:54Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* MacOS X */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document is meant to collect any known distribution-specific instructions&lt;br /&gt;
for installing MOSS. There are two main parts: installing the prerequisite&lt;br /&gt;
packages, and setting up the PostgreSQL database. Feel free to add any other&lt;br /&gt;
notes you may find useful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prerequisite Packages ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Only PostgreSQL and the autotools are needed. You can build the packages&lt;br /&gt;
or use the prebuilt packages with pkg_add.&lt;br /&gt;
&lt;br /&gt;
 pkg_add automake&lt;br /&gt;
 pkg_add libtool&lt;br /&gt;
 pkg_add libpqxx&lt;br /&gt;
I recommend starting with libpqxx because it seems to lag the postgresql-client&lt;br /&gt;
package, and installing libpqxx will get the correct client.&lt;br /&gt;
 pkg_add postgresqlNN-server&lt;br /&gt;
Get the version number to match the client installed for pqxx.&lt;br /&gt;
&lt;br /&gt;
Now follow the instructions:&lt;br /&gt;
* copy /usr/pkg/share/examples/rc.d/pgsql to /etc/rc.d/pgsql&lt;br /&gt;
* chmod 555 /etc/rc.d/pgsql&lt;br /&gt;
* append pgsql=YES to /etc/rc.conf&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
First, you will need the MacOS X developer tools installed.&lt;br /&gt;
&lt;br /&gt;
Second, you will need to install libpqxx, zlib, and postgresql.  Here is one approach:&lt;br /&gt;
&lt;br /&gt;
You can use [[http://www.macports.org/ MacPorts]] to install as follows:&lt;br /&gt;
 sudo port install libpqxx zlib postgresql84 postgresql84-server&lt;br /&gt;
&lt;br /&gt;
Some instruction guides for installing PostgreSQL (such as the README for EnterpriseDB's version) suggest editing /etc/sysctl.conf and increasing the shmall setting from the default (8192 under Mac OS X 10.6, exactly 1/4096th of shmmax).  Whatever number you choose for shmall, it should be (a) smaller than shmmax, and (b) divisible by 4096.  For example, a valid value might be:&lt;br /&gt;
 kern.sysv.shmall=65536&lt;br /&gt;
&lt;br /&gt;
MacPorts might not create the user and group accounts for postgres.  For some reason, most instructions for installing PostgreSQL from MacPorts seem to gloss over this issue.  You may need to manually create the postgres User and Group.  This is accomplished in two phases.&lt;br /&gt;
&lt;br /&gt;
First, identify the last user and group IDs already present.&lt;br /&gt;
 sudo dscl . -list /Users UniqueID | sort -n -k 2 | tail -n 1&lt;br /&gt;
 sudo dscl . -list /Groups PrimaryGroupID | sort -n -k 2 | tail -n 1&lt;br /&gt;
For each, take the number shown and add 1.  These are your UniqueID and PrimaryGroupID numbers.  &lt;br /&gt;
&lt;br /&gt;
Second, replace the ### in the following commands as indicated to create the user and group.&lt;br /&gt;
 sudo dscl . -create /Users/postgres UniqueID ###&lt;br /&gt;
 sudo dscl . -create /Users/postgres PrimaryGroupID ###&lt;br /&gt;
 sudo dscl . -create /Users/postgres HomeDirectory /opt/local/var/db/postgresql84&lt;br /&gt;
 sudo dscl . -create /Users/postgres NFSHomeDirectory /opt/local/var/db/postgresql84&lt;br /&gt;
 sudo dscl . -create /Users/postgres RealName &amp;quot;PostgreSQL Administrator&amp;quot;&lt;br /&gt;
 sudo dscl . -create /Users/postgres Password \*&lt;br /&gt;
 sudo dscl . -create /Groups/postgres PrimaryGroupID ###&lt;br /&gt;
 sudo dscl . -create /Groups/postgres Password \*&lt;br /&gt;
&lt;br /&gt;
The following instructions must be performed after installing PostgreSQL.  If the 'chown' step fails, then you're probably missing the user and group settings indicated above.&lt;br /&gt;
 sudo mkdir -p /opt/local/var/db/postgresql84/defaultdb&lt;br /&gt;
 sudo chown -R postgres:postgres /opt/local/var/db/postgresql84&lt;br /&gt;
 sudo su postgres -c '/opt/local/lib/postgresql84/bin/initdb -D /opt/local/var/db/postgresql84/defaultdb'&lt;br /&gt;
 sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql84-server.plist&lt;br /&gt;
&lt;br /&gt;
The last line above should cause the server to start on reboot.  To start the server now:&lt;br /&gt;
 sudo su postgres -c '/opt/local/lib/postgresql84/bin/postgres -D /opt/local/var/db/postgresql84/defaultdb'&lt;br /&gt;
&lt;br /&gt;
==== Security Suggestion ====&lt;br /&gt;
For some installations of Postgres, experts recommend an additional step:&lt;br /&gt;
 sudo dscl . -create /Users/postgres UserShell /usr/bin/false&lt;br /&gt;
After setting this up, you'll lose the ability to su to the postgres account to run other programs.  So, this is a step you might take only after getting everything else working.  To revert this step:&lt;br /&gt;
 sudo dscl . -create /Users/postgres UserShell /bin/bash&lt;br /&gt;
&lt;br /&gt;
== Database Setup ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Copy moss_uuidgen.so to /usr/pkg/lib/postgresql/&lt;br /&gt;
&lt;br /&gt;
The database user is &amp;lt;tt&amp;gt;pgsql&amp;lt;/tt&amp;gt;. It has root access to the DB by default.&lt;br /&gt;
Connect from localhost (the default).&lt;br /&gt;
&lt;br /&gt;
Create the database:&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres&amp;quot;&lt;br /&gt;
 create database moss with encoding='UTF8';&lt;br /&gt;
 \c moss&lt;br /&gt;
 create role moss with login;&lt;br /&gt;
 \q&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres -f moss.sql&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then set db_user=moss in moss_backend.cfg.&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
Copy moss_uuidgen.so to /opt/local/lib/postgresql84/.  From the root of your MOSS build tree:&lt;br /&gt;
&lt;br /&gt;
 sudo cp postgresql/moss_uuidgen.so /opt/local/lib/postgresql84/&lt;br /&gt;
&lt;br /&gt;
The database user is postgres.  Start psql, the postgreSQL command line interface, as user postgres:&lt;br /&gt;
&lt;br /&gt;
 sudo su -m postgres -c &amp;quot;/opt/local/lib/postgresql84/bin/psql postgres&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At the postgres prompt:&lt;br /&gt;
 &lt;br /&gt;
 create database moss with encoding='UTF8' template = template0;&lt;br /&gt;
 \c moss&lt;br /&gt;
 create role moss with login;&lt;br /&gt;
 \q&lt;br /&gt;
&lt;br /&gt;
Then from the root of your MOSS build tree:&lt;br /&gt;
 sudo su -m postgres -c &amp;quot;/opt/local/lib/postgresql84/bin/psql postgres -f postgresql/moss.sql&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Additional Notes ==&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
The bootstrap.sh file does not currently work because libtoolize is named glibtoolize under MacOS.  A patch has been submitted.  With the patched boostrap, you'll just need to &amp;lt;code&amp;gt;export LIBTOOLIZE=glibtoolize&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you installed PostgreSQL and libpqxx from MacPorts, your configure command line will need to look like this:&lt;br /&gt;
 ./configure --with-postgres=/opt/local/lib/postgresql84 --with-libpqxx=/opt/local&lt;br /&gt;
&lt;br /&gt;
In the postgres subdirectory, the Makefile for the UUID generator expects pg_config to be in your PATH.&lt;br /&gt;
 export PATH=${PATH}:/opt/local/lib/postgresql84/bin&lt;br /&gt;
&lt;br /&gt;
The UUID generator Makefile may also fail because the MacPorts package doesn't automate linking to SSL.  Alternate Makefile:&lt;br /&gt;
 MODULE_big = moss_uuidgen&lt;br /&gt;
 SHLIB_LINK += -lssl&lt;br /&gt;
 PGXS := $(shell pg_config --pgxs)&lt;br /&gt;
 include $(PGXS)&lt;br /&gt;
&lt;br /&gt;
[[Category:MOSS]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1337</id>
		<title>MOSS/Distribution Specific Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1337"/>
		<updated>2011-11-03T05:00:26Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* MacOS X */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document is meant to collect any known distribution-specific instructions&lt;br /&gt;
for installing MOSS. There are two main parts: installing the prerequisite&lt;br /&gt;
packages, and setting up the PostgreSQL database. Feel free to add any other&lt;br /&gt;
notes you may find useful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prerequisite Packages ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Only PostgreSQL and the autotools are needed. You can build the packages&lt;br /&gt;
or use the prebuilt packages with pkg_add.&lt;br /&gt;
&lt;br /&gt;
 pkg_add automake&lt;br /&gt;
 pkg_add libtool&lt;br /&gt;
 pkg_add libpqxx&lt;br /&gt;
I recommend starting with libpqxx because it seems to lag the postgresql-client&lt;br /&gt;
package, and installing libpqxx will get the correct client.&lt;br /&gt;
 pkg_add postgresqlNN-server&lt;br /&gt;
Get the version number to match the client installed for pqxx.&lt;br /&gt;
&lt;br /&gt;
Now follow the instructions:&lt;br /&gt;
* copy /usr/pkg/share/examples/rc.d/pgsql to /etc/rc.d/pgsql&lt;br /&gt;
* chmod 555 /etc/rc.d/pgsql&lt;br /&gt;
* append pgsql=YES to /etc/rc.conf&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
First, you will need the MacOS X developer tools installed.&lt;br /&gt;
&lt;br /&gt;
Second, you will need to install libpqxx, zlib, and postgresql.  Here is one approach:&lt;br /&gt;
&lt;br /&gt;
You can use [[http://www.macports.org/ MacPorts]] to install as follows:&lt;br /&gt;
 sudo port install libpqxx zlib postgresql84 postgresql84-server&lt;br /&gt;
&lt;br /&gt;
Some instruction guides for installing PostgreSQL (such as the README for EnterpriseDB's version) suggest editing /etc/sysctl.conf and increasing the shmall setting from the default (8192 under Mac OS X 10.6, exactly 1/4096th of shmmax).  Whatever number you choose for shmall, it should be (a) smaller than shmmax, and (b) divisible by 4096.  For example, a valid value might be:&lt;br /&gt;
 kern.sysv.shmall=65536&lt;br /&gt;
&lt;br /&gt;
MacPorts might not create the user and group accounts for postgres.  For some reason, most instructions for installing PostgreSQL from MacPorts seem to gloss over this issue.  You may need to manually create the postgres User and Group.  This is accomplished in two phases.&lt;br /&gt;
&lt;br /&gt;
First, identify the last user and group IDs already present.&lt;br /&gt;
 sudo dscl . -list /Users UniqueID | sort -n -k 2 | tail -n 1&lt;br /&gt;
 sudo dscl . -list /Groups PrimaryGroupID | sort -n -k 2 | tail -n 1&lt;br /&gt;
For each, take the number shown and add 1.  These are your UniqueID and PrimaryGroupID numbers.  &lt;br /&gt;
&lt;br /&gt;
Second, replace the ### in the following commands as indicated to create the user and group.&lt;br /&gt;
 sudo dscl . -create /Users/postgres UniqueID ###&lt;br /&gt;
 sudo dscl . -create /Users/postgres PrimaryGroupID ###&lt;br /&gt;
 sudo dscl . -create /Users/postgres HomeDirectory /opt/local/var/db/postgresql84&lt;br /&gt;
 sudo dscl . -create /Users/postgres NFSHomeDirectory /opt/local/var/db/postgresql84&lt;br /&gt;
 sudo dscl . -create /Users/postgres RealName &amp;quot;PostgreSQL Administrator&amp;quot;&lt;br /&gt;
 sudo dscl . -create /Users/postgres Password \*&lt;br /&gt;
 sudo dscl . -create /Groups/postgres PrimaryGroupID ###&lt;br /&gt;
 sudo dscl . -create /Groups/postgres Password \*&lt;br /&gt;
&lt;br /&gt;
The following instructions must be performed after installing PostgreSQL.  If the 'chown' step fails, then you're probably missing the user and group settings indicated above.&lt;br /&gt;
 sudo mkdir -p /opt/local/var/db/postgresql84/defaultdb&lt;br /&gt;
 sudo chown -R postgres:postgres /opt/local/var/db/postgresql84&lt;br /&gt;
 sudo su postgres -c '/opt/local/lib/postgresql84/bin/initdb -D /opt/local/var/db/postgresql84/defaultdb'&lt;br /&gt;
 sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql84-server.plist&lt;br /&gt;
&lt;br /&gt;
The last line above should cause the server to start on reboot.  To start the server now:&lt;br /&gt;
 sudo su postgres -c '/opt/local/lib/postgresql84/bin/postgres -D /opt/local/var/db/postgresql84/defaultdb'&lt;br /&gt;
&lt;br /&gt;
==== Security Suggestion ====&lt;br /&gt;
For some installations of Postgres, experts recommend an additional step:&lt;br /&gt;
 sudo dscl . -create /Users/postgres UserShell /usr/bin/false&lt;br /&gt;
After setting this up, you'll lose the ability to su to the postgres account to run other programs.  So, this is a step you might take only after getting everything else working.  To revert this step:&lt;br /&gt;
 sudo dscl . -create /Users/postgres UserShell /bin/bash&lt;br /&gt;
&lt;br /&gt;
== Database Setup ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Copy moss_uuidgen.so to /usr/pkg/lib/postgresql/&lt;br /&gt;
&lt;br /&gt;
The database user is &amp;lt;tt&amp;gt;pgsql&amp;lt;/tt&amp;gt;. It has root access to the DB by default.&lt;br /&gt;
Connect from localhost (the default).&lt;br /&gt;
&lt;br /&gt;
Create the database:&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres&amp;quot;&lt;br /&gt;
 create database moss with encoding='UTF8';&lt;br /&gt;
 \c moss&lt;br /&gt;
 create role moss with login;&lt;br /&gt;
 \q&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres -f moss.sql&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then set db_user=moss in moss_backend.cfg.&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
{{tba}}&lt;br /&gt;
&lt;br /&gt;
== Additional Notes ==&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
The bootstrap.sh file does not currently work because libtoolize is named glibtoolize under MacOS.  A patch has been submitted.  With the patched boostrap, you'll just need to &amp;lt;code&amp;gt;export LIBTOOLIZE=glibtoolize&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you installed PostgreSQL and libpqxx from MacPorts, your configure command line will need to look like this:&lt;br /&gt;
 ./configure --with-postgres=/opt/local/lib/postgresql84 --with-libpqxx=/opt/local&lt;br /&gt;
&lt;br /&gt;
In the postgres subdirectory, the Makefile for the UUID generator expects pg_config to be in your PATH.&lt;br /&gt;
 export PATH=${PATH}:/opt/local/lib/postgresql84/bin&lt;br /&gt;
&lt;br /&gt;
The UUID generator Makefile may also fail because the MacPorts package doesn't automate linking to SSL.  Alternate Makefile:&lt;br /&gt;
 MODULE_big = moss_uuidgen&lt;br /&gt;
 SHLIB_LINK += -lssl&lt;br /&gt;
 PGXS := $(shell pg_config --pgxs)&lt;br /&gt;
 include $(PGXS)&lt;br /&gt;
&lt;br /&gt;
[[Category:MOSS]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1336</id>
		<title>MOSS/Distribution Specific Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1336"/>
		<updated>2011-11-03T04:35:09Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* MacOS X */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document is meant to collect any known distribution-specific instructions&lt;br /&gt;
for installing MOSS. There are two main parts: installing the prerequisite&lt;br /&gt;
packages, and setting up the PostgreSQL database. Feel free to add any other&lt;br /&gt;
notes you may find useful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prerequisite Packages ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Only PostgreSQL and the autotools are needed. You can build the packages&lt;br /&gt;
or use the prebuilt packages with pkg_add.&lt;br /&gt;
&lt;br /&gt;
 pkg_add automake&lt;br /&gt;
 pkg_add libtool&lt;br /&gt;
 pkg_add libpqxx&lt;br /&gt;
I recommend starting with libpqxx because it seems to lag the postgresql-client&lt;br /&gt;
package, and installing libpqxx will get the correct client.&lt;br /&gt;
 pkg_add postgresqlNN-server&lt;br /&gt;
Get the version number to match the client installed for pqxx.&lt;br /&gt;
&lt;br /&gt;
Now follow the instructions:&lt;br /&gt;
* copy /usr/pkg/share/examples/rc.d/pgsql to /etc/rc.d/pgsql&lt;br /&gt;
* chmod 555 /etc/rc.d/pgsql&lt;br /&gt;
* append pgsql=YES to /etc/rc.conf&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
First, you will need the MacOS X developer tools installed.&lt;br /&gt;
&lt;br /&gt;
Second, you will need to install libpqxx, zlib, and postgresql.  Here is one approach:&lt;br /&gt;
&lt;br /&gt;
You can use [[http://www.macports.org/ MacPorts]] to install as follows:&lt;br /&gt;
 sudo port install libpqxx zlib postgresql84 postgresql84-server&lt;br /&gt;
&lt;br /&gt;
Some instruction guides for installing PostgreSQL (such as the README for EnterpriseDB's version) suggest editing /etc/sysctl.conf and increasing the shmall setting from the default (8192 under Mac OS X 10.6, exactly 1/4096th of shmmax).  Whatever number you choose for shmall, it should be (a) smaller than shmmax, and (b) divisible by 4096.  For example, a valid value might be:&lt;br /&gt;
 kern.sysv.shmall=65536&lt;br /&gt;
&lt;br /&gt;
MacPorts might not create the user and group accounts for postgres.  For some reason, most instructions for installing PostgreSQL from MacPorts seem to gloss over this issue.  You may need to manually create the postgres User and Group.  This is accomplished in two phases.&lt;br /&gt;
&lt;br /&gt;
First, identify the last user and group IDs already present.&lt;br /&gt;
 sudo dscl . -list /Users UniqueID | sort -n -k 2 | tail -n 1&lt;br /&gt;
 sudo dscl . -list /Groups PrimaryGroupID | sort -n -k 2 | tail -n 1&lt;br /&gt;
For each, take the number shown and add 1.  These are your UniqueID and PrimaryGroupID numbers.  &lt;br /&gt;
&lt;br /&gt;
Second, replace the ### in the following commands as indicated to create the user and group.&lt;br /&gt;
 sudo dscl . -create /Users/postgres UniqueID ###&lt;br /&gt;
 sudo dscl . -create /Users/postgres PrimaryGroupID ###&lt;br /&gt;
 sudo dscl . -create /Users/postgres HomeDirectory /opt/local/var/db/postgresql84&lt;br /&gt;
 sudo dscl . -create /Users/postgres RealName &amp;quot;PostgreSQL Administrator&amp;quot;&lt;br /&gt;
 sudo dscl . -create /Users/postgres Password \*&lt;br /&gt;
 sudo dscl . -create /Groups/postgres PrimaryGroupID ###&lt;br /&gt;
 sudo dscl . -create /Groups/postgres Password \*&lt;br /&gt;
&lt;br /&gt;
The following instructions must be performed after installing PostgreSQL.  If the 'chown' step fails, then you're probably missing the user and group settings indicated above.&lt;br /&gt;
 sudo mkdir -p /opt/local/var/db/postgresql84/defaultdb&lt;br /&gt;
 sudo chown postgres:postgres /opt/local/var/db/postgresql84/defaultdb&lt;br /&gt;
 sudo su postgres -c '/opt/local/lib/postgresql84/bin/initdb -D /opt/local/var/db/postgresql84/defaultdb'&lt;br /&gt;
 sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql84-server.plist&lt;br /&gt;
&lt;br /&gt;
The last line above should cause the server to start on reboot.  To start the server now:&lt;br /&gt;
 sudo su postgres -c '/opt/local/lib/postgresql84/bin/postgres -D /opt/local/var/db/postgresql84/defaultdb'&lt;br /&gt;
&lt;br /&gt;
==== Security Suggestion ====&lt;br /&gt;
For some installations of Postgres, experts recommend an additional step:&lt;br /&gt;
 sudo dscl . -create /Users/postgres UserShell /usr/bin/false&lt;br /&gt;
After setting this up, you'll lose the ability to su to the postgres account to run other programs.  So, this is a step you might take only after getting everything else working.  To revert this step:&lt;br /&gt;
 sudo dscl . -create /Users/postgres UserShell /bin/bash&lt;br /&gt;
&lt;br /&gt;
== Database Setup ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Copy moss_uuidgen.so to /usr/pkg/lib/postgresql/&lt;br /&gt;
&lt;br /&gt;
The database user is &amp;lt;tt&amp;gt;pgsql&amp;lt;/tt&amp;gt;. It has root access to the DB by default.&lt;br /&gt;
Connect from localhost (the default).&lt;br /&gt;
&lt;br /&gt;
Create the database:&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres&amp;quot;&lt;br /&gt;
 create database moss with encoding='UTF8';&lt;br /&gt;
 \c moss&lt;br /&gt;
 create role moss with login;&lt;br /&gt;
 \q&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres -f moss.sql&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then set db_user=moss in moss_backend.cfg.&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
{{tba}}&lt;br /&gt;
&lt;br /&gt;
== Additional Notes ==&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
The bootstrap.sh file does not currently work because libtoolize is named glibtoolize under MacOS.  A patch has been submitted.  With the patched boostrap, you'll just need to &amp;lt;code&amp;gt;export LIBTOOLIZE=glibtoolize&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you installed PostgreSQL and libpqxx from MacPorts, your configure command line will need to look like this:&lt;br /&gt;
 ./configure --with-postgres=/opt/local/lib/postgresql84 --with-libpqxx=/opt/local&lt;br /&gt;
&lt;br /&gt;
In the postgres subdirectory, the Makefile for the UUID generator expects pg_config to be in your PATH.&lt;br /&gt;
 export PATH=${PATH}:/opt/local/lib/postgresql84/bin&lt;br /&gt;
&lt;br /&gt;
The UUID generator Makefile may also fail because the MacPorts package doesn't automate linking to SSL.  Alternate Makefile:&lt;br /&gt;
 MODULE_big = moss_uuidgen&lt;br /&gt;
 SHLIB_LINK += -lssl&lt;br /&gt;
 PGXS := $(shell pg_config --pgxs)&lt;br /&gt;
 include $(PGXS)&lt;br /&gt;
&lt;br /&gt;
[[Category:MOSS]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1335</id>
		<title>MOSS/Distribution Specific Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1335"/>
		<updated>2011-11-03T01:49:02Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* MacOS X */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document is meant to collect any known distribution-specific instructions&lt;br /&gt;
for installing MOSS. There are two main parts: installing the prerequisite&lt;br /&gt;
packages, and setting up the PostgreSQL database. Feel free to add any other&lt;br /&gt;
notes you may find useful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prerequisite Packages ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Only PostgreSQL and the autotools are needed. You can build the packages&lt;br /&gt;
or use the prebuilt packages with pkg_add.&lt;br /&gt;
&lt;br /&gt;
 pkg_add automake&lt;br /&gt;
 pkg_add libtool&lt;br /&gt;
 pkg_add libpqxx&lt;br /&gt;
I recommend starting with libpqxx because it seems to lag the postgresql-client&lt;br /&gt;
package, and installing libpqxx will get the correct client.&lt;br /&gt;
 pkg_add postgresqlNN-server&lt;br /&gt;
Get the version number to match the client installed for pqxx.&lt;br /&gt;
&lt;br /&gt;
Now follow the instructions:&lt;br /&gt;
* copy /usr/pkg/share/examples/rc.d/pgsql to /etc/rc.d/pgsql&lt;br /&gt;
* chmod 555 /etc/rc.d/pgsql&lt;br /&gt;
* append pgsql=YES to /etc/rc.conf&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
First, you will need the MacOS X developer tools installed.&lt;br /&gt;
&lt;br /&gt;
Second, you will need to install libpqxx, zlib, and postgresql.  Here is one approach:&lt;br /&gt;
&lt;br /&gt;
You can use [[http://www.macports.org/ MacPorts]] to install as follows:&lt;br /&gt;
 sudo port install libpqxx zlib postgresql84 postgresql84-server&lt;br /&gt;
&lt;br /&gt;
Some instruction guides for installing PostgreSQL (such as the README for EnterpriseDB's version) suggest editing /etc/sysctl.conf and increasing the shmall setting from the default (8192 under Mac OS X 10.6, exactly 1/4096th of shmmax).  Whatever number you choose for shmall, it should be (a) smaller than shmmax, and (b) divisible by 4096.  For example, a valid value might be:&lt;br /&gt;
 kern.sysv.shmall=65536&lt;br /&gt;
&lt;br /&gt;
MacPorts might not create the user and group accounts for postgres.  For some reason, most instructions for installing PostgreSQL from MacPorts seem to gloss over this issue.  You may need to manually create the postgres User and Group.  This is accomplished in two phases.&lt;br /&gt;
&lt;br /&gt;
First, identify the last user and group IDs already present.&lt;br /&gt;
 sudo dscl . -list /Users UniqueID | sort -n -k 2 | tail -n 1&lt;br /&gt;
 sudo dscl . -list /Groups PrimaryGroupID | sort -n -k 2 | tail -n 1&lt;br /&gt;
For each, take the number shown and add 1.  These are your UniqueID and PrimaryGroupID numbers.  &lt;br /&gt;
&lt;br /&gt;
Second, replace the ### in the following commands as indicated to create the user and group.&lt;br /&gt;
 sudo dscl . -create /Users/postgres UniqueID ###&lt;br /&gt;
 sudo dscl . -create /Users/postgres PrimaryGroupID ###&lt;br /&gt;
 sudo dscl . -create /Users/postgres HomeDirectory /opt/local/var/db/postgresql84&lt;br /&gt;
 sudo dscl . -create /Users/postgres RealName &amp;quot;PostgreSQL Administrator&amp;quot;&lt;br /&gt;
 sudo dscl . -create /Users/postgres Password \*&lt;br /&gt;
 sudo dscl . -create /Groups/postgres PrimaryGroupID ###&lt;br /&gt;
 sudo dscl . -create /Groups/postgres Password \*&lt;br /&gt;
&lt;br /&gt;
The following instructions must be performed after installing PostgreSQL.  If the 'chown' step fails, then you're probably missing the user and group settings indicated above.&lt;br /&gt;
 sudo mkdir -p /opt/local/var/db/postgresql84/defaultdb&lt;br /&gt;
 sudo chown postgres:postgres /opt/local/var/db/postgresql84/defaultdb&lt;br /&gt;
 sudo su postgres -c '/opt/local/lib/postgresql84/bin/initdb -D /opt/local/var/db/postgresql84/defaultdb'&lt;br /&gt;
 sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql84-server.plist&lt;br /&gt;
&lt;br /&gt;
==== Security Suggestion ====&lt;br /&gt;
For some installations of Postgres, experts recommend an additional step:&lt;br /&gt;
 sudo dscl . -create /Users/postgres UserShell /usr/bin/false&lt;br /&gt;
After setting this up, you'll lose the ability to su to the postgres account to run other programs.  So, this is a step you might take only after getting everything else working.  To revert this step:&lt;br /&gt;
 sudo dscl . -create /Users/postgres UserShell /bin/bash&lt;br /&gt;
&lt;br /&gt;
== Database Setup ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Copy moss_uuidgen.so to /usr/pkg/lib/postgresql/&lt;br /&gt;
&lt;br /&gt;
The database user is &amp;lt;tt&amp;gt;pgsql&amp;lt;/tt&amp;gt;. It has root access to the DB by default.&lt;br /&gt;
Connect from localhost (the default).&lt;br /&gt;
&lt;br /&gt;
Create the database:&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres&amp;quot;&lt;br /&gt;
 create database moss with encoding='UTF8';&lt;br /&gt;
 \c moss&lt;br /&gt;
 create role moss with login;&lt;br /&gt;
 \q&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres -f moss.sql&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then set db_user=moss in moss_backend.cfg.&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
{{tba}}&lt;br /&gt;
&lt;br /&gt;
== Additional Notes ==&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
The bootstrap.sh file does not currently work because libtoolize is named glibtoolize under MacOS.  A patch has been submitted.  With the patched boostrap, you'll just need to &amp;lt;code&amp;gt;export LIBTOOLIZE=glibtoolize&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you installed PostgreSQL and libpqxx from MacPorts, your configure command line will need to look like this:&lt;br /&gt;
 ./configure --with-postgres=/opt/local/lib/postgresql84 --with-libpqxx=/opt/local&lt;br /&gt;
&lt;br /&gt;
In the postgres subdirectory, the Makefile for the UUID generator expects pg_config to be in your PATH.&lt;br /&gt;
 export PATH=${PATH}:/opt/local/lib/postgresql84/bin&lt;br /&gt;
&lt;br /&gt;
The UUID generator Makefile may also fail because the MacPorts package doesn't automate linking to SSL.  Alternate Makefile:&lt;br /&gt;
 MODULE_big = moss_uuidgen&lt;br /&gt;
 SHLIB_LINK += -lssl&lt;br /&gt;
 PGXS := $(shell pg_config --pgxs)&lt;br /&gt;
 include $(PGXS)&lt;br /&gt;
&lt;br /&gt;
[[Category:MOSS]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Foundry_Certificate_Installation&amp;diff=1331</id>
		<title>Foundry Certificate Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Foundry_Certificate_Installation&amp;diff=1331"/>
		<updated>2011-10-20T18:26:26Z</updated>

		<summary type="html">&lt;p&gt;Marten: Chrome certificate install fixes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{draft}}&lt;br /&gt;
The OpenUru.org Foundry tools such as JIRA bugtracking use SSL (Secure Sockets Layer) to encrypt transactions and to give confidence that you are connected to the correct server. Currently, this is a &amp;quot;self-signed&amp;quot; certificate and not one that has been validated by the main certificate authorities, so most browsers will display a warning when you navigate to one of the Foundry pages.&lt;br /&gt;
&lt;br /&gt;
You can avoid these warnings by installing the certificate in your browser's certificate store. This can be done when you first visit the foundry, but the methods vary greatly across browsers. It is perhaps easier to manually install the certificate before visting the Foundry. The certificate will also need to be installed in repository tools (Mercurial or Subversion) if you intend using SSL to access the Foundry repositories.&lt;br /&gt;
&lt;br /&gt;
The instructions given here relate to the Windows versions of the applications.&lt;br /&gt;
&lt;br /&gt;
== Obtaining the Certificate ==&lt;br /&gt;
&lt;br /&gt;
(For manual installation into applications not listed below)&lt;br /&gt;
&lt;br /&gt;
Download a copy of the certificate using this link: [http://foundry.openuru.org/assets/Foundry/foundry.crt Foundry Certificate]&lt;br /&gt;
&lt;br /&gt;
== Browser Installation ==&lt;br /&gt;
&lt;br /&gt;
Please read the instructions so you know what to do '''before''' clicking on the link to the certificate, or right click the link and open it in a new tab or window. &lt;br /&gt;
&lt;br /&gt;
=== Firefox ===&lt;br /&gt;
Click on the following link: [http://foundry.openuru.org/assets/Foundry/foundry.crt Foundry Certificate]&lt;br /&gt;
A popup will appear titled &amp;quot;Downloading Certificate&amp;quot;. Mark the check box for &amp;quot;Trust this CA to identify web sites&amp;quot; then click &amp;quot;OK&amp;quot; (you may wish to click &amp;quot;View&amp;quot; to check the certificate details first). The certificate is now installed, and when visiting the Foundry you should see the padlock symbol at the bottom right of your browser: hovering the mouse pointer over this should show &amp;quot;Authenticated by OpenUru.org&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Firefox 3.6.0 contains a bug which may cause loss of data when using JIRA - users should upgrade their Firefox installation to 3.6.2 or later.&lt;br /&gt;
&lt;br /&gt;
=== Internet Explorer ===&lt;br /&gt;
&lt;br /&gt;
Click on the following link: [http://foundry.openuru.org/assets/Foundry/foundry.crt Foundry Certificate]&lt;br /&gt;
A popup will appear titled &amp;quot;File Download - Security Warning&amp;quot;. Click &amp;quot;Open&amp;quot; and the certificate details will be displayed in a new popup wher you can inspect them. On the &amp;quot;General&amp;quot; tab, click &amp;quot;Install Certificate...&amp;quot;. When the Certificate Import Wizard appears click &amp;quot;Next&amp;gt;&amp;quot;, then on the Certificate Store page select &amp;quot;Automatically select the certificate store based on the type of certificate&amp;quot; and click &amp;quot;Next&amp;gt;&amp;quot; and then &amp;quot;Finish&amp;quot;. Another popup will appear titled &amp;quot;Security Warning&amp;quot; and asking &amp;quot;Do you want to install this certificate?&amp;quot; - Click &amp;quot;Yes&amp;quot;. You should get a message telling you that the import was successful. Click &amp;quot;OK&amp;quot; on any remaining dialog boxes. The certificate is now installed, and when visiting the Foundry you should see the padlock symbol to the right of the URL bar with a blue background.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' If you install the certificate using Internet Explorer as described above, then you should find that the certificate will automatically be trusted by Safari and Chrome browsers on the same machine, since both of these use the Windows Internet Settings.&lt;br /&gt;
&lt;br /&gt;
=== Google Chrome ===&lt;br /&gt;
Chrome (under Microsoft Windows) uses the same certificate store as Internet Explorer, so the process is very similar: Click on the following link: [http://foundry.openuru.org/assets/Foundry/foundry.crt Foundry Certificate]&lt;br /&gt;
The &amp;quot;Downloads&amp;quot; popup will appear along with another window asking if you want to open or save the file &amp;quot;foundry.crt&amp;quot;. Click &amp;quot;Open&amp;quot; and a new popup will appear titled &amp;quot;File Download - Security Warning&amp;quot;. Click &amp;quot;Open&amp;quot; and the certificate details will be displayed in a new popup wher you can inspect them. On the &amp;quot;General&amp;quot; tab, click &amp;quot;Install Certificate...&amp;quot;. When the Certificate Import Wizard appears click &amp;quot;Next&amp;gt;&amp;quot;, then on the Certificate Store page select &amp;quot;Automatically select the certificate store based on the type of certificate&amp;quot; and click &amp;quot;Next&amp;gt;&amp;quot; and then &amp;quot;Finish&amp;quot;. Another popup will appear titled &amp;quot;Security Warning&amp;quot; and asking &amp;quot;Do you want to install this certificate?&amp;quot; - Click &amp;quot;Yes&amp;quot;. You should get a message telling you that the import was successful. Click &amp;quot;OK&amp;quot; on any remaining dialog boxes. The certificate is now installed, and when visiting the Foundry the padlock symbol on the left of the URL bar should turn green.  However, you may need to restart your browser before the certificate is recognized.&lt;br /&gt;
&lt;br /&gt;
=== Apple Safari ===&lt;br /&gt;
On Microsoft Windows, Safari uses the same certificate store as Internet Explorer, so the process is very similar: Click on the following link: [http://foundry.openuru.org/assets/Foundry/foundry.crt Foundry Certificate]&lt;br /&gt;
The &amp;quot;Downloads&amp;quot; popup will appear along with another window asking if you want to open or save the file &amp;quot;foundry.crt&amp;quot;. Click &amp;quot;Open&amp;quot; and a new popup will appear titled &amp;quot;File Download - Security Warning&amp;quot;. Click &amp;quot;Open&amp;quot; and the certificate details will be displayed in a new popup wher you can inspect them. On the &amp;quot;General&amp;quot; tab, click &amp;quot;Install Certificate...&amp;quot;. When the Certificate Import Wizard appears click &amp;quot;Next&amp;gt;&amp;quot;, then on the Certificate Store page select &amp;quot;Automatically select the certificate store based on the type of certificate&amp;quot; and click &amp;quot;Next&amp;gt;&amp;quot; and then &amp;quot;Finish&amp;quot;. Another popup will appear titled &amp;quot;Security Warning&amp;quot; and asking &amp;quot;Do you want to install this certificate?&amp;quot; - Click &amp;quot;Yes&amp;quot;. You should get a message telling you that the import was successful. Click &amp;quot;OK&amp;quot; on any remaining dialog boxes. The certificate is now installed, and when visiting the Foundry you should see the padlock symbol to the right of the URL bar.&lt;br /&gt;
&lt;br /&gt;
=== Opera ===&lt;br /&gt;
Using the Opera browser to access an SSL page on the Foundry will cause the browser to raise a &amp;quot;Security Issue&amp;quot; popup box.  The text in this box says ''The server's certificate chain is incomplete, and the signer(s) are not registered.  Accept?''  You can examine the description of the certificate with the &amp;quot;Security&amp;quot; tab on this popup.  If you are satisfied with the information and wish to use the certificate, click the ''Approve'' button, and the certificate will be stored in Opera's trusted certificate list, and you will be able to browse secured pages from the Foundry.&lt;br /&gt;
&lt;br /&gt;
If you wish to manually install the certificate in Opera, click on the certificate link: [http://foundry.openuru.org/assets/Foundry/foundry.crt Foundry Certificate].  A &amp;quot;Install Certificate&amp;quot; popup window will appear, showing the certificate from '''foundry.openuru.org'''  You can click the &amp;quot;View&amp;quot; button to display information about the certificate.  You can then click the &amp;quot;Install&amp;quot; button to install the certificate or &amp;quot;Cancel&amp;quot; to ignore the certificate and not change Opera's certificate list.&lt;br /&gt;
&lt;br /&gt;
== Repository Installation ==&lt;br /&gt;
&lt;br /&gt;
=== TortoiseHg 2.0.x (Mercurial) ===&lt;br /&gt;
If you have tried to use the &amp;quot;Clone Repository&amp;quot; command to create the Mercurial repository and found that it came back with an error like &amp;quot;SSL: Server certificate verify failed&amp;quot; then try the steps below.&lt;br /&gt;
# Open TortoiseHg Workbench&lt;br /&gt;
# Click on New Repository in the File Menu&lt;br /&gt;
# Browse to the folder that you want to save the source to. This folder must be empty.&lt;br /&gt;
# Now the buttons on the toolbar close to the top of the window should be lit up.&lt;br /&gt;
# Select the green recycle-like icon that will bring up the synchronize settings in the lower part of the screen under '''Remote Repository'''&lt;br /&gt;
# In the drop down box select: '''https'''&lt;br /&gt;
# In the first box put '''foundry.openuru.org/hg'''&lt;br /&gt;
# In the last box on that line put the project name (e.g CWE) see the [http://www.openuru.org/pages/Development.php Development] page under Foundry Repositories&lt;br /&gt;
# Now click on the '''Padlock Button''' next to the drop down box&lt;br /&gt;
# Choose the second option '''Verify with stored host fingerprint (good)''' under Secure HTTPS Connection and Click '''Query'''. The fingerprint is (as of this writing): &amp;lt;code&amp;gt;32:1b:b2:1c:9a:fe:d9:17:b0:78:76:ea:87:68:ad:1a:34:ab:a8:8e&amp;lt;/code&amp;gt;&lt;br /&gt;
# Put your Username (all lowercase) and Password for your JIRA Account in the appropriate boxes and click '''Save'''&lt;br /&gt;
# On the right hand side of the screen is a '''Save''' button click it and the Save on the window that pops up&lt;br /&gt;
# On the same toolbar used in step 5. Click on the button with the two yellow cylinders and the green arrow pointing towards you. This is the '''Pull incoming changes''' button.&lt;br /&gt;
# After the download is complete you must update the local repository before being able to use it. Open the Output Log either by using Ctrl + L or in the View menu as '''Show Output Log'''&lt;br /&gt;
# After the % sign on the last line of the Output Log type: &amp;lt;code&amp;gt;hg update&amp;lt;/code&amp;gt;&lt;br /&gt;
# You should get a command completed successfully line.&lt;br /&gt;
# You are now ready to work on/view the code.&lt;br /&gt;
&lt;br /&gt;
=== TortoiseSVN (Subversion) ===&lt;br /&gt;
There is no requirement to install the certificate for TortoiseSVN.&lt;br /&gt;
&lt;br /&gt;
=== MacHg (Mercurial) ===&lt;br /&gt;
# Append the certificate to the end of your ~/Library/Application Support/MacHg/TrustedCertificates.pem file.&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1329</id>
		<title>MOSS/Distribution Specific Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1329"/>
		<updated>2011-10-20T09:14:25Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* MacOS X */  how to build the uuid generator on Mac OS X&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document is meant to collect any known distribution-specific instructions&lt;br /&gt;
for installing MOSS. There are two main parts: installing the prerequisite&lt;br /&gt;
packages, and setting up the PostgreSQL database. Feel free to add any other&lt;br /&gt;
notes you may find useful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prerequisite Packages ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Only PostgreSQL and the autotools are needed. You can build the packages&lt;br /&gt;
or use the prebuilt packages with pkg_add.&lt;br /&gt;
&lt;br /&gt;
 pkg_add automake&lt;br /&gt;
 pkg_add libtool&lt;br /&gt;
 pkg_add libpqxx&lt;br /&gt;
I recommend starting with libpqxx because it seems to lag the postgresql-client&lt;br /&gt;
package, and installing libpqxx will get the correct client.&lt;br /&gt;
 pkg_add postgresqlNN-server&lt;br /&gt;
Get the version number to match the client installed for pqxx.&lt;br /&gt;
&lt;br /&gt;
Now follow the instructions:&lt;br /&gt;
* copy /usr/pkg/share/examples/rc.d/pgsql to /etc/rc.d/pgsql&lt;br /&gt;
* chmod 555 /etc/rc.d/pgsql&lt;br /&gt;
* append pgsql=YES to /etc/rc.conf&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
First, you will need the MacOS X developer tools installed.&lt;br /&gt;
&lt;br /&gt;
Second, you will need to install libpqxx, zlib, and postgresql.  Here is one approach:&lt;br /&gt;
&lt;br /&gt;
You can use [[http://www.macports.org/ MacPorts]] to install as follows:&lt;br /&gt;
 sudo port install libpqxx zlib postgresql84 postgresql84-server&lt;br /&gt;
&lt;br /&gt;
Some instruction guides for installing PostgreSQL (such as the README for EnterpriseDB's version) suggest editing /etc/sysctl.conf and increasing the shmall setting from the default (8192 under Mac OS X 10.6, exactly 1/4096th of shmmax).  Whatever number you choose for shmall, it should be (a) smaller than shmmax, and (b) divisible by 4096.  For example, a valid value might be:&lt;br /&gt;
 kern.sysv.shmall=65536&lt;br /&gt;
&lt;br /&gt;
MacPorts might not create the user and group accounts for postgres.  For some reason, most instructions for installing PostgreSQL from MacPorts seem to gloss over this issue.  You may need to manually create the postgres User and Group.  This is accomplished in two phases.&lt;br /&gt;
&lt;br /&gt;
First, identify the last user and group IDs already present.&lt;br /&gt;
 sudo dscl . -list /Users UniqueID | sort -n -k 2 | tail -n 1&lt;br /&gt;
 sudo dscl . -list /Groups PrimaryGroupID | sort -n -k 2 | tail -n 1&lt;br /&gt;
For each, take the number shown and add 1.  These are your UniqueID and PrimaryGroupID numbers.  &lt;br /&gt;
&lt;br /&gt;
Second, replace the ### in the following commands as indicated to create the user and group.&lt;br /&gt;
 sudo dscl . -create /Users/postgres UniqueID ###&lt;br /&gt;
 sudo dscl . -create /Users/postgres PrimaryGroupID ###&lt;br /&gt;
 sudo dscl . -create /Users/postgres HomeDirectory /opt/local/var/db/postgresql84&lt;br /&gt;
 sudo dscl . -create /Users/postgres UserShell /usr/bin/false&lt;br /&gt;
 sudo dscl . -create /Users/postgres RealName &amp;quot;PostgreSQL Administrator&amp;quot;&lt;br /&gt;
 sudo dscl . -create /Users/postgres Password \*&lt;br /&gt;
 sudo dscl . -create /Groups/postgres PrimaryGroupID ###&lt;br /&gt;
 sudo dscl . -create /Groups/postgres Password \*&lt;br /&gt;
&lt;br /&gt;
The following instructions must be performed after installing PostgreSQL.  If the 'chown' step fails, then you're probably missing the user and group settings indicated above.&lt;br /&gt;
 sudo mkdir -p /opt/local/var/db/postgresql84/defaultdb&lt;br /&gt;
 sudo chown postgres:postgres /opt/local/var/db/postgresql84/defaultdb&lt;br /&gt;
 sudo su postgres -c '/opt/local/lib/postgresql84/bin/initdb -D /opt/local/var/db/postgresql84/defaultdb'&lt;br /&gt;
 sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql84-server.plist&lt;br /&gt;
&lt;br /&gt;
== Database Setup ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Copy moss_uuidgen.so to /usr/pkg/lib/postgresql/&lt;br /&gt;
&lt;br /&gt;
The database user is &amp;lt;tt&amp;gt;pgsql&amp;lt;/tt&amp;gt;. It has root access to the DB by default.&lt;br /&gt;
Connect from localhost (the default).&lt;br /&gt;
&lt;br /&gt;
Create the database:&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres&amp;quot;&lt;br /&gt;
 create database moss with encoding='UTF8';&lt;br /&gt;
 \c moss&lt;br /&gt;
 create role moss with login;&lt;br /&gt;
 \q&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres -f moss.sql&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then set db_user=moss in moss_backend.cfg.&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
{{tba}}&lt;br /&gt;
&lt;br /&gt;
== Additional Notes ==&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
The bootstrap.sh file does not currently work because libtoolize is named glibtoolize under MacOS.  A patch has been submitted.  With the patched boostrap, you'll just need to &amp;lt;code&amp;gt;export LIBTOOLIZE=glibtoolize&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you installed PostgreSQL and libpqxx from MacPorts, your configure command line will need to look like this:&lt;br /&gt;
 ./configure --with-postgres=/opt/local/lib/postgresql84 --with-libpqxx=/opt/local&lt;br /&gt;
&lt;br /&gt;
In the postgres subdirectory, the Makefile for the UUID generator expects pg_config to be in your PATH.&lt;br /&gt;
 export PATH=${PATH}:/opt/local/lib/postgresql84/bin&lt;br /&gt;
&lt;br /&gt;
The UUID generator Makefile may also fail because the MacPorts package doesn't automate linking to SSL.  Alternate Makefile:&lt;br /&gt;
 MODULE_big = moss_uuidgen&lt;br /&gt;
 SHLIB_LINK += -lssl&lt;br /&gt;
 PGXS := $(shell pg_config --pgxs)&lt;br /&gt;
 include $(PGXS)&lt;br /&gt;
&lt;br /&gt;
[[Category:MOSS]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1328</id>
		<title>MOSS/Distribution Specific Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1328"/>
		<updated>2011-10-20T07:48:24Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* MacOS X */ fixed command line example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document is meant to collect any known distribution-specific instructions&lt;br /&gt;
for installing MOSS. There are two main parts: installing the prerequisite&lt;br /&gt;
packages, and setting up the PostgreSQL database. Feel free to add any other&lt;br /&gt;
notes you may find useful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prerequisite Packages ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Only PostgreSQL and the autotools are needed. You can build the packages&lt;br /&gt;
or use the prebuilt packages with pkg_add.&lt;br /&gt;
&lt;br /&gt;
 pkg_add automake&lt;br /&gt;
 pkg_add libtool&lt;br /&gt;
 pkg_add libpqxx&lt;br /&gt;
I recommend starting with libpqxx because it seems to lag the postgresql-client&lt;br /&gt;
package, and installing libpqxx will get the correct client.&lt;br /&gt;
 pkg_add postgresqlNN-server&lt;br /&gt;
Get the version number to match the client installed for pqxx.&lt;br /&gt;
&lt;br /&gt;
Now follow the instructions:&lt;br /&gt;
* copy /usr/pkg/share/examples/rc.d/pgsql to /etc/rc.d/pgsql&lt;br /&gt;
* chmod 555 /etc/rc.d/pgsql&lt;br /&gt;
* append pgsql=YES to /etc/rc.conf&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
First, you will need the MacOS X developer tools installed.&lt;br /&gt;
&lt;br /&gt;
Second, you will need to install libpqxx, zlib, and postgresql.  Here is one approach:&lt;br /&gt;
&lt;br /&gt;
You can use [[http://www.macports.org/ MacPorts]] to install as follows:&lt;br /&gt;
 sudo port install libpqxx zlib postgresql84 postgresql84-server&lt;br /&gt;
&lt;br /&gt;
Some instruction guides for installing PostgreSQL (such as the README for EnterpriseDB's version) suggest editing /etc/sysctl.conf and increasing the shmall setting from the default (8192 under Mac OS X 10.6, exactly 1/4096th of shmmax).  Whatever number you choose for shmall, it should be (a) smaller than shmmax, and (b) divisible by 4096.  For example, a valid value might be:&lt;br /&gt;
 kern.sysv.shmall=65536&lt;br /&gt;
&lt;br /&gt;
MacPorts might not create the user and group accounts for postgres.  For some reason, most instructions for installing PostgreSQL from MacPorts seem to gloss over this issue.  You may need to manually create the postgres User and Group.  This is accomplished in two phases.&lt;br /&gt;
&lt;br /&gt;
First, identify the last user and group IDs already present.&lt;br /&gt;
 sudo dscl . -list /Users UniqueID | sort -n -k 2 | tail -n 1&lt;br /&gt;
 sudo dscl . -list /Groups PrimaryGroupID | sort -n -k 2 | tail -n 1&lt;br /&gt;
For each, take the number shown and add 1.  These are your UniqueID and PrimaryGroupID numbers.  &lt;br /&gt;
&lt;br /&gt;
Second, replace the ### in the following commands as indicated to create the user and group.&lt;br /&gt;
 sudo dscl . -create /Users/postgres UniqueID ###&lt;br /&gt;
 sudo dscl . -create /Users/postgres PrimaryGroupID ###&lt;br /&gt;
 sudo dscl . -create /Users/postgres HomeDirectory /opt/local/var/db/postgresql84&lt;br /&gt;
 sudo dscl . -create /Users/postgres UserShell /usr/bin/false&lt;br /&gt;
 sudo dscl . -create /Users/postgres RealName &amp;quot;PostgreSQL Administrator&amp;quot;&lt;br /&gt;
 sudo dscl . -create /Users/postgres Password \*&lt;br /&gt;
 sudo dscl . -create /Groups/postgres PrimaryGroupID ###&lt;br /&gt;
 sudo dscl . -create /Groups/postgres Password \*&lt;br /&gt;
&lt;br /&gt;
The following instructions must be performed after installing PostgreSQL.  If the 'chown' step fails, then you're probably missing the user and group settings indicated above.&lt;br /&gt;
 sudo mkdir -p /opt/local/var/db/postgresql84/defaultdb&lt;br /&gt;
 sudo chown postgres:postgres /opt/local/var/db/postgresql84/defaultdb&lt;br /&gt;
 sudo su postgres -c '/opt/local/lib/postgresql84/bin/initdb -D /opt/local/var/db/postgresql84/defaultdb'&lt;br /&gt;
 sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql84-server.plist&lt;br /&gt;
&lt;br /&gt;
== Database Setup ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Copy moss_uuidgen.so to /usr/pkg/lib/postgresql/&lt;br /&gt;
&lt;br /&gt;
The database user is &amp;lt;tt&amp;gt;pgsql&amp;lt;/tt&amp;gt;. It has root access to the DB by default.&lt;br /&gt;
Connect from localhost (the default).&lt;br /&gt;
&lt;br /&gt;
Create the database:&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres&amp;quot;&lt;br /&gt;
 create database moss with encoding='UTF8';&lt;br /&gt;
 \c moss&lt;br /&gt;
 create role moss with login;&lt;br /&gt;
 \q&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres -f moss.sql&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then set db_user=moss in moss_backend.cfg.&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
{{tba}}&lt;br /&gt;
&lt;br /&gt;
== Additional Notes ==&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
The bootstrap.sh file does not currently work because libtoolize is named glibtoolize under MacOS.  A patch has been submitted.  With the patched boostrap, you'll just need to &amp;lt;code&amp;gt;export LIBTOOLIZE=glibtoolize&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you installed PostgreSQL and libpqxx from MacPorts, your configure command line will need to look like this:&lt;br /&gt;
 ./configure --with-postgres=/opt/local/lib/postgresql84 --with-libpqxx=/opt/local&lt;br /&gt;
&lt;br /&gt;
[[Category:MOSS]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1327</id>
		<title>MOSS/Distribution Specific Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1327"/>
		<updated>2011-10-20T07:43:41Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* MacOS X */ add the shmem and user settings for macports&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document is meant to collect any known distribution-specific instructions&lt;br /&gt;
for installing MOSS. There are two main parts: installing the prerequisite&lt;br /&gt;
packages, and setting up the PostgreSQL database. Feel free to add any other&lt;br /&gt;
notes you may find useful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prerequisite Packages ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Only PostgreSQL and the autotools are needed. You can build the packages&lt;br /&gt;
or use the prebuilt packages with pkg_add.&lt;br /&gt;
&lt;br /&gt;
 pkg_add automake&lt;br /&gt;
 pkg_add libtool&lt;br /&gt;
 pkg_add libpqxx&lt;br /&gt;
I recommend starting with libpqxx because it seems to lag the postgresql-client&lt;br /&gt;
package, and installing libpqxx will get the correct client.&lt;br /&gt;
 pkg_add postgresqlNN-server&lt;br /&gt;
Get the version number to match the client installed for pqxx.&lt;br /&gt;
&lt;br /&gt;
Now follow the instructions:&lt;br /&gt;
* copy /usr/pkg/share/examples/rc.d/pgsql to /etc/rc.d/pgsql&lt;br /&gt;
* chmod 555 /etc/rc.d/pgsql&lt;br /&gt;
* append pgsql=YES to /etc/rc.conf&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
First, you will need the MacOS X developer tools installed.&lt;br /&gt;
&lt;br /&gt;
Second, you will need to install libpqxx, zlib, and postgresql.  Here is one approach:&lt;br /&gt;
&lt;br /&gt;
You can use [[http://www.macports.org/ MacPorts]] to install as follows:&lt;br /&gt;
 sudo port install libpqxx zlib postgresql84 postgresql84-server&lt;br /&gt;
&lt;br /&gt;
Some instruction guides for installing PostgreSQL (such as the README for EnterpriseDB's version) suggest editing /etc/sysctl.conf and increasing the shmall setting from the default (8192 under Mac OS X 10.6, exactly 1/4096th of shmmax).  Whatever number you choose for shmall, it should be (a) smaller than shmmax, and (b) divisible by 4096.  For example, a valid value might be:&lt;br /&gt;
 kern.sysv.shmall=65536&lt;br /&gt;
&lt;br /&gt;
MacPorts might not create the user and group accounts for postgres.  For some reason, most instructions for installing PostgreSQL from MacPorts seem to gloss over this issue.  You may need to manually create the postgres User and Group.  This is accomplished in two phases.&lt;br /&gt;
&lt;br /&gt;
First, identify the last user and group IDs already present.&lt;br /&gt;
 sudo dscl . -list /Users UniqueID | sort -n -k 2 | tail -n 1&lt;br /&gt;
 sudo dscl . -list /Groups PrimaryGroupID | sort -n -k 2 | tail -n 1&lt;br /&gt;
For each, take the number shown and add 1.  These are your UniqueID and PrimaryGroupID numbers.  &lt;br /&gt;
&lt;br /&gt;
Second, replace the ### in the following commands as indicated to create the user and group.&lt;br /&gt;
 sudo dscl . -create /Users/postgres UniqueID ###&lt;br /&gt;
 sudo dscl . -create /Users/postgres PrimaryGroupID ###&lt;br /&gt;
 sudo dscl . -create /Users/postgres HomeDirectory /opt/local/var/db/postgresql84&lt;br /&gt;
 sudo dscl . -create /Users/postgres UserShell /usr/bin/false&lt;br /&gt;
 sudo dscl . -create /Users/postgres RealName &amp;quot;PostgreSQL Administrator&amp;quot;&lt;br /&gt;
 sudo dscl . -create /Users/postgres Password \*&lt;br /&gt;
 sudo dscl . -create /Groups/postgres PrimaryGroupID ###&lt;br /&gt;
 sudo dscl . -create /Groups/postgres Password \*&lt;br /&gt;
&lt;br /&gt;
The following instructions must be performed after installing PostgreSQL.  If the 'chown' step fails, then you're probably missing the user and group settings indicated above.&lt;br /&gt;
 sudo mkdir -p /opt/local/var/db/postgresql84/defaultdb&lt;br /&gt;
 sudo chown postgres:postgres /opt/local/var/db/postgresql84/defaultdb&lt;br /&gt;
 sudo su postgres -c '/opt/local/lib/postgresql84/bin/initdb -D /opt/local/var/db/postgresql84/defaultdb'&lt;br /&gt;
 sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql84-server.plist&lt;br /&gt;
&lt;br /&gt;
== Database Setup ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Copy moss_uuidgen.so to /usr/pkg/lib/postgresql/&lt;br /&gt;
&lt;br /&gt;
The database user is &amp;lt;tt&amp;gt;pgsql&amp;lt;/tt&amp;gt;. It has root access to the DB by default.&lt;br /&gt;
Connect from localhost (the default).&lt;br /&gt;
&lt;br /&gt;
Create the database:&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres&amp;quot;&lt;br /&gt;
 create database moss with encoding='UTF8';&lt;br /&gt;
 \c moss&lt;br /&gt;
 create role moss with login;&lt;br /&gt;
 \q&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres -f moss.sql&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then set db_user=moss in moss_backend.cfg.&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
{{tba}}&lt;br /&gt;
&lt;br /&gt;
== Additional Notes ==&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
The bootstrap.sh file does not currently work because libtoolize is named glibtoolize under MacOS.  A patch has been submitted.  With the patched boostrap, you'll just need to &amp;lt;code&amp;gt;export LIBTOOLIZE=glibtoolize&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
MacPorts tools are installed to /opt/local .  So, your command line may look like this:&lt;br /&gt;
 ./configure --with-postgres=/opt/local&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:MOSS]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1326</id>
		<title>MOSS/Distribution Specific Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1326"/>
		<updated>2011-10-20T06:35:51Z</updated>

		<summary type="html">&lt;p&gt;Marten: MacOS X fixes... can't mix MacPorts and EnterpriseDB Postgres.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document is meant to collect any known distribution-specific instructions&lt;br /&gt;
for installing MOSS. There are two main parts: installing the prerequisite&lt;br /&gt;
packages, and setting up the PostgreSQL database. Feel free to add any other&lt;br /&gt;
notes you may find useful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prerequisite Packages ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Only PostgreSQL and the autotools are needed. You can build the packages&lt;br /&gt;
or use the prebuilt packages with pkg_add.&lt;br /&gt;
&lt;br /&gt;
 pkg_add automake&lt;br /&gt;
 pkg_add libtool&lt;br /&gt;
 pkg_add libpqxx&lt;br /&gt;
I recommend starting with libpqxx because it seems to lag the postgresql-client&lt;br /&gt;
package, and installing libpqxx will get the correct client.&lt;br /&gt;
 pkg_add postgresqlNN-server&lt;br /&gt;
Get the version number to match the client installed for pqxx.&lt;br /&gt;
&lt;br /&gt;
Now follow the instructions:&lt;br /&gt;
* copy /usr/pkg/share/examples/rc.d/pgsql to /etc/rc.d/pgsql&lt;br /&gt;
* chmod 555 /etc/rc.d/pgsql&lt;br /&gt;
* append pgsql=YES to /etc/rc.conf&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
First, you will need the MacOS X developer tools installed.&lt;br /&gt;
&lt;br /&gt;
Second, you will need to install libpqxx, zlib, and postgresql.  Here is one approach:&lt;br /&gt;
&lt;br /&gt;
You can use [[http://www.macports.org/ MacPorts]] to install libpqxx and zlib:&lt;br /&gt;
 sudo port install libpqxx zlib postgresql84&lt;br /&gt;
&lt;br /&gt;
 {{tba}} Need to add user account and shared memory setup recommendations here.&lt;br /&gt;
&lt;br /&gt;
== Database Setup ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Copy moss_uuidgen.so to /usr/pkg/lib/postgresql/&lt;br /&gt;
&lt;br /&gt;
The database user is &amp;lt;tt&amp;gt;pgsql&amp;lt;/tt&amp;gt;. It has root access to the DB by default.&lt;br /&gt;
Connect from localhost (the default).&lt;br /&gt;
&lt;br /&gt;
Create the database:&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres&amp;quot;&lt;br /&gt;
 create database moss with encoding='UTF8';&lt;br /&gt;
 \c moss&lt;br /&gt;
 create role moss with login;&lt;br /&gt;
 \q&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres -f moss.sql&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then set db_user=moss in moss_backend.cfg.&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
{{tba}}&lt;br /&gt;
&lt;br /&gt;
== Additional Notes ==&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
The bootstrap.sh file does not currently work because libtoolize is named glibtoolize under MacOS.  A patch has been submitted.  With the patched boostrap, you'll just need to &amp;lt;code&amp;gt;export LIBTOOLIZE=glibtoolize&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
MacPorts tools are installed to /opt/local .  So, your command line may look like this:&lt;br /&gt;
 ./configure --with-postgres=/opt/local&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:MOSS]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1325</id>
		<title>MOSS/Distribution Specific Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1325"/>
		<updated>2011-10-20T06:17:32Z</updated>

		<summary type="html">&lt;p&gt;Marten: More MacOS X&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document is meant to collect any known distribution-specific instructions&lt;br /&gt;
for installing MOSS. There are two main parts: installing the prerequisite&lt;br /&gt;
packages, and setting up the PostgreSQL database. Feel free to add any other&lt;br /&gt;
notes you may find useful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prerequisite Packages ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Only PostgreSQL and the autotools are needed. You can build the packages&lt;br /&gt;
or use the prebuilt packages with pkg_add.&lt;br /&gt;
&lt;br /&gt;
 pkg_add automake&lt;br /&gt;
 pkg_add libtool&lt;br /&gt;
 pkg_add libpqxx&lt;br /&gt;
I recommend starting with libpqxx because it seems to lag the postgresql-client&lt;br /&gt;
package, and installing libpqxx will get the correct client.&lt;br /&gt;
 pkg_add postgresqlNN-server&lt;br /&gt;
Get the version number to match the client installed for pqxx.&lt;br /&gt;
&lt;br /&gt;
Now follow the instructions:&lt;br /&gt;
* copy /usr/pkg/share/examples/rc.d/pgsql to /etc/rc.d/pgsql&lt;br /&gt;
* chmod 555 /etc/rc.d/pgsql&lt;br /&gt;
* append pgsql=YES to /etc/rc.conf&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
First, you will need the MacOS X developer tools installed.&lt;br /&gt;
&lt;br /&gt;
Second, you will need to install libpqxx, zlib, and postgresql.  Here is one approach:&lt;br /&gt;
&lt;br /&gt;
You can use [[http://www.macports.org/ MacPorts]] to install libpqxx and zlib:&lt;br /&gt;
 sudo port install libpqxx zlib&lt;br /&gt;
&lt;br /&gt;
Download and install PostgreSQL in .dmg format from http://www.enterprisedb.com/products-services-training/pgdownload#osx ; this will set up user accounts.  You can use Version 8.x on PowerPC or Intel 32-bit, but if you need 64-bit you'll have to download version 9 or later.  Be certain to follow the included README for a prerequisite step involving shared memory.&lt;br /&gt;
&lt;br /&gt;
== Database Setup ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Copy moss_uuidgen.so to /usr/pkg/lib/postgresql/&lt;br /&gt;
&lt;br /&gt;
The database user is &amp;lt;tt&amp;gt;pgsql&amp;lt;/tt&amp;gt;. It has root access to the DB by default.&lt;br /&gt;
Connect from localhost (the default).&lt;br /&gt;
&lt;br /&gt;
Create the database:&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres&amp;quot;&lt;br /&gt;
 create database moss with encoding='UTF8';&lt;br /&gt;
 \c moss&lt;br /&gt;
 create role moss with login;&lt;br /&gt;
 \q&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres -f moss.sql&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then set db_user=moss in moss_backend.cfg.&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
{{tba}}&lt;br /&gt;
&lt;br /&gt;
== Additional Notes ==&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
The bootstrap.sh file does not currently work because libtoolize is named glibtoolize under MacOS.  A patch has been submitted.  With the patched boostrap, you'll just need to &amp;lt;code&amp;gt;export LIBTOOLIZE=glibtoolize&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you use the PostgreSQL package from EnterpriseDB then by default it is installed to /Library/PostgreSQL/&amp;lt;version&amp;gt;/&amp;lt;bin, data, doc, include, lib, etcetera&amp;gt;.  You will need to use the &amp;lt;code&amp;gt;--with-postgres=PREFIX&amp;lt;/code&amp;gt; option when you run &amp;lt;code&amp;gt;./configure&amp;lt;/code&amp;gt;.  Configure will then expect libpqxx to be installed in the same place as PostgreSQL, so if you installed libpqxx from MacPorts then you'll need to use the &amp;lt;code&amp;gt;--with-libpqxx=PREFIX&amp;lt;/code&amp;gt; option to point at /opt/local .  So, your command line may look like this:&lt;br /&gt;
 ./configure --with-postgres=/Library/PostgreSQL/9.0 --with-libpqxx=/opt/local&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:MOSS]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Talk:Instancing_-_Bookmarks&amp;diff=1324</id>
		<title>Talk:Instancing - Bookmarks</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Talk:Instancing_-_Bookmarks&amp;diff=1324"/>
		<updated>2011-10-20T04:51:19Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* Response to 75th's thoughts */ new section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== TOC ==&lt;br /&gt;
&lt;br /&gt;
I've restored the &amp;lt;nowiki&amp;gt;{{TOClimit}}&amp;lt;/nowiki&amp;gt; template call with a level limit of 2 (as you had tried originally). I'm not sure if that's really what you meant, since that only gives the top level headings (which are actually level 2 headings). TOClimit without a parameter gives you the level 2 and level 3 headings: [[Template:TOClimit/doc]]. -- [[User:Mac Fife|Mac Fife]] 08:03, 29 January 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
== 75th Trombone's thoughts ==&lt;br /&gt;
&lt;br /&gt;
''&amp;quot;In this proposal, a player can reach a friend's Age by … [joining] a group where the friend is leader. Use the Group Journey bookmark with any book or Bahro stone that links to the friend's collected and unlocked Age.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
How do you alert users if they attempt to put your bookmark on a Book to an Age that you don't have? If you don't show your bookmarks on such books but do show them on others, how do players know why your bookmark doesn't always appear?&lt;br /&gt;
&lt;br /&gt;
I don't think it's very intuitive to put a piece of cloth with my name on a Book to change where that Book goes; it's much, much more clear what's going on when you actually use my Relto bookshelf.&lt;br /&gt;
&lt;br /&gt;
The main problem I see your proposal solving is letting groups regather after getting separated from the leader. I think the simplest, best, and most understandable way of doing this is providing them an easy way to get back to my Relto and use my unlocked books again.&lt;br /&gt;
&lt;br /&gt;
== Response to 75th's thoughts ==&lt;br /&gt;
&lt;br /&gt;
Replying some 2 years later... since Open Source is finally upon us, I felt like fleshing out my thoughts a bit.&lt;br /&gt;
&lt;br /&gt;
It's clear that I've failed to convey some parts of my concept adequately, that leads to some of the blanks being filled in with things I didn't mean or say... so I will do my best to clarify.&lt;br /&gt;
&lt;br /&gt;
''How do you alert users if they attempt to put your bookmark on a Book to an Age that you don't have? If you don't show your bookmarks on such books but do show them on others, how do players know why your bookmark doesn't always appear?''&lt;br /&gt;
&lt;br /&gt;
A person cannot move another person's bookmark from one book to another.  If your question was instead, &amp;quot;How do you alert a user when he or she attempts to use his or her (group) bookmark on a book that the group leader does not possess?&amp;quot;, I have an answer for that.  The way I had intended this to work was that the group bookmark would not be selectable.  It would be present (because if you are in a group, group bookmarks appear, and if you are not in a group, they don't) but it would be disabled in some visual, meaningful way (maybe a symbol on it turns red?).  If a user clicks on the disabled bookmark, a pop-up could provide an explanation that the group leader does not possess the book.  (I feel there has to be some compromise between an interface that is unobtrusive and doesn't break the 4th wall, and being able to explain to users why they cannot do a thing.  Uru is full of enough undocumented user interfaces already.  Basic gameplay should not be a puzzle unto itself.)&lt;br /&gt;
&lt;br /&gt;
''I don't think it's very intuitive to put a piece of cloth with my name on a Book to change where that Book goes; it's much, much more clear what's going on when you actually use my Relto bookshelf.''&lt;br /&gt;
&lt;br /&gt;
''The main problem I see your proposal solving is letting groups regather after getting separated from the leader.''&lt;br /&gt;
&lt;br /&gt;
Cloths wouldn't have names on them, nor do they really change &amp;quot;where a book goes&amp;quot;; laying a bookmark across a Myst book does not cause it to link to Tomahna instead.  There would be a &amp;quot;Solo journey&amp;quot; bookmark and a &amp;quot;Group journey&amp;quot; bookmark, not even represented with words but by symbols (single hand vs two hands), and by laying one across a book, it changes the instancing rules.  Though I didn't say it before, I think the mechanics of these bookmarks would need to be introduced to a new player in some story-integral way to address the &amp;quot;is this intuitive?&amp;quot; issue.&lt;br /&gt;
&lt;br /&gt;
I agree that what happens when you use your Relto bookshelf is nice and clear, but unfortunately, Relto's behavior cannot be applied as a model throughout the game, and I would object to being required to travel to Relto to be part of a group (and I'm sure I would not be alone in my protest).  &lt;br /&gt;
&lt;br /&gt;
My proposal is intended to solve more than mere group mechanics.  I'm trying to lay down not just a consistent approach to instancing, but also a logical one that separates Yeesha magic from D'ni technology.  This is a huge sticking point for me.&lt;br /&gt;
&lt;br /&gt;
Why am I able to reach my private instances from Nexus?  Why am I able to share invites so that other people can reach my instances through the Nexus?  These are gameplay mechanics that Cyan added to avoid the &amp;quot;must always go to Relto to be in a group&amp;quot; problem, but it breaks the rules.  The books in Relto can use Yeesha magic, that they even appear there at all is Yeesha magic, but Nexus is technology; it shouldn't have multiple Teledahn books leading to different instances.&lt;br /&gt;
&lt;br /&gt;
The idea that the user has 2 magic bookmarks, given to him or her by Yeesha, solves this issue universally throughout the game.  Any book you lay a bookmark over would be touched by Yeesha's magic; suddenly, it can lead you to a private version all your own, or shared just with your friends.  Remove the bookmark, and it's a normal linking book again like those in Myst and Riven, and touching it will only take you to the &amp;quot;real&amp;quot; or &amp;quot;prime&amp;quot; version of the Age.&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1321</id>
		<title>MOSS/Distribution Specific Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1321"/>
		<updated>2011-10-20T00:10:18Z</updated>

		<summary type="html">&lt;p&gt;Marten: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document is meant to collect any known distribution-specific instructions&lt;br /&gt;
for installing MOSS. There are two main parts: installing the prerequisite&lt;br /&gt;
packages, and setting up the PostgreSQL database. Feel free to add any other&lt;br /&gt;
notes you may find useful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prerequisite Packages ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Only PostgreSQL and the autotools are needed. You can build the packages&lt;br /&gt;
or use the prebuilt packages with pkg_add.&lt;br /&gt;
&lt;br /&gt;
 pkg_add automake&lt;br /&gt;
 pkg_add libtool&lt;br /&gt;
 pkg_add libpqxx&lt;br /&gt;
I recommend starting with libpqxx because it seems to lag the postgresql-client&lt;br /&gt;
package, and installing libpqxx will get the correct client.&lt;br /&gt;
 pkg_add postgresqlNN-server&lt;br /&gt;
Get the version number to match the client installed for pqxx.&lt;br /&gt;
&lt;br /&gt;
Now follow the instructions:&lt;br /&gt;
* copy /usr/pkg/share/examples/rc.d/pgsql to /etc/rc.d/pgsql&lt;br /&gt;
* chmod 555 /etc/rc.d/pgsql&lt;br /&gt;
* append pgsql=YES to /etc/rc.conf&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
First, you will need the MacOS X developer tools installed.&lt;br /&gt;
&lt;br /&gt;
Second, you will need to install libpqxx, zlib, and postgresql.  Here is one approach:&lt;br /&gt;
&lt;br /&gt;
You can use [[http://www.macports.org/ MacPorts]] to install libpqxx and zlib:&lt;br /&gt;
 sudo port install libpqxx zlib&lt;br /&gt;
&lt;br /&gt;
Download and install PostgreSQL 8.49-1 or similar in .dmg format from http://www.enterprisedb.com/products-services-training/pgdownload#osx ; this will set up user accounts.  Be certain to follow the included README for a prerequisite step involving shared memory.&lt;br /&gt;
&lt;br /&gt;
== Database Setup ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Copy moss_uuidgen.so to /usr/pkg/lib/postgresql/&lt;br /&gt;
&lt;br /&gt;
The database user is &amp;lt;tt&amp;gt;pgsql&amp;lt;/tt&amp;gt;. It has root access to the DB by default.&lt;br /&gt;
Connect from localhost (the default).&lt;br /&gt;
&lt;br /&gt;
Create the database:&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres&amp;quot;&lt;br /&gt;
 create database moss with encoding='UTF8';&lt;br /&gt;
 \c moss&lt;br /&gt;
 create role moss with login;&lt;br /&gt;
 \q&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres -f moss.sql&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then set db_user=moss in moss_backend.cfg.&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
{{tba}}&lt;br /&gt;
&lt;br /&gt;
== Additional Notes ==&lt;br /&gt;
&lt;br /&gt;
[[Category:MOSS]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1320</id>
		<title>MOSS/Distribution Specific Instructions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=MOSS/Distribution_Specific_Instructions&amp;diff=1320"/>
		<updated>2011-10-20T00:01:39Z</updated>

		<summary type="html">&lt;p&gt;Marten: Mac OS X info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document is meant to collect any known distribution-specific instructions&lt;br /&gt;
for installing MOSS. There are two main parts: installing the prerequisite&lt;br /&gt;
packages, and setting up the PostgreSQL database. Feel free to add any other&lt;br /&gt;
notes you may find useful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prerequisite Packages ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Only PostgreSQL and the autotools are needed. You can build the packages&lt;br /&gt;
or use the prebuilt packages with pkg_add.&lt;br /&gt;
&lt;br /&gt;
 pkg_add automake&lt;br /&gt;
 pkg_add libtool&lt;br /&gt;
 pkg_add libpqxx&lt;br /&gt;
I recommend starting with libpqxx because it seems to lag the postgresql-client&lt;br /&gt;
package, and installing libpqxx will get the correct client.&lt;br /&gt;
 pkg_add postgresqlNN-server&lt;br /&gt;
Get the version number to match the client installed for pqxx.&lt;br /&gt;
&lt;br /&gt;
Now follow the instructions:&lt;br /&gt;
* copy /usr/pkg/share/examples/rc.d/pgsql to /etc/rc.d/pgsql&lt;br /&gt;
* chmod 555 /etc/rc.d/pgsql&lt;br /&gt;
* append pgsql=YES to /etc/rc.conf&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
First, you will need the MacOS X developer tools installed.&lt;br /&gt;
&lt;br /&gt;
Second, you will need to install libpqxx, zlib, and postgresql.  Here is one approach:&lt;br /&gt;
&lt;br /&gt;
You can use [[http://www.macports.org/ MacPorts]] to install libpqxx and zlib:&lt;br /&gt;
 sudo port install libpqxx zlib&lt;br /&gt;
&lt;br /&gt;
Download and install PostgreSQL 8.49-1 or similar in .dmg format from http://www.enterprisedb.com/products-services-training/pgdownload#osx ; this will set up user accounts and adjust shared memory settings automatically for you.  &lt;br /&gt;
&lt;br /&gt;
== Database Setup ==&lt;br /&gt;
&lt;br /&gt;
=== NetBSD pkgsrc ===&lt;br /&gt;
&lt;br /&gt;
Copy moss_uuidgen.so to /usr/pkg/lib/postgresql/&lt;br /&gt;
&lt;br /&gt;
The database user is &amp;lt;tt&amp;gt;pgsql&amp;lt;/tt&amp;gt;. It has root access to the DB by default.&lt;br /&gt;
Connect from localhost (the default).&lt;br /&gt;
&lt;br /&gt;
Create the database:&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres&amp;quot;&lt;br /&gt;
 create database moss with encoding='UTF8';&lt;br /&gt;
 \c moss&lt;br /&gt;
 create role moss with login;&lt;br /&gt;
 \q&lt;br /&gt;
 su -m pgsql -c &amp;quot;psql postgres -f moss.sql&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Then set db_user=moss in moss_backend.cfg.&lt;br /&gt;
&lt;br /&gt;
=== MacOS X ===&lt;br /&gt;
&lt;br /&gt;
{{tba}}&lt;br /&gt;
&lt;br /&gt;
== Additional Notes ==&lt;br /&gt;
&lt;br /&gt;
[[Category:MOSS]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=MOSS/Project_Ideas&amp;diff=1319</id>
		<title>MOSS/Project Ideas</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=MOSS/Project_Ideas&amp;diff=1319"/>
		<updated>2011-10-19T23:49:45Z</updated>

		<summary type="html">&lt;p&gt;Marten: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The initial list was generated over the lengthy period of MOSS's initial&lt;br /&gt;
development. These project ideas mostly cover missing functionality. None of&lt;br /&gt;
the missing functionality is known to cause gameplay issues so these did not&lt;br /&gt;
really seem like bugs. These ideas are grouped by general type of change&lt;br /&gt;
required, and sort of by increasing approximate difficulty level and sort of by&lt;br /&gt;
decreasing value.&lt;br /&gt;
&lt;br /&gt;
Bigger ideas, such as entirely new functionality now made possible by the&lt;br /&gt;
release of the client, could go here too. Be realistic, though. Remember that&lt;br /&gt;
protocol changes are not to be made lightly, because it causes an&lt;br /&gt;
incompatibility problem. It is probably better to propose large changes in&lt;br /&gt;
discussion format on the forums. Do not ''expect'' someone else to take up and&lt;br /&gt;
implement your proposal.&lt;br /&gt;
&lt;br /&gt;
The whole idea of this list is to provide some ideas for anyone wishing to dive&lt;br /&gt;
into MOSS. Sometimes a little direction helps.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Terminology ==&lt;br /&gt;
The terms &amp;quot;frontend&amp;quot; and &amp;quot;backend&amp;quot; are used throughout this document. If the meaning is not clear from context, the terminology is explained in the [[MOSS-Developer_Notes#terminology | Developer Notes]].&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;vault&amp;quot; is basically the database, though it could be abstractly thought of as a collection of trees of vault nodes. Generally when referring to it as a set of node trees, &amp;quot;vault&amp;quot; is written and when referring to it as something with tables and rows, &amp;quot;DB&amp;quot; is written. The &amp;quot;vault server&amp;quot; is that portion of the backend concerned with handling the Vault* messages and working with the database.&lt;br /&gt;
&lt;br /&gt;
== Fix bugs ==&lt;br /&gt;
&lt;br /&gt;
The bug tracker is here: https://foundry.openuru.org/jira/browse/MOSS&lt;br /&gt;
&lt;br /&gt;
== Detail work (little Uru-specific knowledge required) ==&lt;br /&gt;
&lt;br /&gt;
* Try disabling the Nagle algorithm on sockets. This should result in less latency to the client when small messages are involved. Make sure to test the whole game thoroughly.&lt;br /&gt;
&lt;br /&gt;
* Figure out and implement a good way to use autoconf to compile in default pathnames. This would apply to the default config file, key file, moss_serv binary, and log/auth/game/file directory locations. The idea is if I say --prefix=/foo the defaults become /foo/etc/moss.cfg and so forth instead of ./etc/moss.cfg. Don't forget autoconf lets you override the etcdir, bindir, etc. separately.&lt;br /&gt;
&lt;br /&gt;
* Treat SDL filenames case-insensitively. This is very annoying in Unix, since it requires using readdir() and strcasecmp() instead of just open().&lt;br /&gt;
&lt;br /&gt;
* Make it so the game/state directory location can be separately configured. This is so the whole MOSS install can be read-only and just the log directory and game/state moved somewhere read-write. (The easy workaround is to symlink a writable directory to game/state.)&lt;br /&gt;
&lt;br /&gt;
* Log the PID of all forked servers in moss.log.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span id=&amp;quot;libevent&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;See if we can switch to libevent for inter-thread communication instead of raw signals. This should be fairly portable and take advantage of the different per-OS lightweight signalling mechanisms.&lt;br /&gt;
&lt;br /&gt;
* Allow ''skipping'' overlong messages (messages MOSS thinks are too big). This requires, upon catching the exception, tossing out the message, and if it has not all been read in yet, keeping track of how much more to toss in the future. The RC4 state must be updated too for the tossed message length.&lt;br /&gt;
&lt;br /&gt;
* It would be nice to use atomic operations for refcounts instead of having to use (bigger, slower) mutexes for them. This does make MOSS not architecture-independent, which is part of why I have been resisting it. (See also signal handling next.)&lt;br /&gt;
&lt;br /&gt;
* Signal handlers and the operations to read and reset the values in the main loops should be using atomic operations.&lt;br /&gt;
&lt;br /&gt;
* Catch and handle std::bad_alloc whenever possible.&lt;br /&gt;
&lt;br /&gt;
== Fairly contained changes ==&lt;br /&gt;
&lt;br /&gt;
* Make it so game servers can be forked as separate processes. This helps a lot for debugging and also would help for age development, making it easier to change SDL and retest. Otherwise you have to shut down the whole frontend server or wait out the age's linger time. This work was started but not completed, and that code can be found inside &amp;lt;tt&amp;gt;FORK_GAME_TOO&amp;lt;/tt&amp;gt; #ifdefs. If you do this, I suggest you consider separating &amp;lt;tt&amp;gt;FORK_GAME_TOO&amp;lt;/tt&amp;gt; from &amp;lt;tt&amp;gt;FORK_ENABLE&amp;lt;/tt&amp;gt; so that one could have forked game servers and *not* forked auth/file servers.&lt;br /&gt;
&lt;br /&gt;
* In the getpublicagelist() SQL function, there is a comment about the 50-hood limit. The current code returns the first 50 hoods. We should return the most recently used 50 hoods. The hard part is knowing which those are. This is mostly if not wholly DB/SQL work.&lt;br /&gt;
&lt;br /&gt;
* Age population limits are unimplemented. The value is in the vault, but the server does not look at it.&lt;br /&gt;
&lt;br /&gt;
* Figure out how to throw out clones and SDL when a player leaves the age. Please see the &amp;quot;clean up clone, SDL&amp;quot; section in GameServer::conn_shutdown(). Right now this is full of special cases: it handles the Kemo bugs and and Quabs specially (a different thing for each). It may be that this is required for best behavior, but I still feel like I've missed something despite heavy scrutiny of the data. This is more of a research project and not much of a code project.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span id=&amp;quot;SDL_timestamps&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;MOUL parsed SDL nodes on the way into the vault. It probably only updated the node with fields having the Dirty bit set. In addition it added timestamps to the fields because the client does not put in the timestamps (reasonably so, as its time may be wrong). MOSS currently saves the SDL wholesale. This basically works, but with the timestamps properly added, the game server can merge the vault, age, and global SDL in any order and without strange rules. Note: if you do this, you also need to write a script or some other way to update all the SDL nodes in existing MOSS DBs.&lt;br /&gt;
&lt;br /&gt;
* The kickable SDL filtering algorithm is the same one I put in Alcugs ages ago. It is better than nothing but not as good as Plasma's. You will see more warping of kickables than with Cyan's server. This project is to come up with a better way of deciding what physical SDL to send to all the clients, based on those messages all the clients are sending to the server.&lt;br /&gt;
&lt;br /&gt;
* The server is probably supposed to use RelevanceRegion information to avoid sending SDL updates to clients who don't share a relevance region with the originating client. (The idea being to reduce network traffic, since hopefully the client already avoids rendering/physics on things in irrelevant regions.) Things work if the server doesn't filter, so MOSS doesn't. Also, I do not have strong evidence to believe this supposition is actually correct. Which is the other reason MOSS doesn't do it. Finding out, and implementing it if so, would be a nice project.&lt;br /&gt;
&lt;br /&gt;
* Figure out what the server is supposed to do with plSetNetGroupIDMsg and do it. Right now MOSS just drops it to no apparent ill effect. I am deeply suspicious of this message due to seeing it at aurally unpleasant times in UU. (Old, old notes: &amp;quot;may have to do with infinitely looping scraping noises&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;tt&amp;gt;kCli2Auth_SendFriendInviteRequest&amp;lt;/tt&amp;gt; is not fully supported (it is dropped on the floor).&lt;br /&gt;
&lt;br /&gt;
== Bigger changes ==&lt;br /&gt;
&lt;br /&gt;
* The following messages are unimplemented.&lt;br /&gt;
** &amp;lt;tt&amp;gt;kCli2Auth_VaultSetSeen&amp;lt;/tt&amp;gt;  --  unimplemented in client&lt;br /&gt;
** &amp;lt;tt&amp;gt;kCli2Auth_ScoreDelete&amp;lt;/tt&amp;gt;  --  never saw one, so couldn't implement it&lt;br /&gt;
** &amp;lt;tt&amp;gt;kCli2Auth_ScoreSetPoints&amp;lt;/tt&amp;gt;  --  never saw one, so couldn't implement it&lt;br /&gt;
** &amp;lt;tt&amp;gt;kCli2Auth_ScoreGetRanks&amp;lt;/tt&amp;gt;  --  never saw one, so couldn't implement it&lt;br /&gt;
** &amp;lt;tt&amp;gt;kCli2Csr_PingRequest&amp;lt;/tt&amp;gt;  --  no recorded Csr messages&lt;br /&gt;
** &amp;lt;tt&amp;gt;kCli2Csr_RegisterRequest&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;kCli2Csr_LoginRequest&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;kCsr2Cli_PingReply&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;kCsr2Cli_RegisterReply&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;kCsr2Cli_LoginReply&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Add hood randomization to DRC hoods. Player-created hoods are randomized by the Python in the Nexus when the hood is created. DRC hoods, however, are created by the server. In MOSS's case, they are created entirely by SQL code. So adding DRC hood randomization means noticing when the DB has created a new DRC hood, creating and modifying SDL in the backend, and then finding and modifying the age SDL node for that new hood. All before responding to the client creating the new avatar and thus the new DRC hood.&lt;br /&gt;
&lt;br /&gt;
* The MessageQueue class has a concept of priorities. The idea was to enable dropping of lower-priority messages if a queue to a given client starts to back up. (The lowest priority being voice chat, then avatar movements, with world state changes being highest.) The measurement of queue length or throughput necessary for that is not implemented. So, neither is the dropping. (There is the very beginnings of some if &amp;lt;tt&amp;gt;DO_PRIORITIES&amp;lt;/tt&amp;gt; is #defined.) As such, queue users don't do a good job of priority-setting, although VOICE and FRONT are properly used. The idea wasn't to order the queue (except for FRONT), but to skip sending, say, a VOICE message when we encounter one, if the queue congestion measure says to.&lt;br /&gt;
&lt;br /&gt;
* '''Vault security'''&lt;br /&gt;
: The MOSS vault is as insecure as the MOUL vault. Need I say more? Here are some starter thoughts.&lt;br /&gt;
:* MOSS should parse incoming SDL messages and sanity-check them. See also [[#SDL_timestamps | adding timestamps]].&lt;br /&gt;
:* MOSS could probably verify other blob contents too.&lt;br /&gt;
:* Anyone can save anything to any node, and can fetch any node if they know its type and ID. We can deny these requests if the user shouldn't have access. Possibly [[MOSS-Developer_Notes#notifier | the notifier field]] can help.&lt;br /&gt;
:* Much more, I'm sure. Better vault security ''is'' possible.&lt;br /&gt;
&lt;br /&gt;
* Eliminate excessive byteswapping of opaque server IDs in BackendMessages. This is to say, in the backend server, when reading in the messages, it byte-swaps the IDs to store them, only ever uses them in equality tests with other IDs, and then byte-swaps them back when sending new messages. (On a little-endian box there's no swapping so it does not cost much, but it's the principle of the matter.) Unfortunately this really needs to be tested on a big-endian machine.&lt;br /&gt;
&lt;br /&gt;
* Try changing the File server to do [[MOSS-Setup#ackless | ackless downloads]], too. Maybe only if there is only one download at a time, though.&lt;br /&gt;
&lt;br /&gt;
== Scalability issues ==&lt;br /&gt;
&lt;br /&gt;
Performance and scalability are always interesting questions. And frequently ignored, because they only matter for larger installations.&lt;br /&gt;
&lt;br /&gt;
These are ideas unimplemented because they only really matter for large&lt;br /&gt;
shards. Large as in having, let's say, 50+ concurrent '''busy''' users. (50&lt;br /&gt;
people standing in the city chatting doesn't actually do much.) Maybe MOSS is&lt;br /&gt;
okay with that number now, in which case &amp;quot;large&amp;quot; is more. It is entirely&lt;br /&gt;
unknown.&lt;br /&gt;
&lt;br /&gt;
* Performance testing. Instrumentation. There should be a load generator to do this. This was not high on the list during development, with a user base of 3.&lt;br /&gt;
&lt;br /&gt;
* See the last paragraph in the comments at the top of FileTransaction.h about how multiple file transactions of the same file should share a single opened file.&lt;br /&gt;
&lt;br /&gt;
* Allow speculative pre-caching of AgeInfoNodes and PlayerInfoNodes when node changed notifications come from the vault server and are forwarded to any connected client. Cache in the auth server, vault server, or both. The goal is to reduce latency on those requests the client freezes for.&lt;br /&gt;
&lt;br /&gt;
* The backend protocol supports game servers requesting batches of GameMgr IDs. However, there is no code on either side to actually do so. The idea for this was that more populated ages, like the city, would benefit from doing batch requests. Every person who links in with a marker game needs a new global game ID, and it would be nice to cut out any extra backend round trips for links, even though this particular round trip does not block the link process (aside from being something the backend is doing when it could be doing something else).&lt;br /&gt;
&lt;br /&gt;
* Database performance could be measured and the SQL or even tables optimized.&lt;br /&gt;
&lt;br /&gt;
* MOSS currently uses a single blocking connection to the DB. Implement and investigate performance of multiple DB connections, or asynchronous ones. Maybe the backend server has to become threaded to gain the best advantage.&lt;br /&gt;
&lt;br /&gt;
* In a big shard, we may need to split the backend server work up. The [[MOSS-Developer_Notes#backend_typecodes | backend protocol]] is designed to support separating backend work between threads. The &amp;quot;classes&amp;quot; of backend messages in a bitfield are meant as a way to quickly route a backend message to an appropriate backend thread or process.&lt;br /&gt;
&lt;br /&gt;
== Frontend/backend interactions ==&lt;br /&gt;
&lt;br /&gt;
* Add encryption to the backend protocol. This itself is not a big deal (though you have to pick a good key negotiation, and do not forget to consider authentication mechanisms), but it does mean all the BackendMessage fill_buffer() code paths would be newly exercised, so a lot of regression testing would be in order.&lt;br /&gt;
&lt;br /&gt;
* It would be much easier on the DB if updates to markers are batched by the game server. This especially applies to capturing markers. See the comments in the setmarkerto() and startmarkergame() SQL functions.&lt;br /&gt;
&lt;br /&gt;
* The backend protocol allows for frontends hosting ages to specify only a subset of ages that can be hosted there. This is unused right now; the message has a field saying, &amp;quot;this is the length of the following age restriction list&amp;quot; and it is always zero. When there are no restrictions the backend can request any frontend to host any age.&lt;br /&gt;
** The need for splitting hostable ages is unclear, but in a very large shard you might, for example, put all city instances, or even only the public one, on a separate server. It would also allow someone to join a shard and host just their own age, or whatever.&lt;br /&gt;
** Since the frontend never sends restrictions, the backend currently has no way to store and use them. So there is work on both sides.&lt;br /&gt;
** Presumably which ages a frontend server can host would be a configuration option but it could be done instead by restricting the contents of the game/age directory. That would not allow even finer-grained restrictions, but this whole project kind of needs a real use case to flesh out what is needed.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span id=&amp;quot;connection_merging&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;Having one backend TCP connection per frontend server is probably not a good thing, in terms of efficiency, or of scalability with a cluster of machines. We could change it to have one backend connection per frontend ''process'' and funnel everything through it. The mostly-implemented but unused and untested MultiWriterMessageQueue was meant, in part, to support this (there are multiple threads writing, but only one thread reading, which writes to the socket).&lt;br /&gt;
&lt;br /&gt;
: Then when messages are received in the frontend there needs to be some way of passing the message to the right thread and signaling them something is present to be handled. This is all unimplemented but the format of the backend messages is meant to take care of this case (in particular, the two &amp;quot;server IDs&amp;quot; in the header are for dispatching messages to the correct thread).&lt;br /&gt;
&lt;br /&gt;
: However, essentially the same changes would be necessary if the backend server is folded into the main server so there is only one process; then &amp;quot;sending&amp;quot; messages to the backend server is just putting them on the (shared) queue that would have been used to funnel everything through one connection, and &amp;quot;receiving&amp;quot; them is just taking them off that queue since there's no TCP connection to deal with.&lt;br /&gt;
&lt;br /&gt;
== New functionality ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;span id=&amp;quot;scripting&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;I am guessing Cyan's server handles the GameMgr stuff with server-side scripting. At the time MOSS was implemented there was no expectation that new game types may be added so adding in a scripting language was not worth the problems incumbent with doing so. Also the overall value of scripting is not clear (especially for the cost in server complication). However, it could be done. The project would have to include embedding the scripting and then rewriting stuff using scripts.&lt;br /&gt;
: Please note, a lot of effort went into getting the Heek right, handling ties, allowing people to accidentally stand up and sit back down in the game, and probably other details I forgot. If you want to script Heek, it really ought to still work as well.&lt;br /&gt;
&lt;br /&gt;
* Really adventurous hardcore project: destroy KI hacks. The server would have to be able to analyze all game traffic to decide whether it looks okay. To do it right the server would have to have and understand PRP files and do physics. Also &amp;quot;console&amp;quot; commands have to be wisely filtered. If you're daunted, join the club.&lt;br /&gt;
&lt;br /&gt;
* Add a data export API; see Blizzard's Armory as an example.  This could enable players to have web-visible &amp;quot;Achievements&amp;quot; and even allow for automation of integration with social media.  This can add value to the game without requiring any client changes.  A well-designed website taking advantage of this API might:&lt;br /&gt;
** Permit players to control privacy settings on whether their profiles should be public or private (default should be private!)&lt;br /&gt;
** View/Display their current game accomplishments (relto pages, sparks, ages completed)&lt;br /&gt;
** Enable automated posting to social media when the player accomplishes a new goal&lt;br /&gt;
&lt;br /&gt;
== Redesigns ==&lt;br /&gt;
{{tba}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:MOSS]]&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Foundry_Certificate_Installation&amp;diff=1318</id>
		<title>Foundry Certificate Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Foundry_Certificate_Installation&amp;diff=1318"/>
		<updated>2011-10-19T22:25:29Z</updated>

		<summary type="html">&lt;p&gt;Marten: Added MacHG cert instruction.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{draft}}&lt;br /&gt;
The OpenUru.org Foundry tools such as JIRA bugtracking use SSL (Secure Sockets Layer) to encrypt transactions and to give confidence that you are connected to the correct server. Currently, this is a &amp;quot;self-signed&amp;quot; certificate and not one that has been validated by the main certificate authorities, so most browsers will display a warning when you navigate to one of the Foundry pages.&lt;br /&gt;
&lt;br /&gt;
You can avoid these warnings by installing the certificate in your browser's certificate store. This can be done when you first visit the foundry, but the methods vary greatly across browsers. It is perhaps easier to manually install the certificate before visting the Foundry. The certificate will also need to be installed in repository tools (Mercurial or Subversion) if you intend using SSL to access the Foundry repositories.&lt;br /&gt;
&lt;br /&gt;
The instructions given here relate to the Windows versions of the applications.&lt;br /&gt;
&lt;br /&gt;
== Obtaining the Certificate ==&lt;br /&gt;
&lt;br /&gt;
(For manual installation into applications not listed below)&lt;br /&gt;
&lt;br /&gt;
Download a copy of the certificate using this link: [http://foundry.openuru.org/assets/Foundry/foundry.crt Foundry Certificate]&lt;br /&gt;
&lt;br /&gt;
== Browser Installation ==&lt;br /&gt;
&lt;br /&gt;
Please read the instructions so you know what to do '''before''' clicking on the link to the certificate, or right click the link and open it in a new tab or window. &lt;br /&gt;
&lt;br /&gt;
=== Firefox ===&lt;br /&gt;
Click on the following link: [http://foundry.openuru.org/assets/Foundry/foundry.crt Foundry Certificate]&lt;br /&gt;
A popup will appear titled &amp;quot;Downloading Certificate&amp;quot;. Mark the check box for &amp;quot;Trust this CA to identify web sites&amp;quot; then click &amp;quot;OK&amp;quot; (you may wish to click &amp;quot;View&amp;quot; to check the certificate details first). The certificate is now installed, and when visiting the Foundry you should see the padlock symbol at the bottom right of your browser: hovering the mouse pointer over this should show &amp;quot;Authenticated by OpenUru.org&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Firefox 3.6.0 contains a bug which may cause loss of data when using JIRA - users should upgrade their Firefox installation to 3.6.2 or later.&lt;br /&gt;
&lt;br /&gt;
=== Internet Explorer ===&lt;br /&gt;
&lt;br /&gt;
Click on the following link: [http://foundry.openuru.org/assets/Foundry/foundry.crt Foundry Certificate]&lt;br /&gt;
A popup will appear titled &amp;quot;File Download - Security Warning&amp;quot;. Click &amp;quot;Open&amp;quot; and the certificate details will be displayed in a new popup wher you can inspect them. On the &amp;quot;General&amp;quot; tab, click &amp;quot;Install Certificate...&amp;quot;. When the Certificate Import Wizard appears click &amp;quot;Next&amp;gt;&amp;quot;, then on the Certificate Store page select &amp;quot;Automatically select the certificate store based on the type of certificate&amp;quot; and click &amp;quot;Next&amp;gt;&amp;quot; and then &amp;quot;Finish&amp;quot;. Another popup will appear titled &amp;quot;Security Warning&amp;quot; and asking &amp;quot;Do you want to install this certificate?&amp;quot; - Click &amp;quot;Yes&amp;quot;. You should get a message telling you that the import was successful. Click &amp;quot;OK&amp;quot; on any remaining dialog boxes. The certificate is now installed, and when visiting the Foundry you should see the padlock symbol to the right of the URL bar with a blue background.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' If you install the certificate using Internet Explorer as described above, then you should find that the certificate will automatically be trusted by Safari and Chrome browsers on the same machine, since both of these use the Windows Internet Settings.&lt;br /&gt;
&lt;br /&gt;
=== Google Chrome ===&lt;br /&gt;
Chrome (under Microsoft Windows) uses the same certificate store as Internet Explorer, so the process is very similar: Click on the following link: [http://foundry.openuru.org/assets/Foundry/foundry.crt Foundry Certificate]&lt;br /&gt;
The &amp;quot;Downloads&amp;quot; popup will appear along with another window asking if you want to open or save the file &amp;quot;foundry.crt&amp;quot;. Click &amp;quot;Open&amp;quot; and a new popup will appear titled &amp;quot;File Download - Security Warning&amp;quot;. Click &amp;quot;Open&amp;quot; and the certificate details will be displayed in a new popup wher you can inspect them. On the &amp;quot;General&amp;quot; tab, click &amp;quot;Install Certificate...&amp;quot;. When the Certificate Import Wizard appears click &amp;quot;Next&amp;gt;&amp;quot;, then on the Certificate Store page select &amp;quot;Automatically select the certificate store based on the type of certificate&amp;quot; and click &amp;quot;Next&amp;gt;&amp;quot; and then &amp;quot;Finish&amp;quot;. Another popup will appear titled &amp;quot;Security Warning&amp;quot; and asking &amp;quot;Do you want to install this certificate?&amp;quot; - Click &amp;quot;Yes&amp;quot;. You should get a message telling you that the import was successful. Click &amp;quot;OK&amp;quot; on any remaining dialog boxes. The certificate is now installed, and when visiting the Foundry you should see the padlock symbol to the right of the URL bar.&lt;br /&gt;
&lt;br /&gt;
=== Apple Safari ===&lt;br /&gt;
On Microsoft Windows, Safari uses the same certificate store as Internet Explorer, so the process is very similar: Click on the following link: [http://foundry.openuru.org/assets/Foundry/foundry.crt Foundry Certificate]&lt;br /&gt;
The &amp;quot;Downloads&amp;quot; popup will appear along with another window asking if you want to open or save the file &amp;quot;foundry.crt&amp;quot;. Click &amp;quot;Open&amp;quot; and a new popup will appear titled &amp;quot;File Download - Security Warning&amp;quot;. Click &amp;quot;Open&amp;quot; and the certificate details will be displayed in a new popup wher you can inspect them. On the &amp;quot;General&amp;quot; tab, click &amp;quot;Install Certificate...&amp;quot;. When the Certificate Import Wizard appears click &amp;quot;Next&amp;gt;&amp;quot;, then on the Certificate Store page select &amp;quot;Automatically select the certificate store based on the type of certificate&amp;quot; and click &amp;quot;Next&amp;gt;&amp;quot; and then &amp;quot;Finish&amp;quot;. Another popup will appear titled &amp;quot;Security Warning&amp;quot; and asking &amp;quot;Do you want to install this certificate?&amp;quot; - Click &amp;quot;Yes&amp;quot;. You should get a message telling you that the import was successful. Click &amp;quot;OK&amp;quot; on any remaining dialog boxes. The certificate is now installed, and when visiting the Foundry you should see the padlock symbol to the right of the URL bar.&lt;br /&gt;
&lt;br /&gt;
=== Opera ===&lt;br /&gt;
{{tba}}&lt;br /&gt;
&lt;br /&gt;
== Repository Installation ==&lt;br /&gt;
&lt;br /&gt;
=== TortoiseHg 2.0.x (Mercurial) ===&lt;br /&gt;
If you have tried to use the &amp;quot;Clone Repository&amp;quot; command to create the Mercurial repository and found that it came back with an error like &amp;quot;SSL: Server certificate verify failed&amp;quot; then try the steps below.&lt;br /&gt;
# Open TortoiseHg Workbench&lt;br /&gt;
# Click on New Repository in the File Menu&lt;br /&gt;
# Browse to the folder that you want to save the source to. This folder must be empty.&lt;br /&gt;
# Now the buttons on the toolbar close to the top of the window should be lit up.&lt;br /&gt;
# Select the green recycle-like icon that will bring up the synchronize settings in the lower part of the screen under '''Remote Repository'''&lt;br /&gt;
# In the drop down box select: '''https'''&lt;br /&gt;
# In the first box put '''foundry.openuru.org/hg'''&lt;br /&gt;
# In the last box on that line put the project name (e.g CWE) see the [http://www.openuru.org/pages/Development.php Development] page under Foundry Repositories&lt;br /&gt;
# Now click on the '''Padlock Button''' next to the drop down box&lt;br /&gt;
# Choose the second option '''Verify with stored host fingerprint (good)''' under Secure HTTPS Connection and Click '''Query'''. The fingerprint is (as of this writing): &amp;lt;code&amp;gt;32:1b:b2:1c:9a:fe:d9:17:b0:78:76:ea:87:68:ad:1a:34:ab:a8:8e&amp;lt;/code&amp;gt;&lt;br /&gt;
# Put your Username (all lowercase) and Password for your JIRA Account in the appropriate boxes and click '''Save'''&lt;br /&gt;
# On the right hand side of the screen is a '''Save''' button click it and the Save on the window that pops up&lt;br /&gt;
# On the same toolbar used in step 5. Click on the button with the two yellow cylinders and the green arrow pointing towards you. This is the '''Pull incoming changes''' button.&lt;br /&gt;
# After the download is complete you must update the local repository before being able to use it. Open the Output Log either by using Ctrl + L or in the View menu as '''Show Output Log'''&lt;br /&gt;
# After the % sign on the last line of the Output Log type: &amp;lt;code&amp;gt;hg update&amp;lt;/code&amp;gt;&lt;br /&gt;
# You should get a command completed successfully line.&lt;br /&gt;
# You are now ready to work on/view the code.&lt;br /&gt;
&lt;br /&gt;
=== TortoiseSVN (Subversion) ===&lt;br /&gt;
There is no requirement to install the certificate for TortoiseSVN.&lt;br /&gt;
&lt;br /&gt;
=== MacHg (Mercurial) ===&lt;br /&gt;
# Append the certificate to the end of your ~/Library/Application Support/MacHg/TrustedCertificates.pem file.&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Talk:75th_Instancing&amp;diff=114</id>
		<title>Talk:75th Instancing</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Talk:75th_Instancing&amp;diff=114"/>
		<updated>2009-02-12T05:20:58Z</updated>

		<summary type="html">&lt;p&gt;Marten: New page: Questions:  * (Marten) How does sharing work with this instancing plan?  Examples:  Can private instances be accessed through nexus?  When traveling from Eder Gira to Eder Kemo, and one is...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Questions:&lt;br /&gt;
&lt;br /&gt;
* (Marten) How does sharing work with this instancing plan?  Examples:  Can private instances be accessed through nexus?  When traveling from Eder Gira to Eder Kemo, and one is in a friend's private Gira, does one land in the friend's Kemo without using &amp;quot;share book&amp;quot; ?&lt;br /&gt;
&lt;br /&gt;
Observations/Objections:&lt;br /&gt;
&lt;br /&gt;
* (Marten) Regarding the problem of &amp;quot;controlling who gets end-of-Age rewards&amp;quot; - this plan doesn't seem to solve that at all, it works just the same as MOUL from my reading of it.  In MOUL, everyone in garden Ages got the reward together, so that's exactly the same.  In MOUL, the problems involving rewards involved Ahnonay and then K'veer.  Ahnonay was a private Age, not 'hood instanced and not public.  Players had to invite others to complete the Age, but only the Age owner could obtain the final rewards from the Age.  This annoyed some people.  Then, the age of Myst was distributed through K'veer, which was a public Age but one that could only be reached if one had solved Ahnonay, and MYST was added to Relto's bookshelf and invites could be sent for it.  (K'veer is not noted as being private in your list of private Ae'gura areas.)  People who had not earned K'veer, and thus did not have access to MYST, were able to get to MYST through the Relto bookshelves of friends who had completed Ahnonay.  Apparently this upset some people as well - including Cyan, who then disabled the ability to send invitations to MYST.&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Instancing_-_Bookmarks&amp;diff=110</id>
		<title>Instancing - Bookmarks</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Instancing_-_Bookmarks&amp;diff=110"/>
		<updated>2009-02-08T08:09:56Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* Neighborhood */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note: This page is a work in progress as I detail thoughts on my Instancing proposal.&lt;br /&gt;
-- Marten&lt;br /&gt;
&lt;br /&gt;
TODO:&lt;br /&gt;
* Identify and add any missing Location/Link pairs&lt;br /&gt;
* Add detailed linking information for remaining Ages&lt;br /&gt;
* Identify how existing Yeesha bookmarks work with the proposal&lt;br /&gt;
* Discuss issues and possible solutions to [[http://forums.openuru.org/viewtopic.php?p=799#p799 Kenguin's Issues List]]&lt;br /&gt;
* Note which instances are &amp;quot;default&amp;quot; in which situations&lt;br /&gt;
* Resolve any lingering inconsistencies&lt;br /&gt;
* Begin related proposal for [[KI Interface:Group Management]] &lt;br /&gt;
&lt;br /&gt;
{{TOClimit|2}}&lt;br /&gt;
&lt;br /&gt;
==Objective==&lt;br /&gt;
Replace the Instancing system with a consistent model that gives players greater control.  Under the MOUL model, some areas of the game could only be shared by neighbors; under the proposed model, players will be able to invite friends to share all areas of the game.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
* Performance Improvements for large groups in one Age&lt;br /&gt;
* Queuing system for high-population areas&lt;br /&gt;
* Grouping (&amp;quot;Party&amp;quot;) System implemented into KI&lt;br /&gt;
&lt;br /&gt;
==Origin of Concept==&lt;br /&gt;
First, this proposal is an attempt to incorporate the model of Instancing used in other popular multiplayer online games.  A detailed description of Instancing as it applies in most MMOs can be found at http://en.wikipedia.org/wiki/Instance_dungeons, but the key idea is that players do not need to be independently invited to every instance they wish to visit together; players may ally themselves with friends to form a group or party such that all members automatically enter an instance together.&lt;br /&gt;
&lt;br /&gt;
Second, this proposal is inspired by some unused assets hidden in the game files for Uru.  One of the more intriguing assets is series of [http://mystonline.com/forums/viewtopic.php?t=16333 three hanging banners] (one blue, one red, and one purple) that can appear in the Museum area of Ae'gura.  Each of the pedestals under the banners has a set of matching ribbons, although not all pedestals have all ribbons.  The sequence of books and ribbons was as follows:&lt;br /&gt;
* Gahreesen: Red and Blue&lt;br /&gt;
* Teledahn: Purple, Red, Blue&lt;br /&gt;
* Kadish: Purple and Blue&lt;br /&gt;
* Ahnonay Cathedral: Purple and Blue&lt;br /&gt;
* Uran Silo: Purple and Blue&lt;br /&gt;
Each banner has [http://mystonline.com/forums/viewtopic.php?p=256592#256592 one of two symbols] on it.  The first symbol is named &amp;quot;Yeesha's Story&amp;quot; and it appears on the blue and purple banners.  The second symbol is named &amp;quot;Journey Story&amp;quot; and appears on the red banner.  This Bookmark Instance proposal is based upon personal musings of how these ribbons may have been intended to work.&lt;br /&gt;
&lt;br /&gt;
== Application: Rules ==&lt;br /&gt;
&lt;br /&gt;
=== Acquisition and Use ===&lt;br /&gt;
&lt;br /&gt;
A set of bookmarks are acquired by the player at the beginning of the game, perhaps in Cleft as an alternative to the Relto book, or with a Relto book.  Some sort of tutorial will need to be added to explain the function of the bookmarks.&lt;br /&gt;
&lt;br /&gt;
The bookmarks may be applied to books and Bahro stones; they may not, for obvious reasons, be applied to portals of more ethereal nature.&lt;br /&gt;
&lt;br /&gt;
Two bookmark ribbons appear when the player lifts a book or Bahro stone to examine it.  The bookmarks function in this manner:&lt;br /&gt;
* Solo Journey (solo hand symbol) - when active, the player will link to his or her own private Age.  The Solo Journey bookmark should always be available.&lt;br /&gt;
* Group Journey (paired hand symbols) - when active, the player and his or her companions will link to the same Age, which will be the private Age of the &amp;quot;expedition leader.&amp;quot;  The Group Journey bookmark is only available for a book or Bahro Stone if the player has joined a group, and the leader must have collected and unlocked the Age in his or her Relto.&lt;br /&gt;
* No bookmark (drc symbol) - when neither bookmark is active, the player will link to the authentic (public) instance of the Age.  This instance may be unavailable if it is at player capacity (see &amp;quot;Managing Access to Full Areas&amp;quot; below), and although this proposal does not mandate it, the public Age might also be unavailable if the player has not completed one or more tasks in his or her private version of the Age.&lt;br /&gt;
&lt;br /&gt;
There will few exceptions where the bookmarks do not apply in the above manner.&lt;br /&gt;
&lt;br /&gt;
Here is a comparison of the how this model replaces the sharing of Instances as it worked in Myst Online.&lt;br /&gt;
&lt;br /&gt;
In Myst Online, a player could reach a friend's Age by one of these methods:&lt;br /&gt;
* Meet the friend, link to the friend's Relto, then pull the unlocked book from the bookshelf&lt;br /&gt;
* Meet the friend at a copy of the book in a public space.  Accept a sharing of the book from the friend.&lt;br /&gt;
* Receive an invitation from the friend.  Link to Nexus, and access the book.&lt;br /&gt;
&lt;br /&gt;
In this proposal, a player can reach a friend's Age by:&lt;br /&gt;
* Join a group where the friend is leader.  Use the Group Journey bookmark with ''any'' book or Bahro stone that links to the friend's collected and unlocked Age.&lt;br /&gt;
&lt;br /&gt;
=== The Authentic (Public) Age ===&lt;br /&gt;
&lt;br /&gt;
The Authentic instance of an Age is the legitimate place, typically unmodified by Bahro or Yeesha, open for all explorers.  This version of the Age generally lacks rewards.  With few exceptions, players will not be able to obtain relto pages, clothing, or puzzle rings from the authentic instance.  These Ages are places to hang out, explore, and have parties without needing to invite anyone.&lt;br /&gt;
&lt;br /&gt;
=== The Journey (Private) Age ===&lt;br /&gt;
&lt;br /&gt;
The Journey Age is the private instance controlled by an individual or by the leader of a group of explorers who have banded together.  The Journey Age contains the Bahro doors, cloths, and rewards that represent progress in the game.&lt;br /&gt;
&lt;br /&gt;
=== Privacy Control ===&lt;br /&gt;
&lt;br /&gt;
When in a group, the tab at the top of a book in the leader's Relto bookshelf will enable or disable the group journey bookmark for all links to that Age.  Consequently, if the leader has not acquired a book, any group members using that book will find the group bookmark disabled for that Age.&lt;br /&gt;
&lt;br /&gt;
=== Managing Access to Full Areas ===&lt;br /&gt;
&lt;br /&gt;
The Bookmark Instancing system depends upon some new or extended method of managing access to high-population areas.  Though perhaps deserving of its own proposal, here are a few comments on such a method.&lt;br /&gt;
&lt;br /&gt;
In Prologue and in Myst Online, access to the &amp;quot;real&amp;quot; D'ni City was controlled through the Nexus.  Direct linking to the city was not possible; the City books in Relto &amp;amp; Kadish Tolesa and the City Bahro Stone in Neighborhood would link players to a Neighborhood-instanced City.  (There was a bug  in Myst Online that allowed players to circumvent the intended behavior and link to the main city, but that is not relevant to the discussion of how Cyan meant for the system to work.)  When it worked, this system prevented the city from becoming overcrowded.&lt;br /&gt;
&lt;br /&gt;
The original system did not provide a way for players to know when an empty spot had opened in the City.  Furthermore, the Bookmark Instancing proposal complicates matters by permitting players to link to public areas from any book - not just Nexus controlled books.&lt;br /&gt;
&lt;br /&gt;
For the Bookmarks proposal to be minimally viable, when the Public instance of an Age is full, the player should not be permitted to link to the that instance, even if he or she has an open book leading to that place.  (If an In-Cavern reason is desired for being unable to link, it could simply be that when an area is too crowded, it is not safe to link into that area, and perhaps the link becomes unstable.)  The link in the book could appear as a swirling black void, unless one of Yeesha's bookmarks is applied.&lt;br /&gt;
&lt;br /&gt;
This minimal system still leaves much to be desired.  A better system would permit background downloading of an Age as well as for waiting on an empty spot in a filled-to-maximum-capacity area.  Players attempting to use a book linking to a full area would be notified that they are unable to link to the Age (for whatever reason).  The player would be given the option to be notified later when the Age is available.  If the Age is downloaded but the public area is full, the player could also still link to a private instance.&lt;br /&gt;
&lt;br /&gt;
An even more advanced solution would introducing queuing, and could permit a player to immediately link to an area that he or she has been waiting to visit.  However, this solution is likely to be unsatisfactory to players who want canon rules enforced on actual gameplay, rather than &amp;quot;ICly&amp;quot; explaining that they had linked back to Relto first before linking to the destination Age.&lt;br /&gt;
&lt;br /&gt;
== Application: Specifics (List of Locations and Age Links) ==&lt;br /&gt;
&lt;br /&gt;
=== Self ===&lt;br /&gt;
* Relto&lt;br /&gt;
** There is no single &amp;quot;authentic&amp;quot; original Relto.  Each Relto is its own unique place, and so there is no need for a Solo Journey bookmark with this book.&lt;br /&gt;
** When the player is part of a group, as group leader, he or she can control whether people can link to his or her Relto by manipulating the Group bookmark in the Relto book.  This will enable or disable the Group bookmark in group members' Relto books.  If the player is not a member of a group, the Group bookmark does not appear.&lt;br /&gt;
&lt;br /&gt;
=== Relto===&lt;br /&gt;
*Neighborhood&lt;br /&gt;
** Each Neighborhood is considered a public place.  No private instances exists for these books.  The Solo and Group bookmarks do not appear when opening the Neighborhood book in Relto, and all links take the player to the neighborhood for which the player is a member.&lt;br /&gt;
*Nexus&lt;br /&gt;
** Nexus is a public place that operates in a way that prevents two explorers from occupying the same &amp;quot;cell.&amp;quot;  The Solo and Group bookmarks do not appear when opening the Nexus book.&lt;br /&gt;
*Ae'gura (many links)&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Cleft&lt;br /&gt;
** Book only available after Original Journey Ages are complete.  Authentic, Solo Journey, and Group Journey are available.  Dropping through the cleft in Relto to complete Original Journey will take the player to a Solo Journey Cleft.  Solo/Group Journey Cleft may be necessary to complete puzzles e.g. link to K'veer.&lt;br /&gt;
*Gahreesen&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.  Authentic Gahreesen might be similar to Neighborhood-instanced Gahreesen from Myst Online.&lt;br /&gt;
*Teledahn&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Kadish Tolesa&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Eder Gira&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Eder Kemo&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Negilahn/Dereno/Payiferen/Tetsonot&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Er'cana&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Ahnonay Cathedral&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Ahnonay&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Minkata&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.  Authentic Minkata might be Nighttime only and lacking Bahro stones, or could still be manipulated but would lack symbols&lt;br /&gt;
*Jalak Dador&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Myst&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available, although Authentic could probably become cramped quickly if only the Library is accessible.&lt;br /&gt;
&lt;br /&gt;
===Neighborhood===&lt;br /&gt;
*Gahreesen&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.  See notes for Relto.&lt;br /&gt;
*Eder Delin&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.  Solo Journey would still include Bahro doors but would obviously not be solvable.&lt;br /&gt;
*Eder Tsogal&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.  Solo Journey would still include Bahro doors but would obviously not be solvable.&lt;br /&gt;
*Great Zero&lt;br /&gt;
:In Prologue, Great Zero was a Nexus link.  Players linking to Great Zero found themselves in a private instance.&lt;br /&gt;
&lt;br /&gt;
:In MOUL, Great Zero was moved to the Neighborhood so that neighbors could gather at the Great Zero.  Unfortunately, being able to link from Neighborhood to Great Zero violates the rule against intra-Age linking.&lt;br /&gt;
&lt;br /&gt;
:Although this Proposal does not mandate it, with Bookmark Instancing, players could link from Nexus into the public Great Zero, a group Great Zero, or a totally private Great Zero by using the appropriate Instance bookmark; maintaining the book in the Neighborhood is no longer needed for group Great Zero gatherings.  However, if the book is moved to Nexus, the stained glass art for Great Zero no longer has a home.&lt;br /&gt;
&lt;br /&gt;
* Great Stair Bahro Stone&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
&lt;br /&gt;
===Nexus===&lt;br /&gt;
* City Links&lt;br /&gt;
* All Ages available from Relto (except Nexus itself)&lt;br /&gt;
* Watcher's Sanctuary&lt;br /&gt;
* Kirel&lt;br /&gt;
* Guild Pubs&lt;br /&gt;
&lt;br /&gt;
Although not mandated by this proposal, the KI and Nexus could interact according to these rules:  Ages visited with a KI would be added to the list of books available through Nexus.  Ages visited before picking up the KI would not be added.  &amp;quot;Unapproved Ages&amp;quot; might also not be added (as the book would not be added to the Nexus library), and the KI could display ??? while in these Ages (as it would not know the name to display).&lt;br /&gt;
&lt;br /&gt;
===D'ni===&lt;br /&gt;
====Ae'gura====&lt;br /&gt;
*Nexus&lt;br /&gt;
*Ferry: Teledahn Dock Bahro Stone&lt;br /&gt;
*Takotah: Descent Bahro Stone&lt;br /&gt;
*Museum: Negilahn&lt;br /&gt;
*Museum: Dereno&lt;br /&gt;
*Museum: Payiferen&lt;br /&gt;
*Museum: Tetsonot&lt;br /&gt;
*Gallery: Kadish Tolesa&lt;br /&gt;
*Library: Minkata&lt;br /&gt;
*Library: Jalak Dador&lt;br /&gt;
*Library: Kadish Tolesa Bahro Stone&lt;br /&gt;
&lt;br /&gt;
====Baron's Office====&lt;br /&gt;
*Teledahn&lt;br /&gt;
*Teledahn Mushroom Bahro Stone&lt;br /&gt;
&lt;br /&gt;
====Spyroom====&lt;br /&gt;
*Teledahn&lt;br /&gt;
*Phil's Relto&lt;br /&gt;
&lt;br /&gt;
====Watcher's Sanctuary====&lt;br /&gt;
*Er'cana&lt;br /&gt;
*Ahnonay Cathedral&lt;br /&gt;
&lt;br /&gt;
====K'veer====&lt;br /&gt;
*Nexus&lt;br /&gt;
*Myst&lt;br /&gt;
&lt;br /&gt;
====Uran Silo====&lt;br /&gt;
*Er'cana&lt;br /&gt;
&lt;br /&gt;
===Gahreesen===&lt;br /&gt;
*Neighborhood (Balcony) Bahro Stone&lt;br /&gt;
*D'ni (Ae'gura Balcony 1) Bahro Stone&lt;br /&gt;
*Nexus&lt;br /&gt;
*Wall Nexus&lt;br /&gt;
*Teledahn&lt;br /&gt;
&lt;br /&gt;
===Teledahn===&lt;br /&gt;
*D'ni (Baron's Office)&lt;br /&gt;
*D'ni (Spyroom) - book or stone?&lt;br /&gt;
*Gahreesen Bahro Stone&lt;br /&gt;
&lt;br /&gt;
===Kadish Tolesa===&lt;br /&gt;
*D'ni (Ae'gura Balcony 2) Bahro Stone&lt;br /&gt;
*D'ni (Ae'gura Gallery)&lt;br /&gt;
*Kadish Tolesa Alternate&lt;br /&gt;
&lt;br /&gt;
===Eder Gira===&lt;br /&gt;
*Eder Kemo&lt;br /&gt;
*D'ni (Ae'gura Takotah Roof) Bahro Stone&lt;br /&gt;
&lt;br /&gt;
===Eder Kemo===&lt;br /&gt;
*Eder Gira&lt;br /&gt;
*Neighborhood (Classroom Roof) Bahro Stone&lt;br /&gt;
&lt;br /&gt;
====Negilahn/Dereno/Payiferen/Tetsonot====&lt;br /&gt;
*Nexus&lt;br /&gt;
&lt;br /&gt;
===Er'cana===&lt;br /&gt;
*D'ni (Uran Silo)&lt;br /&gt;
*Upper Bahro Cave Bahro Stone&lt;br /&gt;
&lt;br /&gt;
===Ahnonay Cathedral===&lt;br /&gt;
*Ahnonay&lt;br /&gt;
&lt;br /&gt;
===Ahnonay===&lt;br /&gt;
*Ahnonay Cathedral&lt;br /&gt;
*Lower Bahro Cave Bahro Stone&lt;br /&gt;
&lt;br /&gt;
===Eder Delin/Eder Tsogal===&lt;br /&gt;
*Neighborhood&lt;br /&gt;
** The Neighborhood book in Eder Delin/Eder Tsogal must be replaced with a Nexus book.  A Neighborhood book should only link to a specific neighborhood and should not work differently for different players.&lt;br /&gt;
*Nexus&lt;br /&gt;
** Replaces Neighborhood book.  The Solo and Group bookmarks do not appear when opening the Nexus book.&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Instancing_-_Bookmarks&amp;diff=109</id>
		<title>Instancing - Bookmarks</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Instancing_-_Bookmarks&amp;diff=109"/>
		<updated>2009-02-08T08:09:19Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* Neighborhood */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note: This page is a work in progress as I detail thoughts on my Instancing proposal.&lt;br /&gt;
-- Marten&lt;br /&gt;
&lt;br /&gt;
TODO:&lt;br /&gt;
* Identify and add any missing Location/Link pairs&lt;br /&gt;
* Add detailed linking information for remaining Ages&lt;br /&gt;
* Identify how existing Yeesha bookmarks work with the proposal&lt;br /&gt;
* Discuss issues and possible solutions to [[http://forums.openuru.org/viewtopic.php?p=799#p799 Kenguin's Issues List]]&lt;br /&gt;
* Note which instances are &amp;quot;default&amp;quot; in which situations&lt;br /&gt;
* Resolve any lingering inconsistencies&lt;br /&gt;
* Begin related proposal for [[KI Interface:Group Management]] &lt;br /&gt;
&lt;br /&gt;
{{TOClimit|2}}&lt;br /&gt;
&lt;br /&gt;
==Objective==&lt;br /&gt;
Replace the Instancing system with a consistent model that gives players greater control.  Under the MOUL model, some areas of the game could only be shared by neighbors; under the proposed model, players will be able to invite friends to share all areas of the game.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
* Performance Improvements for large groups in one Age&lt;br /&gt;
* Queuing system for high-population areas&lt;br /&gt;
* Grouping (&amp;quot;Party&amp;quot;) System implemented into KI&lt;br /&gt;
&lt;br /&gt;
==Origin of Concept==&lt;br /&gt;
First, this proposal is an attempt to incorporate the model of Instancing used in other popular multiplayer online games.  A detailed description of Instancing as it applies in most MMOs can be found at http://en.wikipedia.org/wiki/Instance_dungeons, but the key idea is that players do not need to be independently invited to every instance they wish to visit together; players may ally themselves with friends to form a group or party such that all members automatically enter an instance together.&lt;br /&gt;
&lt;br /&gt;
Second, this proposal is inspired by some unused assets hidden in the game files for Uru.  One of the more intriguing assets is series of [http://mystonline.com/forums/viewtopic.php?t=16333 three hanging banners] (one blue, one red, and one purple) that can appear in the Museum area of Ae'gura.  Each of the pedestals under the banners has a set of matching ribbons, although not all pedestals have all ribbons.  The sequence of books and ribbons was as follows:&lt;br /&gt;
* Gahreesen: Red and Blue&lt;br /&gt;
* Teledahn: Purple, Red, Blue&lt;br /&gt;
* Kadish: Purple and Blue&lt;br /&gt;
* Ahnonay Cathedral: Purple and Blue&lt;br /&gt;
* Uran Silo: Purple and Blue&lt;br /&gt;
Each banner has [http://mystonline.com/forums/viewtopic.php?p=256592#256592 one of two symbols] on it.  The first symbol is named &amp;quot;Yeesha's Story&amp;quot; and it appears on the blue and purple banners.  The second symbol is named &amp;quot;Journey Story&amp;quot; and appears on the red banner.  This Bookmark Instance proposal is based upon personal musings of how these ribbons may have been intended to work.&lt;br /&gt;
&lt;br /&gt;
== Application: Rules ==&lt;br /&gt;
&lt;br /&gt;
=== Acquisition and Use ===&lt;br /&gt;
&lt;br /&gt;
A set of bookmarks are acquired by the player at the beginning of the game, perhaps in Cleft as an alternative to the Relto book, or with a Relto book.  Some sort of tutorial will need to be added to explain the function of the bookmarks.&lt;br /&gt;
&lt;br /&gt;
The bookmarks may be applied to books and Bahro stones; they may not, for obvious reasons, be applied to portals of more ethereal nature.&lt;br /&gt;
&lt;br /&gt;
Two bookmark ribbons appear when the player lifts a book or Bahro stone to examine it.  The bookmarks function in this manner:&lt;br /&gt;
* Solo Journey (solo hand symbol) - when active, the player will link to his or her own private Age.  The Solo Journey bookmark should always be available.&lt;br /&gt;
* Group Journey (paired hand symbols) - when active, the player and his or her companions will link to the same Age, which will be the private Age of the &amp;quot;expedition leader.&amp;quot;  The Group Journey bookmark is only available for a book or Bahro Stone if the player has joined a group, and the leader must have collected and unlocked the Age in his or her Relto.&lt;br /&gt;
* No bookmark (drc symbol) - when neither bookmark is active, the player will link to the authentic (public) instance of the Age.  This instance may be unavailable if it is at player capacity (see &amp;quot;Managing Access to Full Areas&amp;quot; below), and although this proposal does not mandate it, the public Age might also be unavailable if the player has not completed one or more tasks in his or her private version of the Age.&lt;br /&gt;
&lt;br /&gt;
There will few exceptions where the bookmarks do not apply in the above manner.&lt;br /&gt;
&lt;br /&gt;
Here is a comparison of the how this model replaces the sharing of Instances as it worked in Myst Online.&lt;br /&gt;
&lt;br /&gt;
In Myst Online, a player could reach a friend's Age by one of these methods:&lt;br /&gt;
* Meet the friend, link to the friend's Relto, then pull the unlocked book from the bookshelf&lt;br /&gt;
* Meet the friend at a copy of the book in a public space.  Accept a sharing of the book from the friend.&lt;br /&gt;
* Receive an invitation from the friend.  Link to Nexus, and access the book.&lt;br /&gt;
&lt;br /&gt;
In this proposal, a player can reach a friend's Age by:&lt;br /&gt;
* Join a group where the friend is leader.  Use the Group Journey bookmark with ''any'' book or Bahro stone that links to the friend's collected and unlocked Age.&lt;br /&gt;
&lt;br /&gt;
=== The Authentic (Public) Age ===&lt;br /&gt;
&lt;br /&gt;
The Authentic instance of an Age is the legitimate place, typically unmodified by Bahro or Yeesha, open for all explorers.  This version of the Age generally lacks rewards.  With few exceptions, players will not be able to obtain relto pages, clothing, or puzzle rings from the authentic instance.  These Ages are places to hang out, explore, and have parties without needing to invite anyone.&lt;br /&gt;
&lt;br /&gt;
=== The Journey (Private) Age ===&lt;br /&gt;
&lt;br /&gt;
The Journey Age is the private instance controlled by an individual or by the leader of a group of explorers who have banded together.  The Journey Age contains the Bahro doors, cloths, and rewards that represent progress in the game.&lt;br /&gt;
&lt;br /&gt;
=== Privacy Control ===&lt;br /&gt;
&lt;br /&gt;
When in a group, the tab at the top of a book in the leader's Relto bookshelf will enable or disable the group journey bookmark for all links to that Age.  Consequently, if the leader has not acquired a book, any group members using that book will find the group bookmark disabled for that Age.&lt;br /&gt;
&lt;br /&gt;
=== Managing Access to Full Areas ===&lt;br /&gt;
&lt;br /&gt;
The Bookmark Instancing system depends upon some new or extended method of managing access to high-population areas.  Though perhaps deserving of its own proposal, here are a few comments on such a method.&lt;br /&gt;
&lt;br /&gt;
In Prologue and in Myst Online, access to the &amp;quot;real&amp;quot; D'ni City was controlled through the Nexus.  Direct linking to the city was not possible; the City books in Relto &amp;amp; Kadish Tolesa and the City Bahro Stone in Neighborhood would link players to a Neighborhood-instanced City.  (There was a bug  in Myst Online that allowed players to circumvent the intended behavior and link to the main city, but that is not relevant to the discussion of how Cyan meant for the system to work.)  When it worked, this system prevented the city from becoming overcrowded.&lt;br /&gt;
&lt;br /&gt;
The original system did not provide a way for players to know when an empty spot had opened in the City.  Furthermore, the Bookmark Instancing proposal complicates matters by permitting players to link to public areas from any book - not just Nexus controlled books.&lt;br /&gt;
&lt;br /&gt;
For the Bookmarks proposal to be minimally viable, when the Public instance of an Age is full, the player should not be permitted to link to the that instance, even if he or she has an open book leading to that place.  (If an In-Cavern reason is desired for being unable to link, it could simply be that when an area is too crowded, it is not safe to link into that area, and perhaps the link becomes unstable.)  The link in the book could appear as a swirling black void, unless one of Yeesha's bookmarks is applied.&lt;br /&gt;
&lt;br /&gt;
This minimal system still leaves much to be desired.  A better system would permit background downloading of an Age as well as for waiting on an empty spot in a filled-to-maximum-capacity area.  Players attempting to use a book linking to a full area would be notified that they are unable to link to the Age (for whatever reason).  The player would be given the option to be notified later when the Age is available.  If the Age is downloaded but the public area is full, the player could also still link to a private instance.&lt;br /&gt;
&lt;br /&gt;
An even more advanced solution would introducing queuing, and could permit a player to immediately link to an area that he or she has been waiting to visit.  However, this solution is likely to be unsatisfactory to players who want canon rules enforced on actual gameplay, rather than &amp;quot;ICly&amp;quot; explaining that they had linked back to Relto first before linking to the destination Age.&lt;br /&gt;
&lt;br /&gt;
== Application: Specifics (List of Locations and Age Links) ==&lt;br /&gt;
&lt;br /&gt;
=== Self ===&lt;br /&gt;
* Relto&lt;br /&gt;
** There is no single &amp;quot;authentic&amp;quot; original Relto.  Each Relto is its own unique place, and so there is no need for a Solo Journey bookmark with this book.&lt;br /&gt;
** When the player is part of a group, as group leader, he or she can control whether people can link to his or her Relto by manipulating the Group bookmark in the Relto book.  This will enable or disable the Group bookmark in group members' Relto books.  If the player is not a member of a group, the Group bookmark does not appear.&lt;br /&gt;
&lt;br /&gt;
=== Relto===&lt;br /&gt;
*Neighborhood&lt;br /&gt;
** Each Neighborhood is considered a public place.  No private instances exists for these books.  The Solo and Group bookmarks do not appear when opening the Neighborhood book in Relto, and all links take the player to the neighborhood for which the player is a member.&lt;br /&gt;
*Nexus&lt;br /&gt;
** Nexus is a public place that operates in a way that prevents two explorers from occupying the same &amp;quot;cell.&amp;quot;  The Solo and Group bookmarks do not appear when opening the Nexus book.&lt;br /&gt;
*Ae'gura (many links)&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Cleft&lt;br /&gt;
** Book only available after Original Journey Ages are complete.  Authentic, Solo Journey, and Group Journey are available.  Dropping through the cleft in Relto to complete Original Journey will take the player to a Solo Journey Cleft.  Solo/Group Journey Cleft may be necessary to complete puzzles e.g. link to K'veer.&lt;br /&gt;
*Gahreesen&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.  Authentic Gahreesen might be similar to Neighborhood-instanced Gahreesen from Myst Online.&lt;br /&gt;
*Teledahn&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Kadish Tolesa&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Eder Gira&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Eder Kemo&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Negilahn/Dereno/Payiferen/Tetsonot&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Er'cana&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Ahnonay Cathedral&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Ahnonay&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Minkata&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.  Authentic Minkata might be Nighttime only and lacking Bahro stones, or could still be manipulated but would lack symbols&lt;br /&gt;
*Jalak Dador&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Myst&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available, although Authentic could probably become cramped quickly if only the Library is accessible.&lt;br /&gt;
&lt;br /&gt;
===Neighborhood===&lt;br /&gt;
*Gahreesen&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.  See notes for Relto.&lt;br /&gt;
*Eder Delin&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.  Solo Journey would still include Bahro doors but would obviously not be solvable.&lt;br /&gt;
*Eder Tsogal&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.  Solo Journey would still include Bahro doors but would obviously not be solvable.&lt;br /&gt;
*Great Zero&lt;br /&gt;
:In Prologue, Great Zero was a Nexus link.  Players linking to Great Zero found themselves in a private instance.&lt;br /&gt;
* Great Stair Bahro Stone&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
&lt;br /&gt;
:In MOUL, Great Zero was moved to the Neighborhood so that neighbors could gather at the Great Zero.  Unfortunately, being able to link from Neighborhood to Great Zero violates the rule against intra-Age linking.&lt;br /&gt;
&lt;br /&gt;
:Although this Proposal does not mandate it, with Bookmark Instancing, players could link from Nexus into the public Great Zero, a group Great Zero, or a totally private Great Zero by using the appropriate Instance bookmark; maintaining the book in the Neighborhood is no longer needed for group Great Zero gatherings.  However, if the book is moved to Nexus, the stained glass art for Great Zero no longer has a home.&lt;br /&gt;
&lt;br /&gt;
===Nexus===&lt;br /&gt;
* City Links&lt;br /&gt;
* All Ages available from Relto (except Nexus itself)&lt;br /&gt;
* Watcher's Sanctuary&lt;br /&gt;
* Kirel&lt;br /&gt;
* Guild Pubs&lt;br /&gt;
&lt;br /&gt;
Although not mandated by this proposal, the KI and Nexus could interact according to these rules:  Ages visited with a KI would be added to the list of books available through Nexus.  Ages visited before picking up the KI would not be added.  &amp;quot;Unapproved Ages&amp;quot; might also not be added (as the book would not be added to the Nexus library), and the KI could display ??? while in these Ages (as it would not know the name to display).&lt;br /&gt;
&lt;br /&gt;
===D'ni===&lt;br /&gt;
====Ae'gura====&lt;br /&gt;
*Nexus&lt;br /&gt;
*Ferry: Teledahn Dock Bahro Stone&lt;br /&gt;
*Takotah: Descent Bahro Stone&lt;br /&gt;
*Museum: Negilahn&lt;br /&gt;
*Museum: Dereno&lt;br /&gt;
*Museum: Payiferen&lt;br /&gt;
*Museum: Tetsonot&lt;br /&gt;
*Gallery: Kadish Tolesa&lt;br /&gt;
*Library: Minkata&lt;br /&gt;
*Library: Jalak Dador&lt;br /&gt;
*Library: Kadish Tolesa Bahro Stone&lt;br /&gt;
&lt;br /&gt;
====Baron's Office====&lt;br /&gt;
*Teledahn&lt;br /&gt;
*Teledahn Mushroom Bahro Stone&lt;br /&gt;
&lt;br /&gt;
====Spyroom====&lt;br /&gt;
*Teledahn&lt;br /&gt;
*Phil's Relto&lt;br /&gt;
&lt;br /&gt;
====Watcher's Sanctuary====&lt;br /&gt;
*Er'cana&lt;br /&gt;
*Ahnonay Cathedral&lt;br /&gt;
&lt;br /&gt;
====K'veer====&lt;br /&gt;
*Nexus&lt;br /&gt;
*Myst&lt;br /&gt;
&lt;br /&gt;
====Uran Silo====&lt;br /&gt;
*Er'cana&lt;br /&gt;
&lt;br /&gt;
===Gahreesen===&lt;br /&gt;
*Neighborhood (Balcony) Bahro Stone&lt;br /&gt;
*D'ni (Ae'gura Balcony 1) Bahro Stone&lt;br /&gt;
*Nexus&lt;br /&gt;
*Wall Nexus&lt;br /&gt;
*Teledahn&lt;br /&gt;
&lt;br /&gt;
===Teledahn===&lt;br /&gt;
*D'ni (Baron's Office)&lt;br /&gt;
*D'ni (Spyroom) - book or stone?&lt;br /&gt;
*Gahreesen Bahro Stone&lt;br /&gt;
&lt;br /&gt;
===Kadish Tolesa===&lt;br /&gt;
*D'ni (Ae'gura Balcony 2) Bahro Stone&lt;br /&gt;
*D'ni (Ae'gura Gallery)&lt;br /&gt;
*Kadish Tolesa Alternate&lt;br /&gt;
&lt;br /&gt;
===Eder Gira===&lt;br /&gt;
*Eder Kemo&lt;br /&gt;
*D'ni (Ae'gura Takotah Roof) Bahro Stone&lt;br /&gt;
&lt;br /&gt;
===Eder Kemo===&lt;br /&gt;
*Eder Gira&lt;br /&gt;
*Neighborhood (Classroom Roof) Bahro Stone&lt;br /&gt;
&lt;br /&gt;
====Negilahn/Dereno/Payiferen/Tetsonot====&lt;br /&gt;
*Nexus&lt;br /&gt;
&lt;br /&gt;
===Er'cana===&lt;br /&gt;
*D'ni (Uran Silo)&lt;br /&gt;
*Upper Bahro Cave Bahro Stone&lt;br /&gt;
&lt;br /&gt;
===Ahnonay Cathedral===&lt;br /&gt;
*Ahnonay&lt;br /&gt;
&lt;br /&gt;
===Ahnonay===&lt;br /&gt;
*Ahnonay Cathedral&lt;br /&gt;
*Lower Bahro Cave Bahro Stone&lt;br /&gt;
&lt;br /&gt;
===Eder Delin/Eder Tsogal===&lt;br /&gt;
*Neighborhood&lt;br /&gt;
** The Neighborhood book in Eder Delin/Eder Tsogal must be replaced with a Nexus book.  A Neighborhood book should only link to a specific neighborhood and should not work differently for different players.&lt;br /&gt;
*Nexus&lt;br /&gt;
** Replaces Neighborhood book.  The Solo and Group bookmarks do not appear when opening the Nexus book.&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
	<entry>
		<id>https://wiki.openuru.org/index.php?title=Instancing_-_Bookmarks&amp;diff=108</id>
		<title>Instancing - Bookmarks</title>
		<link rel="alternate" type="text/html" href="https://wiki.openuru.org/index.php?title=Instancing_-_Bookmarks&amp;diff=108"/>
		<updated>2009-02-08T08:06:54Z</updated>

		<summary type="html">&lt;p&gt;Marten: /* Managing Access to Full Areas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note: This page is a work in progress as I detail thoughts on my Instancing proposal.&lt;br /&gt;
-- Marten&lt;br /&gt;
&lt;br /&gt;
TODO:&lt;br /&gt;
* Identify and add any missing Location/Link pairs&lt;br /&gt;
* Add detailed linking information for remaining Ages&lt;br /&gt;
* Identify how existing Yeesha bookmarks work with the proposal&lt;br /&gt;
* Discuss issues and possible solutions to [[http://forums.openuru.org/viewtopic.php?p=799#p799 Kenguin's Issues List]]&lt;br /&gt;
* Note which instances are &amp;quot;default&amp;quot; in which situations&lt;br /&gt;
* Resolve any lingering inconsistencies&lt;br /&gt;
* Begin related proposal for [[KI Interface:Group Management]] &lt;br /&gt;
&lt;br /&gt;
{{TOClimit|2}}&lt;br /&gt;
&lt;br /&gt;
==Objective==&lt;br /&gt;
Replace the Instancing system with a consistent model that gives players greater control.  Under the MOUL model, some areas of the game could only be shared by neighbors; under the proposed model, players will be able to invite friends to share all areas of the game.&lt;br /&gt;
&lt;br /&gt;
==Prerequisites==&lt;br /&gt;
* Performance Improvements for large groups in one Age&lt;br /&gt;
* Queuing system for high-population areas&lt;br /&gt;
* Grouping (&amp;quot;Party&amp;quot;) System implemented into KI&lt;br /&gt;
&lt;br /&gt;
==Origin of Concept==&lt;br /&gt;
First, this proposal is an attempt to incorporate the model of Instancing used in other popular multiplayer online games.  A detailed description of Instancing as it applies in most MMOs can be found at http://en.wikipedia.org/wiki/Instance_dungeons, but the key idea is that players do not need to be independently invited to every instance they wish to visit together; players may ally themselves with friends to form a group or party such that all members automatically enter an instance together.&lt;br /&gt;
&lt;br /&gt;
Second, this proposal is inspired by some unused assets hidden in the game files for Uru.  One of the more intriguing assets is series of [http://mystonline.com/forums/viewtopic.php?t=16333 three hanging banners] (one blue, one red, and one purple) that can appear in the Museum area of Ae'gura.  Each of the pedestals under the banners has a set of matching ribbons, although not all pedestals have all ribbons.  The sequence of books and ribbons was as follows:&lt;br /&gt;
* Gahreesen: Red and Blue&lt;br /&gt;
* Teledahn: Purple, Red, Blue&lt;br /&gt;
* Kadish: Purple and Blue&lt;br /&gt;
* Ahnonay Cathedral: Purple and Blue&lt;br /&gt;
* Uran Silo: Purple and Blue&lt;br /&gt;
Each banner has [http://mystonline.com/forums/viewtopic.php?p=256592#256592 one of two symbols] on it.  The first symbol is named &amp;quot;Yeesha's Story&amp;quot; and it appears on the blue and purple banners.  The second symbol is named &amp;quot;Journey Story&amp;quot; and appears on the red banner.  This Bookmark Instance proposal is based upon personal musings of how these ribbons may have been intended to work.&lt;br /&gt;
&lt;br /&gt;
== Application: Rules ==&lt;br /&gt;
&lt;br /&gt;
=== Acquisition and Use ===&lt;br /&gt;
&lt;br /&gt;
A set of bookmarks are acquired by the player at the beginning of the game, perhaps in Cleft as an alternative to the Relto book, or with a Relto book.  Some sort of tutorial will need to be added to explain the function of the bookmarks.&lt;br /&gt;
&lt;br /&gt;
The bookmarks may be applied to books and Bahro stones; they may not, for obvious reasons, be applied to portals of more ethereal nature.&lt;br /&gt;
&lt;br /&gt;
Two bookmark ribbons appear when the player lifts a book or Bahro stone to examine it.  The bookmarks function in this manner:&lt;br /&gt;
* Solo Journey (solo hand symbol) - when active, the player will link to his or her own private Age.  The Solo Journey bookmark should always be available.&lt;br /&gt;
* Group Journey (paired hand symbols) - when active, the player and his or her companions will link to the same Age, which will be the private Age of the &amp;quot;expedition leader.&amp;quot;  The Group Journey bookmark is only available for a book or Bahro Stone if the player has joined a group, and the leader must have collected and unlocked the Age in his or her Relto.&lt;br /&gt;
* No bookmark (drc symbol) - when neither bookmark is active, the player will link to the authentic (public) instance of the Age.  This instance may be unavailable if it is at player capacity (see &amp;quot;Managing Access to Full Areas&amp;quot; below), and although this proposal does not mandate it, the public Age might also be unavailable if the player has not completed one or more tasks in his or her private version of the Age.&lt;br /&gt;
&lt;br /&gt;
There will few exceptions where the bookmarks do not apply in the above manner.&lt;br /&gt;
&lt;br /&gt;
Here is a comparison of the how this model replaces the sharing of Instances as it worked in Myst Online.&lt;br /&gt;
&lt;br /&gt;
In Myst Online, a player could reach a friend's Age by one of these methods:&lt;br /&gt;
* Meet the friend, link to the friend's Relto, then pull the unlocked book from the bookshelf&lt;br /&gt;
* Meet the friend at a copy of the book in a public space.  Accept a sharing of the book from the friend.&lt;br /&gt;
* Receive an invitation from the friend.  Link to Nexus, and access the book.&lt;br /&gt;
&lt;br /&gt;
In this proposal, a player can reach a friend's Age by:&lt;br /&gt;
* Join a group where the friend is leader.  Use the Group Journey bookmark with ''any'' book or Bahro stone that links to the friend's collected and unlocked Age.&lt;br /&gt;
&lt;br /&gt;
=== The Authentic (Public) Age ===&lt;br /&gt;
&lt;br /&gt;
The Authentic instance of an Age is the legitimate place, typically unmodified by Bahro or Yeesha, open for all explorers.  This version of the Age generally lacks rewards.  With few exceptions, players will not be able to obtain relto pages, clothing, or puzzle rings from the authentic instance.  These Ages are places to hang out, explore, and have parties without needing to invite anyone.&lt;br /&gt;
&lt;br /&gt;
=== The Journey (Private) Age ===&lt;br /&gt;
&lt;br /&gt;
The Journey Age is the private instance controlled by an individual or by the leader of a group of explorers who have banded together.  The Journey Age contains the Bahro doors, cloths, and rewards that represent progress in the game.&lt;br /&gt;
&lt;br /&gt;
=== Privacy Control ===&lt;br /&gt;
&lt;br /&gt;
When in a group, the tab at the top of a book in the leader's Relto bookshelf will enable or disable the group journey bookmark for all links to that Age.  Consequently, if the leader has not acquired a book, any group members using that book will find the group bookmark disabled for that Age.&lt;br /&gt;
&lt;br /&gt;
=== Managing Access to Full Areas ===&lt;br /&gt;
&lt;br /&gt;
The Bookmark Instancing system depends upon some new or extended method of managing access to high-population areas.  Though perhaps deserving of its own proposal, here are a few comments on such a method.&lt;br /&gt;
&lt;br /&gt;
In Prologue and in Myst Online, access to the &amp;quot;real&amp;quot; D'ni City was controlled through the Nexus.  Direct linking to the city was not possible; the City books in Relto &amp;amp; Kadish Tolesa and the City Bahro Stone in Neighborhood would link players to a Neighborhood-instanced City.  (There was a bug  in Myst Online that allowed players to circumvent the intended behavior and link to the main city, but that is not relevant to the discussion of how Cyan meant for the system to work.)  When it worked, this system prevented the city from becoming overcrowded.&lt;br /&gt;
&lt;br /&gt;
The original system did not provide a way for players to know when an empty spot had opened in the City.  Furthermore, the Bookmark Instancing proposal complicates matters by permitting players to link to public areas from any book - not just Nexus controlled books.&lt;br /&gt;
&lt;br /&gt;
For the Bookmarks proposal to be minimally viable, when the Public instance of an Age is full, the player should not be permitted to link to the that instance, even if he or she has an open book leading to that place.  (If an In-Cavern reason is desired for being unable to link, it could simply be that when an area is too crowded, it is not safe to link into that area, and perhaps the link becomes unstable.)  The link in the book could appear as a swirling black void, unless one of Yeesha's bookmarks is applied.&lt;br /&gt;
&lt;br /&gt;
This minimal system still leaves much to be desired.  A better system would permit background downloading of an Age as well as for waiting on an empty spot in a filled-to-maximum-capacity area.  Players attempting to use a book linking to a full area would be notified that they are unable to link to the Age (for whatever reason).  The player would be given the option to be notified later when the Age is available.  If the Age is downloaded but the public area is full, the player could also still link to a private instance.&lt;br /&gt;
&lt;br /&gt;
An even more advanced solution would introducing queuing, and could permit a player to immediately link to an area that he or she has been waiting to visit.  However, this solution is likely to be unsatisfactory to players who want canon rules enforced on actual gameplay, rather than &amp;quot;ICly&amp;quot; explaining that they had linked back to Relto first before linking to the destination Age.&lt;br /&gt;
&lt;br /&gt;
== Application: Specifics (List of Locations and Age Links) ==&lt;br /&gt;
&lt;br /&gt;
=== Self ===&lt;br /&gt;
* Relto&lt;br /&gt;
** There is no single &amp;quot;authentic&amp;quot; original Relto.  Each Relto is its own unique place, and so there is no need for a Solo Journey bookmark with this book.&lt;br /&gt;
** When the player is part of a group, as group leader, he or she can control whether people can link to his or her Relto by manipulating the Group bookmark in the Relto book.  This will enable or disable the Group bookmark in group members' Relto books.  If the player is not a member of a group, the Group bookmark does not appear.&lt;br /&gt;
&lt;br /&gt;
=== Relto===&lt;br /&gt;
*Neighborhood&lt;br /&gt;
** Each Neighborhood is considered a public place.  No private instances exists for these books.  The Solo and Group bookmarks do not appear when opening the Neighborhood book in Relto, and all links take the player to the neighborhood for which the player is a member.&lt;br /&gt;
*Nexus&lt;br /&gt;
** Nexus is a public place that operates in a way that prevents two explorers from occupying the same &amp;quot;cell.&amp;quot;  The Solo and Group bookmarks do not appear when opening the Nexus book.&lt;br /&gt;
*Ae'gura (many links)&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Cleft&lt;br /&gt;
** Book only available after Original Journey Ages are complete.  Authentic, Solo Journey, and Group Journey are available.  Dropping through the cleft in Relto to complete Original Journey will take the player to a Solo Journey Cleft.  Solo/Group Journey Cleft may be necessary to complete puzzles e.g. link to K'veer.&lt;br /&gt;
*Gahreesen&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.  Authentic Gahreesen might be similar to Neighborhood-instanced Gahreesen from Myst Online.&lt;br /&gt;
*Teledahn&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Kadish Tolesa&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Eder Gira&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Eder Kemo&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Negilahn/Dereno/Payiferen/Tetsonot&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Er'cana&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Ahnonay Cathedral&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Ahnonay&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Minkata&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.  Authentic Minkata might be Nighttime only and lacking Bahro stones, or could still be manipulated but would lack symbols&lt;br /&gt;
*Jalak Dador&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.&lt;br /&gt;
*Myst&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available, although Authentic could probably become cramped quickly if only the Library is accessible.&lt;br /&gt;
&lt;br /&gt;
===Neighborhood===&lt;br /&gt;
*Gahreesen&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.  See notes for Relto.&lt;br /&gt;
*Eder Delin&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.  Solo Journey would still include Bahro doors but would obviously not be solvable.&lt;br /&gt;
*Eder Tsogal&lt;br /&gt;
** Authentic, Solo Journey, and Group Journey are available.  Solo Journey would still include Bahro doors but would obviously not be solvable.&lt;br /&gt;
*Great Zero&lt;br /&gt;
:In Prologue, Great Zero was a Nexus link.  Players linking to Great Zero found themselves in a private instance.&lt;br /&gt;
&lt;br /&gt;
:In MOUL, Great Zero was moved to the Neighborhood so that neighbors could gather at the Great Zero.  Unfortunately, being able to link from Neighborhood to Great Zero violates the rule against intra-Age linking.&lt;br /&gt;
&lt;br /&gt;
:Although this Proposal does not mandate it, with Bookmark Instancing, players could link from Nexus into the public Great Zero, a group Great Zero, or a totally private Great Zero by using the appropriate Instance bookmark; maintaining the book in the Neighborhood is no longer needed for group Great Zero gatherings.  However, if the book is moved to Nexus, the stained glass art for Great Zero no longer has a home.&lt;br /&gt;
&lt;br /&gt;
===Nexus===&lt;br /&gt;
* City Links&lt;br /&gt;
* All Ages available from Relto (except Nexus itself)&lt;br /&gt;
* Watcher's Sanctuary&lt;br /&gt;
* Kirel&lt;br /&gt;
* Guild Pubs&lt;br /&gt;
&lt;br /&gt;
Although not mandated by this proposal, the KI and Nexus could interact according to these rules:  Ages visited with a KI would be added to the list of books available through Nexus.  Ages visited before picking up the KI would not be added.  &amp;quot;Unapproved Ages&amp;quot; might also not be added (as the book would not be added to the Nexus library), and the KI could display ??? while in these Ages (as it would not know the name to display).&lt;br /&gt;
&lt;br /&gt;
===D'ni===&lt;br /&gt;
====Ae'gura====&lt;br /&gt;
*Nexus&lt;br /&gt;
*Ferry: Teledahn Dock Bahro Stone&lt;br /&gt;
*Takotah: Descent Bahro Stone&lt;br /&gt;
*Museum: Negilahn&lt;br /&gt;
*Museum: Dereno&lt;br /&gt;
*Museum: Payiferen&lt;br /&gt;
*Museum: Tetsonot&lt;br /&gt;
*Gallery: Kadish Tolesa&lt;br /&gt;
*Library: Minkata&lt;br /&gt;
*Library: Jalak Dador&lt;br /&gt;
*Library: Kadish Tolesa Bahro Stone&lt;br /&gt;
&lt;br /&gt;
====Baron's Office====&lt;br /&gt;
*Teledahn&lt;br /&gt;
*Teledahn Mushroom Bahro Stone&lt;br /&gt;
&lt;br /&gt;
====Spyroom====&lt;br /&gt;
*Teledahn&lt;br /&gt;
*Phil's Relto&lt;br /&gt;
&lt;br /&gt;
====Watcher's Sanctuary====&lt;br /&gt;
*Er'cana&lt;br /&gt;
*Ahnonay Cathedral&lt;br /&gt;
&lt;br /&gt;
====K'veer====&lt;br /&gt;
*Nexus&lt;br /&gt;
*Myst&lt;br /&gt;
&lt;br /&gt;
====Uran Silo====&lt;br /&gt;
*Er'cana&lt;br /&gt;
&lt;br /&gt;
===Gahreesen===&lt;br /&gt;
*Neighborhood (Balcony) Bahro Stone&lt;br /&gt;
*D'ni (Ae'gura Balcony 1) Bahro Stone&lt;br /&gt;
*Nexus&lt;br /&gt;
*Wall Nexus&lt;br /&gt;
*Teledahn&lt;br /&gt;
&lt;br /&gt;
===Teledahn===&lt;br /&gt;
*D'ni (Baron's Office)&lt;br /&gt;
*D'ni (Spyroom) - book or stone?&lt;br /&gt;
*Gahreesen Bahro Stone&lt;br /&gt;
&lt;br /&gt;
===Kadish Tolesa===&lt;br /&gt;
*D'ni (Ae'gura Balcony 2) Bahro Stone&lt;br /&gt;
*D'ni (Ae'gura Gallery)&lt;br /&gt;
*Kadish Tolesa Alternate&lt;br /&gt;
&lt;br /&gt;
===Eder Gira===&lt;br /&gt;
*Eder Kemo&lt;br /&gt;
*D'ni (Ae'gura Takotah Roof) Bahro Stone&lt;br /&gt;
&lt;br /&gt;
===Eder Kemo===&lt;br /&gt;
*Eder Gira&lt;br /&gt;
*Neighborhood (Classroom Roof) Bahro Stone&lt;br /&gt;
&lt;br /&gt;
====Negilahn/Dereno/Payiferen/Tetsonot====&lt;br /&gt;
*Nexus&lt;br /&gt;
&lt;br /&gt;
===Er'cana===&lt;br /&gt;
*D'ni (Uran Silo)&lt;br /&gt;
*Upper Bahro Cave Bahro Stone&lt;br /&gt;
&lt;br /&gt;
===Ahnonay Cathedral===&lt;br /&gt;
*Ahnonay&lt;br /&gt;
&lt;br /&gt;
===Ahnonay===&lt;br /&gt;
*Ahnonay Cathedral&lt;br /&gt;
*Lower Bahro Cave Bahro Stone&lt;br /&gt;
&lt;br /&gt;
===Eder Delin/Eder Tsogal===&lt;br /&gt;
*Neighborhood&lt;br /&gt;
** The Neighborhood book in Eder Delin/Eder Tsogal must be replaced with a Nexus book.  A Neighborhood book should only link to a specific neighborhood and should not work differently for different players.&lt;br /&gt;
*Nexus&lt;br /&gt;
** Replaces Neighborhood book.  The Solo and Group bookmarks do not appear when opening the Nexus book.&lt;/div&gt;</summary>
		<author><name>Marten</name></author>
	</entry>
</feed>