Git Product home page Git Product logo

descent3's Introduction

d3 (1)

This is the Descent 3 open source engine, licensed under GPL-3.0. It includes the '1.5' patch written by Kevin Bentley and Jeff Slutter several years ago and brought to a stable condition by the Descent community.

In order to use this, you must provide your own game files. See the USAGE.md file for details about installation.

To build the game, follow build instructions in the BUILD.md file.

Build or runtime issues should be reported on our GitHub tracker.

Contributing

Anyone can contribute! We have an active Discord presence at Descent Developer Network. Patches should be submitted on GitHub.

descent3's People

Contributors

arcnor avatar bryanperris avatar danielgibson avatar danra avatar ei-grad avatar eslutz avatar graviszro avatar icculus avatar insanitybringer avatar jayman2000 avatar jcoby avatar jengelh avatar jeodc avatar kevinbentley avatar kreeblah avatar lgt2x avatar maddthesane avatar mstephenson6 avatar nakhr11n avatar notimaginative avatar petesimard avatar pzychotic avatar rfht avatar scivision avatar talon1024 avatar th1000s avatar tophyr avatar vlohacks avatar winterheart avatar ziplantil 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  avatar

descent3's Issues

System mouse cursor is visible when using windowed mode

When running Descent 3 in windowed mode using -windowed, the system mouse cursor is still visible but inactive. Some users have reported the system mouse cursor being active in specific situations. Needs investigating.

Inconsistent line endings

Some files in this repo use LF line endings, and some files in this repo use CRLF line endings. I created a script that will calculate how many files use LF line endings and how many files use CRLF line endings. Here’s what the script says when you run it on the most recent commit (07d988e):

Total number of files that use LF line endings: 1,491 (86%)
Total number of files that use CRLF line endings: 62 (3%)
Total number of files: 1,724

It would be nice if all of the files in this repo used the same line endings. Are there any files that need to use LFs or need to use CRLFs? For example, I can see that scripts/data/linuxfullhog/d3i.str uses CRLFs. Would using LFs in that file break anything?

Descent 3 editor missing?

I'll confess I've not looked into this in too much depth at this time, so it could all be there, and I'm just blind. The recent removal of the licence has somewhat put me off for the time being, as the code is now in a rather ambiguous legal state.

Anyway, I digress, it looks like the source code for the editor isn't available here? There are references to a d3edit.h header under an editor directory (which is presumably where the rest of the code for the editor would be), but neither seem to be available. Is there a reason for that?

Regardless, thanks again for making this all available! πŸ˜„

Controls do not work correctly on M-series Macs

Build Version

86a6c13

Operating System Environment

  • Microsoft Windows (32-bit)
  • Microsoft Windows (64-bit)
  • Mac OS X
  • Linux (specify distribution and version below)

CPU Environment

  • x86 (32-bit Intel/AMD)
  • x86_64 (64-bit Intel/AMD)
  • ARM (32-bit)
  • ARM64 (64-bit; sometimes called AArch64)
  • Other (RISC V, PPC...)

Game Modes Affected

  • Single player
  • Anarchy
  • Hyper-Anarchy
  • Robo-Anarchy
  • Team Anarchy
  • Capture the Flag
  • Bounty
  • Entropy
  • Hoard
  • Monsterball
  • Cooperative

Game Environment

No response

Description

The player is only allowed to pitch down, yaw right, roll left on the M-series Mac. Affects both the mouse and keyboard. Cross controls do work (rolling left + right stops rolling, pitching up + down stops pitching, etc) so it appears to be a problem with applying the input to the game state not detecting the input.

Regression Status

No response

Steps to Reproduce

No response

Missing source

After a few hours of working, I've gotten this compiling and partially working on Windows, but a chunk of the Windows specific code is missing. This is due to the template VS .gitignore including the following two rules:

[Ww][Ii][Nn]32/
[Ww][Ii][Nn]32/

