Giter VIP home page Giter VIP logo

etfdevs / ete Goto Github PK

View Code? Open in Web Editor NEW

This project forked from id-software/enemy-territory

56.0 10.0 17.0 37.97 MB

Improved Wolfenstein: Enemy Territory Engine

License: GNU General Public License v3.0

C 93.08% Objective-C 0.05% Python 0.02% C++ 6.53% Shell 0.04% Batchfile 0.05% Perl 0.02% CMake 0.13% Assembly 0.02% GLSL 0.06%
enemy-territory idtech3 opengl quake3 wolfenstein wolfenstein-enemy-territory c vulkan

ete's Introduction

ETe

build * Discord server

This is a modern Wolfenstein: Enemy Territory engine aimed to be fast, secure and compatible with many existing ET mods and etmain. It is based on the Quake3e engine which itself is based on the last non-SDL source dump of ioquake3 with latest upstream fixes applied. Several common fixes from upstream ET:Legacy also are applied as needed for security.

Go to Releases section to download latest binaries for your platform or follow Build Instructions.

Notes: Skip the ete-etmain-mod-replacement-allplatform.zip unless you know what you are doing. You will want ete-docs.zip and ete-platform-name.zip when downloading prebuilt packages. 64-bit (x86_64) platforms are unstable currently with bugs that do not exist under 32-bit platforms.

This repository does not contain any game content, so in order to play you must copy the resulting binaries into your existing Wolfenstein: Enemy Territory installation

Key features:

  • optimized OpenGL renderer
  • optimized Vulkan renderer WIP, not ready for production use
  • raw mouse input support, enabled automatically instead of DirectInput(\in_mouse 1) if available
  • unlagged mouse events processing, can be reverted by setting \in_lagged 1
  • \in_minimize - hotkey for minimize/restore main window (win32-only, direct replacement for Q3Minimizer)
  • \video-pipe - to use external ffmpeg binary as an encoder for better quality and smaller output files
  • improved server-side DoS protection, much reduced memory usage
  • raised filesystem limits (up to 20,000 maps can be handled in a single directory), pure server limitation of 256 pk3s still exists for compatibility with 2.60b/etl clients.
  • reworked Zone memory allocator, no more out-of-memory errors
  • non-intrusive support for SDL2 backend (video,audio,input), selectable at compile time for *nix via CMake
  • tons of bug fixes and other improvements
  • basic Discord Rich Presence support (win32-only currently, linux support to follow when 64-bit support is ready)

Vulkan renderer

NOT YET READY FOR USE

CMAKE SUPPORT NOT YET AVAILABLE

Based on Quake-III-Arena-Kenny-Edition with many additions:

  • high-quality per-pixel dynamic lighting
  • very fast flares (\r_flares 1)
  • anisotropic filtering (\r_ext_texture_filter_anisotropic)
  • greatly reduced API overhead (call/dispatch ratio)
  • flexible vertex buffer memory management to allow loading huge maps
  • multiple command buffers to reduce processing bottlenecks
  • reversed depth buffer to eliminate z-fighting on big maps
  • merged lightmaps (atlases)
  • multitexturing optimizations
  • static world surfaces cached in VBO (\r_vbo 1)
  • useful debug markers for tools like RenderDoc
  • fixed framebuffer corruption on some Intel iGPUs
  • offscreen rendering, enabled with \r_fbo 1, all following requires it enabled:
  • screenMap texture rendering - to create realistic environment reflections
  • multisample anti-aliasing (\r_ext_multisample)
  • supersample anti-aliasing (\r_ext_supersample)
  • per-window gamma-correction which is important for screen-capture tools like OBS
  • you can minimize game window any time during \video|\video-pipe recording
  • high dynamic range render targets (\r_hdr 1) to avoid color banding
  • bloom post-processing effect
  • arbitrary resolution rendering
  • greyscale mode

In general, not counting offscreen rendering features you might expect from 10% to 200%+ FPS increase comparing to KE's original version

Highly recommended to use on modern systems

OpenGL renderer

