Final blog post.. The build is done!

I’ve added bit’s of detail to my build to both meet the prim count criteria and to give a little bit more character to my creation

Dials.jpg

Added dials

Because my jukebox was very basic in terms of geometry I thought that I’d add a few dials on the face of the jukebox to make it look less 2Dish. Although a subtle difference, I am pleased with the result.

basic cactus.jpg

Added a basic cactus (9 Prims)

Though the place could do with some decorating (As well as more complexity) and decided that a potplant might be a nice touch

I figured a cactus would be the least complex plant to build and ended up with this .

Unfortunately I couldn’t get the textures to line up as I desired but this isn’t too noticable from a distance anyway.

The cactus object rezes/derezzes just like the other objects.

And now for my personal favourite… My own branding for the jukebox, inspired by the old school sonic games. For this I layered a transparent prim over the existing ones (Similar to a sticker in a way)

Custom insignia.jpg

Incredible

I even managed to sneak one on the front of the machine

front insig.jpg

Nice and subtle

And thus brings the completion of my project, it’s been a big learning experience for me as I didn’t have any experience with scripting for a 3d environment and had little experience in LSL. Overall, I achieved most the core functionality I desired and the objects don’t look terrible so I’m pretty happy with myself.

One thing I couldn’t manage to get working though was object rezzing in relation to the jukeboxes rotation. There’s some tricky math and inbuilt functions involved in getting this working. It also doesn’t help that the rotation in scripting is primarily measured in radians – Which isn’t familiar territory for me at all.

I have left a warning of this rotation issue in the notecard so players who try rotate the jukebox won’t be shocked by the interaction it has with the other items spawning.

I have also left warnings about using chat channel -100 within the vicinity of the objects as it could compromise their functionality AND left a warning regarding copyrighted material in playlists and how it won’t be played (This is due the youtube API restrictions, not me)

Now I can bring the party wherever I go in second life :). Koru anyone?

Brief demonstration video below

 

Making things look believable

My most recent efforts have primarly in making things look believable. This involved finding the appropriate textures I was looking for and mapping them appropriately onto models

I also made an entirely new, much slicker jukebox model and screen which is much closer to how I intended it to look

jukebox

Before shot 

Jukebox front.JPG

After shot – front

As you can see i’ve applied a little glow to the jukebox to give off that tube lighting-type effect.

Jukebox back.JPG

After shot – back of jukebox, with that nice leather finish 

I used addtional prims on the jukebox to layer the leather back(2 prims) and the player screen (1 prim) on top of my jukebox model and textures to achieve the look and functionality I was after.

dsico disco

New disco ball

With a bit of glow and shininess to try make it vibrant like a disco ball would be

new seating

Ive applied some basic textures to my seats to make them look a bit more life-like. 

I’m very close to finishing my final build, although on of the requirements isnt quite met yet. (My build uses a total of 20 prims/30 thus far) So I will be adding pieces of detail to my build in order to meet this requirement (Not entirely sure what I’m going to add yet)

I’m also going to give the jukebox a couple of aesthetic changes in order to give it a bit more character

It’s all coming together now

I’ve completed most the scripting functionality of my build done now.

I decided to include a dialog menu to meet some of the complex interactivity criteria. I had some issues getting this to work with the existing textbox script I had due to both functions both using “message” to return their values and as a result, the incorrect YouTube URL would be loaded with the message from the dialog box as apposed to the textbox.

After a good few hours I managed to solve this conflict by wrapping my head around the concept of listeners/removing them and text channels. And thus I bring you my dialog menu..

 

jukebox menu

The options do the following:

Exit – Exits the menu

Instructions – Gives an intstruction notecard to the players inventory

Demo  – Links out to my demonstration video from last blog (Video to be updated once project is complete)

link out

And finally

PlaylistID – The main bulk of the functionality

playlist ID.JPG

Users enter their desired playlist ID, upon pressing submit the playlist is loaded on the jukebox screen

jukebox.JPG

 

and the other objects of the build are spawned in  relative to the jukboxes position

