Giter Site home page Giter Site logo

xoreos / xoreos Goto Github PK

View Code? Open in Web Editor NEW
1.1K 120.0 120.0 29.07 MB

A reimplementation of BioWare's Aurora engine (and derivatives). Pre-pre-alpha :P

Home Page: https://xoreos.org/

License: GNU General Public License v3.0

Shell 0.02% C 5.39% C++ 92.29% CMake 0.35% Makefile 0.96% M4 0.99%
bioware aurora game c-plus-plus neverwinter-nights dragon-age knights-of-the-old-republic kotor nwn nwn2

xoreos's Introduction

xoreos README

xoreos is an open source implementation of BioWare's Aurora engine and its derivatives, licensed under the terms of the GNU General Public License version 3 (or later). The goal is to have all games using this engines working in a portable manner, starting from Neverwinter Nights and ending with Dragon Age II.

Games

The following games are valid targets for xoreos:

Status

Currently, the "foundation" work of managing resources, reading many basic file formats, displaying graphics and playing sounds has been done. All targeted games show partial ingame graphics, such as the area geometry and objects, letting you fly around in a "spectator mode". Some games show partial menus, and something resembling a starting point for a script system is there.

No actual "normal" gameplay is implemented yet, though.

For further information about the status of specific games, please visit our wiki.

Note: We are always looking for people to join our efforts in reimplementing those games. If you'd like to help, feel free to contact us! Please also read over our CONTRIBUTING.md for some guidelines. Thanks.

CI Status

  • Build status (linux autotools gcc)
  • Build status (linux autotools clang)
  • Build status (linux cmake gcc)
  • Build status (linux cmake clang)
  • Build status (macos autotools clang)
  • Build status (macos cmake clang)
  • Build status (windows cmake msvc)
  • Coverity Status

Getting xoreos

You can get xoreos in multiple ways:

You can download an archive with a binary of the latest release from our downloads page. This includes binaries for Microsoft Windows, Mac OS X and GNU/Linux, as well as packages for various GNU/Linux distributions. All of them are available for both 32- and 64-bit x86 architectures.

Or, if you're running Arch Linux, you can install xoreos directly from the AUR.

Or, if you're running Gentoo Linux, you can install xoreos directly from our overlay.

Lastly, you can compile xoreos yourself; either from a release source package, found on our downloads page, or a fresh repository checkout. For details on how to compile xoreos on various operating system, please read the Compiling xoreos page on our wiki.

Running xoreos

First, you need to fully install and/or copy the game you want to play with xoreos onto your hard disk. How you do this depends on the game, your operating system and where/how you have bought the game.

xoreos does not yet have a launcher GUI or anything like this. You need to start it from the command line. Run xoreos with the command line option "--help" (without the quotes) to get a help text about further command line options.

The quickest way to start a game in path /path/to/game/ would be to call

xoreos -p/path/to/game/

If you're on Windows and the path is, say, D:\Path\To\Game\, call

xoreos -pD:\\Path\\To\\Game\\

For a more in-depth documentation on how to run xoreos, please also read the Running xoreos page on our wiki.

Config file

In general, xoreos can read the configuration which game to run from either the command line, a config file or both. Additionally, when you first specify a new game on the command line, xoreos will add a related entry in the config file (creating it first, if necessary).

To accurately identify a specific instance of an installed game, xoreos uses the concept of a "target". Each target has a separate section in the config file, and each of their options apply only to that target. The special target "xoreos" is a global section applying to all games, although the same option in a game target overrides the global option.

For example:

[xoreos]
width=1024
height=768
fullscreen=false

[nwn]
path=/home/drmccoy/games/nwn/
fullscreen=true
volume_music=0.500000
volume_sfx=0.850000
volume_voice=0.850000

You can then start the game with the target "nwn" with

xoreos nwn

and xoreos will do the rest. This will start the game in the path /home/drmccoy/games/nwn/, running it in fullscreen at 1024x768.

As you can see with the volume options, xoreos also saves settings you made in the game' actual GUI into the target's section of the config file.

The place where xoreos expects the config file depends on your operating system:

  • On GNU/Linux, the place is $XDG_CONFIG_HOME/xoreos/xoreos.conf. $XDG_CONFIG_HOME defaults to $HOME/.config/
  • On Mac OS X, the place is $HOME/Library/Preferences/xoreos/xoreos.conf
  • On Windows, xoreos.conf is in the subdirectory xoreos in either $APPDATA or $USERPROFILE, depending on your Windows version

For a more elaborate example with more in-depth explanations, please see xoreos.conf.example in the doc directory, or the Running xoreos page on our wiki.

Links

Contact

To contact us, please either write to mailing list, or join our IRC channel #xoreos on Libera IRC.

xoreos's People

Contributors

bentley avatar berenm avatar cc9cii avatar ccawley2011 avatar clone2727 avatar cpeltz avatar darkstar avatar drake127 avatar dressupgeekout avatar drmccoy avatar farmboy0 avatar imperatorprime avatar jbowtie avatar jjardon avatar johana-star avatar kevl avatar lacc97 avatar logzero avatar lopho avatar lordhoto avatar michaelpm54 avatar mirv-sillyfish avatar nostritius avatar rjshae avatar smbas avatar supermanu avatar tc01 avatar vincele avatar vkremianskii avatar vobject avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xoreos's Issues

cmake: liblzma was not found

When running cmake, I get the following error:

