Jump to content

Elfocrash

VIP Member
  • Content Count

    1,819
  • Joined

  • Last visited

  • Days Won

    37
  • Feedback

    0%

Everything posted by Elfocrash

  1. Working on a complete rewrite of the engine. Nothing in terms of AI has changed yet but now it fundamentally works in a different way. Instead of having a single repeatable task iterating over all the players on an interval each players has their own thinking "task". I use quotation marks because it's not really a task or a thread and it's not using the threadpool. With an iteration speed of 200 milliseconds the bots can now think 5 times a second individually giving a way more fluid and realistic action speed. In terms of performance, it has actually improved significantly. Here is an example with 1000 players fighting Valakas. I was barely getting one frame per second but the CPU load was averaging 2-4%. Once I benchmark how far it can scale without any performance hits and settle on how low I can go on the iteration interval I will start rewriting the way the bots think as well.
  2. It's using ApiKey auth. It's not client facing auth where you get credentials and return a key. You can do that with Basic auth but you have to enable it.
  3. Isn't it amazing when moderators completely delete proof that disproves the misinformation spread by the topic's author? Just to reiterate, no matter how hard he is trying to deny the truth, his decompiled sources show it is based on frozen.
  4. Probably because this post is 1 month old and you haven't added a single event. Also Dev was a consultant and probably the best user of the best event engine that ever existed in L2j, Nexus. People will pay for quality work. Keyword, "quality" here. Ofc people will complaint if you try to sell 4 shared events for 100 euros. You are insane.
  5. Well that doesn't mean anything. I know Melron personally and I can assure you that he is decent in what he does but being an L2j Dev in Mxc in 2018/19 doesn't mean anything. He probably figured that out that's why he selfrequested a demotion.
  6. They do mention him quite a lot In the report scammers topic
  7. Added api key based authentication as requested. Requests will only be served when the x-api-key header is set with the configured value.
  8. They accepted to pay my rate and the work for both finished 2 and 1 years ago respectively Correction: 2 of the biggest, not the biggest
  9. This would be fine as long as the player is the one who chooses this number, not you Then move it at the top if the player is out of the current index range You're missing the point. There is nothing special in the ranking code. It's just very basic sorting. The UI looks terrible so I doubt anybody would be interested in that anyway.
  10. L2BattleRoyale had a toggle for the user to enable the exact same real time update tech for the ingame toplist. It's nothing special and it's very easy to do. The reason why you don't have a scrolling bar or pagination is because the HTML refresh will make it look even more unresponsive that it is right now since the scroll won't be maintained on each update.
  11. Nobody cares that it updates real time. It will be such a mess to follow on a live server. Once again, you are thinking as a proud developer that did something technically interesting but you fail to make something that players wanna use. And every single line of feedback you got from everybody was from a player standpoint not a developer one. Exactly. And I chose to not work in my country because I don't like it and I wanna work with things way more interesting than SAP (which is pretty much anything else) Bye bye
  12. You're such a fangirl. Just because something was good back in the day doesn't mean it's still good. But you are still using SAP so there is not much to expect from you anyway. Fun fact. I am the developer of 2 of the biggest interlude servers right now and I have been for the past 2 years. Guess what? In both servers we have really fancy UI and really good UX. You know why? Because people love it. PS: When everybody is telling you the same thing then it's most likely that you're the wrong one not the rest of the world.
  13. I mean...acis is a better project and free...
  14. Yeah it's over don't worry. You are missing the point so badly, I won't waste any more of my time.
  15. There is absolutely no negative feedback. There is only constructive one. I'm not a 10 year-old that's looking for a fight. I'm giving you my honest feedback. If you don't wanna take it it's your choice.
  16. Well you're wrong. It's actually all about the looks and the usability. It's called an interface for a reason. The UX looks terrible because there is no scrolling bar and it looks just plain boring. Excel has better UI and UX than this. Let me elaborate: Having tab buttons in the title bar looks so awkward There is no tab highlighing to indicate which tab I am viewing after I clicked it Having the class represented by a skill is a bad idea especially when those skills can be used by multiple classes. Examples: Stun shot can be used by 3 different classes Same for backstab Removing the scrollbar makes the UX be SO SO SO bad. I have to tap x times to see x rows down? Wow you just took the community board to lineage 1 levels of unusable Clas name is there but the clan crest isn't Ally isn't there at all The title has a width of 400px+ but it can only be up to 16 characters long or so I can see that each click to change the index is sending a new bypass and rerenders the community board from scratch. Even though I'm sure you cache all that data and there isn't a db call every single time you are casting a lot of client power and network traffic. The CB html is the biggest packet ingame byte-wise. You can say that all this is is a toplist and looks don't matter but a json object or a csv can also be a toplist. They are just crappy looking and unusable ones, like this one. This is how you do ingame toplists list a boss. PS: When you post something and ask for feedback, be able to take it. If you wanna ask like a child and reject everything then don't post it in the first place.
  17. It looks very bland like I'm looking at an excel sheet. Try to make it more interesting. Having everything use the same font size is a big no-no because it implies that there is no difference between the hr and the tr. The title and the clan take up so much width space for absolutely no reason. I guess it's interesting technically but it is so boring visually.
  18. Changed the way handlers are registered. Now they will be scanned automatically during server startup and they will be registered based on their annotation. This means that all you have to do to add a new endpoint is to create a request handler and add the Get, Post etc annotation.
  19. The problem with having multiple points of truth is that you don't have a single one you can fully trust, that's why i trust nothing but the database and the World class. I also don't wanna touch the core at all so if I do any caching it will happen in the API level.
  20. The problem is that the offline players are not loaded in memory so the dB call is inevitable. Everything that is loaded in the in memory cache will be served by the cache when possible. If the endpoint was get online players only then yeah it would be coming from the World class. Auth is very simple to add. It’s basically a simple middleware. originally when I started this it was to actually make a new ACP but it’s too much work and I don’t really wanna do front end anymore so I just created the api. If people wanna make their front end that’s fine by me. EDIT: Oh I now see what you mean, I read it wrong the first time. Yes it would make sense to get that info from the cache if the player is online. I will add that.
  21. So I was bored again... L2jRest is a RESTful API for L2j It is created for latest aCis but you should be able to adapt it is you wanna use it for other projects. L2jRest is an open source project licensed under MIT. You can find the source here: https://github.com/Elfocrash/L2jRest Why use it? You can use the data of your server in your website You can create an account control panel with it You can expose data to your community to allow them to make third party apps Technical stuff It is written in Kotlin. It is using the Ktor framework. Ktor is using coroutines to achieve asynchronous request handling. It is very efficient and very fast. It is using Netty as the underlying server. It is written in a CQRS manner with query handlers for get endpoints and command handlers for post, put, patch, delete etc. It is using Koin as the IoC framework. How to setup Download and install Intellij IDEA Git clone the project and open it with Intellij Run the build Gradle task. It is configured to create a fat jar with all the dependencies included Paste the jar in your project, add it in your classpath and add the following line at the bottom of your Gameserver.java: L2jRestApi.INSTANCE.start(); Running the gameserver will also run the api. It is running under port 6969 How to extend it All you need to do if you wanna add more endpoints is to add a new handler and then add the Get, Post etc annotation depending on what endpoint you want this to be. Current endpoints: http://localhost:6969/api/players http://localhost:6969/api/players/{id} A couple of endpoint examples Endpoints: http://localhost:6969/api/players Response: { players: [ { "id": 268480927, "name": "Test", "level": 1, "isOnline": false, "pvpKills": 0, "pkKills": 0, "isNobless": false }, { "id": 268480924, "name": "Test2", "level": 1, "isOnline": true, "pvpKills": 0, "pkKills": 0, "isNobless": false } ] } Endpoint: http://localhost:6969/api/players/268480927 Response: { "id": 268480927, "name": "Test", "level": 1, "isOnline": false, "pvpKills": 0, "pkKills": 0, "isNobless": false } Currently it just supports two endpoints and no authentication. I am planning to add more endpoints and ApiKey based auth tomorrow. If you can't be arsed to build the project yourself but you wanna take a look anyway you can download the jar here
  22. That’s what you call proof? I guess you don’t do programming for a living. The single request response times with a single db query for microframeworks and full web frameworks with a combination of different databases such as postgres and MySQL with no proof that a cp is configured to be used is what you call proof? On top of that the Spring framework in this example is configured to work with Postgres not MySQL and there is no clarity on which cp is used or how it’s configured. ALSO you can see that the leading Microframeworks have better performance because: 1. They are not using an ORM and they are executing their DB queries raw so OFC they will have optimal performance 2. They have the 1/1000 of the codebase that Spring has and they can do a very limited amount of things. i also find it very funny that you choose to know single query (which doesn’t even make sense for the CP) and not multiple because in multiple is the top most performing full web framework. Seriously i am wasting my time with this joker. I would be ashamed if I were you.
  23. Are you seriously comparing the performance of microframeworks will a full fledged web framework? What a joker.
  24. Again that’s just not true. There are real world cases but tens of companies (like the ones I mentioned) and people that publicly say why it’s the best one right now. Just as an example here: https://stackshare.io/spring every single company listed there is using Spring which means they are using almost certainly Hikari since it’s the default. Are you seriously debating that people that use the most used java web framework don’t have apps in production or that they don’t want the best for their system? Get out of here. Your knowledge, like many of your peers in this forum, is just very very outdated. Thats all from me. I gave your enough info to do your own research.
  25. I am not talking about benchmarks from the author. I am talking about benchmarks from third parties, huge companies I have worked with and also myself. On top of that my private pack which is an acis fork collects metrics for all IO operations and dumps them in grafana. You link a post from 2015. Show us your own research. Your own numbers. c3p0 has been dead for years now. Tomcat was the standard for a while but now HikariCP is the standard across all jvm development. You know it is the best because the best and most used Java web framework, Spring 2, is using it as their default connection pool (Spring 1 was using tomcat). Companies like Netflix, intuit, Okta (just to name few) with tens of thousands of tps are using it for a reason. Nobody, except legacy software, is using c3p0. Those are just facts. You can tell yourself whatever lie you want but you are just wrong.
×