mindwerks / xlengine Goto Github PK
View Code? Open in Web Editor NEWXLEngine allows you to play Dark Forces, Daggerfall and soon Outlaws and Blood with modern technology.
License: MIT License
XLEngine allows you to play Dark Forces, Daggerfall and soon Outlaws and Blood with modern technology.
License: MIT License
I've compiled the latest (master) in Arch Linux, and can launch DarkXL. (I had to rename a few files due to the case-sensitivity issue there's currently a pending PR for). However at the Agent Menu, I see no agents in the list and no missions available, and none of the buttons work except for the "DOS" button to quit.
In case it's useful, stdout gives the following output while I'm launching and in the menu:
cut=26, 4cut=26, 3cut=27, 4cut=26, 3cut=3, 3cut=3, 3
On a more general note, looking through the code and scripts in the git depot, I don't see any code or scripts that seem like it would handle the bulk of what I'd expect to see in a fully working DarkXL, eg code/script for weapons, enemies, etc. As I understand the Jedi Engine is Doom-like in that the game logic is still in the EXE; ie the only things in the game's resource files are graphics, sounds, level data, etc. Do the current depot contents contain a fully working DarkXL (ie analogous to the DarkXL Alpha version 9.08 build from long ago) or will that need to be totally reimplemented?
Happens with soft8, but will likely happen with soft32 when #18 is fixed.
*** Error in `/home/bcurtis/Workspace/Private/XLEngine/build/XLEngine': free(): invalid pointer: 0x000055555a2b2ce0 ***
Thread 1 "XLEngine" received signal SIGABRT, Aborted.
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1 0x00007ffff5fdef5d in __GI_abort () at abort.c:90
#2 0x00007ffff602728d in __libc_message (action=action@entry=do_abort,
fmt=fmt@entry=0x7ffff614e528 "*** Error in `%s': %s: 0x%s ***\n") at ../sysdeps/posix/libc_fatal.c:181
#3 0x00007ffff602e64a in malloc_printerr (action=<optimized out>, str=0x7ffff614aeae "free(): invalid pointer",
ptr=<optimized out>, ar_ptr=<optimized out>) at malloc.c:5426
#4 0x00007ffff603073e in _int_free (av=0x7ffff6380c20 <main_arena>, p=<optimized out>, have_lock=0) at malloc.c:4175
#5 0x00007ffff603544e in __GI___libc_free (mem=<optimized out>) at malloc.c:3145
#6 0x00005555556cc1d1 in aligned_free (ptr=0x55555a2b2ce0)
at /home/bcurtis/Workspace/Private/XLEngine/xlengine/render/Driver3D_Soft.cpp:84
#7 0x00005555556cc4b6 in Driver3D_Soft::~Driver3D_Soft (this=0x555557f9ad40, __in_chrg=<optimized out>)
at /home/bcurtis/Workspace/Private/XLEngine/xlengine/render/Driver3D_Soft.cpp:129
#8 0x00005555556cc584 in Driver3D_Soft::~Driver3D_Soft (this=0x555557f9ad40, __in_chrg=<optimized out>)
at /home/bcurtis/Workspace/Private/XLEngine/xlengine/render/Driver3D_Soft.cpp:134
#9 0x00005555557366e0 in Engine::Destroy (this=0x555557fffa20) at /home/bcurtis/Workspace/Private/XLEngine/xlengine/Engine.cpp:369
#10 0x00005555557356fe in Engine::~Engine (this=0x555557fffa20, __in_chrg=<optimized out>)
at /home/bcurtis/Workspace/Private/XLEngine/xlengine/Engine.cpp:96
#11 0x000055555573571a in Engine::~Engine (this=0x555557fffa20, __in_chrg=<optimized out>)
at /home/bcurtis/Workspace/Private/XLEngine/xlengine/Engine.cpp:97
#12 0x0000555555799b36 in main (argc=3, argv=0x7fffffffdf18)
at /home/bcurtis/Workspace/Private/XLEngine/xlengine/linux/main.cpp:236
Was just playing around trying to see how far I could get. I am assuming these 24 errors are because vcpkg is downloading the latest versions of the libs and not what was last used? I also had a enet errors but I disabled networking via the flag (thanks for that!) now down to these seem to be OpenGL and ImageLoader only.
Any help appreciated. My first instinct is to roll back the vcpkg to 2018 when I think most of the work was done and try again?
Win32 and Win64 builds
MSVC 2013/2015/2017
I'll settle for just one build, but a build matrix would be great.
Maybe this could be formalized into a secondary to-do list or task list somewhere (and the to-do list in the Readme could be moved into an actual TODO.txt
file). Some of these are things that new contributors could handle.
CMake is already set up for C++14. As @psi29a said, there are many C-ish things that could be replaced with their C++ equivalents (this also includes things like replacing for loops with range-based for, std::find
, std::count
, etc.).
Each change might require some considerations for the surrounding code, so when in doubt, just leave it alone. We do not want to introduce bugs because of "upgrades". You're free to ignore my suggestions -- these were just things I had in mind for getting rid of C/C++03 stuff.
NULL
to nullptr
strcpy()
to std::string()
or std::copy()
std::array
(or std::string
in the case of char[]
)new/delete ptr
to std::make_unique
auto
= default;
to virtual constructors/destructors with { }
bodyreturn true/return false
if branches with single bool
expressionenum
to enum class
if not too invasive (i.e., no added static_casts)(void)
from C++ parameter lists (only relevant in C, not C++)Vector{2,3,4}&
to const Vector{2,3,4}&
where applicableVector{2,3,4}
classes (UnitX
, UnitY
, UnitZ
, etc.)sprintf()
to std::snprintf()
, std::to_string()
, or std::stringstream
override
to derived virtual methodstypedef struct
to struct
atoi()
with std::stoi()
XLEngine: /home/bcurtis/Workspace/Private/XLEngine/xlengine/render/triangleRasterizer/TriangleRasterizer.cpp:770: void TriangleRasterizer::DrawClippedNGon_Indexed(Driver3D_Soft*, VBO*, int, const uint16_t*, bool, int, PolygonData*): Assertion `A.x>>4 >= 0 && A.x>>4 <= DrawScanline::_nFrameWidth && A.y>>4 >= 0 && A.y>>4 <= DrawScanline::_nFrameHeight' failed.
Aborted (core dumped)
Starting DarkXL version 9.500
Start UI Script: DarkXL/CoreUI.as
SECTION_CORE (14, 1) : INFO : Compiling void UI_Title_OnEnter()
ScriptError: SECTION_CORE (14, 1) : INFO : Compiling void UI_Title_OnEnter()
SECTION_CORE (50, 74) : WARN : Float value truncated in implicit conversion to integer
ScriptError: SECTION_CORE (50, 74) : WARN : Float value truncated in implicit conversion to integer
SECTION_CORE (50, 58) : WARN : Float value truncated in implicit conversion to integer
ScriptError: SECTION_CORE (50, 58) : WARN : Float value truncated in implicit conversion to integer
SECTION_CORE (51, 72) : WARN : Float value truncated in implicit conversion to integer
ScriptError: SECTION_CORE (51, 72) : WARN : Float value truncated in implicit conversion to integer
SECTION_CORE (51, 56) : WARN : Float value truncated in implicit conversion to integer
ScriptError: SECTION_CORE (51, 56) : WARN : Float value truncated in implicit conversion to integer
SECTION_CORE (52, 68) : WARN : Float value truncated in implicit conversion to integer
ScriptError: SECTION_CORE (52, 68) : WARN : Float value truncated in implicit conversion to integer
SECTION_CORE (52, 52) : WARN : Float value truncated in implicit conversion to integer
ScriptError: SECTION_CORE (52, 52) : WARN : Float value truncated in implicit conversion to integer
SECTION_CORE (72, 1) : INFO : Compiling void UI_Title_OnRender(int)
ScriptError: SECTION_CORE (72, 1) : INFO : Compiling void UI_Title_OnRender(int)
SECTION_CORE (75, 64) : WARN : Float value truncated in implicit conversion to integer
ScriptError: SECTION_CORE (75, 64) : WARN : Float value truncated in implicit conversion to integer
SECTION_CORE (75, 50) : WARN : Float value truncated in implicit conversion to integer
ScriptError: SECTION_CORE (75, 50) : WARN : Float value truncated in implicit conversion to integer
SECTION_CORE (76, 72) : WARN : Float value truncated in implicit conversion to integer
ScriptError: SECTION_CORE (76, 72) : WARN : Float value truncated in implicit conversion to integer
SECTION_CORE (76, 56) : WARN : Float value truncated in implicit conversion to integer
ScriptError: SECTION_CORE (76, 56) : WARN : Float value truncated in implicit conversion to integer
SECTION_CORE (79, 50) : WARN : Float value truncated in implicit conversion to integer
ScriptError: SECTION_CORE (79, 50) : WARN : Float value truncated in implicit conversion to integer
SECTION_CORE (93, 1) : INFO : Compiling void UIT_StartBtn_OnRender(int)
ScriptError: SECTION_CORE (93, 1) : INFO : Compiling void UIT_StartBtn_OnRender(int)
SECTION_CORE (98, 65) : WARN : Float value truncated in implicit conversion to integer
ScriptError: SECTION_CORE (98, 65) : WARN : Float value truncated in implicit conversion to integer
SECTION_CORE (98, 49) : WARN : Float value truncated in implicit conversion to integer
ScriptError: SECTION_CORE (98, 49) : WARN : Float value truncated in implicit conversion to integer
SECTION_CORE (102, 65) : WARN : Float value truncated in implicit conversion to integer
ScriptError: SECTION_CORE (102, 65) : WARN : Float value truncated in implicit conversion to integer
SECTION_CORE (102, 49) : WARN : Float value truncated in implicit conversion to integer
ScriptError: SECTION_CORE (102, 49) : WARN : Float value truncated in implicit conversion to integer
SECTION_CORE (113, 1) : INFO : Compiling void UIT_SettingsBtn_OnRender(int)
ScriptError: SECTION_CORE (113, 1) : INFO : Compiling void UIT_SettingsBtn_OnRender(int)
SECTION_CORE (118, 68) : WARN : Float value truncated in implicit conversion to integer
ScriptError: SECTION_CORE (118, 68) : WARN : Float value truncated in implicit conversion to integer
SECTION_CORE (118, 52) : WARN : Float value truncated in implicit conversion to integer
ScriptError: SECTION_CORE (118, 52) : WARN : Float value truncated in implicit conversion to integer
SECTION_CORE (122, 68) : WARN : Float value truncated in implicit conversion to integer
ScriptError: SECTION_CORE (122, 68) : WARN : Float value truncated in implicit conversion to integer
SECTION_CORE (122, 52) : WARN : Float value truncated in implicit conversion to integer
ScriptError: SECTION_CORE (122, 52) : WARN : Float value truncated in implicit conversion to integer
SECTION_CORE (133, 1) : INFO : Compiling void UIT_ExitBtn_OnRender(int)
ScriptError: SECTION_CORE (133, 1) : INFO : Compiling void UIT_ExitBtn_OnRender(int)
SECTION_CORE (138, 64) : WARN : Float value truncated in implicit conversion to integer
ScriptError: SECTION_CORE (138, 64) : WARN : Float value truncated in implicit conversion to integer
SECTION_CORE (138, 48) : WARN : Float value truncated in implicit conversion to integer
ScriptError: SECTION_CORE (138, 48) : WARN : Float value truncated in implicit conversion to integer
SECTION_CORE (142, 64) : WARN : Float value truncated in implicit conversion to integer
ScriptError: SECTION_CORE (142, 64) : WARN : Float value truncated in implicit conversion to integer
SECTION_CORE (142, 48) : WARN : Float value truncated in implicit conversion to integer
ScriptError: SECTION_CORE (142, 48) : WARN : Float value truncated in implicit conversion to integer
Result of gdb:
Thread 1 "XLEngine" received signal SIGSEGV, Segmentation fault.
0x00005555556cffbd in Driver3D_Soft::RenderScreenQuad (this=0x5555580e4d90, posScale=..., uvTop=..., uvBot=..., colorTop=...,
colorBot=...) at /home/bcurtis/Workspace/Private/XLEngine/xlengine/render/Driver3D_Soft.cpp:1289
1289 *pLine++ = pImageV[ U ];
(gdb) bt
#0 0x00005555556cffbd in Driver3D_Soft::RenderScreenQuad (this=0x5555580e4d90, posScale=..., uvTop=..., uvBot=..., colorTop=...,
colorBot=...) at /home/bcurtis/Workspace/Private/XLEngine/xlengine/render/Driver3D_Soft.cpp:1289
#1 0x000055555575c0dd in UI_System::UI_RenderImageRect (hImage=1, x=-64, y=0, w=768, h=820, intensity=1, alignHoriz=0,
alignVert=0) at /home/bcurtis/Workspace/Private/XLEngine/xlengine/ui/UI_System.cpp:1178
#2 0x000055555580f302 in X64_CallFunction (args=0x7fffffffd5a0, cnt=1,
func=0x55555575bce8 <UI_System::UI_RenderImageRect(int, int, int, int, int, float, int, int)>, retQW2=@0x7fffffffd7c8: 0,
returnFloat=false)
at /home/bcurtis/Workspace/Private/XLEngine/xlengine/thirdparty/AngelCode/sdk/angelscript/source/as_callfunc_x64_gcc.cpp:162
#3 0x000055555580fefd in CallSystemFunctionNative (context=0x555558034fa0, descr=0x55555802d450, obj=0x0, args=0x555558036180,
retPointer=0x0, retQW2=@0x7fffffffd7c8: 0, secondObject=0x0)
at /home/bcurtis/Workspace/Private/XLEngine/xlengine/thirdparty/AngelCode/sdk/angelscript/source/as_callfunc_x64_gcc.cpp:468
#4 0x000055555580ec62 in CallSystemFunction (id=132, context=0x555558034fa0)
at /home/bcurtis/Workspace/Private/XLEngine/xlengine/thirdparty/AngelCode/sdk/angelscript/source/as_callfunc.cpp:718
#5 0x000055555579fdf4 in asCContext::ExecuteNext (this=0x555558034fa0)
at /home/bcurtis/Workspace/Private/XLEngine/xlengine/thirdparty/AngelCode/sdk/angelscript/source/as_context.cpp:2525
#6 0x000055555579d01b in asCContext::Execute (this=0x555558034fa0)
at /home/bcurtis/Workspace/Private/XLEngine/xlengine/thirdparty/AngelCode/sdk/angelscript/source/as_context.cpp:1318
#7 0x000055555575148e in ScriptSystem::ExecuteFunc (hFunc=0x555557fbc5b0, nArgCnt=1, pArgs=0x7fffffffdcb0,
bRetValueExpected=false) at /home/bcurtis/Workspace/Private/XLEngine/xlengine/scriptsystem/ScriptSystem.cpp:279
#8 0x0000555555759596 in UI_System::Render () at /home/bcurtis/Workspace/Private/XLEngine/xlengine/ui/UI_System.cpp:333
#9 0x00005555557385a4 in Engine::Loop (this=0x555557fb5940, fDeltaTime=0.00229199999, bFullspeed=true)
at /home/bcurtis/Workspace/Private/XLEngine/xlengine/Engine.cpp:858
#10 0x0000555555799acb in main (argc=3, argv=0x7fffffffdf18)
at /home/bcurtis/Workspace/Private/XLEngine/xlengine/linux/main.cpp:228
daggerxl renders the world with the software renderer just fine, but the load screen is garbled. This has to do with the fact that pallet isn't correctly set.
Ubuntu Trusty
Ubuntu Xenial (container)
OSX
UI_System.cpp:238:42: error: ordered comparison of pointer with integer zero (‘SHANDLE’ {aka ‘asIScriptFunction*’} and ‘int’)
238 | assert( m_PushScreen->m_hOnEnter >= 0 );
| ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
Hello.
Compile the engine, and can run Dark Forces.
Settings button displays only XL Engine Configuration and the Exit button.
The game launch, but there is no way to create a New Agent or Begin Mission.
Thank you
I got curious about the project origins and am basically checking if there's any more information available about the history of the License.txt
file (modified 2018-04-01) in AprilFirst.zip sha256sum as uploaded by Klasodeth, since DarkXL was GPL2. Many reimplementations eventually end up in Debian's repository, who are very thorough about overall licenses, best done before significant external contributions are accepted - obviously @luciusDXL is entitled to relicense their original work from GPL2 to MIT, I'm just checking that's the authors' intention.
$ licensecheck -r . | grep -vF '*No copyright*' | grep -vF '.png: '
./LICENSE: MIT/X11 (BSD like)
./fonts/Verdana16.fnt: UNKNOWN # ?msttcorefonts?
./fonts/Verdana24.fnt: UNKNOWN
./fonts/Verdana32.fnt: UNKNOWN
./scriptsystem/angelscript.h: zlib/libpng
./win/XL Engine.ico: UNKNOWN
./win/small.ico: UNKNOWN
./render/win/wglext.h: UNKNOWN # MIT
./threading/Posix/Mutex.h: UNKNOWN # Unlicensed: https://www.codeproject.com/Articles/5417/A-C-Cross-Platform-Thread-Class
./threading/Posix/Semaphore.h: UNKNOWN
./threading/Posix/Thread.h: UNKNOWN
./threading/Win32/Mutex.h: UNKNOWN
./threading/Win32/Semaphore.h: UNKNOWN
./threading/Win32/Thread.h: UNKNOWN
./threading/Win32/Win32.h: UNKNOWN
Before further development I think code conventions should be set and the current code accordingly reformatted. Personally I think tab indents are bad and would suggest OpenMW conventions instead, because we can suppose a lot of OpenMW devs to start contributing here and this would help to keep things going smoothly (no double editor settings, no mental switches between the projects etc.). Any other opinions on this?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.