You were right about the vcruntime140.dll, it was missing from the program directory. When FSO started using config files on all platforms, the config directory changed but Knossos was still writing the configuration to the old directory. FSO didn't read those files which caused your second issue.Thanks :yes:
Both issues will be resolved by the next update which should be available in a few hours.
Nevermind, the email arrived about 20 minutes later. Can I get added to the Diaspora team then?Weird, it shouldn't take that long. I've added you to the Diaspora team. You should be able to edit it and add new users to the team.
Also one suggestion. Is there any way we could get a download count on the website? One of the complaints that came up recently was that people don't know if anyone is playing their mod since many people look at HLP but don't register / comment. It would be nice if people could see that their work was being appreciated.I can implement that. I'd count how often the mod was installed through the client and how many users / visitors clicked on the download links. I won't count the downloads directly since I would only be able to do that for dl.fsnebula.org and not the other download links.
One other thing, how's the multi-lingual support on this thing? We've been shooting ourselves in the foot for years but making it all but impossible to play FS2 if you can't speak English (like 3/4 of the world). Can we not continue to do that please?I still have to make a few changes but the client will be fully translatable by the time it reaches 1.0.0 (which should take less than a year).
That OpenGL shader/completely-black-window bug is resolved with the latest release; as well as the can't-update-the-available-mods-list bug. Thanks! :) :yes:Glad to hear that those issues are fixed. :)
edit: ooh, I have another lousy feature request for you - what about a mod text-search box? I am a command line fiend, and I also think that good search beats hierarchies in most cases :nod:
This thing is awesome. If not already fully awesome [small amounts of mods, bugs, whatever]... It looks like something that will be awesome soon :D. Especially great for newcomers who have problems with FSOInstaller or manual installing. I'll give it a try tomorrow.Thanks for the praise! :lol: Please let me know what you think after your test.
That OpenGL shader/completely-black-window bug is resolved with the latest release; as well as the can't-update-the-available-mods-list bug. Thanks! :) :yes:Glad to hear that those issues are fixed. :)
edit: ooh, I have another lousy feature request for you - what about a mod text-search box? I am a command line fiend, and I also think that good search beats hierarchies in most cases :nod:
fsnebula.org (https://fsnebula.org/workshop/mods) now has a full text search. What do you think? It's not perfect but it's a start.
The client should already have a search but I guess you want to search the descriptions and not just the mod titles. I'll put that on the to do list.
What do you think about a "play last" button somewhere that'll launch the last played mod?What about a tab "Last Played" which automatically shows the mod you last played? I could make it the default tab and place a big "Play" button on it.
Or maybe another tab called active, to the left of installed, [...]
Can we get this to launch FRED too?Shure. I'll add a new button "Launch FRED" to the mod entries unless someone has a better idea.
Also the Play / Settings / X buttons are handled looks rather ugly. Can we get them to appear at the bottom of the entry rather than the top?That should be possible.
One other thing, how's the multi-lingual support on this thing? We've been shooting ourselves in the foot for years but making it all but impossible to play FS2 if you can't speak English (like 3/4 of the world). Can we not continue to do that please?
Psst... the FSO Installer has had support for six languages since 2014... :nervous:
Seriously though, you have no idea how many people I could have gotten into FSO if I could get it to work in Chinese. But instead we're being really slow about multi-lingual support for FSO even though someone made a Japanese port almost immediately after the code was released.
Traceback (most recent call last):
File ".../knossos/knossos/tasks.py", line 379, in finish
mod.save()
File ".../knossos/knossos/repo.py", line 833, in save
shutil.copy(self.logo, logo)
File "/usr/lib64/python3.5/shutil.py", line 235, in copy
copyfile(src, dst, follow_symlinks=follow_symlinks)
File "/usr/lib64/python3.5/shutil.py", line 115, in copyfile
with open(dst, 'wb') as fdst:
FileNotFoundError: [Errno 2] No such file or directory: '$FS2PATH/Mediavps_2014/knossos.bmp'
https://fsnebula.org/workshop/mods Looking at this...
That page needs some real prettying up.
Does the auto-updater on Windows work?[/list]
ERROR:MainThread:launcher.my_excepthook: UNCAUGHT EXCEPTION!
Traceback (most recent call last):
File "/usr/share/knossos/knossos/windows.py", line 280, in show_settings
SettingsWindow()
File "/usr/share/knossos/knossos/windows.py", line 453, in __init__
self._tabs['fso_flags'] = tab = FlagsWindow(window=False)
File "/usr/share/knossos/knossos/windows.py", line 1235, in __init__
self.read_flags()
File "/usr/share/knossos/knossos/windows.py", line 1238, in read_flags
flags = api.get_fso_flags()
File "/usr/share/knossos/knossos/api.py", line 138, in get_fso_flags
rc = run_fs2_silent(['-get_flags'])
File "/usr/share/knossos/knossos/runner.py", line 332, in run_fs2_silent
ld_path, missing = fix_missing_libs(fs2_bin)
File "/usr/share/knossos/knossos/runner.py", line 275, in fix_missing_libs
fixed_name = get_lib_path(ctypes.util.find_library(ld_name.group(1)))
File "/usr/share/knossos/knossos/runner.py", line 240, in get_lib_path
data = util.check_output(['ldconfig', '-p'], env={'LANG': 'C'}).splitlines()
File "/usr/share/knossos/knossos/util.py", line 303, in check_output
return subprocess.check_output(*args, **kwargs)
File "/usr/lib/python3.5/subprocess.py", line 626, in check_output
**kwargs).stdout
File "/usr/lib/python3.5/subprocess.py", line 693, in run
with Popen(*popenargs, **kwargs) as process:
File "/usr/lib/python3.5/subprocess.py", line 947, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.5/subprocess.py", line 1551, in _execute_child
raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: 'ldconfig'
[0215/145225:WARNING:resource_bundle.cc(311)] locale_file_path.empty() for locale
[0215/145225:WARNING:resource_bundle.cc(311)] locale_file_path.empty() for locale
[0215/145323:WARNING:resource_bundle.cc(311)] locale_file_path.empty() for locale
[0215/145323:WARNING:resource_bundle.cc(311)] locale_file_path.empty() for locale
Most mac apps that are just a bundle, no scripts or whatever, simply have a mechanism to download the new app, move the current one to the trash, and place the new one in its place. [...]This would work but I'm not sure if I can rename the .app folder while Knossos is running or if I have to launch a script to do that.
I would have it check for updates once a day if left running, and on launch. A manual button should remain in place. Hopefully that won't result in too much traffic.Sounds good to me. The traffic shouldn't be a problem. The mod list is 21KB and the nightlies list is 1MB. Both will keep growing over time but I'm more worried about the mod downloads from dl.fsnebula.org.
I might take a look at your mod list code if you need anything done with it, web dev is my thing :)The relevant code is in the html folder (https://github.com/ngld/knossos/tree/develop/html). The only issue I know of is that the play button can overlap the mod's image if the label gets longer (which will happen with translations).
That page needs some real prettying up. Mod ID I think could be hidden and just be for back end internal use. We've got Mod Title anyway. Let's have the mod bitmap be shown, and perhaps the beginning of the mod description (first 140 characters or something?). Maybe authors could also upload images and/or a link to a youtube video that should show up (as links) with the visible description? First release is nice, but also a "last updated" column, as well as the download counter there too. Also filters! I saw you added those categories before, but I don't see them being used for organizational purposes yet. I think it would really help if there was like a FSO Builds category. It's not obvious to a newbie what they need to actually play.I agree with most of those changes. The mod ID is shown because you need to enter that if you want to add a dependency to your own mod. I probably should change that and allow you to enter the mod title and handle the IDs in the code or something like that.
So there'd be a tab/screen of FreeSpace Open builds, which would all be clearly marked (FSO alone doesn't mean much to a newbie and not all mods guarantee compatibility with the latest and some might need custom builds), and then tab/screens for the different categories. Also I think the MediaVPs should have an unfair advantage with placement so its like a no-brainer to select. So a newbie would be like "ok i have this installer, oh builds, right that's why I'm here. I'll take the version with the biggest number and I'll take these MediaVPs which is labelled as super recommended and then I'll explore these other sections"I think the tabs would take up too much space to fit in a line. Maybe vertical tabs? Hm....
I'd also like... just recommend most of those changes to the installer as well. I think ideally both should act as possible in terms of functionality and style.I agree with karajorma regarding this but I could generate text files for the installer. It would allow the installer to install the mods on the Nebula which would make it easier for mod authors to support both if they want to.
Launcher specific... Maybe there could be something like a "FSO exe ready/missing/lol what are you doing this is still retail" sort of indicator? Someone running this for the first time may not have properly selected the right exe yet. Like in wxLauncher, it clearly tells you which build you are using. Being quickly able to change builds from the main window is super useful for us devs, I'm not so sure about normal players though... Maybe an advanced mode? :p (Also the launcher can't find FRED right now :()The indicator is a good idea, should I add a statusbar similar to what wxlauncher does? After checking the code I realized that Knossos could only find FRED if it was installed through Knossos. :banghead: Will be fixed by the next update.
Sort of related as well, wxLauncher can take a build filename and basically tell you what this build exactly is. Like fs2_open_3_7_5_d is FreeSpace Open 3.7.5 (Debug) which could help people identify special builds. And nightlies have githashes (useful for only them) and a build date (useful for everyone else) so having that info clearly readable would be cool.This already works with FSO builds installed through Knossos (in that case I can just use the metadata from fsnebula.org) but I will implement it for existing builds as well.
Also I think Settings needs to be broken up a bit. Like right now. "Settings" at first I thought it was just launcher settings, and didn't have anything to do with FS Open. So maybe a button that takes you to Launcher Settings and another button that takes you to Game Settings (which can still be the same window in the end, just different parts of that view).I'm thinking of extending the mod settings window to cover all available FSO settings. Then I could remove the FSO settings from the settings window and make a new FSO settings window which would look like the mod settings but would set the global defaults.
I don't think I'd call the Default flags what it is right now, maybe more like "advanced default settings"?I could rename all the flags pages / tabs to "advanced settings". It would work well with the change I suggested above.
And I see you have a button to the fs2_open.log which is amazing and I had just spent a paragraph saying you should add so that's awesome. But maybe also as shortcut to the proper config folder (like the right %AppData% folder on windows, or %OSX_EQUIVALENT% or %LINUX_EQUIVALENT% if we get that far)? Gotta be easy to find those screenshots!The config folder button is a good idea. I added the log button because I had to look it up myself and thought it would be easier to have a single button which worked on all platforms instead of having to link users to some guide which explained where to find it.
Does the auto-updater on Windows work?Could you check what update channel you're on (Settings > Launcher settings)? It should be set to "stable". I'm not using "develop" right now.
It didn't for me... I opened it, it didn't say there were updates automatically. I just downloaded a new exe and grabbed the new version.
Is anyone using the fso:// links? (Mod pages on fsnebula.org have a green "Install" button which, when clicked, should launch Knossos to install that mod.)Great! :)
It did for me!
Should I display the forum highlights? Where?I think I need to make the main window bigger. I could add the hightlights to the "Last played" tab and maybe drop the mod description there.
I think you need a welcome tab. Grab the highlights board rss feed or something and mostly populate it with that. And maybe have a link to whatever welcome guide that the main site will end up having?
Actually, first we need to decide who that page is for. If it's only ever going to be used by modders, it's fine as is. If we're going to start sending users there, then it definitely needs changing. As far as I'm concerned, we shouldn't ever be sending people to the Knossos / Nebula pages. You go to the HLP main page, click download and then do everything through Knossos. I'm against creating yet another external website where we sometimes direct users (like we used to with the SCP site) and then create a huge mess because people are going to all kinds of different places when they have problems (believe it or not we used to get help requests on the SCP site!)I could make a second page which shows up when you click on the "Available" tab in Knossos and leave the current mods list mostly the way it is (though a few tweaks / a bit more information wouldn't hurt).
Sort of. Knossos detected the download, grabbed it, started to install and then Avast stuck its nose in and the whole thing fell over.Hm, not sure if I can work around that.
Also, I have Diaspora in a different folder from FSO. How can I get Knossos to recognise it?Knossos expects mods to be subfolders of the selected FS2 directory, there's currently no way around that.
FSO has recently gained support for specifying on which display the game should be displayed. Could it be possible to add support for specifying that into Knosses?Most of the UI is done with Qt Designer. You'd need to change one of the settings_*.ui files in the ui folder (https://github.com/ngld/knossos/tree/develop/ui). Afterwards you need to add the code to save / load the value to knossos/windows.py (https://github.com/ngld/knossos/tree/develop/knossos/windows.py).
I'm currently looking at the code and I'd like to try and implement that but I'm not very good with python so it may take a while.
Okay, this is weird: Knossos launches, but it won't give me any option to point it to a Freespace 2 installation or something similar. It seems forever stuck in a "Loading..." screen.That's the browser's debug log which frankly isn't too helpful. Can you please post the contents of %APPDATA%\knossos\log.txt?
[...]
I can't access settings, and the opening screen where I am supposed to set the launcher to the Freespace 2 install directory or similar flatly does not appear. Debug log gives this: [...]
Lots of good suggestions here but if we're talking about replacing wxlauncher/5.5g/fso installer with it, we probably need to focus on s stable most viable product, and then enhance from there. I wasn't expecting this to be ready for the mainstream by the 3.8 release but feel free to prove me wrong :)I'm focusing on fixing bugs (which is why I'm encouraging feedback and bug reports so much) but for it to be mainstream ready it should be able to compete wxLauncher and the FSO installer.
INFO:MainThread:launcher.main: Running Knossos 0.4.1 on PyQt5.
INFO:MainThread:_code_cache._create_comtypes_gen_package: Imported existing <module 'comtypes.gen' (<pyimod03_importers.FrozenImporter object at 0x00CD91F0>)>
INFO:MainThread:_code_cache._find_gen_dir: Using writeable comtypes cache directory: 'C:\Users\joshu\AppData\Local\Temp\comtypes_cache\Knossos-35'
INFO:MainThread:integration.init: Activating Windows integration...
INFO:MainThread:api.get_fso_profile_path: Using profile path "C:\Users\joshu\AppData\Roaming\HardLightProductions\FreeSpaceOpen\".
ERROR:MainThread:launcher.my_excepthook: UNCAUGHT EXCEPTION!
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\knossos\api.py", line 571, in init_self
File "C:\Users\packager\Downloads\release\knossos-release\knossos\windows.py", line 215, in check_fso
File "C:\Users\packager\Downloads\release\knossos-release\knossos\windows.py", line 463, in __init__
File "C:\Users\packager\Downloads\release\knossos-release\knossos\windows.py", line 933, in read_config
TypeError: setText(self, str): argument 1 has unexpected type 'int'
ERROR:MainThread:launcher.my_excepthook: UNCAUGHT EXCEPTION!
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\knossos\web.py", line 103, in finishInit
File "C:\Users\packager\Downloads\release\knossos-release\knossos\windows.py", line 202, in finish_init
File "C:\Users\packager\Downloads\release\knossos-release\knossos\windows.py", line 215, in check_fso
File "C:\Users\packager\Downloads\release\knossos-release\knossos\windows.py", line 463, in __init__
File "C:\Users\packager\Downloads\release\knossos-release\knossos\windows.py", line 933, in read_config
TypeError: setText(self, str): argument 1 has unexpected type 'int'
ERROR:MainThread:launcher.my_excepthook: UNCAUGHT EXCEPTION!
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\knossos\windows.py", line 280, in show_settings
File "C:\Users\packager\Downloads\release\knossos-release\knossos\windows.py", line 463, in __init__
File "C:\Users\packager\Downloads\release\knossos-release\knossos\windows.py", line 933, in read_config
TypeError: setText(self, str): argument 1 has unexpected type 'int'
@Joshua: Thanks! I've found and fixed the bug. Please download the new build (https://dev.tproxy.de/knossos/stable/knossos.exe) and install it.
Could you please check if you have a fs2_open.ini in %APPDATA%\Roaming\HardLightProductions\FreeSpaceOpen ?
INFO:MainThread:launcher.main: Running Knossos 0.4.1 on PyQt5.
INFO:MainThread:_code_cache._create_comtypes_gen_package: Imported existing <module 'comtypes.gen' (<pyimod03_importers.FrozenImporter object at 0x007891F0>)>
INFO:MainThread:_code_cache._find_gen_dir: Using writeable comtypes cache directory: 'C:\Users\joshu\AppData\Local\Temp\comtypes_cache\Knossos-35'
INFO:MainThread:integration.init: Activating Windows integration...
INFO:MainThread:api.get_fso_profile_path: Using profile path "C:\Users\joshu\AppData\Roaming\HardLightProductions\FreeSpaceOpen\".
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160824+09e3792 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160727+6646bf3 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160904+2b680f8 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160809+7265711 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160810+c3b4380 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160906+60fff3f (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160802+dfc10ad (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160908+932c05c (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160814+6f7039e (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160808+4b900bb (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160731+feb49ea (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160727+aec35e4 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160905+3e4a289 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160806+82ac53a (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160819+127976c (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160831+71c2963 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160820+bf93beb (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160807+9b53743 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160823+eb086da (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160822+10e88b7 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160729+0819d57 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160830+ee689cb (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160817+d840f9d (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160811+83724c0 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160827+1fa84b4 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160812+96c7ea9 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160805+a570eca (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160829+4cb9e5c (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160720+30de956 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20170208+86cb91f (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160801+9a91e60 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160813+c17c582 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160818+e9cc460 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160901+5c5a2f6 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160906+8d05393 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160815+43ca34c (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160826+4a418a6 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160825+0a67a78 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160816+384b4b9 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160828+864e218 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160821+be12b62 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160903+8d2674e (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-4:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160902+0c240c3 (FSO_nightlies)> is empty, ignoring it!
INFO:Thread-2:util.download: Downloading "https://fsnebula.org/uploads/img/4.png"...
INFO:Thread-5:util.download: Downloading "https://fsnebula.org/uploads/img/5.bmp"...
INFO:Thread-10:util.download: Downloading "https://fsnebula.org/uploads/img/5.bmp"...
INFO:Thread-9:util.download: Downloading "https://fsnebula.org/uploads/img/5.bmp"...
INFO:Thread-4:util.download: Downloading "https://fsnebula.org/uploads/img/7.bmp"...
INFO:Thread-6:util.download: Downloading "https://fsnebula.org/uploads/img/8.bmp"...
INFO:Thread-1:util.download: Downloading "https://fsnebula.org/uploads/img/6.png"...
INFO:Thread-8:util.download: Downloading "https://fsnebula.org/uploads/img/9.png"...
INFO:Thread-4:util.download: Downloading "https://www.dropbox.com/s/divsr5wotncz9os/The_Last_Stand.7z?dl=1"...
ERROR:Thread-4:tasks.work2: File "https://www.dropbox.com/s/divsr5wotncz9os/The_Last_Stand.7z?dl=1" is corrupted!
INFO:Thread-4:util.download: Downloading "https://dl.fsnebula.org/mods/TheLastStand/1.0.0/The_Last_Stand.7z"...
INFO:Thread-8:util.download: Downloading "http://download.fsnebula.org/mods/FSO/3.7.4/1_fs2_open_3.7.4.7z"...
WARNING:MainThread:tasks.finish: Package Windows of mod FSO (FSO) is not installed but in the local repo. Fixing...
ERROR:MainThread:launcher.my_excepthook: UNCAUGHT EXCEPTION!
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\knossos\tasks.py", line 209, in finish
File "C:\Users\packager\Downloads\release\knossos-release\knossos\repo.py", line 844, in save
FileNotFoundError: [Errno 2] No such file or directory: 'D:\\GoG Games\\Freespace 2\\Freespace 2\\mod.json'
INFO:MainThread:api.run_mod: Starting mod "FSO" with cmdline "['-mod', 'Freespace 2']".
INFO:MainThread:api.run_mod: Starting mod "The Last Stand" with cmdline "['-mod', 'TheLastStand']".
INFO:MainThread:api.run_mod: Starting mod "The Last Stand" with cmdline "['-mod', 'TheLastStand']".
INFO:MainThread:api.run_mod: Starting mod "The Last Stand" with cmdline "['-mod', 'TheLastStand']".
INFO:MainThread:api.run_mod: Starting mod "The Last Stand" with cmdline "['-mod', 'TheLastStand']".
ERROR:MainThread:launcher.my_excepthook: UNCAUGHT EXCEPTION!
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\knossos\windows.py", line 297, in update_mod_buttons
File "C:\Users\packager\Downloads\release\knossos-release\knossos\repo.py", line 228, in query
AttributeError: 'Version' object has no attribute 'select'
ERROR:MainThread:launcher.my_excepthook: UNCAUGHT EXCEPTION!
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\knossos\windows.py", line 297, in update_mod_buttons
File "C:\Users\packager\Downloads\release\knossos-release\knossos\repo.py", line 228, in query
AttributeError: 'Version' object has no attribute 'select'
ERROR:MainThread:launcher.my_excepthook: UNCAUGHT EXCEPTION!
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\knossos\windows.py", line 297, in update_mod_buttons
File "C:\Users\packager\Downloads\release\knossos-release\knossos\repo.py", line 228, in query
AttributeError: 'Version' object has no attribute 'select'
INFO:MainThread:tasks.__init__: Removing old logo "C:\Users\joshu\AppData\Roaming/knossos\logo_719bf874d0f8d062dd26a1652b7c4122.png"...
INFO:MainThread:tasks.__init__: Removing old logo "C:\Users\joshu\AppData\Roaming/knossos\logo_7910f4f94df888aa4dd8f914d2423832.bmp"...
INFO:MainThread:tasks.__init__: Removing old logo "C:\Users\joshu\AppData\Roaming/knossos\logo_8d0d19ff9ea331b2dfe3bf47ba55c021.bmp"...
INFO:MainThread:tasks.__init__: Removing old logo "C:\Users\joshu\AppData\Roaming/knossos\logo_9c0f5f71451552492edad6c8e0423ebd.bmp"...
INFO:MainThread:tasks.__init__: Removing old logo "C:\Users\joshu\AppData\Roaming/knossos\logo_f605a953b8d92979ce66804a202155ea.png"...
INFO:MainThread:tasks.__init__: Removing old logo "C:\Users\joshu\AppData\Roaming/knossos\logo_fa3460b77a3081a25de0665154953442.png"...
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160824+09e3792 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160727+6646bf3 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160904+2b680f8 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160809+7265711 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160810+c3b4380 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160906+60fff3f (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160802+dfc10ad (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160908+932c05c (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160814+6f7039e (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160808+4b900bb (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160731+feb49ea (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160727+aec35e4 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160905+3e4a289 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160806+82ac53a (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160819+127976c (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160831+71c2963 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160820+bf93beb (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160807+9b53743 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160823+eb086da (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160822+10e88b7 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160729+0819d57 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160830+ee689cb (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160817+d840f9d (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160811+83724c0 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160827+1fa84b4 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160812+96c7ea9 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160805+a570eca (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160829+4cb9e5c (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160720+30de956 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20170208+86cb91f (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160801+9a91e60 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160813+c17c582 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160818+e9cc460 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160901+5c5a2f6 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160906+8d05393 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160815+43ca34c (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160826+4a418a6 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160825+0a67a78 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160816+384b4b9 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160828+864e218 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160821+be12b62 (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160903+8d2674e (FSO_nightlies)> is empty, ignoring it!
WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160902+0c240c3 (FSO_nightlies)> is empty, ignoring it!
INFO:Thread-6:util.download: Downloading "https://fsnebula.org/uploads/img/4.png"...
INFO:Thread-8:util.download: Downloading "https://fsnebula.org/uploads/img/7.bmp"...
INFO:Thread-10:util.download: Downloading "https://fsnebula.org/uploads/img/8.bmp"...
INFO:Thread-2:util.download: Downloading "https://fsnebula.org/uploads/img/5.bmp"...
INFO:Thread-1:util.download: Downloading "https://fsnebula.org/uploads/img/5.bmp"...
INFO:Thread-4:util.download: Downloading "https://fsnebula.org/uploads/img/5.bmp"...
INFO:Thread-5:util.download: Downloading "https://fsnebula.org/uploads/img/5.bmp"...
INFO:Thread-3:util.download: Downloading "https://fsnebula.org/uploads/img/5.bmp"...
INFO:Thread-9:util.download: Downloading "https://fsnebula.org/uploads/img/5.bmp"...
INFO:Thread-7:util.download: Downloading "https://fsnebula.org/uploads/img/5.bmp"...
INFO:Thread-6:util.download: Downloading "https://fsnebula.org/uploads/img/9.png"...
INFO:Thread-2:util.download: Downloading "https://fsnebula.org/uploads/img/6.png"...
WARNING:MainThread:tasks.finish: Package Windows of mod FSO (FSO) is not installed but in the local repo. Fixing...
ERROR:MainThread:launcher.my_excepthook: UNCAUGHT EXCEPTION!
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\knossos\tasks.py", line 209, in finish
File "C:\Users\packager\Downloads\release\knossos-release\knossos\repo.py", line 844, in save
FileNotFoundError: [Errno 2] No such file or directory: 'D:\\GoG Games\\Freespace 2\\Freespace 2\\mod.json'
INFO:Thread-4:util.download: Downloading "http://mvp.fsmods.net/2014/MV_Effects.7z"...
INFO:Thread-1:util.download: Downloading "http://mvp.fsmods.net/2014/MV_Music.7z"...
INFO:Thread-8:util.download: Downloading "http://mvp.fsmods.net/2014/MV_Assets.7z"...
INFO:Thread-6:util.download: Downloading "http://mvp.fsmods.net/2014/MV_Root.7z"...
INFO:Thread-2:util.download: Downloading "http://mvp.fsmods.net/2014/MV_RadarIcons.7z"...
INFO:Thread-3:util.download: Downloading "http://www.lunardigitalproductions.com/downloads/MediaVPs2014/MV_Advanced.7z"...
INFO:Thread-7:util.download: Downloading "http://download.fsnebula.org/mods/mvps_2014/1.0.0/MV_CB_ANI_2.7z"...
INFO:Thread-10:util.download: Downloading "https://www.dropbox.com/s/q7jivmvp7z2nyq7/Lost_v.1.2.zip?dl=1"...
INFO:Thread-5:util.download: Downloading "http://download.fsnebula.org/mods/mvps_2014/1.0.0/MV_CB_ANI_1.7z"...
INFO:Thread-9:util.download: Downloading "http://mvp.fsmods.net/2014/MV_A-Glows.7z"...
ERROR:Thread-10:tasks.work2: Failed to move file "C:\Users\joshu\AppData\Local\Temp\tmpgosem9ac\content\Lost_v.1.2/Lost.vp" from archive "Lost_v.1.2.zip" for package "Required files" (Lost) to its destination D:\GoG Games\Freespace 2\lost\Lost.vp!
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\shutil.py", line 544, in move
OSError: [WinError 17] Het systeem kan het bestand niet verplaatsen naar een ander station: 'C:\\Users\\joshu\\AppData\\Local\\Temp\\tmpgosem9ac\\content\\Lost_v.1.2/Lost.vp' -> 'D:\\GoG Games\\Freespace 2\\lost\\Lost.vp'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\knossos\tasks.py", line 567, in work2
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\shutil.py", line 559, in move
PermissionError: [WinError 5] Toegang geweigerd: 'C:\\Users\\joshu\\AppData\\Local\\Temp\\tmpgosem9ac\\content\\Lost_v.1.2/Lost.vp'
ERROR:Thread-10:progress.run: Exception in Thread!
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\knossos\progress.py", line 111, in run
File "C:\Users\packager\Downloads\release\knossos-release\knossos\progress.py", line 387, in work
File "C:\Users\packager\Downloads\release\knossos-release\knossos\tasks.py", line 612, in work2
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\tempfile.py", line 808, in __exit__
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\tempfile.py", line 812, in cleanup
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\shutil.py", line 494, in rmtree
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\shutil.py", line 384, in _rmtree_unsafe
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\shutil.py", line 384, in _rmtree_unsafe
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\shutil.py", line 389, in _rmtree_unsafe
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\shutil.py", line 387, in _rmtree_unsafe
PermissionError: [WinError 5] Toegang geweigerd: 'C:\\Users\\joshu\\AppData\\Local\\Temp\\tmpgosem9ac\\content\\Lost_v.1.2\\Lost.vp'
ERROR:raven.AsyncWorker:base._failed_send: Sentry responded with an error: HTTPSConnectionPool(host='sentry.gruenprint.de', port=443): Max retries exceeded with url: /api/9/store/ (Caused by ConnectTimeoutError(<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x00CDB8F0>, 'Connection to sentry.gruenprint.de timed out. (connect timeout=1)')) (url: https://sentry.gruenprint.de/api/9/store/)
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\connection.py", line 141, in _new_conn
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\util\connection.py", line 83, in create_connection
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\util\connection.py", line 73, in create_connection
socket.timeout: timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 600, in urlopen
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 345, in _make_request
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 844, in _validate_conn
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\connection.py", line 284, in connect
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\connection.py", line 146, in _new_conn
requests.packages.urllib3.exceptions.ConnectTimeoutError: (<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x00CDB8F0>, 'Connection to sentry.gruenprint.de timed out. (connect timeout=1)')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\adapters.py", line 423, in send
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 649, in urlopen
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\util\retry.py", line 376, in increment
requests.packages.urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='sentry.gruenprint.de', port=443): Max retries exceeded with url: /api/9/store/ (Caused by ConnectTimeoutError(<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x00CDB8F0>, 'Connection to sentry.gruenprint.de timed out. (connect timeout=1)'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\raven\transport\threaded_requests.py", line 26, in send_sync
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\raven\transport\requests.py", line 35, in send
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\api.py", line 110, in post
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\api.py", line 56, in request
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\sessions.py", line 488, in request
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\raven\breadcrumbs.py", line 297, in send
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\sessions.py", line 609, in send
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\adapters.py", line 479, in send
requests.exceptions.ConnectTimeout: HTTPSConnectionPool(host='sentry.gruenprint.de', port=443): Max retries exceeded with url: /api/9/store/ (Caused by ConnectTimeoutError(<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x00CDB8F0>, 'Connection to sentry.gruenprint.de timed out. (connect timeout=1)'))
ERROR:raven.AsyncWorker:base._log_failed_submission: ['Failed to move file "C:\\Users\\joshu\\AppData\\Local\\Temp\\tmpgosem9ac\\content\\Lost_v.1.2/Lost.vp" from archive "Lost_v.1.2.zip" for package "Required files" (Lost) to its destination D:\\GoG Games\\Freespace 2\\lost\\Lost.vp!', ' File "C:\\Users\\packager\\Downloads\\release\\knossos-release\\knossos\\tasks.py", line 567, in work2', ' File "C:\\Users\\packager\\Downloads\\release\\knossos-release\\tools\\win\\py-env\\lib\\shutil.py", line 559, in move']
ERROR:raven.AsyncWorker:base._failed_send: Sentry responded with an error: HTTPSConnectionPool(host='sentry.gruenprint.de', port=443): Max retries exceeded with url: /api/9/store/ (Caused by ConnectTimeoutError(<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x001D3BF0>, 'Connection to sentry.gruenprint.de timed out. (connect timeout=1)')) (url: https://sentry.gruenprint.de/api/9/store/)
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\connection.py", line 141, in _new_conn
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\util\connection.py", line 83, in create_connection
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\util\connection.py", line 73, in create_connection
socket.timeout: timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 600, in urlopen
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 345, in _make_request
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 844, in _validate_conn
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\connection.py", line 284, in connect
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\connection.py", line 146, in _new_conn
requests.packages.urllib3.exceptions.ConnectTimeoutError: (<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x001D3BF0>, 'Connection to sentry.gruenprint.de timed out. (connect timeout=1)')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\adapters.py", line 423, in send
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 649, in urlopen
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\util\retry.py", line 376, in increment
requests.packages.urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='sentry.gruenprint.de', port=443): Max retries exceeded with url: /api/9/store/ (Caused by ConnectTimeoutError(<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x001D3BF0>, 'Connection to sentry.gruenprint.de timed out. (connect timeout=1)'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\raven\transport\threaded_requests.py", line 26, in send_sync
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\raven\transport\requests.py", line 35, in send
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\api.py", line 110, in post
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\api.py", line 56, in request
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\sessions.py", line 488, in request
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\raven\breadcrumbs.py", line 297, in send
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\sessions.py", line 609, in send
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\adapters.py", line 479, in send
requests.exceptions.ConnectTimeout: HTTPSConnectionPool(host='sentry.gruenprint.de', port=443): Max retries exceeded with url: /api/9/store/ (Caused by ConnectTimeoutError(<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x001D3BF0>, 'Connection to sentry.gruenprint.de timed out. (connect timeout=1)'))
ERROR:raven.AsyncWorker:base._log_failed_submission: ['Exception in Thread!', ' File "C:\\Users\\packager\\Downloads\\release\\knossos-release\\knossos\\progress.py", line 111, in run', ' File "C:\\Users\\packager\\Downloads\\release\\knossos-release\\knossos\\progress.py", line 387, in work', ' File "C:\\Users\\packager\\Downloads\\release\\knossos-release\\knossos\\tasks.py", line 612, in work2', ' File "C:\\Users\\packager\\Downloads\\release\\knossos-release\\tools\\win\\py-env\\lib\\tempfile.py", line 808, in __exit__', ' File "C:\\Users\\packager\\Downloads\\release\\knossos-release\\tools\\win\\py-env\\lib\\tempfile.py", line 812, in cleanup', ' File "C:\\Users\\packager\\Downloads\\release\\knossos-release\\tools\\win\\py-env\\lib\\shutil.py", line 494, in rmtree', ' File "C:\\Users\\packager\\Downloads\\release\\knossos-release\\tools\\win\\py-env\\lib\\shutil.py", line 384, in _rmtree_unsafe', ' File "C:\\Users\\packager\\Downloads\\release\\knossos-release\\tools\\win\\py-env\\lib\\shutil.py", line 384, in _rmtree_unsafe', ' File "C:\\Users\\packager\\Downloads\\release\\knossos-release\\tools\\win\\py-env\\lib\\shutil.py", line 389, in _rmtree_unsafe', ' File "C:\\Users\\packager\\Downloads\\release\\knossos-release\\tools\\win\\py-env\\lib\\shutil.py", line 387, in _rmtree_unsafe']
WARNING:MainThread:tasks.finish: Package Windows of mod FSO (FSO) is not installed but in the local repo. Fixing...
ERROR:MainThread:launcher.my_excepthook: UNCAUGHT EXCEPTION!
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\knossos\tasks.py", line 209, in finish
File "C:\Users\packager\Downloads\release\knossos-release\knossos\repo.py", line 844, in save
FileNotFoundError: [Errno 2] No such file or directory: 'D:\\GoG Games\\Freespace 2\\Freespace 2\\mod.json'
ERROR:raven.AsyncWorker:base._failed_send: Sentry responded with an error: HTTPSConnectionPool(host='sentry.gruenprint.de', port=443): Max retries exceeded with url: /api/9/store/ (Caused by ConnectTimeoutError(<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x00CDB090>, 'Connection to sentry.gruenprint.de timed out. (connect timeout=1)')) (url: https://sentry.gruenprint.de/api/9/store/)
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\connection.py", line 141, in _new_conn
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\util\connection.py", line 83, in create_connection
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\util\connection.py", line 73, in create_connection
socket.timeout: timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 600, in urlopen
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 345, in _make_request
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 844, in _validate_conn
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\connection.py", line 284, in connect
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\connection.py", line 146, in _new_conn
requests.packages.urllib3.exceptions.ConnectTimeoutError: (<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x00CDB090>, 'Connection to sentry.gruenprint.de timed out. (connect timeout=1)')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\adapters.py", line 423, in send
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 649, in urlopen
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\util\retry.py", line 376, in increment
requests.packages.urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='sentry.gruenprint.de', port=443): Max retries exceeded with url: /api/9/store/ (Caused by ConnectTimeoutError(<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x00CDB090>, 'Connection to sentry.gruenprint.de timed out. (connect timeout=1)'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\raven\transport\threaded_requests.py", line 26, in send_sync
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\raven\transport\requests.py", line 35, in send
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\api.py", line 110, in post
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\api.py", line 56, in request
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\sessions.py", line 488, in request
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\raven\breadcrumbs.py", line 297, in send
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\sessions.py", line 609, in send
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\adapters.py", line 479, in send
requests.exceptions.ConnectTimeout: HTTPSConnectionPool(host='sentry.gruenprint.de', port=443): Max retries exceeded with url: /api/9/store/ (Caused by ConnectTimeoutError(<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x00CDB090>, 'Connection to sentry.gruenprint.de timed out. (connect timeout=1)'))
ERROR:raven.AsyncWorker:base._log_failed_submission: ["FileNotFoundError: [Errno 2] No such file or directory: 'D:\\\\GoG Games\\\\Freespace 2\\\\Freespace 2\\\\mod.json'", ' File "C:\\Users\\packager\\Downloads\\release\\knossos-release\\knossos\\tasks.py", line 209, in finish', ' File "C:\\Users\\packager\\Downloads\\release\\knossos-release\\knossos\\repo.py", line 844, in save']
ERROR:MainThread:base._log_failed_submission: ["AttributeError: 'Version' object has no attribute 'select'", ' File "C:\\Users\\packager\\Downloads\\release\\knossos-release\\knossos\\windows.py", line 297, in update_mod_buttons', ' File "C:\\Users\\packager\\Downloads\\release\\knossos-release\\knossos\\repo.py", line 228, in query']
ERROR:MainThread:launcher.my_excepthook: UNCAUGHT EXCEPTION!
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\knossos\windows.py", line 297, in update_mod_buttons
File "C:\Users\packager\Downloads\release\knossos-release\knossos\repo.py", line 228, in query
AttributeError: 'Version' object has no attribute 'select'
ERROR:MainThread:base._log_failed_submission: ["AttributeError: 'Version' object has no attribute 'select'", ' File "C:\\Users\\packager\\Downloads\\release\\knossos-release\\knossos\\windows.py", line 297, in update_mod_buttons', ' File "C:\\Users\\packager\\Downloads\\release\\knossos-release\\knossos\\repo.py", line 228, in query']
ERROR:MainThread:launcher.my_excepthook: UNCAUGHT EXCEPTION!
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\knossos\windows.py", line 297, in update_mod_buttons
File "C:\Users\packager\Downloads\release\knossos-release\knossos\repo.py", line 228, in query
AttributeError: 'Version' object has no attribute 'select'
D:\GoG Games\Freespace 2\fs2_open_3_7_4_SSE2.exe -nomotiondebris -missile_lighting -3dshockwave -post_process -soft_particles -fxaa -fb_explosions -enable_shadows -snd_preload -mod lost,mediavps_2014
"D:\GoG Games\Freespace 2\fs2_open_3_7_4_SSE2.exe" -nomotiondebris -missile_lighting -3dshockwave -post_process -soft_particles -fxaa -fb_explosions -enable_shadows -snd_preload -mod lost,mediavps_2014
Without the quotation marks surrounding the file path, Windows doesn't properly recognize spaces.This took me a while... Knossos installed FSO but is looking in the wrong place. It's in "D:\GoG Games\Freespace 2" not in "D:\GoG Games\Freespace 2\Freespace 2". I think this is caused by my fix for the case bug m!m found.Code: [Select]INFO:Thread-8:util.download: Downloading "http://download.fsnebula.org/mods/FSO/3.7.4/1_fs2_open_3.7.4.7z"...
WARNING:MainThread:tasks.finish: Package Windows of mod FSO (FSO) is not installed but in the local repo. Fixing...
ERROR:MainThread:launcher.my_excepthook: UNCAUGHT EXCEPTION!
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\knossos\tasks.py", line 209, in finish
File "C:\Users\packager\Downloads\release\knossos-release\knossos\repo.py", line 844, in save
FileNotFoundError: [Errno 2] No such file or directory: 'D:\\GoG Games\\Freespace 2\\Freespace 2\\mod.json'
This will be fixed in the next release (breaks the "Last Played" page if you've pinned your last played mod to specific version).Code: [Select]ERROR:MainThread:launcher.my_excepthook: UNCAUGHT EXCEPTION!
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\knossos\windows.py", line 297, in update_mod_buttons
File "C:\Users\packager\Downloads\release\knossos-release\knossos\repo.py", line 228, in query
AttributeError: 'Version' object has no attribute 'select'
BTW, this message tells you that the given mod has no packages for your platform. In this case it means that the nightly had no Windows 64bit builds which is normal.Code: [Select]WARNING:Thread-8:repo.add_mod: Mod <Mod "FSO Nightly" 0.0.20160824+09e3792 (FSO_nightlies)> is empty, ignoring it!
This is interesting. Does the folder for Lost contain the Lost.vp file? Could you please go to the settings for Lost, then click on the "Troubleshoot" tab and click on "Replace corrupted files"? Unless the same problem reoccurrs, that should download the file.Code: [Select]ERROR:Thread-10:tasks.work2: Failed to move file "C:\Users\joshu\AppData\Local\Temp\tmpgosem9ac\content\Lost_v.1.2/Lost.vp" from archive "Lost_v.1.2.zip" for package "Required files" (Lost) to its destination D:\GoG Games\Freespace 2\lost\Lost.vp!
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\shutil.py", line 544, in move
OSError: [WinError 17] Het systeem kan het bestand niet verplaatsen naar een ander station: 'C:\\Users\\joshu\\AppData\\Local\\Temp\\tmpgosem9ac\\content\\Lost_v.1.2/Lost.vp' -> 'D:\\GoG Games\\Freespace 2\\lost\\Lost.vp'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\knossos\tasks.py", line 567, in work2
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\shutil.py", line 559, in move
PermissionError: [WinError 5] Toegang geweigerd: 'C:\\Users\\joshu\\AppData\\Local\\Temp\\tmpgosem9ac\\content\\Lost_v.1.2/Lost.vp'
Here's the same error again while trying to delete the temporary folder...Code: [Select]ERROR:Thread-10:progress.run: Exception in Thread!
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\knossos\progress.py", line 111, in run
File "C:\Users\packager\Downloads\release\knossos-release\knossos\progress.py", line 387, in work
File "C:\Users\packager\Downloads\release\knossos-release\knossos\tasks.py", line 612, in work2
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\tempfile.py", line 808, in __exit__
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\tempfile.py", line 812, in cleanup
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\shutil.py", line 494, in rmtree
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\shutil.py", line 384, in _rmtree_unsafe
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\shutil.py", line 384, in _rmtree_unsafe
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\shutil.py", line 389, in _rmtree_unsafe
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\shutil.py", line 387, in _rmtree_unsafe
PermissionError: [WinError 5] Toegang geweigerd: 'C:\\Users\\joshu\\AppData\\Local\\Temp\\tmpgosem9ac\\content\\Lost_v.1.2\\Lost.vp'
Here Knossos tried to report the error but the connection timed out which is weird. Can you try going to https://sentry.gruenprint.de/ with your browser?Code: [Select]ERROR:raven.AsyncWorker:base._failed_send: Sentry responded with an error: HTTPSConnectionPool(host='sentry.gruenprint.de', port=443): Max retries exceeded with url: /api/9/store/ (Caused by ConnectTimeoutError(<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x00CDB8F0>, 'Connection to sentry.gruenprint.de timed out. (connect timeout=1)')) (url: https://sentry.gruenprint.de/api/9/store/)
Traceback (most recent call last):
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\connection.py", line 141, in _new_conn
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\util\connection.py", line 83, in create_connection
File "C:\Users\packager\Downloads\release\knossos-release\tools\win\py-env\lib\site-packages\requests\packages\urllib3\util\connection.py", line 73, in create_connection
socket.timeout: timed out
Finally, trying to launch either the MediaVPs or Lost or Last Stand simply doesn't work: FS2_Open does not seem to recognize the MOD flag or doesn't recognize flags at all when launched trough the launcher. I think that might be because the command line according to knossos is this:This shouldn't be a problem since the quotes are added when launching FSO, nevertheless I'll fix the UI code to display quotes, too.Code: [Select]D:\GoG Games\Freespace 2\fs2_open_3_7_4_SSE2.exe -nomotiondebris -missile_lighting -3dshockwave -post_process -soft_particles -fxaa -fb_explosions -enable_shadows -snd_preload -mod lost,mediavps_2014
But it should probably be this:Code: [Select]"D:\GoG Games\Freespace 2\fs2_open_3_7_4_SSE2.exe" -nomotiondebris -missile_lighting -3dshockwave -post_process -soft_particles -fxaa -fb_explosions -enable_shadows -snd_preload -mod lost,mediavps_2014
Without the quotation marks surrounding the file path, Windows doesn't properly recognize spaces.
Also, this is properly a premature request, but I'd love to get AVX builds trough this as my processor supports them and they do make the game run a bit faster. Also, an option to create desktop shortcuts from Knossos would be rad.I'll add the AVX builds today or tomorrow. Any suggestion where I should place the button for the desktop shortcuts?
I still don't have an FS2_Open.ini.I'm not sure if FSO creates it. Knossos only creates it if you don't have the old registry keys which were used by retail FS2 and older FSO builds. You could create it as an empty text file and then save the settings in Knossos which should then be written to that file.
I still don't have an FS2_Open.ini.They're only used by SDL2 (recent nightly) builds on Windows, so if you're still using 3.7.4 (as the rest of your post indicates), then it won't do you any good.
I'm not sure if FSO creates it.It does not, on Windows; at the time we need to make a decision about whether or not to use it, the registry code hasn't been initialized (and can't be, because it needs to be done during command-line parsing), so we can't check for the presence of the registry keys to know whether or not it's a brand-new installation, so "old-style" configuration is assumed unless the INI file already exists.
Knossos only creates it if you don't have the old registry keys which were used by retail FS2 and older FSO builds. You could create it as an empty text file and then save the settings in Knossos which should then be written to that file.I would recommend following wxLauncher's lead here (https://github.com/scp-fs2open/wxLauncher/blob/56b50de7c22ffbea34fe2ccb7a8686b005ced50e/code/global/Compatibility.cpp#L86) and creating fs2_open.ini (and copying over pilot files) if fs2_open.ini doesn't exist when an SDL2 build is run.
How about adding 1-3 star ratings in the base window?I think it'd be great to add the ratings to the "Last Played" tab.
I'm also feeling like it'd be good to tie game settings to each mod; it'll make switching between a mod that needs 3.7.4 (BtA) and another that needs a nightly (JAD). Perhaps the whole game settings section should be per mod?Yes, makes sense since I'll have to add a build selection to the mod settings anyway.
The download is then setting your preferred values for each mod, not sure how to get around that at the moment as opaque inheritance (only idea I had so far) could be hard to understand what's really going on.I think the only setting a mod author needs to change are the flags. Knossos can already read the default flags for a mod from the metadata but I just realized that the input field is missing in Nebula. I'll add it soon.
Also, you can also break Knossos by selecting a exec that doesn't work for whatever reason, once you close the settings window you can't reopen it to change your FSO exec. This is the error if you run from the cmdline:You selected a build which is linked against a missing library. Knossos is trying to fix this by looking for a similar named library. It's running ldconfig -p to get a list of all available libraries on your system. I thought ldconfig is part of glibc and thus expected it to be available on all Linux distros. What distro are you using?
Sort of. Knossos detected the download, grabbed it, started to install and then Avast stuck its nose in and the whole thing fell over.Hm, not sure if I can work around that.
Also, I have Diaspora in a different folder from FSO. How can I get Knossos to recognise it?Knossos expects mods to be subfolders of the selected FS2 directory, there's currently no way around that.
Should I allow users (more likely modders) to add mods from other directories as well? Knossos could do that, I'd just need to change the UI.
This took me a while... Knossos installed FSO but is looking in the wrong place. It's in "D:\GoG Games\Freespace 2" not in "D:\GoG Games\Freespace 2\Freespace 2". I think this is caused by my fix for the case bug m!m found.
In your Freespace 2 directory, there should be a mod.json file. Could you please open it, look for "folder": "Freespace 2" and replace it with "folder": "."? That should fix this bug until you decide to reinstall FSO. The Nightlies should be unaffected by the bug.
Quote from: niffiwanThe download is then setting your preferred values for each mod, not sure how to get around that at the moment as opaque inheritance (only idea I had so far) could be hard to understand what's really going on.I think the only setting a mod author needs to change are the flags. Knossos can already read the default flags for a mod from the metadata but I just realized that the input field is missing in Nebula. I'll add it soon.
The downside to this is that the mod author's flags override the user's default. I might change this later but I'm not sure.
You selected a build which is linked against a missing library. Knossos is trying to fix this by looking for a similar named library. It's running ldconfig -p to get a list of all available libraries on your system. I thought ldconfig is part of glibc and thus expected it to be available on all Linux distros. What distro are you using?
If you compile FSO on an Ubuntu system, it's linked against liblua5.1.so.0 but Arch Linux (my distro) only provides liblua5.1.so.5.1 which is the same library but has a different name. Knossos is trying to fix this specific case (here's the code (https://github.com/ngld/knossos/blob/a314967d0cd4746da0ff3f0d2ef8ed01297a77b6/knossos/runner.py#L360) if you're wondering how it works).
Knossos_ROOT
FSO
FSO_Nightlies
Freespace
-BtA
-BPC
-(etc)
TBP
-Zathas
Diaspora
-SuperCoolDiasporaMod
There might be an interesting discussion to be had here about pushing some of the flags into FSO. e.g. some mods need to have 3dship-select on, others need to have it off, and some don't care. Those sort of settings might best fit into the game_settings.tbl, as in the mod could tune which flags the user can set. Or perhaps Nebula could allow modder to have three settings for flags, on/off/users-choice. Or finally, and maybe simplest, Knossos could use the Nebula flag settings as a default which the user could override (and it'd be cool if "reset to defaults" would go back to the mods defaults rather than e.g. nothing enabled - actually I should play with that in the current version and see what happens).The latter is the way it's currently implemented but I like the idea of the three settings. Though that would mean that I'll have to implement a proper UI for that instead of a simple text box on Nebula.
I'm running Mint 18 ('buntu 16.04) and it has ldconfig installed. Perhaps the command is quoted such that it's trying to run "ldconfig -p" as the full command, rather than a command with 1x arg? Thanks for linking to the code, I'll have to have a look at it (would really like to contribute but work is slaying me at the moment :sigh:)I'm sure that ldconfig is called correctly but I think I accidentally cleared the PATH variable which might have caused the bug. I can certainly sympathize with the lack of time (*looks at nearly 2 years of inactivity* :nervous:)
Which makes it very difficult for the launcher to figure out which things are Freespace mods, which are TCs and which are independent games. And even if the launcher manages it, you know that people are going to end up trying to run TCs as mods. Which will always be a complete disaster. Then you also have Diaspora and TBP having their own installers which set up a separate install folder and basically this whole idea sounds like a recipe for disaster.As long as everything (except for FS2 and normal mods) is installed through Knossos or has a mod.json file, Knossos will be able to tell the difference without problem. Folders which only have a mod.ini file and no mod.json file are treated as normal mods and all other folders are ignored.
Knossos could have a mode where the user could point it at an existing FS2/TBP/Diaspora install and Knossos would then copy or move that install to a managed location so that the required directory structure would be maintained.Moving the files will probably break things (i.e. desktop shortcuts, other launchers) and copying would waste disk space. Unless a complicated problem prevents it, I'd like to support those folders by generating a mod.json file if possible and then add the folder to a list of additional mod locations. The ideal case would obviously be that TCs bundle a mod.json file with their installer.
Maybe I'm in the minority here, but I'd prefer if Knossos could just forget a lot of the past and just be designed for going forward. For one, that means no support for the registry. We assume SDL2+ builds everywhere.Registry support is already implemented (and has been for a while) but it's only used if the fs2_open.ini is missing AND the registry keys exist. As soon as an SDL2 build is launched the fs2_open.ini is created from the existing registry keys (this is implemented but not yet released).
Mods will have to be updated to work with Knossos to some extent, including total conversions. I think that being able to tell it where your FS2 install from Steam lives is the most it should need. Other TCs should be installed via it or not supported. Since we have full control over the distribution of everything but FS2 I think this is the best way to meet the community's needs for the installer and also keep the logic behind it as simple as possible.I agree regarding the logic and that the FS2 directory should be the only directory a user has to manually set (maybe I should add some kind of auto detection? Something like "Hey, you apparently installed FS2 with Steam, do you want me to use that?").
Users will probably want to be able to specify where mods/games are installed, in general, as well as where FS2 is located. I would think something like this:I'm not too sure about the nested folders. I think you can create them with the current version of Knossos by entering something like "test/my_folder" in the folder field on Nebula.
Knossos
Knossos_content
-bin
--3.8\
--nightly_YYYYMMDD\
-FS2_mods
--BPC
--BtA
-Diaspora
--Diaspora_mod1
-TBP
--Zathras
FS2
-core vp files
The one thing I'm not certain about is whether FS2 mods could live outside of the FS2 folder and still be used as the engine is coded today. But I think that being able to have an ecosystem that is completely independent from your Steam/GOG/etc FS2 install could be very beneficial.I know that it at least used to work. There are two things required for this to work:
I'd even go so far as to say that maybe it should just copy the core VP files from the GOG/Steam install into the Knossos_content FS2 folder. Probably the only way to ensure a stable environment. We could then notify the user that they can uninstall their Steam/GOG copy if they prefer to let Knossos manage the install from there on out.If the user gives Knossos a GOG installer, Knossos extracts it with InnoExtract and then moves the *.vp, *.hcf and *.mve files to the selected destination folder and deletes the rest. It would make sense to apply a similar logic to the Steam install (but copying the files instead of moving, obviously).
Knossos itself could live in a typical Program Files location or whatever, or just be installed via a package manager, etc. But then you pick your drive/location for the actual content to live.This is how it works right now and I want to keep it like that (unless someone offers a valid reason to change it). The only exception would be the portable mode which I want to implement later (not sure when, probably once Knossos is stable).
If you wipe your main drive but had the content on another drive, perhaps a reinstall of Knossos pointed at that folder would even be able to pick up where it left off. At least if you saved your Knossos config written to APPDATA (which all Knossos config data should be written, if not that knossos_content folder, right?).Knossos only saves settings and the list of available mods to APPDATA, information about installed mods is contained in the mod's mod.json. Which means that in your case you'd still lose your settings (including flags, etc.) but could still play and update the already installed mods.
That's not true anymore. All FSO builds now use the working directory as the default directory where they search for the root VPs.
- Being able to modify the root directory FSO uses (easy on Linux, PITA on Windows and I think a recent code change changed this on Mac). Would be nice if this could be controlled through a flag or environment variable.
That code could easily adapted to check if a path is absolute and if yes then the root directory isn't used. That should allow to specify full paths for -mod parameters.
- The -mod parameter allows to specify paths not just directory names (this should be the relevant code (https://github.com/scp-fs2open/fs2open.github.com/blob/master/code/cfile/cfilesystem.cpp#L390)).
That's not true anymore. All FSO builds now use the working directory as the default directory where they search for the root VPs.It seems like you're right about Windows and Linux. However on MacOS that doesn't seem to be the case (https://github.com/scp-fs2open/fs2open.github.com/blob/af285fbdbdc4fd35789203f3359266d3dbd45e40/freespace2/freespace.cpp#L8091).
Installing now. Everything from Windows Smartscreen to Avast started yelling about DANGER! That's a hurdle we need to overcome if this is gonna go more general.I'm open to suggestions. AFAIK the warning is based on the fact that not too many people have installed this before. If anyone knows why these programs are complaining or how to avoid it, I'd gladly listen.
This looks really cool. I'll try it out and comment as soon as I can from the point of view of a former wxL co-project lead.Thanks! That would be really helpful. Did you run into any problems with AV software?
I have thoughts and ideas.I'll be glad to hear them. :)
Yeah I think the UI will make or break this on the player's (Knossos) side of things. The terminology actually really makes sense - Knossos is the portal to the Nebula, Nebula is the workspace where modders configure and set up their mods for Knossos to install them. As I understand it anyway. The Nebula could also have a user aspect to it as well, similar to GOG or Steam's websites. But Knossos is the client and the only thing a player would really need to use to get things.I'm glad that you picked up on the naming scheme. That's pretty much what I (and Hellzed) intended. :D
Some more writing in the installer to make the process self-documenting for a new user would be a good aim, I think.Where should I put the additional help text?
Also I think the launcher should provide a sane default for your FSO install directory — what is that sane default, though?I have no idea. I usually install it to ~/games/fs2.
There might be an interesting discussion to be had here about pushing some of the flags into FSO. e.g. some mods need to have 3dship-select on, others need to have it off, and some don't care.No mod ever needs the 3D selection flags enabled; if the 2D art isn't present/defined, the 3D model is used automatically.
Alternatively: Knossos/FS2 so you have a clean folder to have those TCs in.I don't particularly like that idea, myself; imagine if your current FS2 install was in wxLauncher/FS2 and you wanted to switch to Knossos.
Some more writing in the installer to make the process self-documenting for a new user would be a good aim, I think.Where should I put the additional help text?
It works! Yay! But now I'm wondering why it doesn't detect FRED...If you install a recent nightly through Knossos, it might work. It doesn't recognize existing FRED executables thanks to a mistake I made (and already fixed in git).
Also I think the launcher should provide a sane default for your FSO install directory — what is that sane default, though?
No mod ever needs the 3D selection flags enabled; if the 2D art isn't present/defined, the 3D model is used automatically.
Alternatively: Knossos/FS2 so you have a clean folder to have those TCs in.I don't particularly like that idea, myself; imagine if your current FS2 install was in wxLauncher/FS2 and you wanted to switch to Knossos.
I'm not fully caught up on the thread yet, but I do just want to bring up something about fsnebula.org. I do think it would be useful to have it look pretty, just so we could throw a weblink to a mod's page to people or in like in social media posts. So someone who might not have FS or Knossos installed might happen across a link, be impressed with the quality and start their way to the world of FreeSpace modding. With Steam, store pages render the same in your own browser or in steam itself (obviously because its all just html anyway). Just a thought anyway!
Knossos should be able to directly open the Debug Logs or the folder to the Debug Logs.. or for bonus points, automatically upload them to somewhere and offer players a link they can post to the forums.
Where is Nebula hosted? Are we taking advantage of anyone here? If ngld died in the next 15 seconds, would we be able to mourn and then still maintain Nebula?
Oh, this is really cool! Is there a way to import the installation lists and stuff from the old java launcher/installer so Knossos is fully-featured to download more campaigns?
There isn't (not yet anyway) but whenever you install a new mod, Knossos checks if you already have the required files and only downloads missing or changed files.
That said Knossos can still launch already installed mods. It won't be able to notify you about updates or repair the files.
EDIT: Damn. Can you please post your %APPDATA%\Knossos\log.txt?
Also, as for documentation, I'd prefer the UI flow be intuitive enough that reading a lot of text isn't necessary - that, even more so than translations, would be a huge boost to the ability for international users to pick up on it. The more that can inferred simply from graphics and near-universal keywords, images, etc, the better. Aside from configuring the actual purchase transaction, how much reading is required to install a game on steam? See a pretty looking game, look at some screenshots, click the comically large Buy button, and once you pay it is installing. GOG Galaxy goes a step farther with their visual library presentation, which allows you to pick your game from a large picture of its box and then just hit Play. Lots to be learned from these UX examples and room for improvement too. Looking forward to mjn.mixael's ideas here.
On Linux users usually can only write to ~ which rules out /usr/share/games. Steam uses ~/.local/share/Steam/SteamApps but I don't think putting the whole content directory in a hidden directory is a good idea in our case. GOG Galaxy still hasn't been released for Linux (although they eventually want AFAIK).Also I think the launcher should provide a sane default for your FSO install directory — what is that sane default, though?
If we wanted to a provide a Current User/All Users type of option on certain platforms, that could be the difference between ~/games and /usr/share/games (I think that's a pretty typical location for *nix anyway). Macs should probably do ~/something. Not sure of a good place for Knossos content there, but I imagine this and many other problems have already been solved by Steam, since we're nearly duplicating that behavior. In fact, many questions being asked here could be answered by asking "How does Steam/Galaxy do it?" They are already solved problems, so no need to reinvent the wheel. If we have a good reason to do it differently, so be it, but I think doing the research into how those clients behave will at least help us answer the majority of questions about how a system like this should behave. People getting paid to figure this stuff out have already been doing it for years. And where there is room for improvement or something that better fits our ecosystem, we can diverge.
Also, as for documentation, I'd prefer the UI flow be intuitive enough that reading a lot of text isn't necessary - that, even more so than translations, would be a huge boost to the ability for international users to pick up on it. The more that can inferred simply from graphics and near-universal keywords, images, etc, the better. [...] Looking forward to mjn.mixael's ideas here.I agree. This is one of the reasons I'm asking for feedback and improvements.
Obviously it'd be ideal if we could give users such a simple presentation, but unlike Steam and GOG we have to work in an environment where copyright bull**** forbids us from providing the core copy of a 20-year-old game to build an installation off. The user has to buy that on their own, it's not something Knossos can automate. It's an unavoidable complication of the install process and you need to make it clear and understandable in the UI. The (really crude) mockup I posted earlier was modelled off Battuta's install guide for Blue Planet and his 'find your next campaign' guide: make it clear to the user what they should do to get what they want.I think it makes more sense to link to a guide which explains how to buy and download the GOG Installer than to explain it in the UI.
If we are planning on copying the retail FS2 data from wherever it might already be installed into the Knossos environment, this would actually be fine. I think starting with support for GOG, Steam, and manual install location is a pretty critical requirement, as getting FS2 itself configured and/or installed into Knossos is pretty much a dependency for anything else, and supporting the different means it could have been acquired by a newcomer is therefore a high priority. I still think copying the VPs into Knossos and leaving the existing install behind, if using a Steam install or a separate retail or prior install will result in the sanest environment for Knossos to work with.On first launch Knossos could check a list of known paths for retail files and if it finds any, a new button "Use your FS2 installation (pick this if you're not sure which one you need)" (or something like that) would show up on the welcome page. If the user clicks that button, Knossos would ask for an installation directory and then copy all the retail files. This should cover a majority of new players (on Windows at least).
My previous suggested structure sounds in line with what Joshua was suggesting. One giant Knossos content folder (separate from the Knossos install itself probably) with folders for each TC, with FS2 itself being treated as a TC, with simply a special case for how its root content is acquired. After that, FS2, Diaspora, TBP, etc can all be on equal ground. Minimizing the amount of special treatment, and additionally keeping it to just the initial setup process, should lead to an easier to maintain project, that can have features added more rapidly.This sounds like it could indeed simplify my work a bit. Most of this will work with the existing metadata schema (https://github.com/ngld/knossos/blob/develop/converter/schema.txt). The only thing missing is a type for TC mods (i.e. a fanmade mission or campaign for Disaspora) which I can easily add.
Agree. Mods should be able to publicly showcase on the website as well as within the client. However, if one has to take priority over the other initially, that would probably be ok. I think the web appearance can be focused on after the client look, but if it makes sense to try to unify them somehow, that might work best. Since both are presented via html, that might not be impossible.It's quite possible. The browser embedded in Knossos is based on Chromium. It's capable of displaying a normal website (including modern stuff like HTML5 videos).
Knossos should be able to directly open the Debug Logs or the folder to the Debug Logs.. or for bonus points, automatically upload them to somewhere and offer players a link they can post to the forums.
I had also attempted to set up the nebula on my own server at one point to see how hard a mirror, etc would be to set up. Didn't quite get it. (http://nebula.cliftongordon.com/workshop)I'll write up a proper installation guide.
Personally I am hoping that each mod will be brought over one at a time, as I think there will be more information needed than what the old installer files provided. Although an importer on the Nebula portal to get what data is available (file locations, hashes) might be nice, if that data would be useful to Nebula.Importing existing file locations or hashes isn't possible because Knossos and Nebula need more data than the FSO installer files provide (this was the main reason Nebula was created). Importing the existing title, description, logo and mirror URLs does make sense though. However, it might be faster to copy those by hand than to write an automated importer for this.
This is nice that it is already complete, although I would have argued that supporting existing mod installations could have waited or been omitted entirely.The code to support mod.ini files is at this point more than 2 years old (https://github.com/ngld/knossos/commit/c3e841770ac1f1ed5b5495a5c87510dcffb59e4a) and less than 100 lines of code.
I mentioned this in IRC earlier, but I feel like solving problems that only exist now, but won't after Knossos is considered widely adopted and won't exist anymore, don't need to be solved at all. I don't think people will avoid using it simply because it wouldn't work with existing FS2 and TC installs. But if it already can to some extent, that's cool too.Back when I started this I thought that supporting existing installs was a key requirement. Guess I was wrong. :)
Down the line, supporting things to help modders create new mods could probably be built in, taking much of the initial mod bootstrap out of the hands of the user. A button that makes a new mod folder for the given TC, with a mod.json or mod.ini or whatever basic field editor (or even a default template), a data folder, and an option to open that folder in your Explorer/Finder/etc. A link to a good wiki page on what to do next then would probably suffice. Then maybe even a VP packager and uploader integration to your Nebular account. Those last things could probably be a later phase. The first part would let people start working, without having to really manually muck with the rest of the filesystem.Those are great ideas (I've thought about an uploader to Nebula in the past because it'd allow me to do most of the validation before the mod is uploaded); I'll put them on the to do list.
Wait until you try updating! Avast manages to get its knickers into such a twist that I suspect I could install magnets and get my computer to power itself. :)I've looked for a way to avoid these warnings but the only way I found would be to sign the .exe files (which in itself wouldn't be a problem) but it would require me to buy a signing certificate for $ 60/year (or more depending on where you buy it).
On first launch Knossos could check a list of known paths for retail files and if it finds any, a new button "Use your FS2 installation (pick this if you're not sure which one you need)" (or something like that) would show up on the welcome page. If the user clicks that button, Knossos would ask for an installation directory and then copy all the retail files. This should cover a majority of new players (on Windows at least).
Something I'd like to know is if it's possible to download FS2 on Linux using Steam. I don't think so but I'm not sure.
I think it makes more sense to link to a guide which explains how to buy and download the GOG Installer than to explain it in the UI.
Anyhow, with this mostly running, I'm going to create some mockups of what I think would be a good UI for mod browsing!I'm looking forward to it and I'm sorry about the rough start.
Players should almost never have to deal with selecting a build. Mod installation will treat the required build as a dependency and make sure it's downloaded.
INFO:MainThread:launcher.main: Running Knossos 0.4.3 on PyQt5.
INFO:MainThread:_code_cache._create_comtypes_gen_package: Imported existing <module 'comtypes.gen' (<pyimod03_importers.FrozenImporter object at 0x007CA230>)>
INFO:MainThread:_code_cache._find_gen_dir: Using writeable comtypes cache directory: 'C:\Users\joshu\AppData\Local\Temp\comtypes_cache\Knossos-35'
INFO:MainThread:integration.init: Activating Windows integration...
INFO:MainThread:api.get_fso_profile_path: Using profile path "D:\GoG Games\Freespace 2".
ERROR:MainThread:windows.write_config: Failed to save the configuration!
Traceback (most recent call last):
File "C:\Users\packager\Downloads\knossos-release\knossos\windows.py", line 1034, in write_config
ValueError: invalid literal for int() with base 10: ''
INFO:MainThread:api.get_fso_profile_path: Using profile path "D:\GoG Games\Freespace 2".
INFO:MainThread:api.run_mod: Starting mod "The Last Stand" with cmdline "['-nomotiondebris', '-missile_lighting', '-3dshockwave', '-post_process', '-soft_particles', '-fxaa', '-fb_explosions', '-enable_shadows', '-snd_preload', '-mod', 'TheLastStand,Mediavps_2014']".
INFO:Thread-11:api.get_fso_profile_path: Using profile path "D:\GoG Games\Freespace 2".
INFO:MainThread:api.get_fso_profile_path: Using profile path "D:\GoG Games\Freespace 2".
ERROR:MainThread:windows.write_config: Failed to save the configuration!
Traceback (most recent call last):
File "C:\Users\packager\Downloads\knossos-release\knossos\windows.py", line 1034, in write_config
ValueError: invalid literal for int() with base 10: ''
ERROR:MainThread:windows.write_config: Failed to save the configuration!
Traceback (most recent call last):
File "C:\Users\packager\Downloads\knossos-release\knossos\windows.py", line 1034, in write_config
ValueError: invalid literal for int() with base 10: ''
ERROR:MainThread:windows.write_config: Failed to save the configuration!
Traceback (most recent call last):
File "C:\Users\packager\Downloads\knossos-release\knossos\windows.py", line 1034, in write_config
ValueError: invalid literal for int() with base 10: ''
This assumes we get the ability to launch FSO Execs from subfolders (which I hear is a newish FSO feature). Mods should be able to optionally require a specific build. Players should almost never have to deal with selecting a build. Mod installation will treat the required build as a dependency and make sure it's downloaded.Knossos already launches the nightlies from a subfolder and it seems to work. Required builds are already treated as dependencies but Knossos can't automatically select the right build for each mod. I'm still working on that.
Videos will play YouTube videos right inside Knossos (if Knossos could support that).The embedded browser is based on Chromium so it should be possible.
Oh, and ngld.. I'm going to work with qt and see if I can figure out how to actually start building such an interface. Mostly I don't want you to think I'm just posting these and expecting you do just do all the work! :) I'm fairly handy with HTML/CSS, so I'm gonna try and give it a go.I think the easiest path would be to realize most of the UI in HTML/CSS because the Qt Widgets try to provide a native look&feel and aren't as easy to style as HTML.
Keep up the good work though! This is rather exciting.Thanks! I just hope that I won't introduce too many new bugs while implementing the new UI. :D
:eek: Wow! I can't wait to see these mockups become real!Glad you like it! This would be a really great feature to prevent players from having to muddle in builds and their crazy names sometimes. Additionally, as I thought about it more, I added the following dropdown to the mockup. Dunno if it would be possible, but it would be handy if Knossos could auto-select the Debug or Fast Debug of the same build number as the mod dependency.This assumes we get the ability to launch FSO Execs from subfolders (which I hear is a newish FSO feature). Mods should be able to optionally require a specific build. Players should almost never have to deal with selecting a build. Mod installation will treat the required build as a dependency and make sure it's downloaded.Knossos already launches the nightlies from a subfolder and it seems to work. Required builds are already treated as dependencies but Knossos can't automatically select the right build for each mod. I'm still working on that.
Awesome!Videos will play YouTube videos right inside Knossos (if Knossos could support that).The embedded browser is based on Chromium so it should be possible.
Yes, that would be awesome!Oh, and ngld.. I'm going to work with qt and see if I can figure out how to actually start building such an interface. Mostly I don't want you to think I'm just posting these and expecting you do just do all the work! :) I'm fairly handy with HTML/CSS, so I'm gonna try and give it a go.I think the easiest path would be to realize most of the UI in HTML/CSS because the Qt Widgets try to provide a native look&feel and aren't as easy to style as HTML.
I could make a dev build of Knossos which would allow you to directly change the HTML, CSS and JS files. Would that help?
I have to make a few internal changes before the new UI can work. I'll work on those first but don't hesitate to ask if you have any questions or need help!Excellent idea!
If several mods are installed at the same time (because of dependencies or other reasons), they will all have the same progress percentage due to the way Knossos tracks progress.
I have one final nitpick: It would be nice if the user could see the installation / update progress even if they don't hover over the mod's tile. Maybe a tiny progress bar above the mod's title?
Regarding you joystick problems: Could you go to the "Game settings" page, click on "Open FS2's config folder" and check what the "CurrentJoystick" setting in the fs2_open.ini is set to.Well, he said he's using 3.7.4, which uses the registry on Windows, not fs2_open.ini.
Additionally, as I thought about it more, I added the following dropdown to the mockup. Dunno if it would be possible, but it would be handy if Knossos could auto-select the Debug or Fast Debug of the same build number as the mod dependency.I can do that but recent nightlies only offer Fast Debug builds. Do we hide the Debug option in the case it's not available or should we display it as disabled?
Here you go (https://dev.tproxy.de/knossos/develop/html_test.7z)QuoteYes, that would be awesome!Oh, and ngld.. I'm going to work with qt and see if I can figure out how to actually start building such an interface. Mostly I don't want you to think I'm just posting these and expecting you do just do all the work! :) I'm fairly handy with HTML/CSS, so I'm gonna try and give it a go.I think the easiest path would be to realize most of the UI in HTML/CSS because the Qt Widgets try to provide a native look&feel and aren't as easy to style as HTML.
I could make a dev build of Knossos which would allow you to directly change the HTML, CSS and JS files. Would that help?
Lastly, I redesigned the "Development" tab based on feedback to make it much easier for developers to have access to the launcher tools the use most often. I'm not quite sure how the Mod Path section would be handled since Knossos does most of that automatically, but that's something mod creators use a lot. I was also considering a Mod Dependency Add/Remove button. These mods are probably not linked to Nebula, so perhaps that will make that section easier. The rest is just copied/duplicate access to what's already in each mod's settings page (normally accessed through the Details page). Take a look.If the user changes the Mod Path, I could move the mod.json file to the new directory. If you had several copies of your mod folder, this would allow you to switch between these copies. I'm not sure if that's very useful, though.
*snip*
Well, he said he's using 3.7.4, which uses the registry on Windows, not fs2_open.ini.Sorry, I keep forgetting that the SDL2 builds aren't released as stable, yet.
Also, the joystick selection has changed a bit since the SDL2 merge since it's now possible to identify joysticks better when using SDL2. If you set the "CurrentJoystickGUID" option in your ini then FSO will use that to determine the correct joystick. You can retrieve this GUID with SDL_JoystickGetGUID. I'll try to add support for this to Knossos when I find the time to implement it.Thanks for telling me about that. If I want to keep compatibility with the pre-SDL2 builds, would it be possible / make sense to set both CurrentJoystick and CurrentJoystickGUID?
@ngld: First, awesome job fixing and extending Nebula!Thanks! :D
The changes you mentioned regarding Knossos UI, I guess it's a rework of the Javascript API, exposing features required by the new UI proposal (which is awesome, @mjn !) ?The JS API is a part of the internal changes but most of the changes are related to additional data I need to store (the new mod settings and additional fields for the mod metadata).
Are you aiming at fully separating a mostly Javascript + HTML + CSS display code, and system features (installation an removal of mods...) ?
Given the added complexity of the new UI, I'd say it would be time to move away from jQuery and pick a proper framework to handle widgets and the UI state.I'm not sure about using React. It feels like overkill because we only have 3 different screens (the mod lists, the details screen and the development screen) with mostly simple interaction (modals and hover effects). The complicated actions (installing, updating, etc.) are handled in Python.
This would allow to handle design tasks separately, with mjn only having to care about the main layout and widgets. Much less work for him!
This would also be useful if the mod library in Nebula and in Knossos end up sharing the same appearance and code.
My personal choice for this would be React + Redux, with a Knossos/Nebula middleware to talk to the required APIs.I don't think Redux is neccessary because we don't need a centralized state here. Instead of writing middleware or reducers, I'd just use React's this.setState() to update the UI.
Also, to handle all the asynchronous things going on in the new UI (installations, checksums...), it would be super interesting to support Promises/A+ in Knossos API.The JS API can't support promises (unless I write a wrapper) because the browser interface is too simple to do that. Also, I don't use the API to retrieve data instead I provide the neccessary data whenever I trigger an event to update the UI.
PS: I'm also thinking about rationalising Nebula API, especially regarding the library, so it's more convenient to use in Knossos. So much stuff I didn't know when I started this, since it was my first Symfony project, time to make things right!It's great that you want to help! Please take a look at my fork because a lot has changed (https://github.com/Hellzed/hlp-nebula/compare/master...ngld:master?expand=1). I've updated Symfony, scrapped the ACL system and switched back to using Voters and made quite a few changes to the forms (file uploads are now possible!).
The previous version (0.4.1 iirc) installed correctly, launched correctly, but I was not able to do anything with it (when I click on the button to select my FS2 install, nothing happens)That bug is fixed in 0.4.3.
The new version installs correctly, but won't launch. I get a fatal error "Failed to execute script _main_"Can you please check if "%APPDATA%\Knossos\log.txt" exists? If it does, please post its contents here.
- show download speed, download size, estimated time to completion, ability to pause downloads and limit download speedDownload speed: Not sure where
- ability to discover/add already downloaded modsThis is planned.
- mod details should include rating, news, update changelogsNot sure about news and changelogs because those could be part of the mod's description.
- link to IRC / real time chat maybe?Or Discord? I think we can put that as well as a link to the "Getting started" forum on a help page.
Strictly speaking, you only need it to play FS2 mods. If you installed it for Diaspora, FotG, TBP, etc, you wouldn't even need to point it to FS2. I think it should probably be handled upon attempting to install MediaVPs, etc, the first time. Hopefully a dialogue with a minimal verbosity can make it clear what needs to be done. I think a combination of scanning for it in expected locations (Steam install), dropping the GOG installer into a drop target, scan button, file explorer to point to the FS2 install folder, etc could make it as painless as that can be. And I am hoping that finding FS2 can be one of the only pain points that has to exist in the design. I am hoping we can solve the rest by not worrying about backwards compatibility.
I also can't seem to find what has defined the mod list as a single column. Are these in qt?I'm not sure what you mean. To display the mod list, the update_mods function (in js/modlist.js) is called which calls render_row() for each mod entry. render_row() creates a copy of one of the #tpl-something divs (which one depends on the current tab). That copy is then appended in update_mods to the #mods div. Every row is a div and divs are displayed below each other unless you apply CSS.
I don't know java very well, but that explanation makes sense.It's a common misconception but Java and JavaScript are very different kanguages.
So the main UI buttons at the top essentially change which div is rendered?Yes. Everytime you click a tab, a filtered mod list is generated and passed to update_mods() along with the name of the clicked tab. The JS function then clears the #mods div and calls render_row for each mod in the passed list.
I guess I'll worry about the mod display first and then we can see about dealing with the UI above the HTML window.I think it's easier to code the new UI in HTML than to style the current UI.
but I'll wait and see what mjn brings up as suggestions so I can hook in on that.Yeah lol no, nothing to hook in on. Everything I might have said or suggested have been completely blown away by these awesome looking ui mockups :yes:
I guess I'll worry about the mod display first and then we can see about dealing with the UI above the HTML window.I think it's easier to code the new UI in HTML than to style the current UI.
I love the Mantis sandbox, create a quick mod that can reproduce a bug, and then have something easily distributed to others to reproduce it right?
I haven't touched that top area because it's not currently done with HTML, so I have no way to touch it.
INFO:MainThread:launcher.main: Running Knossos 0.4.3 on PyQt5.
ERROR:MainThread:launcher.my_excepthook: UNCAUGHT EXCEPTION!
Traceback (most recent call last):
File "C:\Users\packager\Downloads\knossos-release\knossos\__main__.py", line 123, in <module>
File "C:\Users\packager\Downloads\knossos-release\knossos\launcher.py", line 303, in main
File "C:\Users\packager\Downloads\knossos-release\knossos\launcher.py", line 150, in load_settings
File "C:\Users\packager\Downloads\knossos-release\knossos\api.py", line 243, in read_fso_cmdline
File "C:\Users\packager\Downloads\knossos-release\knossos\api.py", line 232, in get_fso_profile_path
File "C:\Users\packager\Downloads\knossos-release\tools\win\py-env\lib\genericpath.py", line 19, in exists
TypeError: stat: can't specify None for path argument
Awesome work; and so quick! :pimp:I haven't touched that top area because it's not currently done with HTML, so I have no way to touch it.
I'm pretty sure the rest of the window is configurable in QT Designer; using the ui/hell.ui config file (not that I have a clue about qt-designer I'm afraid, I'll have to read the doco).
Muahaha IT WORKS.Nice! That was quick! :D
ngld, to go beyond that I'll probably need a little direction from you and/or help with the JS files to get access to the mod properties I need to build the Details pages.I will need to change a few things in Knossos to make that work. I might be able to give you something to work with in a few hours.
Is "Update List" actually supposed to update what is displayed based on changes you might have made to the drive outside of Knossos? I thought the update button was going to be a 'check for updates' function, if so "Update List" seems a little confusing to me. Although if you still plan on replacing most of those buttons with more stylized icons and such, I guess the wording isn't as important. Unless it will display on a hover event.It does both. It downloads the new list from the Nebula and then checks the mod directories.
The buttons and search bar are both calling update_mods(). Switching the tab or triggering a search from JS is not possible, yet. That's one of the changes I have to implement.[...]
I'm pretty sure the rest of the window is configurable in QT Designer; using the ui/hell.ui config file (not that I have a clue about qt-designer I'm afraid, I'll have to read the doco).
I think the idea is to recreate most of that in HTML/JS. So I just need to figure out how the buttons and the search bar are talking to JS from qt and then recreate that in the HTML page. Once I figure that out, I can start to build the rest of the UI... while I learn JS on the fly, I guess. :lol:
INFO:MainThread:launcher.main: Running Knossos 0.4.4 on PyQt5.
INFO:MainThread:_code_cache._create_comtypes_gen_package: Imported existing <module 'comtypes.gen' (<pyimod03_importers.FrozenImporter object at 0x00539230>)>
INFO:MainThread:_code_cache._find_gen_dir: Using writeable comtypes cache directory: 'C:\Users\Steeve\AppData\Local\Temp\comtypes_cache\Knossos-35'
INFO:MainThread:integration.init: Activating Windows integration...
INFO:MainThread:api.get_fso_profile_path: Using profile path "C:\Users\Steeve\AppData\Roaming\HardLightProductions\FreeSpaceOpen\".
INFO:MainThread:api.get_fso_profile_path: Using profile path "C:\Users\Steeve\AppData\Roaming\HardLightProductions\FreeSpaceOpen\".
INFO:MainThread:api.get_fso_profile_path: Using profile path "C:\Users\Steeve\AppData\Roaming\HardLightProductions\FreeSpaceOpen\".
It could possibly be done but I feel like it would be saner for the file on a machine to be a byte for byte match to the one on the server. Much easier to do comparisons, etc.Actually... The mod.json files are generated on every installation or update. There are several reasons for that: The mod.json list contains a list of installed packages which needs to be updated whenever the user installs or removes a package (i.e. MV_Advanced). Most of the contents of the mod.json file are copied from the list of available mods (which the client already has during installation).
Thanks! I've integrated your files but I made a few changes. I hope you don't mind.I definitely don't mind. :)
I've managed to remove the border but changing the titlebar will require more (and platform-specific) work. I might work on that once the more important stuff is done.Awesome. I'm gonna add a border with the CSS.
BTW, why did you use "content" on spans? I didn't know that would work (and it doesn't in other browsers) because it's against the CSS spec. According to the spec you're only allowed to use that on ::before and ::after pseudo-elements.Because I'm not a real web developer. I'm just good enough to use things like Drupal and fix them up as needed... and I'm really good at Google searches! :lol:
EDIT: Notes for me.. things I want to think about and/or add.
News stuffmjn.mixael, that is incredible work on the UI. I finally got to look at it on my desktop instead of my phone. It does exactly what I've been suggesting with keeping the words to a minimum, and the experience as intuitive as possible. I am only really not sure about the news scroller, it seems dated compared to the rest of the design. I would suggest a News tab on the main screen for general news, and possibly under the Mod details, another News button/tab for news specific to that mod, or just the ability to scroll down below the details for mod-specific news. But all in all, yeah, wow. I'm just not sure we have the bandwidth to keep up with how many more installs it will get when it becomes this easy to get into!
NGLD asked about the update stuff
I think there needs to be a small header/title just about the first mod row in the scrollable area. "Here's a list of your installed Freespace Open Games" (Games because this should support TCs as well as mods.) "Here's a list of all the Freespace Open Games you can install."
@mjn: Thanks, I'll work on that but it might take a while (RL is keeping me busy).
$ php app/console assetic:dump
[RuntimeException]
Path to node executable could not be resolved.
# Assetic Configuration
assetic:
...
node: /usr/bin/node
(I checked, the binary is there)@niffiwan: It is. How did you try to run it and what did it print to the console?
$ make run
/usr/bin/python3.5 knossos/__main__.py
INFO:MainThread:launcher.main: Running Knossos 0.5.0-dev on PyQt5.
ERROR:MainThread:api.enable_raven: Failed to import raven!
Traceback (most recent call last):
File "/home/mememe/src/knossos/knossos/api.py", line 558, in enable_raven
from raven import Client
ImportError: No module named 'raven'
ERROR:MainThread:integration.init: Failed to specify Unity version.
Traceback (most recent call last):
File "/home/mememe/src/knossos/knossos/integration.py", line 218, in init
gi.require_version('Unity', '6.0')
File "/usr/lib/python3/dist-packages/gi/__init__.py", line 102, in require_version
raise ValueError('Namespace %s not available' % namespace)
ValueError: Namespace Unity not available
INFO:MainThread:integration.init: Activating generic Linux integration...
QXcbWindow: Unhandled client message: "_GTK_LOAD_ICONTHEMES"
re: possible future bandwidth issues (flashback to FSO Installer being down due to overloaded server bandwidth for the month), is it remotely feasible to back any of the larger bits with P2P (specifically, bittorrent protocol) and have that as an option for users to enable / disable? I know Blizzard installers, and heck, even the Windows update service use some variant of the same idea.
re: possible future bandwidth issues (flashback to FSO Installer being down due to overloaded server bandwidth for the month), is it remotely feasible to back any of the larger bits with P2P (specifically, bittorrent protocol) and have that as an option for users to enable / disable? I know Blizzard installers, and heck, even the Windows update service use some variant of the same idea.
If you're referring to the actual mod files, those don't have to be hosted on Nebula. Nebula keeps a record of URLS and mirrors which is the better way to handle this.
It's really going to depend on the mod and it's popularity. IMO, if a mod is popular enough to run out of bandwidth in 2017... then we can bother with it, but I really don't see that happening. For one, we just aren't popular enough and that's not going to happen overnight. And for another, it's 2017. Bandwidth is just not the problem it used to be.
If you're referring to the actual mod files, those don't have to be hosted on Nebula. Nebula keeps a record of URLS and mirrors which is the better way to handle this.I agree. Also, all uploaded mods are mirrored on dl.fsnebula.org which has a 1 Gbit/s uplink and has a quota of about 30 TB per month. If we ever reach that limit, I can still increase it.
Also, side note. NGLD, we'll need to create a nice user-interface (probably in the Details area) for installed mods and the ability to add/remove Recommended or Optional files. Also, Delete Mod should be in there, too.In the old UI I displayed a checkbox for every package and a button "Apply" which would then uninstall or install the packages according to the users selection. Maybe we could do something like that?
I'm also starting to think that for Mod Installations, it would be better to have it go from Explore > Details (as the ONLY option) > Install. In the details section, near the Install button would be the checklist of what mod packages to install. This removes a popup or transition to a third screen for users, hopefully to keep things simple. It does mean that Explore > Details needs to be a different page than Home > Details. What do you think?Can we use the checklist for both installed and available mods? That would solve both problems at once and it should make it easier to understand.
If bandwidth is an issue, use FreeSpace Files for mirroring. It doesn't have any limits and you can use all the bandwidth you like. DL speed might not be great if 100x people are using at once, but that's not very often. The private accounts are always fairly active and use a ton of traffic.Thanks for the offer! Would you mind if I automatically mirror every uploaded mod? (Whenever a user adds a new mod, I would upload the files to FSFiles and link them in addition to dl.fsnebula.org and the links the user entered?)
Also, side note. NGLD, we'll need to create a nice user-interface (probably in the Details area) for installed mods and the ability to add/remove Recommended or Optional files. Also, Delete Mod should be in there, too.In the old UI I displayed a checkbox for every package and a button "Apply" which would then uninstall or install the packages according to the users selection. Maybe we could do something like that?I'm also starting to think that for Mod Installations, it would be better to have it go from Explore > Details (as the ONLY option) > Install. In the details section, near the Install button would be the checklist of what mod packages to install. This removes a popup or transition to a third screen for users, hopefully to keep things simple. It does mean that Explore > Details needs to be a different page than Home > Details. What do you think?Can we use the checklist for both installed and available mods? That would solve both problems at once and it should make it easier to understand.
@niffiwan: That's not an error, what you're seeing are the remains of the "Last Played" page. Did you try to click on "Home" or "Explore"?
Thanks for the offer! Would you mind if I automatically mirror every uploaded mod? (Whenever a user adds a new mod, I would upload the files to FSFiles and link them in addition to dl.fsnebula.org and the links the user entered?)
@niffiwan: I think you've found a WebKit related bug, I'll look into it. (Ubuntu doesn't package QtWebEngine which Knossos uses on most platforms so it has to fallback on QtWebKit which is deprecated.)
I hope this makes initial setup simple while still allowing for custom configurations. Any thoughts or suggestions?
If you don't use the additional directories, your content directory will look something like this:How would this work with different versions of the same mod (e.g. Mediavps 3.6.12 and 2014)? Would it require that these different versions are separate mod entries or would it put the different versions into different subfolders?
Knossos_content
-bin
--3.8\
--nightly_YYYYMMDD\
-FS2
--retail .vps
--BPC
--BtA
-Diaspora
--Diaspora_mod1
-TBP
--Zathras
Sorry for the long delay; I was busy writing exams...
@niffiwan: I just pushed a new commit which should fix the bug on Ubuntu.
@Mjn: You've designed most of the new UI. Could you please create a mockup for the settings screen?
Here's the current list of options:
Data path: This is the directory the user selects on first run and where Knossos stores all the downloaded mods.
Concurrent downloads: This limits how many files Knossos downloads at the same time (default: 3)
Anonymous error reports: Knossos automatically sends error reports if this is enabled (enabled by default at least during development)
FSO settings: Pretty much what wxLauncher does (resolution, joystick, flags, ...). I think most of these fields are already covered by the development tab but we need a place to set the global default.
Path to SDL2 and OpenAL: Allows the user to specify the OpenAL and SDL2 libraries (DLLs on Windows) (these are normally autodetected and should only be changed when troubleshooting)
Language
Repositories (maybe): Here users could add additional mod repositories besides fsnebula.org.
I need some suggestions for the installation status. Currently, the user can only see a small progress bar on the mod box. I'd like to add more details to that (i.e. whether it's currently downloading or extracting archives).
PACK 1 ----------------50% Downloaded
PACK 2 -----------------------------------75% Downloaded
PACK 3 ---------------------------------------Installing
PACK 4 ---------------------------------------Installing
PACK 5 ------------------------------------------Complete
MOD 1 LOGO/MOD1 NAMEMOD 2 LOGO/MOD 2 NAME
- PACK 1 ----------------50% Downloaded
- PACK 2 -----------------------------------75% Downloaded
- PACK 3 ---------------------------------------Installing
- PACK 4 ---------------------------------------Installing
- PACK 5 ------------------------------------------Complete
MOD 3 LOGO/MOD 3 NAME
- PACK 1 ----------------50% Downloaded
- PACK 2 -----------------------------------75% Downloaded
- PACK 3 ---------------------------------------Installing
- PACK 4 ---------------------------------------Installing
- PACK 5 ------------------------------------------Complete
- PACK 1 ----------------50% Downloaded
- PACK 2 -----------------------------------75% Downloaded
- PACK 3 ---------------------------------------Installing
- PACK 4 ---------------------------------------Installing
- PACK 5 ------------------------------------------Complete
This is in addition to the Explore page, Development page, and Mod Details page? Those are designed but not implemented. (Looks like VUE.js basically still uses CSS/HTML? Point me the right direction and I can continue to contribute as soon as I setup a dev environment for Knossos.)
This is what comes up when the user clicks the gear in the top right of Knossos (currently missing from your build)?Yes.
Excellent thinking with "Uninstall".. I completely forgot about that. However, I'm wondering what you (and others) think about putting Uninstall in the dropdown menu under "Upload Debug Log"? The idea here is to keep "Play" being the most central option. Uninstall shouldn't happen so often as to need front-and-center placement.Makes sense, I didn't think of that menu when I added the button.
Additionally, we need to add that dropdown menu to the Details page, probably bottom right of the image or something.Placing just the dropdown icon there seems a bit awkward. Maybe we can add a button labeled "Advanced" or "Options" there? The button would still have the dropdown icon.
(I'm also learning git so I can actually contribute in a meaningful way. The idea is to lighten your workload!)Thanks a lot! Your mockups have already contributed so much. Without them Knossos might still look like this: :)
On the details page, Return and Details in the header should be centered, I think. It helps differentiate visually (subconsciously) that we're in a sub-view/menu. This is probably something I can fix and learn Vue.js at the same time.This probably won't involve Vue.js since it doesn't change anything related to the control flow / logic. I guess you will only need the change the CSS. I'm not sure if you're familiar with the Chrome DevTools (https://developers.google.com/web/tools/chrome-devtools/) but you can use them with Knossos: If Knossos is running in Debug mode (the default if you use windows_run.bat), you can open Chrome and point it to http://localhost:4006/ (http://localhost:4006/) which should then display the DevTools. I've found this to be very helpful.
Last thing for now, I think the default window size looks better being wide enough for 6 mods listed horizontally.You're right, I think the current window size is more or less a left over from the previous UI.
The debug dropdown needs to close on mouse out or mouse click off.Those bugs are limitations of the current implementation (I was trying to implement them using only CSS). I'll redo them using JS which should fix these issues.
The debug dropdown for mods on the very right of the window needs to dropdown left instead of right to avoid a horizontal scroll bar.
Placing just the dropdown icon there seems a bit awkward. Maybe we can add a button labeled "Advanced" or "Options" there? The button would still have the dropdown icon.Works for me. Or we have those buttons on the left 'Play', 'Settings', and then add 'Options' there as a grey button like Settings?
This probably won't involve Vue.js since it doesn't change anything related to the control flow / logic. I guess you will only need the change the CSS. I'm not sure if you're familiar with the Chrome DevTools (https://developers.google.com/web/tools/chrome-devtools/) but you can use them with Knossos: If Knossos is running in Debug mode (the default if you use windows_run.bat), you can open Chrome and point it to http://localhost:4006/ (http://localhost:4006/) which should then display the DevTools. I've found this to be very helpful.Oh, awesome! On the same subject, I was trying to modify some CSS (in html/css and html/index.html) and poke around with things for testing, but the changes never were reflected when I ran Knossos with windows_run.bat. What's the process for making those changes affect Knossos?
You're right, I think the current window size is more or less a left over from the previous UI.I figured. Your latest commit increases it, but it needs to be just a hair bigger at 1129px on my machine. This is probably because of the scrollbar. I would do 1133px for various OCD design reasons.. but that's just me. :p
Those bugs are limitations of the current implementation (I was trying to implement them using only CSS). I'll redo them using JS which should fix these issues.:yes: Would it be more helpful to submit these sorts of things as issues on GitHub instead of the thread?
I've implemented the new progress display. It works fine but there are a few issues left: The percentage text on the blue button is misplaced for some reason. I haven't yet figured how to fix it.Tried taking a look, but couldn't see an "Updating" or "Installing" button when I tried. But listing files instead of packages is fine, really. Just so long as the user gets a sense of "something is happening". I did notice that the "Install a mod" dialog needs to be skinned. I'll work up something.
The list doesn't list packages but files instead because a package can have several files (i.e. CB Anis from MediaVPs 2014) and it was easier to display the progress status per file. The alternating background colors will be added during the next round of polishing.
Works for me. Or we have those buttons on the left 'Play', 'Settings', and then add 'Options' there as a grey button like Settings?That sounds even better.
On the same subject, I was trying to modify some CSS (in html/css and html/index.html) and poke around with things for testing, but the changes never were reflected when I ran Knossos with windows_run.bat. What's the process for making those changes affect Knossos?As it turns out there were a few bugs with the debug mode on Windows. I've fixed them, once you update your files it should work. If you only change the files in the html folder, you don't have to restart Knossos, you can just right-click on the web page and select "Reload".
I figured. Your latest commit increases it, but it needs to be just a hair bigger at 1129px on my machine. This is probably because of the scrollbar. I would do 1133px for various OCD design reasons.. but that's just me. :p
:yes: Would it be more helpful to submit these sorts of things as issues on GitHub instead of the thread?I'm not sure. Issues give a better overview but a post in this thread will be read by more people.
Tried taking a look, but couldn't see an "Updating" or "Installing" button when I tried. But listing files instead of packages is fine, really.After you click "OK" in the install dialog, Knossos should switch to the Home tab. If you then hover over the mod, it should display the "Installing..." button. Here's a screenshot:
Yeah, me too! I thought this project had died and I was worried.Eh, this project has been going for over 3 years at this point (first commit (https://github.com/ngld/knossos/commit/975fedff3752ba02) was January 2014). I had to take a few breaks but I think we are finally getting close to a stable release and I'll keep working on this as long as I can.
In other news: macOS is supported again because I found a box for Vagrant.It sounds like a good idea but torrent seeding will be disabled by default, right? Enabling it by default will cause issues for some users so it would be best to make it opt-in for the more advanced users.
Someone brought up P2P mirroring again so I investigated BitTorrent again. libTorrent (http://libtorrent.org) (which is also used by Deluge, qBittorrent and WoT launcher) has Python bindings which should make it easy to integrate. Using this I could generate .torrent files automatically on the server, Knossos would use libtorrent to download those. Each torrent would have the existing link on dl.fsnebula.org listed as a web seed which means that downloads will always work (even if noone seeds) and should be at least as fast as they are now.
If people then want to mirror files, they'd only need to run a torrent client and seed these torrents either on their own PC or on a server.
What are your thoughts on this approach?
I just checked the development files and the new settings page looks very good. Is it supposed to be functional yet? When I open the page all the settings panels are hidden by default and clicking the buttons doesn't do anything.It's functional but you found a bug (hooray for automatic error reporting). It should be fixed now.
It sounds like a good idea but torrent seeding will be disabled by default, right? Enabling it by default will cause issues for some users so it would be best to make it opt-in for the more advanced users.I'll add an option to disable seeding in the settings screen. I might add another option to disable torrent downloading, too. In that case Knossos would fall back to HTTP downloading.
Delete the build.ninja file and try again. That file contains a list of all important files including the images. Since you renamed some of the images, the build.ninja file needs to be regenerated.
And lastly, from a purely selfish point of view I like torrents because they're usually faster :) I've got a 100MB down ISP connection and I can't max it out except by using a torrent (or if the data is mirrored within Australia, which is OK for mainstream stuff like my OS updates, but not much else)I'm curious, what download speed do you get with this link (https://dl.fsnebula.org/mods/bta_complete/1.0.8/BtA1_1080Movies.7z)?
$ wget https://dl.fsnebula.org/mods/bta_complete/1.0.8/BtA1_1080Movies.7z
--2017-06-19 17:24:59-- https://dl.fsnebula.org/mods/bta_complete/1.0.8/BtA1_1080Movies.7z
Resolving dl.fsnebula.org (dl.fsnebula.org)... 138.201.54.161
Connecting to dl.fsnebula.org (dl.fsnebula.org)|138.201.54.161|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 953291171 (909M) [application/x-7z-compressed]
Saving to: 'BtA1_1080Movies.7z’
BtA1_1080Movies.7z 94%[==============================================================================================================================> ] 855.33M 2.53MB/s in 6m 39s
If an application starts uploading stuff without my approval then it's a reason to uninstall that software, at least for me personally. That's specific to the seeding part but I guess enabling torrent download by default would be ok if that doesn't also require seeding. Also, seeding might cause issues if people only have limited data per month and automatic seeding would effectively double the data usage of a download (depending on how fast the connection is).
wget https://dl.fsnebula.org/mods/bta_complete/1.0.8/BtA1_1080Movies.7z
--2017-06-22 00:04:10-- https://dl.fsnebula.org/mods/bta_complete/1.0.8/BtA1_1080Movies.7z
Loaded CA certificate '/etc/ssl/certs/ca-certificates.crt'
Resolving dl.fsnebula.org... 138.201.54.161
Connecting to dl.fsnebula.org|138.201.54.161|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 953291171 (909M) [application/x-7z-compressed]
Saving to: 'BtA1_1080Movies.7z'
BtA1_1080Movies.7z 100%[==============================================================================================================================>] 909.13M 10.5MB/s in 91s
2017-06-22 00:05:41 (10.0 MB/s) - 'BtA1_1080Movies.7z' saved [953291171/953291171]
With all of that said, I'd put the option as a prompt, recommending the user allow P2P, but having the option to disable at launch.I agree, this sounds like the best option so far.
I know that Deluge and others have an option to use a random port, as well encrypt their data stream, and I would recommend enabling that if it's possible using libTorrent.Deluge uses libTorrent itself (and Deluge is written in Python) which means I should be able to implement most of Deluge's features. Though (obviously) I will only implement the features I actually need.
Regarding the encrypted data stream, are you talking about SSL torrents (http://libtorrent.org/manual-ref.html#ssl-torrents)?