Giter VIP home page Giter VIP logo

osg's Introduction

OpenMW

OpenMW is an open-source open-world RPG game engine that supports playing Morrowind by Bethesda Softworks. You need to own the game for OpenMW to play Morrowind.

OpenMW also comes with OpenMW-CS, a replacement for Bethesda's Construction Set.

Font Licenses:

Current Status

The main quests in Morrowind, Tribunal and Bloodmoon are all completable. Some issues with side quests are to be expected (but rare). Check the bug tracker for a list of issues we need to resolve before the "1.0" release. Even before the "1.0" release however, OpenMW boasts some new features, such as improved graphics and user interfaces.

Pre-existing modifications created for the original Morrowind engine can be hit-and-miss. The OpenMW script compiler performs more thorough error-checking than Morrowind does, meaning that a mod created for Morrowind may not necessarily run in OpenMW. Some mods also rely on quirky behaviour or engine bugs in order to work. We are considering such compatibility issues on a case-by-case basis - in some cases adding a workaround to OpenMW may be feasible, in other cases fixing the mod will be the only option. If you know of any mods that work or don't work, feel free to add them to the Mod status wiki page.

Getting Started

The data path

The data path tells OpenMW where to find your Morrowind files. If you run the launcher, OpenMW should be able to pick up the location of these files on its own, if both Morrowind and OpenMW are installed properly (installing Morrowind under WINE is considered a proper install).

Command line options

Syntax: openmw <options>
Allowed options:
  --help                                print help message
  --version                             print version information and quit
  --data arg (=data)                    set data directories (later directories
                                        have higher priority)
  --data-local arg                      set local data directory (highest
                                        priority)
  --fallback-archive arg (=fallback-archive)
                                        set fallback BSA archives (later
                                        archives have higher priority)
  --resources arg (=resources)          set resources directory
  --start arg                           set initial cell
  --content arg                         content file(s): esm/esp, or
                                        omwgame/omwaddon
  --no-sound [=arg(=1)] (=0)            disable all sounds
  --script-verbose [=arg(=1)] (=0)      verbose script output
  --script-all [=arg(=1)] (=0)          compile all scripts (excluding dialogue
                                        scripts) at startup
  --script-all-dialogue [=arg(=1)] (=0) compile all dialogue scripts at startup
  --script-console [=arg(=1)] (=0)      enable console-only script
                                        functionality
  --script-run arg                      select a file containing a list of
                                        console commands that is executed on
                                        startup
  --script-warn [=arg(=1)] (=1)         handling of warnings when compiling
                                        scripts
                                        0 - ignore warning
                                        1 - show warning but consider script as
                                        correctly compiled anyway
                                        2 - treat warnings as errors
  --script-blacklist arg                ignore the specified script (if the use
                                        of the blacklist is enabled)
  --script-blacklist-use [=arg(=1)] (=1)
                                        enable script blacklisting
  --load-savegame arg                   load a save game file on game startup
                                        (specify an absolute filename or a
                                        filename relative to the current
                                        working directory)
  --skip-menu [=arg(=1)] (=0)           skip main menu on game startup
  --new-game [=arg(=1)] (=0)            run new game sequence (ignored if
                                        skip-menu=0)
  --encoding arg (=win1252)             Character encoding used in OpenMW game
                                        messages:

                                        win1250 - Central and Eastern European
                                        such as Polish, Czech, Slovak,
                                        Hungarian, Slovene, Bosnian, Croatian,
                                        Serbian (Latin script), Romanian and
                                        Albanian languages

                                        win1251 - Cyrillic alphabet such as
                                        Russian, Bulgarian, Serbian Cyrillic
                                        and other languages

                                        win1252 - Western European (Latin)
                                        alphabet, used by default
  --fallback arg                        fallback values
  --no-grab                             Don't grab mouse cursor
  --export-fonts [=arg(=1)] (=0)        Export Morrowind .fnt fonts to PNG
                                        image and XML file in current directory
  --activate-dist arg (=-1)             activation distance override
  --random-seed arg (=<impl defined>)   seed value for random number generator

osg's People

Contributors

aluaces avatar andesengineering avatar anyoldname3 avatar blobfish avatar capostrophic avatar d-a-heitbrink avatar dan-t avatar elsid avatar emminizer avatar ewmailing avatar filnet avatar flashk avatar glebm avatar gwaldron avatar juval avatar kornerr avatar laurensvoerman avatar marchelbling avatar mathieu avatar mp3butcher avatar mplatings avatar openscenegraph avatar psi29a avatar remoe avatar rhabacker avatar rickyviking avatar robertosfield avatar tomhog avatar unelsson avatar valid-ptr 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

osg's Issues

Figure out which repo to use

scrawl/OSG
vs.
OpenMW/OSG

is causing some duplication and confusion.

The former was meant to be a testing ground, and the latter "stable", but this hasn't really found any use. Anyway now that experiments have more or less ceded, it might be best to pick one repo and delete the other.

Then again, scrawl/OSG might still be used for me to submit fixes to OSG (that may not have anything to do with OpenMW).

