CINXE.COM

[mod] Adding support to replay old saves (1.4-1.12 1v1) in BFW1.14 and 1.16 - Page 3 - The Battle for Wesnoth Forums

<!DOCTYPE html> <html dir="ltr" lang="en-gb"> <head> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>[mod] Adding support to replay old saves (1.4-1.12 1v1) in BFW1.14 and 1.16 - Page 3 - The Battle for Wesnoth Forums</title> <link rel="alternate" type="application/atom+xml" title="Feed - The Battle for Wesnoth Forums" href="/app.php/feed?sid=5155657fd9ceb847150c23cd350c2ac6"> <link rel="alternate" type="application/atom+xml" title="Feed - News" href="/app.php/feed/news?sid=5155657fd9ceb847150c23cd350c2ac6"> <link rel="alternate" type="application/atom+xml" title="Feed - All forums" href="/app.php/feed/forums?sid=5155657fd9ceb847150c23cd350c2ac6"> <link rel="alternate" type="application/atom+xml" title="Feed - New Topics" href="/app.php/feed/topics?sid=5155657fd9ceb847150c23cd350c2ac6"> <link rel="alternate" type="application/atom+xml" title="Feed - Forum - Coder’s Corner" href="/app.php/feed/forum/10?sid=5155657fd9ceb847150c23cd350c2ac6"> <link rel="alternate" type="application/atom+xml" title="Feed - Topic - [mod] Adding support to replay old saves (1.4-1.12 1v1) in BFW1.14 and 1.16" href="/app.php/feed/topic/53824?sid=5155657fd9ceb847150c23cd350c2ac6"> <link rel="canonical" href="https://forums.wesnoth.org/viewtopic.php?t=53824&amp;start=30"> <!-- phpBB style name: prosilver Special Edition Based on style: prosilver (this is the default phpBB3 style) Original author: Tom Beddard ( http://www.subBlue.com/ ) Modified by: phpBB Limited ( https://www.phpbb.com/ ) --> <link href="./styles/prosilver/theme/normalize.css?assets_version=264" rel="stylesheet"> <link href="./styles/prosilver/theme/base.css?assets_version=264" rel="stylesheet"> <link href="./styles/prosilver/theme/utilities.css?assets_version=264" rel="stylesheet"> <link href="./styles/prosilver/theme/common.css?assets_version=264" rel="stylesheet"> <link href="./styles/prosilver/theme/links.css?assets_version=264" rel="stylesheet"> <link href="./styles/prosilver/theme/content.css?assets_version=264" rel="stylesheet"> <link href="./styles/prosilver/theme/buttons.css?assets_version=264" rel="stylesheet"> <link href="./styles/prosilver/theme/cp.css?assets_version=264" rel="stylesheet"> <link href="./styles/prosilver/theme/forms.css?assets_version=264" rel="stylesheet"> <link href="./styles/prosilver/theme/icons.css?assets_version=264" rel="stylesheet"> <link href="./styles/prosilver/theme/colours.css?assets_version=264" rel="stylesheet"> <link href="./styles/prosilver/theme/responsive.css?assets_version=264" rel="stylesheet"> <link href="./assets/css/font-awesome.min.css?assets_version=264" rel="stylesheet"> <link href="./styles/prosilver_se/theme/stylesheet.css?assets_version=264" rel="stylesheet"> <link href="./styles/prosilver/theme/en/stylesheet.css?assets_version=264" rel="stylesheet"> <link href="./assets/cookieconsent/cookieconsent.min.css?assets_version=264" rel="stylesheet"> <!--[if lte IE 9]> <link href="./styles/prosilver/theme/tweaks.css?assets_version=264" rel="stylesheet"> <![endif]--> <link rel="apple-touch-icon" type="image/png" href="https://www.wesnoth.org/wesmere/img/apple-touch-icon.png" sizes="180x180" /> <link rel="icon" type="image/png" href="https://www.wesnoth.org/wesmere/img/favicon-32.png" sizes="32x32" /> <link rel="icon" type="image/png" href="https://www.wesnoth.org/wesmere/img/favicon-16.png" sizes="16x16" /> <meta name="theme-color" content="#0f1421" /> <link href="https://www.wesnoth.org/wesmere/css/forums-1.2.0.css" rel="stylesheet" type="text/css" /> <style> /* * phpBB overrides */ #page-header > .headerbar { display: none!important; } body { padding-top: 0; } /*.search-header { margin-top: 0; margin-right: 0; box-shadow: 0 0 2px #0075B0; }*/ </style> </head> <body id="phpbb" class="nojs notouch section-viewtopic ltr "> <div id="wesmere-embed"> <div id="nav" role="banner"> <div class="centerbox"> <div id="logo"> <a href="https://www.wesnoth.org/" aria-label="Wesnoth logo"></a> </div> <ul id="navlinks" role="navigation"> <li><a href="https://www.wesnoth.org/">Home</a></li> <li><a href="https://forums.wesnoth.org/viewforum.php?f=62">News</a></li> <li><a href="https://wiki.wesnoth.org/Play">Play</a></li> <li><a href="https://wiki.wesnoth.org/Create">Create</a></li> <li><a href="https://forums.wesnoth.org/">Forums</a></li> <li><a href="https://wiki.wesnoth.org/Project">About</a></li> </ul> <div id="sitesearch" role="search"> <form method="get" action="./search.php?sid=5155657fd9ceb847150c23cd350c2ac6"> <input id="searchbox" class="has-advanced-search" type="search" name="keywords" placeholder="Search" title="Search these forums [Alt+Shift+f]" accesskey="f" /> <span id="searchbox-controls"> <button id="search-go" class="search-button" type="submit" title="Search"> <i class="fa fa-fw fa-search search-icon" aria-hidden="true"></i> <span class="sr-label">Search</span> </button> <a id="search-opts" class="search-button" href="./search.php?sid=5155657fd9ceb847150c23cd350c2ac6" title="Advanced search"> <i class="fa fa-fw fa-cog advsearch-icon" aria-hidden="true"></i> <span class="sr-label">Advanced search</span> </a> </span> </form> </div> <div class="reset"></div> </div> </div> </div> <div id="content"> <div id="wrap" class="wrap"> <a id="top" class="top-anchor" accesskey="t"></a> <div id="page-header"> <div class="headerbar" role="banner"> <div class="inner"> <div id="site-description" class="site-description"> <a id="logo" class="logo" href="./index.php?sid=5155657fd9ceb847150c23cd350c2ac6" title="Forums"> <span class="site_logo"></span> </a> <h1>The Battle for Wesnoth Forums</h1> <p>The official forums for The Battle for Wesnoth.</p> <p class="skiplink"><a href="#start_here">Skip to content</a></p> </div> <div id="search-box" class="search-box search-header" role="search"> <form action="./search.php?sid=5155657fd9ceb847150c23cd350c2ac6" method="get" id="search"> <fieldset> <input name="keywords" id="keywords" type="search" maxlength="128" title="Search for keywords" class="inputbox search tiny" size="20" value="" placeholder="Search…" /> <button class="button button-search" type="submit" title="Search"> <i class="icon fa-search fa-fw" aria-hidden="true"></i><span class="sr-only">Search</span> </button> <a href="./search.php?sid=5155657fd9ceb847150c23cd350c2ac6" class="button button-search-end" title="Advanced search"> <i class="icon fa-cog fa-fw" aria-hidden="true"></i><span class="sr-only">Advanced search</span> </a> <input type="hidden" name="sid" value="5155657fd9ceb847150c23cd350c2ac6" /> </fieldset> </form> </div> </div> </div> <div class="navbar" role="navigation"> <div class="inner"> <ul id="nav-main" class="nav-main linklist" role="menubar"> <li id="quick-links" class="quick-links dropdown-container responsive-menu" data-skip-responsive="true"> <a href="#" class="dropdown-trigger"> <i class="icon fa-bars fa-fw" aria-hidden="true"></i><span>Quick links</span> </a> <div class="dropdown"> <div class="pointer"><div class="pointer-inner"></div></div> <ul class="dropdown-contents" role="menu"> <li class="separator"></li> <li> <a href="./search.php?search_id=unanswered&amp;sid=5155657fd9ceb847150c23cd350c2ac6" role="menuitem"> <i class="icon fa-file-o fa-fw icon-gray" aria-hidden="true"></i><span>Unanswered topics</span> </a> </li> <li> <a href="./search.php?search_id=active_topics&amp;sid=5155657fd9ceb847150c23cd350c2ac6" role="menuitem"> <i class="icon fa-file-o fa-fw icon-blue" aria-hidden="true"></i><span>Active topics</span> </a> </li> <li class="separator"></li> <li> <a href="./search.php?sid=5155657fd9ceb847150c23cd350c2ac6" role="menuitem"> <i class="icon fa-search fa-fw" aria-hidden="true"></i><span>Search</span> </a> </li> <li class="separator"></li> </ul> </div> </li> <li data-skip-responsive="true"> <a href="/app.php/help/faq?sid=5155657fd9ceb847150c23cd350c2ac6" rel="help" title="Frequently Asked Questions" role="menuitem"> <i class="icon fa-question-circle fa-fw" aria-hidden="true"></i><span>FAQ</span> </a> </li> <li data-last-responsive="true"> <a href="https://forums.wesnoth.org/viewtopic.php?t=24277&amp;sid=5155657fd9ceb847150c23cd350c2ac6" rel="help" title="View the Community Guidelines" role="menuitem"> <i class="icon fa-book fa-fw" aria-hidden="true"></i><span>Community Guidelines</span> </a> </li> <li class="rightside" data-skip-responsive="true"> <a href="./ucp.php?mode=login&amp;redirect=viewtopic.php%3Fp%3D685307&amp;sid=5155657fd9ceb847150c23cd350c2ac6" title="Login" accesskey="x" role="menuitem"> <i class="icon fa-power-off fa-fw" aria-hidden="true"></i><span>Login</span> </a> </li> <li class="rightside" data-skip-responsive="true"> <a href="./ucp.php?mode=register&amp;sid=5155657fd9ceb847150c23cd350c2ac6" role="menuitem"> <i class="icon fa-pencil-square-o fa-fw" aria-hidden="true"></i><span>Register</span> </a> </li> </ul> <ul id="nav-breadcrumbs" class="nav-breadcrumbs linklist navlinks" role="menubar"> <li class="breadcrumbs" itemscope itemtype="https://schema.org/BreadcrumbList"> <span class="crumb" itemtype="https://schema.org/ListItem" itemprop="itemListElement" itemscope><a itemprop="item" href="./index.php?sid=5155657fd9ceb847150c23cd350c2ac6" accesskey="h" data-navbar-reference="index"><i class="icon fa-home fa-fw"></i><span itemprop="name">Forums</span></a><meta itemprop="position" content="1" /></span> <span class="crumb" itemtype="https://schema.org/ListItem" itemprop="itemListElement" itemscope data-forum-id="26"><a itemprop="item" href="./viewforum.php?f=26&amp;sid=5155657fd9ceb847150c23cd350c2ac6"><span itemprop="name">Development</span></a><meta itemprop="position" content="2" /></span> <span class="crumb" itemtype="https://schema.org/ListItem" itemprop="itemListElement" itemscope data-forum-id="10"><a itemprop="item" href="./viewforum.php?f=10&amp;sid=5155657fd9ceb847150c23cd350c2ac6"><span itemprop="name">Coder’s Corner</span></a><meta itemprop="position" content="3" /></span> </li> <li class="rightside responsive-search"> <a href="./search.php?sid=5155657fd9ceb847150c23cd350c2ac6" title="View the advanced search options" role="menuitem"> <i class="icon fa-search fa-fw" aria-hidden="true"></i><span class="sr-only">Search</span> </a> </li> </ul> </div> </div> </div> <a id="start_here" class="anchor"></a> <div id="page-body" class="page-body" role="main"> <h2 class="topic-title"><a href="./viewtopic.php?t=53824&amp;start=30&amp;sid=5155657fd9ceb847150c23cd350c2ac6">[mod] Adding support to replay old saves (1.4-1.12 1v1) in BFW1.14 and 1.16</a></h2> <!-- NOTE: remove the style="display: none" when you want to have the forum description on the topic body --> <div style="display: none !important;">Discussion of all aspects of the game engine, including development of new and existing features.<br /></div> <p> <strong>Moderator:</strong> <a style="color:#008000;" href="./memberlist.php?mode=group&amp;g=6643&amp;sid=5155657fd9ceb847150c23cd350c2ac6">Forum Moderators</a> </p> <div class="action-bar bar-top"> <a href="./posting.php?mode=reply&amp;t=53824&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="button" title="Post a reply"> <span>Post Reply</span> <i class="icon fa-reply fa-fw" aria-hidden="true"></i> </a> <div class="search-box" role="search"> <form method="get" id="topic-search" action="./search.php?sid=5155657fd9ceb847150c23cd350c2ac6"> <fieldset> <input class="inputbox search tiny" type="search" name="keywords" id="search_keywords" size="20" placeholder="Search this topic…" /> <button class="button button-search" type="submit" title="Search"> <i class="icon fa-search fa-fw" aria-hidden="true"></i><span class="sr-only">Search</span> </button> <a href="./search.php?sid=5155657fd9ceb847150c23cd350c2ac6" class="button button-search-end" title="Advanced search"> <i class="icon fa-cog fa-fw" aria-hidden="true"></i><span class="sr-only">Advanced search</span> </a> <input type="hidden" name="t" value="53824" /> <input type="hidden" name="sf" value="msgonly" /> <input type="hidden" name="sid" value="5155657fd9ceb847150c23cd350c2ac6" /> </fieldset> </form> </div> <div class="pagination"> 39 posts <ul> <li class="arrow previous"><a class="button button-icon-only" href="./viewtopic.php?t=53824&amp;sid=5155657fd9ceb847150c23cd350c2ac6&amp;start=15" rel="prev" role="button"><i class="icon fa-chevron-left fa-fw" aria-hidden="true"></i><span class="sr-only">Previous</span></a></li> <li><a class="button" href="./viewtopic.php?t=53824&amp;sid=5155657fd9ceb847150c23cd350c2ac6" role="button">1</a></li> <li><a class="button" href="./viewtopic.php?t=53824&amp;sid=5155657fd9ceb847150c23cd350c2ac6&amp;start=15" role="button">2</a></li> <li class="active"><span>3</span></li> </ul> </div> </div> <div id="p668607" class="post has-profile bg2"> <div class="inner"> <dl class="postprofile" id="profile668607"> <dt class="no-profile-rank has-avatar"> <div class="avatar-container"> <a href="./memberlist.php?mode=viewprofile&amp;u=219741&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="avatar"><img src="//secure.gravatar.com/avatar/f5f7b5b83330e07f530e15906f8082dc?s=100" width="100" height="100" alt="User avatar" /></a> </div> <a href="./memberlist.php?mode=viewprofile&amp;u=219741&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="username">egallager</a> </dt> <dd class="profile-posts"><strong>Posts:</strong> <a href="./search.php?author_id=219741&amp;sr=posts&amp;sid=5155657fd9ceb847150c23cd350c2ac6">632</a></dd> <dd class="profile-joined"><strong>Joined:</strong> November 19th, 2020, 7:27 pm</dd> <dd class="profile-custom-field profile-phpbb_location"><strong>Location:</strong> Concord, New Hampshire</dd> <dd class="profile-contact"> <strong>Contact:</strong> <div class="dropdown-container dropdown-left"> <a href="#" class="dropdown-trigger" title="Contact egallager"> <i class="icon fa-commenting-o fa-fw icon-lg" aria-hidden="true"></i><span class="sr-only">Contact egallager</span> </a> <div class="dropdown"> <div class="pointer"><div class="pointer-inner"></div></div> <div class="dropdown-contents contact-icons"> <div> <a href="http://twitter.com/cooljeanius" title="Twitter"> <span class="contact-icon phpbb_twitter-icon">Twitter</span> </a> <a href="https://www.youtube.com/channel/UCtE_V52yy8_4j5ld_0UHHdw" title="YouTube" class="last-cell"> <span class="contact-icon phpbb_youtube-icon">YouTube</span> </a> </div> </div> </div> </div> </dd> </dl> <div class="postbody"> <div id="post_content668607"> <h3 class="first"> <a href="./viewtopic.php?p=668607&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p668607">Re: Adding support to replay 1.14 saves in BFW1.16</a> </h3> <ul class="post-buttons"> <li> <a href="./posting.php?mode=quote&amp;p=668607&amp;sid=5155657fd9ceb847150c23cd350c2ac6" title="Reply with quote" class="button button-icon-only"> <i class="icon fa-quote-left fa-fw" aria-hidden="true"></i><span class="sr-only">Quote</span> </a> </li> </ul> <p class="author"> <a class="unread" href="./viewtopic.php?p=668607&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p668607" title="Post"> <i class="icon fa-file fa-fw icon-lightgray icon-md" aria-hidden="true"></i><span class="sr-only">Post</span> </a> <span class="responsive-hide">by <strong><a href="./memberlist.php?mode=viewprofile&amp;u=219741&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="username">egallager</a></strong> &raquo; </span><time datetime="2021-10-28T04:51:35+00:00">October 28th, 2021, 4:51 am</time> </p> <div class="content"><blockquote cite="./viewtopic.php?p=668592&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p668592"><div><cite><a href="./memberlist.php?mode=viewprofile&amp;u=185535&amp;sid=5155657fd9ceb847150c23cd350c2ac6">demario</a> wrote: <a href="./viewtopic.php?p=668592&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p668592" data-post-id="668592" onclick="if(document.getElementById(hash.substr(1)))href=hash">↑</a><span class="responsive-hide">October 27th, 2021, 10:40 am</span></cite> First version of the backward support for 1v1 replays in BFW1.16. It is still quite an early release (it has been tested on about 30 saves).<br> <br> I cut the following corners for this release: <ul><li>commented the whole checksum on recruit in the code (src/synced_checkup.cpp) as I didn't find a way to disable it by modifying save content.</li></ul> <ul><li>I kept the 1.14 unit types under data/core (instead of a standalone add-on) as the cpp kind of expect the unit definition to be present (maybe there is a way to check the presence of the add-on in the code, but I haven't look at it)</li></ul> <ul><li>no support for ladder era</li></ul> <ul><li>no support for dunefolk</li></ul> <ul><li>known issue: differences between version on <a href="https://forums.wesnoth.org/viewtopic.php?p=668590#p668590" class="postlink">intelligent trait</a></li></ul> The good news is that the RNG hasn't changed at all (assuming the intelligent trait is not RNG related) and no old RNG is needed. The consequence is that you can replay 1.14 saves and play 1.16 games without limitations. </div></blockquote> Hi, could you submit this patch as a pull request on GitHub and then iterate on it there? It would be great to get this merged so that everyone can benefit from it.</div> <div id="sig668607" class="signature">Wesnoth-related GitHub repos:<br> <a href="https://github.com/cooljeanius/wesnoth_mods" class="postlink">General mods collection</a>, <a href="https://github.com/cooljeanius/Son_Of_The_Black_Eye_Easy_Edition" class="postlink"><acronym title="Son of the Black Eye Easy Edition">SotBEEE</acronym></a>, <a href="https://github.com/cooljeanius/Two_Brothers_With_A_Third_Difficulty" class="postlink"><acronym title="A Tale of Two Brothers With a Third Difficulty">AToTBWaTD</acronym></a>, <a href="https://github.com/cooljeanius/The_Earths_Gut" class="postlink">The Earth's Gut</a>, <a href="https://github.com/cooljeanius/A_Little_Adventure" class="postlink">A Little Adventure</a>, <a href="https://github.com/cooljeanius/Flight_Freedom" class="postlink"><acronym title="Flight to Freedom">FtF</acronym></a><br> Social media: Mastodon: <a href="https://social.treehouse.systems/@egallager" class="postlink">@egallager@treehouse.systems</a>, Steam: <a href="https://steamcommunity.com/id/egallager/" class="postlink">egallager</a></div> </div> </div> <div class="back2top"> <a href="#top" class="top" title="Top"> <i class="icon fa-chevron-circle-up fa-fw icon-gray" aria-hidden="true"></i> <span class="sr-only">Top</span> </a> </div> </div> </div> <div id="p668889" class="post has-profile bg1"> <div class="inner"> <dl class="postprofile" id="profile668889"> <dt class="no-profile-rank no-avatar"> <div class="avatar-container"> </div> <a href="./memberlist.php?mode=viewprofile&amp;u=185535&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="username">demario</a> </dt> <dd class="profile-posts"><strong>Posts:</strong> <a href="./search.php?author_id=185535&amp;sr=posts&amp;sid=5155657fd9ceb847150c23cd350c2ac6">133</a></dd> <dd class="profile-joined"><strong>Joined:</strong> July 3rd, 2019, 1:05 pm</dd> </dl> <div class="postbody"> <div id="post_content668889"> <h3 > <a href="./viewtopic.php?p=668889&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p668889">[mod] Adding support to replay 1.12-1.14 saves in BFW1.16</a> </h3> <ul class="post-buttons"> <li> <a href="./posting.php?mode=quote&amp;p=668889&amp;sid=5155657fd9ceb847150c23cd350c2ac6" title="Reply with quote" class="button button-icon-only"> <i class="icon fa-quote-left fa-fw" aria-hidden="true"></i><span class="sr-only">Quote</span> </a> </li> </ul> <p class="author"> <a class="unread" href="./viewtopic.php?p=668889&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p668889" title="Post"> <i class="icon fa-file fa-fw icon-lightgray icon-md" aria-hidden="true"></i><span class="sr-only">Post</span> </a> <span class="responsive-hide">by <strong><a href="./memberlist.php?mode=viewprofile&amp;u=185535&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="username">demario</a></strong> &raquo; </span><time datetime="2021-11-05T08:42:27+00:00">November 5th, 2021, 8:42 am</time> </p> <div class="content"><span style="text-decoration:line-through">Third Fifth</span> <a href="https://forums.wesnoth.org/viewtopic.php?p=669885#p669885" class="postlink">Sixth</a> version of the backward support for 1v1 replays in BFW1.16.<br> <br> I cut the following corners for this release: <ul><li>I still haven't worked out how to skip the recruit checksum</li></ul> <ul><li>no support for dunefolk</li></ul> I have decided to split the code in different patches, each one digging deeper in the changes required to the engine to support replaying old saves. You will have to apply the changes for the highest version first (working backward from 1.14)<br> <br> It is split in different bunches of changes: <ul><li><span style="text-decoration:underline">support 1.14:</span> <strong class="text-strong">[<a href="https://forums.wesnoth.org/download/file.php?mode=view&amp;id=91869" class="postlink">Updated</a> on Dec 12 to unitless rev 3]</strong> <ul><li>it could have been pretty straightforward (only unit stat changes) if not for the <a href="https://forums.wesnoth.org/viewtopic.php?p=668590#p668590" class="postlink">issue</a> of differences between version on intelligent trait. <span style="text-decoration:line-through">So it requires in the conversion to know the SPDE add-on era, launching the RNG, generating the random numbers to check for intelligent trait on new recruits to fix the xp rounding.</span><br> The fix for xp rounding is done by catching recruit and advancement events for the impacted units with intelligent trait.</li></ul> <ul><li>Good thing is that the RNG is unchanged from BFW1.16</li></ul> <ul><li>It also starts to <span style="text-decoration:line-through">rollback of context-free grammar</span> reduce the expected number of random numbers needed for names from gender-less races</li></ul> <ul><li>Support some specific save format from replay server</li></ul></li> </ul> <ul><li><span style="text-decoration:underline">support 1.14 Ladder era:</span> <strong class="text-strong">[<a href="https://forums.wesnoth.org/download/file.php?mode=view&amp;id=91870" class="postlink">Updated</a> on Dec 12 to unitless ladder rev 1]</strong> <ul><li>Support for Ladder era 0.1.1-0.1.17</li></ul></li> </ul> <ul><li><span style="text-decoration:underline">Support 1.12:</span> <strong class="text-strong">[Removed for now]</strong> <ul><li>it uses its own RNG and the memory of the desired engine version needs to be saved in a global variable (cause since BFW1.14, the RNG is not reset but is recreated from scratch for each new seed [and doesn't support any initialization data]).</li></ul> <ul><li>So a config file must be passed the first time using an RNG to select the right version (at this time the global variable is not reset when switching back to RNG 1.16).</li></ul> <ul><li>It also fixes the different numbers of random numbers required for nameless recruits. It starts getting fun in combination with plague attacks to create nameless walking corpses <img class="smilies" src="./images/smilies/icon_e_geek.gif" width="15" height="15" alt=":geek:" title="Geek"></li> </ul> <ul><li>It also completes the rollback of context-free grammar started in support 1.14 for names from gendered races</li></ul></li></ul> <ul><li><span style="text-decoration:underline">Support 1.8-1.10</span> <strong class="text-strong">[Removed for now]</strong> <ul><li>(1.10) this is the first version where in some cases, the random numbers cannot be recreated (seed is lost). Replaying them requires the [replay] to be loaded into the RNG and have the RNG read the numbers from a stack populated with this data rather than generating its own numbers (called simulation code)</li></ul> <ul><li>(1.10) the RNG simulation must be activated/disabled at the appropriate time</li></ul> <ul><li>(1.10) turn the seed back and forth from integer to hexa-decimal</li></ul> <ul><li>(1.10) maintain the leader's position to fill it into the recruit commands</li></ul> <ul><li>(1.10) fill the seed for recruit commands from the previous attack, maintain the number of random calls</li></ul> <ul><li>(1.10) also maintain the number of random calls when pre-recruited units are involved (statues, loyal in Hornshark Island)</li></ul> <ul><li>(1.10) address two <a href="https://forums.wesnoth.org/viewtopic.php?p=663027#p663027" class="postlink">other issues</a></li></ul> <ul><li>(1.10) fix the Rush By Yetis (early random map picker) specific settings</li></ul> <ul><li>(1.8 ) this version uses the same RNG as BFW1.10, with the only difference is that the random pool can be a negative number</li></ul> <ul><li>(1.8 ) fix the petrified units (statues in Sulla's Ruins, ...)</li></ul> <ul><li>(1.8 ) fix different terrain codes</li></ul> <ul><li>(1.8 ) fix the hp rounding difference with BFW1.10 when some units are strong/intelligent and quick</li></ul></li> </ul> <ul><li><span style="text-decoration:underline">Support 1.4-1.6</span> <ul><li>(1.6) the RNG at this step is much simpler and only one seed is used for the whole game</li></ul> <ul><li>(1.6) at the time, compatibility between RNG versions was already broken and a no-check mode supported dropping the actual numbers for those in the saves</li> </ul> <ul><li>(1.6) the WML for the [replay_start] is different from now (eg. the side leaders were not defined as [units]s)</li></ul> <ul><li>(1.6) the random numbers for traits were drawn after those for names</li></ul> <ul><li>(1.6) a random number was drawn even for gender-less units</li></ul> <ul><li>(1.6) one additional number was drawn for each unit</li></ul> <ul><li>(1.6) fix for <a href="https://forums.wesnoth.org/viewtopic.php?t=55274" class="postlink">this issue</a> on maps with controller=ai side (statues)</li></ul> <ul><li>(1.6) different behavior for healthy and feral traits</li></ul> <ul><li>(1.4) identical RNG</li></ul> <ul><li>(1.4) difference in rounding hitpoints for some units with quick trait</li></ul> <ul><li>(1.4) the format of the move command in replay is different</li></ul> <ul><li>(1.4) different behavior for healthy trait</li></ul> <ul><li>(1.4) different behavior for drains ability</li></ul> <ul><li>(1.6 and 1.4) <a href="https://forums.wesnoth.org/viewtopic.php?p=667321#p667321" class="postlink">two issues</a> are still unresolved</li></ul></li> </ul> Most unitless regressions should be fixed by now except known problem with Hornshark Island saves.</div> <div class="notice"> Last edited by <a href="./memberlist.php?mode=viewprofile&amp;u=185535&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="username">demario</a> on January 12th, 2022, 12:02 pm, edited 25 times in total. </div> <div id="sig668889" class="signature">"simply put, it's an old game"<a href="https://forums.wesnoth.org/viewtopic.php?p=544681#p544681" class="postlink"><span style="vertical-align:super">T</span></a> — Cackfiend</div> </div> </div> <div class="back2top"> <a href="#top" class="top" title="Top"> <i class="icon fa-chevron-circle-up fa-fw icon-gray" aria-hidden="true"></i> <span class="sr-only">Top</span> </a> </div> </div> </div> <div id="p668914" class="post has-profile bg2"> <div class="inner"> <dl class="postprofile" id="profile668914"> <dt class="no-profile-rank has-avatar"> <div class="avatar-container"> <a href="./memberlist.php?mode=viewprofile&amp;u=219741&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="avatar"><img src="//secure.gravatar.com/avatar/f5f7b5b83330e07f530e15906f8082dc?s=100" width="100" height="100" alt="User avatar" /></a> </div> <a href="./memberlist.php?mode=viewprofile&amp;u=219741&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="username">egallager</a> </dt> <dd class="profile-posts"><strong>Posts:</strong> <a href="./search.php?author_id=219741&amp;sr=posts&amp;sid=5155657fd9ceb847150c23cd350c2ac6">632</a></dd> <dd class="profile-joined"><strong>Joined:</strong> November 19th, 2020, 7:27 pm</dd> <dd class="profile-custom-field profile-phpbb_location"><strong>Location:</strong> Concord, New Hampshire</dd> <dd class="profile-contact"> <strong>Contact:</strong> <div class="dropdown-container dropdown-left"> <a href="#" class="dropdown-trigger" title="Contact egallager"> <i class="icon fa-commenting-o fa-fw icon-lg" aria-hidden="true"></i><span class="sr-only">Contact egallager</span> </a> <div class="dropdown"> <div class="pointer"><div class="pointer-inner"></div></div> <div class="dropdown-contents contact-icons"> <div> <a href="http://twitter.com/cooljeanius" title="Twitter"> <span class="contact-icon phpbb_twitter-icon">Twitter</span> </a> <a href="https://www.youtube.com/channel/UCtE_V52yy8_4j5ld_0UHHdw" title="YouTube" class="last-cell"> <span class="contact-icon phpbb_youtube-icon">YouTube</span> </a> </div> </div> </div> </div> </dd> </dl> <div class="postbody"> <div id="post_content668914"> <h3 > <a href="./viewtopic.php?p=668914&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p668914">Re: Adding support to replay 1.14 saves in BFW1.16</a> </h3> <ul class="post-buttons"> <li> <a href="./posting.php?mode=quote&amp;p=668914&amp;sid=5155657fd9ceb847150c23cd350c2ac6" title="Reply with quote" class="button button-icon-only"> <i class="icon fa-quote-left fa-fw" aria-hidden="true"></i><span class="sr-only">Quote</span> </a> </li> </ul> <p class="author"> <a class="unread" href="./viewtopic.php?p=668914&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p668914" title="Post"> <i class="icon fa-file fa-fw icon-lightgray icon-md" aria-hidden="true"></i><span class="sr-only">Post</span> </a> <span class="responsive-hide">by <strong><a href="./memberlist.php?mode=viewprofile&amp;u=219741&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="username">egallager</a></strong> &raquo; </span><time datetime="2021-11-06T07:04:38+00:00">November 6th, 2021, 7:04 am</time> </p> <div class="content"><blockquote cite="./viewtopic.php?p=668592&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p668592"><div><cite><a href="./memberlist.php?mode=viewprofile&amp;u=185535&amp;sid=5155657fd9ceb847150c23cd350c2ac6">demario</a> wrote: <a href="./viewtopic.php?p=668592&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p668592" data-post-id="668592" onclick="if(document.getElementById(hash.substr(1)))href=hash">↑</a><span class="responsive-hide">October 27th, 2021, 10:40 am</span></cite> First version of the backward support for 1v1 replays in BFW1.16.<br> <br> Known issue: differences between version on <a href="https://forums.wesnoth.org/viewtopic.php?p=668590#p668590" class="postlink">intelligent trait</a><br> <blockquote cite="./viewtopic.php?p=668607&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p668607"><div><cite><a href="./memberlist.php?mode=viewprofile&amp;u=219741&amp;sid=5155657fd9ceb847150c23cd350c2ac6">egallager</a> wrote: <a href="./viewtopic.php?p=668607&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p668607" data-post-id="668607" onclick="if(document.getElementById(hash.substr(1)))href=hash">↑</a><span class="responsive-hide">October 28th, 2021, 4:51 am</span></cite> Hi, could you submit this patch as a pull request on GitHub and then iterate on it there? </div></blockquote> Hi, this is a non-official mod to the engine for the wesnoth community so I would rather keep the development progress visible on the forum. </div></blockquote>I think it should become official though; the community would be able to benefit from it more if it were merged upstream and then shipped to everyone. Also I find checking out a pull request to be easier than applying patches. And you can always link back to the PR to keep it visible from here, as well.</div> <div id="sig668914" class="signature">Wesnoth-related GitHub repos:<br> <a href="https://github.com/cooljeanius/wesnoth_mods" class="postlink">General mods collection</a>, <a href="https://github.com/cooljeanius/Son_Of_The_Black_Eye_Easy_Edition" class="postlink"><acronym title="Son of the Black Eye Easy Edition">SotBEEE</acronym></a>, <a href="https://github.com/cooljeanius/Two_Brothers_With_A_Third_Difficulty" class="postlink"><acronym title="A Tale of Two Brothers With a Third Difficulty">AToTBWaTD</acronym></a>, <a href="https://github.com/cooljeanius/The_Earths_Gut" class="postlink">The Earth's Gut</a>, <a href="https://github.com/cooljeanius/A_Little_Adventure" class="postlink">A Little Adventure</a>, <a href="https://github.com/cooljeanius/Flight_Freedom" class="postlink"><acronym title="Flight to Freedom">FtF</acronym></a><br> Social media: Mastodon: <a href="https://social.treehouse.systems/@egallager" class="postlink">@egallager@treehouse.systems</a>, Steam: <a href="https://steamcommunity.com/id/egallager/" class="postlink">egallager</a></div> </div> </div> <div class="back2top"> <a href="#top" class="top" title="Top"> <i class="icon fa-chevron-circle-up fa-fw icon-gray" aria-hidden="true"></i> <span class="sr-only">Top</span> </a> </div> </div> </div> <div id="p669885" class="post has-profile bg1"> <div class="inner"> <dl class="postprofile" id="profile669885"> <dt class="no-profile-rank no-avatar"> <div class="avatar-container"> </div> <a href="./memberlist.php?mode=viewprofile&amp;u=185535&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="username">demario</a> </dt> <dd class="profile-posts"><strong>Posts:</strong> <a href="./search.php?author_id=185535&amp;sr=posts&amp;sid=5155657fd9ceb847150c23cd350c2ac6">133</a></dd> <dd class="profile-joined"><strong>Joined:</strong> July 3rd, 2019, 1:05 pm</dd> </dl> <div class="postbody"> <div id="post_content669885"> <h3 > <a href="./viewtopic.php?p=669885&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p669885">[mod] Adding support to replay 1.14 saves in BFW1.16</a> </h3> <ul class="post-buttons"> <li> <a href="./posting.php?mode=quote&amp;p=669885&amp;sid=5155657fd9ceb847150c23cd350c2ac6" title="Reply with quote" class="button button-icon-only"> <i class="icon fa-quote-left fa-fw" aria-hidden="true"></i><span class="sr-only">Quote</span> </a> </li> </ul> <p class="author"> <a class="unread" href="./viewtopic.php?p=669885&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p669885" title="Post"> <i class="icon fa-file fa-fw icon-lightgray icon-md" aria-hidden="true"></i><span class="sr-only">Post</span> </a> <span class="responsive-hide">by <strong><a href="./memberlist.php?mode=viewprofile&amp;u=185535&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="username">demario</a></strong> &raquo; </span><time datetime="2021-12-10T05:57:45+00:00">December 10th, 2021, 5:57 am</time> </p> <div class="content">New (and possibly last) iteration on support 1.14 replay in BFW1.16 in attachment.<br> <br> This version of the code (to apply on clean BFW1.16) doesn't require the SPDE add-on anymore.<br> Most of the changes are now done by WML in the events added to the era which mean no more additional unit types are created. That is why I label it the <em class="text-italics">unitless</em> era. This does reduce the risk of a slow down on the engine (which I never noticed) due to overhead in processing/storing/accessing more type definitions.<br> Second change is that the era is defined right inside the patch under a new <code class="inline-code">data/add-ons</code> sub-directory so that is doesn't mix with default macros but is always available when the modified code is used. There is no unit type definition under <code class="inline-code">data/add-ons/Support_Past_Default_Era_Unitless</code> for 1.14 support.<br> <br> <strong class="text-strong">[edit]</strong> New patch to replay ladder-1.14 saves in BFW1.16. All units changed in ladder era still have a ladder-1.14 specific type (as identified by their own unit type when saves were recorded)<strong class="text-strong">[/edit]</strong><br> <strong class="text-strong">[edit]</strong> <span style="text-decoration:underline">I removed the 1.8-1.10 and 1.12 unitless patches.</span> The reason is that this design is broken on the long term as I will try to explain below.<br> <br> The design of unitless support is to add WML [event]s to make <span style="text-decoration:underline">corrections</span> to original (ie. new version) unit stats as the units appears on the map.<br> The issue is that the [event]s are executed after some engine actions are already executed. For example, if you want to restore a couple of hitpoints to some unit type, the [event]s will be applied each time such a unit is recruited but after the unit has got its traits. So the correction will be applied to the hitpoints after traits are taken into account. For rounding reasons, for some trait combination the correction may be wrong and it needs to be corrected again.<br> <div style="margin:1.3em 0"><div><input type="button" value="▸" title="Expand section" style="font-weight:bold;font-size:1em;width:2em;margin:0;padding:0" onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].style.display = ''; this.title = 'Collapse section'; this.value = '▾'; this.innerText = ''; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; this.title = 'Expand section'; this.value = '▸'; this.innerText = ''; }"> <b>An example</b></div><div style="margin:2em;margin-top:5px;display:none">Troll Rocklobber changed from 49 to 51hp at version 1.16. So the <em class="text-italics">raw correction</em> would be to remove 2hp to restore 1.14 stats.<br> <br> If this Rocklobber is quick (-5% hp), applying this correction after the -5%hp reduction leads to 46hp while applying the -5%hp on original 49hp lead to 47hp.<br> So a <em class="text-italics">final correction</em> is required to add one hitpoint.</div></div> These final corrections depend on the hitpoints at the latest version and the amount of the corrections for older versions.<br> So that at each new version, any correction to support past versions could be possibly broken.<br> As I believe that the support for oldest versions should be unchanged with a new version (ie. we only need to add support for old stable version), the only solution is to go back to version specific unit types (where the hitpoints are set to an <span style="text-decoration:underline">absolute value</span>, not through a correction).<strong class="text-strong">[/edit]</strong><br> <br> You can either apply all the patches in order and compile once after they're applied (remember to run cmake), or you can apply the patch one by one with compilation after each patch (apply cmake+make at each step).<br> <br> The SPDE add-on is <span style="text-decoration:line-through">still on</span> removed from the add-on server, for use with the old patches please use backup in attachment.</div> <dl class="attachbox"> <dt> Attachments </dt> <dd> <dl class="file"> <dt><img src="./images/upload_icons/zip.gif" alt="" /> <a class="postlink" href="./download/file.php?id=92282&amp;sid=5155657fd9ceb847150c23cd350c2ac6">Support_Past_Default_Era.server-1.16.tar.gz</a></dt> <dd><em>The SPDE at time of removal from 1.16 add-on server</em></dd> <dd>(132 KiB) Downloaded 241 times</dd> </dl> </dd> </dl> <div class="notice"> Last edited by <a href="./memberlist.php?mode=viewprofile&amp;u=185535&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="username">demario</a> on January 23rd, 2022, 8:49 am, edited 1 time in total. </div> <div id="sig669885" class="signature">"simply put, it's an old game"<a href="https://forums.wesnoth.org/viewtopic.php?p=544681#p544681" class="postlink"><span style="vertical-align:super">T</span></a> — Cackfiend</div> </div> </div> <div class="back2top"> <a href="#top" class="top" title="Top"> <i class="icon fa-chevron-circle-up fa-fw icon-gray" aria-hidden="true"></i> <span class="sr-only">Top</span> </a> </div> </div> </div> <div id="p671096" class="post has-profile bg2"> <div class="inner"> <dl class="postprofile" id="profile671096"> <dt class="no-profile-rank no-avatar"> <div class="avatar-container"> </div> <a href="./memberlist.php?mode=viewprofile&amp;u=185535&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="username">demario</a> </dt> <dd class="profile-posts"><strong>Posts:</strong> <a href="./search.php?author_id=185535&amp;sr=posts&amp;sid=5155657fd9ceb847150c23cd350c2ac6">133</a></dd> <dd class="profile-joined"><strong>Joined:</strong> July 3rd, 2019, 1:05 pm</dd> </dl> <div class="postbody"> <div id="post_content671096"> <h3 > <a href="./viewtopic.php?p=671096&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p671096">[mod] Adding support to replay 1.4-1.14 saves in BFW1.16</a> </h3> <ul class="post-buttons"> <li> <a href="./posting.php?mode=quote&amp;p=671096&amp;sid=5155657fd9ceb847150c23cd350c2ac6" title="Reply with quote" class="button button-icon-only"> <i class="icon fa-quote-left fa-fw" aria-hidden="true"></i><span class="sr-only">Quote</span> </a> </li> </ul> <p class="author"> <a class="unread" href="./viewtopic.php?p=671096&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p671096" title="Post"> <i class="icon fa-file fa-fw icon-lightgray icon-md" aria-hidden="true"></i><span class="sr-only">Post</span> </a> <span class="responsive-hide">by <strong><a href="./memberlist.php?mode=viewprofile&amp;u=185535&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="username">demario</a></strong> &raquo; </span><time datetime="2022-01-23T08:37:52+00:00">January 23rd, 2022, 8:37 am</time> </p> <div class="content">After a year, it is time to put this to an end. Last version of the mod to support replay old saves in BFW1.16 (I used v1.16.1, cmake, gcc). Compilation on windows might be fixed.<br> <br> I finally decided to break the changes in two parts: <ul><li><span style="text-decoration:underline">support 1.14+ladder:</span> it supports replaying default era saves for 1v1 maps with "unitless" era. I am mixing the default-1.14 with ladder-1.14 given that at time of download/load, one might not know with which era the save is generated. Apply this patch first. There is no specific RNG to support this mode. The additional eras are created under <code class="inline-code">data/add-ons/Support_Past_Default_Era_Unitless</code> directory. The creation of this directory is not supported by the development team, so don't use this patch <img class="smilies" src="./images/smilies/icon_twisted.gif" width="15" height="15" alt=":twisted:" title="Twisted Evil"> .</li></ul> <ul><li><span style="text-decoration:underline">support 1.4-1.14:</span> it supports replaying default era saves for 1v1 maps with 6 version specific unit types (for each unit). There are 3 specific RNG to support this mode. Apply this patch second. The additional eras are created under <code class="inline-code">data/add-ons/Support_Past_Default_Era</code> directory. You don't need to download SPDE add-on to use this.<br> Be aware that after applying this patch: <ul><li>6 versions-specific eras will be listed, which is kind of annoying (sorry about that). So only apply this patch is you're actively looking for replaying 1.4 to 1.12 saves. Saves from 1.14 can be applied with first patch only.</li></ul> <ul><li>3 version specific RNG will be added and, as described in the <a href="https://forums.wesnoth.org/viewtopic.php?t=53824" class="postlink">opening post</a>, you have to close wesnoth between replay and play/obs</li></ul></li></ul> Cheers.</div> <dl class="attachbox"> <dt> Attachments </dt> <dd> <dl class="file"> <dt><img src="./images/upload_icons/zip.gif" alt="" /> <a class="postlink" href="./download/file.php?id=92421&amp;sid=5155657fd9ceb847150c23cd350c2ac6">BFW1.16.load_ladder1.14_replay_backward_support_UNITLESS-noSPDE.v5.diff.gz</a></dt> <dd><em>Replay 1.14+ladder in BFW1.16, use patch -p1 (apply first)</em></dd> <dd>(15.85 KiB) Downloaded 234 times</dd> </dl> </dd> <dd> <dl class="file"> <dt><img src="./images/upload_icons/zip.gif" alt="" /> <a class="postlink" href="./download/file.php?id=92280&amp;sid=5155657fd9ceb847150c23cd350c2ac6">BFW1.16.load_1.4_replay_backward_support-noSPDE.v1.diff.gz</a></dt> <dd><em>Replay 1.4-1.14 in BFW1.16, use patch -p1 (apply second)</em></dd> <dd>(98.18 KiB) Downloaded 230 times</dd> </dl> </dd> <dd> <dl class="file"> <dt><img src="./images/upload_icons/txt.gif" alt="" /> <a class="postlink" href="./download/file.php?id=92278&amp;sid=5155657fd9ceb847150c23cd350c2ac6">troubles-1.4.md</a></dt> <dd><em>Known troubles for replay 1.4-1.14</em></dd> <dd>(67.96 KiB) Downloaded 243 times</dd> </dl> </dd> </dl> <div class="notice"> Last edited by <a href="./memberlist.php?mode=viewprofile&amp;u=185535&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="username">demario</a> on November 27th, 2023, 9:14 pm, edited 1 time in total. </div> <div id="sig671096" class="signature">"simply put, it's an old game"<a href="https://forums.wesnoth.org/viewtopic.php?p=544681#p544681" class="postlink"><span style="vertical-align:super">T</span></a> — Cackfiend</div> </div> </div> <div class="back2top"> <a href="#top" class="top" title="Top"> <i class="icon fa-chevron-circle-up fa-fw icon-gray" aria-hidden="true"></i> <span class="sr-only">Top</span> </a> </div> </div> </div> <div id="p676147" class="post has-profile bg1"> <div class="inner"> <dl class="postprofile" id="profile676147"> <dt class="no-profile-rank no-avatar"> <div class="avatar-container"> </div> <a href="./memberlist.php?mode=viewprofile&amp;u=185535&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="username">demario</a> </dt> <dd class="profile-posts"><strong>Posts:</strong> <a href="./search.php?author_id=185535&amp;sr=posts&amp;sid=5155657fd9ceb847150c23cd350c2ac6">133</a></dd> <dd class="profile-joined"><strong>Joined:</strong> July 3rd, 2019, 1:05 pm</dd> </dl> <div class="postbody"> <div id="post_content676147"> <h3 > <a href="./viewtopic.php?p=676147&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p676147">Replaying 1.14 saves (1v1) using core in BFW 1.16</a> </h3> <ul class="post-buttons"> <li> <a href="./posting.php?mode=quote&amp;p=676147&amp;sid=5155657fd9ceb847150c23cd350c2ac6" title="Reply with quote" class="button button-icon-only"> <i class="icon fa-quote-left fa-fw" aria-hidden="true"></i><span class="sr-only">Quote</span> </a> </li> </ul> <p class="author"> <a class="unread" href="./viewtopic.php?p=676147&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p676147" title="Post"> <i class="icon fa-file fa-fw icon-lightgray icon-md" aria-hidden="true"></i><span class="sr-only">Post</span> </a> <span class="responsive-hide">by <strong><a href="./memberlist.php?mode=viewprofile&amp;u=185535&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="username">demario</a></strong> &raquo; </span><time datetime="2022-09-05T01:19:51+00:00">September 5th, 2022, 1:19 am</time> </p> <div class="content">Since I started <a href="https://forums.wesnoth.org/viewtopic.php?t=55693" class="postlink">looking into cores</a>, it was quite clear that it had the potential of making the support to replay old saves easier when possible.<br> <br> The support to replay of saves is based on units stats modification to reinstate the stats from the time the save was generated. The stats could be reverted either by loading old unit definitions (with suffixed id to avoid conflict with current default units) or by applying corrections to unit stats based on current default (UNITLESS model). The core is making it now possible to drop the current default units completely and start from scratch. We can just copy the old unit definitions with original ids into the core and we are good to go.<br> <br> Beside using the correct stats, support for old replays also requires injection of code to tweak the engine behavior to match the old behavior. This injection of code defined in a core is not done in the mainline replay function and the code in attachment is implementing it. This is an alternative way to support old replay to the current convert_old_saves() defined in mainline.</div> <div class="notice"> Last edited by <a href="./memberlist.php?mode=viewprofile&amp;u=185535&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="username">demario</a> on November 27th, 2023, 9:19 pm, edited 2 times in total. </div> <div id="sig676147" class="signature">"simply put, it's an old game"<a href="https://forums.wesnoth.org/viewtopic.php?p=544681#p544681" class="postlink"><span style="vertical-align:super">T</span></a> — Cackfiend</div> </div> </div> <div class="back2top"> <a href="#top" class="top" title="Top"> <i class="icon fa-chevron-circle-up fa-fw icon-gray" aria-hidden="true"></i> <span class="sr-only">Top</span> </a> </div> </div> </div> <div id="p676463" class="post has-profile bg2"> <div class="inner"> <dl class="postprofile" id="profile676463"> <dt class="no-profile-rank no-avatar"> <div class="avatar-container"> </div> <a href="./memberlist.php?mode=viewprofile&amp;u=185535&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="username">demario</a> </dt> <dd class="profile-posts"><strong>Posts:</strong> <a href="./search.php?author_id=185535&amp;sr=posts&amp;sid=5155657fd9ceb847150c23cd350c2ac6">133</a></dd> <dd class="profile-joined"><strong>Joined:</strong> July 3rd, 2019, 1:05 pm</dd> </dl> <div class="postbody"> <div id="post_content676463"> <h3 > <a href="./viewtopic.php?p=676463&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p676463">[mod] Replaying 1.14 saves (WCII) using core in BFW 1.16</a> </h3> <ul class="post-buttons"> <li> <a href="./posting.php?mode=quote&amp;p=676463&amp;sid=5155657fd9ceb847150c23cd350c2ac6" title="Reply with quote" class="button button-icon-only"> <i class="icon fa-quote-left fa-fw" aria-hidden="true"></i><span class="sr-only">Quote</span> </a> </li> </ul> <p class="author"> <a class="unread" href="./viewtopic.php?p=676463&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p676463" title="Post"> <i class="icon fa-file fa-fw icon-lightgray icon-md" aria-hidden="true"></i><span class="sr-only">Post</span> </a> <span class="responsive-hide">by <strong><a href="./memberlist.php?mode=viewprofile&amp;u=185535&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="username">demario</a></strong> &raquo; </span><time datetime="2022-09-26T11:03:13+00:00">September 26th, 2022, 11:03 am</time> </p> <div class="content"><blockquote cite="./viewtopic.php?p=676147&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p676147"><div><cite><a href="./memberlist.php?mode=viewprofile&amp;u=185535&amp;sid=5155657fd9ceb847150c23cd350c2ac6">demario</a> wrote: <a href="./viewtopic.php?p=676147&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p676147" data-post-id="676147" onclick="if(document.getElementById(hash.substr(1)))href=hash">↑</a><span class="responsive-hide">September 5th, 2022, 1:19 am</span></cite> The core is making it now possible to drop the current default units completely and start from scratch. We can just copy the old unit definitions with original ids into the core.</div></blockquote> The benefit of using core to support old version is twofold: <ul><li>as we don't have suffixes to unit id, there is no need to go through all the WML/lua code from the era or the scenario to look for place where unit ids are used to append a suffix;</li></ul> <ul><li>as the engine correction events are defined in the core instead of inside an era (unlike the UNITLESS model), the corrections apply to all eras.</li></ul> <br> As an illustration, here is a version of the patch to apply to the engine to support replaying 1.14 World Conquest 2 saves in BFW 1.16.<br> Most of the additional changes done in the core is to support reverting changes to 1.16 Dunefolk units (and liminal alignment).<br> <div style="margin:1.3em 0"><div><input type="button" value="▸" title="Expand section" style="font-weight:bold;font-size:1em;width:2em;margin:0;padding:0" onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].style.display = ''; this.title = 'Collapse section'; this.value = '▾'; this.innerText = ''; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; this.title = 'Expand section'; this.value = '▸'; this.innerText = ''; }"> <b>To use this solution you have to:</b></div><div style="margin:2em;margin-top:5px;display:none"> <ul><li>apply the patch in attachment on a pristine version of BFW 1.16;</li></ul> <ul><li>compile the code;</li></ul> <ul><li>go to the add-on server and download "<code>Support 1.10-1.14 cores</code>" (minimum version <strong class="text-strong">0.10.x</strong>). See in the description how to define the hotkey;</li></ul> <ul><li>press CTRL+SHIFT+k to select the "<code>Bienvenue</code>" core for 1.14 support;<br> <br> <strong class="text-strong">[NB:</strong> The "<code>Reign of the Lords</code>" add-on is known to be incompatible with the core add-on.<strong class="text-strong">]</strong></li></ul> <ul><li>load a World Conquest 2 save from 1.14 to replay;</li></ul> <ul><li>press again CTRL+SHIFT+k to select the "<code>Default</code>" core when you are done with replaying 1.14 saves. You don't need to restart wesnoth.</li></ul></div></div> I put a table of the different issues I got when testing replaying 1.14 World Conquest 2 saves and the current status of each issue. Beside two occurrences of strange side definition problem (wrong starting castle and wrong units), the remaining problem is about lua related to menu events (<code>found dependent command in replay while is_synced=false</code>). These OOS can be safely skipped.<br> <br> This version is supporting replaying 1.14 1v1 saves with default era altogether.</div> <dl class="attachbox"> <dt> Attachments </dt> <dd> <dl class="file"> <dt><img src="./images/upload_icons/zip.gif" alt="" /> <a class="postlink" href="./download/file.php?id=93723&amp;sid=5155657fd9ceb847150c23cd350c2ac6">BFW1.16.load_1.14_replay_backward_support_CORE.v2.diff.gz</a></dt> <dd><em>support replaying 1.14 WC2 saves in BFW 1.16.<br />Apply on your local copy of BFW 1.16 using patch -p1</em></dd> <dd>(1.93 KiB) Downloaded 216 times</dd> </dl> </dd> <dd> <dl class="file"> <dt><img src="./images/upload_icons/txt.gif" alt="" /> <a class="postlink" href="./download/file.php?id=93721&amp;sid=5155657fd9ceb847150c23cd350c2ac6">troubles.md</a></dt> <dd><em>list of known issues+status replaying 1.14 WC2 saves</em></dd> <dd>(8.05 KiB) Downloaded 213 times</dd> </dl> </dd> </dl> <div id="sig676463" class="signature">"simply put, it's an old game"<a href="https://forums.wesnoth.org/viewtopic.php?p=544681#p544681" class="postlink"><span style="vertical-align:super">T</span></a> — Cackfiend</div> </div> </div> <div class="back2top"> <a href="#top" class="top" title="Top"> <i class="icon fa-chevron-circle-up fa-fw icon-gray" aria-hidden="true"></i> <span class="sr-only">Top</span> </a> </div> </div> </div> <div id="p684179" class="post has-profile bg1"> <div class="inner"> <dl class="postprofile" id="profile684179"> <dt class="no-profile-rank no-avatar"> <div class="avatar-container"> </div> <a href="./memberlist.php?mode=viewprofile&amp;u=185535&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="username">demario</a> </dt> <dd class="profile-posts"><strong>Posts:</strong> <a href="./search.php?author_id=185535&amp;sr=posts&amp;sid=5155657fd9ceb847150c23cd350c2ac6">133</a></dd> <dd class="profile-joined"><strong>Joined:</strong> July 3rd, 2019, 1:05 pm</dd> </dl> <div class="postbody"> <div id="post_content684179"> <h3 > <a href="./viewtopic.php?p=684179&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p684179">Re: [mod] Adding support to replay old saves (1.10-1.14 1v1) in BFW 1.16</a> </h3> <ul class="post-buttons"> <li> <a href="./posting.php?mode=quote&amp;p=684179&amp;sid=5155657fd9ceb847150c23cd350c2ac6" title="Reply with quote" class="button button-icon-only"> <i class="icon fa-quote-left fa-fw" aria-hidden="true"></i><span class="sr-only">Quote</span> </a> </li> </ul> <p class="author"> <a class="unread" href="./viewtopic.php?p=684179&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p684179" title="Post"> <i class="icon fa-file fa-fw icon-lightgray icon-md" aria-hidden="true"></i><span class="sr-only">Post</span> </a> <span class="responsive-hide">by <strong><a href="./memberlist.php?mode=viewprofile&amp;u=185535&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="username">demario</a></strong> &raquo; </span><time datetime="2023-10-14T21:08:28+00:00">October 14th, 2023, 9:08 pm</time> </p> <div class="content">As BFW 1.16's days are coming close to an end, and as I am sitting on an old patch, I might as well publish it.<br> <br> With this patch come three new features: <ul><li>support <span style="text-decoration:underline">from 1.10 to 1.14 saves</span> (1v1) using the core model. Saves earlier than 1.10 are not supported because there is no matching core.</li></ul> <ul><li>the support mechanism will now automatically load the matching core based on the version recorded in the save. So you don't have to fear to load the replay with the wrong core. This is useful when using the feature to load saves from the default save directory from old versions. <div style="margin:20px;margin-top:5px"><div class="quotetitle" style="vertical-align:middle;display:inline-block"><strong>That's what I am talking about:</strong> <input class="button1" style="font-size:0.8em" type="button" value="Show" onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].style.display = ''; this.value = 'Hide'; this.innerText = ''; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; this.value = 'Show'; this.innerText = ''; }"></div><div class="quotecontent" style="display:none"><div class="inline-attachment"> <dl class="file"> <dt class="attach-image"><img src="./download/file.php?id=95849&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="postimage" alt="show_save_subdirs_1_14.dropdown.png" onclick="viewableArea(this);" /></dt> <dd>show_save_subdirs_1_14.dropdown.png (259.64 KiB) Viewed 13611 times</dd> </dl> </div></div></div></li></ul> <ul><li>finally I have embedded in the patch the code to run the replays in batch as a test (<code class="inline-code">--replay_test=...</code>) on which I worked for <a class="postlink" href="https://github.com/wesnoth/wesnoth/issues/7029">#7029</a>.<br> So you can basically run something like this bash command on linux:<br> <code class="inline-code">for i in `(cd ~/.local/share/wesnoth/1.16/saves/; ls 202201*)`; do (echo $i; wesnoth --replay_test=$i); done</code><br> to run at full speed all the saves in succession. This is useful when looking for regressions or failure cases.<br> You've better to put a meaningful filter (eg <code>202201*</code>) to avoid running it for too long (<code class="inline-code">CTRL+z</code> is your friend otherwise)<br> If you want to run on one savefile, put it under the wesnoth <code>saves/</code> directory and pass it without the path up to <code>saves/</code> (ie without the <code class="inline-code">.../saves/</code> part). You can't pass several saves when calling wesnoth with <code>--replay_test</code>.</li></ul> <div style="margin:1.3em 0"><div><input type="button" value="▸" title="Expand section" style="font-weight:bold;font-size:1em;width:2em;margin:0;padding:0" onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].style.display = ''; this.title = 'Collapse section'; this.value = '▾'; this.innerText = ''; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; this.title = 'Expand section'; this.value = '▸'; this.innerText = ''; }"> <b>To use this solution you have to:</b></div><div style="margin:2em;margin-top:5px;display:none"> <ul><li>apply the patch in attachment on a pristine version of BFW 1.16;</li></ul> <ul><li>run cmake and compile the code;</li></ul> <ul><li>go to the add-on server and download "<code>Support 1.10-1.14 cores</code>" (minimum version <strong class="text-strong">1.0.1</strong>). See in the description how to define the hotkey;<strong class="text-strong">[NB:</strong> The "<code>Reign of the Lords</code>" add-on is known to be incompatible with the core add-on.<strong class="text-strong">]</strong></li></ul> <ul><li>load any 1v1 save from 1.10-1.16 to replay (the right core will be loaded automatically);</li></ul> <ul><li>you <span style="text-decoration:underline">will need to restart wesnoth</span> when you are done with the replays.</li></ul></div></div></div> <div class="notice"> Last edited by <a href="./memberlist.php?mode=viewprofile&amp;u=185535&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="username">demario</a> on December 17th, 2023, 4:16 pm, edited 1 time in total. </div> <div id="sig684179" class="signature">"simply put, it's an old game"<a href="https://forums.wesnoth.org/viewtopic.php?p=544681#p544681" class="postlink"><span style="vertical-align:super">T</span></a> — Cackfiend</div> </div> </div> <div class="back2top"> <a href="#top" class="top" title="Top"> <i class="icon fa-chevron-circle-up fa-fw icon-gray" aria-hidden="true"></i> <span class="sr-only">Top</span> </a> </div> </div> </div> <div id="p685307" class="post has-profile bg2"> <div class="inner"> <dl class="postprofile" id="profile685307"> <dt class="no-profile-rank no-avatar"> <div class="avatar-container"> </div> <a href="./memberlist.php?mode=viewprofile&amp;u=185535&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="username">demario</a> </dt> <dd class="profile-posts"><strong>Posts:</strong> <a href="./search.php?author_id=185535&amp;sr=posts&amp;sid=5155657fd9ceb847150c23cd350c2ac6">133</a></dd> <dd class="profile-joined"><strong>Joined:</strong> July 3rd, 2019, 1:05 pm</dd> </dl> <div class="postbody"> <div id="post_content685307"> <h3 > <a href="./viewtopic.php?p=685307&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p685307">Re: [mod] Adding support to replay old saves (1.8-1.14 1v1) in BFW 1.16</a> </h3> <ul class="post-buttons"> <li> <a href="./posting.php?mode=quote&amp;p=685307&amp;sid=5155657fd9ceb847150c23cd350c2ac6" title="Reply with quote" class="button button-icon-only"> <i class="icon fa-quote-left fa-fw" aria-hidden="true"></i><span class="sr-only">Quote</span> </a> </li> </ul> <p class="author"> <a class="unread" href="./viewtopic.php?p=685307&amp;sid=5155657fd9ceb847150c23cd350c2ac6#p685307" title="Post"> <i class="icon fa-file fa-fw icon-lightgray icon-md" aria-hidden="true"></i><span class="sr-only">Post</span> </a> <span class="responsive-hide">by <strong><a href="./memberlist.php?mode=viewprofile&amp;u=185535&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="username">demario</a></strong> &raquo; </span><time datetime="2023-12-17T16:15:30+00:00">December 17th, 2023, 4:15 pm</time> </p> <div class="content"><strong class="text-strong">New version</strong> to be used on <span style="text-decoration:underline">BFW1.16</span> that contains the following functions: <ul><li>support <span style="text-decoration:underline">from 1.8 to 1.14 saves</span> (1v1) using the core model. Saves earlier than 1.8 are not supported because there is no matching core.</li></ul> <ul><li>ability to search saves by keywords. The feature was introduced <a href="https://forums.wesnoth.org/viewtopic.php?p=667764#p667764" class="postlink">here</a>.<br> Be sure to reset the cache file for save previews by deleting the file <code class="inline-code">save_index</code> under the same path as the "<code>Saved games</code>" directory accessible from the <strong class="text-strong"><code>[I]</code></strong> button (bottom left of the main screen). If you don't remove the cache, saves that have already been previewed will not be available for keyword searching (search by faction).</li></ul> <ul><li>the player statistics will be available for both sides (based on which side turn it is) in 1v1 saves and for all human player sides for WC2 saves.<br> This applies to 1.16 saves too.</li></ul> <ul><li>unit types are suffixed with the number (similar to screenshot <a href="https://forums.wesnoth.org/viewtopic.php?p=667321#p667321" class="postlink">here</a>) of the last version where it was defined. The <a href="https://forums.wesnoth.org/viewtopic.php?p=685972#p685972" class="postlink">following rules</a> are applicable for highlight.</li> </ul> The features listed in the previous message are still available, including automatic load of the matching core based on the version stored in the save.<br> <div style="margin:1.3em 0"><div><input type="button" value="▸" title="Expand section" style="font-weight:bold;font-size:1em;width:2em;margin:0;padding:0" onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].style.display = ''; this.title = 'Collapse section'; this.value = '▾'; this.innerText = ''; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; this.title = 'Expand section'; this.value = '▸'; this.innerText = ''; }"> <b>To use this solution you have to:</b></div><div style="margin:2em;margin-top:5px;display:none"> <ul><li>apply the patch in attachment on a pristine version of BFW 1.16;</li></ul> <ul><li>run cmake and compile the code;</li></ul> <ul><li>go to the add-on server and download "<code>Support 1.8-1.14 cores</code>" (minimum version <strong class="text-strong">1.4.1</strong>). See in the description how to define the hotkey;<strong class="text-strong">[NB:</strong> The "<code>Reign of the Lords</code>" add-on is known to be incompatible with the core add-on.<strong class="text-strong">]</strong></li></ul> <ul><li>reset the cache file for save previews by deleting the file <code class="inline-code">save_index</code></li></ul> <ul><li>load any 1v1 save from 1.8-1.16 to replay (the right core will be loaded automatically);</li></ul> <ul><li>you <span style="text-decoration:underline">will need to restart wesnoth</span> when you are done with the replays.</li></ul></div></div></div> <dl class="attachbox"> <dt> Attachments </dt> <dd> <dl class="file"> <dt><img src="./images/upload_icons/zip.gif" alt="" /> <a class="postlink" href="./download/file.php?id=96139&amp;sid=5155657fd9ceb847150c23cd350c2ac6">BFW1.16.load_1.14_replay_backward_support_CORE.v4.diff.gz</a></dt> <dd><em>Apply on your local copy of BFW 1.16 using patch -p1</em></dd> <dd>(24.54 KiB) Downloaded 129 times</dd> </dl> </dd> </dl> <div id="sig685307" class="signature">"simply put, it's an old game"<a href="https://forums.wesnoth.org/viewtopic.php?p=544681#p544681" class="postlink"><span style="vertical-align:super">T</span></a> — Cackfiend</div> </div> </div> <div class="back2top"> <a href="#top" class="top" title="Top"> <i class="icon fa-chevron-circle-up fa-fw icon-gray" aria-hidden="true"></i> <span class="sr-only">Top</span> </a> </div> </div> </div> <div class="action-bar bar-bottom"> <a href="./posting.php?mode=reply&amp;t=53824&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="button" title="Post a reply"> <span>Post Reply</span> <i class="icon fa-reply fa-fw" aria-hidden="true"></i> </a> <form method="post" action="./viewtopic.php?t=53824&amp;start=30&amp;sid=5155657fd9ceb847150c23cd350c2ac6"> <div class="dropdown-container dropdown-container-left dropdown-button-control sort-tools"> <span title="Display and sorting options" class="button button-secondary dropdown-trigger dropdown-select"> <i class="icon fa-sort-amount-asc fa-fw" aria-hidden="true"></i> <span class="caret"><i class="icon fa-sort-down fa-fw" aria-hidden="true"></i></span> </span> <div class="dropdown hidden"> <div class="pointer"><div class="pointer-inner"></div></div> <div class="dropdown-contents"> <fieldset class="display-options"> <label>Display: <select name="st" id="st"><option value="0" selected="selected">All posts</option><option value="1">1 day</option><option value="7">7 days</option><option value="14">2 weeks</option><option value="30">1 month</option><option value="90">3 months</option><option value="180">6 months</option><option value="365">1 year</option></select></label> <label>Sort by: <select name="sk" id="sk"><option value="a">Author</option><option value="t" selected="selected">Post time</option><option value="s">Subject</option></select></label> <label>Direction: <select name="sd" id="sd"><option value="a" selected="selected">Ascending</option><option value="d">Descending</option></select></label> <hr class="dashed" /> <input type="submit" class="button2" name="sort" value="Go" /> </fieldset> </div> </div> </div> </form> <div class="pagination"> 39 posts <ul> <li class="arrow previous"><a class="button button-icon-only" href="./viewtopic.php?t=53824&amp;sid=5155657fd9ceb847150c23cd350c2ac6&amp;start=15" rel="prev" role="button"><i class="icon fa-chevron-left fa-fw" aria-hidden="true"></i><span class="sr-only">Previous</span></a></li> <li><a class="button" href="./viewtopic.php?t=53824&amp;sid=5155657fd9ceb847150c23cd350c2ac6" role="button">1</a></li> <li><a class="button" href="./viewtopic.php?t=53824&amp;sid=5155657fd9ceb847150c23cd350c2ac6&amp;start=15" role="button">2</a></li> <li class="active"><span>3</span></li> </ul> </div> </div> <div class="action-bar actions-jump"> <p class="jumpbox-return"> <a href="./viewforum.php?f=10&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="left-box arrow-left" accesskey="r"> <i class="icon fa-angle-left fa-fw icon-black" aria-hidden="true"></i><span>Return to “Coder’s Corner”</span> </a> </p> <div class="jumpbox dropdown-container dropdown-container-right dropdown-up dropdown-left dropdown-button-control" id="jumpbox"> <span title="Jump to" class="button button-secondary dropdown-trigger dropdown-select"> <span>Jump to</span> <span class="caret"><i class="icon fa-sort-down fa-fw" aria-hidden="true"></i></span> </span> <div class="dropdown"> <div class="pointer"><div class="pointer-inner"></div></div> <ul class="dropdown-contents"> <li><a href="./viewforum.php?f=64&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-cat-link"> <span> Announcements</span></a></li> <li><a href="./viewforum.php?f=62&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span> <span>&#8627; &nbsp; News</span></a></li> <li><a href="./viewforum.php?f=25&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-cat-link"> <span> General</span></a></li> <li><a href="./viewforum.php?f=6&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span> <span>&#8627; &nbsp; Users’ Forum</span></a></li> <li><a href="./viewforum.php?f=70&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; Tournaments</span></a></li> <li><a href="./viewforum.php?f=5&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span> <span>&#8627; &nbsp; Release Announcements, Compiling &amp; Installation</span></a></li> <li><a href="./viewforum.php?f=4&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span> <span>&#8627; &nbsp; Technical Support</span></a></li> <li><a href="./viewforum.php?f=67&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; iOS Support</span></a></li> <li><a href="./viewforum.php?f=3&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span> <span>&#8627; &nbsp; Strategies &amp; Tips</span></a></li> <li><a href="./viewforum.php?f=37&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span> <span>&#8627; &nbsp; Gameplay Feedback</span></a></li> <li><a href="./viewforum.php?f=22&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; Mainline Campaign Feedback</span></a></li> <li><a href="./viewforum.php?f=46&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; Tutorial</span></a></li> <li><a href="./viewforum.php?f=40&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; A Tale of Two Brothers</span></a></li> <li><a href="./viewforum.php?f=41&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; An Orcish Incursion</span></a></li> <li><a href="./viewforum.php?f=42&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; The South Guard</span></a></li> <li><a href="./viewforum.php?f=39&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; Heir to the Throne</span></a></li> <li><a href="./viewforum.php?f=43&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; Liberty</span></a></li> <li><a href="./viewforum.php?f=51&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; Legend of Wesmere (single player)</span></a></li> <li><a href="./viewforum.php?f=56&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; Legend of Wesmere (multiplayer)</span></a></li> <li><a href="./viewforum.php?f=49&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; Eastern Invasion</span></a></li> <li><a href="./viewforum.php?f=55&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; The Hammer of Thursagan</span></a></li> <li><a href="./viewforum.php?f=54&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; Descent into Darkness</span></a></li> <li><a href="./viewforum.php?f=52&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; Delfador’s Memoirs</span></a></li> <li><a href="./viewforum.php?f=45&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; Dead Water</span></a></li> <li><a href="./viewforum.php?f=65&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; Secrets of the Ancients</span></a></li> <li><a href="./viewforum.php?f=48&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; Sceptre of Fire</span></a></li> <li><a href="./viewforum.php?f=53&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; Son of the Black Eye</span></a></li> <li><a href="./viewforum.php?f=44&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; The Rise of Wesnoth</span></a></li> <li><a href="./viewforum.php?f=47&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; Northern Rebirth</span></a></li> <li><a href="./viewforum.php?f=50&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; Under the Burning Suns</span></a></li> <li><a href="./viewforum.php?f=71&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; Winds of Fate</span></a></li> <li><a href="./viewforum.php?f=31&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; Add-on Feedback</span></a></li> <li><a href="./viewforum.php?f=17&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span> <span>&#8627; &nbsp; Website</span></a></li> <li><a href="./viewforum.php?f=26&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-cat-link"> <span> Development</span></a></li> <li><a href="./viewforum.php?f=9&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span> <span>&#8627; &nbsp; Art Contributions</span></a></li> <li><a href="./viewforum.php?f=23&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span> <span>&#8627; &nbsp; Art Workshop</span></a></li> <li><a href="./viewforum.php?f=32&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span> <span>&#8627; &nbsp; Writers’ Forum</span></a></li> <li><a href="./viewforum.php?f=21&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span> <span>&#8627; &nbsp; WML Workshop</span></a></li> <li><a href="./viewforum.php?f=58&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span> <span>&#8627; &nbsp; Lua Labs</span></a></li> <li><a href="./viewforum.php?f=19&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span> <span>&#8627; &nbsp; Faction &amp; Era Development</span></a></li> <li><a href="./viewforum.php?f=15&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span> <span>&#8627; &nbsp; Multiplayer Development</span></a></li> <li><a href="./viewforum.php?f=8&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span> <span>&#8627; &nbsp; Scenario &amp; Campaign Development</span></a></li> <li><a href="./viewforum.php?f=38&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; Mainline Campaign Development</span></a></li> <li><a href="./viewforum.php?f=68&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; UMC Replays</span></a></li> <li><a href="./viewforum.php?f=14&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span> <span>&#8627; &nbsp; Music &amp; Sound Development</span></a></li> <li><a href="./viewforum.php?f=7&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span> <span>&#8627; &nbsp; Translations &amp; Internationalization</span></a></li> <li><a href="./viewforum.php?f=60&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; Translation Stats</span></a></li> <li><a href="./viewforum.php?f=12&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span> <span>&#8627; &nbsp; Ideas</span></a></li> <li><a href="./viewforum.php?f=10&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span> <span>&#8627; &nbsp; Coder’s Corner</span></a></li> <li><a href="./viewforum.php?f=2&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span> <span>&#8627; &nbsp; Developers’ Discussions</span></a></li> <li><a href="./viewforum.php?f=73&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span> <span>&#8627; &nbsp; Wesnoth Organizational Updates</span></a></li> <li><a href="./viewforum.php?f=18&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span> <span>&#8627; &nbsp; Art Development</span></a></li> <li><a href="./viewforum.php?f=28&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-cat-link"> <span> Miscellaneous</span></a></li> <li><a href="./viewforum.php?f=13&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span> <span>&#8627; &nbsp; Game Development</span></a></li> <li><a href="./viewforum.php?f=11&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span> <span>&#8627; &nbsp; Off-Topic</span></a></li> <li><a href="./viewforum.php?f=61&amp;sid=5155657fd9ceb847150c23cd350c2ac6" class="jumpbox-sub-link"><span class="spacer"></span> <span>&#8627; &nbsp; Forum Games</span></a></li> </ul> </div> </div> </div> </div> <div id="page-footer" class="page-footer" role="contentinfo"> <div class="navbar" role="navigation"> <div class="inner"> <ul id="nav-footer" class="nav-footer linklist" role="menubar"> <li class="breadcrumbs"> <span class="crumb"><a href="./index.php?sid=5155657fd9ceb847150c23cd350c2ac6" data-navbar-reference="index"><i class="icon fa-home fa-fw" aria-hidden="true"></i><span>Forums</span></a></span> </li> <li class="rightside">All times are <span title="UTC">UTC</span></li> <li class="rightside"> <a href="./ucp.php?mode=delete_cookies&amp;sid=5155657fd9ceb847150c23cd350c2ac6" data-ajax="true" data-refresh="true" role="menuitem"> <i class="icon fa-trash fa-fw" aria-hidden="true"></i><span>Delete cookies</span> </a> </li> </ul> </div> </div> <div id="darkenwrapper" class="darkenwrapper" data-ajax-error-title="AJAX error" data-ajax-error-text="Something went wrong when processing your request." data-ajax-error-text-abort="User aborted request." data-ajax-error-text-timeout="Your request timed out; please try again." data-ajax-error-text-parsererror="Something went wrong with the request and the server returned an invalid reply."> <div id="darken" class="darken">&nbsp;</div> </div> <div id="phpbb_alert" class="phpbb_alert" data-l-err="Error" data-l-timeout-processing-req="Request timed out."> <a href="#" class="alert_close"> <i class="icon fa-times-circle fa-fw" aria-hidden="true"></i> </a> <h3 class="alert_title">&nbsp;</h3><p class="alert_text"></p> </div> <div id="phpbb_confirm" class="phpbb_alert"> <a href="#" class="alert_close"> <i class="icon fa-times-circle fa-fw" aria-hidden="true"></i> </a> <div class="alert_text"></div> </div> </div> </div> <div class="copyright"> <p class="footer-row"> <span class="footer-copyright">Powered by <a href="https://www.phpbb.com/">phpBB</a>&reg; Forum Software &copy; phpBB Limited</span> </p> <p class="footer-row" role="menu"> <a class="footer-link" href="./ucp.php?mode=privacy&amp;sid=5155657fd9ceb847150c23cd350c2ac6" title="Privacy" role="menuitem"> <span class="footer-link-text">Privacy</span> </a> | <a class="footer-link" href="./ucp.php?mode=terms&amp;sid=5155657fd9ceb847150c23cd350c2ac6" title="Terms" role="menuitem"> <span class="footer-link-text">Terms</span> </a> </p> </div> <div> <a id="bottom" class="anchor" accesskey="z"></a> <img class="sr-only" aria-hidden="true" src="&#x2F;app.php&#x2F;cron&#x2F;cron.task.core.queue&#x3F;sid&#x3D;5155657fd9ceb847150c23cd350c2ac6" width="1" height="1" alt=""> </div> <script src="./assets/javascript/jquery-3.6.0.min.js?assets_version=264"></script> <script src="./assets/javascript/core.js?assets_version=264"></script> <script type="text/javascript"> var CodeboxExpandText = "Expand"; var CodeboxCollapseText = "Collapse"; </script> <script src="./assets/cookieconsent/cookieconsent.min.js?assets_version=264"></script> <script> if (typeof window.cookieconsent === "object") { window.addEventListener("load", function(){ window.cookieconsent.initialise({ "palette": { "popup": { "background": "#0F538A" }, "button": { "background": "#E5E5E5" } }, "theme": "classic", "content": { "message": "This\u0020website\u0020uses\u0020cookies\u0020to\u0020ensure\u0020you\u0020get\u0020the\u0020best\u0020experience\u0020on\u0020our\u0020website.", "dismiss": "Got\u0020it\u0021", "link": "Learn\u0020more", "href": "./ucp.php?mode=privacy&amp;sid=5155657fd9ceb847150c23cd350c2ac6" } }); }); } </script> </div> <!-- #content --> <script src="./styles/prosilver/template/forum_fn.js?assets_version=264"></script> <script src="./styles/prosilver/template/ajax.js?assets_version=264"></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10