From 9f1a247312b0044bb18b4d97596fc44d6045cfe5 Mon Sep 17 00:00:00 2001 From: nkorslund Date: Tue, 4 Nov 2008 10:32:25 +0000 Subject: [PATCH] Fixed DMD incompatibility. Worked on readmes git-svn-id: https://openmw.svn.sourceforge.net/svnroot/openmw/trunk@57 ea6a568a-9f4f-0410-981a-c910a81bb256 --- COMPILE-linux.txt | 44 ++++++++++++++---------- COMPILE-win32.txt | 21 ++++++++---- README-win32.txt | 24 +++++-------- README.txt | 86 ++++++++++------------------------------------- monster/util/aa.d | 5 ++- 5 files changed, 71 insertions(+), 109 deletions(-) diff --git a/COMPILE-linux.txt b/COMPILE-linux.txt index 53afc0735..a6af2cd07 100644 --- a/COMPILE-linux.txt +++ b/COMPILE-linux.txt @@ -21,10 +21,11 @@ OpenMW has been tested for the most part on 32bit Ubuntu Linux distributions. FreeBSD is also known to work with recent versions of GDC (the D -compiler), but you might need to rebuild most of the dependencies from -source yourself. +compiler), but you might need to rebuild some of the dependencies from +source yourself. (If you have done this and can give more specific +instructions, please let me know!) -64bit Linux is specifically known NOT to work. +64bit systems are NOT supported. If you manage to build OpenMW on a platform not listed here, or want to try, please let me know! @@ -38,15 +39,15 @@ Dependencies needed to build OpenMW: OGRE 1.4.5 (3d engine) OIS-1.0.0 (input system) +Bullet 2.72 (collision and physics library) OpenAL (3d sound system) libavcodec, libavformat (For MP3 playback) gcc and g++ (C++ compiler) GNU make (build tool for C++ files) -DMD 1.031 (D compiler) +DMD 1.036 (D compiler) or GDC 4.1.3 (alternative D compiler) - The above versions are the ones I have tested recently, but other versions might work. OGRE, OpenAL and the other libraries have dependencies of their own, so I recommend using an automated package @@ -56,22 +57,32 @@ try typing: sudo apt-get install libogre-dev libavcodec-dev libavformat-dev libois-dev build-essential g++ gdc A note about OpenAL: The library found in most Linux distributions -(0.0.8 SI) is out of date. Some distributions are now changing to -OpenAL Soft, which is a newer and less hardware-dependent -implementation. If you experience sound problems (like stuttering -music), try switching to OpenAL Soft. +(0.0.8 SI) is outdated. Some distributions are now changing to OpenAL +Soft, which has a less hardware-dependent implementation. If you +experience sound problems (like stuttering music), try switching to +OpenAL Soft. libavcodec and libavformat are part of the FFmpeg package, which is part of the 'mplayer' project. Note that some of the codecs might be patent protected in your country or area. -If you want to install Ogre, OpenAL, OIS or FFmpeg manually, try: +If you want to install Ogre, Bullet, OpenAL, OIS or FFmpeg manually, +try: OGRE: http://ogre3d.org/ OpenAL: http://openal.org/ Linux source: http://kcat.strangesoft.net/openal.html OIS: http://sourceforge.net/projects/wgois/ FFmpeg: http://ffmpeg.mplayerhq.hu/download.html +Bullet: (fill in here) + +Setting up Bullet +----------------- + +Bullet is not yet included in most Linux distributions. Follow these +instructions for setting it up manually. + +(to be written) @@ -81,8 +92,8 @@ Choosing a D compiler The above apt-get command installs the GDC compiler. There are currently two choices for the D compiler, DMD and GDC. DMD is the "official" compiler and is updated more often, while GDC is a -completely open source frontend to GCC (The GNU compiler.) Both should -work equally well with OpenMW. +completely open source front-end for GCC (the GNU compiler.) Both +should work equally well with OpenMW. If you want to install GDC manually, go to http://sourceforge.net/projects/dgcc @@ -91,8 +102,7 @@ If you want to use DMD instead, it can be found at: http://digitalmars.com/d/1.0/dmd-linux.html Note that the DMD unstable branch (2.000 and up) will NOT currently -work with OpenMW. Use the stable branch (1.x) instead. The latest -version known to work is DMD 1.031, so I recommend that. +work with OpenMW. Use the stable branch (1.x) instead. Also note that DMD is only available on 32 bit x86 Linux - other operating systems or architectures will have to use GDC. Note however @@ -170,9 +180,9 @@ favor, you should now be able to run OpenMW using the program called Write openmw -h to see a list of options. Running without parameters should bring you into the cave called Assu, -or the last cell loaded. You are in free float mode. Move around with -WASD (or arrow keys), move up and down with left shift and ctrl, exit -with 'q' or escape. +or the last cell loaded. Move around with WASD (or arrow keys), change +physics mode (walking, flying, ghost) with 't', exit with 'q' or +escape. To load another cell, specify the cell name on the command line. Use the 'esmtool' program to get a list of cells. Note that you must use diff --git a/COMPILE-win32.txt b/COMPILE-win32.txt index 3bca81a57..bd1da4b66 100644 --- a/COMPILE-win32.txt +++ b/COMPILE-win32.txt @@ -19,6 +19,8 @@ Supported Windows platforms: Only tested on Windows XP. If you manage to compile or run OpenMW on another Windows platform (9x/Me/NT/2000/Vista), please let me know! +At the moment, only command line building is supported. + Dependencies: @@ -34,10 +36,10 @@ Note that the "official" D compiler, DMD, will not currently work on Windows, because it is uses an object format incompatible with most C++ compilers. -As of verion 0.4, all library dependencies have been included in the -single file openmw-dll-pack.zip for convenience. Simply download the -file and unpack it in the same directory as the OpenMW source -code. You should not need to download any other files. +All library dependencies are included in the file +openmw-dll-pack.zip. Simply download this file and unpack it in the +same directory as the OpenMW source code. You should not need to +download any other dependencies. @@ -75,12 +77,17 @@ OGRE: http://ogre3d.org OIS: Comes with the Ogre SDK OpenAL: http://openal.org/ FFmpeg: http://ffmpeg.mplayerhq.hu/ +Bullet: (fill in here) + +The biggest problem is the lack of a prebuilt SDKs for FFmpeg and +Bullet. You must build these yourself. -The biggest problem is the lack of a prebuilt SDK for FFmpeg. You must -build it under Mingw as well (not Cygwin!). I found the following link -helpful (read the comments as well, not just the post itself): +FFmpeg must build it under Mingw (not Cygwin!). I found the following +link helpful (read the comments as well, not just the post itself): http://www.gooli.org/blog/building-ffmpeg-for-windows-with-msys-and-mingw/ +Bullet: (not written yet) + Building diff --git a/README-win32.txt b/README-win32.txt index 95a16db46..9a89b8686 100644 --- a/README-win32.txt +++ b/README-win32.txt @@ -19,22 +19,19 @@ openmw-0.X.zip - source code openmw-dll-pack.zip - library pack -You only need to download either the binary package or the source -code, not both. The DLL pack is needed in both cases. The DLL pack -does not change from version to version unless specified, so you -should only need to download it once. +You only need the binary or the source package, not both. The DLL pack +is needed in both cases. -If you downloaded the binary release, keep reading. If you got the -source release, please read COMPILE-win32.txt first, then return here -for final configuration instructions. +If downloaded the source release, please read COMPILE-win32.txt before +reading the rest of this file. Configuration ------------------- OpenMW assumes you have the Morrowind data files in c:\Program -Files\Bethesda Softworks\Morrowind\Data Files\ . If this is not the -case, you should edit openmw.ini first. +Files\Bethesda Softworks\Morrowind\Data Files\ . If this is not where +you have installed Morrowind, you should edit the openmw.ini file. Running @@ -42,18 +39,13 @@ Running Just run openmw.exe and enjoy! ;-) -We have just updated the sound system, so it is possible things won't -work. If you get error messages related to sound, try disabling sound -with the -ns option. We are working on flattening out the remaining -bugs. - The first time you run OpenMW, you will be asked to set screen resolution and other graphics settings. To be safe, it's not recommended to select fullscreen mode on the first run. You can bring up the dialogue at any time by using the -oc switch. -Move around with WASD or arrow keys, move up and down with left shift -and ctrl, exit with 'q' or escape. +Move around with WASD or arrow keys, change physics mode (walking, +flying, ghost) with 't', exit with 'q' or escape. You start in a cell called "Assu". You can change this in openmw.ini or by specifying a cell name on the command line. diff --git a/README.txt b/README.txt index 9975204c9..420d77998 100644 --- a/README.txt +++ b/README.txt @@ -5,10 +5,8 @@ Written by Nicolay Korslund Email: korslund@gmail.com WWW: http://openmw.snaptoad.com License: See GPL3.txt -Current version: 0.4 (still very pre-alpha) -Date: 2008 jul. 20 - - +Current version: 0.5 (WIP) +Date: 2008 nov. 4 QUICK NOTE: You must own and install Morrowind before you can use @@ -17,63 +15,21 @@ Morrowind installed on your system! - -IMPORTANT: OpenMW 0.4 notes -=========================== - -As of OpenMW 0.4, we have switched sound libraries from Audiere to -OpenAL + libavcodec. This means that: - -- you need to install OpenAL -- you must install libavcodec / ffmpeg for mp3 playback -- you no longer need Audiere - -See the changelog at the end for an up-to-date list of changes. - -Also new in this release is the way files are distributed for -Windows. There is now a separate "DLL pack" that can be used with -either the binary version or the source version. You no longer need to -run around the internet to find various SDKs and such - everything -should be included in the DLL-pack, including the necessary C/C++ -header files. - -Note: if you are using a localized (non-English) version of Morrowind, -the default starting cell (Assu) might not exist. Try esmtool (see -below) to get a list of existing cells. - - - - -On the near-future TODO list: -=========================== - -- full support for localized versions (with character recoding) -- support for Mac -- collision detection + walk & fall physics -- displaying creatures correcty, animation -- rendering NPCs -- rendering outdoor scenes (exterior cells) -- choosing a GUI/HUD system that plays well with OGRE - - - - Installation ============ Currently supported platforms are Windows, Linux and FreeBSD. Most -testing is on Ubuntu 8.04 and Windows XP Professional (in that order). +testing has been done on Ubuntu 8.04 and Windows XP Professional. For instructions, see one of the following: README-win32.txt - instructions for binary Windows release -COMPILE-win32.txt - instructions for building source on Windows -COMPILE-linux.tx - instructions for building source on Linux / Unix - -Linux 64 bit is known NOT to work, because of current compiler -deficiencies. This will hopefully be sorted out at some point, but -it's not a bug in the OpenMW code. +COMPILE-win32.txt - instructions for building from source on Windows +COMPILE-linux.tx - instructions for building from source on Linux / Unix +Linux 64 does NOT work because of problems with the D compiler. This +will hopefully be sorted out at some point, but right now it is not +supported. @@ -92,11 +48,10 @@ niftool - Decodes one or more NIF files and prints the details. - Acknowledgements ================ -Thanks goes out to: +Thanks go out to: - Bethesda Softworks for creating Morrowind! @@ -104,13 +59,10 @@ Thanks goes out to: file format. - Dmitry Marakasov for testing and porting to FreeBSD. - - Bastien Jansen for testing on 64 bit linux. - - Chris Robinson for OpenAL and MP3 support - -- Various others for testing, ideas and patches - +- Jacob Essex for landscape code (still in progress) +- Many others for testing, ideas and patches @@ -119,16 +71,14 @@ Changelog: 0.5 (WIP) -- working on collision detection with Bullet -- working on walk & fall character physics -- working on fixing sound issues for windows (running out of sound - resources, music playback doesn't good) -- new key bindings: +- Collision detection with Bullet +- Experimental walk & fall character physics +- (WIP) Fixed various sound issues on Windows +- New key bindings: t - toggle physics mode (walking, flying, ghost) - n - nighteye, toggle full ambient light -- added build files for CMake (with CMakeD) and Code::Blocks (neither - are tested yet) -- various minor changes and updates + n - night-eye: brightens the scene +- Fixed incompatability with DMD 1.032 and newer +- Various minor changes and updates 0.4 (2008 aug. 30) - latest release diff --git a/monster/util/aa.d b/monster/util/aa.d index 2d10f6809..76490af13 100644 --- a/monster/util/aa.d +++ b/monster/util/aa.d @@ -163,7 +163,10 @@ struct HashTable(Key, Value, Alloc = GCAlloc, Hash = DefHash, void reset() { - *this = typeof(*this).init; + // This stopped working in DMD 1.032 and later versions. + //*this = typeof(*this).init; + // But this seems to do the trick + *this = (HashTable!(Key, Value, Alloc, Hash, keyFormat)).init; } // Returns number of buckets of each size. Mostly used for testing