8701 Commits

Author SHA1 Message Date
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
Vladislav Belov 9e371824c2 Adds storage buffer support to Vulkan and GL.
The idea is similar to the storage images but we need a separate
descriptor set in Vulkan and a program interface to gather used buffer
in GL.

For Vulkan we also need to track buffers to free used descriptor sets.
2024-12-09 22:47:15 +01:00
Itms 762c686a0d Remove check for SpiderMonkey minor version 2024-12-09 10:46:14 +01:00
Itms 0de5f2fb25 Upgrade SpiderMonkey to ESR 115 2024-12-09 10:46:12 +01:00
Itms cc72142205 Adapt 0 A.D. to SpiderMonkey ESR 102
This follows the migration guide at:
https://github.com/mozilla-spidermonkey/spidermonkey-embedding-examples

Based on patch by: wraitii
Differential Revision: https://code.wildfiregames.com/D5002
2024-12-09 10:43:35 +01:00
Lancelot de Ferrière 7590723606 Fix non-PCH builds 2024-12-09 09:53:25 +01:00