Version 0.9.9 - 05-08-2009

New

  • While the 3D viewer is active and has focus, using the ',' (comma/<) and '.' (period/>) keys, can be used to select the previous and next node.
  • Holding down the CTRL + SHIFT keys in the 3D viewer will draw the axes icon in the foreground (overlayed), with arrows at the end of each axis line so you can clearly see the direction of the lines. This is a leftover of unfinished code for dragging/dropping objects in the viewer, which I don't plan on finishing anymore.

Fixed

  • Increased length of axes lines drawn on selected node (for dummy nodes only!).
  • Using the Close-button in the toolbar, when asked to save or cancel saving the file, pressing 'Cancel' would cause the same question to be asked a 2nd time.

Version 0.9.8 - NOT RELEASED

New

  • New menu item (under Tools) with extra JSGME options (Enable/disable mod or simply 'Run' for manual control).
  • New menu item (under File) 'Save in mod' that allows you to save a file to a specific mod. The popup menu will list all available mods to choose from. When saving the file, the relative directory structure will be taken into account so you don't have to worry about getting the directory structure right.
  • Import/export of mesh animations (interpolated vertices)
  • Import/export of texture animations (interpolated texture coordinates)
  • Interior camera clip sector will be drawn using an orange bounding box in 3D viewer when root node is selected for an interior file.
  • If the file being editted is part of a mod, the window title will include the mod name.
  • Material and texture map (formerly 'Illumination') are now supported from the context menu (new chunk).

Improved

  • Edit boxes with spinners now support scroll wheel to increment/decrement.
  • 3D viewer now dynamically adjusts FOV (model renders more natural at odd aspect ratios) and near/far clip planes (reduces z-fighting) based on aspect ratio. This also allowed me to increase the clipping range and max zoom level.
  • Quite a few nodes (light, animation, etc) are now uniquely identiable in the UI because of new icons.
  • Several small improvents.

Changed

  • The File > Open/Save As dialogs now remember the last path independently from the Import/Export dialogs. This makes it simpler to use a single source directory for storing exported assets, while also using files across the game folder structure.
  • Changed name of chunk type 13 from 'Illumination' to 'Texture map'. The icon has also changed, and in the editor you can now choose the type of texture map (occlusion, specular or bump) from a picklist.

Fixed

  • Bug fixed where S3D reported that nr. of uv indices in UVW did not correspondent to OBJ-file.
  • Texture maps could be added to material references which is incorrect. A warning is now provided upon saving the file. This also caused a null reference bug on model import which is handled now (thanks keltos01)
  • More fixes are included for corrupted game files (aka hex editted, or otherwise). These fixes are automatically applied and once saved result in valid files again. Hex powah! Bleh...

↑ Top

Version 0.9.7 - 24-01-2009 (to beta testers)

New

  • Added option to use a simple and advanced header in the right pane. Reduces some clutter. Simple header is enabled by default.
  • A basic (and first version) of the zones editor is included. Functionality is limited at this point. You can select individual zones by using CTRL+click in the viewer, and edit the properties on the right side. Boxes are colored by type. Zones.cfg in global game directory is parsed (when found) to show the name of the zone in the description field. Undo/redo support is local to the session only (while zones editor is active), although you can always undo or redo everything later as well when you get back in the main window of the ZON-file.
  • Added (partial) support for new controller TextureAnimationData (controller sub type 6). It it similar to MeshAnimationData but in this case allows linear interpolated animation of texture coordinates instead of vertices. A good example is the smoke/damp (and it's shadow) of the hot coffee mug in the CaptainRoom. For now you can only preview it (see next point) but I will add support to import this soon.
  • Mesh, texture and keyframe animations can be previewed in the 3D viewer. This makes it real easy to work on animations as you no longer need to test them in game. It becomes even more useful once I have included support for import of mesh/texture animations. NOTE: Mesh and texture animations are NOT interpolated (tweening) in S3D's viewer (although they are in game), which may result in not so smooth looking animations.
  • Context menu of 3D viewer has some extra options to hide/show objects and to control animation mode.
  • Added spinners for float/double text boxes.
  • Added button to jump to parent chunk.
  • A 'Copy with children' option is supported by invoking CTRL + SHIFT + C. When you use regular paste, the chunk that was copied including it's children will be pasted. Note: the option is only accessible through this shortcut function, default copy behavior remains selected chunk only.
  • A 'Cut with children' option is supported by invoking CTRL + SHIFT + X. When you use regular paste, the chunk that was cut including it's children will be pasted. Note: the option is only accessible through this shortcut function, default cut behavior remains selected chunk only.
  • You can now move array items in the property editor up and down, using the context menu (note: toolbar up/down buttons have no effect on property editor).
  • More keyboard support for 3D viewer: Key '1' through '5' toggles the render mode (solid, wireframe, etc). 'CTRL+1' through 'CTRL+4' toggles the texture maps. The 'H' key toggles visibility of the selected object.

Improved

  • Modified the way type safety is checked for all numeric text box controls.
  • float text boxes no longer use scientific notation (ie. 0,00005 is now shown instead of 1e-05).
  • Improved shaders so performance in wireframe/point mode is a bit better.
  • When appending a child chunk (through the menu), instead of always inserting the chunk one position after the selected 'parent', S3D now attempts to find the best place to insert the chunk (ie. models are placed one index before the parent, labels are inserted before nodes/controllers, etc.).
  • Added autocompletion to Condition field for StateMachineClass controller. Note: I may not have included all conditions.
  • Parts of the combo OBJ/UVW import function are rewritten to allow import of a subobject from a multi-object file. I actually forgot to test import from a multi-object file in combination with UVW. With extra OBJ-files, it already worked properly. This functionality is important when baking completely new ambient occlusion maps for a complete model (all meshes attached as elements). The model can then be exported to a single OBJ-file using subobjects, and just one set of UVW-files (generated for the entire 'attached' model). The S3D-importer will then pick up the right uvw data for each sub object, and you no longer need to export both an OBJ-file and UVW-files for each and every subobject yourself. Note: after detaching/attaching meshes, even though the geometry and texture mapping have not changed, ordering of vertices and texture coordinates are likely to change upon export from the 3D studio. For this reason, you can't just export the OBJ-file again without also exporting the OBJ/UVW-files for extra channels again. There are exceptions, for instance if you export the OBJ-file first, and then the baked uvw-data. You can rebake again, and then safely reexport the uvw-data. If you experience incorrect imports where UV-mapping appears wrong, please reexport ALL files from your 3D studio and try again, before knocking on my door. (thanks to Nisgeis for notifying me of this problem)

Changed

  • After carefull checking of the game shaders, I now changed the description of the fields for light nodes: 'Intensity' is now called 'Attenuation' (gradual loss of intensity), and 'Unknown' is now called 'Range' (1 unit=10mtr).
  • Default installation path changed to <Program Files>\skwas\Silent 3ditor
  • Changed FOV of 3D viewer a bit for a more natural look.

Fixed

  • 3D viewer would 'hang' when it was used on a new unsaved file.
  • When no materials were set on the node, a "Divide by zero" error occurred in model viewer (thanks kickinbak.com).
  • For newly added boxes in SH3ZonesCtrl, the ArmorLevel property would not accept float values (fixed twice). (thanks Mikhayl, Lurker_hlb3, LukeFF)
  • When exporting a texture linked to illumination chunk, the suggested file name now is the right one. (thanks Anvart)
  • Fixed problem where 3D viewer freezes/throws error if an embedded TGA texture contains an invalid TGA-header. Upon the next save of the file containing the texture chunk, the texture will now also be correctly saved. Note that the problem with the viewer still occurs if external textures have that invalid header. This is because the code of 3D viewer it's texture loader itself is not modified (it's not mine but Microsoft ;)), only the texture import/chunk parse code. (thanks Anvart)

