Vanilla 1456 Posted August 14, 2016 Share Posted August 14, 2016 Hello dear dev's, this thread is created just to suite one specific topic: The vanilla core. I'd like to announce that the new version will be released very soon (this time open source). Meanwhile I'd like you to take part in it! I have some few suggestions that I'd like to commit. But not only this - I want to read your suggestions. What do you think could be part of the new vanilla core versions? The topic is also meant for the future, so when I release the core it's thread is only for troubleshooting and feedback. Features etc. can be discussed here then to give you a better overview about the project. Also I want to note one small thing: I do not recommend anyone to use the older vanilla core distributions! This has one simple reason: They're outdated. New security breaches were discovered and they are not fixed in those binaries. If you're using the source you can fix them by yourself. But I recommend you to wait for the new version. At first I'd like to say that there will be 3 different versions. All have their own codenames and have a different set of features: - STABLE: This branch is only focused on the main goal of the vanilla core - a core that is smooth, stable and fast along with many, many CONFIG-options to choose from so you can suit the core by yourself. Feature changes will be delayed until they're approved by testing on a different branch. Security fixes will be tested directly and pushed to this branch as soon as possible to ensure a secure experience. - BETA: This branch is focused on testing feature changes. They could be unstable, but of course the aim is not to be. It's not recommended to use this on production servers, only for testing purposes. New features will be pushed directly to this branch and a core along with it's source code will be released as soon as possible. - SANDBOX: Yep, I want to create a sandbox. This way I can re-develop features I would've released with my project (damn the HDD crash). In this branch you can suggest features that may not suit everyone. It's mainly for releasing working features and concepts and play a bit with the source. One side note: I won't use git nor svn. I'll develop locally and upload the core along with it's sources accordingly. Everyone is free to implement their own code and send it to me. After I've reviewed it chances are it'll get into the next vanilla version. So, there are the first few things I'd like to ask you. 1.) What do you think about the option to have another compression algorithm? (I'll also release the client part along with an archiver). My choice would be lz4hc instead of lzo and I'd like to give you the option to switch between those two compressions. Of course standard would be lzo to ensure compatibility. 2.) What do you think about new ways of encryption when not defining the advanced security macro? Normally this would lead into a pong being sent and xtea being used for encryption. I'd change xtea with something else - my choice would be AES-256. 3.) What would you think about a new client config? Of course it'd be open source. Let me hear your opinions and please feel free to give me every suggestion you may have. 10 We are the tortured. We're not your friends. As long as we're not visible. We are unfixable. Link to comment Share on other sites More sharing options...
Premium tierrilopes 452 Posted August 14, 2016 Premium Share Posted August 14, 2016 1- Yes. Just to get a doubt explained: lz4hc is a bit slower compressing then the lz4, but with higher ratio. Will the decompression speed be changed or its similar to lz4? ___ 2- I do like aes-256 alot __ 3- Would there be new options? Or a re-design of the current ones? Link to comment Share on other sites More sharing options...
Vanilla 1456 Posted August 14, 2016 Author Share Posted August 14, 2016 1.) Yes. Compression speed is slower than in lz4, but the decompression speed is very fast. Since the package-files are only compressed once (when you put them together to create an epk and eix archive) it's by far faster than with lzo or lz4. Your users will experience faster loading times. Packets will be compressed too but that's not a problem since they're small enough that the slower compression speed doesn't slow down the connection at all. 2.) Me too. And it's also faster than xtea 3.) Some options will be better adjustable than in the old config. There will also be new options, I've shared some screens before but since my HDD crashed I couldn't release the config. But for more options there is some work on the client that needs to be done. I'd for example add v-sync, anti-aliasing or texture filtering. Especially on the graphics side there's a lot we can improve without much effort. 1 We are the tortured. We're not your friends. As long as we're not visible. We are unfixable. Link to comment Share on other sites More sharing options...
Socialized 42 Posted August 14, 2016 Share Posted August 14, 2016 Sounds great. Concerning the client side config: I've rewritten the entire config. Although my config file is based upon YAML it also supports the old config file. Written in c++ and I'd love to share the source with fellow devs. Will answer on 1) and 2) when I'm back from holiday. - Socialized 2 Link to comment Share on other sites More sharing options...
Vanilla 1456 Posted August 14, 2016 Author Share Posted August 14, 2016 Sound great, Socialized. I'd love to! I'm also planning on developing the config with c++. The one I presented earlier was with c# but I want to move to qt and therefore do it in c++. Would love to hear your opinion about the other two points. Also, if anyone has any suggestion, feel free to post them here We are the tortured. We're not your friends. As long as we're not visible. We are unfixable. Link to comment Share on other sites More sharing options...
ds_aim 241 Posted August 14, 2016 Share Posted August 14, 2016 (edited) 1. Lzma or lz4 , don't really matter the compression algorithm that you use. You need a SSD and all is fine. 2. The aim of improved_packet_encryption is to cipher packets to prevent packet sniffer to decrypt and to solve buffer issues. Just don't touch it if you have no ideea how to work with memory management. And lol, why you need to cipher packets? Really is metin2, is an old game... Belive me , No big hacker will come to destroy kids server. AES is the best. I alredy use it for mysql hash password.. SELECT HEX(AES_ENCRYPT('password', 'key')); 3. SendClientConfigPacket. should be ok The packet will send true or false intro client and with one config server you can enable or disable client codes too. Here is an example config. https://metin2.download/picture/r3F9504x09DVmF8K988YXgTtGTP6KMUj/.gif from my server. Also write locale.cfg metin2.cfg mouse.cfg to be saved intro registry. if (true == ReceiveClientConfigPacket(g_enable_wolfman)) { /// Valid codes } Here is one challange for you, well.. What to include in you release, i already did all those but do it if you want. - no need to pool memory big than 1024*256, that is 18 slots, to forbidden call buffer_pool_free() -memory size 8Byte align, use memalign inseated - create a thread safe for buffers. - std::copy inseated of memcpy - convert all new operators to unique_ptr (Client / server src ) - see assert functions intro release mode (server /client ) undefined behavior (buffer.c) - Rewrite adminpage systems for a better stability. - Fix all memory leaks that come from SpeedTreeWrapper class. - Fix rotation intro intro StatePacket. - and mooooooooore things , just too lazy to tell you... Good luck. Edited September 3, 2022 by Metin2 Dev Core X - External 2 Internal 1 Link to comment Share on other sites More sharing options...
Vanilla 1456 Posted August 14, 2016 Author Share Posted August 14, 2016 1.) You're developing for the broad mass of different players. Not everyone has an SSD. Some (like me) are using both SSD and HDD. Also a SSD won't magically fix everything for you since compression/decompression is not only limited to the type of disk you're using. 2.) It's for people who don't want to enable that macro. If you disable it, the server and client will use a combination of lzo and xtea. Also instead of the handshake they'll use the old pong. I never said I'd touch the packet encryption with this macro enabled. 3.) Isn't that a little bit overkill? Thanks for your suggestions! Yes, something like changing all the new to unique_ptr is a lot of work. I changed a few of them but not all at once. I want to make sure I don't make a mistake there and that's why I think I'll first fix the critical stuff and change them with future updates since the main goal was to create a stable binary. But the suggestion is good, I also had the wish to change at least most of the raw pointers into unique_ptr.. 1 We are the tortured. We're not your friends. As long as we're not visible. We are unfixable. Link to comment Share on other sites More sharing options...
Honorable Member martysama0134 7180 Posted August 14, 2016 Honorable Member Share Posted August 14, 2016 1 hour ago, Vanilla said: One side note: I won't use git nor svn. I'll develop locally and upload the core along with it's sources accordingly. Everyone is free to implement their own code and send it to me. After I've reviewed it chances are it'll get into the next vanilla version. Non-revisioning the work is always a big flow. "Send it to me" -> Hypothetically, it shouldn't be a bad idea, but we should consider the reality: There are many resellers/thiefs in here. If you add the stolen code they give you, you will get a lot of problems and also lose your reputation. Talking about a new lz4, you can simply add it via a different header/magic. You know the difference between MCOZ and EPKD? That's almost everything said. About the HDD/SSD matter... People could also try RAMDisk if they don't want to spend money on new hardware. If you "upgrade" the game, it will obviously require an "upgrade" of the hardware too. So no need to cry over it. @Socialized I prefer its not-so-predecessor, JSON, quite more. Natively supported by Python (huehue, pyyaml), simple and clean, and there's no need for the extra burden YAML provides. (I would never replace my rapidjson header-only library with anything else) 2 Check out my GitHub Link to comment Share on other sites More sharing options...
miguelmig 13 Posted August 14, 2016 Share Posted August 14, 2016 1 hour ago, ds_aim said: AES is the best. I alredy use it for mysql hash password.. SELECT HEX(AES_ENCRYPT('password', 'key')); Please tell me you're kidding. You gotta be kidding. AES is Encryption, not Hashing. You should hash a password, not encrypt it. That means that if your database is compromised, the hackers will be able to get all the passwords in plaintext. Link to comment Share on other sites More sharing options...
Vanilla 1456 Posted August 14, 2016 Author Share Posted August 14, 2016 41 minutes ago, martysama0134 said: Non-revisioning the work is always a big flow. "Send it to me" -> Hypothetically, it shouldn't be a bad idea, but we should consider the reality: There are many resellers/thiefs in here. If you add the stolen code they give you, you will get a lot of problems and also lose your reputation. Talking about a new lz4, you can simply add it via a different header/magic. You know the difference between MCOZ and EPKD? That's almost everything said. About the HDD/SSD matter... People could also try RAMDisk if they don't want to spend money on new hardware. If you "upgrade" the game, it will obviously require an "upgrade" of the hardware too. So no need to cry over it. I know it is but using git and svn could be troublesome if it gets closed. And I won't have a server nor do I want to rely on something for this work. I won't publish any branches but that doesn't mean I won't work with revisions locally You're right with the send it to me. I'll change that into "Post it into the release topic". This way everyone can see who posted the code and where it came from. Additionally I can give credit to those wo contributed to the project and add a link to their post in my thread. Thank you! Yep, I already replaced it. It's not that difficult and maybe I'll write a guide to it though everyone will be possible to clearly see it once the project is released. The major reason for the change from lzo to lz4 is the client, not the server. Of course using a ramdisk or ssd will improve loading times by a lot it doesn't mean everyone will do that. If you're on a laptop chances are that you don't have that many RAM nor an ssd to work with (of course you'd possibly upgrade..). But it's just for the broad masses and getting a faster algorithm is always better as long as it's safe, no matter the circumstances We are the tortured. We're not your friends. As long as we're not visible. We are unfixable. Link to comment Share on other sites More sharing options...
Premium Galet 510 Posted August 14, 2016 Premium Share Posted August 14, 2016 I completely agree with you ! Hope to see more ! 1) It was always a project for me but with Lz4 or Snappy, I think it's a must have now 2) I agree too, I use AES256 with salts and some additionnal securities for the MySQL password but I never tried with pong, however I rewrote a part of the pong because sometimes a mismatch occured without any suitable reasons 3) Config.exe ? If yes I created a new one, in french however, ausing vb.net and I added some new config options (about tree's shadering or some systems). However I didn't add any additionnal effect like I did before (FXAA or post process) because I downgraded my client (dx9 to dx8 (native)) What's more I think that using smart_ptr and other C++11/14/17 features will be a big plus in the sources and std::array or std::vector instead of old coding style, what's more you can get rid of old coding style such as "strcmp" and a lot of other "depreciated features" Keep it up ! Link to comment Share on other sites More sharing options...
M.Sorin 282 Posted August 14, 2016 Share Posted August 14, 2016 @Vanilla Use a private gitlab repository https://about.gitlab.com/ Link to comment Share on other sites More sharing options...
miguelmig 13 Posted August 14, 2016 Share Posted August 14, 2016 2 minutes ago, Vanilla said: I know it is but using git and svn could be troublesome if it gets closed. And I won't have a server nor do I want to rely on something for this work. I won't publish any branches but that doesn't mean I won't work with revisions locally You're right with the send it to me. I'll change that into "Post it into the release topic". This way everyone can see who posted the code and where it came from. Additionally I can give credit to those wo contributed to the project and add a link to their post in my thread. Thank you! Yep, I already replaced it. It's not that difficult and maybe I'll write a guide to it though everyone will be possible to clearly see it once the project is released. The major reason for the change from lzo to lz4 is the client, not the server. Of course using a ramdisk or ssd will improve loading times by a lot it doesn't mean everyone will do that. If you're on a laptop chances are that you don't have that many RAM nor an ssd to work with (of course you'd possibly upgrade..). But it's just for the broad masses and getting a faster algorithm is always better as long as it's safe, no matter the circumstances 1 word. Bitbucket, you can create private repos for free. Link to comment Share on other sites More sharing options...
Socialized 42 Posted August 14, 2016 Share Posted August 14, 2016 @martysama0134 Well aren't we lucky then that all JSON is also valid YAML (Is also pretty easy to replace, just have to change some things in the config class.) Dunno had the discussion JSON vs YAML multiple times but in the end I always stick to YAML due to personal preference @Vanilla Although a remote repo is normally the way to go you could also just upload your local repository. Not having VCS will be a big problem if there are more people contributing to your project. But that's entirely up to you! Link to comment Share on other sites More sharing options...
Malakiano 0 Posted August 15, 2016 Share Posted August 15, 2016 "One side note: I won't use git nor svn. I'll develop locally and upload the core along with it's sources accordingly. Everyone is free to implement their own code and send it to me. After I've reviewed it chances are it'll get into the next vanilla version." And how do you imagine this? People making posts like "in file a, change this, then in file c change this, then delete this line"? At least consider using some patch control using Quilt. Private repository on gitlab.com is more than just pull requests. It provides issue tracking and makes sure you won't lose your work again. But I think I understand you. Messing with Metin2 code base is interesting, but unfortunately it's not, and will never be legal. Link to comment Share on other sites More sharing options...
Honorable Member NoFr1ends 751 Posted August 15, 2016 Honorable Member Share Posted August 15, 2016 On 14.8.2016 at 0:28 PM, ds_aim said: AES is the best. I alredy use it for mysql hash password.. SELECT HEX(AES_ENCRYPT('password', 'key')); This is the worst idea ever! I would really suggest to use a VCS for developing the core... Link to comment Share on other sites More sharing options...
WhiteHat 5 Posted August 24, 2016 Share Posted August 24, 2016 Do you have a date in mind when you will release it? @Vanilla Link to comment Share on other sites More sharing options...
miguelmig 13 Posted August 24, 2016 Share Posted August 24, 2016 On 8/14/2016 at 1:07 PM, galet said: 2) I agree too, I use AES256 with salts and some additionnal securities for the MySQL password Please don't. AES is reversible, passwords shouldn't be encrypted, they should be HASHED Link to comment Share on other sites More sharing options...
Premium Galet 510 Posted August 25, 2016 Premium Share Posted August 25, 2016 On 24/08/2016 at 1:20 PM, miguelmig said: Please don't. AES is reversible, passwords shouldn't be encrypted, they should be HASHED I changed the algorythm but furthermore the password is hashed don't worry (boost & cryptopp used) Link to comment Share on other sites More sharing options...
ds_aim 241 Posted August 31, 2016 Share Posted August 31, 2016 (edited) I modernized code long time ago. I lost some time to modernize EterPythonLib because pointers... Evey time when i forced unique__ptr i got bugs. It is very hard to modernize codes. most of the new stuff in the new official stuff is actually with vectors and std maps. In 2-3 weeks i think i will finish client source modernize. Then is planned to rewrite Python API with boost::python or maybe SWIG. Maybe if someone want to rewrite via boost::python here is an advice , boost::python actually does Support std::shared_ptr but not std::unique_ptr , Boost.Python does not support move-semantics. to only Problem is that you use unique_ptr and here is a solution for that http://stackoverflow.com/questions/20581679/boost-python-how-to-expose-stdunique-ptr We tried just putting unique ptr (forcing unique_ptr) , and I think there occur dangling pointer ,I can just putting shared ptr in all place it is bad too, but I might work.. or not. The code is dirtty and pointers are too puzzled and If you use sharedptr everywhere you actually have cyclic references. If you reaally want to modernize codes is better to rewrite entire client source using modern c++ standards. Modernize take much more time than rewriting. Metin is not really a complex game , it's very simple One more example c++14 lambda Before modernize: After modenrize : I changed into lambda holy lambda it is one of most greatest feature of c++11 My advice is don't try to modernize codes you just lose time. Code is to dirty Edited August 20, 2022 by Metin2 Dev Core X - External 2 Internal 2 Link to comment Share on other sites More sharing options...
ds_aim 241 Posted August 31, 2016 Share Posted August 31, 2016 (edited) boost::python implement started I need to adapt to make_unique now And example for Who want to rewrite entire python API , you can use SWIG too. The big job is in ScriptLib and EterPythonLib need to be rewrited frm scratch. And remebere " If you become my customers all those features will be yours when i finish " Edited August 20, 2022 by Metin2 Dev Core X - External 2 Internal 2 Link to comment Share on other sites More sharing options...
metin2-factory 1012 Posted November 5, 2016 Share Posted November 5, 2016 Any news so far regarding the progress? Link to comment Share on other sites More sharing options...
Vanilla 1456 Posted November 5, 2016 Author Share Posted November 5, 2016 Development is on halt since rl took over, as many of you may have noticed. I'll continue the developing once I have more time for it. Sorry for the inconvenience, the project of course isn't dead. We are the tortured. We're not your friends. As long as we're not visible. We are unfixable. Link to comment Share on other sites More sharing options...
Itachi 44 Posted November 6, 2016 Share Posted November 6, 2016 I am not an expertBut if they need help I will gladly contribute what I can do greetings 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