This excludes the win32 directory. To compile it, I've rolled in the win32 sources as included in the editor source release and made a dummy version of the win32Controller class, but I'd like to be able to use something with consistent licensing.

The .vsproj files are also missing, but I am unaware if the intended build system is CMake and the .sln is an old dev artifact. CMake seems to work fine.

[Runtime Bug/Crash] Movie files required

This is the minimum file structure needed to play Descent 3:

Descent 3/
β”œβ”€β”€ custom/
β”‚   β”œβ”€β”€ cache
β”‚   β”œβ”€β”€ graphics
β”‚   β”œβ”€β”€ settings
β”‚   └── sounds
└── missions/
└── d3.hog
└── Descent3.exe

Without the movies/mainmenu.mve file, the main menu ui will overlap. This might be because the movie is constantly drawn overtop of inactive ui windows, so if it isn't present, there is nothing to hide the ui windows.

Without the other .mve files, the player will be prompted for a CD on attempting to start Descent 3: Retribution, Training Mission, or Descent 3: Mercenary.

Since the engine is open source, we should not require a CD--we should simply not play the movies.

The option to invert the Y-axis should be more obvious

(This issue was inspired by #56).

You can play Descent 3 with an inverted Y-axis, but the option is so hidden that a lot of people don’t know about it. There should be a more obvious way to invert the Y-axis because of how many people want to play with an inverted Y-axis.

The way Overload handled this was perfect. While you’re playing Overload’s tutorial, it will ask you if the Y-axis feels right, and tell you to press a button if you want to invert it. It would be cool if we could do something similar. Or perhaps we could add a pop-up window that asks the player if they want to invert their Y-axis when they create their pilot.

[MacOS] Missing Briefing.fnt

Reported by user meh and arcnor.

MacOS (at least m1) encounters an error regarding Briefing.fnt on run attempt. This did not occur at 1edaa3b.

Bisecting is in progress.

Under which license is the Descent 3 source distributed?

Hi there,

Maybe I'm missing something obvious, but under which license is the Descent 3 source-code distributed? There is no LICENSE file in the root of the repository and the README does not mention anything regarding licensing. Is it simply source-available, as in not OSS, or is the intention to to make it properly open-source? If so, under which license?

"Unable to load font lohud.fnt"

Hi,

I'm compiling the project on Windows 10 using Visual Studio C++.

I couldn't find instructions on how to launch the executables, so here is what I've done so far:

  • generated project using cmake cmake -A Win32 -B "build32" .
  • compiled Debug|Win32 configuration
  • Copied scripts/data/linuxfullhog/* files to build32/Descent3/* to avoid resources-related error messages
  • Started the executable with Descent3.exe -dedicated -windowed (cwd: build32/Descent3). Starting without argument triggers the "You cannot run this program directly" error message.

Now the program raises the following error : Unable to load font lohud.fnt

I find no lohud.fnt or hihud.fnt files in the project tree, or on my machine. They are referenced in code here : https://github.com/kevinbentley/Descent3/blob/main/Descent3/gamefont.cpp#L113

Are the files missing ? Do I start the executable the wrong way ?

Thanks for your help

Save/Load corruption bug for native Linux

How to reproduce:

  1. Install the game from Steam on a Linux based system (Steam Deck for me)
  2. Start a new game and make a save
  3. Attempt to load the save, sometimes it will be fine.
  4. If the game saves a bad save file, it crashes the game upon load.

[Runtime Bug/Crash] Game freezes during intro cutscene

Build Version

07d988e

Operating System Environment

  • Microsoft Windows (32-bit)
  • Microsoft Windows (64-bit)
  • Mac OS X
  • Linux: NixOS 23.11

CPU Environment

  • x86 (32-bit Intel/AMD)
  • x86_64 (64-bit Intel/AMD)
  • ARM (32-bit)
  • ARM64 (64-bit; sometimes called AArch64)
  • Other (RISC V, PPC...)

Game Environment

I’m using the game data from Steam’s Windows version of Descent 3.

Description

If you try to watch the intro cutscene, the game will crash:



Descent 3 Linux Client v1.5.0
Copyright (C) 1999 Outrage Entertainment, Inc.

corrupted size vs. prev_size
SIGNAL 6 caught, aborting
Recursive signal cleanup! Hard exit! AHHGGGG!

Once the game prints β€œSIGNAL 6 caught, aborting”, it will freeze and do nothing. I have to SSH into the system and send the process a SIGTERM which causes the β€œRecursive signal cleanup! Hard exit! AHHGGGG!” message.

Regression Status

All I know is that this bug wasn’t in the Windows version of Descent 3 v1.4.

Steps to Reproduce

  1. Run Descent3 --windowed.
  2. (Optional) Skip the Dolby ad.
  3. Wait.
  • Game modes affected:
    • Single player
    • Multiplayer competitive
      • Anarchy
      • Hyper-Anarchy
      • Robo-Anarchy
      • Team Anarchy
      • Capture the Flag
      • Bounty
      • Entropy
      • Hoard
      • Monsterball
    • Multiplayer cooperative
  • Players affected by issue:
    • Game host
    • Game guests

README rewrite for 1.5 stable

The README.md file needs a rewrite to remove excess weight, add licensing reference, and add compiling instructions as well as usage instructions.

Integrate the editor with Descent3 source

Properly integrate D3Edit or the internal editor with Descent 3 source and add compile time options to ignore or build the editor along with D3. Possibly consolidate duplicate dependencies and libraries used.

Formatting code with clang-format

Hi there.

After some digging in code I would suggest also run clang-format on all source files since there a lot code styles mixing and CRLF line endings.

Crash on MacOS with Silicone m1

Compilation works fine with the mac preset. I used the Steam Version to drop in the binary. When the binary is dropped in and started via Steam nothing happens. I opened a terminal and went to:
/Users/al/Library/Application Support/Steam/steamapps/common/Descent 3/Descent 3.app/Contents/MacOS and started the binary from there:

./descent3
2024-04-21 08:46:45.429 descent3[31427:27623466] INFO: This app is looking for CD-ROM drives, but no path was specified
2024-04-21 08:46:45.430 descent3[31427:27623466] INFO: Set the SDL12COMPAT_FAKE_CDROM_PATH environment variable to a directory
2024-04-21 08:46:45.430 descent3[31427:27623466] INFO: of MP3 files named trackXX.mp3 where XX is a track number in two digits
2024-04-21 08:46:45.430 descent3[31427:27623466] INFO: from 01 to 99

Descent 3 Linux Client v1.5.0
Copyright (C) 1999 Outrage Entertainment, Inc.

Error: Unable to set temporary directory to: "/Users/al/Library/Application Support/Steam/steamapps/common/Descent 3/Descent 3.app/Contents/MacOS/custom/cache"(Descent 3 Error)

System Error

Press OK to exit, CANCEL to ignore this error and continue.
SIGNAL 5 caught, aborting....

I figured maybe it cannot find the data and so I went to the Resources directory of the package and dropped the binary in there.
When I start descent3 now via Terminal in the Resources directory, the game starts for a few seconds till the dialog where you name the pilot appears, the cursor blinks, and it crashes with a Signal11. Again it shows the INFO about the missing MP3 tracks in the terminal.

starting via lldb shows:

2024-04-21 08:57:26.573998+0200 descent3[31736:27632222] [plugin] AddInstanceForFactory: No factory registered for id <CFUUID 0x600000c94800> F8BB1C28-BAE8-11D6-9C31-00039315CD46
2024-04-21 08:57:26.712704+0200 descent3[31736:27632222] [default] CGSWindowShmemCreateWithPort failed on port 0
2024-04-21 08:57:26.712737+0200 descent3[31736:27632222] [default] CGSWindowShmemCreateWithPort failed on port 0
Process 31736 stopped

  • thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x550fb23f4)
    frame #0: 0x0000000100261218 descent3`(anonymous namespace)::InternalAudioDecoder::UnpackLinear(decoder=0x0000600003e827f0, id=9, col=0, atEOF=0x000000016fdf817f) at libacm.cpp:585:19
    582 return false;
    583
    584 const uint32 pos = (i << level) + col;
    -> 585 pBlock[pos] = decoder.m_pMidBuffer[offset - middleIndex];
    586 }
    587
    588 return true;
    Target 0: (descent3) stopped.

Port D3Edit to Linux/Mac

Obviously this is a long time into the future, but it would be awesome if the D3Edit level editor had a port. The Freespace2 SCP team are rewriting FRED2 using QT and porting it to Mac and Linux.

Sound and Video Codecs

Thanks for releasing the source of Descent 3, this is really awesome!


Some proprietary sound and video libraries from Interplay have been stripped out (the ACM and MVE format). I have that code if someone wants to help make a converter so the old cutscenes work.

Open Source implementations of these codecs are available, so it might be feasible to use the original files without (external) conversion?

ACM

Information on the codec: https://wiki.multimedia.cx/index.php/Interplay_ACM
Decoder library (ISC license): https://github.com/markokr/libacm
FFmpeg's decoder, based on libacm: https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/interplayacm.c
Libfalltergeist (MIT license) supports ACM: https://github.com/falltergeist/libfalltergeist

Where is ACM used? Only as part of (MVE?) cutscene videos?

MVE

MVE seems to be supported by ffmpeg; though in my experience having a dependency on ffmpeg is a pain in the ass, a minimal lib (or directly integrating code from ffmpeg into the source port) is preferable.
(OTOH, if someone wants to go the "convert to better format" route, ffmpeg could probably be used for conversion)

Information on the codec:

Implementations:

Add v1.5 patch notes to the repository

Since v1.5 was in beta, patch notes are missing. The following patch notes were found on some forum from 2005, so these may not be accurate now:

## Fixes for Version 1.5.0:

- Fixed a checksum problem introduced in 1.4 that prevented some levels from being played across platforms (for example, Windows and Linux).
- Force feedback now works under Windows 2000.
- Fixed crash starting a multiplayer game when the Black Pyro is the only allowed ship and the player is currently set to use another ship.
- Can no longer start a multiplayer game with no allowed ships.
- It's no longer possible to crash the dedicated server by typing a very long command line in telnet mode.
- Disabled cheats that are based on changing the ship weapon values in the data files.
- Mod files are now stored on http://www.descent3.com (instead of http://www.pxo.net).
- Removed support for HEAT.NET, as they're no longer in business.
- Pilot command-line arg `-pilot` or `+name` is now only checked once, not every time the main menu comes up. This fixes the problem of the game switching back to the pilot specified on the command line after the user has selected a different one.
- When the player's HUD name level is lowered by a game server, the client remembers the higher level and will revert to that level when a server allows.
- Fixed a problem with the GuideBot menu not responding to key presses after firing with the mouse.
- Saved games now properly load custom textures.
- Demos now properly load custom textures.
- Primary weapons no longer behave oddly when attempting to fire secondaries when out of secondaries.
- Fixed a rendering crash that could be caused (among other ways, probably) by a lot of chaff being detonated at once.
- Fixed some (maybe all) multiplayer ghost ship problem.
- Omega cannon energy usage is now not framerate dependent.
- Fixed crashes/slowdowns when using the omega cannon.
- Fixed a problem with the rearview camera when viewing demos of multiplayer games.
- Fixed a ghost ship problem with demos after a player respawned in a multiplayer game.
- Certain objects, such as the surface cannon in level 10, no longer interact with observers in multiplayer games.
- The stats file now contains a listing of team members in Team Anarchy, Mosterball, and Entropy.
- The results screen for team anarchy now shows the team scores.
- Don't show extra teams on team anarchy & monsterball results screens.
- Removed the Mission Status item from the HUD config menu, since there is no Mission Status HUD indicator.
- Removed the missile camera center window option, since it didn't really work (& wasn't supposed to be there in the first place). If you really want the center view, however, you can set MissileView to 1 in the registry. Note that going into the config menu will reset it, though.
- Fixed problems when video bit depth set to 32.
- Clients now can hear the server player taking omega (& other) damage.
- Fixed problems with omega cannon causing wrong amounts of damage and damage to the person firing the weapon.
- Allowed room for longer team names on results screens.
- Ping & packet loss data no longer displayed on HUD in peer-to-peer games.
- It's no longer possible to pick up a powerup in multiplayer while leaving observer mode while moving over the powerup.
- Added confirmation HUD messages when sending private messages.
- Fixed several problems unloading overlay data.
- Made `-mission` work as described; that is, it now causes the specified mission to start automatically when the game is started.
- Colored stipes now display on player ships in demo playback of multiplayer games.
- HUD gauges now work in demo playback.
- Clarified the description in readme.txt of the `-mission` command-line option. Refer to Section 7, Command-line Options, for the new description.
- Fixed a couple problems with the level auto-download system.
- In demos of multiplayer games, player ships no longer switch between models for different ships.

## New features for Version 1.5.0:
- Increased by 20 the maximum number of player ships.
- Increased by 300 the maximum number of textures.
- Increased by 100 the maximum number of objects.
- Increased by 200 the maximum number of polygon models.
- Added "-nosatomega" command-line option to disable alpha effects on omega cannon. Try this if you have speed or crashing
problems with the omega under 1.5.
- Added -nocrashbox command-line option to disable the error dialog displayed if the game crashes.
- Improvements for some players using NAT routers. If you're having trouble playing D3 using a NAT, enable port/host forwarding on the NAT server, then specify your port with the the `-useport` and `-pxoport` command-line options.
- Added `-datacheck` command-line option. If you get a message on the loading screen that your mission has data errors, use this option and see the file `datacheck.out` for a description of the data errors in your mission.
- In multiplayer, a HUD message is shown when a player's ship is changed because the selected ship is not allowed.

Known issues in Version 1.5.0:
- Because of limitations in the precision of Descent 3's timer, high framerates are not displayed accurately on the HUD.

Instructions on how to compile under Linux/MacOS

Hi, I did not find any makefile udner the linux folder.
Do we need to generate it via cmake (I do not know very much cmake)?
I tried running cmake from root folder, but some deps are missing.
It will be great to have small instructions on the deps to install with debian or macos'brew (like a COMPILING.md).
I can write it if you can give me some dependency list

Move away from C style arrays

There are many classic C arrays allocated with fixes sizes, and some conditions that simply lack sane bounds checking, this leads to many potential invalid memory access exceptions, and is the culprit load file crash for Linux.

Instead of C arrays, use C++ std::array or std::vector classes instead.

Linux: invalid memory access during libacm block decoding

Reproduce Steps:

  • Compile latest source on Fedora 39
  • Export the fake SDL21 CD PATH environment variable (did not provide any manual track files)
  • Execute ./Descent3
  • Immediately see the giant sun background then process crash

GDB Details:
Thread 1 "Descent3" received signal SIGSEGV, Segmentation fault.
(anonymous namespace)::InternalAudioDecoder::UnpackLinear (decoder=..., id=9, col=0, atEOF=@0x7fffffff9caf: false)
at /home/bperris/base/dev/Descent3/libacm/libacm.cpp:585
585 pBlock[pos] = decoder.m_pMidBuffer[offset - middleIndex];

Workaround: Disable block decoding for libacm, no doubt it probably breaks audio

AngelScript compile error under MSVC

When building the project under MSVC (VS2022, using CMake/Ninja, x86 debug settings) I see this error under the AngelScript directory:
scriptstring.cpp(596): error C2440: 'static_cast': cannot convert from 'void (__thiscall std::basic_string<char,std::char_traits<char>,std::allocator<char>>::* )(const unsigned int,const _Elem)' to 'void (__thiscall std::basic_string<char,std::char_traits<char>,std::allocator<char>>::* )(size_t)'
This appears to be because MSVC's implementation of the STL implements both prototypes of basic_string::resize using a single method with an optional parameter... which I guess works, but it doesn't allow you to static_cast to the single-parameter version.

I notice that currently I can just remove AngelScript from the CMakeLists and then it's all fine, so I suppose it's not really in use yet. But I assume the intention is to eventually move there... would an appropriate solution be to update the version of AngelScript? Looks like this one is from 2009, so maybe a more current version has, erm, workarounds for the MSVC idiosyncrasy :)

Move old VCS text

The old VCS text in most source files is in the way of the code.
But it is useful to keep it around for context, just not in the source files themselves.

For example it could be put in an adjacent file:
Descent3/LoadLevel.cpp (1200 lines of old VCS)
-> Descent3/LoadLevel.cpp.old-vcs

Windowed mode doesn't respect resolution

On windows 11 at least, using windowed mode puts a 640x480 window in the top left corner of the display. This window does not respect video resolution changes, and cannot be dragged.

Request tp centralise repos under one Descent 3 project

Hi, firstly, thanks for releasing and actively working on this code. Game preservation supported by the original devs is simply the greatest and I hope more studios follow suit. I'm wondering if the 2 Git repositories - D3Edit (https://github.com/kevinbentley/D3Edit) and Descent 3 itself (this one) - could be brought under one Descent 3 project, making the repositories linked and easier to find until a possible future merge. A layout similar to https://github.com/PocketRelay could be helpful, maybe even enabling the setting up of additional repos if needed for external libraries which can then be linked.

Multiplayer needs testing

Multiplayer games could do with cross-platform testing. A windows server is being hosted at 64.44.131.41 - Dmax Chicago v1.5 test

Enable console logging

Per Kevin Bentley, it may be wise to modify cmake to do -DCMAKE_BUILD_TYPE=debug or -DLOGGER. Log output to the console for better linux/mac troubleshooting. Perhaps provide instructions to the user in an issue template on how to utilize it.

Checksum failure on 64 bit builds causes script load failure

Build Version

86a6c13

Operating System Environment

  • Microsoft Windows (32-bit)
  • Microsoft Windows (64-bit)
  • Mac OS X
  • Linux (specify distribution and version below)

CPU Environment

  • x86 (32-bit Intel/AMD)
  • x86_64 (64-bit Intel/AMD)
  • ARM (32-bit)
  • ARM64 (64-bit; sometimes called AArch64)
  • Other (RISC V, PPC...)

Game Modes Affected

  • Single player
  • Anarchy
  • Hyper-Anarchy
  • Robo-Anarchy
  • Team Anarchy
  • Capture the Flag
  • Bounty
  • Entropy
  • Hoard
  • Monsterball
  • Cooperative

Game Environment

No response

Description

Scripts do not pass checksum when built on MacOS. Might also affect other 64-bit builds:

Game-Checksum FAIL!!! (2273889867l!=2273873307l)

Osiris_CreateGameChecksum does several sizeof calls and a bit of math to figure out the game state and compares that value to the compiled in CHECKSUM define to see if scripts were compiled against a different version of the game.

We'll need to come up with a portable Osiris_CreateGameChecksum function or hardcode the value on 64-bit machines as a workaround.

Use this patch as a temporary workaround:

index 20f52d8..0056c35 100644
--- a/Descent3/OsirisLoadandBind.cpp
+++ b/Descent3/OsirisLoadandBind.cpp
@@ -1,5 +1,5 @@
 /*
-* Descent 3
+* Descent 3
 * Copyright (C) 2024 Parallax Software
 *
 * This program is free software: you can redistribute it and/or modify
@@ -630,6 +630,10 @@ void Osiris_InitModuleLoader(void) {
 //     so they can use to compare to the time when they were compiled, to see
 //     if they are compatible.
 uint Osiris_CreateGameChecksum(void) {
+  #if defined(__aarch64__)
+  return 2273873307l;
+  #endif
+
   uint value = 0xe1e1b0b0;

   value += sizeof(object);

Regression Status

No response

Steps to Reproduce

No response

Remove pragma ignoring -Wnarrowing

#21 turned off the -Wnarrowing compiler warning in the file libmve/snd8to16.h to enable building on Linux. The short array snd_8to16 uses values that exceed signed short limits.

Figure out a way to remove the pragma, either by increasing the array size to 4-byte ints or clamping values to [-32768;32767]

[Runtime Bug/Crash] Linux: audio related crash when trying to play a mission

Build Version

1fd8876

Operating System Environment

  • Microsoft Windows (32-bit)
  • Microsoft Windows (64-bit)
  • Mac OS X
  • Linux: Fedora 39

CPU Environment

  • x86 (32-bit Intel/AMD)
  • x86_64 (64-bit Intel/AMD)
  • ARM (32-bit)
  • ARM64 (64-bit; sometimes called AArch64)
  • Other (RISC V, PPC...)

Game Environment

Start a new campaign on any level for Descent 3: Retribution

Description

After starting a mission, you wait at the loading screen, then the game crashes

Regression Status

Present since first commit

Steps to Reproduce

Just start playing any level from Descent 3: Retribution, then it crashes on the loading screen before the actual gameplay starts.

  • Game modes affected:
    • Single player
    • Multiplayer competitive
      • Anarchy
      • Hyper-Anarchy
      • Robo-Anarchy
      • Team Anarchy
      • Capture the Flag
      • Bounty
      • Entropy
      • Hoard
      • Monsterball
    • Multiplayer cooperative

Here are more details provided by GDB:
Thread 1 "Descent3" received signal SIGSEGV, Segmentation fault. 0x000000000067747e in hlsSystem::ComputePlayInfo (this=0x1339f20 <Sound_system>, sound_obj_index=1, virtual_pos=0x7fffffffbd70, virtual_vel=0x7fffffffbd64, adjusted_volume=0x7fffffffbd60) at /home/bperris/base/dev/Descent3/sndlib/hlsoundlib.cpp:925 925 sound_seg = BOA_INDEX(sound_seg); Missing separate debuginfos, use: dnf debuginfo-install xorg-x11-drv-nvidia-libs-550.67-1.fc39.x86_64

Unmodified Source Release with Original Timestamps

Hi,

I was wondering, would it be possible to provide a package of the original 1.5 source release, prior to its upload to Github, with the original file dates preserved?

Moreover, as I understand it, this is the source of a prior unreleased version 1.5. Do you also have copies of older versions, such as 1.0, 1.1 etc.?

It would be interesting and useful for archival purposes.

Source for hogUtils-i686

hogUtils-i686 (scripts/hogutils/hogUtils-i686) is executed as part of the build system to build hog files.
However, it is a linux 32-bit executable, which means that extra steps are required for building on anything other than 32-bit linux.
It would be nice to have the source for this, so it can be built as part of the build system, and thus be native to whatever system it is used on.

Remove -fpermissive

#20 introduced "-fpermissive", a flag that turns non-conformant code errors into warnings, in order to be able to build on Linux.

We should manually correct these errors and disable the flag again.

Font missing for linux

I compile it without problem, but after running:

Font <briefing.fnt> height = 0
Font <bbriefing.fnt> height = 0
Font <newmenu.fnt> height = 0
Font <smallui.fnt> height = 0
Font <largeui.fnt> height = 0
Font <lohud.fnt> height = 0
Error: Unable to open font lohud.fnt.


Error: Unable to open font lohud.fnt.
(Descent 3 Error)

System Error

I was checking and in the repository the font lohud.fnt is not present

Windowed mode induces gamma correction across whole display

When running Descent 3 in windowed mode using -windowed, gamma correction will apply across the entire display resulting in unpleasant whiteness. This fixes itself when exiting the game gracefully, but it remains active if the game is closed due to an external window such as attempting to connect to PXO. This can be fixed manually by opening HDR settings in Windows, but it should not occur at all.

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.