User blog:Mrs.red bird/About Network Streaming

Introduction
Hello fellow streamers! Due to serveral conflicts of all kinds, I would like to make a tutorial about Network Streaming.

But first here is an asked question by user Polyhex (aka Tyler) via twitter:

"I wish streaming was more versatile and customizable... I could really use it for my next game."

Answer: "You should really learn how to Network Stream."

Fear not! That's why I created this tutorial!

The Basics
First of all, you need to place a property via the Workspace "StreamingEnabled" tool. (The check box must be filled!) If your game has a little more of severe scripts, it's a good idea to enable outlining if you want streaming to work!

Scripting for Streaming and Strategies as Well
Currently, the following scripts:
 * Use WaitForChild and check whether properties with objects as values are nil before using them
 * Local scripts should only connect to these events (any event not listed explicitly here is not guaranteed to work if you use streaming):
 * Mouse events:
 * Button1Down
 * Button1Up
 * Button2Down
 * Button2Up
 * Idle
 * KeyDown
 * KeyUp
 * Move
 * WheelBackward
 * WheelForward
 * ScreenGui, TextButton and events related to user interfaces, like button presses
 * BasePart.Touched and BasePart.TouchEnded
 * Not guaranteed, but likely to fire
 * If the other part of the event has not been sent to the client, this event may not fire
 * If the part you connected to is streamed out, your listener will be disconnected
 * Tool events:
 * Equip
 * Unequip
 * Activate
 * Value objects not including ObjectValue (IntValue,StringValue, etc):
 * Changed
 * To be explicit, ObjectValues will not work in local scripts
 * Be aware that physical queries (e.g. FindPartOnRay, FindPartsInRegion3, etc.) will only return parts that are currently loaded in the client. Write your script to tolerate “incomplete” results. These queries are strongly discouraged for use in local scripts because of this.
 * As a guideline, if a client can see a part, then that part is currently streamed to that player. To be on the safe side, if a player can’t see the part, assume that it has not been streamed to them.

What Can We Do to Improve?
Because Network streaming is a little bit tricky, several improvements include:
 * Studio notifications and builder utilities
 * Notification if WaitForChild takes a long time without finishing
 * Notification if we disconnect a signal due to streaming out
 * Exception on connecting to a non-approved signal from local script (see the restrictions)
 * Exception when using ObjectValue from a local script
 * Better debugging tools (studio plug-in)
 * Part is streamed out while a script holds a reference to it
 * If you hold a reference to both parent and child, the child’s Parent field will not be set to nil and the child will be accessible from the Parent
 * You will correctly send and receive property updates for the Instance if it is streamed out
 * Events will stay connected even if the area around the instance is Streamed Out

To Wrap Things Up
To conclude, Network streaming is simple if you read this tutorial created here. So what else can you try! I even reccomend using the offical ROBLOX wiki! http://wiki.roblox.com/index.php/Network_streaming

Stream on! -Fyoradollsrule (Mrs.red bird)