Jump to content

OpenJK Launcher?


Xycaleth

Recommended Posts

Good idea, yay, nay?

 

I imagine something that would act as an installer, a launcher and an updater to keep OpenJK up to date, and to let you launch into the correct mod straight away without needing to mess about with command line arguments and stuff. In addition, making it easier to manage your mods - maybe a 'mod package' kind of thing that let's the installer know how to install your mod to the correct place?

 

EDIT: What are people's thoughts on this? What would you like to see in such a launcher, and what you would rather not see in the launcher?

Omicron, Sentra, Circa and 1 other like this
Link to comment

It would be cool if you could add some way for you to be able to automatically download and update mods from JKHub right from the launcher, kind of how Steam workshop works with Skyrim's launcher. 

While that would be nice, its not really practical.  We don't exactly have huge content data networks around the world that Steam does.  Also Nexus is way better than using workshop.

 

Not to mention most mods are a culmination of pk3s etc, there isn't exactly a locally stored hash or anything of what mods are what or what are installed.

Link to comment

So my question is how are we going to pay for bandwidth for updates via launcher.  If JKHub is willing to host the necessary bandwidth that'd be great, but we may use up more than you guys think.  OpenJK is about 5-6MB per download - which is probably manageable, but if you add on mods you'd easily be using upwards of 500MB - 4GB per mod depending.  Just as a lesson JKGalaxies launcher never really worked out that well because we could max out our bandwidth in just 15 days and then not be able to use it anymore; if JKHUB hosts it via dropbox it might work out though.

 

My suggestions:

 

Use Qt to build cross compatible simple desktop app.  Have some fancy graphic artist make the screen and the programmers use some derpy screen until they finish it.  Programmers will need to specify size of pixel artwork for launcher so they can easily just replace temp images with permanent one without any hassle.  Launcher should upon opening first check for updates to itself (use simple version system hosted on OpenJK website), and then ask user whether they wish to update the launcher.  Updates will grab a Inno Setup package of the launcher and run it after downloading it.  Inno setup relaunches the updated version of the Launcher.

 

Then you have a couple of buttons on the launcher:

  • Play (After pressing ask users what they want to launch, multiplayer or singleplayer) will then execute appropriate .exe along with path parameters and args (that can be setup in the launcher's options)
  • Options Here the user can: uninstall OpenJK, set arg parameters to launch when running the game (example: r_screen -2, com_MAXfps, sv_fps, r_mode, fs_cdpath, fs_homepath, r_fullscreen, fs_basepath, etc...), option to edit .cfg's,  open fs_homepath location (to view screenshots, demo's etc...).  This place is basically where all the advanced setup stuff can be done via a gui instead of using a batch script.  Might also want to allow a script runner here, so the user can copy and paste old batch scripts into a string field and have it just run that if they still don't want to use a gui to set stuff up.  All of this stuff is stored in .ini files.  Each .exe arg path options is separated from the others.  This way a user can launch a server with all the appropriate parameters and have different parameters setup for when they run a client.
  • Check for Updates (check's for the latest build package from builds.openjk.org and then downloads the zip/tar.gz/dmg appropriate for your OS, it will also select 64/32 bit client depending on your selection when you first install.  After grabbing update package, it will unpack and install to the current install location (indicated by .ini file) and overwrite files from old install.  Launcher will run all of this in the background, but alter the button to show % of update and the current task being performed as it goes.  Play button is disabled while this in progress.  You can change whether or not this runs automatically in the options menu.
  • Button that opens up browser to either openjk or jkhub
  • RSS feed or something similar that displays latest openjk news or maybe latest jkhub article
  • View patch notes button (displays the latest patch notes for openjk), pulls this off of openk.org

 

 

Additional features that are unnecessary, but might be nice:

  • Create separate profiles for multiple users or even profiles per mod so that user1 can use different args from user2 or so that when you run x mod, it launches with appropriate fs_game path and args from when you want to run y mod.  This would all be stored in a list like format so that when you press play it first asks what you want: dedicated server, undedicated server, multiplayer client, or singleplayer it then asks which profile/list of args you want to run and you pick this from a drop down menu.  Allow users to also set a default one so that just pressing the big part of the play button (instead of drop down arrow) just runs the default one.
  • Bug reporter that uses crash reports generated from openjk and some fields to send github openjk a bug report (potential for abuse here)

 

Things to consider:

  • Should latest update for openjk be latest build or latest stable build (or give user the option to decide)?
  • Just exactly how many options should there be, jka has always had a lot of options you can set using the console and most if not all can be run as an arg, but we don't want to overwhelm a user with options (even if it is hidden away in an 'advanced' menu somewhere).  Sometimes it is just simpler in this case to just allow the user to create an arg screen, so they can be as complex or simple as they want if the gui options aren't enough for them
  • Since the source code will likely have to be opensource, make sure we don't do something stupid to make openjk site vulnerable to ddos/abuse
  • Generating the rss feed/patch notes/and updates for the launcher/openjk builds should be easy and possibly automatic - let's not involve humans if we have to.  Once a code commit is done, have it compiled automatically and a build created and version numbers updated.  The only human we want to have to dinker around is: actually updating the source code, and writing the rss feed news and patch notes.

JKG Developer

Link to comment

So my question is how are we going to pay for bandwidth for updates via launcher.  If JKHub is willing to host the necessary bandwidth that'd be great, but we may use up more than you guys think.  OpenJK is about 5-6MB per download - which is probably manageable, but if you add on mods you'd easily be using upwards of 500MB - 4GB per mod depending.  Just as a lesson JKGalaxies launcher never really worked out that well because we could max out our bandwidth in just 15 days and then not be able to use it anymore; if JKHUB hosts it via dropbox it might work out though.

I stopped reading after this paragraph, but just like to say that the Dropbox bandwidth limit is probably not enough either. Maybe with @@Caelum's hosting but that might be up to him to allow such things.

Link to comment

I stopped reading after this paragraph, but just like to say that the Dropbox bandwidth limit is probably not enough either. Maybe with @@Caelum's hosting but that might be up to him to allow such things.

I cleaned my post up a bit so its a bit more readable.  :D

 

As long as openjk itself is less than 10mb when it comes to downloads, I think it'll probably be okay (of course if it gets popular we're screwed regardless of what we do without some sort of sponsor to pay for bandwidth).

