MUnique / OpenMU

This project aims to create an easy to use, extendable and customizable server for a MMORPG called "MU Online".
https://munique.net
MIT License
736 stars 319 forks source link

Launcher Project #117

Closed MarioGK closed 4 years ago

MarioGK commented 5 years ago

Hey, good job on the project i really liked it and i wanted to help you out. Seems like you want a launcher with Auto Update and Configurable(Icon,Image,Name) mentioned in #5 ; So i forked and created a WPF project trying to implement those ideas, using Prism MVVM, MahApps, MaterialDesign. This is my first time contributing to any project here on Github even though the launcher project is not even near finished i wanted your feedback on the ui design and the code style before continuing i dont want the Launcher code to stand out and be different than the rest of the project.

https://github.com/MarioGK/OpenMU/tree/master/src/MUnique.OpenMU.Launcher

Will wait for your feedback so i can continue implementing the features and ideas.

sven-n commented 5 years ago

Hey thanks, I’ll look at it when I‘m at my computer next time. Btw, there is another guy who wants to work on the launcher, too. @Mosch0512 I don’t know if you still have interest, because it’s not Java. If you have, feel free to express your thoughts as well 😉

In general, code style is something which can be fixed easily by doing some refactoring and design is a matter of taste. Oh and I just realized that the first comment in #5 is not completely valid anymore: In the mean time we added a configuration dialog for the game settings which are saved in the registry.

MarioGK commented 5 years ago

Ok, if you could make a ToDo list for the launcher would be awesome, as i would know exactly what to do and how you want it.

sven-n commented 5 years ago

I had a quick look and it looks nice 👍🏻

It would be great if the final launcher would be modular, so that you can exchange or remove certain parts by configuration.

For this we would need interfaces, some ideas:

MarioGK commented 5 years ago

I was thinking on making this feature purely based on a configuration file, so anyone could modify the launcher without touching the code it self, so no need for fancy interfaces and etc.

Regarding the Auto Update, i was wondering on how to check if a file needs to be updated or not, reading each and every file to make a MD5 hash and check on the server would be slow and inefficient, using a versioning system would probably waste a lot of Storage space, if you have any better ideas please share with me.

The news section could be RichTextBoxes inside a GroupBox, which would look something like this , which the data is fetched from the server using an api endpoint, could be RSS(XML) or a plain JSON object

Well i am a little bit confused on this one, do you want the launcher to behave differently based on arguments? But doing that would defeat the purpose of having a "config.json" which would have all the configurations and customizations

sven-n commented 5 years ago
Mosch0512 commented 5 years ago

Uh a lot is going on here :) i like all your ideas only one thing i dont like saving stuff in the Registry. I am the linux guy and i am playing Mu on my linux machine :P so if it is an interface okay but i would just save it at the user folder under AppData as an propertie file.

MarioGK commented 5 years ago

@Mosch0512 I totally agree with you, using Registry to save stuff is outdated and tbh not that practical

sven-n commented 5 years ago

Yes, I just mentioned it because the game client actually reads its configuration (resolution, sound settings etc.) from the registry. The original launcher has a dialog to change these settings.

Mosch0512 commented 5 years ago

Cool than we all agree :) i will than focus on a different topic here and @MarioGK you have the honor to make the launcher ;) but make it awesome :+1:

MarioGK commented 5 years ago

@sven-n Well saving the game settings to the registry is ok for me, but the way you said it was like you wanted to save all the launcher config there.

@Mosch0512 I am trying, you can take a look at my fork if you want to see the progress

MarioGK commented 5 years ago

Well this is what i have so far, any feedbacks?

Mosch0512 commented 5 years ago

I like it :) I would like a darker color scheme so :P And some artwork :P but besides that its great :D https://thewallpaper.co/perfect-free-wallpaper-muonline-pictures-muo-widescreen-warrior-rpg-mmo-samurai-medievalmu-technology-wallpapers-fantasy-action-hd-vector-images-poster-fighting-online-x/ I will have a look into the code after work :) and i will start with the Zen System :P https://imgbin.com/png/pSCiAnhH/mu-online-computer-servers-webzen-video-game-png

MarioGK commented 5 years ago

@Mosch0512 I added theming options to the settings tab preview, i feel like adding background images is a bit odd, i am going with the most simplistic design as possible, but i can add support to background images though.

@sven-n check the design and give me feedbacks, i know how to do the coding and the ui, but my design sense sucks.

sven-n commented 5 years ago

It looks good from my side. As I said before it's a matter of taste ;-) Historically, launchers have used background images, so people are used to it. I don't care if that's available or not.

Anyways, I think the logic for auto update and launching the game should be encapsulated (probably into a separate project?), so you could switch them or the UI layer (think of linux or mac users) without a lot work. It would be nice to update and launch the game simply trough a command line launcher which takes some arguments, too.

I saw you added some torrent stuff to the code. Where is this from? MonoTorrent? Isn't there a nuget package or similar?

MarioGK commented 5 years ago

I was thinking about that as well, separating the launcher into multiple projects, a Core project containing all the logic and being .net standard, and we can have multiple UI projects that can be customized and be focused on specifc platform.

About the torrent code, i am still testing with this i tried multiple nuget files, and this code was the only one that worked and unfortunately it did not have a nuget package.

sven-n commented 4 years ago

I'd like to close this issue for now. One reason is, that I'd like to keep the scope of the project a bit narrower. It never had a high priority for me and a good launcher can be a big project on its own and doesn't have to be bound to OpenMU or MU Online in general.

If you still want to develop a launcher for OpenMU, feel free to move your code to a separate repository. However, if you need assist or are missing APIs in OpenMU, feel free to open a new issue.