Possible solutions:

  • Delete OpenMW/OSG
  • Delete scrawl/OSG
  • Hardreset scrawl/OSG to OpenSceneGraph/OpenSceneGraph
  • Delete scrawl/OSG then create scrawl/OpenSceneGraph for upstream fixes

Optionally create a redirect from any deleted repo to the other one.

Is 3.6 branch ready to be default?

It fixes for me some issues with distant land and works more efficient. Except for a lot of warnings at compilation time, i'm not aware if it introduces any new problems.

Improve CullThreadPerCamera threading model

Currently, the CullThreadPerCamera threading model is not very useful because the frame break is delayed until the last camera has started rendering. If this issue were fixed, the threading model could be useful in spreading OpenMW's culling work (e.g. the main camera and water reflection/refraction cameras) across multiple threads, which in turn would reduce the chance of being CPU-limited. Note there are several classes (mostly CullCallbacks) in OpenMW that would need to be adjusted to support multiple culling threads, but this is very much doable.

Fix in progress here: http://forum.openscenegraph.org/viewtopic.php?t=14991 . Unfortunately, this patch may cause increased latency between the cull and render stages.

Mutex locks in Node::addParent / removeParent

Candidate for removal? The threaded loading mechanism for OpenMW shouldn't need to modify loaded nodes once they're passed on to the main thread. Attaching/detaching only happens in the main thread.

As well in StateSet::addParent/removeParent.

Removing the mutexes would break osg's DatabasePager but we're not using that.

Can't build with gcc 6