Based on classic OpenGL renderers from idq3/sdet/ioquake3/cnq3/openarena, features:

  • OpenGL 1.1 compatible, uses features from newer versions whenever available
  • high-quality per-pixel dynamic lighting, can be triggered by \r_dlightMode cvar
  • merged lightmaps (atlases)
  • static world surfaces cached in VBO (\r_vbo 1)
  • all set of offscreen rendering features mentioned in Vulkan renderer, plus:
  • bloom reflection post-processing effect

Performance is usually greater or equal to other opengl1 renderers

OpenGL2 renderer

Original ioquake3 renderer, not available and unlikely to be ported

Missing ioquake3 features

  • OpenAL(-soft) support
  • VoIP support (probably never going to add since Discord etc)
  • Extra sound codecs like ogg and opus

Contacts

Discord channel: https://discordapp.com/invite/hsDQVby

Links

ete's People

Contributors

aciz avatar ensiform avatar jswigart avatar man-at-arms avatar suburbski avatar tsiren avatar zturtleman 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ete's Issues

Make foliage work in a vbo

Currently our code is designed for static vbos only, it would be nice if we could get them to also work but it might be too tricky from my understanding because they are pseudo-dynamic based on draw distance. I guess if possible maybe they can be put in static vbo memory but change rendering to be draw distance still. I am not experienced in the renderer aspect and I do not know if @ec- would be able to/willing to help.

Fognum sometimes goes way out of range

I am having sporadic cases where fognum becomes 31 after sort is processed so it seems likely that there is an issue with the shifting into the sort value but I cannot figure out what that is.

Help on finding the cause would be greatly appreciated.

Bring wav recording back

Bring the wav recording functionality back, but clean it up and make it a separate file like avi recording is.

Linux mod binary loader should be improved

Right now it does some weird stuff with checking .sos in homepath and doesn't really seem to function? It just deletes because the cvar isn't working.

Could be part of finishing #9

Switch to CMake builder

Switch over to building with CMake and get rid of SCons and VS project files but we need to try and maintain the VS project file support within CMake to ensure compatibility with the flags we currently use.

Event corruption

Presently getting an event with bad data coming through that shouldn't even be triggering on etf_xpress when dying in the pit. (Presumably, but untested other pit/hurt brush maps as well)

Modern OSX Port

  • Build and run on x86_64 and arm64
  • Ship app bundles w/etmain compatibility
  • Signed/notarized (MacSourcePorts?)

Sounds are dropped

This might again become most obvious in TC/CQB. For weapons with high fire rate sounds are dropped. There is some stutter and particularly a lot of reverb sounds which are played shortly after the fire sounds are dropped.

There must be some change regarding the handling of sounds compared to stock ET were everything is fine. Maybe new sounds now cut already playing sounds and dont add to the output buffer?

Thanks a lot.

Looking for help improving CI and release pipeline

Looking for help setting up Travis CI and Appveyor correctly so that we can get builds working for the necessary environments. And also how to make secure tokens work to make automated tag releases.

Specifically looking to get Travis+docker functional, maybe even save the container to avoid pulling in necessary packages every build.

Also i386 only Linux for starters on Travis. We've been experimenting with CMake now to replace old scons. But need to get updated cmake into a docker image for modern cmake syntax support.

Lightmap problem on some obscure etrun maps

Seems like fullbright / mismatched lightgrid produces a completely unlit and dark map when it should really be just fullbright.

Map: Rename to .pk3 when downloaded

Some textures are missing because they aren't packaged with the map which is okay.
r7-ghost.zip

Issue comparison:
unbenannt

ERROR: VirtualAlloc commit failed.

/disconnect from maps, at least in TC CQB mod or loading a new map with devmap during another map is running causes:

\disconnect 
----- Server Shutdown (Disconnected from server) -----
==== ShutdownGame ====
write session data client 0, type 0, latched 0
AAS shutdown.
---------------------------
RE_Shutdown( 0 )
********************
ERROR: VirtualAlloc commit failed.
Attempt to access invalid address.

********************
RE_Shutdown( 0 )
----- Client Shutdown (recursive error after: VirtualAlloc commit failed.
Attempt to access invalid address.
) -----
RE_Shutdown( 2 )
Shutting down OpenGL subsystem
...wglMakeCurrent( NULL, NULL ): success
...deleting GL context: success
...releasing DC: success
...destroying window
...restoring display settings
...shutting down QGL
...unloading OpenGL DLL
-----------------------
recursive error after: VirtualAlloc commit failed.
Attempt to access invalid address.