Work in progress/planned

The last planned feature:

  • Mesh animation and texture animation import/export

This is the last planned feature. No more major new features will be incorportated. No more feature requests. Time's up. Afgelopen. Punt uit!

↑ Top

Version 0.9.4.0 RC4 - 02-01-2009

Changed

  • Some improvements to material handling. It seems the game accepts out-of-range material indices, which are stored by other model importer tools (possibly Pack3D, or otherwise tools not seen in public). The game apparently then uses a modulo function to determine the material index that is in range. Say you have only 3 materials but the material index used by a face is 5, the modulo operation (remainder of division) leads to the actual material to use, which is number 2 (5 mod 3). The S3D renderer will now also use a modulo function, and the same function will also be used when the model is exported to OBJ.
  • Some (but not all) file errors (usually introduced by manual hex editting or use of tools that do not 'interpret' the files) are now catched and fixed by S3D.
  • Upon critical file read errors, the chunk index and file offset is reported where the error occurred. Note that S3D has some optimized 'fallback' routines that attempts to reread data in another way which may sometimes cause the reported offset to be slightly off the mark. Consider it an estimate.

Fixed

  • A couple of minor bugs/issues related to cut/copy/paste.
  • Undo/redo bug fixed for some string fields.
  • DirectX error (black model viewer) when texture minification filter is disabled (incorrect/unsupported lod bias value). (thanks piri_reis)
  • Fixed bug "0,0 is not a valid value for Double." when importing a model. (thanks piri_reis)
  • Fixed bug in controller library which caused MeshAnimationData controllers to become corrupt. (thanks CapnScurvy)

↑ Top

Version 0.9.3.0 RC3 - 17-12-2008

New

  • In the OBJ-import settings dialog, you can now choose to merge an OBJ-file (with multiple sub objects) into a single mesh. To import only a specific sub object, select it in the list as before. Note that when importing animations (in the next release), sub objects cannot be imported seperately.
  • Added support for LightAnimation controller (found in Materials.dat on flares and lightning). (thanks Anvart for the tip)
  • You can now use a context menu in 3D viewer to Hide All/Unhide All.
  • Added link button next to the Id textbox to allow an easier shortcut to assign a new random id.
  • Added button to model viewer to enable/disable highlighting of selected faces.

Improved

  • When generating a random id, it is verified in the local DAT-file that it does not exist. If it does, it will continue generating a new id until it is unique. This is completely transparent to the end-user, you wont't notice it.

Changed

  • The contrast/brightness slider settings are now saved in the user profile.
  • The file information panel at the bottom of S3D's main window is added back again.

Fixed

  • Some parts of the interface remained interactive when saving a file. Making any changes to a file during a save could cause a corrupted save. All UI elements are now disabled when saving a file.

↑ Top

Version 0.9.2.0 RC2 - 11-12-2008

