What's new in this release.
(Global changes)
1) MLServer's built in web servers were completely re-written. We previously were using a third party web server control. The new web server's have been written using the native .NET components. The new web servers now have compression turned on and transfer data to the clients about 300% faster using one third of the previous bandwidth. These are significant improvements but difficult to measure in the real world because of the small size of the web app pages. However, you should be seeing better performance overall.
2) Communication from the web app to the server and back has been switched from XML to the more industry standard JSON.
3) The MLServer web sockets server has also been updated to support the current web sockets standards.
4) If your tablet or phone is capable of using web sockets then you can now take advantage of the new MLServer WebCmd command. Similar to MainLobby's MLCmd the new WebCmd can be used to send client commands using a MLServer command. Any valid client command can be used. For example sending a changescene command to a web client looks like WebCmd|LoadScene|index.html. Since this is a MLServer command you are free to use server variables where appropriate. Currently all iOS devices, current generation Kindles and Android devices running Android 4.1 support web sockets.
5) The formulas that are used to calculate gradients have all been normalized. Prior to this release different formulas were used and this resulted in inconsistent looks between objects.
6) The restriction that only one instance of a MLServer variable can be used on a page has been removed. There is now no limit to how many times the same variable can be used on a page. (THIS HAS A SIGNIFICANT IMPACT ON ANY EXISTING PAGES YOU HAVE ALREADY CREATED. MORE ABOUT THIS LATER.)
7) The JQuery files have been updated to the latest release.
8) The core JavaScript routines in the Scripts.js file have been reworked to support the new functions and features.
9) To accommodate users that do not want to maintain the default file naming conventions for the html files a new JavaScript file called Custom.js has been added to the allow for different file names. The hard coded file names in the Scripts.js file have been moved to the Custom.js file and are exposed as JavaScript variables. If you want to use different file names all you have to do is edit this file in notepad and make the appropriate file name changes.
10) The "FastClick" JavaScript library has been implemented in the core scripts. This should help eliminate the 400ms delay inherent when pressing the objects on screen.
Additionally each of the insertable objects have seen significant changes. The more significant changes to each object are outlined below.
Panel Object
1) Gradients now uses the new formula
2) Panel corners can now be adjusted in pixel increments. It is possible to create round panels.
Text (Label) Object
1) Labels can now be rotated a full 360 degrees.
Image Object
1) (new) Opacity Variable - you can define a server variable that can be used to set the opacity of the image. The variable should range from 0 to 100. A sample use for this would be to add a glow to a light that reflects the lights level.
2) (new) Reload - when you enable this option the image will automatically be refreshed at about 1.5 second intervals when displayed on a page.
3) (updated) Click Object - When you enter the name of a object ID here that object will receive the red glow ring when you click the image.
4) (new) Rotate When On - when the state variable associated with the image is in an On state the image will rotate on the screen approximately 10 degrees every 200 milliseconds or about 8 rpm.
5) (new) On Image - you can swap a different image when the state variable is On.
6) (new) Off Image - you can swap a different image when the state variable is Off. These come in pairs. You need to specify both On and Off images if you want to use this feature.
Button Object
1) (updated) - corner radius can be adjusted in pixel increments. It is possible to create round buttons.
2) (updated) - gradient uses the new formula.
3) (new) Rotation - Buttons can be rotated a full 360 degrees.
4) (updated) Click Object - When you enter the name of a object ID here that object will receive the red glow ring when you click the button.
5) (updated) Icons - new icons from the Transport font appear in the font drop down.
6) (new) On Background - you can set the background color of the button when the state variable is on.
7) (new) Off Background - you can set the background color of the button when the state variable is off. These come in pairs. You need to specify both On and Off colors if you want to use this feature.
Vertical Slider Object
1) (updated) - Corners can be set at 1 pixel increments
2) (updated) - gradients use the new formula
Horizontal Progress Bar Object
1) (updated) - corners can be set at 1 pixel increments
2) (updated) - gradients use the new formula
Generic Progress Bar Object
1) (updated) - gradients use the new formula
Toggle Button object
No changes - consider using the background On,Off feature of the button object until this object gets rewritten.
Movie Browser Object
1) (updated) - A/Z corners can be set at 1 pixel increments
2) (updated) - A/Z gradients use the new formula
3) (new) - Option to include / exclude movie titles
Music Browser Object
1) (updated) - A/Z corners can be set at 1 pixel increments
2) (updated) - A/Z gradients use the new formula
3) (new) - Option to include / Artist and Album names
Netflix Browser Object
1) (updated) - A/Z corners can be set at 1 pixel increments
2) (updated) - A/Z gradients use the new formula
3) (new) - Option to include / exclude movie titles
Scroller Object
1) (updated) - visible scroll bar has new styling and will automatically disappear after a few seconds.
Video Object
1) (update) - underlying html is fully HTML 5 compliant
Gauge Object
1) (update) - new dial graphic and needle images.
Calendar Object
No changes
Infinite Scroll Object
1) (update) - significant changes to the underlying JavaScript. However is still remains an advanced control that required knowledge of SQL queries and HTML syntax. This object is still in development. If you would like to use this object please contact us and we can work with you on the solution.
Carousel Object (NEW)
1) (new) - This object can be used to build horizontal or vertical scrolling objects. Menus, images browsers. Lots off possibilities. Like the infinite scroll object the carousel supports a virtual infinite scroll. For example you could build a carousel of movie thumbnails that automatically load new images as the user scrolls. Like the Infinite scroll this object is still in development and should be considered an advanced object that requires SQL and HTML knowledge. We can work with you if you want to use this object.
Web Page Object (NEW)
1) (new) Like WebLobby you can now embed an external web page on your scenes. Web pages are loaded in an IFrame object. Not all web sites like being loaded in an IFrame but this should work fine for all normal uses.
WHAT ABOUT THE EXISTING SCENES YOU HAVE CREATED?
A lot of effort has gone into trying to automatically covert the older HTML code into the new format supported by this release. It will be easier to start with the new versions of the sample apps but the designer will convert your old scene HTML code to the new format and be 95% successful.
To convert your old scenes to the new format you will have to do the following for each page.
1) Open the scene and after it finishes loading immediately press the Save button.
2) Then for each Button object on the page do the following
a) Re-select the button background color
b) Re-select the label font color
c) Press the Update Button.
3) Then for each Text label on the page do the following
a) Re-select the label font color
b) Press the Update button.
4) Then for each Panel on the page do the following
a) Re-select the panel background color
b) Press the Update Button.
5) Then for all other object on the page
a) edit the object and press its Update button
6) Edit each .html file that is not an overlay and insert the following line just BEFORE the scripts.js line
Code: Select all
<script src="javascript/Custom.js" type="text/javascript"></script>
This seems like a lot but it really doesn't take that long. I converted the sample iPad app using this method. The only place where you will see some issues is that there are some times you will lose the server state variable associated with the object if one was previously being used.
CAVEATS
This new version has gone through a considerable amount of testing. We have used the designer on two different customer's designs and it is working well. However, there is probably still some bugs lurking in there and there are still some objects to be enhanced. The designer has seen over 12,000 lines of code modified from the last release so you can see many, many things have changed. It is strongly suggested that you sample the new apps before starting on the migration of your existing scenes. By all means DO NOT immediately press the refresh button on your existing scenes before you are ready to dive in with making ALL the changes. If you just press Refresh without editing all your old scenes all of the old scenes WILL STOP WORKING properly. Caveat Emptor.
The next post will talk about the new sample apps. The new release will appear in the Installation Assistant just after a bit more testing.