liblzma was not found. Make sure LIBLZMA_LIBRARY and LIBLZMA_INCLUDE_DIR are set.

I had liblzma installed, so I checked cmake/FindLibLZMA.cmake and found this line:

find_library(LIBLZMA_LIBRARY NAMES liblzma DOC "The liblzma library")

Replacing it with this line fixed the problem:

find_library(LIBLZMA_LIBRARY NAMES lzma DOC "The liblzma library")

I'm using cmake version 3.2.3 on Arch Linux.
The cmake files in phaethon also have the same issue.

NWN2: Camera handling and object fading needs to be better than the originals

As everyone knows NWN 2 camera is horrible, and this is caused by quite a few things. Here is a incomplete list:

  1. NWN 2 camera is very busy, since the tileset aproach was ditched, many things block the camera now, including buildings you exit from, which causes the camera to zoom in, only to 'jump' back when you walk off (exploration or tactical mode). I'm sure most everyone would prefer it stayed zoomed out and the object just faded.
  2. related, in interiors, the you need to move the camera all the time because of walls blocking your view of doors/objects in the room you're at. I would 10000 times prefer if there was a option to fade out the walls whose exterior facing walls (from the room the controlled character is at) faded out. Or even just what D:OS does which is just make a large transparent area around the player, although that is worse conceptually. If it's too hard to make it only for camera facing walls, i'd prefer a option for all walls in the room actually (don't show the contents of other rooms obviously). Doors would need special handling so they were only 70% faded out instead of 90%-100% or something, since it's something you need to click on the wall even if not facing them.
  3. in a village with elevation in the original NWN2 OC (highcliff or something) you can tell that tactical view doesn't update its height based on the character altitude so it ends up somewhere on the pc toes.
  4. it would be handy if the character mode camera had some limits for the bottom up orientation, like all sane action rpgs. When i tried it it invariably ended up looking up a characters skirts.
  5. There is a defect on the 'camera follows character turns' option of character mode: although this setting could be ideal for emulating the typical 3rd person arpg camera, if you turn the camera yourself, the character doesn't turn... which means the camera then slowly turns towards the character as soon as you stop turning it. The setting needs to be bidirectional IMO.

Make keyboard states recursive/re-entrant

This is a fairly simple and low-priority feature request that would be perfect for newcomer to tackle; see http://www.firsttimersonly.com/. If you are already experienced in programming and/or contributing to free/libre open source software projects, please have a look at our general TODO list instead.


EventsManager::enableKeyRepeat() is used to switch on repeating keys. I.e. when it's enabled, holding down a key will fire several KeyDown events. When it's disabled, holding down a key will only fire one single KeyDown event. EventsManager::enableTextInput() is used to signal that the input of a whole textual string is requested instead of single key presses for game interaction. For example, entering a name in a character creator vs. pressing the "w" key to move forward. This is especially crucial for a potential future mobile port, where enableTextInput() might drop-down an on-screen keyboard.

Currently, these features are enabled/disabled with a simple on/off method. You call EventMan.enableKeyRepeat(true) to enable the feature, and EventMan.enableKeyRepeat(false) to disable the feature. Even if you call EventMan.enableKeyRepeat(true) twice in a row, only a single EventMan.enableKeyRepeat(false) will disable the feature.

However, we have potential situations were we are already in a state were the feature is enabled, but then something happens that would also enable the state. For example, we are in a character creator, inside the GUI field for a character name, which expects a textual input. Then we press Ctrl+D to drop down the debug console, which also expects a textual input. When we then close the console, it would disable the textual input feature, leaving us in a character creator name field without enabled textual input.

To implement this recursive behaviour, we would have a value count up every time the feature is enabled, and down every time it is disabled. If the integer is > 0, we really enable the feature, and only disable it when the count reaches 0 again.


Please also have a look over the developer central page on our wiki. There you'll for some pointers on how to compile xoreos, our code style and commit guidelines, and our Code of Conduct. Thanks. :)

If you have any questions, feel free to reach out to us: you can generally find us in #xoreos on Freenode IRC. Alternatively, we have a mailing list here: https://xoreos.org/mailman/listinfo/xoreos-devel. Or ping me personally; I'm DrMcCoy on Freenode IRC, @TheRealDrMcCoy on Twitter, and my personal email address is [email protected] (If you email me and use gmail, please also watch your spam folder for replies. gmail sometimes doesn't like my emails)

KOTOR: Some textures not transparent

I'm currently developing on the ingame GUI, and in there I recognized some weird behaviour of some textures, which are not transparent, as in the original game, but black. I already looked into the images and found out, that they actually have no alpha channel, but some Texture Information which could point to the way, they should be rendererd.
bildschirmfoto zu 2017-09-02 16-19-41

NWN: Graphics

I found some time to take a closer look at what nwn is doing under the hood using apitrace.

It using shaders. To be more exact pre GLSL shader extension. Example (one of the fragment shaders): https://gist.github.com/logzero/4747949

But also fixed function lighting (2 lights) for the tiles I guess.

The shadows are done with stencil volumes (doom3).

The characters/dynamic objects are getting 8 closest lights + shader I think, need to verify this though.