Fixed

  • Localization issue prevented a DAT-file to be opened. (thanks tater)
  • Model viewer failed to open when Visual Styles where disabled or unsupported by OS. (thanks Lurker_hlb3)
  • Non-standard screen DPI settings caused alot of controls to be scaled incorrectly. (thanks DRSp.)
  • A shader problem caused some models to be rendered semi-transparent.
  • Modelviewer did not render models with certain chunk orders. (thanks tater)

↑ Top

Version 0.9.1.0 RC1 - 10-12-2008

New

  • Quaternion calculator (Euler to Quad) added for quaternion value types. Should make it a bit easier to alter RotationKeyFrames controllers.
  • Full support for the StateMachineClass controller.
  • 3D viewer now supports a movement speed multiplier: holding Shift will increase zoom, rotation and pan speed by 4, while holding down Control will reduce it by 4.
  • 3D viewer now supports zooming using the +/- keypad keys, freelook using left/right/up/down keys, freemove (strafe/back/forward) with 'wasd' and orbit mode with keypad arrows. Additionally, the 'C' key centers the view on current object (similar to toolbar button). Keyboard support is still a work in progress and key bindings may change in the future.
  • You can now also click on an origin point in the 3D view to select a model or dummy node. Origins take precedence over any model (even if the model is closer to the camera). If multiple origins sit on exactly the same place, the one with the lowest index number is selected. The hitzone for an origin point is a 4x4 pixel box (iow. 1 pixel wider on all edges).
  • Added color setting for 3D viewer background, and for dummy origin points (nodes without a mesh (model) assigned).
  • Added option to modify z-buffer write mode, and cull mode on material chunks.
  • In the 3D viewer the selected chunk will now also have an axes icon drawn (centered on origin). This will allow you to see how an object is transformed by it's own transform-matrix as well as all parents.
  • JSGME integrated support to enable a mod you are working on. This function requires JSGME 2.2 or higher. For any file you work on that is part of a mod (ie. it is saved in a subfolder under the mod folder that JSGME creates), you can click on the JSGME button. S3D will automatically detect to which mod the file belongs (and will show the name in the tooltip), and asks JSGME to activate the mod. If the mod is already activated, it will be disabled first and then immediately enabled again. Note: if the mod is overwritten by other mods, this function won't work. With many thanks to JScones for providing command line support in JSGME.
  • Added Emissive edit box to the material editor (thanks Anvart)
  • Added Find/Goto support for .SDL files. This makes it easier to find a specific sound.
  • Added menu item 'Append new child chunk' which as the name suggests allows you to add a chunk, but instead of adding it to the root, it will be directly added as a child to the selected chunk. If the selected chunk does not have an 'Id', the menu item is greyed out.
  • Added 'Synchronize view' button to 3D viewer to synchronize the visibility of objects rendered in 3D with the "Node visible flag". You can use this if you hid several objects and want to restore the default rendering state.
  • Added game file/folder protection feature. When saving a file directly in a game folder under \Data, S3D will warn you about this and tells you it is better to save in a JSGME mod folder. You can still continue, or optionally choose to disable the protection feature in the Options dialog.
  • Added autocompletion to 'command' fields in controller data. (Based on the full (known) command list of SH4).
  • Added cut/copy/paste support for .dat (and related) files. "Really?", I hear you ask. YES, REALLY!
  • The 3D viewer now supports textures: diffuse, specular and lightmaps. Bump maps are not supported as of yet. Note that this is still an experimental feature at this point, and the shaders are based on SH4 (certain SH3 models and assets are rendered too bright, or incorrectly as a whole). If a model is incorrectly rendered or rendered as black, it doesn't have to mean the DAT-file is set up incorrectly. The texture loader works also slightly differently than the game, so always check in game to be sure. Extended SH3 support is NOT planned.
  • In the 3D viewer, when holding the Alt-key + middle mouse button, you can change the angle of 3 global lightsources in the scene. It's not an exact science because you don't know where the lights are positioned precisely, but at least you have some control over them.
  • Added file verification feature. During a save, the file is checked for some common mistakes or problems. If a problem is found, a Error List-panel will pop up with the details. Double clicking a error report item will bring you to the relevant node. More checks may need to be added in the future. The current set is real basic.
  • Added texture filter options (minification/magnification) to material editor.

Changed

  • When adding a new node, the visible flag will now be set to 'true' by default.
  • The index label in the right pane is replaced by an edit box, so you can now type in a new index number manually (suggested by ref)
  • Changed Bias parameter type of MipMapBias controller to float (thanks DivingDuck)
  • When exporting a model, material names will now have all space character stripped (it is substituted by an underscore '_'). This is due to a limitation in the default OBJ-importer of 3DS Max, resulting in 3DS Max to drop the material and thus any connection to the mesh(es) being imported. Possibly other importers of other software have similar issues.
  • Changed obj_Sensor.Type from type 'int' to 'SensorType' (thanks LukeFF)
  • Changed light type 'Sun' to 'Direct' (thanks Anvart)
  • Changed the way meshes are optimized for the 3D preview (unrelated to import). Vertex adjacency wasn't correctly calculated resulting in some odd shadow renderings (it would look as if certain faces where flipped).

Removed

  • The file information panel at the bottom is removed in favor of the Error List panel. You can however, still get all the same information through File > Properties.

