Forums » Community Projects
Neoloader Release Thread
As quite a few of you have likely seen mentioned, I have been working on a plugin for Vendetta Online that operates as something of an in-game plugin manager, allowing you to turn on and off plugins without mucking around in the game's files. It also provides the neccesary environment to figure out which plugins to load in what order, based on declared versions and dependencies. There has been a lot of work in facilitating an API that can accomplish this, creating the methods by which plugins should talk to each other in a way that is version-aware, and after over a year and a half of work on this concept, I am finally (hopefully) prepared to present this public beta, now live on VOUPR and NexusMods.
Now, in order to take advantage of Neoloader, plugins will need to be slightly redesigned, as the utility cannot entirely overwrite the game's built-in plugin loader and cannot "see" plugins that do not register themselves into it. To this end, there are two resources:
1) NeoPatcher
This utility can go through your list of plugins and patch each one for you. The plugins it alters will be made compliant with Neoloader's loading mechanism, but will otherwise be unaltered. Grab NeoPatcher here - This is a windows application. The application source code can be found on the project's github here. The core of NeoPatcher is made with a luascript, so any system with a lua interpreter (+a few libraries) is capable of running NeoPatcher.
2) API Documentation
The "Library Management Engine" API will be completely documented, and kept up to parity with any new features added. The docs will explain the basics of setting up compatible plugins and instruct in how to use the features available for new plugins going forward. You can view the documentation on this website!
This does change things going forward. Plugins have historically been very monolothic outside of a sparse few projects, but with Neoloader, there is now the concept of dependencies. While I'm sure that makes it sound like plugins could become more unreliable, Neoloader has been designed to focus on being as both dummy- and bullet-proof as possible. If plugins error out during the Init loader process, the errors should hopefully be caught; for missing dependencies, as long as they have been declared (for hard requirements) or run through a 'require' catch (for soft dependencies), the plugin or parts of it should be prevented from loading outright in the first place.
And here's where I need the most help. Neoloader is offered as a Beta specifically because I want to make sure it is as stable as I want it to be. I want Neoloader to become something indispensible to plugin development, because I think the features it offers are beneficial to community developers and to end users.
Neoloader is available on the following platforms:
Grab Neoloader from GitHub releases or contribute!
Grab Neoloader from NexusMods
Grab Neoloader from VOUPR
Wanted:
> Rigorous testing of Neoloader, to make sure it does what its SUPPOSED to do, and to catch things it maybe SHOULD be doing too! Or, you know, just use it and see if something goes boom.
> VOUPR maintenance - new link type for linking "Dependencies"
> Testing of the NeoPatcher utility
May 2023 Public Beta
Neoloader 5.2.0
API 3.6.1
Relatively minor update, as i've been focused on utility mods like Babel and Hitmarker, plus some much-needed work on the VaultRaid system (its coming >.> ). Fixed a few bugs (including that annoying one where neomgr couldn't show first-time registered plugins), and am playing around with how the notification system works. This particular point shouldn't be considered mainline API yet, so don't use it in your own code, but everything's A-okay otherwise so far. The devs gave me a bit of a scare with the ReadString2 read value bug, so i'm real glad that got patched very quickly...
Links on NexusMods and VOUPR have been updated.
Neoloader 5.2.0
API 3.6.1
Relatively minor update, as i've been focused on utility mods like Babel and Hitmarker, plus some much-needed work on the VaultRaid system (its coming >.> ). Fixed a few bugs (including that annoying one where neomgr couldn't show first-time registered plugins), and am playing around with how the notification system works. This particular point shouldn't be considered mainline API yet, so don't use it in your own code, but everything's A-okay otherwise so far. The devs gave me a bit of a scare with the ReadString2 read value bug, so i'm real glad that got patched very quickly...
Links on NexusMods and VOUPR have been updated.
June 2023 Public Beta
Neoloader 5.3.0
API 3.7.0
Biggest change in this release is probably how finding and resolving files works. Those functionalities have been split into seperate functions, lib.find_file() and lib.resolve_file() respectively. Plugins with the auth key can now unlock classes and set load states, and command cleansing is now optional since the developers have fixed the related bug this was a workaround for. More can be found in the attached changelog. NexusMods, GitHub, and VOUPR have been updated.
Documentation will be updated soon!
Also, neomgr replacement incoming soon!
project reworked and updates rolled into neomgr itself
Neoloader 5.3.0
API 3.7.0
Biggest change in this release is probably how finding and resolving files works. Those functionalities have been split into seperate functions, lib.find_file() and lib.resolve_file() respectively. Plugins with the auth key can now unlock classes and set load states, and command cleansing is now optional since the developers have fixed the related bug this was a workaround for. More can be found in the attached changelog. NexusMods, GitHub, and VOUPR have been updated.
Documentation will be updated soon!
Also, neomgr replacement incoming soon!
project reworked and updates rolled into neomgr itself
2023 July Public Beta
Neoloader 5.4.0
API 3.8.0
Mods can now be given a "frozen" state, which will prevent dependents from executing until the state is cleared. This will greatly improve "patched" mods, or any plugin that does major execution during the standard loading process, as the mod can now control *when* a dependent is run. Also new in this release is the ability to declare a range of allowed versions for dependency. If multiple of the same plugin being called are installed, only the latest within the valid range will be used. See the included changelog for more details on this release.
Documentation is running behind still; this month has been busy both IRL and in the depth of the changes made during this month's beta. No pressing updates are planned, so August will likely end up being fairly chill - the perfect time to catch up on the previous two month's worth of updates.
Documentation has finally been updated! Grab the documentation files here!
Also, a new version of Neopatcher is in the works. Instead of being made with the proprietary and platform-limited Clickteam Fusion, the new version is currently written in lua itself with iuplua, lfs, and inifile libraries, and is only in need of a wrapping mechanism for distribution. Source will be available soon.
Neoloader 5.4.0
API 3.8.0
Mods can now be given a "frozen" state, which will prevent dependents from executing until the state is cleared. This will greatly improve "patched" mods, or any plugin that does major execution during the standard loading process, as the mod can now control *when* a dependent is run. Also new in this release is the ability to declare a range of allowed versions for dependency. If multiple of the same plugin being called are installed, only the latest within the valid range will be used. See the included changelog for more details on this release.
Documentation is running behind still; this month has been busy both IRL and in the depth of the changes made during this month's beta. No pressing updates are planned, so August will likely end up being fairly chill - the perfect time to catch up on the previous two month's worth of updates.
Documentation has finally been updated! Grab the documentation files here!
Also, a new version of Neopatcher is in the works. Instead of being made with the proprietary and platform-limited Clickteam Fusion, the new version is currently written in lua itself with iuplua, lfs, and inifile libraries, and is only in need of a wrapping mechanism for distribution. Source will be available soon.
cough cough ahem, well, that's why you should clean-install test your plugins before releasing them. Not sure how I missed that, but the template table for configuration wasn't done right. That's fixed now, and all official download locations are updated.
NeoPatcher is now available for download through NexusMods or from the project's github! The release package is intended for windows users, but as the source is available, anyone should be able to compile the application for their own computer. Compiling isn't strictly necessary, either; the actual functionality of NeoPatcher is all handled by the lua script; the C++ executable merely serves as a delivery mechanic for ease of use.
If you do choose to run the lua script directly, please note that IUP/IUPLua and LuaFileSystem libraries must be added to your lua interpreter.
NeoPatcher will back up your mods before changing anything, but please let me know if you find a mod that fails to work after being patched with NeoPatcher! I tested 117 plugins from VOUPR, and so far have a 100% success rate, so i'd be curious to find under what circumstances a plugin would fail.
If you do choose to run the lua script directly, please note that IUP/IUPLua and LuaFileSystem libraries must be added to your lua interpreter.
NeoPatcher will back up your mods before changing anything, but please let me know if you find a mod that fails to work after being patched with NeoPatcher! I tested 117 plugins from VOUPR, and so far have a 100% success rate, so i'd be curious to find under what circumstances a plugin would fail.
2023 November Release
Neoloader 6.0.0
API 3.10.0
This update delivers SIGNIFICANT reworks to the usability of Neoloader and its utilities. The image above is what neomgr 2 looks like, no longer the ugly grey themeless block that it was. It can properly manage your LME plugins, and even configure them directly in its own interface should they support it. neomgr will use Babel if enabled, providing extendable language support; EN/ES/FR/PT languages are included.
Setup and Uninstallation processes are also reworked entirely, and support a more hardcoded language system. Again, EN/ES/FR/PT are provided, though these are not extendable due to implementation limitations. Setup must be triggered by the user now; The old system probably confused more pilots than it helped.
A recovery system is now implemented as well. If Neoloader or a plugin has a catastrophic failure, this will provide a series of steps to try in-game that may fix the issue. This is more oriented at mobile pilots who might not have access to their own files and can't remove a misbehaving plugin - EVEN a non-LME one. Solutions range from a simple reload to nuking the config of many potential settings, to even attempting to load the user interface and ignore the bug.
I'll be dropping that -beta tag soon, I think.
Neoloader 6.0.0
API 3.10.0
This update delivers SIGNIFICANT reworks to the usability of Neoloader and its utilities. The image above is what neomgr 2 looks like, no longer the ugly grey themeless block that it was. It can properly manage your LME plugins, and even configure them directly in its own interface should they support it. neomgr will use Babel if enabled, providing extendable language support; EN/ES/FR/PT languages are included.
Setup and Uninstallation processes are also reworked entirely, and support a more hardcoded language system. Again, EN/ES/FR/PT are provided, though these are not extendable due to implementation limitations. Setup must be triggered by the user now; The old system probably confused more pilots than it helped.
A recovery system is now implemented as well. If Neoloader or a plugin has a catastrophic failure, this will provide a series of steps to try in-game that may fix the issue. This is more oriented at mobile pilots who might not have access to their own files and can't remove a misbehaving plugin - EVEN a non-LME one. Solutions range from a simple reload to nuking the config of many potential settings, to even attempting to load the user interface and ignore the bug.
I'll be dropping that -beta tag soon, I think.
2023 December Release
Neoloader 6.1.0 & 6.1.1
API 3.11.0
Mostly led by the direction of Draugath, this update further increases the usability of Neoloader and its utilities. This update mostly focuses on improving status and error reporting to the user, and also reworks how compatibility plugins are handled by the loader system.
So you don't have to scroll up to the first post, you can grab Neoloader from NexusMods or voupr.
Also, NeoPatcher has been updated to match the new system; you can grab v2.1.1 on github or NexusMods.
Neoloader 6.1.0 & 6.1.1
API 3.11.0
Mostly led by the direction of Draugath, this update further increases the usability of Neoloader and its utilities. This update mostly focuses on improving status and error reporting to the user, and also reworks how compatibility plugins are handled by the loader system.
So you don't have to scroll up to the first post, you can grab Neoloader from NexusMods or voupr.
Also, NeoPatcher has been updated to match the new system; you can grab v2.1.1 on github or NexusMods.
I've migrated the documentation from its annoying github source to a wiki.js website, which can be viewed here! Once i'm done with some other side projects and return to improving Neoloader, updating the documentation should prove a lot easier now.
Currently, the pages were uploaded raw as-is, but will be converted to wiki.js' markdown soon.
Currently, the pages were uploaded raw as-is, but will be converted to wiki.js' markdown soon.