A Glimpse on 2023

Jan 23, 2023

In 2022, gw2cc saw rapid development with over 2000 commits. In total, over 700 bugs have been fixed, and over 600 new features have been implemented. Given that development on gw2cc only started in October of 2021 we are very happy with the progress that has been made. Now with the end of the holiday season, we would like to give an outlook on what to expect from gw2cc in 2023.

This year we want to focus on three major points. Firstly, making all remaining gameplay aspects of GW2 that haven’t been implemented yet available in gw2cc. Secondly, improving the overall performance and reliability of the client. This among others encompasses an upgrade to Godot 4. And finally, improving gw2cc’s scalability and making it overall easier to use for everyone. Beyond these, there will of course be countless other smaller (or bigger) changes throughout the year that didn’t make it into this list. For instance, a better plugin manager and a rewrite of the TradingPostManager are on our to-do list as well.

We also want to use this opportunity to express our gratitude to everyone that submitted bug reports and feature requests in the past, as well as the many people that supported us throughout the last year. To all those people we want to say: Thank you! Without your support and trust throughout the beta, gw2cc wouldn’t be where it is today.

With that being said, let’s have a look at what we have in store for gw2cc in 2023!

Upgrade to Godot 4

Not only gw2cc but also Godot, the underlying game engine, saw a lot of work and improvements over the last year. Its next major iteration, Godot 4, is slated to be released very soon and will not only bring massive performance improvements but also a lot of new features and quality-of-life improvements for developers. Therefore, we will evaluate upgrading to Godot 4 as soon as the engine is stable enough. Preliminary experiments showed huge performance gains, especially when a lot of agents were present on the screen.

Source: https://godotengine.org/article/dev-snapshot-godot-4-0-beta-14/

Since the upgrade to Godot 4 will be a breaking change, all plugins and bots need to be ported to the new engine. While we understand that this means additional work for plugin developers, we believe the advantages Godot 4 brings to the table far outweigh the extra overhead.

To make this transition as smooth as possible, we will first introduce a beta version of the new Godot 4 client and allow everyone to use and test it for multiple weeks before it will replace the old client. This not only allows us to fix any remaining bugs but also gives developers time to migrate their code to the new Godot version.

Physics Rewrite

The second major upgrade this year will be gw2cc’s physics engine, i.e. the part of gw2cc that is responsible for calculating how agents move in the world. In its current form, it has become increasingly difficult for us to add new features, such as mounts, dodging, or gliding. This has been the result of many small ad-hoc changes and workarounds over the last year as we slowly learned more about how the GW2 physics engine works under the hood.

Consequently, the physics engine needs a complete rewrite. While doing so will be a great endeavor, ultimately it will allow us to implement many features we have postponed until now and it should bring movement more in line with the official client. Among others, we hope to support moving platforms and mounts in 2023!

Collision avoidance using Godot 4’s new NavigationServer.

While we are at it, we potentially also consider switching to Godot’s navigation system. Godot uses the same pathfinding and navmesh generation libraries as we do under the hood, Recast & Detour, but arguably dresses them up more nicely. It exposes many features that we currently only support partially or not at all. With Godot 4, navigation saw huge improvements. One additional benefit this would bring is collision avoidance, which would allow a bot to get from A to B while simultaneously avoiding any monsters on the route if possible.

Missing GW2 Functionality

While most of GW2’s systems are already available to developers in gw2cc, some core gameplay aspects are still missing; most notably, chat, projectiles, and guilds. In 2023, we aim to implement most of these missing systems to give developers complete control over all aspects of GW2.

To this end, we encourage all developers to open issues for all features they are missing. Especially, so we can prioritize what to implement next.

Scalability

Supporting botting at scale has always been one of our primary goals, if not the goal. It is also the reason why we specifically chose to write a standalone client for GW2, a much more challenging task than a mere memory-based botting API, and until now also unprecedented. With gw2cc becoming more stable and feature-complete with each passing month, we believe that in 2023 the time is finally ripe to give large-scale botting the love it deserves.

While there are already some users running a larger number of gw2cc instances successfully, support for larger bot farms is still lacking. There currently is little to no support for managing multiple gw2cc instances. Log files are not correctly created for multiple instances, and there is no integrated way to monitor or control gw2cc instances remotely.

One step to improve the situation will be the introduction of a monitoring plugin, likely within the first half of the year. This plugin will periodically record a set of core statistics, such as gold, experience, acquired items, or current position, and will work independently of any specific bot. Similar to a logging library, the plugin will be written in a modular way allowing users to output these statistics and events to various sinks, e.g. either writing them to disk locally or forwarding them to web services via REST requests. Its arguably most important feature though will be session management. Session management will allow one to check the health of a bot by sending periodic heartbeats, as well as enabling remote restarts or shutdowns of a bot.

The most limiting factor with regard to scalability currently is the memory consumption of a single instance. Even though memory is cheap these days, it’s easy to see how a memory consumption of a mere 2-3GB per instance can become inhibiting when one tries to run 40 bots on a single computer or server. A major step to improve the memory usage of gw2cc will be the introduction of a shared navigation server. The navigation server will handle pathfinding for all clients simultaneously and thus allow sharing and reuse of navigation and map data between clients. Since this data makes up most of gw2cc’s memory consumption, this system will significantly reduce the amount of system memory required to run a large number of clients.

Furthermore, with the migration to Godot 4, a true headless mode will become available on all supported platforms. This means, going forward, no GPU will be required to run gw2cc in standalone mode. With a fix for the Linux version coming within the next months, this will make a wide variety of cheap servers available for botting.

We believe that with all these aforementioned improvements, running 30, 50, or even 100 instances on a single computer should become possible!

Long(er) Term Plans

Beyond the current plans for 2023 outlined here, there are also some other things we have in mind for gw2cc that might or might not be realized in 2023 already. This entirely depends on how fast we will be able to progress, and we can’t make any hard promises about when the following features will be ready.

One of the major issues we currently face with gw2cc is the reliance on the GW2 API for item and skill data. In the long term, we aim to get rid of this dependency altogether, especially since the data provided by the API is often inaccurate. Instead, we want to read out the data directly from the content files that the official client uses as well.

Related to this is our plan to directly read from the .dat archive file used by GW2. This would remove the requirement to download the same data again and instead enable reusing the data already downloaded by GW2. We hope that this change will give people with weak internet connections some relief since they are facing a lot of issues with the gw2cc update process right now. This does, however, not mean that we won’t improve the updater until then. There is definitely a lot of room for improvement there, especially with regard to usability and robustness, and providing a smoother update experience is one of our goals for 2023.

Hopefully, this article gave you a solid overview of what is planned for this year. If you have any questions, feedback, or concerns, leave us a message in the discord. We would be very glad to hear your thoughts on this. Happy botting!