Fixed

  • Fixed bug, when exporting a model that had a linked label with invalid file name characters (thanks BlackCatx3)
  • Fixed bug where Find/Goto function would sometimes search in a different window and not in the foreground window.
  • OFF-editor did not allow addition of more than one character, in essence rendering it useless to create new OFF-files. A reload was required after each character was added.
  • Fixed bug where 'Add new item' in context menu of OFF-editor did not add a new item.

↑ Top

Version 0.9.0.0 RC1 - 06-07-2008

New

  • OFF support (bitmap font definition file). Allows you to make custom bitmap fonts (well, you make the actual bitmap in ie. Photoshop, you can define the rectangles in S3D though). OFF files are found in Data\Menu\Fonts. For S3D to open the associated .TGA or .DDS, the image must have the same name and be placed in the same folder as the .OFF file.
  • Integrated 3D viewer. Allows you to view all the objects in an entire .DAT file. No texture support. Please visit this thread for a brief walkthrough of how to work with the viewer: SUBSIM thread.
  • Ability to modify the camera sector of interiors. If you select the root node of an interior, a new panel is available called 'Interior camera clip sector' with a couple of fields to edit the bounding box.

Changed

  • Restyled the UI a bit. Added panels (of which some are collapsable) to group specific fields and values.
  • Float and double values were previously formatted without a decimal seperator if the value contained no decimals, and so they looked visually the same as int, long, etc. They are now however always formatted with at least one decimal.
  • Adding and changing materials on a node is now easier due to a redesigned UI. Material id's can now be ordered, and also added through a picklist, instead of having to copy/paste the id yourself.
  • Replaced 'Visibility' edit box with a checkbox.
  • Renamed 'Insert new chunk' to 'Append new chunk'.
  • Renamed 'Offset' to 'Translation'.

Improved

  • If an MTL-file is empty, a proper error message is shown (thanks Mikhayl)
  • If a model uses a material that is not found in the MTL-file an error message is shown.
  • If a parent node of a model node has no materials assigned (or less then number of materials the imported model uses), a warning message will be shown to warn you that the import procedure may cause incorrect renderings.

Fixed

  • Crash bug when attempting to add a RotationKeyFrames or PositionKeyFrames chunk.
  • If materials in the MTL-file had different ordering compared to the material id's linked on the parent node, the model would be incorrectly rendered. The importer now compares the material names and attempts to reorder the materials. This will still fail if material names are different. In this case the order must match the materials on the parent node for the model to be rendered correctly.
  • Due to a bug, import of OBJ-models that contained normals, in combination with the setting 'Flip coordinate system' turned off and 'Reverse face winding' on were not imported correctly (resulting in incorrectly lit models in game). If the model did not contain normals or the settings were set otherwise, the problem wasn't there though. Thanks Sergbuto, for notifying me.

Version 0.8.2.0 (beta) - 22-04-2008

New

  • Added UV map preview function to view embedded UV data for each map channel. Very usefull to verify if an import was done succesfully. You can customize the wire frame color under menu Tools > Settings, and the size of the map in the panel next to the UV preview window.
  • The UV map can also be saved as a PNG file. This file can then be used as an overlay in your favorite paint software, to aid in modifying textures (thanks ref for idea)

Changed

  • Removed the 'Export texture coordinates' and 'Export normals' option from the obj-export dialog. Both are now enabled by default. They are removed because there was no point in having them, the data should always be exported.
  • Removed the 'Import texture coordinates' option from the obj-import dialog. It is now enabled by default. It is removed because there was no point in having this option, the texture coordinates should always be imported.

Improved

  • Quite a few error checks on obj-imports and exports, and more meaningful error messages. There are also a couple of other minor improvements. Thanks to the subsim members for testing these functions and throwing all the errors they ran into at me ;)

Fixed

  • Extended the time before the auto update check is performed after starting S3D from 1 sec. to 10 seconds. Also improved some of the error handling. I hope this solves the sometimes occuring crash when S3D is started.
  • S3D crashed when files were dropped on the shortcut or executable.

↑ Top

Version 0.8.1.0 (beta) - 19-04-2008

New

  • Added a couple of menuitems to the 'Insert new chunk' menu.
  • Support for the lipsync controller. You can now change the voice acting of the NPC's.

Improved

  • The import dialog now has a progress indicator.
  • The OBJ-importer no longer accepts quads and polygons. It couldn't handle them anyway, but it didn't warn you and this would cause problems to the game. Please triangulate your model before importing.
  • The OBJ-importer no longer accepts meshes that are partially textured. It may actually be smarter to remove the 'import texture coordinates' option all together. But ok, maybe later.

Fixed

  • Fixed OBJ-import bug 'An entry with the same key already exists'. This was caused by OBJ-files that contained duplicate texture coordinates. S3D already fixed this for map channel 2 and up, but didn't for the first channel. It does now.
  • Fixed OBJ-import bug 'Unexpected token encountered'. Somehow I goofed up, as the importer failed to recognize the 'o' token. Whooops!
  • Fixed OBJ-import bug for object files containing multiple meshes. S3D removed all the meshes it didn't need, but left the then unused materials untouched. This caused incorrect material indices to be saved into the .DAT.

↑ Top

Version 0.8.0.0 (beta) - 16-04-2008

The version v0.8 series will be the final beta stage. After issues have been ironed out in this branch, I will move towards Release Candidates as we move towards v1.0.

