luxaritas / pylus Goto Github PK
View Code? Open in Web Editor NEWPython LEGO Universe Server Emulator
License: MIT License
Python LEGO Universe Server Emulator
License: MIT License
Ultimately, I think handling things this way will lead to issues with both performance and add complication without really providing useful flexibility for mods that I had intended. This functionality should instead be moved into core plugins
It would be great to set up a github actions CI running pylint, mypy, and a unittest-based test runner
In addition to the priority system, it may necessary to be able to fully disable a plugin. In particular, while handle_until_value and handle_until_return allow you to insert a plugin at a higher priority and "intercept" another action, simply using handle
accumulates results. Either:
I really should have made an alt account to raise this issue... But it was annoying my OCD! :P
This should just be a component of a zone server (specifying a dedicated chat server doesn't work)
For type safety and autocomplete goodness. Suggested by @alentoghostflame
We're using the database to store sessions, but wouldn't it be a better idea to use a cache like redis to store them?
The blocking point for upgrading is that we use DB calls as synchronous operations, whereas in v3 we basically have to treat them asynchronously since we execute within an asynchronous context (given that our communications run on top of asyncio). Some work is required in order to make that work - specifically, we probably need to convert a bunch of functions to be async (including the core event handling mechanism)
Currently, we load plugins by folder depending on what type of server we boot. Instead, we should have a class parameter or decorator that specifies which types of server it should be loaded for. This could be done using a syntax like:
*
(always loaded)auth
(auth only)master
(master only)world:*
(any world server)world:char
(char only)world:<zoneid>
(only world servers of a zone with the given numeric ID - perhaps we add an enum with common world names)I had good intentions here, but I don't think it is ultimately beneficial. We should probably just have a folder full of packet definitions and other serialization/deserialization code.
Instead of using the actions
function, it would be great to have a function decorator that specifies what event is being listened for for a function within a plugin
Currently, a new process is started for every entry in the config file. This is not ideal for a handful of reasons. Instead, we should introduce a proper instancing mechanism. That is:
ZoneTable
defines both a population_soft_cap
and population_hard_cap
. When the soft cap is reached, additional players are only sent to the zone if explicitly requested (eg, to join a friend or teammate), whereas once the hard cap is reached, players are sent to a new zone regardless.This functionality should be open to plugins extending it. For example:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.