Commit graph

8706 commits

Author SHA1 Message Date
Vladislav Belov
21ec2f0ab8
Allows compute shaders for GL only since 4.3.
It seems current checks for GL 4.2 aren't enough so just disable
compute shaders for GL 4.2. Fixes #7734.

(cherry picked from commit fa3fb5d064)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-05-01 08:56:55 +02:00
Vladislav Belov
85cc968be0
Fixes out of bounds during GL buffer binding.
There was an out of bounds access during binding a uniform buffer on
GL. Fixes #7567, #7598.

(cherry picked from commit bce6e2c238)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-05-01 08:56:54 +02:00
Dunedan
ef9ea478ec
Add workaround to turn off nursery size heuristic
SpiderMonkey 98 introduced a size heuristic for the nursery GC region
(https://phabricator.services.mozilla.com/D136637). As this heuristic
uses a wall-clock time duration, it results in a severe performance
regression on slower systems for our use case.

This commit adds a workaround to turn off that heuristic, by telling
SpiderMonkey that a "page load" (something which doesn't have a meaning
in the context of pyrogenesis) is in progress, as that heuristic is
disabled for page loads.

Co-Authored by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
Fixes #7714

(cherry picked from commit 11dd480b67)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-05-01 08:56:53 +02:00
Ralph Sennhauser
417af009ea
Don't map unknown scancodes to hotkeys
Users may generate key presses that don't map to a distinct SDL scancode
and will be mapped SDL_SCANCODE_UNKNOWN instead. Using the same ID for
unmapped hotkeys means any such key press will execute unset hotkeys. As
luck would have it in #7644 this leads to calling "Custom exit to
desktop" if the hotkey is unbound as is the default.

So simply use a code for unused hotkeys that doesn't map to any SDL
scancodes.

Fixes: #7644
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
(cherry picked from commit f10526284f)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-05-01 08:56:52 +02:00
Ralph Sennhauser
6746f380f7
Add missing header in KeyName
Reported-by: @svenstaro
Ref: #7564
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
(cherry picked from commit bccd3db231)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-04-27 20:59:22 +02:00
Dunedan
8c69bb026d
Update supported languages for the NSI installer
235ea5cfb4 updated the languages supported by 0 A.D., but missed
updating them for the installer. This commit makes up for that and
updates the languages for the installer as well.

(cherry picked from commit db35a8494c)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-28 19:30:34 +01:00
Vladislav Belov
d4e1b8b9db
Disables compute shaders for GL ARB backend.
(cherry picked from commit a7ead4cf4c)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-28 19:28:00 +01:00
Vladislav Belov
8f8d08b9f3
Disables GL storage buffers on Mesa.
This is a workaround to avoid disabling GL storage buffers completely.
Because they might not work or might lead to a decreased performance.
We need to investigate that further when we have a local reproduce.

(cherry picked from commit 635a268dd9)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-28 06:49:26 +01:00
Itms
73b2eed323
Fix unix-build tarball inclusion of text files
The .txt were wrongly send to a subdirectory named `.` and the files
converted to Markdown were forgotten.

(cherry picked from commit e1ecc4a743)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-20 22:09:31 +01:00
Ralph Sennhauser
f14b29923e
Prefetch tarballs in bundle pipline
Fetch third party tarballs for source packages so they will be bundled
in source release tarballs.

Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
(cherry picked from commit 3aa95b7a28)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-20 22:09:28 +01:00
Vantha
57b5f3f10d
Fix alignment issue with 'imgleft' and 'imgright'
Bug was introduced by f8d2927748.

Fixes #7397

(cherry picked from commit 7485b37ba3)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-20 22:07:59 +01:00
Dunedan
d41356a9cc
Update supported languages for Alpha 27
This removes Catalan and Scottish Gaelic as supported languages, as they
now both have a coverage of less than 80% and adds Galician and
Portugese which both have 100% coverage right now.

(cherry picked from commit 235ea5cfb4)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-12 01:20:03 +01:00
Itms
beee5b2b8b
Only freeze once the cached JS values of templates
CParamNodes can be quite large, thus we usually cache the JS::Value when
converting them. The AIInterface makes heavy use of it as detected in #7404.

However, the cached values are re-frozen everytime, which is a
significant waste of time on a large number of templates.

(cherry picked from commit e48b9ea106)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-08 14:39:38 +01:00
Itms
8956a38616
Export a 10-char commit hash in the build version
This avoids collisions in the user report, fixes #7174.
Update the user report version to account for the new build version
format, fixes #7173.

The build version displayed in the GUI is kept at 5 characters for
main menu clutter concerns.

(cherry picked from commit 9f023825e0)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-08 14:38:11 +01:00
Vladislav Belov
3231d262ef
Fixes missing SPIR-V shader combinations.
We have multiple renderer backends for a while. So we can't rely on
a single CONFIG_GLES2 macro for disabling features.

(cherry picked from commit 8ee48a164a)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-08 14:37:41 +01:00
Ralph Sennhauser
11aa7fdafa
Avoid segfault with curl 8.10/8.11
With curl 8.10 [1] calling curl_multi_remove_handle retruns
CURLM_BAD_EASY_HANDLE iff the handle was removed already and no other
easy handle were registered. This resulted in ENUSRE triggering a
segfault during shutdown as reported. This was fixed upstream after
8.11.1 [2].

Do a runtime version check and for affected version allow
CURLM_BAD_EASY_HANDLE.

[1] curl ba235ab269080dc66e35835c829f7ac4290dbc1d
[2] curl 713182bd196bba014ba77f71176fea3de2236724

Fixes: #7295
Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
(cherry picked from commit edde9fb4ee)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-08 14:36:56 +01:00
wowgetoffyourcellphone
6df8952672
Fix projectile modifier oversight and references
Update trigger script
Update Attack.js component
Update the relevant techs
Update unit_tables.py

(cherry picked from commit c798a12815)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-08 14:36:02 +01:00
phosit
2a97089c94
Consistent coment length to seperate message-types
(cherry picked from commit 7c1a566d3e)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-05 22:57:17 +01:00
elexis
da87b72e6a
Store whether a player is activ in C++
This prevents mods from mutating this value and revealing the map.

Part of this commit is written by @phosit.

(cherry picked from commit c9e76efe7b)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-05 22:57:15 +01:00
elexis
26d4c1550e
Fix subscription time of script component wrapper
Script component wrapper attempted to subscribe to messages before the
script component has been registered.
This defect existed since 7c2e9027c2 but was never noticed since there
is no script component wrapper which subscribes to messages. (Only the
script component it wrapps does.)

(cherry picked from commit f932b8b9cc)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-05 22:57:14 +01:00
elexis
04636d393a
Fix changing view to observer
`id` was compared to the wrong player.
This defect was introduced in 023527e56e.

(cherry picked from commit e19a5eda9f)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-05 22:55:56 +01:00
Vladislav Belov
83a3794ea3
Fixes slow-path texture conversion on RPI4.
RPI4 returns `false` for `textureCompressionBC` because it doesn't
support formats above BC3. As the Vulkan specification requires to
support all BC formats to have `true` for `textureCompressionBC`.

(cherry picked from commit 0467d27b07)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-05 22:55:22 +01:00
Vladislav Belov
3531ac9041
Fixes GLES compilation.
(cherry picked from commit 54701868da)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-04 23:21:01 +01:00
Lancelot de Ferrière
85363e861e
GameSettings: ensure savegameID is either a file name or undefined.
The current code could end up with savegameID being undefined, false, a filename string, or null depending on the code path taken.
Adapt C++ in consequence.

(cherry picked from commit a8fc3cf254)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-04 23:19:23 +01:00
Lancelot de Ferrière
795af45a7a
Fix sounds playing in the wrong places of the map
Introduced by a typo in f8afd49ae1.
Fixes #7345, reported by wowgetoffyourcellphone

(cherry picked from commit fba5a23aad)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-04 23:18:46 +01:00
Lancelot de Ferrière
8b5621e822
Fix overlay renderer when changing displayed player.
Observers have the ability to change the currently displayed player, and this broke the logic of commit f3f695b90e.
By instead storing the displayed player in CmpOverlayRenderer, we can remove the workaround to set a 'dirty' flag as well.

(cherry picked from commit 3756e12701)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-04 23:18:11 +01:00
Itms
6cdf1d5a15
Sign and notarize macOS bundles
(cherry picked from commit 2482ecf9fe)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-03 22:51:17 +01:00
Lancelot de Ferrière
5ca63d19b8
Avoid idle 'flicker' because of regular formation regroups
Since 71a61d5f50, formations regularly regroup. However, units already at their correct offset should remain idle. This doesn't happen as we cannot check if we are at destination.
This exposes that and handles things properly... Unfortunately UnitAI has already left the IDLE state at this point, so we still get counted as no-longer idle for a turn.
To fix this, try and detect that particular situation without triggering infinite loops.

(cherry picked from commit 2f7ac026c1)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-03 22:49:34 +01:00
phosit
c4dbfc9c4b
Catch all std::exception when loading a map
Since 0eed117e6d exceptions from the map generation script are rethrown
in the main thread but not all of them are catched.

(cherry picked from commit 82513c9104)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-01 22:23:38 +01:00
Stan
b4a53f9c14
Mod Interface: Enable setting territory visibility
based on a patch by: aeonios

`off` means that the territory visibility cannot be changed
`hidden` means that it's hidden by default but can be enabled
`visible` means it's visible by default

(cherry picked from commit fd78034885)
Signed-off-by: Itms <itms@wildfiregames.com>
2025-01-01 22:20:03 +01:00
Dunedan
88aac575d9
Add a deprecation warning for using GetFileMTime()
(cherry picked from commit 894e349ebf)
Signed-off-by: Itms <itms@wildfiregames.com>
2024-12-29 22:25:43 +01:00
phosit
ccd9cadab2
Multicast chat messages
Only the sender and the recipients receive the chat messages.
This commit only has an affecto on messages where the addressee(s) are
selected through the dropdown. Addressee(s) selected with a "/" command
are still sent to evevyone and filteret by the receiver.

(cherry picked from commit e04506814a)
Signed-off-by: Itms <itms@wildfiregames.com>
2024-12-28 11:29:08 +01:00
elexis
fb84643c6d
Prevent players to reveal the map from GUI script
`Engine.SetViewedPlayer` and `Engine.SetPlayerID` could be used to
reveal the map from GUI scripts and the in game console.

This is prevented by querying the simulation whether this player is
allowed to call thous functions.

These two vulnerabilities were introduced with their respective
features:
20e7d2224a introduced SetPlayerID to allow controlling other players
	using the developer overlay.
a2f7d4d82a introduced SetViewedPlayer to allow observers to change the
	perspective.

(cherry picked from commit 023527e56e)
Signed-off-by: Itms <itms@wildfiregames.com>
2024-12-28 11:27:27 +01:00
scuti
99ebeeb39b
Skip playing audio of corrupted files.
Prints a warning instead of crashing.

Fixes #7150

(cherry picked from commit a81c38bab9)
Signed-off-by: Itms <itms@wildfiregames.com>
2024-12-26 22:33:19 +01:00
Ralph Sennhauser
2b8a4fabcf
Bump release version to 0.27.0
Also drop build version component as we never used it in earlier
releases either. This will also make replays et al be stored in a
directory 0.27.0 similar to earlier releases.

The build version component was introduced in 028ec40165

Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
(cherry picked from commit fb24d75f0e)
Signed-off-by: Itms <itms@wildfiregames.com>
2024-12-26 22:31:01 +01:00
elexis
7c6d2eef93
Erase client state hash on disconnect
Fix `NetServerTurnManager` from pausing the simulation forever after a
client sent a bad hash to it and disconnects before the bad hash has
been processed.

A client that sends a wrong simulation hash to the `NetServer` and
disconnects before the server compares that hash causes a message box to
appear and the game to be paused forever.
94e5d88169 introduced the bug by missing to delete `m_ClientStateHashes
upon `UninitialiseClient.
This causes `m_ClientData[hashPair.first].isOOS = true` to insert a
client with blank values that the `NetServerTurnManager` will wait
forever and hence the message box about an OOS with no players being OOS
is shown (the playername is emptystring).

5ebf2020b0 exposed the bug by making observers able to lag behind,
providing a longe enough timeframe for this to occur.

Fix:
Deleting `m_ClientStateHashes` upon disconnect solves the broken
message box and the pausing.

(cherry picked from commit d12c015d43)
Signed-off-by: Itms <itms@wildfiregames.com>
2024-12-23 10:34:26 +01:00
Itms
9f6699d964
Adapt bundles pipeline to the git environment 2024-12-21 23:03:25 +01:00
Lancelot de Ferrière
f3f695b90e Fix aura/overlay visibility in FOW 2024-12-21 21:24:11 +01:00
Vantha
d7dda097e1 Extend the tips page for multiple images per tip
Enable the Tips and Tricks page to show multiple images for each tip.
Add a small GUI panel below the image for switching between them.
Only show it when the current tip has more than one images.

Introduce tipfiles.json to assign images to the text files.
(And stop of relying on file naming)

Add a tip about wonders, and make some slight changes to other texts.
Improve existing tip images and add a bunch of new ones.
2024-12-20 19:46:07 +01:00
phosit
b90280855f Multiplayer saved games
Enables to save multiplayer games.
When the savegame is loaded, the settings are frozen (except the non-AI-player assignment settings).
2024-12-19 21:36:51 +01:00
phosit
20b4937ffd Enable multiple RequestTypes 2024-12-19 21:36:51 +01:00
Dunedan
3a0f6aca32
Don't credit our Transifex account as translator
This account is only used for fixing technical bugs in translations and
not doing translations themselves, so let's exclude it from the credited
translators.
2024-12-18 21:53:31 +01:00
Lancelot de Ferrière
ce197de0b0 Fix style of #7269 after Vlad's comments 2024-12-17 11:19:20 +01:00
Vladislav Belov
dba968013f
Fixes Vulkan device selection.
According to #6936 some lower devices (especially virtual ones) might
report more memory than regular ones. So we can't use the memory
amount as a score for now.
2024-12-16 23:18:20 +01:00
Vladislav Belov
c7ae248b77 Removes duplicated manifest for Windows. 2024-12-16 23:07:37 +01:00
Vantha
960bd5eace Unique network transmission handling of flares
This patch addresses issues concerning a1796ed71f:

Allow for a more elegant implementation of observer flares.
And still display flares even if the sender is lagging behind:
Split off flares from simulation commands.
Remove the new, problematic 'observer commands' entirely.
Provide an engine function 'SendNetworkFlare' to the JS interface.
-> which sets off the (pretty ordinary) transmission process.
Add a new type of net messages exclusively for flares
-> contains the flare's position and its sender's GUID.
2024-12-16 18:03:25 +01:00
Stan
7b195d6a5d
Add compatibility mode detection for Windows 2024-12-14 13:47:10 +01:00
Vladislav Belov
e27909e603
Fixes SPIR-V compilation for compute_skinning shader.
Currently we don't mix storage images and storage buffers in the same
shader. Also we don't sample textures when we use storage buffers.
In the future we need to avoid shifting descriptor sets.
2024-12-11 01:18:05 +01:00
Ralph Sennhauser
ead62bba78
Update trac links with gitea links
This replaces all links pointing to trac with their corresponding links
to gitea. Also replace http with https while at it.

Signed-off-by: Ralph Sennhauser <ralph.sennhauser@gmail.com>
2024-12-10 11:29:48 +01:00
Vladislav Belov
de1257c8da
Adds GPU skinning support via compute shaders.
We use a shader with 64 bones by default to consume less uniform memory.
But if we meet bigger skeletons we batch and handle them afterwards.
In the future we need to sort the input models to have less changes for
bound buffers. Also we might want to skin up to 4 models per a single
dispatch.
2024-12-09 22:47:17 +01:00