New

  • Model exporter for OBJ-file format. The export dialog provides the option to export additional map channels to either .UVW file or extra .OBJ files. The .UVW files can be used with 3ds Max, specifically the 'Unwrap UVW' modifier where you can load extra UVW data. This method is more direct than using additional .OBJ files. These must be loaded separately, and the user must copy the UV-data himself from that model to the target model.
  • Model importer for OBJ-file format. The import dialog works almost the same as the export dialog. You can feed in the main OBJ-model, and choose to load additional UV-data from .UVW or .OBJ files.
  • New toolbar buttons (dat/sim/zon/val/cam/dsd) that allow you to open related files. Ie. if you have a .dat file open, and a .sim file exists, you can click the sim-button to open it directly, instead of having to do a File > Open > search file... > Click OK.
  • Partial support for mesh animations. You can now edit the timing of mesh animations. The actual meshes are still a todo...
  • Labels that are 'known nodes' now have a description explaining what they are. Ie. cfg#A15_NBB_Yamato will have a description of AA Gun 15, or cfg#P02_B5N2_Kate will have Pilot/Sailor 2. The descriptions are based on a config file [S3D path]\cfg\labels.xml, and I used regular expressions to perform the match, and get the index number. Thanks to Anvart for posting this list of 'known nodes'.

Fixed

  • The Collada exporter failed on some objects that contain illegal path characters in their label (thanks privateer).

↑ Top

Version 0.7.1.0 (beta) - 02-04-2008

New

  • Context menu of Dat-editor extended with new menu items. The Cut/Copy/Paste items are still not implemented though. This will hopefully be done soon.
  • You can now add 'fully known' chunks directly from one of the menus (context or main menu). The newly created chunk will have a randomly generated id (if it supports an id field), but other than that is fully uninitialized. New chunks are inserted right after the selected chunk, but are NOT automatically parented to parent chunks.
  • Added a menu option to replace the current id of a chunk with a new random id. Child chunks will have their parent id fields updated as well.
  • Added a PayPal button. If you feel inclined, you can support development of S3D with a donation.

Changed

  • Properties node label now displays the actual name of the controller data, instead of the generic term 'Properties'. It will also indicate whether or not it is linked to a valid controller chunk, by displaying both the parent name as well as the local name if they are different. Ie. if you link a Float properties chunk to a ShipWake controller chunk, the label would be !ShipWake! - Float, to indicate the incorrect relationship.
  • Changed controller definition of SH3 controller: ShipWake/StartParameters/LeftVertex/StartPosition (also for RightVertex) from Vector2 to a custom type Vector2XZ. (thanks Mikhayl)

Fixes

  • Fixed bug that occurred when importing raw chunks that don't contain a header (thanks keltos01). This bug was introduced in v0.7.
  • When assigning a new 3D model id to a node, the model was not moved correctly in the tree hierarchy.
  • Embedded images could be parented to any chunk. They can now only be parented to materials and illumination chunks, and otherwise will always be placed in the root.
  • A couple of minor issues fixed.

↑ Top

Version 0.7.0.0 (beta) - 17-03-2008

New

  • Added a label to each chunk editor, indicating whether a chunk is fully supported or not. If not, clicking the label will open a dialog that can be used to analyze the unknown data, using an integrated hex editor. Note: the data is read-only.
  • Added option to import a DAT-file into another. Very useful to load a group of chunks, instead of exporting/importing each chunk seperately. The feature however is lacking a progress indicator and background thread loading (due to time constraints) so be prepared for the UI to become a bit unresponsive while it is loading a large file, and don't assume S3D has locked up... Maybe at a later date I will add background loading (like the normal File > Open procedure). Also note, that this feature has NOT been heavily tested and may contain bugs.

Changed

  • Due to significant new features, and to avoid confusion over the earlier warnings regarding the buggy uninstaller I labeled this release as v0.7.
  • Revised the uninstall procedure.

Note: Missing credits

The integrated hex control is not made by me. Unfortunately, I forgot to add credits to the readme, and will do so with the next release. A big thanks to the authors of this free control. See: http://sourceforge.net/projects/hexbox/

↑ Top

Version (patch) - 0.6.1.0 (beta) - 12-03-2008

New

  • Key frame animation support (not mesh animation!). You will now be able to set, change, or even add animations (based on key frames). I have some incomplete specs on mesh animation, so this is for the future. Thanks to privateer for helping me out.
  • I noticed SH3 has *.anm files that are also based on the .dat-file structure. They contain purely animation data (both key frame/mesh), so now S3D's file filter accepts files with this extension as well. I've also added the extension to the global file search dialog. Note that SH4 does not make use of this extension.
  • Added import/export menu item for embedded images.

Fixed

  • Pc's without the WingDings2 font didn't have a correctly rendered Close button with an X. (Button is on the right of the toolbar) I have never really payed attention to this. Button is now drawn correctly without the need for this font.
  • I don't remember in which version but a bug was introduced where importing a chunk into an empty document would fail with an error message. Previously this worked fine. Fixed, so it works again.

Improved

  • Controller engine improved + some controller definitions tweaked.
  • Improved some error messages.

↑ Top

Version 0.6.0.0 (beta) - 28-02-2008

This v0.6 release is a replacement for any previous v0.5.x. Please uninstall first!

