Page 1 of 1

A possible solution?

Posted: Wed Mar 21, 2018 7:55 pm
by Fleurghber
At last I've been able to adjust certain OXZs which have been giving me trouble for a while. I may not be the only one with this problem, so you might like to try this method and see if it helps.

When the OXZ is flagged in the latest.log as being defective in some way, change the ending from .oxz to .zip, and open it. This should create a folder with the same name.

Change the original file's name back to end with .oxz, so you have an unmodified copy if this doesn't work, but don't put it back in the Managed Addons folder just yet.

There should now be a folder with the same name: open this folder, locate the apparently defective file and open it.

Just what you do next may involve some trial and error: each file is different, but as a rule of thumb, all lines within a given pair of brackets should end the same way (with or without a comma, semicolon, or whatever). I used BBEdit.

Save the corrected file.

Highlight all files in the top-level folder (but not the folder itself), and drag them together, onto the zip folder icon in StuffIt Destinations. This will create a new Zip file, which should be given the same name as the original OXZ (but without .oxz or .zip at the end: the program will do this itself).

Change the end of this file's name from .zip to .oxz, put it in the Managed Addons folder, and test as before.

So far, I've been able to do this for the following OXZs:

"Opening log for Oolite version 1.86 (x86-64) under Mac OS X Version 10.9.5 (Build 13F1911) at 2018-03-21 07:30:53 pm +0000.
Machine type: iMac14,1, 8192 MiB memory, 4 x x86 (Haswell) @ 2700 MHz.
Build options: OpenAL, new planets.

Note that the contents of the log file can be adjusted by editing logcontrol.plist.

19:30:53.732 [dataCache.rebuild.datesChanged]: Cache is stale (modification dates have changed). Rebuilding from scratch.
19:30:53.759 [system]: Invalid color System, labelColor (warning given only once)
19:30:53.932 [rendering.opengl.version]: OpenGL renderer version: 2.1.0 ("2.1 INTEL-8.28.37"). Vendor: "Intel Inc.". Renderer: "Intel Iris Pro OpenGL Engine".
19:30:53.932 [rendering.opengl.extensions]: OpenGL extensions (128):
GL_EXT_texture_compression_dxt1, GL_EXT_rescale_normal, GL_EXT_transform_feedback, GL_EXT_blend_func_separate, GL_EXT_framebuffer_sRGB, GL_ATI_texture_env_combine3, GL_ARB_draw_elements_base_vertex, GL_EXT_debug_label, GL_EXT_geometry_shader4, GL_EXT_secondary_color, GL_EXT_separate_specular_color, GL_EXT_shadow_funcs, GL_NV_texgen_reflection, GL_NV_blend_square, GL_ARB_texture_compression_rgtc, GL_EXT_stencil_wrap, GL_ARB_texture_env_crossbar, GL_EXT_framebuffer_blit, GL_ATI_separate_stencil, GL_APPLE_vertex_point_size, GL_EXT_texture_rectangle, GL_APPLE_specular_vector, GL_EXT_packed_depth_stencil, GL_EXT_blend_color, GL_ARB_fragment_program_shadow, GL_EXT_texture_env_add, GL_EXT_provoking_vertex, GL_EXT_texture_array, GL_ARB_texture_env_combine, GL_ARB_point_sprite, GL_ARB_multisample, GL_EXT_framebuffer_object, GL_ARB_framebuffer_sRGB, GL_EXT_texture_lod_bias, GL_APPLE_pixel_buffer, GL_ARB_vertex_program, GL_EXT_bgra, GL_APPLE_fence, GL_APPLE_ycbcr_422, GL_EXT_timer_query, GL_EXT_vertex_array_bgra, GL_ARB_depth_clamp, GL_IBM_rasterpos_clip, GL_ARB_pixel_buffer_object, GL_SGIS_generate_mipmap, GL_EXT_framebuffer_multisample_blit_scaled, GL_ARB_shader_texture_lod, GL_ARB_texture_float, GL_ARB_texture_rectangle, GL_ARB_vertex_shader, GL_NV_texture_barrier, GL_ARB_provoking_vertex, GL_ARB_texture_env_add, GL_APPLE_object_purgeable, GL_ARB_texture_env_dot3, GL_APPLE_rgb_422, GL_NV_depth_clamp, GL_ARB_texture_mirrored_repeat, GL_ARB_texture_cube_map, GL_APPLE_element_array, GL_ATI_texture_float, GL_ARB_window_pos, GL_ARB_sync, GL_ARB_vertex_buffer_object, GL_APPLE_texture_range, GL_NV_conditional_render, GL_EXT_stencil_two_side, GL_ARB_texture_compression, GL_ARB_instanced_arrays, GL_EXT_blend_minmax, GL_ARB_texture_border_clamp, GL_EXT_draw_buffers2, GL_ARB_shading_language_100, GL_EXT_blend_equation_separate, GL_ARB_vertex_blend, GL_EXT_blend_subtract, GL_EXT_packed_float, GL_APPLE_aux_depth_stencil, GL_APPLE_row_bytes, GL_NV_light_max_exponent, GL_EXT_abgr, GL_EXT_texture_filter_anisotropic, GL_ARB_vertex_array_bgra, GL_ARB_draw_buffers, GL_ARB_transpose_matrix, GL_ARB_color_buffer_float, GL_EXT_gpu_program_parameters, GL_APPLE_client_storage, GL_ARB_texture_non_power_of_two, GL_ARB_multitexture, GL_EXT_gpu_shader4, GL_APPLE_flush_render, GL_ARB_framebuffer_object, GL_APPLE_vertex_program_evaluators, GL_APPLE_transform_hint, GL_EXT_texture_compression_s3tc, GL_APPLE_flush_buffer_range, GL_EXT_texture_integer, GL_SGIS_texture_edge_clamp, GL_NV_fog_distance, GL_ARB_occlusion_query, GL_ARB_fragment_shader, GL_ARB_texture_rg, GL_ARB_fragment_program, GL_ARB_seamless_cube_map, GL_ARB_shader_objects, GL_EXT_draw_range_elements, GL_APPLE_vertex_array_object, GL_ARB_depth_texture, GL_EXT_texture_sRGB, GL_ARB_half_float_vertex, GL_APPLE_vertex_array_range, GL_ARB_shadow, GL_EXT_multi_draw_arrays, GL_ARB_half_float_pixel, GL_APPLE_packed_pixels, GL_ARB_point_parameters, GL_EXT_debug_marker, GL_EXT_texture_sRGB_decode, GL_EXT_clip_volume_hint, GL_SGIS_texture_lod, GL_EXT_fog_coord, GL_EXT_texture_shared_exponent, GL_ATI_texture_mirror_once, GL_APPLE_float_pixels, GL_EXT_framebuffer_multisample, GL_ARB_depth_buffer_float, GL_ARB_draw_instanced
19:30:53.939 [rendering.opengl.shader.support]: Shaders are supported.
19:30:53.950 [dataCache.rebuild.datesChanged]: Cache is stale (modification dates have changed). Rebuilding from scratch.
19:30:53.950 [searchPaths.dumpAll]: Resource paths:
~/Desktop/Games and things/Elite family/Oolite-1.86/Oolite.app/Contents/Resources
~/Library/Application Support/Oolite/Managed AddOns
~/Library/Application Support/Oolite/AddOns
~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.CaptMurphy.Fleurghber.unofficial.BreakableTorusDrive.oxz
~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Lone_Wolf.Fleurghber.unofficial.ETTHomingBeacon.oxz
~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.Norby.Fleurghber.unofficial.Andromeda.oxz
~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.QCS.Fleurghber.unofficial.QHTI_AuxEnergyGenerators.oxz
~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.QCS.Fleurghber.unofficial.QTHI_AntiZap.oxz
~/Library/Application Support/Oolite/Managed AddOns/oolite.oxp.smivs.Fleurghber.unofficial.ExtraFuelTanks.oxz
19:30:53.961 [shipData.load.begin]: Loading ship data.
19:30:54.468 [startup.complete]: ========== Loading complete in 0.63 seconds. ==========
19:30:56.165 [exit.context]: Exiting: Exit Game selected on start screen.