Btw this is how mesh rendering looks like :)
glClientActiveTextureARB(texture = GL_TEXTURE0)
glEnableClientState(array = GL_TEXTURE_COORD_ARRAY)
glTexCoordPointer(size = 2, type = GL_FLOAT, stride = 8, pointer = [binary data, size = 32 bytes])
glNormalPointer(type = GL_FLOAT, stride = 12, pointer = [binary data, size = 48 bytes])
glVertexPointer(size = 3, type = GL_FLOAT, stride = 12, pointer = [binary data, size = 48 bytes])
glDrawElements(mode = GL_TRIANGLES, count = 6, type = GL_UNSIGNED_SHORT, indices = [binary data, size = 12 bytes])

NWN: EquippedItem_List not always parsed correctly

There are several cases where the EquippedItem_List (an Aurora::GFFList) does not appear to be parsed correctly. Specifically, Pavel in the NWN Prelude (nw_guard002 in the nwm file) and several others. In-game, these characters appear naked. After some debugging it looks like the EquippedRes RESREF strings are being returned as empty strings when they clearly have a value. The same nwm file is parsed just fine using NWNViewer, which correctly shows the RESREF values.

Note that for the majority of characters this list is parsed and populated just fine, so presumably this is an edge case involving the actual GFF structure.

MKID_BE() is not deterministic on MSVC

This is definitely strange, but it seems that multi byte character constants on MSVC are not deterministic, as soon as there is more than one 0-byte at the end of the string. See the following debug sessions:

mbcc2

vs.

mbcc1

Just look at the tmp2 variable (the others are just for testing, I played around with the swapping a bit)

The first image has the character constant 'PEx\0', which gets (correctly) interpreted as 0x50457800 (or 0x00784550 after swapping)

The second image has the constant 'PE\0\0' and this is where things get totally screwed: 0x00504500 and 0x00455000 (swapped) are both bogus

playing with data alignment doesn't help anything

quite braindead IMHO...

Why all those "Copryright (c) BioWare corp." comments?

If this project contains code from BioWare's original engine(s), it can't legally be released under a Free Software license. If it doesn't, there's really no point in having these comments; they serve no purpose whatsoever and only cause confusion.

I'd be glad if you could clarify why these comments are there.

KOTOR: Cannot create character/start initial module.

No matter which combination of class and portrait I select, the game crashes upon attempting to create character.

This is the output:

Loading texture pack 2
WARNING: Failed to create texture "M01aa_04a_a0002t" (-1)
    Because: No such image resource "M01aa_04a_a0002t"
WARNING: Failed to create texture "DOR_LHR02_a00004" (-1)
    Because: No such image resource "DOR_LHR02_a00004"
WARNING: Failed to create texture "DOR_LHR02_a00004" (-1)
    Because: No such image resource "DOR_LHR02_a00004"
WARNING: Failed to create texture "DOR_LHR02_a00004" (-1)
    Because: No such image resource "DOR_LHR02_a00004"
WARNING: Failed to create texture "DOR_LHR02_a00004" (-1)
    Because: No such image resource "DOR_LHR02_a00004"
Segmentation fault (core dumped)

Xubuntu 18.04

More information available upon request.

ENGINES: design decisions

Apologies in advance if these have been discussed already - if so kindly refer me to the relevant place - and we don't seem to have a forum area, so let me ask here please:

Do we have an agreed design in terms of how the engine will work, e.g. the kind of loop (single threaded, at least to start with?), whether third party physics engine will be used (bullet?), third party rendering engine (or are we rolling out our own in OpenGL, excluding those still on Windows with very poor OpenGL support), etc, etc

Related: is there a roadmap of which features should be tackled first?

CMAKE Build - libogg not found

The cmake file doesn't seem to find libogg even it is clearly installed in my system.

only_config.txt

[*****@archbox build-clang]$ ls -al /usr/lib/libogg
lrwxrwxrwx 1 root root 19 13. Sep 2014 /usr/lib/liboggkate.so -> liboggkate.so.1.2.2
lrwxrwxrwx 1 root root 19 13. Sep 2014 /usr/lib/liboggkate.so.1 -> liboggkate.so.1.2.2
-rwxr-xr-x 1 root root 10216 13. Sep 2014 /usr/lib/liboggkate.so.1.2.2
lrwxrwxrwx 1 root root 15 13. Okt 2014 /usr/lib/libogg.so -> libogg.so.0.8.2
lrwxrwxrwx 1 root root 15 13. Okt 2014 /usr/lib/libogg.so.0 -> libogg.so.0.8.2
-rwxr-xr-x 1 root root 26840 13. Okt 2014 /usr/lib/libogg.so.0.8.2

[*****@archbox build-clang]$ ls -al /usr/lib64/libogg
lrwxrwxrwx 1 root root 19 13. Sep 2014 /usr/lib64/liboggkate.so -> liboggkate.so.1.2.2
lrwxrwxrwx 1 root root 19 13. Sep 2014 /usr/lib64/liboggkate.so.1 -> liboggkate.so.1.2.2
-rwxr-xr-x 1 root root 10216 13. Sep 2014 /usr/lib64/liboggkate.so.1.2.2
lrwxrwxrwx 1 root root 15 13. Okt 2014 /usr/lib64/libogg.so -> libogg.so.0.8.2
lrwxrwxrwx 1 root root 15 13. Okt 2014 /usr/lib64/libogg.so.0 -> libogg.so.0.8.2
-rwxr-xr-x 1 root root 26840 13. Okt 2014 /usr/lib64/libogg.so.0.8.2