New

  • Added support for the official 'U-boat Missions' add-on (read: SH4 1.5). One new controller was introduced and a very small amount of controllers have been extended by the devs.
  • Added 'Go to' dialog. Allows you to enter a chunk index to navigate to.
  • Added 'Find' dialog. Allows you to search for an id, parent id or string in the current opened file. String search is limited to chunk labels, names, controller names and textures. So it does NOT search properties of controllers!
  • Added functionality to add/remove array (aka lists) items in property editor. This is very useful to extend controllers even further. Any array is supported so you can extend ie. bitmap particles, more torpedo failure rates, more zoom levels, more sounds in a sound playlist, etc, anything! New items are always added directly after the selected array item. To add an item as the first item, select the parent node instead of an existing array item. The only limitation atm is that you can't move items around (this will be for a future release) so when the order matters, make sure you insert the item in the right place.

Improved

  • In Omni light nodes, changed the 'Unknown' value to 'Night color'. (thx Anvart)
  • Installer performs a DirectX version check during installation.
  • Other minor improvements

Changed

  • Removed ROW screenshot from main window. In LeoVampire's memory, it will reappear every year around Jan 8th for a few days.

↑ Top

Version (patch) - 0.5.4.0 (beta) - 11-01-2008

This v0.5 release is a replacement for any previous v0.5.x.

As of now, S3D is dedicated to our fallen friend, LeoVampire. I have made sure S3D users will not forget him by integrating a small screenshot of his work into the main window.

New

  • Partial cut/copy/paste support. Currently only functioning for SDL-files.
  • Added context menu to SDL-editor.
  • Added autocompletion of (known) controller names. A drop down will be shown with a list all possible matches when you type in the name of a controller.
  • Added option to global file search to search for model id references.
  • Added quite a few SH3-specific controllers. Previous 0.5.x releases couldn't open files with the missing controller definitions. My primary goal is to support SH4, but I found some time to run through SH3 controllers. You will find that this release will open most SH3 files now, except for some problematic GWX 2.0 files (see Improved section for more info)
  • Added periodic online check for updates (can be disabled in Options screen). This is as far as I will go for the time being. In the future maybe I will add automatic updating (on-the-fly), but now there are more important features to work on.

Fixed

  • Fixed crash bug that occurred when moving chunks up/down after inserting them (or undoing delete).
  • Removed warning that empty controller names where not allowed. In some cases, it IS allowed (animation controllers).
  • Fixed incorrect warning message of duplicate entry in SDL-editor, where in fact, there wasn't a duplicate entry. This sometimes occurred when typing a new name, and then clicking on another item. The editor failed to recognize the new name and attempted to insert the item a second time causing the warning messsage.

Improved

  • Improved the controller engine again. Unsupported controllers, or controllers that contain errors (invalid size specifiers, invalid or different data types or unexpected parse errors, like strings without trailing null) are now read as raw data (as was the case in v0.2). This means from this point on v0.5 is again usuable with SH3. You will not find controller errors in stock or patch files, but (hex) modded files (including those of supermods), or even files created with earlier versions of S3D can contain errors. S3D now tries to catch those errors and at least continue to read the file IF possible.

    I unfortunately found a few (minor) errors with around 10 GWX 2.0 files. I have contact their technical crew and they have told me they have fixed the files. I expect that these fixes will be made available in GWX 2.1. Note that the errors may not be so critical that it causes problem to the game. Thanks again ref and privateer!

  • Minor tweaks, both functional and UI.

↑ Top

Version (patch) - 0.5.3.0 (beta) - 04-01-2008

New

  • Support for Light nodes (set it's type, color and intensity). This includes Sun, Ambient and Omni lights.

Fixed

  • Fixed crash bug when undoing a change of a value made in a property chunk.
  • Fixed incorrect definition of Reflection and Refraction of the WaterReflection controller (thanks Leo).
  • Fixed file open bug (Specified argument was out of the range of valid values. Parameter name: index). Files that encountered this problem: bombs.dat, HarborKit.dat, EventCamera.dat, Torps*.dat files and maybe some more.

Changed

  • Pick lists now also show the 'value' before the 'name' of each item.
  • Removed the lengthy explanation in the Remap dialog and replaced it with a link to online help documentation.

Improved

  • Added some extra items to Help menu with links to documentation and website

↑ Top

Version (patch) - 0.5.1.0 (beta) - 20-12-2007

New

  • Ctrl+F4 closes a window.

Fixed

  • SH4: Can't open *.val (ships) and *.sim (torpedo's)  files that contain a ShipWake controller
  • Fixed a bug with reference to XP/Vista-dll, not found on Windows 2000. I don't know if there are more bugs related to Windows 2000 because I don't have this OS installed and can't test myself.

Known issues

  • bombs.dat, HarborKit.dat, EventCamera.dat, Torps*.dat files can't be opened.

↑ Top

Version 0.5.0.0 (beta) - 20-12-2007