Closing log at 2018-03-21 07:30:56 pm +0000."

The one OXZ so far which I haven't been able to cure by this method is Liners: the problem appears to be in Config/shipdata.plist, "liners_drone"… subentities = (…); [lines 159-200 in my copy]. Any thoughts on why this one is different?

(with thanks to other Commanders involved for their help and patience)

Re: A possible solution?

Posted: Wed Mar 21, 2018 10:40 pm
by Fleurghber
Now I've managed to fix Liners too:

Basically, in shipdata.plist, the lines which read

color = { hue = 0 };

(167, 174, 181, 188 and 195 in my copy) should read

color = { hue = 0; };

Works for me, anyway.

Re: A possible solution?

Posted: Thu Mar 22, 2018 8:01 am
by another_commander
Just a quick comment to say that tampering with the Managed AddOns folder should generally be avoided, unless you know exactly what you are doing.

You can still extract the contents of an OXZ into AddOns by selecting the OXZ in the list of installed AddOns and pressing "x". This will extract the OXZ inside your AddOns folder, in unzipped form, with an initial extension .off. Now, if you can modify the unzipped OXZ and you can enable its use by changing the extension to .oxp. Before doing that, remember to remove the original OXZ using the in-game Manager, otherwise your modifications will not be loaded (and you will get a message about this, if both the unzipped OXP and the same managed one are detected).

The overall idea is: Leave managed OXPs to the Manager, modify freely inside your AddOns folder.

Re: A possible solution?

Posted: Thu Mar 22, 2018 4:58 pm
by Fleurghber
Yes, I should add in that context, whatever you call your OXZ, don't change the "identifier" string in the manifest.plist, as the manifest.plist and/or requires.plist of other OXZs check for it.

Re: A possible solution?

Posted: Thu Mar 22, 2018 9:35 pm
by cag
@another_commander

Do you know (or know who to ask) if this is a Mac issue? Many of the oxp's Fleurghber has had problems with load fine on Windows 10. At a guess, I'd say the plist library used to build the Mac version is less forgiving than those used for Windows & Linux.

I've run all the oxz's on
http://www.oolite.org/oxps/
and found found quite a few missing ';'s errors that don't show up in my logs:
https://bb.oolite.space/viewtopic.php?f=4&t=19514

How does one go about updating those oxp's that are not currently maintained? I don't think it's reasonable to expect the average player to edit oxp's.

Re: A possible solution?

Posted: Fri Mar 23, 2018 6:48 am
by another_commander
@cag: Yes, the strict semicolon parsing is a Mac thing. Windows and Linux use GNUstep to parse plists and that apparently is more relaxed syntax-wise than whatever it is that the Mac uses. Most likely the reason why these errors had not been reported for so long was that the OXPs were developed on Linux or Windows machines and were run mostly by people on Windows and Linux. As soon as we got some Mac users diving into the expansions, the issue came up.

To update unmaintained OXPs, you will most likely need to check that they have a license attached and, if they do (they should, otherwise they should not be uploaded to the Manager), get in touch somehow with the original author and obtain their permission to take custody of their work. Sometimes the license may allow you to do modifications freely provided you give credit to the original author, but it is considered good form to request permission in any case,