after.JPG

So far, the objects spawned include (Textures or models not finalized at this stage)

A disco ball – Rotates around like you would expect a disco ball too, I might implement a particle system on this if I get the time. The ball requests to animate avatar upon touch. Accepting the requests makes the avatar dance.

Dancefloor – Complete with it’s own animated texture (Used a fantastic tool to easily achieve this which converts gifs  found:Here)

Seating – I built a seat which is going to be spawned along the side of the dance floor, I used “Market map Easy sit Target Tool”, a free tool from the second life marketplace to find the location and rotation vectors for the appropriate seating of the avatars(This was incredibly difficult to find manually)

seating.JPG

Sits nicely

Currently, All of the rezzed items derez upon attempting to enter a playlist ID. I’m considering adding another dialog menu option which derezzes all objects

At this stage I have met 6 points of criteria from the complex interactivity Including

  • The presentation of a dialog menu with a minimum of three options displayed
  • A link out to a web page 
  • The sitting of an avatar on a prim with the purpose of either “seating” or “teleporting” the avatar (seats)
  • Prim movement through scripting (Sphere rotation)
  • An object rezzed from the inventory of another object (Objects spawning from jukebox)
  • A prim’s inventory item (Content) passed to an avatar

 

After

My next focus will be in doing the texture work on the jukebox, seats and disco ball in an attempt to make the build look more believable.

MUVE build: Early functional prototype with core functionalities

I’ve constructed a basic prototype for my jukebox build over the past week or so which satisfies the majority of core functionality I intend to include. I’ve also had discussions with isa regarding changing my project from visual complexity to complex interactivity for a few reasons Including:

  • I feel as though my project satisfies the criteria of complex interactivity better now that I have done some proper research and started a prototype of my physical build
  • I’ve never been gifted when it comes to making things look good, I feel as though I’ll struggle further with this when including complex visual elements
  • I found the criteria of the complex interactivity more interesting (Compared to visual complexity) now that I understand more about each point
  • I’m more interested in learning how to I can use scripting to instantiate such interactivity. It’s also more practical for me as a software major.

Anyhow, these reasons aside. I present my early prototype. (I Recommend using the popout player to read the text better)

As you can see it’s a bit rough around the edges and it’s textures are most certainly not final.

At this stage I have my playlist changing functionality working, one of the biggest challenges I was to face. I also have the notecard dispenser/scanner working, which contains instructions how to use my jukebox.

I’m going to implement these functionalities into a context menu eventually to meet some of my new criteria

 

 

Initial research into my projects functionality

I’ve been doing some investigation into how I’m going to handle my media playing capabilities of my jukebox.

Initially I tried accomplishing this the most straight forward way using media on a prim to play youtube playlists. However, I found that when i used the portion of the embed URL supplied on youtube videos I found that after the first track had played the remainder of the playlist would not queue up. I spent quite a few hours trying to find a solution to this. Possible solutions I found included examples of quite extensive LSL scripting to play local audio files and other scripts which changed the url of the MOAP when touched. (Not as one track ends in the playlist like fashion  that im going for)

Other solutions I found searching online included other peoples works as media players. As most of these are monetized pieces of work I figured that including them in my project could breach copyright. And chances are these items are protected anyway if being sold.

One big issue i was facing was the lack of up to date documentation and deciding whether the information I was looking at was still relevant. Many included the use of decrepit technologies in their solutions such as the use of the adobe shock-wave player.

Eventually, I remembered i had actually encountered an issue with the generated embeded playlist youtube links a while back when trying to include one in a website project I had been working on at the time. Remembering this, I turned my attention to the YouTube API documentation.

Through using this method

loading a playlist.JPG instead of using the embed url generated on a youtube playlist video eg.  https://www.youtube.com/embed/Q970a0Qid0Y?list=PLq7JnVtvfZsXizd3OIL02JKkwJ_jmNKbW (Notice this URL doesnt actually specify it’s a playlist like the one above)

I was able to achieve my desired functionality

