editor extensions

From Wiki

Jump to: navigation, search
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
{{Notice|small=left|text='''Transcluded by [[Sword of Moonlight Extension Library/list of extensions]].'''}}
 +
 
<onlyinclude>
 
<onlyinclude>
 
Extensions in this section deal exclusively with the editing tools which authors use to make new Sword of Moonlight games. For the most part other sections pertain to tools only in so far as if and when a tool includes previews of in game elements; extensions affecting the project should apply, however in practice this may not always be the case.
 
Extensions in this section deal exclusively with the editing tools which authors use to make new Sword of Moonlight games. For the most part other sections pertain to tools only in so far as if and when a tool includes previews of in game elements; extensions affecting the project should apply, however in practice this may not always be the case.
Line 4: Line 6:
 
====assorted...====
 
====assorted...====
 
{{Ex/inival|1.1.2.3|any string of text|complements [[#sort_...]]. Profiles that were not sorted into categories are listed towards the end of the menus in [[SOM_PRM]]. With this extension a heading may be applied to these unsorted, or assorted, profiles. The part after '''assorted''' may be an underscore (_). Refer to [[#sort_...]]|text}}
 
{{Ex/inival|1.1.2.3|any string of text|complements [[#sort_...]]. Profiles that were not sorted into categories are listed towards the end of the menus in [[SOM_PRM]]. With this extension a heading may be applied to these unsorted, or assorted, profiles. The part after '''assorted''' may be an underscore (_). Refer to [[#sort_...]]|text}}
 +
 +
====black_saturation====
 +
{{Ex/inival|1.2.2.2|base 256 identifiers|is established mainly so end-users may change the contrast levels of text that is overlaid onto background and button graphics. By default the text appears as pure black text over pure white text, separated by 1x1 pixel offsets. The effect is pleasing if monitors have control over "sharpness" and are not set to be overly sharp. Otherwise, reducing the contrast by making black more gray and or white less brilliant is facilitated by '''black_saturation''' and [[#white_saturation]], if and when reducing sharpness is either not possible or not desirable.
 +
 +
The color can be made different for buttons by examining the first parameter, that is "NaN" (not-a-number) for background text, and not-so for button text. This parameter might indicate the button's graphic, or it might not; in which case it is the number 0. Historically button graphics are darker than background graphics, and so might benefit from increased contrast.
 +
 +
These extensions can also be used to experiment with novel themes via the "theme and language package" framework. The functionality is limited right now, but will be expanded to meet demand as it is an appropriate application of these extensions|id}}
  
 
====clip_volume_multiplier====
 
====clip_volume_multiplier====
Line 10: Line 19:
 
'''Note: This extension is currently limited to SOM_PRM.'''
 
'''Note: This extension is currently limited to SOM_PRM.'''
  
====default_pixel_value====
+
====default_pixel_value...====
{{Ex/inival|1.1.1.3|hexadecimal colour codes|effectively changes the background colour (normally black) in the windows where 3D graphics are on display|color}}
+
{{anchor|default_pixel_value}}
 +
{{Ex/inival|1.1.1.3|hexadecimal color codes|changes the background color (normally black) in the windows where 3D graphics are on display|color}}
 +
 
 +
'''default_pixel_value2'''
 +
{{anchor|default_pixel_value2}}
 +
{{Ex/inival|1.2.2.4|hexadecimal color codes|changes the background color of the new profile (see: [[PRF]], [[PRT]]) editor tools (normally blue) when opened outside the context of [[SOM_PRM]] or in the smaller thumbnail sketch view. If this value is made to be 0, or pure black, it is as if it is the same value as [[#default_pixel_value]]|color}}
  
 
====do_hide_direct3d_hardware====
 
====do_hide_direct3d_hardware====
Line 26: Line 40:
 
{{Ex/inival|1.1.1.4|binary statements|is nothing fancy. It will let you have Sword of Moonlight create a new [[runtime]] on top of an existing folder where a runtime may already be found. Your project will simply be converted and deposited on top of whatever files and folders are in the target folder. Sword of Moonlight will not complain or refuse to do your bidding, neither will you be warned of the impending overwrite|do}}
 
{{Ex/inival|1.1.1.4|binary statements|is nothing fancy. It will let you have Sword of Moonlight create a new [[runtime]] on top of an existing folder where a runtime may already be found. Your project will simply be converted and deposited on top of whatever files and folders are in the target folder. Sword of Moonlight will not complain or refuse to do your bidding, neither will you be warned of the impending overwrite|do}}
  
====language_pack_to_use (obsolete)====
+
====do_subdivide_polygons====
''As of version 1.1.2.14 the [[SOM]] file's TEXT environment variable is used to set the language pack, and language_pack_to_use is no longer available. There is also a new world language/theme pack configuration step, which means that under normal circumstances it should not be necessary to assign a value to TEXT within the SOM file itself.''
+
''It is recommended that this extension NOT be used. It is provided just in case.''
  
{{Ex/inival|1.0.0.1|a legal NTFS file title|selects a language pack from the [[text]] folder; <u>not</u> the [[lang]] folder! A language pack in the '''text''' folder is normally a compressed .zip archive. It can also be a directory if uncompressed. You should specify the name of the language pack file, without the .zip extension. However, as of 1.1.2.4 the .zip extension will be ignored if present, and an absolute path to anywhere on the local file system can be used instead}}
+
{{Ex/inival|1.2.0.8|binary statements|reinstates the older/original behavior of subdividing level geometry that is beneath lamps. To enable the use of [[#do_aa]] the map compiler is made to subdivide everything equally, and because presently per-vertex-lighting is required: maximally|do}}
  
''A language pack is a translation (into another language) of the various editing tools which make up Sword of Moonlight. See [[#Script]] for game translation extensions.''
+
====height_adjustment====
 +
{{Ex/inival|1.2.2.4|positive real numbers|adjust the height of the fonts, thereby making tools larger. The first parameter is the default font height in terms of pixels. The second parameter is a numeric code that identifies individual tools, that is reserved for advanced use cases. This extension came about because the [[PlayStation VR]] makes text appear fuzzy, in which case it may become illegible. The new height is limited to the size of the original font or two times the original font's size. Making the fonts 1.3 times larger is recommended for the original tools, using the MS Gothic font. Different sizes can produce layouts that are the same size but do not achieve the largest possible font, therefore it's recommended to find the desired layout, and then increase the size as high as it can go within that layout, to ensure the font is as robust as can be. An unintended upside of larger fonts is 2D or 3D model areas are made more spacious. The main downside is imperfections that appear if the original layout was handcrafted so not to have imperfections. This is unavoidable since the enlargement process isn't precise down to individual pixels|real}}
  
 
====sort_...====
 
====sort_...====
Line 43: Line 58:
  
 
'''''Tip: two new examples of how all of this works: [http://svn.swordofmoonlight.net/data/my/prof/Ex.ini][http://svn.swordofmoonlight.net/SAMPLE/Example/Example%20Ex.ini]'''''
 
'''''Tip: two new examples of how all of this works: [http://svn.swordofmoonlight.net/data/my/prof/Ex.ini][http://svn.swordofmoonlight.net/SAMPLE/Example/Example%20Ex.ini]'''''
 +
 +
====time_machine_mode====
 +
{{Ex/inival|1.2.2.2|whole numbers; 0, 2000|when set to 2000, disables some extensions in order to demonstrate the classic "look & feel" of [[Som2k]]. This is intended to demonstrate some esthetic characteristics to researchers, historians, and their ilk, by offering a middle ground between installing a period specific virtual machine loaded with Sword of Moonlight's original CD-ROM's materials|whole}}
  
 
====texture_subsamples====
 
====texture_subsamples====
Line 52: Line 70:
  
 
{{dagger|based on standard legacy software device numbers (1024x1024)}}''
 
{{dagger|based on standard legacy software device numbers (1024x1024)}}''
 +
 +
====white_saturation====
 +
{{Ex/inival|1.2.2.2|base 256 identifiers|is established mainly so end-users may change the contrast levels of text that is overlaid onto background and button graphics. Refer to [[#black_saturation]]. black_saturation has more to say on this subject|id}}
  
 
</onlyinclude>
 
</onlyinclude>

Latest revision as of 16:56, 23 May 2018


Extensions in this section deal exclusively with the editing tools which authors use to make new Sword of Moonlight games. For the most part other sections pertain to tools only in so far as if and when a tool includes previews of in game elements; extensions affecting the project should apply, however in practice this may not always be the case.

assorted...[edit]

Introduced around 1.1.2.3, this extension complements #sort_.... Profiles that were not sorted into categories are listed towards the end of the menus in SOM_PRM. With this extension a heading may be applied to these unsorted, or assorted, profiles. The part after assorted may be an underscore (_). Refer to #sort_.... Values are limited to any string of text.[#]

black_saturation[edit]

Introduced around 1.2.2.2, this extension is established mainly so end-users may change the contrast levels of text that is overlaid onto background and button graphics. By default the text appears as pure black text over pure white text, separated by 1x1 pixel offsets. The effect is pleasing if monitors have control over "sharpness" and are not set to be overly sharp. Otherwise, reducing the contrast by making black more gray and or white less brilliant is facilitated by black_saturation and #white_saturation, if and when reducing sharpness is either not possible or not desirable.

The color can be made different for buttons by examining the first parameter, that is "NaN" (not-a-number) for background text, and not-so for button text. This parameter might indicate the button's graphic, or it might not; in which case it is the number 0. Historically button graphics are darker than background graphics, and so might benefit from increased contrast.

These extensions can also be used to experiment with novel themes via the "theme and language package" framework. The functionality is limited right now, but will be expanded to meet demand as it is an appropriate application of these extensions. Values are limited to base 256 identifiers.[#]

clip_volume_multiplier[edit]

Introduced around 1.1.1.3, this extension scales the clip volume in the windows where 3D graphics are on display. Scaling by values less than 1 will make objects appear larger, or closer, and scaling above 1 vice versa. 0.5 works very well in SOM_PRM. Values are limited to real numbers.[#]

Note: This extension is currently limited to SOM_PRM.

default_pixel_value...[edit]

Introduced around 1.1.1.3, this extension changes the background color (normally black) in the windows where 3D graphics are on display. Values are limited to hexadecimal color codes.[#]

default_pixel_value2 Introduced around 1.2.2.4, this extension changes the background color of the new profile (see: PRF, PRT) editor tools (normally blue) when opened outside the context of SOM_PRM or in the smaller thumbnail sketch view. If this value is made to be 0, or pure black, it is as if it is the same value as #default_pixel_value. Values are limited to hexadecimal color codes.[#]

do_hide_direct3d_hardware[edit]

Formerly do_hide_direct3d_hardware_devices prior to 1.1.1.5

Introduced around 1.1.1.3, this extension will hide any hardware accelerated display devices from Sword of Moonlight tools. If there is no pure software device available then there will be a failure to acquire a device. Use this as a last resort when having compatibility problems. Values are limited to binary statements.[#]

This extension is not intended to be necessary under any circumstances. It is a temporary fallback. If you find yourself relying upon it, please report the difficulties you are experiencing to someone who is in a position to resolve your issue.

do_overwrite_project[edit]

Introduced around 1.1.1.4, this extension is nothing fancy. It will let you have Sword of Moonlight create a new project on top of an existing folder where a project may already be found. The normal project template will simply be written over whatever files and folders are in the target folder. Sword of Moonlight will not complain or refuse to do your bidding, neither will you be warned of the impending overwrite. Values are limited to binary statements.[#]

do_overwrite_runtime[edit]

Introduced around 1.1.1.4, this extension is nothing fancy. It will let you have Sword of Moonlight create a new runtime on top of an existing folder where a runtime may already be found. Your project will simply be converted and deposited on top of whatever files and folders are in the target folder. Sword of Moonlight will not complain or refuse to do your bidding, neither will you be warned of the impending overwrite. Values are limited to binary statements.[#]

do_subdivide_polygons[edit]

It is recommended that this extension NOT be used. It is provided just in case.

Introduced around 1.2.0.8, this extension reinstates the older/original behavior of subdividing level geometry that is beneath lamps. To enable the use of #do_aa the map compiler is made to subdivide everything equally, and because presently per-vertex-lighting is required: maximally. Values are limited to binary statements.[#]

height_adjustment[edit]

Introduced around 1.2.2.4, this extension adjust the height of the fonts, thereby making tools larger. The first parameter is the default font height in terms of pixels. The second parameter is a numeric code that identifies individual tools, that is reserved for advanced use cases. This extension came about because the PlayStation VR makes text appear fuzzy, in which case it may become illegible. The new height is limited to the size of the original font or two times the original font's size. Making the fonts 1.3 times larger is recommended for the original tools, using the MS Gothic font. Different sizes can produce layouts that are the same size but do not achieve the largest possible font, therefore it's recommended to find the desired layout, and then increase the size as high as it can go within that layout, to ensure the font is as robust as can be. An unintended upside of larger fonts is 2D or 3D model areas are made more spacious. The main downside is imperfections that appear if the original layout was handcrafted so not to have imperfections. This is unavoidable since the enlargement process isn't precise down to individual pixels. Values are limited to positive real numbers.[#]

sort_...[edit]

Introduced around 1.1.2.3, this extension sorts profiles in SOM_PRM into categories based on SET files. The part after sort_ must be one or more sets separated by underscores (_). An additional underscore may appear after the final set to indicate that a space ( ) should not be appended to the end of the category heading.

By default a space (_) is appended to the heading, and the profile's description follows the space. %s can be written in order to embed the description directly within the heading. Categories appear in the order in which they appear in the INI files. Refer to #assorted.... Values are limited to any string of text.[#]

Since 1.1.2.8 there is limit on the number of sets in play, although this is an implementation detail. And there are two new ways to use sort_:

  • sort_x or sort_x= where nothing follows the equal sign (=) causes "x" to be effectively appended to subsequent sort_ directives. To clear the "appendix" just use sort_ by itself; or in other words, append nothing.
  • sort_=x causes a separator to be inserted into the resulting categories. If nothing exists between two separators then the first separator will not appear. Separators should be used, and used consistently if so.

Tip: two new examples of how all of this works: [1][2]

time_machine_mode[edit]

Introduced around 1.2.2.2, this extension when set to 2000, disables some extensions in order to demonstrate the classic "look & feel" of Som2k. This is intended to demonstrate some esthetic characteristics to researchers, historians, and their ilk, by offering a middle ground between installing a period specific virtual machine loaded with Sword of Moonlight's original CD-ROM's materials. Values are limited to whole numbers; 0, 2000.[#]

texture_subsamples[edit]

Introduced around 1.1.1.3, this extension blows up textures, smoothing them out in the process. So if set to 2, a 256x256 texture will become a 512x512 texture in memory. Sword of Moonlight alone will try to blow textures up to the maximum size allowed by the display device. With modern hardware that is quite dangerous, since 8192x8192 or better is common, which is a 256MB texture. The Sword of Moonlight Extension Library by default uses 256x256 textures. Values are limited to whole numbers; 1, 2, 4.[#]

It's not clear why Sword of Moonlight tools exhibit this behavior. One theory is the tools would in their day require software emulation under most circumstances to display graphics inside popup windows. Since filtering the texture on screen would be slower for a software rasterizer, blowing the texture up achieves the same effect while consuming considerably more memory.

The Extension Library ensures the texture is sampled in "halftone" mode. Sword of Moonlight neglects to do so and therefore where that is not the default behavior will likely consume about 16+ times the memory required without any positive effect.

+based on standard legacy software device numbers (1024x1024)

white_saturation[edit]

Introduced around 1.2.2.2, this extension is established mainly so end-users may change the contrast levels of text that is overlaid onto background and button graphics. Refer to #black_saturation. black_saturation has more to say on this subject. Values are limited to base 256 identifiers.[#]