Permissions Issues

I'm getting issues that seem to be related to permissions when running the latest test version of ETe (Oct012018).

etf fileforhandle error
ETe.exe crashes when loading a server with the error message fileForHandle: 0.

This seems to be a permissions issue as running as Administrator causes this issue to disappear.

On a related note, I'm unable to run /condump filename.txt with this release, whereas ET.exe has no issues.

The permissions seem to be the same on both ET.exe and ETe.exe, so I'm assuming this is an ETe issue.

Switch code over to .cpp

Won't change a ton of things, but would be nice to at least use some C++ features down the line.

Remove unused cruft

bspc, extractfuncs (& g_funcs related) possibly some botai stuff that is not linked at all.

test builds & shadowmaps

Hi ensiform,

thanks for this great ET engine (and thanks to Q3e).
Just wondering whether you would be motivated to upload a recent win test build. I just tested the last build with TC CQB and I am impressed with the performance. All problems of the original ET with larger maps and many polys on animated models gone.

Are there any plans to get cascaded shadowmaps (e,g. from ioquake 3) in here? A dream for old school renaissance on the ET engine would come true.

Sorry for kinda hijacking the Issues with this.

coroner

Skybox causes problem with bloom

When skyboxes are enabled (such as etl_frostbitev4/5), Bloom appears to cause a change in the skybox only, but the rest of the world is unaffected. When the skybox is disabled on this map and other maps without, it works fine in the regular part of the map.

44k sound

I tried running TC:CQB with ETe. Vast performance improvement. I am impressed.
I think the sound cannot be changed to 44k or is s_khz not the right cvar?

On a sidenote: ET uses some lookup table with relatively few entries instead of calculating the angular dependent light shading on models. This results in some ugly artifacts on moving models, e.g. the player models. In my own compile I changed the lookup table to much more entries, 64 or so. Looks much better. Just as a suggestion.

Great work.

ETJump Compatibility Issues

Going to use this as a running log of issues that have cropped up specifically in etjump and are still active. Ping @suburbski

Will update with task list if you add comments

Connecting to ETF server via etmain causes weird desync issue

As part of game_restart mechanics and changes from q3e(via ioq3 and some extra changes from q3e) this is supposed to work seamlessly and then return to etmain after disconnect.

I tested it the other day but was stuck on the etmain connecting screen and could not leave it.

ETRun map causes CL_ParseSnapshot error

Map: (Rename to .pk3)
asdarun1.zip

CL_ParseSnapshot: Invalid size 79 for areamask

The number should always be 32 (sizeof int32_t)

Server is sending this number across which likely means there is a memory corruption somewhere (in server) and the code itself has not changed from vanilla in either client or server.

Get enough finished for a first semi-stable release

  • #3 - ARB/PM lighting for dynamic lights (mostly done but there still is some ET lighting options that never got ported and it does look poor in some conditions

  • #7 - unknown command userinfo still happens in all mods

  • #9 - Linux port

  • #14 - bring wav recording back (preferably as cleaner abstracted code similar to cl_avi but just wav)

  • #16 + #17 - Extensively test the download code and see where it needs to be improved.

  • #34 - game_restart features don't seem to fully work when switching on connect causing a weird desync issue making unable to disconnect from connection screen.

  • Question - Should we do anything about pak security, especially mods that change bins and or menus? Whitelist? Blacklist?

Optional

  • #21 fognum bug that can't be repro right now
  • #32 physics bug that apparently exists in the original game

Can't spawn etrun devmap server

Just tested it with the latest release of etrun https://github.com/ETrun/ETrun/releases and it brings vm error on /devmap oasis, specifically game module can't get initialized it seems.

It doesn't log much of the information:

----------------------
4402 files in 12 pk3 files
^5CM_LoadMap( maps/oasis.bsp, 0 )
Loading dll file qagame.
LoadLibrary 'H:\Games\testet\CleanestInstall\etrun\qagame_mp_x86.dll' failed
********************
ERROR: VM_Create on game failed
********************
----- Server Shutdown (Server crashed: VM_Create on game failed) -----
---------------------------

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.