playlist is a go.jpg

Playlist on all set to go

Although youtube has onscreen controls, I think it will be important to include keyboard controls for users. I might create a script which drops a notecard into the player’s inventory upon touch which educates them about the basic keyboard controls.

SHIFT – P : Previous track

SHIFT – N: Next track.

Up Arrow: Volume up

Down arrow: Volume down

Space/K: Pause track.

Fast foward: right arrow

Rewind: left arrow.

It should also be noted that since this is a MOAP, if they have the prim selected. These keyboard controls WILL effect the player. It should also be noted that videos which have certain copyright restrictions will not play in the embedded player.

I figured the player looked a bit dull so I applied some glow to it, to make it better represent the luminosity of an actual screen

glow.jpg

Much better, Admittedly the glow does make things a little fuzzy around the edges but due to the old-school style of jukebox im going for i feel as though this will actually add to the aesthetic.

 

 

Main script functionality

 

I will be using the following functions in my build:

As far as having players selecting the playlist I play on using the lltextbox function to allow players to enter youtube urls

lllisten to listen to lltextboxs output (Player input) to set a URL as a variable

and llsetmediaparams to get the desired URL on the jukebox players face.

llsettexture to change dancefloor textures dynamically.

llsensor to implement llgive inventory – putting instruction note cards in players inventory.

This should cover the main functionality of my jukebox. I’ll try implement this scripting and cover it in my next blog.

 

MUVE BUILD – Content Creations

Conceptualizing my content creation idea

I’ve noticed quite the party culture in second life, with the virtual world being littered with dance clubs, music, music events etc.

I figured, wouldn’t it be cool if there was an object which could turn any area (with rez permissions) into a instant party.

My idea for content creation in second life is to create an object which spawns a dance floor environment upon interaction.

When considering on what to use for this object, I eventually decided on a jukebox because of how it fits the party theme and it’s visually more interesting than other pieces of audio equipment like a radio or boombox.

Im going to be focusing on primarily the visual  complexity of the jukebox, using textures, colours and lights to paint the party atmosphere and many prims to depict a highly detailed jukebox

Im looking to give the jukebox the following core functionality.

  • Dance floor textures appearing upon user interaction.
  • The ability to use youtube to select music to play
  • Dance floor esque lighting.

Optional functionality might include

  • Animating other player characters.
  • Some basic control over lighting/particles
  • Tip collection
  • Basic furniture etc.

 

Considerations

I feel like this project will challenge me a good amount as I haven’t had much experience in LSL scripting asides from Isa’s classes and just playing around with my peers. I have experience in other forms of scripting/programming so whilst this might initially seem quite the challenge to me i feel confident in my ability to see this project through.

Im particularly interested in learning about how I can manipulate lighting/particle systems and how I can use textures to paint a convincing environment.

For reference

As a reference, Im going to use the generic look depicted by jukeboxes from the 50s/60s eras. I particularly like the use of the bright colours and tubes. As i’m not gifted in the ways of digital art I will be using other peoples existing textures to style my object.

 

jukebox

 

50's jukebox

 

Timeline

It’s hard to approximate how long each task is going to take as the plan at this stage is more of a conceptualization/outline. Due to this, because the necessary analysis hasn’t been done I cannot feel confident In providing an accurate depiction of a timeline for this project.

The timeline below is an approximation of how I see my time on this project being utilized.

  • Week 1 (Current week)
    • Initial research done into scripting, MOAP, etc,.
  • Week 2
    • at the end of this week all required research should be complete.
    • Early prototyping/testing of core jukebox features.
  • Week 3
    • Begin modelling jukebox and assets
    • Add core functionalities to jukebox prototype.
  • Week 4
    • Add secondary functionalities (only if time allows)
    • Further modelling of jukebox
  • Week 5
    • Polish and testing.

Depicted below..

project timeline.PNG

MUVE Communities Post 4 – Protecting Intellectual Property

 

Permissions system and Intellectual Property protection

I actually touched upon this in my previous blog posts about permissions which you can find here.