[****@archbox build-clang]$ ls -al /usr/lib32/libogg
lrwxrwxrwx 1 root root 15 20. Okt 2014 /usr/lib32/libogg.so -> libogg.so.0.8.2
lrwxrwxrwx 1 root root 15 20. Okt 2014 /usr/lib32/libogg.so.0 -> libogg.so.0.8.2
-rwxr-xr-x 1 root root 26044 20. Okt 2014 /usr/lib32/libogg.so.0.8.2

System OS: Arch current

Main website

Chrome and Safari keep blocking me from going to the main website. Something about the security certificate responding with garbage. Is there a mirror of the site I can download?

NWN: Animation needs to be implemented

I'm opening this issue to discuss the design I'm leaning towards.

After parsing, each model has a list of named animations consisting of animation nodes; each animation node targets a particular ModelNode by name. We'll ignore emitters for the first pass. A model may also have a list of default animations.

Each Model has a current animation and a next animation (these will both be null for static models).

Each ModelNode now has a current position/orientation (in addition to the original position/orientation specified).

At render time for an animated model (one where current animation != null) we advance the elapsed time by dt (time since last frame). This may run past the end of the animation, in which case we start the next animation at time 0.

Each animation node interpolates the new position/orientation from its keyframes and updates the current position/orientation of the corresponding ModelNode.

Model::playAnimation simply sets the nextAnimation field.

If the current animation ends and nextAnimation is null, we randomly select one of the model's default animations - unless the current animation loops, in which case we simply reset the current animation to the beginning. If there are no default animations and no next animation (such as with a door) the object becomes static again.

It's unclear at first glance where dt should be calculated.

wrong graphic on gl 2.1

tested like some one ask on X5000 linux Ubuntu Mate 16.10
and because radeon hd 6xxx here on powerpc use only gl 2.1 (xorg bug)
i have jade empire with wrong graphic
atteched the console log.

in any way great job
jade.txt

Build fails with Ubuntu 12.04

Ubuntu 12.04 is not yet out, but packages should be finalized. I tried on the master branch:

./autogen.sh

Works!
./configure fails with:
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
./configure: line 3125: syntax error near unexpected token 2.2' ./configure: line 3125:LT_PREREQ(2.2)'

Changing FSAA while xoreos is running displaces highlight bounding boxes

When changing the FSAA settings in NWN (either the main menu or the ingame options menu), the highlight bounding boxes suddenly appear offset by half an object's height. This doesn't seem to change the cursor/object interactions, though.

When restarting xoreos with the new FSAA settings, they're okay again. Until the next time the FSAA setting is changed, then they're offset again.

20161022t235515

WIN32: Fix CMake definitions for iconv

Here's a small patch which fixes compilation on Windows with MSVC:

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 31bc1b3..8d1d8ea 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -30,7 +30,7 @@ elseif(CMAKE_HOST_UNIX)
   string(REPLACE "<LINK_LIBRARIES>" "-Wl,--start-group <LINK_LIBRARIES> -Wl,--end-group" CMAKE_C_CREATE_SHARED_MODULE "${CMAKE_C_CREATE_SHARED_MODULE}")
   string(REPLACE "<LINK_LIBRARIES>" "-Wl,--start-group <LINK_LIBRARIES> -Wl,--end-group" CMAKE_CXX_CREATE_SHARED_MODULE "${CMAKE_CXX_CREATE_SHARED_MODULE}")
 elseif(CMAKE_HOST_WIN32)
-
+  add_definitions(-DICONV_CONST=)
 else()
   message(STATUS "Unknown platform, maybe not supported")
 endif() 

Problem is that in common/encoding.cpp, the symbol (macro) ICONV_CONST is used. However, on Win32 with MSVC, that symbol is not defined, leading to a compilation error. It should be defined to the empty string (just like for UNIX a few lines above in CMakeLists.txt) so that the preprocessor accepts it.

Another solution would be to drop the ICONST_CONV macro from common/encoding.cpp

NWN2: Maps should be clickable to move too

Oh the amount of pain this would save!

If you want to be really pro about it, make the 'marked locations' on the minimap clickable too, so you don't even need to open the map in most cases.

Switching between resolutions while fullscreen is borked

Somehow, SDL2 behaves weirdly when switching between resolutions while in fullscreen mode. The resolution isn't really switched, the window surface size isn't set correctly, etc.

Even switching on fullscreen while in a non-standard resolution isn't all that great for me. SDL 1.2 behaves way nicer there. No idea if that can be fixed, even.

WITCHER: Tries to load non-existent files

When I try to run The Witcher, I run into the following problem:

Detected game "The Witcher"
[  0%] Declare languages (0.00s)
Setting the language to Invalid text + Invalid voices
[  7%] Loading user game config (0.05s)
[ 15%] Setting base directory (0.07s)
[ 23%] Adding extra archive directories (0.08s)
ERROR: No such directory "data/voices"

My first workaround is to change in WitcherEngine::initResources():

indexMandatoryDirectory("data/voices" , 0, 0, 4);
to
indexOptionalDirectory("data/voices" , 0, 0, 4);

Now we get further:

Detected game "The Witcher"
[  0%] Declare languages (0.00s)
Setting the language to Invalid text + Invalid voices
[  7%] Loading user game config (0.05s)
[ 15%] Setting base directory (0.07s)
[ 23%] Adding extra archive directories (0.08s)
[ 30%] Loading main KEY (0.10s)
[ 38%] Loading the localized base KEY (0.83s)
[ 46%] Indexing extra resources (0.84s)
[ 53%] Indexing Windows-specific resources (1.05s)
[ 61%] Indexing override files (1.10s)
[ 69%] Indexing language files (Invalid text + Invalid voices) (1.10s)
ERROR: No such archive file "lang_-1.key"