New

  • Files from Explorer dropped on S3D will be opened.
  • The File > Open dialog now allows for multiple files to be selected/opened at once. Each file will be opened in a separate window and loaded simultaneously.
  • Support for placement chunk (see files in Data\Terrain\Locations and Data\Terrain\Forests).
  • Added a Close button in the toolbar on the right. The behavior is the same as File > Close.
  • SDL file support, including built-in sound player and volume control. (Requires Windows Media Player 9 and up). For OGG playback, a Media Player compatible codec must be installed separately! Maybe you already have one (not sure if the game installs a WMP-compatible codec), try it out first.
  • Undo/redo support.
  • The chunk filter in List-mode now supports multiple checked filters. Use a normal click to select a single filter, or CTRL+click to add additional filters.
  • New 'Window' menu which allows you to bring a different document to the foreground.
  • A global 'id search' function. Searches a directory tree based on search parameters for a specific id (or parent id). Useful when you really want to find out in what file a referenced id is hiding ;)
  • Remap function which allows you to change all id's in a file. Basically, this is a clone function for an entire file. The key benefit of my implementation is that you can clone related files all using the same remap value, resulting in valid reference (parent) id's across those files.
  • File > Properties menu item which opens a dialog with summary info of the file currently open, and with a special tab 'Advanced' which allows you to control some file flags (for dat-type files) that were previously inaccessible. More info available in that dialog.
    For dat-type files, the summary page also shows if there are related files found (.zon, .sim, etc). Clicking each one will open the file in a new editor window.
  • File > New which allows you to create a new, empty file. Please note: verify that the file flags (see previous point) for your content are set correctly when creating new dat-type files.
  • New value editors for the following data types: date/time (features a calendar control), pick lists (for instance, torpedo types, dial types, camera types), colors.
  • List view now has multiple columns, with extra info in the new columns.
  • 3D model export engine based on Collado. This is an open source 3D format based on XML. Technically, every format can then be exported/imported into S3D. For the time being export can only done on a per model chunk basis. Next release(s) will support export of child models (object hierarchy) within the same file. This function is really a preliminary version and expected to contain bugs/issues. Feedback appreciated.
  • The state and last selected node of the 'properties treeview' is now maintained. When you move between controllers, the properties tree is restored between each switch, so you don't need to reopen every branch again.
  • Added 'Visibility' field to node editor. The field seems to control whether an object is part of the world or not. While the most common values are 0 and 1, I think I've seen other values in this field.

Changed

  • When opening a file, a new window is now first opened, then the file is loaded.
  • When changing an id of a chunk, child chunks will have their parent id updated with the same value.
  • When changing the author name (in an AuthorInfo chunk) to an empty string, you would receive an error. An empty author name field is now allowed.
  • When deleting a chunk, you are asked if you want to delete the children as well.
  • When a file can't be opened and the path is in the Recent File list, you are asked if you want the path to be removed from this list. Previously, the path was always removed when an error occurred, which isn't always what we want (ie.: when the file is locked by another process, for example a hex editor).
  • Redesigned the controller/data parser engine. The engine now relies on C# controller definitions, which you can find in the /Controllers subfolder. These definitions are compiled dynamically when S3D is started. With this new approach every property in the SH game is now available to S3D, including documentation on each property.
    As a side effect, the property editor no longer shows file offset, data size, and total size. This kind of info is a bit more difficult to retrieve using the new engine. The benefits of the new engine are greater than having this kind of info though, so I chose to leave it out. Besides, because the engine is more robust, it will no longer be needed to hex edit any property anyway. I do not intend to bring this info back either, so don't ask.
  • Tga/dds preview box changed. Images with alpha channel are now drawn on a gray/white checkered background (compared to only gray in previous versions), similar to most image editors. This improves visual reference to what is (partially) alpha and what is not.
  • In property editor, ulong values are always assumed to be id's. S3D will try to resolve the id's in the same file so you can navigate to them. While not particularly useful at this point (id's in properties generally refer to a different file), I hope to add a global resolve function at some point.
  • The tga/dds image preview is resized using Nearest Neighbor algorithm. Previously, textures were scaled smoothly. The new method allows for faster scaling and you can each pixel more clearly.
  • In list view, multiple items can be selected (and deleted at once)

Fixed

  • Small memory leak with node editor.
  • Menu icons (Vista only) were gone in the main menu after the treeview context menu was used once.
  • File > Close didn't ask to save changes for a modified file.

Improved

  • File read and write speed improved by up to 400%. It depends on the type of chunks in the file, but overall, every file loads and saves faster.
  • Import of raw chunks can also be done now in empty documents.
  • More Windows Vista styles are implemented.
  • More small UI improvements.

Known issues/limitations

  • When using the remap function, id's in properties are not changed.
  • Id's in the property tree are not displayed in hex notation regardless of the user preferred setting in Option-dialog.

PS: Many more internal changes have been made. Certain changes may result in different behavior compared to older releases, and may introduce new bugs. I will not hold responsibility for incorrect written files. It is up to you to test your modifications thoroughly and your mod is your responsibility when you release it. If you find S3D contains a bug, feel free to notify me through e-mail, Subsim PM or post in my Subsim thread.

Thank you for using S3D. :)

↑ Top

Version 0.2.0.0 (alpha) - 10-8-2007

New

  • Ability to delete chunks. 
  • Import raw chunk added (export was already supported). Be careful with this though. Incorrect use can make the file you are working on unreadable to the game.
  • When you run S3D again while another instance is already running, it will bring the existing instance up and terminate the new one.
  • Added a file info pane at the bottom. The pane displays the path, dates and size of the opened file. To view it, click the thin blue bar just above the status bar.
  • When selecting an individual property, info of that property is shown: date type, offset, size, etc.

