This new version is the culmination of a couple months of work.....I spent most of December on updating the original danceball script to be as compatible with the changes made in Opensim 0.9 without breaking functionality for the many people (myself included) who use the official Opensim 0.8.2.1 release. While I was at it, I added a number of new features that I'd been thinking about adding, or that people had requested and could be accommodated without impacting the key feature of being a single-script multi-purpose system ideally suited to a very high traffic club setting.
I began testing the new version at our RefugeGrid parties in January, and after squishing a few little bugs I'm happy to say that the last 5 tests (including last night's 48-person stress test) haven't uncovered any new bugs at all so with any luck it should work perfectly for almost all of you.
What's New in Version 2.0Here's a very quick summary of what's new:
- Group Dance: you can now set one of the singles dance styles as the group dance, and your guests can simply touch the danceball, pick "GROUP" from the menu, and they'll join the dance. Everyone using group will be using the same animation and kept in synch (synch updates every 2 minutes so when they first join they'll be out of synch for the first minute or two).
- Expanded Singles Dances: version 2.0 of the dance ball now allows for an unlimited number of different singles dance styles, and the system comes with more than 500 singles dance animations (more than 300 new ones added since v1.x) and works the same way it always has. You'll find that the singles styles menu now has three pages to it...
- the ones on the first page are general purpose/club dances
- the ones on the second page are a little more flirty or burlesque or special focus
- the two on the last page are more...explicit
- Couples Dance Global Offset: there is now a setting in the main script that allows you to assign a global z-axis offset that will be applied to all couples dances, correcting for the change to sit targets made in the latest developer code. This allows you to adjust the height of all couples dancers to get their feet positioned more or less correctly on the floor. People using Opensim 0.8.x can use the default 0.0 offset. People running under Opensim 0.9 will need to experiment with adjusting this value. I suggest a good approximate starting point of -0.15 which seemed about right in my tests. Obviously this is subject to any further changes made by the developers.
- Easier NPC Handling: In the versoion 1.x system you had to manually edit the script to add and remove NPCs from the danceball. Many people found this a bit intimidating so I have reworked the way NPCs are handled. Now, you simply have to start their notecard names with a specific special text string (.NPCM for male, .NPCF for female) and the dancemaster system automatically builds the lists for you during initialization. That means you can now just add a correctly-named appearance notecard, or delete and existing card, then reset the script and it's all done automatically for you!
You can also change those special strings with a simple edit to the basic user settings in the script. This allows you to have multiple different sets of NPCs in your danceball, named for for different occasions, then simply assign the set you want you use in the script and reset.
For example, in my own I have a set of .NPCM/.NPCF cards for daily use; then another set that all have names starting with .LingerieM or .LingerieF...to change between them I just make a quick edit to the setting in the script and they're ready to dance!
- Faster Initialization: I have now made all of the detailed error-checking and contents analysis of the old system an option set in the script. It's off by default because I have carefully ensured that my setup is correct, so this greatly reduces the time taken for the system to reset (under 2 seconds and usually under 1 second). If you make any edits you can enabled error-checking and let it double-check your work, then switch it back off again once you've made any corrections.
People using the new 0.9 development code under .NET may experience issues where initialization with error-checking will hang and never complete because for some systems it appears to take 100+ seconds to execute on the same set of instructions that used to take <10 seconds under 0.8.x and the default Opensim limit to an event's procession time is 30 seconds. I've included a detailed work-around to let you use this...see the included READ ME notecard for details.
- Custom NPCs: The new version 2.0 now allows you to include an optional configuration notecard with a list of one or more user UUIDs and their preferred NPC dance partner. When someone picks NPC Couples and sits, if they're in that list they will always be given their preferred NPC as their partner but they can always use the NEW M or NEW F option to dance with different ones.
One additional "perk" to this is that you can assign any valid NPC appearance notecard name (that's in the ball's inventory) as a person's preferred partner, even if it doesn't conform to the special naming convention introduced above. This means I can have it set up to give me a NPC as my partner that nobody else can get.
The version I supply of the danceball includes a sample configuration notecard to get you started and you can simply leave it in there or edit it as desired. You can delete it too, without any issues.
- Extended NPC Support: I've added the provision for NPCs that are rezzed and controlled by other (external) scripts to be able to touch the danceball at which point they will join the group dance. Commanding the NPC to touch the ball again will have it stop dancing. Those commands are all ones to be handled by an external script such as Ferd's excellent NPC controller system.
- New NPCs: The new system comes with all of the old version's NPCs, as well as a number of new NPCs that I've made and even more that were very kindly donated by various people from around the Metaverse. Some of these will probably not display correctly for people who are residents of smaller grids that have never encountered those assets before but you can simply delete any that don't work for you and add your own.
- Parcel Group Permission Compatibility: Opensim 0.9 has made major changes to the way that parcel access permissions are handled which will break version 1.x of my ball if the parcel is set to group access. NPCs will be evicted and poseballs may refuse to rez for couples in general.
I have applied a fix for this to change the method used for NPC rezzing while still keeping my system fully compatible with Opensim 0.8.x simulators. NPCs shouldn't be evicted any longer from 0.9 parcels unless there are further code changes. If you're running with group parcel access or script permissions limits, please be sure to set the main danceball's group to match the allowed group, too.
- New Danceball and Poseball Objects: I made a new version of the mesh for both the main danceball and the poseball to reduce their poly count and make them easier to spot from a distance. They're now only a single prim (instead of each being 2) to reduce the LI for grids that use LI.
- Script Improvements: I also made a small number of further refinements to the script in both the main danceball and in the poseball that make them even more efficient than before. In my testing it uses about 10% fewer resources than the v1.x system under the same circumstances.
I added a few new attempts to "trap" the occasional case where asynchronous handling of scripts by the region would cause it to generate an OSSL error message. It is still possible that you'll see the occasional one, depending on your region's server and how busy your party is, but hopefully they'll be less common that was the case with version 1.x. I can't completely eliminate this, though...that would require major surgery to the Opensim code itself and the error message doesn't cause the system to stop working.
- Bug Fixes: The 1.3 version had two very small semi-bugs in it that didn't actually affect performance at all but I fixed them anyway in case they causes issues at some point in future Opensim releases. I fixed a case where regions that don't recompile scripts on start-up would still purge any stranded poseballs (although it should be impossible to strand a poseball unless the entire region crashes during operation) and a case where a list look-up was type-casted incorrectly (which still worked but might not if casting handling is changed in the main code).
Where Do I Get It?The complete system is available, boxed, from my shopping region. Simply HGTP to RefugeGrid and take the local portal to Paramour Shopping; or you can HGTP there directly using:
- RefugeGrid.com:8002:Paramour Shopping
If you want to test it out and see it in action first, you'll find it above the center of the dance floor in my Hedonism club region in RefugeGrid. I host parties there every Sunday at 5pm-9pm grid time but you can drop by any time to play with it.
The system is supplied under Creative Commons Attribution-Non-Commercial-ShareAlike 4.0 International license which means you're free to share it or make it available for others to pick up from your own regions, provided you don't charge for it and it continues to credit me as the creator.
Whether you pick up a copy from me, or from anyone else, please be very patient to allow the transfer to complete if you are HGed to another grid. There are more than 700 animations plus assorted other contents, plus the objects themselves, so depending on how busy the servers are this can take several minutes at least to deliver if nobody else on your grid already has a copy. Just wait for this to complete rather than clicking to "buy" again since that will only just slow down the transfer even further. For most users, the box will be added to your "My Suitcase > Objects" folder once it has been delivered.
The danceball and READ ME notecard are inside the box.
If you want to put a copy of it out on your region for other people to take, please do this using the boxed version...that way people will get the proper complete system. Note that I would advise against doing this in a region on a residential server or that is otherwise very busy as it's the region itself that has to handle the asset transfer which can impact on other things happening in the area.
What Does It Cost?All products I create are completely free...just come and pick up a copy.
Seth (and I as a resident) do, however, incur costs to maintain the grid, shopping region and my testing/development regions so if you feel inspired to make a small contribution to help with this we'd both be extremely appreciative. I want to stress that this is completely voluntary but of course every little bit helps. You'll find a sign in the region with a link for secure Paypal donation to RefugeGrid if you feel so inclined.
How Do I Set It Up?The cryptically named "READ ME" notecard in the box and inside the danceball itself contains complete instructions on how to get it up and running.
If you're new to the system you may need to ask your region admin to adjust a few settings but, increasingly, regions are preconfigured by providers to let it work perfectly straight out of the box.
If you're running a region with an existing version 1.x of the ball there are no changes to the script that require anything special and it should work perfectly.
If you've just updated to the experimental Opensim 0.9 build you will need to make additional changes (all details are in the notecard).
If you have an existing system with custom NPCs in it, you can take those NPCs out of your old ball, rename them to match the new naming conventions, then drop them into the new ball and reset the script. It will pick them up automatically when it initializes.
If you have an existing system with custom dance animations in it, they can be added to the new system in exactly the same way it worked when you added them to the old system.
How Do I Get Help?If you have any questions or encounter any problems, please take the time to first re-read the READ ME notecard...it will answer many of the most common ones.
If you still need help, you can contact me via a comment here (G+) or in-world you can come to RefugeGrid.com:8002 and see if I'm online and able to take your IM. If not, please send me a notecard via IM that details your question/problem and please include your name and the HG address of your grid so I will know who it comes from and where I need to go to be able to reply to you. Inter-grid communications are extremely buggy so if you don't hear back from me in a day or two it's safe to assume that I haven't received your message and please try again.
For issues directly relating to the Opensim 0.9 development branch I may or may not be able to help you and may refer you directly to the Opensim developers for support since they will be more aware of the functionalities that they've broken/changed and what fixes/work-arounds might be possible. Until such time as 0.9 has been tested, fixed, and reached some measure of stability I highly recommend using 0.8.2.1 for most club/production environments.
If you discover any bugs with the system, particularly ones that you're able to reproduce, please get in touch with me and let me know. I take great pride in releasing as bug-free a product as I possibly can and am very happy to fix anything that I'm responsible for breaking. For bugs or broken functionality resulting from changes to Opensim, please file a Mantis report with the developers.