Honorable Member NoFr1ends 754 Posted April 24, 2020 Honorable Member Share Posted April 24, 2020 (edited) Welcome to QuantumCore, most people always told you me you are crazy, that's a waste of time don't do that. But I don't care and still started this project, mostly as a learning process. So what is QuantumCore you ask? QuantumCore is basically a server emulator for Metin2. In comparison to what we currently mostly use this doesn't use any source code by Ymir/Webzen and is a full reimplementation of the 40k server. This project is still in work and far from being completed. So why do you already create a thread for this? First of all we need feedback from you guys of what the features are and what we could improve even more. In addition to a normal rewrite of the core this project is using more modern technology. The code base is based on C++17 and will include features of C++20 as soon as it's officially released. Also we only test 64bit builds, no more 32bit builds. In addition to this we are automated building the core against the current LLVM toolchain and automatically creating Docker images. We have started to implement Unit Testing for some core features, and we will extend this to more code we write. Also we are working on embedding AngelScript (and maybe even more languages in the future) to not only write quests but also to extend the core. The main goal is that you can create most of the new systems in AngelScript with a resonable performance instead of modifying the core source code. For example if you want to create a new command you could write the following plugin: void main() { command::RegisterCommand("test", TestCommand); } void TestCommand(game::Player@ player, string[] arguments) { if(arguments.length() < 2) { player.SendChatMessage(1, "/test [name]"); return; } player.SendChatMessage(1, "Hello from " + player.name + "(" + player.level + ") to " + arguments[1]); } We also using redis for caching fast changing fields, like player position, items etc. The source code of this project will be licensed under the GPLv3 license. So you are free to modify the source code and use it for your project. We would be also very happy if you contribute back your improvements to the core. So what is the main goal? - Providing a compatible game server to the clean 40k client - Writing a modern, stable and scalable game server - Keep the core extensible Main repository: https://gitlab.com/quantum-core/core Documentation: https://docs.quantum-core.io/index.html With best regards, QuantumCore Team @arves100, @DevChuckNorris Edited April 26, 2020 by DevChuckNorris 39 Link to comment Share on other sites More sharing options...
Former Staff arves100 1550 Posted April 24, 2020 Former Staff Share Posted April 24, 2020 Ooooo finally Chucc's Metin3 server got leaked 5 Everyday you wake up as a Metin2 developer is a bad day... METIN1 src when Link to comment Share on other sites More sharing options...
NewWars 33 Posted April 24, 2020 Share Posted April 24, 2020 rip chacc's porncoreTM is now in trouble now porn industry will fail gg 1 Link to comment Share on other sites More sharing options...
HITRON 703 Posted April 24, 2020 Share Posted April 24, 2020 (edited) Good idea. Edited April 24, 2020 by HITRON Link to comment Share on other sites More sharing options...
Premium masodikbela 1370 Posted April 25, 2020 Premium Share Posted April 25, 2020 I'm eager to see the actual plans for the architecture/layout of the server, like how will the player/client instances handled on the server, like maybe new processes per players for handling the whole sessions until they disconnect, fully separated from other things like handling npc movements, etc, maybe something similar to that spatial os thing you once mentioned on the discord. Anyway its a good idea and I'm definitely looking forward to it, but of course it (probably) has a very long way to be complete and anything could go wrong during this time, like losing interest in the project, etc... The one and only UI programming guideline Link to comment Share on other sites More sharing options...
Honorable Member NoFr1ends 754 Posted April 25, 2020 Author Honorable Member Share Posted April 25, 2020 (edited) 7 minutes ago, masodikbela said: I'm eager to see the actual plans for the architecture/layout of the server, like how will the player/client instances handled on the server, like maybe new processes per players for handling the whole sessions until they disconnect, fully separated from other things like handling npc movements, etc, maybe something similar to that spatial os thing you once mentioned on the discord. Anyway its a good idea and I'm definitely looking forward to it, but of course it (probably) has a very long way to be complete and anything could go wrong during this time, like losing interest in the project, etc... Currently there is a similar idea to split maps by cores, but for ch99 we will add the support for automatically spawn processes which will very likely utilize docker. For making the queries in maps more performant we are currently using a QuadTree implementation to quickly search for entities in a radius etc. It would be possible to implement automatic instancing of busy areas too. All network related handling are handled by boost asio right now. Edited April 25, 2020 by DevChuckNorris Link to comment Share on other sites More sharing options...
Premium masodikbela 1370 Posted April 25, 2020 Premium Share Posted April 25, 2020 7 minutes ago, DevChuckNorris said: Currently there is a similar idea to split maps by cores, but for ch99 we will add the support for automatically spawn processes which will very likely utilize docker. For making the queries in maps more performant we are currently using a QuadTree implementation to quickly search for entities in a radius etc. It would be possible to implement automatic instancing of busy areas too. All network related handling are handled by boost asio right now. Sounds good. It would be also a good idea to create a way to add bots or something, simulating actual players/connections for performance testing. For example building a very lightweight console client while developing the features that you can run on bsd servers to simulate 1-2k or more players, or if there will be separated processes for player instances on server side this may won't be even necessary. 1 The one and only UI programming guideline Link to comment Share on other sites More sharing options...
Honorable Member NoFr1ends 754 Posted April 25, 2020 Author Honorable Member Share Posted April 25, 2020 3 minutes ago, masodikbela said: Sounds good. It would be also a good idea to create a way to add bots or something, simulating actual players/connections for performance testing. For example building a very lightweight console client while developing the features that you can run on bsd servers to simulate 1-2k or more players, or if there will be separated processes for player instances on server side this may won't be even necessary. This is definitely a thing we have to do, it should be pretty easy to write a short client based on the core lib. As we have an own file format to describe how packets look like and have a generator to generate code out of it. Maybe I, or someone else, will find the time to write a small program to simulate players. Link to comment Share on other sites More sharing options...
Bronze Exynox 1740 Posted April 25, 2020 Bronze Share Posted April 25, 2020 Hey, why did you keep this project a secret until now? I bet there would have been more people, like myself, willing to help out. Anyway, amazing work, can't wait to see more technical details. 1 Link to comment Share on other sites More sharing options...
Honorable Member NoFr1ends 754 Posted April 25, 2020 Author Honorable Member Share Posted April 25, 2020 1 minute ago, Exynox said: Hey, why did you keep this project a secret until now? I bet there would have been more people, like myself, willing to help out. Anyway, amazing work, can't wait to see more technical details. Currently the reason is that some major setup part is not documented right now. I’ll create these documentation tonight and than I’ll update the initial post with the repository. Link to comment Share on other sites More sharing options...
Honorable Member NoFr1ends 754 Posted April 26, 2020 Author Honorable Member Share Posted April 26, 2020 The repository and part of the documentation is now available to the public. Repository: https://gitlab.com/quantum-core/core Documentation: https://docs.quantum-core.io/index.html 5 Link to comment Share on other sites More sharing options...
Active Member hachiwari 138 Posted April 26, 2020 Active Member Share Posted April 26, 2020 (edited) 1 hour ago, DevChuckNorris said: The repository and part of the documentation is now available to the public. Repository: https://gitlab.com/quantum-core/core Documentation: https://docs.quantum-core.io/index.html Nice work and skills for all, but i think you have to do code review for new code, good luck! Edited April 26, 2020 by hachiwari Link to comment Share on other sites More sharing options...
Premium WeedHex 636 Posted April 26, 2020 Premium Share Posted April 26, 2020 Keep it up! Very interesting. 1 Link to comment Share on other sites More sharing options...
M.Sorin 284 Posted April 26, 2020 Share Posted April 26, 2020 God coding skills, i like the project! Keep it up ! 1 Link to comment Share on other sites More sharing options...
Premium Sean 11 Posted April 26, 2020 Premium Share Posted April 26, 2020 Very interesting this proyect, good luck. 1 // ¹Ý-_-»ç Link to comment Share on other sites More sharing options...
Premium masodikbela 1370 Posted April 26, 2020 Premium Share Posted April 26, 2020 In the building section in the docs it says that only the following boost packages are required: boost-convert boost-log boost-system boost-filesystem But cmake cries for boost-program-options too, that should be corrected. The one and only UI programming guideline Link to comment Share on other sites More sharing options...
Honorable Member NoFr1ends 754 Posted April 26, 2020 Author Honorable Member Share Posted April 26, 2020 1 hour ago, masodikbela said: In the building section in the docs it says that only the following boost packages are required: boost-convert boost-log boost-system boost-filesystem But cmake cries for boost-program-options too, that should be corrected. Thanks for pointing that out, we have updated the list of dependencies. 1 Link to comment Share on other sites More sharing options...
Jimmermania 27 Posted April 26, 2020 Share Posted April 26, 2020 @arves100 for the Win!! 1 Link to comment Share on other sites More sharing options...
Fr3zy94 59 Posted April 28, 2020 Share Posted April 28, 2020 Do you know that WOW P-Servers uses their own code but they still get sued? Sorry. Link to comment Share on other sites More sharing options...
Honorable Member NoFr1ends 754 Posted April 28, 2020 Author Honorable Member Share Posted April 28, 2020 (edited) 18 minutes ago, Fr3zy94 said: Do you know that WOW P-Servers uses their own code but they still get sued? Sorry. The critical part are multiple things: - Providing the client - Making money without paying taxes - Using trademarks in any violating way Working on and making this source is legal (at least based on German law), as you can also see on many other server emulator projects. For example: https://github.com/TrinityCore/TrinityCore https://github.com/mangoszero/server Edited April 28, 2020 by DevChuckNorris Link to comment Share on other sites More sharing options...
Fr3zy94 59 Posted April 28, 2020 Share Posted April 28, 2020 4 minutes ago, DevChuckNorris said: The critical part are multiple things: - Providing the client - Making money without paying taxes Working and making this source is legal (at least based on German law), as you can also see on many other server emulator projects. Well you cannot use any elements from Metin2, even the gameplay can be a reason to get sued ( Proven by PAC-MAN lawsuit ). Link to comment Share on other sites More sharing options...
Honorable Member NoFr1ends 754 Posted April 28, 2020 Author Honorable Member Share Posted April 28, 2020 Just now, Fr3zy94 said: Well you cannot use any elements from Metin2, even the gameplay can be a reason to get sued ( Proven by PAC-MAN lawsuit ). Did I ever said it will be legal to host a private server using this? No, I'm not a lawyer But I know that writing server emulators is legal, and making them available to the public too. The main goal of this project was and still is for me to learn more about how to write a stable and more or less solid game server, with the limitations we have. Like not being able to replace the network protocol. So I could also kept this project for me, but I wanted to make it available to all, so everybody can profit from it. No matter how. 6 Link to comment Share on other sites More sharing options...
Bronze Exynox 1740 Posted April 28, 2020 Bronze Share Posted April 28, 2020 May I ask why the project is licensed under GPLv3? From my understanding, that would mean that anybody who uses the code commercially should make their source code publicly available. I doubt there would be many people who will use this emulator for their servers and do that. What's the rationale behind this? Did some other library force you to pick GPLv3? Something like the MIT license would work much better for what the metin2 community expects. Link to comment Share on other sites More sharing options...
Honorable Member NoFr1ends 754 Posted April 29, 2020 Author Honorable Member Share Posted April 29, 2020 (edited) 9 hours ago, Exynox said: May I ask why the project is licensed under GPLv3? From my understanding, that would mean that anybody who uses the code commercially should make their source code publicly available. I doubt there would be many people who will use this emulator for their servers and do that. What's the rationale behind this? Did some other library force you to pick GPLv3? Something like the MIT license would work much better for what the metin2 community expects. We are working on relicensing QuantumCore. To keep track of the current issues and progress follow: https://gitlab.com/quantum-core/core/-/issues/31 Edited April 29, 2020 by DevChuckNorris Link to comment Share on other sites More sharing options...
Honorable Member NoFr1ends 754 Posted April 30, 2020 Author Honorable Member Share Posted April 30, 2020 (edited) On 4/29/2020 at 12:20 AM, Exynox said: May I ask why the project is licensed under GPLv3? From my understanding, that would mean that anybody who uses the code commercially should make their source code publicly available. I doubt there would be many people who will use this emulator for their servers and do that. What's the rationale behind this? Did some other library force you to pick GPLv3? Something like the MIT license would work much better for what the metin2 community expects. We have relicensed the core to Mozilla Public License 2.0 https://tldrlegal.com/license/mozilla-public-license-2.0-(mpl-2) The reason why we have chosen MPL are multiple: - You have to redistribute the source code if you modified QC and redistribute the binary file We do not want anyone to make money with QC itself (feel free to sell plugins tho) If you modify QC and do not share the binary you don't have to share the source. - GPLv3 didn't really allowed plugins (they would have been GPLv3 too) - MPL allows you write plugins and sell these commercial Edited April 30, 2020 by DevChuckNorris 4 Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now