Scanning dependencies of target osgdb_xine
[ 53%] Building CXX object src/osgPlugins/lwo/CMakeFiles/osgdb_lwo.dir/old_Lwo2.o
[ 53%] Building C object src/osgPlugins/xine/CMakeFiles/osgdb_xine.dir/video_out_rgb.o
/home/niko/devel/openscenegraph-git/src/osg/src/osgPlugins/xine/video_out_rgb.c: In function ‘rgbout_update_frame_format’:
/home/niko/devel/openscenegraph-git/src/osg/src/osgPlugins/xine/video_out_rgb.c:2325:41: warning: implicit declaration of function ‘xine_xmalloc_aligned’ [-Wimplicit-function-declaration]
frame->vo_frame.base[0] = (uint8_t_) xine_xmalloc_aligned(16,
^~~~~~~~~~~~~~~~~~~~
/home/niko/devel/openscenegraph-git/src/osg/src/osgPlugins/xine/video_out_rgb.c:2325:30: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
frame->vo_frame.base[0] = (uint8_t_) xine_xmalloc_aligned(16,
^
/home/niko/devel/openscenegraph-git/src/osg/src/osgPlugins/xine/video_out_rgb.c:2328:30: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
frame->vo_frame.base[1] = (uint8_t_) xine_xmalloc_aligned(16,
^
/home/niko/devel/openscenegraph-git/src/osg/src/osgPlugins/xine/video_out_rgb.c:2331:30: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
frame->vo_frame.base[2] = (uint8_t_) xine_xmalloc_aligned(16,
^
/home/niko/devel/openscenegraph-git/src/osg/src/osgPlugins/xine/video_out_rgb.c:2349:30: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
frame->vo_frame.base[0] = (uint8_t_) xine_xmalloc_aligned(16,
^
[ 53%] Building CXX object src/osgPlugins/gles/CMakeFiles/osgdb_gles.dir/TriangleStripVisitor.o
[ 53%] Building CXX object src/osgPlugins/xine/CMakeFiles/osgdb_xine.dir/ReaderWriterXine.o
[ 53%] Building CXX object src/osgPlugins/gles/CMakeFiles/osgdb_gles.dir/IndexMeshVisitor.o
[ 53%] Building CXX object src/osgPlugins/ply/CMakeFiles/osgdb_ply.dir/vertexData.o
[ 53%] Linking CXX shared module ../../../lib/osgPlugins-3.4.0/osgdb_xine.so
[ 53%] Built target osgdb_xine
Scanning dependencies of target osgdb_ffmpeg
[ 53%] Building CXX object src/osgPlugins/ffmpeg/CMakeFiles/osgdb_ffmpeg.dir/FFmpegClocks.o
[ 53%] Building CXX object src/osgPlugins/lwo/CMakeFiles/osgdb_lwo.dir/old_Lwo2Layer.o
[ 53%] Building CXX object src/osgPlugins/ffmpeg/CMakeFiles/osgdb_ffmpeg.dir/FFmpegDecoderAudio.o
/home/niko/devel/openscenegraph-git/src/osg/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp: In member function ‘void osgFFmpeg::FFmpegDecoderAudio::open(AVStream_, osgFFmpeg::FFmpegParameters_)’:
/home/niko/devel/openscenegraph-git/src/osg/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp:230:20: error: ‘AVCodecContext {aka struct AVCodecContext}’ has no member named ‘get_buffer’; did you mean ‘get_buffer2’?
m_context->get_buffer = avcodec_default_get_buffer;
^~~~~~~~~~
/home/niko/devel/openscenegraph-git/src/osg/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp:230:33: error: ‘avcodec_default_get_buffer’ was not declared in this scope
m_context->get_buffer = avcodec_default_get_buffer;
^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/niko/devel/openscenegraph-git/src/osg/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp:231:20: error: ‘AVCodecContext {aka struct AVCodecContext}’ has no member named ‘release_buffer’; did you mean ‘get_buffer2’?
m_context->release_buffer = avcodec_default_release_buffer;
^~~~~~~~~~~~~~
/home/niko/devel/openscenegraph-git/src/osg/src/osgPlugins/ffmpeg/FFmpegDecoderAudio.cpp:231:37: error: ‘avcodec_default_release_buffer’ was not declared in this scope
m_context->release_buffer = avcodec_default_release_buffer;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/osgPlugins/ffmpeg/CMakeFiles/osgdb_ffmpeg.dir/build.make:86: set di istruzioni per l'obiettivo "src/osgPlugins/ffmpeg/CMakeFiles/osgdb_ffmpeg.dir/FFmpegDecoderAudio.o" non riuscito
make[2]: ** [src/osgPlugins/ffmpeg/CMakeFiles/osgdb_ffmpeg.dir/FFmpegDecoderAudio.o] Errore 1
CMakeFiles/Makefile2:6512: set di istruzioni per l'obiettivo "src/osgPlugins/ffmpeg/CMakeFiles/osgdb_ffmpeg.dir/all" non riuscito
make[1]: *** [src/osgPlugins/ffmpeg/CMakeFiles/osgdb_ffmpeg.dir/all] Errore 2
make[1]: *** Attesa per i processi non terminati....
[ 53%] Building CXX object src/osgPlugins/lwo/CMakeFiles/osgdb_lwo.dir/Polygon.o
[ 53%] Building CXX object src/osgPlugins/ply/CMakeFiles/osgdb_ply.dir/plyfile.o
[ 53%] Building CXX object src/osgPlugins/lwo/CMakeFiles/osgdb_lwo.dir/ReaderWriterLWO.o
[ 53%] Building CXX object src/osgPlugins/lwo/CMakeFiles/osgdb_lwo.dir/Surface.o
/home/niko/devel/openscenegraph-git/src/osg/src/osgPlugins/lwo/ReaderWriterLWO.cpp: In member function ‘virtual osgDB::ReaderWriter::ReadResult ReaderWriterLWO::readNode_old_LWO2(const string&, const Options
) const’:
/home/niko/devel/openscenegraph-git/src/osg/src/osgPlugins/lwo/ReaderWriterLWO.cpp:148:10: warning: ‘template class std::auto_ptr’ is deprecated [-Wdeprecated-declarations]
std::auto_ptr lwo2(new Lwo2());
^~~~~~~~
In file included from /usr/include/c++/6.1.1/memory:81:0,
from /home/niko/devel/openscenegraph-git/src/osg/src/osgPlugins/lwo/ReaderWriterLWO.cpp:19:
/usr/include/c++/6.1.1/bits/unique_ptr.h:49:28: note: declared here
template class auto_ptr;
^~~~~~~~
[ 53%] Linking CXX shared module ../../../lib/osgPlugins-3.4.0/osgdb_ply.so
[ 53%] Built target osgdb_ply
[ 53%] Building CXX object src/osgPlugins/lwo/CMakeFiles/osgdb_lwo.dir/Tessellator.o
[ 53%] Building CXX object src/osgPlugins/gles/CMakeFiles/osgdb_gles.dir/UnIndexMeshVisitor.o
[ 53%] Building CXX object src/osgPlugins/lwo/CMakeFiles/osgdb_lwo.dir/Unit.o
[ 53%] Building CXX object src/osgPlugins/lwo/CMakeFiles/osgdb_lwo.dir/VertexMap.o
[ 54%] Building CXX object src/osgPlugins/gles/CMakeFiles/osgdb_gles.dir/forsythtriangleorderoptimizer.o
[ 54%] Linking CXX shared module ../../../lib/osgPlugins-3.4.0/osgdb_lwo.so
[ 54%] Built target osgdb_lwo
[ 54%] Linking CXX shared module ../../../lib/osgPlugins-3.4.0/osgdb_gles.so
[ 54%] Built target osgdb_gles
Makefile:127: set di istruzioni per l'obiettivo "all" non riuscito
make: *_* [all] Errore 2
==> ERRORE: Si è verificato un errore in build().
L'operazione sta per essere interrotta...

Make node callbacks as fast as in OSG 3.2

OSG 3.4's new callback mechanism is way slower than the old one.

Each callback run now calls 4 virtual functions rather than just one.

Old callbacks:
NodeCallback::operator()

New callbacks:
Callback::run()
object->asNode()
data->asNodeVisitor()
NodeCallback::operator()

I don't like the new run(Object*, Object*) type method. Those dynamic casts are unnecessary. We know the types at compile time.

OpenMW uses thousands of node callbacks in a typical scene (mostly LightListCallbacks and keyframe controllers). There was a noticable performance degradation from the new callback mechanism, although it has been somewhat alleviated when Robert changed the dynamic_cast's to virtual functions Object::asNode().

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.