A new script management system and script repository

  • Since I cannot sleep, I will be starting design on a new Rising World Mods script management system that I talked about a while back. I will continue documenting it here so that fellow scripters and dedicated server hosts can chime in with their thoughts.


    The idea is to provide a central repository for scripts where script developers can upload their new creations, and server hosts can subscribe to scripts and have updates automatically published upon server restarts if the host indicates he or she would like the auto-updates. Manual updates to specific scripts can be performed as well. The host will also be sent an email when scripts that they use have been updated.


    I am hopeful to have that done by tomorrow evening. It will require the following tasks to be completed:


    1. Modification to Server.jar to initialize the patcher. I will post more details about which classes specifically will be modified after I do some research. This will also cause a deployment of a custom server.jar in concert with official updates by the Rising World devs. Custom modifications will be minimal as to speed up the RWM updates after each official release of server.jar. Modifications will also include github logic for auto-patching scripts.


    2. Setup of a github repository.


    3. Web hook logic in a web portal or forum software that will allow developers to post version controlled scripts and allow hosts to manually download them, rate them, etc. Right now I am looking at Joomla as the portal to use. I have it installed on the proposed site, I just have to write the github hooks and create a proper upload/download and rating interface.


    That's it for this weekend. Once that is done I will go back to modifying the areaprotection system, and other scripts.

  • I ran into a snafu with the GlobalFunctions class. It may take me until Friday to get this together. There were a lot more changes to the Lua related classes than I thought.

  • I think, instead of integrating this into the Lua object, I will make this an external application that can be started on demand. In fact, I may make it part of a Server Manager application. I may extend the HttpServer to include the Lua script version number in the luascripts web output since I am adding a version number to the lua script object. Just thinking out loud.

  • Alright, off to a good start. I am creating an external application that will create a server for you, start and stop the server, allow you to edit Lua scripts, check for new versions of installed Lua scripts and let you download them, etc. Right now I am developing this to be run on the same machine just to get started; however, I plan on also creating a server-side piece that will communicate with the server manager (using the business logic currently in the client) so that the server can be run remotely through this server manager.


    I would like to put in some telnet functionality to pass commands to the game server, but I don't think the dedicated server has that functionality yet.


    https://www.dropbox.com/s/brwg…rw_serverManager.png?dl=0
    [Edit:] For the front-end I will be using Windows Forms Application because one of the libraries I use for the Lua script editing relies on Windows Forms Application controls. Booooo! As long as it works. Once the back-end is split out and run on the server, then different front ends can be developed by anyone with the interface documents.

  • Thanks. I will get some more basic functionality in there as time permits today. My main goal is to create the initial tool so that:

    • It checks all ports are open that the game needs.
    • Allows the player to edit the server.properties file without having to open it directly, as well as save those settings, so if they get overlaid it's just a quick restore.
    • Compare the software in the download link on the dedicated server download page to what is installed and notify the admin that there is an update.
    • Allow the admin to download the update and install it through the server manager.
    • Allow the existing server(s) to be cloned.
    • Allow for multiple server instances to be created proposing sets of ports for each instance (the admin will have to ensure those ports are open).
    • Backup and Restore options using hobocopy for dirty backups while the server is running, and clean backups before every reboot.
    • View and edit lua scripts currently installed.
    • Alert admin of lua script updates for those hosted at risingworldmods.com. Also allow downloading the newest scripts.

    That's all I can think of at the moment. If the game's software allows, I may be able to put player inventory peek and things like that in there. If I get a good portion of this done this weekend, I will release what I have along with the source. It will probably be under the Apache license as it allows quite a bit of freedom.


    Also, once the server piece has been completed (or initially completed as there will be improvements) I will release that and source as well. With the server piece running on the remote server, where the game is, the front-end can be written in anything. I chose JSON as the mechanism for getting data back and forth. It's lighter weight than XML and well supported.

  • While I think it's a good idea to have an external management system for scripts, configurations, and all.... why isn't it coded in Java, the language Rising World is written in, which is not only cross platform, but is not dependant on a 450Mb+ framework (i.e. .Net), and less WTF-prone? :)


    BTW: the link to the .png is dead.

Participate now!

Don’t have an account yet? Create a new account now and be part of our community!