-
Posts
2,025 -
Joined
-
Last visited
-
Days Won
60 -
Feedback
0%
Content Type
Articles
Profiles
Forums
Store
Everything posted by Elfo
-
Project Outerlude - A Modern Interlude aCis fork
Elfo replied to Elfo's topic in Server Development Discussion [L2J]
14,299 GBP Yeah and it loads the actual files from the actual client so it's the same unr, utx, etc files that you have on the client. -
Project Outerlude - A Modern Interlude aCis fork
Elfo replied to Elfo's topic in Server Development Discussion [L2J]
Textures and animations also work -
Project Outerlude - A Modern Interlude aCis fork
Elfo replied to Elfo's topic in Server Development Discussion [L2J]
The account control panel also comes with a real-time web-based L2 Client so you can see what's going on in the server without needing to load the client: -
Project Outerlude - A Modern Interlude aCis fork
Elfo replied to Elfo's topic in Server Development Discussion [L2J]
There is no need for gRPC in this case, even tho originally it was gRPC based but since we don't need it to be bi-directional, we switched to simple http requests for the web calls and SSEs for the data streamed from the server. There are distributed locks in place to precent race conditions between actions that can happen between multiple web instances and the server. Local models can also be slow depending on the model, and most external models can actually be faster than local ones if you use Flash 2.5 or something along those lines. I am running on 512GB of Unified Memory on my Mac Studio M3 Ultra so the speed of the local model for a small model is pretty good but I tested it with Gemini too and it works equally as fast and in some cases faster. The way it works is that I'm using pgvector (one of the benefits of moving to Postgres) to search the data and see what the player can see etc and there is some batching of the next few actions for 2-4 seconds for the user until the next LLM request fires. The batching also includes branching on logic so if they for example fall under some HP they will move to kiting instead of attacking or maybe they heal etc. Everything is authed and permission-based. The server and the backend of the frontend have secure communication between them, either with a symmetric key (not recommended for production) or a certificate (the recommended way), so there is no worry. It's all tied to the account's access level, etc., so nobody can make an action that they normally wouldn't be allowed to do. Even the MCP is token-based, and there are prompt injection protections in place. The MCP is audited, and every mutation needs confirmation. The admin area is only accessible to the admin account anyway so normal users can't access it. -
I came out of my cave as I do once every 5 years. By now, I know nobody really cares about L2, but I still find it fun to experiment. Everything you see here will be free and open source. I have no interest in selling anything. Long story short, I like to revisit Interlude and apply what I've learned to see how far I can push it. Here's Outerlude, a public fork of aCis for the modern age. Video demo: Work that has been done: Redone the netcode from scratch to be async The NPC AI was completely redone based on Finite State Machines Moved to PostgreSQL and using some of its cool features Lots of config that should be hot reloadable has moved to the database OpenTelemetry instrumentation, where it makes sense, and a Grafana dashboard A built-in REST API for server management A built-in MCP Server for LLMs Nidrah AI, an AI Agent to make managing the server easier Real-time server map view Chat auditing and live snooping A new Fake Players Engine with a Node logic system and a new LLM planner for any behavior Just watch the video If there is interest in this and I'm happy with it, or I get bored (which I always do), I will open-source it. Let me know what you think and if there is some feature you'd like me to implement.
-
Yeah, it's pretty good if you give it enough context on what you want it to do for you. If you leave it vague, you will get the same generic dark background gradient purple AI-generated looking website, but it's much better at generating unique ideas when you give it some context. Highly recommend it.
-
Let's goooo
-
Open it I wanna play
-
Ofc it does . All it was trained on was farming for levelling. It's not about doing something unpredictable. It's about potential. Feed it a bigger context and train it on class-specific fighting patterns, buffing, item values, trading, chatting in L2 lingo, reading trade chat, party-based farming, crafting goals, etc, and you have something that a normal deterministic bot would take a really long time coding to achieve. Add that to all of the work being offloaded to a model instead of the gameserver, and you have a much better solution that feels way more natural. Ofc you can do pretty much everything with a state machine but you'd have to write insane amounts of code. It's a waste of time. Don't be blindsided by your hate for AI. There is considerable potential here.
-
You'll need to test it, but you need at least some decent GPU power for it to be reasonably fast. What you can also do is predictive actions, so send a single request that is bigger, let it take some time and then instruct the response to include a batch of 5-10 followup actions which can be processed on the client (the l2 server).
-
I don't really work on L2j anymore, but from time to time, I check up the forums just in case someone built something cool, and I stumbled upon this: It's actually really easy to implement LLMs (both local, like gpt-oss, and online, like ChatGPT or Gemini) for any sort of action in L2. Even without training a model explicitly, a good GPU and some basic LLM knowledge can take you very far. Here is an example of an auto play bot I made in 10 minutes that uses gpt-oss (which is mega overkill) locally with a 5090 to do some basic farming. As you can see from the LM Studio responses, it is fairly fast (and uses reasoning too) to think about what's the best course of action for a given situation. Basically just a quick proof of concept. If I had time, I would make something like this for auto-play/farm or bots, since LLMs would play really nicely with fake players that can actually think and are not completely pre-programmed. It's quite cool.
-
Help autofarm code adaption on acis 382
Elfo replied to thepsolartek's question in Request Server Development Help [L2J]
What you linked, is my code. It is already shared for 382 here; -
Guide L2Proxy - A simple Proxy for Lineage 2
Elfo replied to Elfo's topic in Server Shares & Files [L2J]
There is nothing special to adat. The service itself is cross-chronicle and the l2j code is so minimal it should be easily adaptable -
a
-
Code Autobots | The best Fake Player & Autofarm Engine
Elfo replied to Elfo's topic in Server Shares & Files [L2J]
You can use this as an example to see how: https://github.com/Elfocrash/L2jTesla -
This one is only guaranteed if you're using try-with-resources btw. In some cases they will eventually close because they will get forced by the GC (even though they are unmanaged, the JVM will try to close when possible before disposing) but it's not guaranteed and they can cause socket exhaustion.
-
WTS Siege Date at Enter FOR INTERLUDE & H5
Elfo replied to cicos's topic in Marketplace [L2Packs & Files]
a -
Guide L2Proxy - A simple Proxy for Lineage 2
Elfo replied to Elfo's topic in Server Shares & Files [L2J]
Ignore the service itself. It's just an example of an implementation of the concept. You can implement it using proxies instead of using AWS' Edges (which is basically what AWS is also doing). Like I said, spin up an Azure or AWS environment (wherever you have free credits) and test if for yourself. I tested it with the L2jBrasil folks when I originally created it and that's where my results come from. Now about the "torture testing". I define torture test as 1 million concurrent connections with maybe 10m requests per second. Has it been torture tested this way? Nah, but it's perfectly stable with at least 500 L2 concurrent connections without any signs of degradation. Keep in mind that traffic is also segregated. It's perfectly stable and perfectly fine to use based on no compaints from at least 20 servers that I personally know that are using it. And at the end of the day you don't even have to use the service itself. Simply gets a VPS and configure it as a proxy. You can still use the Java part. You just lose some features but gain all the benefits of the concept. -
Guide L2Proxy - A simple Proxy for Lineage 2
Elfo replied to Elfo's topic in Server Shares & Files [L2J]
It's nothing new. You probably missed my edit but: Here is an example of an AWS dedicated to this exact concept called AWS Global Accelerator with a dedicated section on how this benefits Gaming. I personally know that Blizzard is using it for games like WoW, Overwatch. Basically every big company that does any sort of networking is using that concept and has been for years in both gaming and other general networking.
