CINXE.COM
New Graphics System Details - 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>New Graphics System Details - 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=e11e8f43e7bfc5c4d25918fded3c8ee4"> <link rel="alternate" type="application/atom+xml" title="Feed - News" href="/app.php/feed/news?sid=e11e8f43e7bfc5c4d25918fded3c8ee4"> <link rel="alternate" type="application/atom+xml" title="Feed - All forums" href="/app.php/feed/forums?sid=e11e8f43e7bfc5c4d25918fded3c8ee4"> <link rel="alternate" type="application/atom+xml" title="Feed - New Topics" href="/app.php/feed/topics?sid=e11e8f43e7bfc5c4d25918fded3c8ee4"> <link rel="alternate" type="application/atom+xml" title="Feed - Forum - Coder’s Corner" href="/app.php/feed/forum/10?sid=e11e8f43e7bfc5c4d25918fded3c8ee4"> <link rel="alternate" type="application/atom+xml" title="Feed - Topic - New Graphics System Details" href="/app.php/feed/topic/55695?sid=e11e8f43e7bfc5c4d25918fded3c8ee4"> <link rel="canonical" href="https://forums.wesnoth.org/viewtopic.php?t=55695"> <!-- 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=e11e8f43e7bfc5c4d25918fded3c8ee4"> <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=e11e8f43e7bfc5c4d25918fded3c8ee4" 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=e11e8f43e7bfc5c4d25918fded3c8ee4" 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=e11e8f43e7bfc5c4d25918fded3c8ee4" 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=e11e8f43e7bfc5c4d25918fded3c8ee4" 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="e11e8f43e7bfc5c4d25918fded3c8ee4" /> </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&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" 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&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" 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=e11e8f43e7bfc5c4d25918fded3c8ee4" 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=e11e8f43e7bfc5c4d25918fded3c8ee4" 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&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" 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&redirect=viewtopic.php%3Fp%3D678337&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" 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&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" 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=e11e8f43e7bfc5c4d25918fded3c8ee4" 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&sid=e11e8f43e7bfc5c4d25918fded3c8ee4"><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&sid=e11e8f43e7bfc5c4d25918fded3c8ee4"><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=e11e8f43e7bfc5c4d25918fded3c8ee4" 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=55695&sid=e11e8f43e7bfc5c4d25918fded3c8ee4">New Graphics System Details</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&g=6643&sid=e11e8f43e7bfc5c4d25918fded3c8ee4">Forum Moderators</a> </p> <div class="action-bar bar-top"> <a href="./posting.php?mode=reply&t=55695&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" 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=e11e8f43e7bfc5c4d25918fded3c8ee4"> <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=e11e8f43e7bfc5c4d25918fded3c8ee4" 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="55695" /> <input type="hidden" name="sf" value="msgonly" /> <input type="hidden" name="sid" value="e11e8f43e7bfc5c4d25918fded3c8ee4" /> </fieldset> </form> </div> <div class="pagination"> 4 posts • Page <strong>1</strong> of <strong>1</strong> </div> </div> <div id="p673325" class="post has-profile bg2"> <div class="inner"> <dl class="postprofile" id="profile673325"> <dt class="has-profile-rank no-avatar"> <div class="avatar-container"> </div> <a href="./memberlist.php?mode=viewprofile&u=102249&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" style="color: #D52929;" class="username-coloured">mesilliac</a> </dt> <dd class="profile-rank">Developer</dd> <dd class="profile-posts"><strong>Posts:</strong> <a href="./search.php?author_id=102249&sr=posts&sid=e11e8f43e7bfc5c4d25918fded3c8ee4">81</a></dd> <dd class="profile-joined"><strong>Joined:</strong> November 18th, 2005, 8:09 am</dd> <dd class="profile-custom-field profile-phpbb_location"><strong>Location:</strong> New Zealand</dd> </dl> <div class="postbody"> <div id="post_content673325"> <h3 class="first"> <a href="./viewtopic.php?p=673325&sid=e11e8f43e7bfc5c4d25918fded3c8ee4#p673325">New Graphics System Details</a> </h3> <ul class="post-buttons"> <li> <a href="./posting.php?mode=quote&p=673325&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" 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=673325&sid=e11e8f43e7bfc5c4d25918fded3c8ee4#p673325" 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&u=102249&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" style="color: #D52929;" class="username-coloured">mesilliac</a></strong> » </span><time datetime="2022-05-07T03:58:48+00:00">May 7th, 2022, 3:58 am</time> </p> <div class="content">So with the help of Vultraz i've been working on constructing a compatibility layer for the current rendering system, which should allow everything to be slowly migrated towards three general goals: <ul> <li> support for scaling on high resolution displays</li> <li> smooth/high-dpi fonts, images, backgrounds and game map while still having large pixel-based sprites</li> <li> hardware accelerated rendering support</li> </ul> This post is partially for laying out the work that's been done, and partially for documenting the chosen solutions and any alternative options.<br> <br> <strong class="text-strong"><span style="font-size:120%;line-height:116%">Scaling</span></strong><br> <br> I've already implemented a somewhat crude pixel scaling option which is in the master branch but hasn't hit a dev release yet. This essentially multiplies the size of a pixel by some small integer number. A 3840x2160 display with a pixel scale of 3 will have an effective drawing resolution of 1280x720, rendering the game low-resolution but playable. This allows basic high-dpi support.<br> <br> There are two things that are not implemented, and that i am unlikely to implement but might be useful:<br> 1. Non-integer scaling. For a game so heavily focused on pixel graphics, this significantly degrades the visual quality. However some people may still find it useful so it might be worth implementing in the future. It should not be difficult to implement.<br> 2. A separate UI scale option to scale the UI without changing the game resolution. This might be useful but it's unlikely i'll have time to work on it. It would be a relatively easier task if somebody wanted to pick it up later.<br> <br> <strong class="text-strong"><span style="font-size:120%;line-height:116%">High-DPI and hardware acceleration</span></strong><br> <br> I've mostly completed a prototype compatibility layer allowing both legacy low-resolution software-manipulated graphics and new high-resolution hardware-accelerated graphics to coexist and be used in parallel. That is, the existing Wesnoth rendering code can still be used, but should be migrated piece by piece to a better system.<br> <br> The new drawing system will support both 2D hardware acceleration and high-dpi rendering. It supports these naturally by rendering using texture IDs of previously loaded textures, in stead of rendering by copying pixels between SDL surfaces.<br> <br> <strong class="text-strong"><span style="font-size:120%;line-height:116%">Rendering system changes</span></strong><br> <br> Previously there were several ways of rendering, all of which invovled getting a pointer directly into graphics memory and blitting pixels onto the memory used to draw to the screen. The new compatibility layer abstracts this all away and removes it.<br> <br> All direct manipulations of the framebuffer have been removed. Surface blits have been replaced with calls to CVideo::blit_surface, which uses a compatibility system to render the surface. Pixel copies have been replaced with a new interface to read pixels from the hardware-accelerated high-dpi rendering target and return them either in high or low res. These calls should be phased out for everything except screenshots.<br> <br> The new drawing interface draws using textures. It should be used exclusively going forward, and all old surface drawing code should be migrated to use it. It is a simple CVideo::blit_texture call taking the texture and where it is to be drawn on the screen. There is a new clipping interface to set the clipping area correctly for both old-style and new-style draws, which works equivalently to the old clip_rect_setter.<br> <br> <strong class="text-strong"><span style="font-size:120%;line-height:116%">Resolution, size and scale</span></strong><br> <br> To understand the new high-dpi rendering system, it is important to understand that there are now several different coordinate systems in use. This is unavoidable. However the vast majority of game systems can get by with assuming a single universal resolution, just as they have always done. This output resolution that the game will use I have called "game-native" resolution. This resolution matches the coordinates in themes, sizes given to UI widgets, and coordinates of input events.<br> <br> This game-native resolution also corresponds to the coordinates used for draw calls, and i have also at places referred to it as "draw-space", "drawing space", "drawing resolution" and similar.<br> <br> Coordinates used for input events i refer to as "input space", "input resolution", or "input size" for the game-visible size of the input area (i.e. the window). These should always match draw-space a.k.a. game-native coordinates. Their only importance is for calls that directly poll the mouse position, as these are not returned by SDL in draw-space coordinates, but rather window-space coordinates. <em class="text-italics">A compatibility function has been added to poll the mouse position in input-space, and this is what should be used in all cases going forwards when the mouse position must be polled actively.</em><br> <br> "window-space" is what i use to refer to the coordinate system the native OS-level windowing system uses. <em class="text-italics">The meaning of this differs significantly between Windows, MacOs and Linux.</em> However this is always the coordinate system used for placing a window on the OS desktop, for resizing it, and for reporting the fullscreen and window resolution listed in Wesnoth preferences. It is important when dealing with these events and controls to use the correct coordinate system.<br> <br> "output space/size/resolution", "render-space", "rendering space", "render size" and "render target size" are interchangeably used to refer to the coordinate system of the <em class="text-italics">final output high-dpi rendering target</em>. In high-dpi contexts this will be higher resolution than game-native / drawing resolution. Most game systems once converted to use the new texture drawing interface will automatically and transparently render at the full output resolution with no knowlede of what it is. The only exception is font rendering, which will need to know the scale factor between drawing space and render space to generate font textures at the appropriate resolution.<br> <br> Currently render size is restricted to an integer multiple of the drawing size. This is controlled by a user-configurable "pixel scale" option. It currently defaults to "automatic", and will try to match the default game-native resolution supported by Wesnoth. There are also minimum and maximum resolutions that can be set in Wesnoth code, and it will try to respect these. All except the minimum resolution can be overridden by player preference.<br> <br> These different coordinate systems are mostly supported by SDL's built-in "logical size" compatibility system. "logical size/scale/resolution" is equal to game-native resolution. In the case that output-size is not a perfect integer multiple of logical size (such as if the window size is odd by one or two pixels), an appropriate viewport is chosen automatically. This should be completely invisible to the game, but is accounted for in some of the compatibility code which pulls pixels from the render target.<br> <br> SDL will automatically convert most relevant events and rendering calls (such as mouse events, pixel drawing calls, texture drawing calls etc) to and from logical resolution. As such, the vast majority of the game only ever needs to care about this resolution, and most existing code can continue to be used as-is.<br> <br> <strong class="text-strong">Summary of coordinate systems</strong><br> <br> That was confusing, but in summary what it comes down to is:<br> <br> The game uses "game-native", "drawing", "draw-space", or "input" coordinates. These are all the same, and equivalent to what the game was previously using.<br> <br> There are also "window" coordinates which the game mostly doesn't need to care about, except for some systems dealing with raw input, window sizing/movement/resizing, and fullscreen resolution.<br> <br> There are also "output" or "render" coordinates. These are what the final output of the game will use, but the game for the most part does not need to know or care about them. The only part that does is font rendering, so that text can be rendered by the game at the best size to use the full available resolution.<br> <br> <strong class="text-strong"><span style="font-size:120%;line-height:116%">Different OS approaches to high-dpi</span></strong><br> <br> Different operating systems use different approaches to high-dpi rendering. I will try to list what i have learned, but let me know if anything is known to be incorrect as i only have one of these systems. Available information on this is understandably confused and often conflicting.<br> <br> <strong class="text-strong">Linux (X11):</strong> Window size and output size are equal, and represent the full render-target resolution even in high-dpi contexts. Pixel scaling must be used to make the game playable on high resolution displays.<br> <strong class="text-strong">Linux (Wayland):</strong> Output size may be greater than window size, in high-dpi contexts. Window sizing and placement events use window size. Input events natively use window size, but are converted by SDL to use logical size where possible. Non-high-dpi-aware games will see output size as window size, and have their output scaled automatically.<br> <strong class="text-strong">Windows (OS scaling):</strong> If OS high-dpi scaling is used and the app isn't marked as high-dpi aware, the window size will be scaled by the OS scale factor. The game will render at this size, and the output will be automatically scaled.<br> <strong class="text-strong">Windows (high-dpi-aware):</strong> For apps marked as high-dpi-aware, window size will be output size. The app is responsible for scaling appropriately. Wesnoth is currently marked as high-dpi aware and will use pixel scaling automatically.<br> <strong class="text-strong">MacOS:</strong> Handling is similar to Wayland on Linux. Output size may be greater than window size, and window size is used for windowing events. I am not sure how rendering is handled natively, but SDL will translate draw events correctly using logical size.<br> <br> <strong class="text-strong"><span style="font-size:120%;line-height:116%">Solutions to the original goals</span></strong><br> <br> In all cases SDL's logical size can be used as the game-native drawing and input resolution, with the occasional caveat mentioned above. Thus the original scaling goal has already been achieved, mostly by just setting SDL's logical size appropriately.<br> <br> Hardware acceleration support can be achieved mostly by using textures to draw in stead of SDL surfaces. A lot of work was already done towards this goal back in 2018, and is still available in the "old_master_20181015" branch on github. Once the rendering compatibility layer is in place, most if not all of this will be able to be ported forwards.<br> <br> High-dpi rendering support is mostly automatic using SDL's logical size adaptor. The only thing that will need to be aware of the difference is font rendering, which should be able to simply use the scale factor between output size and game-native drawing resolution to scale font sizes.<br> <br> <strong class="text-strong"><span style="font-size:120%;line-height:116%">Work done and what needs doing</span></strong><br> <br> This post is already pretty long, but i'll add a quick summary of what has been done so far and what will need to be done in the future.<br> <br> <strong class="text-strong">Done:</strong> <ul> <li> Add pixel scaling option, using SDL's built in "logical size" scaling support. It can be set in preferences, and will update immediately.</li> <li> Choose pixel scale automatically if output size is too large. This can be disabled in preferences.</li> <li> Add compatibility later for all old rendering calls.</li> <li> Add new hardware-accelerated rendering interface.</li> <li> Convert all old rendering calls to use the compatibility layer.</li> </ul> <strong class="text-strong">To do:</strong> <ul> <li> Convert fonts to render in high-dpi, and display using the new interface.</li> <li> Convert all old drawing systems to use textures in stead of surfaces.</li> </ul> The last to-do will likely be ongoing work for some time. However with the compatibility layer in place, it should be able to be done piece by piece with minimal disruption to other systems while in progress.</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="p678293" class="post has-profile bg1"> <div class="inner"> <dl class="postprofile" id="profile678293"> <dt class="no-profile-rank no-avatar"> <div class="avatar-container"> </div> <a href="./memberlist.php?mode=viewprofile&u=176343&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="username">entonio</a> </dt> <dd class="profile-posts"><strong>Posts:</strong> <a href="./search.php?author_id=176343&sr=posts&sid=e11e8f43e7bfc5c4d25918fded3c8ee4">7</a></dd> <dd class="profile-joined"><strong>Joined:</strong> February 1st, 2019, 12:09 am</dd> </dl> <div class="postbody"> <div id="post_content678293"> <h3 > <a href="./viewtopic.php?p=678293&sid=e11e8f43e7bfc5c4d25918fded3c8ee4#p678293">Re: New Graphics System Details</a> </h3> <ul class="post-buttons"> <li> <a href="./posting.php?mode=quote&p=678293&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" 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=678293&sid=e11e8f43e7bfc5c4d25918fded3c8ee4#p678293" 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&u=176343&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="username">entonio</a></strong> » </span><time datetime="2022-12-23T06:13:11+00:00">December 23rd, 2022, 6:13 am</time> </p> <div class="content">Impressive work, thank you.<br> <br> Will this allow something to the same effect as the pre-1.13 choice of resolution in fullscreen mode? I'm the kind for which Wesnoth is only comfortable if it looks like 1280x720 on a 27".</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="p678304" class="post has-profile bg2"> <div class="inner"> <dl class="postprofile" id="profile678304"> <dt class="has-profile-rank has-avatar"> <div class="avatar-container"> <a href="./memberlist.php?mode=viewprofile&u=108075&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="avatar"><img class="avatar" src="./download/file.php?avatar=108075_1585525419.jpg" width="61" height="61" alt="User avatar" /></a> </div> <a href="./memberlist.php?mode=viewprofile&u=108075&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" style="color: #CA8935;" class="username-coloured">doofus-01</a> </dt> <dd class="profile-rank">Art Director</dd> <dd class="profile-posts"><strong>Posts:</strong> <a href="./search.php?author_id=108075&sr=posts&sid=e11e8f43e7bfc5c4d25918fded3c8ee4">4171</a></dd> <dd class="profile-joined"><strong>Joined:</strong> January 6th, 2008, 9:27 pm</dd> <dd class="profile-custom-field profile-phpbb_location"><strong>Location:</strong> USA</dd> </dl> <div class="postbody"> <div id="post_content678304"> <h3 > <a href="./viewtopic.php?p=678304&sid=e11e8f43e7bfc5c4d25918fded3c8ee4#p678304">Re: New Graphics System Details</a> </h3> <ul class="post-buttons"> <li> <a href="./posting.php?mode=quote&p=678304&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" 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=678304&sid=e11e8f43e7bfc5c4d25918fded3c8ee4#p678304" 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&u=108075&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" style="color: #CA8935;" class="username-coloured">doofus-01</a></strong> » </span><time datetime="2022-12-23T13:56:55+00:00">December 23rd, 2022, 1:56 pm</time> </p> <div class="content">There is a "pixel scale multiplier" option that probably doesn't directly solve your problem, but it does at least allow some control over resolution in full screen. It's on "auto" by default, and doesn't seem to do much outside of full screen, so it might be worth testing out.</div> <div id="sig678304" class="signature"><span style="font-size:70%;line-height:116%">BfW 1.12 supported, but active development only for BfW 1.13/1.14: <strong class="text-strong"><a href="http://forum.wesnoth.org/viewtopic.php?f=8&t=31348" class="postlink">Bad Moon Rising</a></strong> | <strong class="text-strong"><a href="http://forum.wesnoth.org/viewtopic.php?f=8&t=31632" class="postlink">Trinity</a></strong> | <strong class="text-strong"><a href="http://www.wesnoth.org/forum/viewtopic.php?f=19&t=27740" class="postlink">Archaic Era</a></strong> |<br> | Abandoned: <a href="http://forum.wesnoth.org/viewtopic.php?p=514347#p514347" class="postlink"><span style="text-decoration:line-through">Tales of the Setting Sun</span></a><br> </span><a href="https://github.com/doofus-01" class="postlink">GitHub link for these projects</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="p678337" class="post has-profile bg1"> <div class="inner"> <dl class="postprofile" id="profile678337"> <dt class="no-profile-rank no-avatar"> <div class="avatar-container"> </div> <a href="./memberlist.php?mode=viewprofile&u=176343&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="username">entonio</a> </dt> <dd class="profile-posts"><strong>Posts:</strong> <a href="./search.php?author_id=176343&sr=posts&sid=e11e8f43e7bfc5c4d25918fded3c8ee4">7</a></dd> <dd class="profile-joined"><strong>Joined:</strong> February 1st, 2019, 12:09 am</dd> </dl> <div class="postbody"> <div id="post_content678337"> <h3 > <a href="./viewtopic.php?p=678337&sid=e11e8f43e7bfc5c4d25918fded3c8ee4#p678337">Re: New Graphics System Details</a> </h3> <ul class="post-buttons"> <li> <a href="./posting.php?mode=quote&p=678337&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" 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=678337&sid=e11e8f43e7bfc5c4d25918fded3c8ee4#p678337" 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&u=176343&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="username">entonio</a></strong> » </span><time datetime="2022-12-24T03:14:00+00:00">December 24th, 2022, 3:14 am</time> </p> <div class="content">Thank you. That works well enough. A non-integer multiplier might be better, but aiui that's not doable.</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&t=55695&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" 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=55695&sid=e11e8f43e7bfc5c4d25918fded3c8ee4"> <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"> 4 posts • Page <strong>1</strong> of <strong>1</strong> </div> </div> <div class="action-bar actions-jump"> <p class="jumpbox-return"> <a href="./viewforum.php?f=10&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" 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&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-cat-link"> <span> Announcements</span></a></li> <li><a href="./viewforum.php?f=62&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span> <span>↳ News</span></a></li> <li><a href="./viewforum.php?f=25&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-cat-link"> <span> General</span></a></li> <li><a href="./viewforum.php?f=6&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span> <span>↳ Users’ Forum</span></a></li> <li><a href="./viewforum.php?f=70&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span> <span>↳ Tournaments</span></a></li> <li><a href="./viewforum.php?f=5&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span> <span>↳ Release Announcements, Compiling & Installation</span></a></li> <li><a href="./viewforum.php?f=4&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span> <span>↳ Technical Support</span></a></li> <li><a href="./viewforum.php?f=67&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span> <span>↳ iOS Support</span></a></li> <li><a href="./viewforum.php?f=3&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span> <span>↳ Strategies & Tips</span></a></li> <li><a href="./viewforum.php?f=37&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span> <span>↳ Gameplay Feedback</span></a></li> <li><a href="./viewforum.php?f=22&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span> <span>↳ Mainline Campaign Feedback</span></a></li> <li><a href="./viewforum.php?f=46&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>↳ Tutorial</span></a></li> <li><a href="./viewforum.php?f=40&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>↳ A Tale of Two Brothers</span></a></li> <li><a href="./viewforum.php?f=41&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>↳ An Orcish Incursion</span></a></li> <li><a href="./viewforum.php?f=42&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>↳ The South Guard</span></a></li> <li><a href="./viewforum.php?f=39&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>↳ Heir to the Throne</span></a></li> <li><a href="./viewforum.php?f=43&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>↳ Liberty</span></a></li> <li><a href="./viewforum.php?f=51&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>↳ Legend of Wesmere (single player)</span></a></li> <li><a href="./viewforum.php?f=56&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>↳ Legend of Wesmere (multiplayer)</span></a></li> <li><a href="./viewforum.php?f=49&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>↳ Eastern Invasion</span></a></li> <li><a href="./viewforum.php?f=55&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>↳ The Hammer of Thursagan</span></a></li> <li><a href="./viewforum.php?f=54&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>↳ Descent into Darkness</span></a></li> <li><a href="./viewforum.php?f=52&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>↳ Delfador’s Memoirs</span></a></li> <li><a href="./viewforum.php?f=45&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>↳ Dead Water</span></a></li> <li><a href="./viewforum.php?f=65&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>↳ Secrets of the Ancients</span></a></li> <li><a href="./viewforum.php?f=48&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>↳ Sceptre of Fire</span></a></li> <li><a href="./viewforum.php?f=53&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>↳ Son of the Black Eye</span></a></li> <li><a href="./viewforum.php?f=44&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>↳ The Rise of Wesnoth</span></a></li> <li><a href="./viewforum.php?f=47&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>↳ Northern Rebirth</span></a></li> <li><a href="./viewforum.php?f=50&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>↳ Under the Burning Suns</span></a></li> <li><a href="./viewforum.php?f=71&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span><span class="spacer"></span> <span>↳ Winds of Fate</span></a></li> <li><a href="./viewforum.php?f=31&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span> <span>↳ Add-on Feedback</span></a></li> <li><a href="./viewforum.php?f=17&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span> <span>↳ Website</span></a></li> <li><a href="./viewforum.php?f=26&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-cat-link"> <span> Development</span></a></li> <li><a href="./viewforum.php?f=9&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span> <span>↳ Art Contributions</span></a></li> <li><a href="./viewforum.php?f=23&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span> <span>↳ Art Workshop</span></a></li> <li><a href="./viewforum.php?f=32&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span> <span>↳ Writers’ Forum</span></a></li> <li><a href="./viewforum.php?f=21&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span> <span>↳ WML Workshop</span></a></li> <li><a href="./viewforum.php?f=58&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span> <span>↳ Lua Labs</span></a></li> <li><a href="./viewforum.php?f=19&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span> <span>↳ Faction & Era Development</span></a></li> <li><a href="./viewforum.php?f=15&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span> <span>↳ Multiplayer Development</span></a></li> <li><a href="./viewforum.php?f=8&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span> <span>↳ Scenario & Campaign Development</span></a></li> <li><a href="./viewforum.php?f=38&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span> <span>↳ Mainline Campaign Development</span></a></li> <li><a href="./viewforum.php?f=68&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span> <span>↳ UMC Replays</span></a></li> <li><a href="./viewforum.php?f=14&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span> <span>↳ Music & Sound Development</span></a></li> <li><a href="./viewforum.php?f=7&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span> <span>↳ Translations & Internationalization</span></a></li> <li><a href="./viewforum.php?f=60&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span> <span>↳ Translation Stats</span></a></li> <li><a href="./viewforum.php?f=12&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span> <span>↳ Ideas</span></a></li> <li><a href="./viewforum.php?f=10&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span> <span>↳ Coder’s Corner</span></a></li> <li><a href="./viewforum.php?f=2&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span> <span>↳ Developers’ Discussions</span></a></li> <li><a href="./viewforum.php?f=73&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span><span class="spacer"></span> <span>↳ Wesnoth Organizational Updates</span></a></li> <li><a href="./viewforum.php?f=18&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span> <span>↳ Art Development</span></a></li> <li><a href="./viewforum.php?f=28&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-cat-link"> <span> Miscellaneous</span></a></li> <li><a href="./viewforum.php?f=13&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span> <span>↳ Game Development</span></a></li> <li><a href="./viewforum.php?f=11&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span> <span>↳ Off-Topic</span></a></li> <li><a href="./viewforum.php?f=61&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" class="jumpbox-sub-link"><span class="spacer"></span> <span>↳ 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=e11e8f43e7bfc5c4d25918fded3c8ee4" 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&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" 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"> </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"> </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>® Forum Software © phpBB Limited</span> </p> <p class="footer-row" role="menu"> <a class="footer-link" href="./ucp.php?mode=privacy&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" title="Privacy" role="menuitem"> <span class="footer-link-text">Privacy</span> </a> | <a class="footer-link" href="./ucp.php?mode=terms&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" title="Terms" role="menuitem"> <span class="footer-link-text">Terms</span> </a> </p> </div> <div> <a id="bottom" class="anchor" accesskey="z"></a> </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&sid=e11e8f43e7bfc5c4d25918fded3c8ee4" } }); }); } </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>