Animations, Icons and Overlays
- New wheatfield graphics by fraang
- Shorten a soldier's last evade_failure animation if the soldier is about to
die to prevent overlooping.
- The health bar of a soldier now falls gradually during an attack instead of
one-shot.
- New graphics for field selectors and field action tabs
- Special field selector for road building mode
- Added missing call to get_rand_anim when a soldier is dying
- Added missing working animations for barbarians big inn and wood hardener
- Each tribe now has individual resource indicator graphics
- Added util to rename animation files in bulk.
- Fixed bug #1639253: Add missing walkload animation to Atlantean smoker
Sounds and Music
- New music tracks "Scotty the Scout", "Hypathia's Theme", "We Work in the
Vineyards" and "Running out of Coal" by Stuart Marshall
- New music tracks "Silkweaver's Song" and "The beauty of the flatlands" by
Klaus Halfmann
- Added new sound files for Barbarians Inn + Big-Inn, Empire Inn,
Atlantean Mill, Toolsmith, Smelting-Works, all Weaving Mills, Atlantean
Woodcutter, Sawmill, Stonecutter, Goldspinner.
- Modified smithies sounds to dimmer versions; added tree-falling sounds,
substituted Timber shouting with tree-falling.
- Allocate 32 mixing channels instead of the default 8.
- Never play the same song twice in a row
- Improvements to sounds and the sound mix
Tutorials and Campaigns
- 2 new missions for the Empire campaign
- 2 new missions for the new Frisians tribe
- Tweaked timings in tutorials and scenarios
- Updated the Economy tutorial to match the new, enhanced encyclopedia
- Add roads to p2 in warfare tutorial because the AI is empty
- Fixed reveal_campaign in bar_01
- Fixed bug #1639514: Barbarian campaign, scenario 2: yellow brother bails out
- Fixed bug #1656192: Economy tutorial assumes window is open
Scripting
- Updated Eris to version 1.1.2 (Lua 5.3.4)
- Changes and additions to Lua methods and objects:
- New method player:get_produced_wares_count()
- New object LuaMap -> LuaEconomy.
- Added option to Lua function player:hide_fields to mark them as unexplored
- New scripting functions for random and concentric revealing/hiding of
fields
- New attribute 'is_stopped' in LuaProductionSite
- New method 'toggle_start_stop()' in LuaProductionSite
- Added Lua method to get the type of the current game, i.e., single or
multiplayer.
- Changes to territorial win conditions:
- Pulled out common code for Territorial Lord and Territorial Time.
- Ensure that check_player_defeated is called before points are calculated.
- New function to check whether a field is buildable.
- Check if a player still exists before making it the winning player.
Player will also win if there are no other players left.
- Fixed desyncs
- Updated documentation not to use some functions for multiplayer games
- More precise calculation of conquerable fields to make territorial win
conditions playable on all maps
- Various fixes for win conditions:
- Unified some functions for wood_gnome and collectors
- Removed duplicated code and moved it to win_condition_functions
- Notify only every hour, 10 minutes in the last 30 minutes
- Move _game_over function out of the main loop.
- Don't show points when game ended by military defeat
- Main loop ends when time is over or only one faction is left
- Check every second for defeated players
- Refactor initialization of win conditions:
- Shift calculations for territorial functions and Wood Gnome to C++
to improve performance
- Add immovables to the table for territory calculation
- Expose port spaces and max caps to Lua interface
- Fixed bug for Wood Gnome in which a destroyed player would gain infinite
points. Also, no longer calculate score for a defeated player.
- Remove unused parameters of message_box_objective.
- Removed unused parameter 'req_suitability' from function
place_building_in_region in infrastructure.lua
- Added capability to add custom scenario buildings
- Allow writing and loading of campaign data, so that some scenario state can
be transferred from one scenario to the next in campaigns.
- Do not broadcast Lua coroutine error messages to empty player slots.
Also, use richtext_escape on them.
- Orthogonal design for mapobject program names
- Fix unpersisting of LuaImmovableDescription for tribe immovables.
- Safeguard to avoid desyncs when using send_message() from ui.lua
- Add parameter to send_message() to avoid an error
- Fixed a memory leak in persistence.cc
- Fixed bug #1670065: Random tree growth can block building sites needed to
progress in scenario
- Fixed bug #1688655: lua func "place_building_in_region" not work for mines
- Fixed bug #1815283: Nil value in Territorial Lord
- Fixed bug #1790456: The final message in collectors doesn't show the points
of all players anymore
Maps
- Map tags: Added "1v1" to Firegames, Islands at war and The Pass through
the Mountains. Removed "unbalanced" from The Pass through the Mountains.
- Moved hint texts from map descriptions to hints for the Last Bastion and
Rendez-vous maps.
- Increased maximum number of players from 8 to 16, to be used for testing
purposes.
- Minor fixes to Last Bastion map where a player's expansion could become
completely blocked across the sea
- Fixed bug in Crossing the Horizon map where an artifact couldn't be
conquered by a player
- Fixed desyncs in Smugglers scenario
- Allow random player tribes in scenarios
Saveloading
- Old scenario save games will no longer work due to changes to the map
scrolling functions.
- Broke savegame compatibility in version bzr8747
- Savehandler: Avoid reading config more than once per game
- Corrupt zip files now appear as "incompatible" on game loading/saving
screens. This fixes stack-buffer-overflows.
- Fixed bugs with missing files/folders in savegames by creating a temporary
map save on game start
- Improved error checking in filesystem functions
- In Load/Save menu for games/replays:
- All deletion errors are caught, player gets a message.
- When deleting multiplayer replays, also the corresponding syncstream file
is deleted.
- After deleting replays, the table now respects the Show Filenames setting.
- In Save menu for maps:
- Errors when trying to create a directory are now caught, player gets a
message.
- Directory creation now doesn't allow names with map extensions, because
the game would just try to interpret them as maps and not show as
directories. A tooltip is shown.
- Directory creation can now also be triggered by pressing Enter in the name
edit box.
- Other file errors are caught and logged:
- Syncstream deletion in SyncWrapper destructor
- In Map::get_correct_loader
- File deletion/renaming in GameClient::handle_packet
- Introduced a new class to robustly handle saving of files (incl. dealing
with backups, handling errors, etc.) and using it whenever maps/games are
being saved.
- Remove superfluous "postload" call from replay
- Added validity checks for S2 map headers to avoid crashes when preloading
invalid S2 map files
- Shift calculation of map fields relevant to win conditions from Lua to C++.
This gives us a huge performance boost during saveloading those win
conditions.
- Fixed bug #1678987: Endless autosave cycles when a save takes longer than
the autosave interval, and inefficient statistics saving
- Fixed bug #1746270: Unable to rename rolling autosave
- Fixed bug #1798812: Saving a game from replay does not show up in load game
menu
AI
- The AI now uses a genetic algorithm. The genetic parameters are trained and
then kept in .wai files.
- New command line switch --ai_training: Dumps new AI files in home folder and
uses higher mutation ratios
- New command line switch --auto_speed: Activates auto-speed in multiplayer
games
- Various refactorings of AI hints
- Multiple changes to the logic
- Improvements to training sites
- Add support for productionsites that are also supporting site to the AI.
One productionsite can now support multiple wares/productionsites.
- Allow resetting of teams via LUA during game
- Improved selection of which fields to build something on
- Improved identification of unconnectable regions based on walking algorithm.
Used to keep AI from wasting attempts to build something there.
- AI now splits and counts mineable fileds per resource/mine type and uses it
for decision making, ignoring inaccessible fields in the process
- When looking for the nearest buildable spot, the AI will accept mineable
fields also. This affects willingness to expand when there are no buildable
spots nearby, but some mines can be conquered by a new militarysite.
- AI now calculates military strength based on the actual init.lua files
rather than hard-coding the values. This also removes the tribe name
restriction for modders.
- When considering a quarry, the AI makes sure there is at least one rock in
the vicinity. Same for fishers and fish.
- Improved ship exploration decisions for AI.
- AI now considers whether possible sea direction leads to unknown territories
- AI also continues exploring when the last port is lost to prevent crashes.
- Since the AI can handle only 1 expedition at a time, any extra expeditions
are canceled
- Prohibit seafaring buildings for AI on non-seafaring maps. AI can still
handle ships and shipyards that already exist when a map does not allow
seafaring at the moment.
- AI now scans entire map for portspaces
- Fixed endless loop in DefaultAI::dispensable_road_test
- Added one well to the atlantean basic economy, as water is needed
for crucial spidercloth production
- Replaced logic_rand() with std::rand() in seafaring code of AI to fix
desyncs in network gaming
- Fixed bug #1724073: AI crashes when some AI slots are empty
Gameplay
- New Frisian tribe
- New "Village" starting condition
- New "Barracks" (casern) building for recruiting soldiers. Soldiers are no
longer created by warehouses. Production sites can now have workers as input
to consume.
- Started implementing new "Market" building with a Barbarian prototype.
Not functional yet.
- Balancing: Halved needed experience for Barbarian brewer and blacksmith
- Balancing: Buffed Barbarian and Empire soldiers
- Balancing: Added more trainers to headquarters at game start
- Balancing: Removed meat default target quantity for Barbarians and
Atlanteans
- Balancing: Lowered productivity threshold for lumberjacks to 60%.
- Balancing: Depleted Atlantean crystal (and iron) mines work slightly better
when depleted
- Balancing: Improvements to various production sites' logic
- The worker program "plant" no longer takes "tribe:" as a parameter;
immovables are now identified via their attributes only, and both world and
tribe immovables are searched. As a side effect, tribe immovables can now
have terrain affinity.
- Forester/Ranger now prefers good soil, and is thus more efficient
- Make the scout aware of nearby military sites. The scout now switches
between random walking and doing an excursion to enemy military sites
- When a Fish Breeder's fishing grounds are full, display a special tooltip
instead of sending an "Out of Resources" message
- When a warehouse is destroyed, the maximum number of fleeing units is now
limited to 500 per unit type
- Only cancel expedition if there is a reachable portdock. Show a warning
message to owner.
- Shifted ware hotspot definition from WorkerDescr to CarrierDescr
- Fixed a bug where higher-level workers wouldn't occupy lower-level workers'
working position slots in productionsites
- The port now conquers every location where its military influence is higher
than the influence of other players. This fixes a segfault when all
potential portdock fields are owned by another player, but there is a
portdock location available where the player owning the port has highest
influence.
- Fixed bug in collectors script where a broken message was sent after the
game ended
- Check for visibility of military buildings before permitting attack. This
solves a problem with impregnable castles.
- Improved algorithm for promotion and demotion of roads
- Removed hardcoding for resources
- New return value no_stats for work programs
- Tweaked production programs for shipyards
- Balancing: All Smelting Works, Furnaces, Smokeries, Recycling Center,
Atlantean and Frisian Toolsmithies, Taverns, Inns and Drinking Halls no
longer waste time if a ware is missing and they have to skip a program
- Balancing: Tweaked programs for Weapon/Armor producing buildings
- Balancing: Imperial Armor Smithy produces 1 more Helm per run to balance the
amount of armor types for training
- Balancing: Changed the order of programs in the Atlantean Toolsmithy
- Balancing: Gave the Barbarian Deep Gold Mine the same stats as the Deep Iron
Mine
- Increased the area where the map is recalculated after conquering by 1.
This prevents buildings from sitting between borders.
- Fixed heap-use-after-free in fleet while processing
EditorGameBase::cleanup_objects() when ship has already been deleted
- Allow return on dismantle values without buildcost
- Fix desyncs caused by floating point arithmetic in terrain affinity
- Reset economy serial in Game constructor. This fixes desyncs in replays.
- Stop ware dropoff when the target building has been destroyed. This fixes a
crash when the enemy conquers a militarysite near a warehouse.
- Cancel Worker::fetchfromflag when the building is destroyed/dismantled/
enhanced to prevent crashes
- Fixed bug #963799: shortsighted shipwright (ship in pond)
- Fixed bug #1611323: ships can be built in non-floating spaces (shipyard)
- Fixed bug #1636966: Segfault in battle
- Fixed bug #1637386: Militarysites warn about allies
- Fixed bug #1639444: Workers with wares inside ships can crash the game
- Fixed bug #1643209: No-cost workers are not removed correctly
- Fixed bug #1643284: Ships of a fleet can have the same name
- Fixed bug #1656671: Wares are not always transported to construction site
- Fixed bug #1658456: Imperials: Soldier target quantity not changeable
- Fixed bug #1749586: Fish breeder can't breed fish if the game is loaded
after all fish is caught
User Interface
- Maps can now be zoomed using the mouse wheel or keyboard keys: CTRL+, CTRL-
to in-/decrease, and CTRL+0 to reset. This also removes 0 as a possible
landmark number.
- All map transitions like jumping in messages and in the buildings menu are
now animated. New command line option "animate_map_panning".
- Moved smooth animation of cursor and MapView from Lua into C++. This fixes
the transitions in tutorials, which were broken when zoomed.
- Show census information on destroyed building with the former building's
name.
- Added supplementary warning to enhancement message for military sites.
- Fixed statistics label overlap. Ware statistics now update their plot range
correctly.
- Removed quick navigation with '.' and ','.
- The game summary window now restores the original desired speed when it's
closed.
- Productionsites no longer close their window when the stop/start button is
pressed.
- Minimized construction windows no longer get maximized when the construction
is finished.
- Window is no longer closed on enhance or dismantle.
- Let the user select multiple entries in a table using Ctrl/Shift + Click
(multiple/range selection) and Ctrl+A (select all) where appropriate.
- Implemented textual and pictorial dropdown menus. Dropdowns are used for win
condition and multiplayer tribe selection in the launch game screens.
- Fullscreen background images are now tiled rather than stretched.
- Stopped fullscreen toggle from flickering.
- The following menus now relayout themselves when fullscreen mode is toggled:
main, multiplayer, single player, about, map selection, options, load game,
save game.
- For multiplayer game setup, use dropdowns instead of buttons to select
player options
- Improved scrollbar and table header layout.
- Remove buttons from economy options window for spectators
- Improvements to StoryMessageBox, keyboard navigation and UI focusing
- Updating all ware priorities of a building when CTRL is pressed while
clicking
- Sorting IRC users behind the players in the lobby
- Replaced get_key_state with SDL_GetModState() to fix keyboard mappings.
- Actionconfirm now uses Box layout and resizes according to text size.
- Display loading times on the console while loading the tribes.
- Simplified the UI::Align enum and various alignment-related cleanup and
fixes.
- Replaced booleans in UI::Box::add() with enum classes for better readability
- Converted all text to new font renderer. Formatting functions for the new
renderer live in data/scripting/richtext.lua
- A more principled fix to dangling object pointers in the UI using Optr<>
- Building Statistics now only show relevant buildings
- Building Statistics now show "under construction" navigation for buildings
being enhanced
- Show in-game clock in release builds too
- In multiplayer games, scroll to starting position when a game is loaded
- New Ship Statistics window
- Bugfixes to multiplayer dropdowns
- Use Lua to define background and button styles
- Background images and colors are now defined in data/templates/default
- Combine common background graphics with color overlays
- Added StyleManager class to load and access backgrounds
- Downscale background images (e.g. campaign maps) on small screens
- New graphics for ui_fsmenu
- Darker background for wui elements
- Fixed keyboard navigation after "remove game" dialog has been displayed
- Modified row selection/display in tables and message list
- Remove focus from editbox in gamechatpanel when it minimizes
- Added tooltip to file save and make directory edit boxes if illegal filename
is being entered
- Added a checkbox to toggle filenames when loading a replay
- Fixed scenario title and tooltip during game setup
- Preselect player names and tribes for non-scenario maps in single player
mode
- Set AI from selection in UI when saveloading
- Missing wares (and workers) are indicated differently in InputQueueDisplays
if the ware is on the way to the building than if it's really missing
- Redesigned and fixed the showing of workarea overlays
- Tweaks for the multiplayer game setup screen: less empty spaces and more
space for important content
- Very large amounts in WaresDisplays are shortened as "10k", "10M", "10G" to
prevent text from flowing over on the left
- When dismantling a building, the building window closes automatically
- Added a dialog for the host when the connection to a client is lost. Allows
the host to select whether to replace the client with an AI or to exit.
- Setting focus to edit box when opening the game save menu
- Don't provide the filename for the standard background image in the progress
window. This fixes image positioning when starting multiplayer games.
- Make dismantle button independent of buildable/enhanced. This fixes missing
Dismantle buttons in Empire scenario 4.
- Improve formatting for user status in the lobby
- Allow hotkey usage while windows are open
- Fixed memory leak in network UI
- Fixed bug #1191295: Seafaring: builder not listed in expedition list in port
- Fixed bug #1635808: Display of worker in training sites is not updated.
- Fixed bug #1653254: Action window of Road stays open under some
circumstances
- Fixed bug #1653460: UI::Panel::get_inner_h() const: Assertion `tborder_ +
bborder_ <= h_' failed
- Fixed bug #1658489: Expedition tab in Port window messed up some times
- Fixed bug #1644553: Crash when buildhelp icon is clicked twice
- Fixed bug #1687043: Memory leak in Multilineeditbox
- Fixed bug #1695701: Crash when a militarysite window is open while the
enemy conquers it by sending a notification.
- Fixed bug #1672059: Selection is not cleared when new message arrives
- Fixed bug #1691336: Building window suddenly appears after construction has
finished
- Fixed bug #1658668: Menu Launch Game: Switching AI player on/off changes AI
setting
- Fixed bug #1656245: Scrolling with mousewheel is slow in some places
- Fixed bug #1769344: High processor load single player launch game screen
- Fixed bug #1785404: Chat does not autoscroll
- Fixed bug #1794063: Extra message arrival sound
- Fixed bug #1801208: Message boxes with long unbreakable strings show empty
Internationalization
- Removed building names from confirmation messages, as they cause grammar
problems in some languages.
- Production program descnames can now be fetched by pgettext as well as plain
gettext.
- Deleted unused networking messages and unified the "Something went wrong"
message.
- Added a Python script to do automated glossary checks for translations. It
enlists the help of Hunspell and 'misuses' the Transifex note field in order
to reduce noise.
- Implemented glossary generation for the Transifex glossary with help from
the Translate Toolkit (http://toolkit.translatehouse.org/).
- Show translation stats next to the language selection menu and invite
translators if a translation is incomplete, with the help of the Translate
Toolkit. New utils script "update_translation_stats.py" that will write
translation statistics to data/i18n/translation_stats.conf and is called
on every translation pull.
- Fixed various string issues and added some translators' comments
- Completed the switchover to the new font renderer
- Fixed translation of trainingsite program names
- Fix undefined / unexpected behavior in case LANG environment is empty
- Fix fetching of translations when user locale is set to C. If the desired
Widelands locale does not exist, try to fall back to en_US.utf8 to make
libintl happy.
- Adapted buildcat.py to get translations for resources
- Add an extra key to get a translatable author-value in the developers list
- Fixed bug #1636586: Inconsistent localization of player names in Editor
player menu
Help and Documentation
- Convert editor/game tips to Lua and display them in the in-editor/in-game
help. Added new tips.
- Restructured, enhanced and added to the Lua scripting reference for Tribes.
- Added/Improved documentation for animations, worker programs, worker
helptexts, AI hints, World units and the Richtext system
- Added immovables to in-game help
- Fixed some wrong indentation for the documentation in the website.
- Added toptopple sound documentation in .ods spreadsheet format (LibreCalc)
into 'doc' folder
- Fixed and improved documentation for LuaMapObjectDescription::get_type_name.
- More cross-linking between map object classes and their description objects.
- Fixed some miscellaneous bugs in the LuaMap documentation.
- Use mathjax for latex in docs instead of imgmath
- Enable building documentation with warnings as errors on Travis
- Constructionsites' help button now points to the help for the building being
built
- Documented metaserver command line options
- Added lua_path.cc to the documentation
- Add tribe-specific ware purpose texts to web encyclopedia
- Fixed bug #1792297: Advanced buildings report wrong worker experience in the
encyclopedia
Editor
- Overhauled the selection menu for critters to give them categories
- Added an option "items per row" and rearranged the terrains and immovables
- Display of bobs, immovables and resources can now be toggled individually
- Fixed drag and drop
- Removed dead code for make infrastructure tool that was never finished
- Fixed keyboard navigation with escape and enter for save map and save game
screens. If the editbox is focused, escape will reset the text if changed,
and close the window if unchanged.
- Refactored Editor Player Menu to use Box layout. Show dismissable warning if
more than 8 players are selected.
- Map Editors now can choose "Random" tribe in the player menu
- Converted editor infotool to new font renderer and added some layout tweaks
- Enable OK button in map options when tags have changed.
- Use temporary container in cleanup_port_spaces to prevent invalid iterators
- Limited the editor undo stack to 500 items to prevent boundless growth of
memory use
- Fixed bug #1627537: Release mouse button does not work when placing things
and mouse gets under a window
- Fixed bug #1738641: Resources can be replaced only once in editor
- Fixed bug #1749146: MultilineEditboxes: Entering text not possible
- Fixed bug #1736086: Saving a map with no player set shows up as having one
player:
- Initialize new maps with 0 players
- Disable selection of maps with 0 players
- Automatically add first player to editor player menu
- Fixed bug #1741779: Description is cut in map options multilineeditbox
- Fixed bug #1782593: Segfault in random map generator
- Fixed bug #1783878: Saved random map does segfault on load if no tribe is
explicitly set
- Fixed bug #1815613: Editor crash when setting new 0,0 coordinates
Graphics Engine
- Renamed "sub" tag to "div" in new font renderer.
- The new font renderer now sets the width properly and supports player color
for images. Added width property to img tag
- The new font renderer now creates a set of textures that will be blitted
separately by the new class RenderedText. This avoids issues with texture
sizes exceeding the maximum size supported by graphics drivers when
MultilineTextareas get arbitrarily long.
- Fixed incorrect layout of divs with width=fill when the previous div is
wider than 50%
- Fixed superfluous space characters at beginning and end of lines
- Implemented text floating around images
- Messages try to render with the new font renderer first, then fall back to
the old font renderer for layouting messages that haven't been converted yet
(and from savegames).
- All images with player color now receive their color by a common
playercolor_image function. Available player colors are kept in an array.
- Replaced raw pointers in the font renderer with shared_ptr
- Split graphics into multiple Cmake libraries.
- Got rid of EdgeOverlayManager and FieldOverlayManager and shifted their
functionality to local draw() functions in individual classes. Gave the
Interactive* classes their own draw() functions.
- Refactored Tcoords, Fcoords and TriangleIndex
- Force integer precision for overlays. This fixes fuzzy overlay images when
the player hits Ctrl+0 to reset the zoom.
- Show a basic SDL error message box to the user if the shading language
can't be detected or is too old.
- Print the shading language as double to console
- Fix shading language version detection for system locales that don't
use . as a decimal separator
- Fail with SDL messagebox if SDL_BYTESPERPIXEL != 4
- Fixed bug #1674243: Assign owners to neighbors in Player::rediscover_node.
The lack of owners was causing crashes with the road
program, which no longer knew which texture to pick.
- Fixed bug #1711816: Black terrains on fullscreen switch.
Networking
- Replaced SDL-Net with Boost.Asio
- Added IPv6 support
- Implemented a relay server. Opening a router port is no longer necessary
for the host of internet games
- Improved the online login code by adding semi-constant user ids that are
valid for 12 hours, allowing to reclaim a username after a disconnect
- Increasing password security by no longer storing and transmitting it in
plaintext
- Improvements to Metaserver protocol
- Fixed memory leak in LanGameFinder
- Fixes on the communication between widelands and the metaserver:
- Permit answering PING requests even while logging in
- Print current time to console when logging in
- Ease finding the corresponding log entry on the metaserver when debugging
- Re-enabled and fixed unused code for whisper message to nonexisting player
- Handle error message when trying to join a non-existing game
- Avoid hanging client even after being notified about the non-existing game
- Removed no longer needed error messages
- Fix crash in NetClient when host changes their mind about a custom map in
mid-transfer
- Fixed bug #1691335: Multiplayer client crashes when the host hasn't selected
a map yet
- Fixed bug #1794339: Segfault joining game
- Fixed bug #1805325: Crash on late joins of LAN games, and display of map
name in LAN lobby.
Build System
- Windows builds now have a unique app id for every build. This allows
parallel installation of several versions.
- Added support for gcc7 and llvm8.
- Removed "redundant-decls" flag for Windows builds due to conflict between
SDL and MinGW.
- New Macro FALLS_THROUGH; for use in switch statements.
- Let Travis build each commit on MacOS in addition to our Linux builds. Note
that the regression test suite is only run for Linux.
- Allow compiling with AddressSanitizer, and choosing between gcc and clang on
the first compile.
- Deactivated the rich text testing project, as it's currently unmaintained.
- Move website related binaries to base dir in compile.sh
- Do not build website tools on appveyor, this saves 20 minutes on x64 debug
builds
- Check for minor version of CMake
- Only export ICU_ROOT if CMake version is lower than 3.12
- Support for glbinding 3 and new Boost version
- Fix revision detection
- Fixes for handling different Cmake policies
- Use MacOSX.sdk if an appropriate versioned SDK can't be found.
- Add linker flags to please Ubuntu 18.10
- Use more processing units when using the compile script. Defaults to: max.
Processors -1. Can be set with the -j switch.
- Copy the version file instead of moving it, so that the update script can be
run twice in a row.
- Use compile.sh when running update.sh
- Added tags for Flatpak to appdata.xml
- Modernized how Mac OS X releases are done:
- Add CFBundleShortVersionString to Mac builds
- The script for building on macOS uses gcc-7 now. Also it checks whether
the SDK10.7 is installed or not and uses the latest installed version if
it cannot find the old one.
- Choose between compiler clang or gcc, specify build type: debug or release
- Set build target to 10.9 if macOS 10.9 or newer is found
- Append macOS target version to dmg filename
- Fix the dependency fixer to not be confused by library id's
- Fixes for Debian-based software centers:
- Add stock icon to appdata.xml
(c.f. https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=857644)
- Change icon definition in .desktop to be a generic one
- Content ratings are now accepted by the validator, so we've activated them
- Validate .desktop file on translation updates. Removed deprecated category
from .desktop file.
Other Issues
- Moved utils/fix_lua_tabs.py to utils/fix_formatting.py and added calls to
clang-format and pyformat.
- Cleaned up Windows utils
- Removed unused images
- Fixed a series of compiler warnings for clang, gcc and Windows.
- The ProductionSiteDescr constructor still contained some checks from the
time when they used to inherit from MilitarysiteDescr. Removed this obsolete
code and made working_positions and programs mandatory.
- Used the Notification system to reduce some code interdependency.
- Various code cleanups to make the code more readable.
- Fixed diverse crashes and memory leaks with the help of AddressSanitizer
- Diverse refactorings to use composition over inheritance and to get rid of
multiple inheritance
- Replaced SyncCallback through a std::function<void()>.
- More widespread use of smart pointers
- Untangled MapView and InteractiveBase.
- Cleaned up map handling in EditorGameBase
- Removed some dead code and reduced dependency cycles
- Options screen now saves immediately so that the changes are persistent even
if Widelands crashes afterwards.
- Added 2 new functions to Lua interface: list_directory and is_directory
- Split new function cleanup_portspaces() from allows_seafaring(), and
refactored port spaces checks.
- Only recalculate whether a map allows seafaring when something has changed
- Economies are now mapped to global serials and kept as unique_ptr in the
Player objects
- Exit gracefully if user specifies a datadir that doesn't exist
- More strict sanitizing of chat messages
- Print a welcome message on joining the metaserver
- Write Windows log output to homedir instead of the program dir
- Widelands is now installed into local appdata on Windows
- Copy translation validation results into maintainers' and translators' views
to make them easier for translators to navigate
- Use std::cout for logging when calling terminate on shutdown, because the
logger might not exist any more
- Remove test logging output from production_program.cc
- Use internal names rather than descnames for log messages and workarea IDs
- Refactor website binaries to use a real tree data structure for writing JSON
- Print more information in syncstreams. Create additional smaller syncstream
files containing the last few seconds leading to a desync.
- Added a suppressions file for Valgrind to mask memory errors caused by
backend libraries
- Fixed bug #1648178: Fatal Exception: Bad Cast
- Fixed bug #1743086: ASAN memcopy overlap on Ubuntu Budgie from libSDL
2.0.6+dfsg1 by disabling sound as a workaround to a bug
in the backend
- Fixed bug #1724145: Crashes in master-2511_release_x64 on save, caused by
economy merges making Lua variables go nil
- Fixed bug #1776603: ASAN: wl_map_object_info leaks memory