It's not detecting the language due to more missing files. I had to comment out the check for the M1 and M2 files in detectAudio():

const Common::UString v1 = Common::UString::format("lang_%d.key"  , langID);
const Common::UString v2 = Common::UString::format("M1_%d.key"    , langID);
const Common::UString v3 = Common::UString::format("M2_%d.key"    , langID);
const Common::UString t  = Common::UString::format("dialog_%d.tlk", langID);

if (files.contains(v1, true) /*&& files.contains(v2, true) && files.contains(v3, true)*/)
    languagesVoice.push_back((Aurora::Language) i);

And make M1 and M2 optional in loadLanguageFiles():

_languageResources.push_back(Common::ChangeID());
archive = Common::UString::format("M1_%d.key", LangMan.getLanguageID(langVoice));
indexOptionalArchive(archive, 101, &_languageResources.back());

_languageResources.push_back(Common::ChangeID());
archive = Common::UString::format("M2_%d.key", LangMan.getLanguageID(langVoice));
indexOptionalArchive(archive, 102, &_languageResources.back());

Now we can load successfully:

Detected game "The Witcher"
[  0%] Declare languages (0.00s)
Setting the language to English text + English voices
[  7%] Loading user game config (0.03s)
[ 15%] Setting base directory (0.05s)
[ 23%] Adding extra archive directories (0.06s)
[ 30%] Loading main KEY (0.08s)
[ 38%] Loading the localized base KEY (0.80s)
[ 46%] Indexing extra resources (0.82s)
[ 53%] Indexing Windows-specific resources (1.00s)
[ 61%] Indexing override files (1.02s)
[ 69%] Indexing language files (English text + English voices) (1.03s)
[ 76%] Registering file formats (1.95s)
[ 84%] Loading game cursors (1.95s)
[ 92%] Initializing internal game config (1.97s)
[100%] Successfully initialized the engine (1.99s)

I installed The Witcher from my original v1.0 CD (I got it bundled for free with a graphics card quite some time ago), and then applied all the patches to take it to v1.5. I'm not sure if this install process results in a different set of files compared to buying the game today. I can share a full file listing from my installation if it would be helpful, or try anything else you'd like.

xml2gff tool, with DA2 GFF3.2 compatibility

Hi, we'd like to politely ask for a feature request: (updated?) xml2gff for GFF3.2 for DA2 compatibility
there is a GFF editor in the DA:O toolset for GFF 3.2 with field length limitation incompatible with GFF3.2 used in DA2, such as ARE, UTC, etc. I.E: area layout in DA:O is 8 characters max, but in DA2 is more and the current GFF editor throws an error and closes.

Please let us know.

Thanks!

CI: AppVeyor builds are broken

There seem to be at least two different issues at play here:

  1. OpenAL builds fail with "Unknown arguments: -D_WIN32_WINNT=0x0502": https://ci.appveyor.com/project/DrMcCoy/xoreos/build/0.0.4+AppVeyor.629#L348 . Since has been going on for a few days. We cache the libraries, so when then build VM can pull them from the cache, everything works; if it can't, it breaks

  2. The other issue is newer. From today, I think. Our CMake boost checks fail: https://ci.appveyor.com/project/DrMcCoy/xoreos/build/0.0.4+AppVeyor.632#L372

I have no clue why any of these issues happen. So if anybody can help here, I would be grateful.

What is Common::TransformationMatrix::rotateAxisWorld doing?

Could someone please tell me what rotateAxisWorld is computing?

