Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

lucius

Members
  • Content count

    275
  • Joined

  • Last visited

About lucius

  • Rank
    Member

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. The TFE hardware renderer also handles sprites vs floors/ceilings, using the z-buffer and without using an extra buffer or stencil buffer with very good performance (with support for looking up and down with proper perspective). But it was part of the core design of the renderer and would be difficult to shoe-horn into something like GZDoom without serious compatibility and performance issues since it relies on the way sectors are rendered in Jedi (such as the way walls a clipped and sorted).
  2. For a modern sector engine - if you remove the need to support fully 3D overlapping sectors, then you can use portals for culling and depth buffer for floor/ceiling/wall rendering. TFE actually supports both depth buffering[1] (sector geometry writes to the depth buffer only, sprites and 3D objects read and write) and proper sprite/flat sorting. This is done by generating flats by extruding walls vertically + adding a cap to fill holes and projecting the positions onto the planes in order to generate texture coordinates, determine z value for shading, etc.. Because TFE uses GPU clip planes[2], then by projecting the view to infinity, clamping to the cap planes, quads converge to "infinity" allowing for accurate caps with no triangulation. Once the player leaves the sector, quads that would extend outside are clipped by the GPU clipping planes. Anyway, the largest complexity comes from the need to support overlapping sectors in 3D - which means that full portal clipping is required[3]. For TFE this is done in two phases, 2D on the CPU (top-down[4]) and 3D on the GPU (replaces the column heights). But without that, a simple depth buffer would suffice on its own, though you lose some occlusion culling power and will get some overdraw. So for pure software rendering, you will have to weigh the benefits of increased overdraw over the simplicity of the algorithm. For GPU rendering, it would be a clear and obvious win - especially since you can easily draw front to back and make use of hardware hierarchical z-culling. [1] Jedi actually uses a 1D, column-based, z-buffer for object clipping. So TFE just extends that concept to 2D to support proper perspective when looking vertically. [2] A large buffer of planes get filled in during render setup, where each draw-item has an offset and count to reference the plane table to avoid splitting up batches. [3] Jedi doesn't clip against the portal plane correctly - and the game makes use of its quirks. But other planes are clipped correctly. [4] CPU "wall segment" clipping is required for proper sprite and portal clipping later on to match vanilla behavior. This does allow for fully occluded sprites, 3D objects, and portals to be discarded (occlusion culling).
  3. lucius

    crazy source port features that will never get added

    Generally, it isn't useful for a runtime to support a million different formats. Pick a few formats that provide everything you need and have tools do the conversion from the many formats that are out there. Otherwise, you are increasing the maintenance cost and code size for almost no benefit.
  4. lucius

    The Force Engine Version 1.0 Release

    Technically it was already planned since others have also asked for it first, but I agree with Gez. :)-
  5. lucius

    The Force Engine Version 1.0 Release

    That is definitely planned at some point.
  6. lucius

    The Force Engine Version 1.0 Release

    Which is fair. For TFE I plan on adding a UI option to open the folder where this stuff is stored like OBS does (they have Show Videos or something like that). So at least the end user doesn't have to go hunting around for the files.
  7. lucius

    The Force Engine Version 1.0 Release

    Version 1.09.100 Release Hotfix release that addresses critical issues with version 1.09: System Midi volume bugs, causing notes not to play properly on some midi devices and volume issues with Windows GM synth. Linux crashes when not specifying the build type when using CMake.
  8. lucius

    The Force Engine Version 1.0 Release

    I consolidated everything the player would be interested in into the same Windows folder, which is why I used Documents. You will also find the log output, the ini, keybindings data, and save games there.
  9. lucius

    The Force Engine Version 1.0 Release

    * I wasn't able to reproduce a volume issue when the music slider at 100% or issues between 57% and 100%. Though it is possible it only occurs with a specific sound font. You can try turning down the master volume and see if that helps. Actually, I figured it out - for now, 50% will be equivalent to what you had before, I will fix it for the next release. * I was able to reproduce the mouse cursor disappearing with the console, that is a bug. * The screenshot button is PrintScreen. Screenshots will be saved in the /Documents/TheForceEngine/Screenshots/ folder on Windows. I forgot to make it rebindable, which should happen at some point.
  10. lucius

    The Force Engine Version 1.0 Release

    Version 1.09 Release This build adds both Sound Font (sf2) and OPL3 midi synthesis. External midi is no longer required on Linux. Note that midi settings will be reset with this build, if you want to change from the default (OPL3 emulation) - then use the Sound menu. OPL3 support required reverse-engineering the iMuse "FM4" driver code, as well as changing the midi device/output architecture to support synthesis, and dynamically changing both devices and outputs during gameplay. In addition, the audio system now processes audio at 44.1 kHz (instead of 11 kHz) - which means upsampling the iMuse mixed digital audio. Download: https://theforceengine.github.io/downloads.html Changes Implemented midi device types to support system midi as well as midi synthesis. Implemented support for midi synthesis using Sound Fonts (sf2). Implemented support for midi synthesis using OPL3 emulation and the iMuse OPL driver. Implemented the ability to change midi devices and outputs during gameplay, the game music is restarted as needed. Added Roland SC-55 and AWE64 sound fonts. Added support for 800p in the resolution list for the Steam Deck. Update the Readme to reflect that external midi is no longer required on Linux. The midi device now defaults to OPL3. Reduced stack size requirements in the audio system to fix issues on Steam Deck. Linux/CMake: also install the Mods and SoundFonts folders. Linux/Paths: look for support data in the executable directory too. CMake: gitVersion: do nothing if Git is not available. Linux: name executable “theforceengine” Add comments categorizing keywords and noting those which are not implemented. Video
  11. lucius

    The Force Engine Version 1.0 Release

    DARK.GOB, SOUNDS.GOB, SPRITES.GOB, TEXTURES.GOB, HOTKEYS.MSG, LOCAL.MSG, and the full LFD/ directory.
  12. lucius

    The Force Engine Version 1.0 Release

    TFE already has controller support, though you still need the mouse to use the windows/UI. I am planning on making the menus navigable using only the keyboard or controller in the future. I'm not sure what is causing that, unfortunately. However, you can load a mod from the mods/ directory by using the -uModFileName command line argument. For example, if I have biohazrd.zip in the mods/ directory the command line argument would be -ubiohazrd.zip
  13. lucius

    The Force Engine Version 1.0 Release

    There was a smaller, follow-up release that fixed that issue along with improvements, such as being able to type cheats directly in the console (no more "cheat CHEATNAME"), and a few cheats to help with debugging - LAFLY (jump and crouch to go up and down), LANOCLIP (no clip), and LATESTER - which combines LAIMLAME (god mode), LAREDLITE (disable AI), LAFLY, and LANOCLIP into one cheat.
  14. lucius

    crazy source port features that will never get added

    For TFE the goal was to extend the software rendering algorithms to 3D while still being performant. This meant making different choices than I would if I wanted to make a general game renderer. If you look at the TFE GPU renderer, you will notice that large chunks of the render logic occur in the shaders (including converting 2D line segments into final geometry) - this requires a different approach to the renderer; examples include a virtual texture-like system of referring to surface textures by ID and then mapping to the final texture data in the shader, storing level geometry in texture buffers so that it can be accessed by wall parts during rendering, etc. This is why TFE requires OpenGL 3.3+ for the GPU Renderer - and it was built with modern(-ish) GPU feature-sets in mind from the beginning, rather than on a legacy going back to when GPUs were still new. The good part is that it is pretty efficient in terms of driver usage, all of the sector geometry is rendered at once in 2 draw calls for example. The bad news is that it would be very difficult to transplant such a renderer into another engine. To put it simply, I don't think it makes sense to try to implement this into an existing engine (like GZDoom), which has a lot of legacy mods and features to support. The reason this approach was practical for TFE is that the only legacy I have to support is mods for the original DOS (and Mac) versions.
  15. lucius

    The Force Engine Version 1.0 Release

    Version 1.02 Release After a lot of bug fixes, mostly with custom levels, the version 1.02 Release is finally ready. Download: https://theforceengine.github.io/downloads.html Blog Post: https://theforceengine.github.io/2023/01/16/Version-1-02.html Quality of Life Features Alt+Enter will toggle fullscreen in addition to F11. Frame limit options added to the Graphics UI. Load added to the main menu. The Mod Loader will now return to the main menu if escape is hit. The Mod Loader will close mod descriptions is escape is hit. A System Menu has been added with two options: An option to return to the main menu if you Quit a game. An option to return to the Mod Loader if you Quit, if you loaded a mod (assuming the first option is enabled). The Audio system will try multiple sound APIs, including Direct Sound, if the default fails. You can now select the output audio and midi devices. Bug Fixes Fixed a crash when playing Evacuation of Hoth custom level due to a frame scenery object being destroyed. Fixed a bug where levels wouldn’t load if they had spaces in front of certain keywords - such as Mission 2 of Don Sielke’s. Fixed a bug where items would be despawned in some cases where the sector heights were too small. Fixed a bug where briefings could be skipped in some mods due to an order of operations error. Fixed a bug where sprites didn’t always light up correctly when attacking. Fixed a bug where the Probe Droid would stay fullbright after firing. Fixed a bug where autoaim wasn’t working with 3D objects like turrets and welders. Fixed a bug where autoaim targeted farther away items instead of closer items in some cases. Fixed a bug where the player could save while dying and then be invulnerable on load until they healed. Fixed crashes when INF sectors don’t exist in custom maps. Fixed a bug where jumping up to sector second heights isn’t as forgiving in TFE as DOS, resulting in custom level progression issues. 3DO PLANE projection when using the GPU Renderer now matches the software renderer for non-flat polygons. Fixed a bug where the top and bottom textures were drawn even with the “no wall” flag set instead of showing the sky when using the GPU Renderer. Fixed a bug with crouch jumping that kept the player from fitting into small places, blocking progression in Boba Fett’s Revenge and other custom levels. Fixed bugs with exterior adjoins that caused walls to be incorrectly drawn where there should only be sky. Fixed a bug with INF messages using invalid delay values behaving different in TFE than DOS, making switches in some custom levels work incorrectly. Fixed a bug with invalid INF message types (such as “done”) being treated different than DOS, breaking different triggers and elevators in custom levels. Fixed bugs with Gas Mask rendering when using the GPU Renderer at 320x200 resolution. It is now possible to hold ALT and move, and use ALT for crouch and slow actions. Improve Mod Loader text file parsing so it can be reliably extract the mod names. Improved PDA input and fixed layer keys being swapped. Fixed another PDA input issue, where the mouse location could effect hotkey results. Fixed a bug with keyboard input on the Agent menu, where scrolling downward would not wrap if all levels are complete. Secret Percentage update after loading from a save, fixed LADATA save percentage issue. The GPU renderer now properly emulates several stretching mid-texture effects (these worked in the software renderer). Fixed a sky texture offset bug using the GPU renderer that caused the incorrect part of the sky to show up in part of Stars End. Saved games with no name given are now assigned a default name, so that they can be selected and loaded.
×