Changed

  • Separated resources from main assembly, so it is smaller (for quick patches in the future).
  • Renamed propertydefitions.xml to propertydefinitions.xml (doh!)
  • Due to some internal changes, all user preferences are reset. I hope this won't need to happen next time...
  • Renamed 'Size' to 'Chunk size' and 'Chunk size' to 'Data size'. Sorry for overlooking this. (thanks Anvart)
  • Changed behavior of File > Close. Previously, the application would close if the last file was closed. Now, the last window will remain open. Use File > Exit to exit the application. (thanks Anvart)
  • Part of the property parser is reworked, due to some reported parse bugs. These changes generally should improve data type detection. I've now also tested every single file of SH3 1.4b, and SH4 1.3, a total of 2700+ files, and all were read successfully. However, I can't guarantee the parser reads modded files successfully, because I simply can't test it all by myself. So, if you (still) find S3D doesn't open a particular file (anymore), please tell me...
    NOTE: Not all data types of properties are ok, because auto detection may assume a float over an int for example. Tell me if you find incorrect data types.
  • Renamed view 'Nested' to 'Tree'.
  • Auto detection of a property with 1 byte data size previously defaulted to a 'bool'. This means: if the byte = 0 = false, or if the byte > 1 = true. The problem here is that some properties accept a value from 0-255. When saving back a file S3D would write back 1 for true, instead of the (unmodified) original value. I've changed default property data type to 'byte' to overcome this. If you are sure a specific property is a 'bool', or even a 'sbyte' (signed byte, -128 to 127), then let me know, because it controls how S3D allows you to change values in the editor.

Fixes

  • Fixed a parse bug with cameras.dat (thanks CaptainCox)
  • Fixed a parse bug with  .sim files of submarines (thanks PepsiCan)
  • Fixed yet some more parse bugs in .sim files (ship parts) (thanks Anvart)
  • Fixed issue with move up/down chunk.
  • Some minor bug fixes
  • Color edit control sometimes displayed a descriptive string of the color (for instance: Red) where you expect numeric values. This is corrected. (thanks Anvart)

Improved

  • Improved error messages when a parse error occurred.
  • Updated installer with logo.
  • Updated interface with some visual styles.

A word on automatic property data type detection

Auto detection of property data types is not foolproof. Remember this. There are even scenarios possible when (especially regarding string types, more on this later), where a property may be detected as one type today, and as another the next (because you changed it's value). This is why I recommend 'predefining' as much properties as possible (the ones you change!!!). I have not done this yet, because I'm not 100% sure about certain data types, because there's so many of them, and because I'm lazy ;) You can help out by providing feedback on each value that gives problems, so I can predefine more data types over time.

So how does it work:

  • First, S3D checks the xml config file with predefined data types. If a property is predefined, I use it, and skip auto detection. You'll see this in the editor by the label 'predefined'.
  • Next, S3D checks if the property is possibly a string. My criteria (although it is not perfect, but it's the best I can do for now, without affecting performance) is:
    • Every byte (except the last) must be greater than or equal to 32. Bytes below 32 are non-printable control characters. Silent Hunter uses the Windows-1252 encoding: http://en.wikipedia.org/wiki/Windows-1252
    • The last byte must be 0 (the null terminating character).
  • Next, S3D checks the data size of the property:
    • 1 byte = 'byte' type. This can also be a 'bool' type (true or false, 0 or 1) but in that case you have to predefine it.
    • 2 bytes = 'ushort' type. This can also be a 'short' but in that case you have to predefine it.
    • 4 bytes = 'float' type. This can also be an 'int' or 'uint' but in that case you have to predefine it.
    • 8 bytes = 'ulong' type (often they are id's). This can also be a 'long', 'double', or 'vector2' but in that case you have to predefine it.
    • 12 bytes = vector3.
  • If all else fails, S3D assumes the property is a collection.  It could be an 'array', a 'stringCollection', or another available type. Sometimes, one of the above auto detection rules can even be incorrect (for example, 12 bytes could also be a stringCollection!!!). We can never know for sure using this technique. This is when a data type must explicitly be defined in the xml config file, to either overrule wrong detection or overrule the final default 'collection' type.

So why do strings in particular pose a problem? Well, say you have a string of arbitrary length. Say, you decide to clear the value to no string (empty). In the file structure, an empty string is written back as a single byte, the null terminating char, or '0'. Once the file is read again, and if the property is not predefined, my auto detection rules will fail to identify it as a string again, it will in fact see it as a byte value this time (see the rules above again). There are more similar scenario's possible and should be avoided. So, you can try to edit the config file for properties you are about to change (if they are not predefined already), and by all means, tell me any correct definition, so I can include them in next releases.

The biggest benefit of this mechanism is that S3D is able to open most files without problems, for reading. I recommend though that you never modify auto detected properties, just because of the problems described above. Before modifying, analyze each property you want to change for it's data type. Is it correct? What should it be if not? Next, ask me or try yourself to add definitions for them. Try to stay away from global definitions as much as possible, unless absolutely sure. Once they work, change the values as per your wish, and feedback the definitions back to the community, and me so I can include them in next updates. You are then helping out to improve S3D's property parser and editor. Over the months to come, the parser should rely less and less on auto detection, and only use definitions, resulting in less parse mistakes in the long run...

PS: a how-to on property data type definitions is described in the xml config file 'propertydefinitions.xml' in the installation folder.

↑ Top

Version 0.1.0.0 (alpha) - 31-7-2007

  • Initial release

↑ Top