Because the permissions system exists, an owner of an object is able to have some basic protection over their creation. They can essentially restrict all outside access to their object, have it open to the public or anywhere in between.

I feel as though as a general strategy it’s best to have access to created objects as restricted as possible to general users, this way they aren’t able to take your intellectual property, profit from it or modify your work. It’s best to take a white-list approach where individual users or groups of users have their permissions elevated on a as-needed basis.

This strategy might not always be suitable however and there maybe times where general users or groups might find themselves with elevated permissions when it comes to freebies and such.

The beauty of the permission system is that it can be used as extensively or as minimally as the objects owner desires. Allowing them to tailor the protection of their object from other second life memberswhitelist.png

Copy bot

Copy bot is a primitive second life client  debugging tool which is used for second life and allows users to export objects Into an XML document for later importation.

Copy bot is unable to copy the scripts which might be accompanied with objects, because of this any scripted behavior belonging to the object is not duplicated – creating a static representation of an object rather than the object in it’s dynamic state.

Initially intended for backup/recovery and other development related purposes. CopyBot was a subject of heavy contreversy back when it was introduced because it made copying other players pieces of work a very simple task, resulting in merchants losing out and objects becoming de-valued. Later revisions attempted to resolve the issue of copying owned objects by respecting Second-Life permissions rather than outright ignoring them. However due to the release of CopyBot’s source code, malicious forks built with the intention of stealing exist.

One other legitimate use of CopyBots export/import functionality is that it allows objects to be added to and taken from other virtual environments such as OpenSim. Especially useful for creators who use both platforms and prefer building on one platform and exporting to another.

Not only this but using CopyBot to backup your creations means that even if Second-Life servers were to eventually shut down, your original creations would not be lost with it. This could potentially save MUVE content creators a great amount of time not having to re-create their original works.

 

copy bot

It’s a love hate relationship 

 

MUVE Communities Post 3 – Permissions on objects

Permissions

Within second-life there exists a permission system which controls who’s able to access or interact with an object within the virtual environment. This is in place to restrict other players from using something which is owned by somebody without prior permission. This avoids potential grievance and some basic protection over intellectual property. My personal analogy I use for permissions is that permissions are essentially key’s required to unlock different doors, the doors each representing their own style of access eg. Copy, transfer. Without the necessary key, access to these styles would be denied.

key

 

 

Second life permissions

Permissions in second life are divided into four main user categories

  • Owner – The owner of the object
  • Group – Certain groups might have access to an object
  • Everyone else – Everyone not covered by the other categories, the general second life population
  • Next owner – The next player to own the object

There are also four main permission settings, which either allow or disallow a certain kind of access, these include:

  • Modify – Whether the player is able to delete an object or modify it using Second Life’s in-world building tools.
  • Copy – Determines  player is allowed to make an exact copy of the object
  • Transfer – Controls if the object can be transferred to other players, this includes selling the object, giving it away or even releasing it for sale.
  • Move – Whether the object is able to be moved or not

Using these groups and permissions, the owner of the object is able to control how their object is distributed and interacted with.

 

Usage examples

A few usage examples to put things into context

Copy – You want user/s to be able take copies of objects, eg. A freebie which players are able to take copies from

Modify – You want user/s to be able to modify an existing object. Could be useful when working in collaboration with another player to build something

Move – You want the object to be able to be moved by user/s. An example could be a vehicle which players drive or a beach ball players  can kick around.

Transfer – You want to disallow the transfer of user/s. Preventing them from sharing and selling your property.

MUVE Communities Post 2 – Second Life Community Standards

Second Life Community Standards

There is a group of six standards which define essentially what is not okay within second life. If a a member were to breach these standards a number of times they might find themselves suspended or worse, banned from the second life community

These standards include:

Intolerance: 

Second life is intolerant of derogatory or demeaning behaviour towards other members or groups within second life. This includes racism, sexism, etc,.

Harassment: 

Second life does not allow behaviour which could be perceived as harassment. This behaviour can be offensive, threatening, sexual or otherwise