JKG Developer

Link to comment

Great ideas so far everyone :) Thanks

 

Perhaps being able to download and update mods through the launcher isn't such a great idea then :P What I originally had in mind was for mods, that the user has already downloaded themselves, to provide an extra file (e.g. a .mod file) which tells the launcher how to install and remove the mod. It might not even need that if the zipped up mod is laid out in a predictable way (I haven't looked into it).

 

Checking for OpenJK would go through the OpenJK website, though I'm not exactly sure who hosts the OpenJK website... each signal "back to home" is only going to be a few hundreds of bytes so no big deal I don't think.

 

Use Qt to build cross compatible simple desktop app. [...]

I want to see the launcher written in some higher level language like C# or Python if that's suitable. No need for the low level control that C++ gives.

 

I like the idea of having separate user profiles. I'm not sure how many people actually share their computer with anyone else these days though (it seems to be becoming increasingly rare).

Link to comment

Great ideas so far everyone :) Thanks

 

Perhaps being able to download and update mods through the launcher isn't such a great idea then :P What I originally had in mind was for mods, that the user has already downloaded themselves, to provide an extra file (e.g. a .mod file) which tells the launcher how to install and remove the mod. It might not even need that if the zipped up mod is laid out in a predictable way (I haven't looked into it).

 

Checking for OpenJK would go through the OpenJK website, though I'm not exactly sure who hosts the OpenJK website... each signal "back to home" is only going to be a few hundreds of bytes so no big deal I don't think.

 

I want to see the launcher written in some higher level language like C# or Python if that's suitable. No need for the low level control that C++ gives.

 

I like the idea of having separate user profiles. I'm not sure how many people actually share their computer with anyone else these days though (it seems to be becoming increasingly rare).

I wouldn't mind the launcher being written in something like Python, but if you write it in C# it won't be cross compatible.  But Qt kind of makes C++ a lot higher level...plus I already have a lot of source code done for most of this if you want me to share/participate in it.

 

The separate user profiles could simply be used as separate 'mod' profiles even if we find the user profiles aren't all that useful/common.

 

Torrenting isn't something I've ever tried programming before, but it would probably solve the bandwidth issue for mods if I knew how to do it.

Exmirai likes this

JKG Developer

Link to comment

A launcher sounds good, but as said before in the thread it shouldn't be cluttered with too many options. The main thing it'd need to cover would probably be cvars that can only be set before launching (like fs_game, and the fs_*paths). Profile support could also be awesome, but I usually just exec a cfg file while the game's running if I need to change stuff.

 

Update checking sounds great, they should never get in your way though. (No dialogue boxes for errors checking updates, interface slowness, etc.)

 

C# with Gtk# would be a good cross-platform solution to use as it's not too low-level. I'm guessing it'll be skinned to hell, so there won't be any gripes with things not looking "native" to the OS.

 

There doesn't need to be any question about how releases can be managed and distributed :Dhttps://help.github.com/articles/creating-releases/
No cost, no limits, and it ties in great with source control. Releases are also served over HTTPS. The launcher can use the GitHub Releases API to check if there's a new release.
 

though I'm not exactly sure who hosts the OpenJK website...

 
That would be me :P

Futuza, Stoiss and Xycaleth like this
Link to comment

C# with WinForms would even work with Mono. But yeah, everything will be themed anyway so it doesn't really matter which we go for I don't think.

 

EDIT: Also @@Didz, how do releases work on GitHub? How does it know how to compile and package up the source code?

 

EDIT2: Nevermind! I figured it out now. This seems awesome and we should definitely use it :) Well that solves our updating problems then!

Futuza likes this
Link to comment

I haven't been keeping up with C# lately, but if its good for cross compatibility then go for it.  So do the GitHub source releases, allow us to host any .exe size we want and not cap our bandwidth?

 

A launcher sounds good, but as said before in the thread it shouldn't be cluttered with too many options. The main thing it'd need to cover would probably be cvars that can only be set before launching (like fs_game, and the fs_*paths). Profile support could also be awesome, but I usually just exec a cfg file while the game's running if I need to change stuff.

This would be pretty simple to make, just have a basic 'wizard' cfg creating option and then save these files in a profiles directory and create a list of Profile Names that it associates each file with (based on file name) that is populated in the launcher.  If users want more 'advanced' options from what the wizard offers, they can just manually open the cfg file and edit it like normal and then save it.  Then just have the launcher exec the selected profile when launching the game (they can be put in as args right?)

JKG Developer

Link to comment

That's so fugly 90's though, what's wrong with making it more up to date looking?

For the same reason OpenJK doesn't "improve" JK's gameplay among other things. You're sticking to the roots, aren't you? Like I said, an HD version based on the already existing JK launchers. No problem with alterations (JK2 and JKA's launchers aren't identical neither), but it shouldn't be too different.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...