Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

[C++] Journey Client v83+

Elite Diviner
Joined
Mar 24, 2015
Messages
426
Reaction score
416
(Excuse my ignorance)
With a custom client wouldn't that remove the need for OP'S (as in we could completely change the op's to whatever we want such as 0x0A to 1x338)?

Yes sure, you can modify the packets in any way you want, from opcode to content. I have already done that with quite a few, since there isn't really any good consistency in nexon's packets. Just to give an example, they have way too many different ways to send data in a loop, sometimes they will send the total size first and then the loop, sometimes they send an additional byte with every item that signifies if it's the end of the loop and so on.
There are also alot of packets that are just not needed, like for example when logging in, they send the character stats again altough the client already knows the stats because it needs to display them in the char selection.
 
Skilled Illusionist
Joined
Aug 17, 2011
Messages
360
Reaction score
88
Yes sure, you can modify the packets in any way you want, from opcode to content. I have already done that with quite a few, since there isn't really any good consistency in nexon's packets. Just to give an example, they have way too many different ways to send data in a loop, sometimes they will send the total size first and then the loop, sometimes they send an additional byte with every item that signifies if it's the end of the loop and so on.
There are also alot of packets that are just not needed, like for example when logging in, they send the character stats again altough the client already knows the stats because it needs to display them in the char selection.

inb4 1332x01|1337x02|1337x03
 
Newbie Spellweaver
Joined
Aug 30, 2014
Messages
56
Reaction score
31
Good luck.Maybe one day you'll catch up to my Delphi client and retep998's NoLifeStory.
He's already past your flawed project by designing it to actually connect to a server. You know, the "multiplayer" part of MMORPG.
SYJourney: I suggest putting this in a public git repository so other people can contribute as well.
 
Custom Title Activated
Loyal Member
Joined
Nov 14, 2008
Messages
1,025
Reaction score
641
Yes sure, you can modify the packets in any way you want, from opcode to content. I have already done that with quite a few, since there isn't really any good consistency in nexon's packets. Just to give an example, they have way too many different ways to send data in a loop, sometimes they will send the total size first and then the loop, sometimes they send an additional byte with every item that signifies if it's the end of the loop and so on.
There are also alot of packets that are just not needed, like for example when logging in, they send the character stats again altough the client already knows the stats because it needs to display them in the char selection.

uh this is cool and all but maybe you should first use the official opcodes and packet structures to stay compatible with existing sources, then offer alternatives that will lead to more consistent code

also, if this really does get so complete that you could use it to make a highly non-gmslike highrate server, include some lua scripting so that the poor folks who don't know C++ can extend new features too
 
Joined
Apr 5, 2008
Messages
663
Reaction score
537
Your choice of a serif font absolutely disgusts me. Please use a nice sans-serif font, or provide a config to change the font (and for Bui's sake an option to disable anti-aliasing for text).

I hope you're borrowing a lot of algorithms and formulas and stuff from NoLifeStory, I spent so much time getting various things with regards to map rendering pixel perfect.

Please do put your code on some sort of public repository though. Don't forget that your license has to be AGPL compatible due to NoLifeNx.

Good luck on your adventures, hopefully you are more motivated towards finishing this than I was with NLS.
 
Elite Diviner
Joined
Mar 24, 2015
Messages
426
Reaction score
416
Your choice of a serif font absolutely disgusts me. Please use a nice sans-serif font, or provide a config to change the font (and for Bui's sake an option to disable anti-aliasing for text).

I hope you're borrowing a lot of algorithms and formulas and stuff from NoLifeStory, I spent so much time getting various things with regards to map rendering pixel perfect.

I appreciate your concerns towards gettings the fonts and everything right, or getting map rendering pixel perfect, but I don't think that introducing that kind of perfectionism makes sense for my project yet.
You also don't need to worry about me stealing from your source, I deliberately didn't even take a look at it because I didn't want to get spoiled. My original goal with this project was to learn more c++, so I prefer coming up with stuff as I learn.

Please do put your code on some sort of public repository though. Don't forget that your license has to be AGPL compatible due to NoLifeNx.

Good luck on your adventures, hopefully you are more motivated towards finishing this than I was with NLS.

I will put it on a repository soon, it's just that right now I'm still learning new things about c++ everytime I add something so I keep going back and correcting a whole lot of mistakes I did in the beginning.
Overall, thanks for your support!



uh this is cool and all but maybe you should first use the official opcodes and packet structures to stay compatible with existing sources, then offer alternatives that will lead to more consistent code

Having it compatible with any source would be great, but really ruin the code in the packet handler (just make it look ugly i mean). I suspect that for the most part alot of the useless zeros that moopledev/odin sends were for actual functions that never made it into their packets. So I'm not really happy about carrying that into a new project.
I also think that because a custom client removes the restriction of sticking strictly to one version, adjusting it to match the odin v83 exactly isn't really the best option. The best usage would probably be a fully customized client + server, that you can easily add features from newer versions too.

also, if this really does get so complete that you could use it to make a highly non-gmslike highrate server, include some lua scripting so that the poor folks who don't know C++ can extend new features too

Thanks for the suggestion, I don't know what lua is but I'll take a look at it.
 
Joined
Sep 8, 2011
Messages
822
Reaction score
129
In regards to what you said about adding features from newer versions.
Since you're in the beginning of your development, why not add the newer UI and maps? It will be easier to do so right now than later, assuming you'd want the newer UI style and maps.
 
Elite Diviner
Joined
Mar 24, 2015
Messages
426
Reaction score
416
In regards to what you said about adding features from newer versions.
Since you're in the beginning of your development, why not add the newer UI and maps? It will be easier to do so right now than later, assuming you'd want the newer UI style and maps.

I'll be using a newer UI.wz, that's why my login screen is also the newer version. About maps I'm not so sure, maybe a map.wz from right after big bang, I'd like to have edelstein but but for the most part I'm not a huge fan of the newer areas.
That being said tough I believe that it should be possible to use any map file you want, as long as it isn't to big.
 
Elite Diviner
Joined
Mar 24, 2015
Messages
426
Reaction score
416
Update:
Basic physics are done, also parts of the Status bar. The client will also support the different screen resolutions post-BB has. On a side note, I also improved some of the drawing algorithms and it runs super smooth now.

I originally wanted to take a video to show the movement and get some feedback on if it's maplestory like. But unfortunately I can't find a screen capture that has a good enough output so that you can really judge the movement. But since an update needs something visual atleast have a screen shot of the status bar and some npcs:
(Don't ask where backgrounds went, I swear they worked before so I must've broken something. Also note the weird percentage of exp, I don't have an exp table implemented yet, tough I might make it completely server-dependent.)

SYJourney - [C++] Journey Client v83+ - RaGEZONE Forums



I will make the user interface next, probably starting with inventory and equips because those are the most interesting.

Edit: Made a video and uploaded it anyway, the fps is pretty bad but maybe you guys can make like one frame of movement out:
 
Last edited:
Junior Spellweaver
Joined
Jul 12, 2008
Messages
130
Reaction score
6
Personally, I use OBS to record local videos. It's default settings are suitable for Maplestory recording.

Also, great job with such quick updates and taking the time to post them here.
 
Elite Diviner
Joined
Mar 24, 2015
Messages
426
Reaction score
416
Personally, I use OBS to record local videos. It's default settings are suitable for Maplestory recording.

Also, great job with such quick updates and taking the time to post them here.

Cool, i'll try that out next time. I used windows encoder screen capture for this. There is a 60 fps setting, but it still came out at like 15.
 
Elite Diviner
Joined
Mar 24, 2015
Messages
426
Reaction score
416
Some updates:

- Portals and changing maps now work, movement is also updated correctly with the server, so spawn point and map in DB update in between playing the client
- The keymap the server sends is now converted to the win32 keycodes, so the same mapping can be used that was saved in DB
- Some more performance gains, there was a function that when converting bitmaps cached some automatically which I didn't notice. I already was using my own cache tough so significantly more memory than neccessary was used. To compare, walking around ludibrium and visiting different maps could take up to ~150m, now it only takes up to ~80.
 
Skilled Illusionist
Joined
Aug 17, 2011
Messages
360
Reaction score
88
Some updates:

- Portals and changing maps now work, movement is also updated correctly with the server, so spawn point and map in DB update in between playing the client
- The keymap the server sends is now converted to the win32 keycodes, so the same mapping can be used that was saved in DB
- Some more performance gains, there was a function that when converting bitmaps cached some automatically which I didn't notice. I already was using my own cache tough so significantly more memory than neccessary was used. To compare, walking around ludibrium and visiting different maps could take up to ~150m, now it only takes up to ~80.

SO whats up next? mob spawns? npcs?
 
Elite Diviner
Joined
Mar 24, 2015
Messages
426
Reaction score
416
SO whats up next? mob spawns? npcs?

I originally wanted to do the UI, but for some reason I did portals instead, so I'll probably go for inventories and stuff. That being said, the things you mentioned are not that far off. I could easily add npc chats and with a little more work also scripted npcs. Mobs spawns already exist technically (the packet is handled), but I haven't added loading mob sprites or mob movement.
 
Skilled Illusionist
Joined
Aug 17, 2011
Messages
360
Reaction score
88
I originally wanted to do the UI, but for some reason I did portals instead, so I'll probably go for inventories and stuff. That being said, the things you mentioned are not that far off. I could easily add npc chats and with a little more work also scripted npcs. Mobs spawns already exist technically (the packet is handled), but I haven't added loading mob sprites or mob movement.

This would be awesome to watch a livestream of :p you make extremely quick work of this.
oxysoft he's shitting on your statement more and more with every update
 
Custom Title Activated
Loyal Member
Joined
Nov 14, 2008
Messages
1,025
Reaction score
641
I originally wanted to do the UI, but for some reason I did portals instead, so I'll probably go for inventories and stuff. That being said, the things you mentioned are not that far off. I could easily add npc chats and with a little more work also scripted npcs. Mobs spawns already exist technically (the packet is handled), but I haven't added loading mob sprites or mob movement.

I could be wrong but I think you are going through a phase of development I call "functional procrastination", that is, when there is a higher priority task at hand but you subconsciously delay it because the work load is greater than some other task.

You know you should be doing the more important stuff like mobs, attacking etc. the core functionalities of the game essentially, but instead you delay it and work on something that is simpler in essence and should really only come later in development. The problem with this is that you will be left with all of the exhausting tasks later on and is highly discouraging.

You should focus on having highly maple-like movements, attacking and mobs before you start thinking about npcs and the different menus. You need the core gameplay, working in "chronological" order for lack of a better word.
 
Back
Top