Giter Site home page Giter Site logo

xl-engine's Introduction

Depracation & Replacement

I am sure the few people who have looked at this repository have noticed that I have not made any commits in quite some time. The XL Engine, as it was previously known, has been retired. Development of the XL Engine had dropped off due to other "real life" commitments and a lack of time (and sometimes ability) to continue. Fortunately Daggerfall and Blood have high quality ports/projects that have carried on and given people a much improved experience, similar to what the XL Engine was trying to achieve.

To be clear, this project has not been updated in years and will not be updated in the future - though some of the code will find its way elsewhere.

Since those days (years ago now), things have changed drastically. The original idea behind DarkXL, which eventually led to the XL Engine, was never completely abandoned and a new project has been in development for a while that is more focused and better designed to achieve my original goals. I'm being intentionally vague because I want to deliver rather than promise and the project is likely still a few months out from a formal unveiling (and yes it will be open source from day 1).

I notice that some people still star this repository and fork it from time to time, even now. That is what prompted me to post this update so people don't waste their time. I will leave the original text in place for 'historical' value.

XL-Engine

The XL Engine provides support for first person DOS-era games running on modern operating systems such as Windows 10. The first Beta release will support the following games:

Daggerfall
Dark Forces
Blood

Source ports are a great way of keeping games such as Doom and Duke Nukem 3D working and even being enhanced on modern systems. While the XL Engine may support games with source available in the future, its primary goal is to support games with no source released with "source port accuracy." Many great older games may never see a source release but they still deserve to be preserved and enhanced.

The XL Engine is designed to be easy to use, easy to play the supported games on modern systems. It handles modern GPUs, varying refresh rates, high resolutions with high performance. In the future, the engine will add support for easy modding and easy multiplayer support for those games that support it (such as Blood). In the future this will include built-in tools, including scripting and reviving the DarkXL sector editor so that games such as Dark Forces and Blood can be modded with modern tools.

However this is only an engine, no games are bundled with the application. Games need to be legally acquired before they can be played using the XL Engine. The good news is that Daggerfall is now free and can be downloaded from Bethesda or using Daggerfall Setup. Blood and Dark Forces are available for purchase from GOG.com and Steam.

Availability

This project has been depracated. Beta 1 is still in progress and is not yet available for download. Older builds are avaiable on the XL Engine website, however they are incomplete and buggy. I would suggest waiting for the Beta 1 release before downloading.

Short Term Roadmap

Milestone Content
Beta 1 the initial release, all the games previously stated should be working at 100% with the exception of multi-player. As stated before only software rendering will be available but higher resolutions will be supported.
Beta 2 the OpenGL 3.2 device should be implemented and true 3D hardware rendering support added – basically Daggerfall will surpass previous builds visually in addition to being gameplay complete.
Beta 3 the “Unified Sector Theory” release – perspective correct hardware rendering for 2.5D games. At this point Dark Forces should surpass the current build visually in addition to being gameplay complete.
Beta 4 will add support for additional platforms – Linux and OS X.
Beta 5 the "Multiplayer" release - add multiplayer framework and support for certain games (such as Blood).

xl-engine's People

Contributors

luciusdxl 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

xl-engine's Issues

[2.5D] Implement perspective correct 2.5D rendering.

Another post Beta 1 feature. Implement a perspective correct 2.5D sector renderer that can support games such as Dark Forces (Jedi), Blood (Build) and potentially simpler block based engines such as Arena.

Note this applies to rendering only - the feel of the game should come from the per-game gameplay/physics implementations. The renderer should be flexible enough to accurately render the sector data from different games and engines. Finally software rendering will always be available as a fallback.

Pull out texture code into the common GL code.

Currently the texture code is mingled with the rest of the device code and duplicated in multiple places. Pull it out into the common GL code similar to the vertex buffers and index buffers.

Add framebuffer support for the OpenGL 2.0 and 3.2 devices

Add framebuffer (FBO) support in order to:

  1. Support hardware rendering with the same virtual resolution support that the software renderers currently have.
  2. As a first step to a proper post processing system.
  3. Later add more advanced effects like shadows, reflections, etc..

Midi Playback Support

Obviously the engine needs to support Midi playback. Initially the engine will use software synthesis - adding hardware support later (that will be another ticket).

Linux and OS X support

I would just like to add issue to support linux (also to show interest in project).
Know you mentioned it will take some time.

[XL Engine UI] Build Remaining UI panels

Some of the UI panels have not been started yet, currently requiring settings to be changed manually.
Panels that need to be started and completed include:

  • Per-Game settings
  • Per-Game controls
  • Game setup (auto-detect game path, manually set game path, mod loading)

Example xlgames.ini file?

I'd like to run XL-Engine with a copy of Dark Forces I bought off of steam, it's not clear whether that's possible (shouldn't there be gob and lfd loading code somewhere in here?).

I had to make a number of changes to get to the point where the xl engine runs, and these are in https://github.com/lucasw/XL-Engine/tree/return_fail - one thing I had to do was disable the vsync enable/disable call because it was crashing on my machine.

I couldn't find any example xlgames.ini so I created one from the source code:

https://github.com/lucasw/XL-Engine/blob/return_fail/xlgames.ini

ullscreen=1
immediateExit=0
showAllGames=1
uiGlow=0
colorCorrect=1
# setting this true crashes on Intel graphics adapter
# TODO try Radeon HD 8790M with DRI_PRIME
vsync=0
reduceCPU=0
launchGame=0
frameLimit=30
brightness=100
saturation=50
contrast=50
gamma=50
musicVolume=50
soundVolume=50
# gus, gravis, sf2
midiformat=gus
# TODO string type
patchloc="/etc/timidity/freepats.cfg"
# openGL 1.3
# openGL 2.0
# openGL 3.2
graphicsDevice=autodetect
windowScale=50
gameScale=50
gameCount=1
# TODO
# keyMapping=0
game0Name="Dark Forces"
# game0Lib=  # don't have any .so files for Dark Forces
#game0Icon=""
game0Path="~/other/games/darkforces/gog_dark_forces/data"

The first time I ran it it triggered the creation of xlsettings.ini.

I get an error:

[Error]dlopen(Games/) failed, error: Games/.so: cannot open shared object file: No such file or directory

But I don't have a game0Lib defined, because I don't have a .so file for this dos game (another clue this is not the code to DarkXL?).

Other errors

There are a number of sound effects that aren't in the repo:

No such file or directory : UI/Sounds/sub_bass_mouseover.wav
No such file or directory : UI/Sounds/echo_affirm.wav
No such file or directory : UI/Sounds/echo_affirm1.wav
No such file or directory : UI/Sounds/echo_deny.wav

Also a number of png files aren't present: computer.png, dashboard.png, joystick.png and others.

If I run without the game0Path I get a blank blue-gray screen with some text of the version number in the upper left. The code makes it look like the tilde ought to bring up a ui but it doesn't that kepress (or any keypress?).

This is using Ubuntu 16.04.

Implement the OpenGL 3.2 device

The 3.2 device is currently a stub and needs to be implemented. However the 2.0 device will be perfectly adequate for the Beta 1 release - since it will only support software rendering.

This is being assigned to "Beta 2" to coincide with hardware rendering support.

[XL Engine UI] Finish Video Settings panel

The current Video settings panel is placeholder and needs to be finished.
This includes:

  • Changing window size and/or fullscreen resolution on the fly.
  • Changing game virtual resolution on the fly (should work while the game is running).
  • All options in the UI working correctly.

Properly support GPUs that require power of 2 textures and severe texture size limitations

Currently even the OpenGL 1.3 device assumes non power of 2 texture support and 2048 x 2048 size limits. The XL Engine should work even with older GPUs that cannot handle non power of 2 textures and/or more severe texture size limits.

Note, however, that GPUs will be required to support at least 512 x 512 textures and that game resolutions may be limited by GPU texture size.

[XEngine, True 3D] Implement Hardware Rendering for True 3D games.

As stated, this applies to XEngine game(s) currently - implement the True 3D hardware renderer. This is a large task that will most likely spawn other tasks once work starts.

Note that this is slated for Beta 2, Beta 1 - the first release - will be software rendering only.

Replicate Original Game Functionality

Intentionally vague bucket issue. Essentially the reverse engineering and implementation of the results using the XL Engine. This is obviously required for Beta 1 since it is, really, the whole point of this. :)

This may be split into sub-tasks as the release comes closer to handle game-specific bugs and issues.

Add Multiplayer Support

Add multiplayer support for games that should support it (such as Blood) and possibly add it to other games as well (maybe Dark Forces, for example).

Finish Sound System First Pass and Upload

The Sound system is currently barely working and only supports single shot 2D sounds. Finish the looping and 3D sound support and upload to the repository.

Make sure sound works correctly in working games.

Add Proper Vsync and/or frame limiting support

Vsync currently adds a large amount of input latency, this is due to the fact that the game rendering and main thread are not properly synced, which means that input does not get updated correctly when vsynced. While the games play 'ok' even still, input has noticeable latency.

In addition non-vsynced frame limiting should be supported to avoid taking up 100% CPU on powerful systems.

Lucius, something's happened to your forums

The XL Engine forums are absolutely FILLED with spam. I checked in because I wanted to read some of the old project posts, but all the posts were out of order, and the vast majority of what was there was spam...

Add Performant Dynamic Per-Frame Vertex Data

Currently the OpenGL 1.3 device handily outperforms the OpenGL 2.0 device when rendering UI due to the poor way vertex buffer updates are currently handled. A proper fix that buffers updates and double buffers vertex data should fix this performance gap (~2100 fps vs. 1300 fps).

Sound Code is nonexistent or missing from the repository

Both Gameloop.cpp and Services.cpp refer to a "sound/sound.h" - which is missing from the repository. I would also like to work on this project, and I request that these files be exposed so that I may add to this project. I am still a student - but I believe I have what it takes to work on a project like this. I have installed the Freetype and GL libraries, but I believe the only thing I need to compile this project is Sound/*. I am also new to this GitHub stuff so if I am doing something incorrectly - feel free to let me know. Thank you.

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.