Assault: 

Physically moving, shooting, hitting, etc. a player in a safe area is considered to be ‘Assault’ in second life and is not allowed.

Disclosure: 

Holding a reasonable level of privacy for citizens of second life. In regards to both their in-world character and real life existence. You cannot disclose sensitive information about another without prior consent.

Adult Regions, Groups and listings

“Adult” Content (Nudity, sexual or otherwise) Is not permitted on the second life mainland and other non-adult areas.

Disturbing the peace: 

“Every Resident has a right to live their Second Life” Disruption of the peace and being a general annoyance is disallowed within second life

More specific information about these standards can be found  here

Why do these standards exist?

I believe the intention of these rules existing is to provide a set of rules for the community to adhere by which discourages negative social interaction and protects the rights of players as though human rights applied to the players second life.

Guidelines and rules also help form shared meaning within communities to attempt resolve anything which might conflict the rules, creating a ‘self-policing’ type situation where players will respond accordingly to ill-recieved behaviour.

Without such rules in place, an community as open as Second Life could become a place of anarchy, a place filled with griefers and trolls or at the very least an unpleasant place for it’s legitimate residents within.

How I avoid violating these rules

Avoiding violating these rules is simple for me. Whilst on second life I generally remain civilized and respectful towards other players, just as I would to other people in real life.

I don’t feel compelled in acting like obnoxious around others in real life (Sober anyway), nor do I feel that way when interacting with others online(Note to self: Dont drink and second life)

And if I found someone violating the rules…

If I were to find someone violating the Second Life Community standards I would initially approach them in a sensible manner to try talk about what they are doing and why it’s wrong. If this approach were to fail I might try get others (Perhaps community leaders) To try talk to the individual in wrong. If this approach did not work I’d have no option but to file an abuse report. This involves directly reporting another player character and providing details of their offence which may include a screenshot, location and description of what happened. These reports are then moderated by a team at Linden Labs. Often, players are given opportunities to try change their ways.Sometimes in the case of repeat offenders bans are given out: Either temporary or permanent.

All bans are subject to severity of violation and frequency of offences.

I feel as though a system which allows reporting of another player is crucial in a platform as open as second life where it can be hard to moderate all players. Without such a system, griefers would be a major issue.

MUVE Communities Post 1 – NCI

 

NCI – New Citizens incorporated

Today I will be covering none of the more active groups I have come across during my time: NCI or ‘New Citezens Incorporated’.

A the name suggests, the primary focus of NCI is to help the new players of second life. The group screenshot below describes NCI as a non-profit organization dedicated to providing new players of second life with information, education and assistance.

Including…

NCI join

Social Activities

NCI dancing

Breaking down with the good folk of NCI. Dancing is particularly enjoyed in the main landing area of the sim

Educational Classes and events

NCI schedule board

Quite the busy schedule. This community likes to keep busy

Other activities

cant beat tetris

Other activities can offer a sense of competition and inclusion within the community.

And best of all… free stuff

freebies

The best price is free

Although Non-Profit, NCI accept donations to help sustain the project ,of which consists of over 100 volunteers and over 10,000 active members  . I felt compelled to contribute what little coin I had to help the cause

supporting the cause

NCI rules

Similar to other communities which share a common group of rules and guidelines they follow, NCI isn’t without it’s rules either as demonstrated by the board in the landing area

standards.JPG

Included on the NCI wiki is more detailed rules, policies and standards found here 

My thoughts

All things provided NCI is extremely helpful to those who new to second life, I can understand why this group is quite sizable. During my time within the NCI community I felt extremely welcome. My questions were promptly answered by members, even if they would have seemed rather stupid to those not completely new to the platform.

I believe it’s important for any platform which exists within a sandbox environment to have some sort of introductory feature or tutorial so those using it aren’t limited by a steep learning curve. I feel as though this community provides a good answer to this learning curve issue. My time within NCI has been extremely helpful in my second life journey and I’m sure it’s been as equally helpful to many others too.