I am trying to implement a PoC with GLM to replace the TransformationMatrix (berenm/xoreos@61565b1), and I have written some test cases (https://github.com/berenm/xoreos/blob/840d639a3b70d89f53f68b71dfd0e90796fb3c9b/test/test-transmatrix.cpp) in order to check that the GLM results are the same as the current code, but I cannot understand how these functions are supposed to work.

I assumed that it is a rotation applied in the world referential, which is, AFAIK the same as a rotation matrix multiplication on the left side of the transformation matrix, in opposition to local transformations which are equivalent to matrices multiplied on the right side of the transformation matrix. But it looks like that the current code does not do that. I don't know which one is wrong.

By the way, there are obviously some issues with the getPosition and related methods as well as with the transpose method. The report with the failing test cases with the original code is available here: https://gist.github.com/berenm/4fb3e921e51bff76f622

If anyone is interested in running the test cases himself, they are in my https://github.com/berenm/xoreos/tree/cmake branch and require CMake and Catch build and run.

eos fails to load Neverwinter Nights

Hi.

Neverwinter Nights won't load with eos.

Neverwinter Nights 1.69 French with SoU and HotU is installed in the current directory (with proper write permissions) and the official BioWare Linux client is working just fine. No content mods are installed.

System:
Distribution: Arch Linux 64 bit
Linux: 3.1.6
Boost: 1.48
SDL: 1.2.14
OpenGL: Tungsten Graphics, Inc Mesa DRI Intel(R) Ironlake Mobile 2.1 Mesa 7.11.2
eos: 4dd74a6 compiled with GCC 4.6.2

Command:
eos --path=. --logfile=eosnwn.log

eosnwn.log:
[2012-01-05T13:43:03] WARNING: No target specified, but found a target with a matching path!
[2012-01-05T13:43:03] Target "game"!
[2012-01-05T13:43:03] WARNING: Your graphics card does not support the needed extension for S3TC DXT1, DXT3 and DXT5 texture decompression!
[2012-01-05T13:43:03] WARNING: Switching to manual S3TC DXTn decompression. This will be slower and will take up more video memory!
[2012-01-05T13:43:03] Graphics subsystem initialized!
[2012-01-05T13:43:03] Sound subsystem initialized!
[2012-01-05T13:43:03] Event subsystem initialized!
[2012-01-05T13:43:03] Detected game "Neverwinter Nights"!
[2012-01-05T13:43:03] Setting base directory!
[2012-01-05T13:43:03] Adding extra archive directories!
[2012-01-05T13:43:03] Loading main KEY!
[2012-01-05T13:43:03] Shutting down!
[2012-01-05T13:43:03] ERROR: Failed opening needed BIFs!
[2012-01-05T13:43:03] Because: Type mismatch while merging KEY with BIF (2009, 2010)!

NWN: Crash in the animation code

Due to the changes in 1f84589, NWN now crashes when entering a module.

The crash is at src/graphics/aurora/animation.cpp:79 in Graphics::Aurora::Animation::update(), model->_animNodeMap.size() is 0, but it still tries to go into it with operator[]() (parameter: animNode->_nodeNumber == 0).

CMAKE Build - libboost issue / error

When using the default cmake file i get an libboost error in the linking phase. Attached is verbose build with gcc.

With -DBoost_USE_STATIC_LIBS=off (thanx to DrMcoy) for the hint. It works.

OS: Archlinux current

buildlog.txt

The Witcher: Environment loads but nothing else does

When loading The Witcher, the environment loads, but it is missing shaders and characters. The player takes control of a camera, which can go anywhere, but can otherwise do nothing else.

I'd like to provide more information, but the above is the only thing I know for 100% certain.

KOTOR: Implement game saving/loading

Should the original file format be used though? Loading it is no big deal while saving in it might prove problematic.

  • Basic save load menu
  • Saved games list loading (name, number and time played)
  • Saved game loading (module, PC gender and position)
  • Display planet and area names, screenshot and party members
  • Loading of everything else
  • Saving game

NWN:EE: Check new resource type IDs

Per the ChangeLog of the 1.75 patch of Neverwinter Nights: Enhanced Edition: http://blog.beamdog.com/2018/06/neverwinter-nights-enhanced-edition.html

nwhak.exe now understands all new res types (like .mtr)

That probably means that they added new resource type IDs for the new resource types. Someone who owns that game should check exactly which IDs these are, so that the Aurora::FileType enum in xoreos can be amended.

NWN:EE is not yet supported at all in xoreos, mainly because of the changed directory layout. They're still changing around stuff, and it's probably best to wait until the dust is settled, before adding support to xoreos (trying to catch up to a running target is not fun). But still, knowing the new type IDs would be very useful already. There's a chance they added clashes with IDs used in other games, so that's something to look out for.

One way to do it would be to download the Windows version of the game (Steam, the Beamdog client, or Beamdog's own website), which includes nwhak.exe. Then gather files of all the new resource types they added and put them into a HAK using nwhak.exe. The HAK should then contain the file contents and an index, consisting of the file name (minus extension) and a file type ID. The unerf tool in xoreos should be able to list the files, but not unknown resource type IDs per se. You'd need to modify the tool to spit out the ID in numerical form, and ideally comment here with a list of {new extension, numerical ID} pairs.

Failure to link on OpenBSD

xoreos-0.0.3 builds mostly successfully but fails at link time on OpenBSD.

I get the same results with GCC 4.2 and 4.9, and with both BSD make and GNU make.

(Note: xoreos-tools builds and runs fine.)

/usr/bin/libtool  --tag=CXX    --mode=link c++ -I.. -ggdb  -Wall -Wpointer-arith -Wshadow -Wsign-compare -Wunused-parameter   -DGLEW_STATIC -DGLEW_NO_GLU -Wnon-virtual-dtor -Wno-overloaded-virtual -DUNIX    -I/usr/local/include/libxml2 -I/usr/local/include  -I/usr/local/include -I/usr/local/include/SDL2 -I/usr/X11R6/include -D_REENTRANT -I/usr/X11R6/include -I/usr/X11R6/include -pthread -I/usr/X11R6/include/freetype2           -O2 -pipe  -L/usr/local/lib -L/usr/X11R6/lib -o xoreos cline.o xoreos.o    engines/libengines.la  events/libevents.la  video/libvideo.la  sound/libsound.la  graphics/libgraphics.la  aurora/libaurora.la  common/libcommon.la  ../lua/liblua.la   -liconv -lz -llzma  -L/usr/local/lib -lxml2 -lz -L/usr/local/lib -liconv -lm  -L/usr/local/lib -lSDL2 -pthread -L/usr/X11R6/lib -R/usr/X11R6/lib -lGL  -L/usr/X11R6/lib -lfreetype -lz -lxvidcore  -lopenal -lfaad -lmad -logg  -lvorbisfile   -lboost_system-mt   -lboost_filesystem-mt   -lboost_regex-mt   -lboost_atomic-mt   -lboost_locale-mt   
libtool: link: c++ -o xoreos -pthread -I.. -ggdb -Wall -Wpointer-arith -Wshadow -Wsign-compare -Wunused-parameter -DGLEW_STATIC -DGLEW_NO_GLU -Wnon-virtual-dtor -Wno-overloaded-virtual -DUNIX -I/usr/local/include/libxml2 -I/usr/local/include -I/usr/local/include -I/usr/local/include/SDL2 -I/usr/X11R6/include -D_REENTRANT -I/usr/X11R6/include -I/usr/X11R6/include -I/usr/X11R6/include/freetype2 -O2 -pipe cline.o xoreos.o /usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/.libs/libengines.a /usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/events/.libs/libevents.a /usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/video/.libs/libvideo.a /usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/sound/.libs/libsound.a /usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/graphics/.libs/libgraphics.a /usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/aurora/.libs/libaurora.a /usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/common/.libs/libcommon.a /usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/lua/.libs/liblua.a -L.libs -liconv -lz -llzma -lxml2 -lm -lSDL2 -lsndio -lusbhid -lGL -lexpat -lglapi -lpthread -lXdamage -lXfixes -lX11 -lxcb -lX11-xcb -lxcb-glx -lxcb-dri2 -lXxf86vm -lXext -ldrm -lfreetype -lxvidcore -lopenal -lfaad -lmad -logg -lvorbisfile -lvorbis -lboost_system-mt -lstdc++ -lboost_filesystem-mt -lboost_regex-mt -lboost_atomic-mt -lboost_locale-mt -Wl,-rpath,/usr/X11R6/lib,-rpath-link,/usr/local/lib,-rpath-link,/usr/X11R6/lib
.libs/libxml2.so.15.1: warning: warning: strcpy() is almost always misused, please use strlcpy()
.libs/libGL.so.16.0: warning: warning: random() may return deterministic values, is that what you want?
.libs/libxvidcore.so.4.4: warning: warning: vsprintf() is often misused, please use vsnprintf()
.libs/libboost_regex-mt.so.6.0: warning: warning: wcscpy() is almost always misused, please use wcslcpy()
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/.libs/libengines.a(functions.o): In function `Engines::KotOR2::Functions::getRandom(int, int, int)':
script/functions.cpp:106: warning: warning: rand() may return deterministic values, is that what you want?
.libs/libxml2.so.15.1: warning: warning: strcat() is almost always misused, please use strlcat()
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/common/.libs/libcommon.a(pe_exe.o): In function `Common::PEResourceID::toString() const':
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/common/pe_exe.cpp:96: warning: warning: sprintf() is often misused, please use snprintf()
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/.libs/libengines.a(nwn.o): In function `Engines::NWN::NWNEngine::deinit()':
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/nwn/nwn.cpp:468: undefined reference to `Engines::NWN::Game::~Game()'
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/.libs/libengines.a(nwn.o): In function `~NWNEngine':
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/nwn/nwn.cpp:68: undefined reference to `Engines::NWN::Game::~Game()'
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/nwn/nwn.cpp:68: undefined reference to `Engines::NWN::Game::~Game()'
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/nwn/nwn.cpp:68: undefined reference to `Engines::NWN::Game::~Game()'
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/.libs/libengines.a(nwn.o): In function `Engines::NWN::NWNEngine::run()':
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/nwn/nwn.cpp:132: undefined reference to `Engines::NWN::Game::Game(Engines::NWN::NWNEngine&, Engines::Console&, Engines::NWN::Version const&)'
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/nwn/nwn.cpp:133: undefined reference to `Engines::NWN::Game::run()'
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/.libs/libengines.a(console.o): In function `Engines::NWN::Console::cmdExitModule(Engines::Console::CommandLine const&)':
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/nwn/console.cpp:178: undefined reference to `Engines::NWN::Game::getModule()'
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/.libs/libengines.a(console.o): In function `Engines::NWN::Console::updateAreas()':
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/nwn/console.cpp:153: undefined reference to `Engines::NWN::Game::getModule()'
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/.libs/libengines.a(console.o): In function `Engines::NWN::Console::cmdListAreas(Engines::Console::CommandLine const&)':
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/nwn/console.cpp:231: undefined reference to `Engines::NWN::Game::getModule()'
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/.libs/libengines.a(console.o): In function `Engines::NWN::Console::updateModules()':
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/nwn/console.cpp:147: undefined reference to `Engines::NWN::Game::getModules(std::vector<Common::UString, std::allocator<Common::UString> >&)'
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/.libs/libengines.a(console.o): In function `Engines::NWN::Console::cmdLoadCampaign(Engines::Console::CommandLine const&)':
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/nwn/console.cpp:202: undefined reference to `Engines::NWN::Game::getModule()'
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/.libs/libengines.a(console.o): In function `Engines::NWN::Console::cmdLoadModule(Engines::Console::CommandLine const&)':
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/nwn/console.cpp:220: undefined reference to `Engines::NWN::Game::getModule()'
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/.libs/libengines.a(console.o): In function `Engines::NWN::Console::cmdGotoArea(Engines::Console::CommandLine const&)':
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/nwn/console.cpp:242: undefined reference to `Engines::NWN::Game::getModule()'
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/.libs/libengines.a(console.o): In function `Engines::NWN::Console::cmdPlayMusic(Engines::Console::CommandLine const&)':
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/nwn/console.cpp:265: undefined reference to `Engines::NWN::Game::playMusic(Common::UString const&)'
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/.libs/libengines.a(console.o): In function `Engines::NWN::Console::cmdStopMusic(Engines::Console::CommandLine const&)':
/usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/nwn/console.cpp:261: undefined reference to `Engines::NWN::Game::stopMusic()'
collect2: ld returned 1 exit status
Error while executing c++ -o xoreos -pthread -I.. -ggdb -Wall -Wpointer-arith -Wshadow -Wsign-compare -Wunused-parameter -DGLEW_STATIC -DGLEW_NO_GLU -Wnon-virtual-dtor -Wno-overloaded-virtual -DUNIX -I/usr/local/include/libxml2 -I/usr/local/include -I/usr/local/include -I/usr/local/include/SDL2 -I/usr/X11R6/include -D_REENTRANT -I/usr/X11R6/include -I/usr/X11R6/include -I/usr/X11R6/include/freetype2 -O2 -pipe cline.o xoreos.o /usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/engines/.libs/libengines.a /usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/events/.libs/libevents.a /usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/video/.libs/libvideo.a /usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/sound/.libs/libsound.a /usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/graphics/.libs/libgraphics.a /usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/aurora/.libs/libaurora.a /usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/src/common/.libs/libcommon.a /usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3/lua/.libs/liblua.a -L.libs -liconv -lz -llzma -lxml2 -lm -lSDL2 -lsndio -lusbhid -lGL -lexpat -lglapi -lpthread -lXdamage -lXfixes -lX11 -lxcb -lX11-xcb -lxcb-glx -lxcb-dri2 -lXxf86vm -lXext -ldrm -lfreetype -lxvidcore -lopenal -lfaad -lmad -logg -lvorbisfile -lvorbis -lboost_system-mt -lstdc++ -lboost_filesystem-mt -lboost_regex-mt -lboost_atomic-mt -lboost_locale-mt -Wl,-rpath,/usr/X11R6/lib,-rpath-link,/usr/local/lib,-rpath-link,/usr/X11R6/lib
*** Error 2 in src (Makefile:605 'xoreos')
*** Error 1 in src (Makefile:679 'all-recursive')
*** Error 1 in . (Makefile:674 'all-recursive')
*** Error 1 in /usr/ports/pobj/xoreos-0.0.3/xoreos-0.0.3 (Makefile:519 'all')

KOTOR: Implement dialogs

Partially implemented.

  • Dialog UI (frame, text display, reply selection)
  • Play generic animations
  • Activation distance
  • Play scripted animations
  • Camera setup
  • Continuous flow

Fix for filename globbing

I'm currently trying to port xoreos to MSVCand I noticed a few small problems with it. I'm thinking about creating a fork and implementing all my changes there. But in the meantime, here is something you might want to fix already:

diff --git a/src/common/filelist.cpp b/src/common/filelist.cpp
index 8a5c15b..faf38d9 100644
--- a/src/common/filelist.cpp
+++ b/src/common/filelist.cpp
@@ -301,7 +301,7 @@ const FileList::FilePath *FileList::getPath(const UString &glob, bool caseInsens

    // Iterate through the whole list, looking for a match
    for (std::list<FilePath>::const_iterator it = _files.begin(); it != _files.end(); ++it)
-       if (boost::regex_match(it->filePath.string(), expression))
+       if (boost::regex_match(it->filePath.generic_string(), expression))
            return &*it;

    return 0; 

filePath.string() returns paths with the windows-style separator "" instead of "/", so the globbing fails. The portable way is to use generic_string() which guarantees that "/" is used as separator

KOTOR: Mainmenu model animation issue

I tried to add the model for the main menu into it, but it seems, that the animation is somehow broken. The model can be found in rims/mainmenu.rim as mainmenu.mdl
Without Animation
With Animation

cppcheck

I am used to run cppcheck on projects I am working on. The results for xoreos are not that bad. There are few memory leaks when throwing exceptions and some minor issues like: catching some of the exceptions by value, throwing a copy instead of re-throwing.

Is there interest to get this fixed?

JADE: Vertex layout

Wow, I had no idea that there is a PC version of this game. I did a quick apitrace run with the GOG version.

Most complex vertex declaration in the trace:
Stream = 0, Offset = 0, FLOAT3, POSITION
Stream = 0, Offset = 12, FLOAT3, NORMAL
Stream = 2, Offset = 0, FLOAT2, TEXCOORD
Stream = 3, Offset = 0, D3DCOLOR, COLOR
Stream = 3, Offset = 4, SHORT4N, TANGENT
Stream = 3, Offset = 12, SHORT4N, TANGENT
Stream = 3, Offset = 20, SHORT4N, TANGENT

Vertex streams:
StreamNumber = 0, pStreamData = 0x736e140, OffsetInBytes = 82728, Stride = 24
StreamNumber = 2, pStreamData = 0x736e200, OffsetInBytes = 27576, Stride = 8
StreamNumber = 3, pStreamData = 0x736e2c0, OffsetInBytes = 12768, Stride = 28

There are simpler variants without color and/or without tangent space(?). The most simple being position + texcoord in one stream, probably UI.

Dependencies for ubuntu

Hi,

First of all, congratulations for the work. It is really nice!

I was able to compile xoreos on ubuntu, and I had to install the following packages (in case you want to add to a dependencies file):

liblzma-dev libsdl2-dev libxvidcore-dev libfaad-dev libvorbis-dev libmad0-dev libogg-dev

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.