Search Unity

[RELEASED] MultiLan : multiplayer network kit - V3 now available

Discussion in 'Assets and Asset Store' started by VirtuElle, Jul 13, 2013.

  1. vjanomolee

    vjanomolee

    Joined:
    Dec 10, 2013
    Posts:
    7
    Any plans for adding Mac support to this package? Seems odd that you can't have that functionality on a mac. Networking should be universal
     
  2. Vaupell

    Vaupell

    Joined:
    Dec 2, 2013
    Posts:
    302
    Page one in the description it says - - Compatible with build for "PC,Mac,Linux Standalone"
     
  3. VirtuElle

    VirtuElle

    Joined:
    Jan 27, 2013
    Posts:
    458
    Hi,

    The list of network games is not compatible with Mac since it need a Windows' DLL. But the order menu (Join game from IP) is compatible with Mac.
    Else, MultiOnline is fully compatible with Mac.
     
  4. VirtuElle

    VirtuElle

    Joined:
    Jan 27, 2013
    Posts:
    458
    "PC,Mac,Linux Standalone" is the name of the build on Untiy Editor: MutliLan supports this build, but the list of network games is compatible only with Windows computer (for the reason I explained just before).
     
  5. crezzur

    crezzur

    Joined:
    Feb 5, 2014
    Posts:
    2
    Hey,

    Your multi online already has scenes build in , now i want to try to integrate the multi online with my existing script
    But for some reason i cant get it done . when a second player trys to join nothing happens, when pressing join again it says connection lost.

    My current project scripts are the following:
    GameSettings:
    Code (csharp):
    1. using UnityEngine;
    2. using System.Collections;
    3. using System;
    4.  
    5. public static class GameSetting2 {
    6.     public const string VERSION_KEY_NAME = "ver";
    7.     public const float VERSION_NUMBER = 0.250f;
    8.    
    9.     //base values for different attacks
    10.     public const float BASE_MELEE_ATTACK_TIMER = 2.0f;
    11.     public const float BASE_MELEE_ATTACK_SPEED = 2.0f;
    12.     public const float BASE_MELEE_RANGE = 3.5f;
    13.  
    14.     public const float BASE_RANGED_RANGE = 10f;
    15.  
    16.     public const float BASE_MAGIC_RANGE = 7.5f;
    17.  
    18.     #region PlayerPrefs Constants
    19.     private const string PLAYER_POSITION = "Player Position";
    20.     private const string CHARACTER_MODEL_INDEX = "Model Index";
    21.     private const string PLAYER_HEAD_INDEX = "Head Index";
    22.     private const string SKIN_COLOR = "Skin Color";
    23.     private const string HAIR_COLOR = "Hair Color";
    24.     private const string HAIR_MESH = "Hair Mesh";
    25.     private const string NAME = "Player Name";
    26.     private const string BASE_VALUE = " - BASE VALUE";
    27.     private const string EXP_TO_LEVEL = " - EXP TO LEVEL";
    28.     private const string CUR_VALUE = " - Cur Value";
    29.     private const string CHARACTER_WIDTH = "Character Width";
    30.     private const string CHARACTER_HEIGHT = "Character Height";
    31.     #endregion
    32.    
    33.     #region Resource Paths
    34.     public const string MALE_MODEL_PATH = "Character/Model/Prefab/Human/Male/";
    35.     public const string FEMALE_MODEL_PATH = "Character/Meshes/Female/";
    36.  
    37.     public const string HEAD_TEXTURE_PATH = "Character/Faces/Human/Male/Textures/";
    38.    
    39.     public const string MELEE_WEAPON_ICON_PATH = "Item/Icon/Weapon/Melee/";
    40.     public const string MELEE_WEAPON_MESH_PATH = "Item/Mesh/Weapon/Melee/";
    41.  
    42.     public const string SHIELD_ICON_PATH = "Item/Icon/Armor/Shields/";
    43.     public const string SHIELD_MESH_PATH = "Item/Mesh/Armor/Shields/";
    44.  
    45.     public const string HAT_ICON_PATH = "Item/Icon/Armor/Heads/";
    46.     public const string HAT_MESH_PATH = "Item/Mesh/Armor/Heads/";
    47.  
    48.     public const string HUMAN_MALE_HAIR_MESH_PATH = "Character/Hair/Human/Male/Prefab/";
    49.     public const string HUMAN_MALE_HAIR_COLOR_PATH = "Character/Hair/Human/Male/Texture/";
    50.        
    51.     #endregion
    52.    
    53.     public static Vector3 startingPos = new Vector3( 522, 56, 1114 );
    54.    
    55.     public static string[] maleModels = { "fat", "muscular" };
    56.  
    57. //  public static PlayerCharacter pc;
    58.  
    59.     //index 0 = mainmenu
    60.     //index 1 = character creation screen
    61.     //index 2 = character customization screen
    62.     //index 3 = tutorial level
    63.     public static string[] levelNames = {
    64.         "Main Menu",
    65.         "Character Generation",
    66.         "Character Customization",
    67.         "Tutorial"
    68.     };
    69.    
    70.     /// <summary>
    71.     /// Default Constructor
    72.     /// </summary>
    73.     static GameSetting2() {
    74.     }
    75.    
    76.     public static void SaveCharacterWidth( float width ) {
    77.         PlayerPrefs.SetFloat( CHARACTER_WIDTH , width );
    78.     }
    79.    
    80.     public static void SaveCharacterHeight( float height ) {
    81.         PlayerPrefs.SetFloat( CHARACTER_HEIGHT , height );
    82.     }
    83.    
    84.     public static void SaveCharacterScale( float width, float height ) {
    85.         SaveCharacterWidth( width );
    86.         SaveCharacterHeight( height );
    87.     }
    88.    
    89.     public static float LoadCharacterWidth() {
    90.         return PlayerPrefs.GetFloat( CHARACTER_WIDTH, 1 );
    91.     }
    92.  
    93.     public static float LoadCharacterHeight() {
    94.         return PlayerPrefs.GetFloat( CHARACTER_HEIGHT, 1 );
    95.     }
    96.    
    97.     public static Vector2 LoadCharacterScale() {
    98.         return new Vector2( PlayerPrefs.GetFloat( CHARACTER_WIDTH, 1 ), PlayerPrefs.GetFloat( CHARACTER_HEIGHT, 1 ) );
    99.     }
    100.  
    101.    
    102.     public static void SavePlayerPosition( Vector3 pos ) {
    103.         PlayerPrefs.SetFloat( PLAYER_POSITION + "x", pos.x );
    104.         PlayerPrefs.SetFloat( PLAYER_POSITION + "y", pos.y );
    105.         PlayerPrefs.SetFloat( PLAYER_POSITION + "z", pos.z );
    106.     }
    107.  
    108.     public static Vector3 LoadPlayerPosition() {
    109.         Vector3 temp = new Vector3(
    110.                                    PlayerPrefs.GetFloat( PLAYER_POSITION + "x", startingPos.x ),
    111.                                    PlayerPrefs.GetFloat( PLAYER_POSITION + "y", startingPos.y ),
    112.                                    PlayerPrefs.GetFloat( PLAYER_POSITION + "z", startingPos.z )
    113.                                    );
    114.         return temp;
    115.     }
    116.  
    117.  
    118.     public static void SaveHeadIndex( int index ) {
    119.         PlayerPrefs.SetInt( PLAYER_HEAD_INDEX, index );
    120.     }
    121.  
    122.     public static int LoadHeadIndex() {
    123.         return PlayerPrefs.GetInt( PLAYER_HEAD_INDEX, 1 );
    124.     }
    125.  
    126.     public static void SaveCharacterModelIndex( int index ) {
    127.         PlayerPrefs.SetInt( CHARACTER_MODEL_INDEX, index );
    128.     }
    129.  
    130.     public static int LoadCharacterModelIndex() {
    131.         return PlayerPrefs.GetInt( CHARACTER_MODEL_INDEX, 1 );
    132.     }
    133.  
    134.     public static void SaveSkinColor( int index ) {
    135.         PlayerPrefs.SetInt( SKIN_COLOR , index );
    136.     }
    137.  
    138.     public static int LoadSkinColor() {
    139.         return PlayerPrefs.GetInt( SKIN_COLOR, 1 );
    140.     }
    141.  
    142.    
    143.     /// <summary>
    144.     /// Store the index of the hair color as an int
    145.     /// </summary>
    146.     /// <param name="index">
    147.     /// A <see cref="System.Int32"/>
    148.     /// </param>
    149.     public static void SaveHairColor( int index ) {
    150.         PlayerPrefs.SetInt( HAIR_COLOR , index );
    151.     }
    152.    
    153.  
    154.     /// <summary>
    155.     /// Load the players selected index for the hair color they have selected
    156.     /// </summary>
    157.     /// <returns>
    158.     /// A <see cref="System.Int32"/>
    159.     /// </returns>
    160.     public static int LoadHairColor() {
    161.         return PlayerPrefs.GetInt( HAIR_COLOR, 0 );
    162.     }
    163.    
    164.    
    165.     /// <summary>
    166.     /// Save the selected index for the hair mesh as an int
    167.     /// </summary>
    168.     /// <param name="index">
    169.     /// A <see cref="System.Int32"/>
    170.     /// </param>
    171.     public static void SaveHairMesh( int index ) {
    172.         PlayerPrefs.SetInt( HAIR_MESH , index );
    173. //      Debug.Log( HAIR_MESH + " : " + index  );
    174.     }
    175.    
    176.  
    177.     /// <summary>
    178.     /// Load both the hair color and the hair mesh the player as selected, both as an int
    179.     /// </summary>
    180.     /// <param name="index">
    181.     /// A <see cref="System.Int32"/>
    182.     /// </param>
    183.     /// <returns>
    184.     /// A <see cref="System.Int32"/>
    185.     /// </returns>
    186.     public static int LoadHairMesh() {
    187.         return PlayerPrefs.GetInt( HAIR_MESH, 0 );
    188.     }
    189.    
    190.    
    191.     /// <summary>
    192.     /// Save both the hair color and the hair mesh the player as selected from the playerprefs
    193.     /// </summary>
    194.     /// <param name="mesh">
    195.     /// A <see cref="System.Int32"/>
    196.     /// </param>
    197.     /// <param name="color">
    198.     /// A <see cref="System.Int32"/>
    199.     /// </param>
    200.     public static void SaveHair( int mesh, int color ) {
    201.         SaveHairColor( color );
    202.         SaveHairMesh( mesh );
    203.     }
    204.    
    205.  
    206.     public static void SaveName( string name ) {
    207.         PlayerPrefs.SetString( NAME, name);
    208.     }
    209.    
    210.  
    211.     public static string LoadName() {
    212.         return PlayerPrefs.GetString(NAME, "Anon");
    213.     }
    214.    
    215.  
    216.     public static void SaveAttribute( AttributeName name, Attribute attribute ) {
    217.         PlayerPrefs.SetInt(((AttributeName)name).ToString() + BASE_VALUE, attribute.BaseValue );
    218.         PlayerPrefs.SetInt(((AttributeName)name).ToString() + EXP_TO_LEVEL, attribute.ExpToLevel );
    219.     }
    220.    
    221.  
    222.     public static void LoadAttribute( AttributeName name ) {
    223.         PC.Instance.GetPrimaryAttribute( (int)name ).BaseValue  = PlayerPrefs.GetInt(((AttributeName)name).ToString() + BASE_VALUE, 0);
    224.         PC.Instance.GetPrimaryAttribute( (int)name ).ExpToLevel = PlayerPrefs.GetInt(((AttributeName)name).ToString() + EXP_TO_LEVEL, Attribute.STARTING_EXP_COST);
    225.     }
    226.    
    227.  
    228.     public static void SaveAttributes( Attribute[] attribute ) {
    229.         for( int cnt = 0; cnt < attribute.Length; cnt++ )
    230.             SaveAttribute( (AttributeName)cnt, attribute[cnt] );
    231.     }
    232.    
    233.  
    234.     public static void LoadAttributes() {
    235.         for(int cnt = 0; cnt < Enum.GetValues(typeof(AttributeName)).Length; cnt++)
    236.             LoadAttribute( (AttributeName)cnt );
    237.     }
    238.  
    239.  
    240.     public static void SaveVital( VitalName name, Vital vital ) {
    241.         PlayerPrefs.SetInt(((VitalName)name).ToString() + BASE_VALUE, vital.BaseValue);
    242.         PlayerPrefs.SetInt(((VitalName)name).ToString() + EXP_TO_LEVEL, vital.ExpToLevel);
    243.         PlayerPrefs.SetInt(((VitalName)name).ToString() + CUR_VALUE, vital.CurValue);
    244.     }
    245.    
    246.  
    247.     public static void LoadVital( VitalName name ) {
    248.         PC.Instance.GetVital( (int)name ).BaseValue = PlayerPrefs.GetInt(((VitalName)name).ToString() + BASE_VALUE, 0);
    249.         PC.Instance.GetVital( (int)name ).ExpToLevel = PlayerPrefs.GetInt(((VitalName)name).ToString() + EXP_TO_LEVEL, 0);
    250.        
    251.         //make sure you call this so that the AjustedBaseValue will be updated before you try to call to get the curValue
    252.         PC.Instance.GetVital( (int)name ).Update();
    253.  
    254.         //get the stored value for the curValue for each vital
    255.         PC.Instance.GetVital( (int)name ).CurValue = PlayerPrefs.GetInt(((VitalName)name).ToString() + CUR_VALUE, 1);
    256.     }
    257.    
    258.  
    259.     public static void SaveVitals( Vital[] vital ) {
    260.         for( int cnt = 0; cnt < vital.Length; cnt++ )
    261.             SaveVital( (VitalName)cnt, vital[cnt] );
    262.     }
    263.    
    264.  
    265.     public static void LoadVitals() {
    266.         for(int cnt = 0; cnt < Enum.GetValues(typeof(VitalName)).Length; cnt++)
    267.             LoadVital( (VitalName)cnt );
    268.     }
    269.    
    270.  
    271.     public static void SaveSkill( SkillName name, Skill skill ) {
    272.         PlayerPrefs.SetInt(((SkillName)name).ToString() + BASE_VALUE, skill.BaseValue);
    273.         PlayerPrefs.SetInt(((SkillName)name).ToString() + EXP_TO_LEVEL, skill.ExpToLevel);
    274.     }
    275.    
    276.  
    277.     public static void LoadSkill( SkillName name ) {
    278.         PC.Instance.GetSkill( (int)name ).BaseValue = PlayerPrefs.GetInt(((SkillName)name).ToString() + BASE_VALUE, 0);
    279.         PC.Instance.GetSkill( (int)name ).ExpToLevel = PlayerPrefs.GetInt(((SkillName)name).ToString() + EXP_TO_LEVEL, 0);
    280.         PC.Instance.GetSkill( (int)name ).Update();
    281.     }
    282.    
    283.  
    284.     public static void SaveSkills( Skill[] skill ) {
    285.         for( int cnt = 0; cnt < skill.Length; cnt++ )
    286.             SaveSkill( (SkillName)cnt, skill[cnt] );
    287.     }
    288.    
    289.  
    290.     public static void LoadSkills() {
    291.         for(int cnt = 0; cnt < Enum.GetValues(typeof(SkillName)).Length; cnt++)
    292.             LoadSkill( (SkillName)cnt );
    293.     }
    294.    
    295.     public static void SaveGameVersion() {
    296.         PlayerPrefs.SetFloat( VERSION_KEY_NAME, VERSION_NUMBER);
    297.     }
    298.    
    299.     public static float LoadGameVersion() {
    300.         return PlayerPrefs.GetFloat( VERSION_KEY_NAME, 0);
    301.     }
    302. }
    303.  
    304. public enum CharacterMaterialIndex {
    305.     Feet = 0,
    306.     Pants = 1,
    307.     Torso = 2,
    308.     Hands = 3,
    309.     Face = 4
    310. }
    and PC:
    Code (csharp):
    1. using UnityEngine;
    2. using System.Collections;
    3. using System.Collections.Generic;
    4.  
    5. [AddComponentMenu("Hack And Slash Tutorial/Player/PC Stats")]
    6. public class PC : BaseCharacter {
    7.     private List<Item> inventory = new List<Item>();
    8.     public List<Item> Inventory {
    9.         get { return inventory; }
    10.         set { inventory = value; }
    11.     }
    12.  
    13.     public bool initialized = false;
    14.  
    15.     private static PC instance = null;
    16.     public static PC Instance {
    17.         get {
    18.             if ( instance == null ) {
    19. //              Debug.Log( "***PC - Instance***" );
    20.                 GameObject go = Instantiate( Resources.Load(
    21.                                              GameSetting2.MALE_MODEL_PATH + GameSetting2.maleModels[ GameSetting2.LoadCharacterModelIndex() ] ),
    22.                                              GameSetting2.LoadPlayerPosition(),
    23.                                              Quaternion.identity ) as GameObject;
    24.                
    25.                 PC temp = go.GetComponent<PC>();
    26.                
    27.                 if( temp == null )
    28.                     Debug.LogError( "Player Prefab does not contain an PC script. Please add and configure." );
    29.                
    30.                 instance = go.GetComponent<PC>();
    31.                
    32.                 go.name = "PC";
    33.                 go.tag = "Player";
    34.             }
    35.            
    36.             return instance;
    37.         }
    38.     }
    39.    
    40.     public void Initialize() {
    41. //      Debug.Log( "***PC - Initialize***" );
    42.         if( !initialized )
    43.             LoadCharacter();
    44.     }
    45.    
    46.     #region Unity functions
    47.     public new void Awake() {
    48. //      Debug.Log( "***PC - Awake***" );
    49.  
    50.         base.Awake();
    51.  
    52.         instance = this;
    53.     }
    54.    
    55. //  public override void Awake() {
    56. //      base.Awake();
    57. //     
    58. //      /**************************
    59. //      Check out tutorial #140 and #141 to see how we got this weaponMount
    60. //      **************************/
    61. //      Transform weaponMount = transform.Find("base/spine/spine_up/right_arm/right_foret_arm/right_hand/weaponSlot");
    62. //     
    63. //      if(weaponMount == null) {
    64. //          Debug.LogWarning("We could not find the weapon mount");
    65. //          return;
    66. //      }
    67. //     
    68. //      int count = weaponMount.GetChildCount();
    69. //     
    70. //      _weaponMesh = new GameObject[count];
    71. //     
    72. //      for(int cnt = 0; cnt < count; cnt++) {
    73. //          _weaponMesh[cnt] = weaponMount.GetChild(cnt).gameObject;
    74. //      }
    75. //
    76. //      HideWeaponMeshes();
    77. //  }
    78. // 
    79.     //we do not want to be sending messages out each frame. We will be moving this out when we get back in to combat
    80.     void Update() {
    81.         Messenger<int, int>.Broadcast("player health update", 80, 100, MessengerMode.DONT_REQUIRE_LISTENER);
    82.     }
    83.     #endregion
    84.  
    85.  
    86.    
    87.  
    88.     public Item EquipedShield {
    89.         get { return _equipment[(int)EquipmentSlot.OffHand]; }
    90.         set {
    91.             _equipment[(int)EquipmentSlot.OffHand] = value;
    92.            
    93.             if( offHandMount.transform.childCount > 0 )
    94.                 Destroy( offHandMount.transform.GetChild( 0 ).gameObject );
    95.                      
    96.             if( _equipment[(int)EquipmentSlot.OffHand] != null) {
    97.                 GameObject mesh = Instantiate( Resources.Load( GameSetting2.SHIELD_MESH_PATH + _equipment[(int)EquipmentSlot.OffHand].Name ), offHandMount.transform.position, offHandMount.transform.rotation ) as GameObject;
    98.                 mesh.transform.parent = offHandMount.transform;
    99.             }
    100.         }
    101.     }
    102.    
    103.     public Item EquipedHeadGear {
    104.         get { return _equipment[(int)EquipmentSlot.Head]; }
    105.         set {
    106.             _equipment[(int)EquipmentSlot.Head] = value;
    107.            
    108.             if( helmetMount.transform.childCount > 0 )
    109.                 Destroy( helmetMount.transform.GetChild( 0 ).gameObject );
    110.                      
    111.             if( _equipment[(int)EquipmentSlot.Head] != null) {
    112.                 GameObject mesh = Instantiate( Resources.Load( GameSetting2.HAT_MESH_PATH + _equipment[(int)EquipmentSlot.Head].Name ), helmetMount.transform.position, helmetMount.transform.rotation ) as GameObject;
    113.                 mesh.transform.parent = helmetMount.transform;
    114.                
    115.                 //scale
    116.                 mesh.transform.localScale = hairMount.transform.GetChild(0).localScale;
    117.                
    118.                 //hide player hair
    119.                 hairMount.transform.GetChild(0).gameObject.active = false;
    120.             }
    121.         }
    122.     }
    123.    
    124.     public void LoadCharacter() {
    125.         GameSetting2.LoadAttributes();
    126.         ClearModifiers();
    127.         GameSetting2.LoadVitals();
    128.         GameSetting2.LoadSkills();
    129.        
    130.         LoadHair();
    131.         LoadSkinColor();
    132.        
    133.         LoadScale();
    134.  
    135.         initialized = true;
    136.     }
    137.    
    138.     public void LoadScale() {
    139.         Vector2 scale = GameSetting2.LoadCharacterScale();
    140.        
    141.         transform.localScale = new Vector3(
    142.                                            transform.localScale.x * scale.x,
    143.                                            transform.localScale.y * scale.y,
    144.                                            transform.localScale.z * scale.x
    145.                                            );
    146.     }
    147.    
    148.     public void LoadHair() {
    149.         LoadHairMesh();
    150.         LoadHairColor();
    151.     }
    152.    
    153.     public void LoadSkinColor() {
    154.         characterMaterialMesh.renderer.materials[ (int)CharacterMaterialIndex.Face ].mainTexture = Resources.Load( GameSetting2.HEAD_TEXTURE_PATH + "head_" + GameSetting2.LoadHeadIndex() + "_" + GameSetting2.LoadSkinColor() + ".human") as Texture;
    155.     }
    156.  
    157.     public void LoadHairMesh() {
    158.         if( hairMount.transform.childCount > 0 )
    159.             Object.Destroy( hairMount.transform.GetChild(0).gameObject );
    160.  
    161.         GameObject hairStyle;
    162.        
    163.         int hairMeshIndex = GameSetting2.LoadHairMesh();
    164.  
    165.         int hairSet = hairMeshIndex / 5 + 1;
    166.         int hairIndex = hairMeshIndex % 5 + 1;
    167.        
    168.         hairStyle = Object.Instantiate( Resources.Load(
    169.                                                        GameSetting2.HUMAN_MALE_HAIR_MESH_PATH + "Hair" + " " + hairSet + "_" + hairIndex ),
    170.                                                        hairMount.transform.position,
    171.                                                        hairMount.transform.rotation
    172.                                                       ) as GameObject;
    173.  
    174.         hairStyle.transform.parent = PC.Instance.hairMount.transform;
    175.        
    176.         LoadHairColor();       
    177.  
    178.         MeshOffset mo = hairStyle.GetComponent<MeshOffset>();
    179.         if( mo == null )
    180.             return;
    181.        
    182.         hairStyle.transform.localPosition = mo.positionOffset;
    183.         hairStyle.transform.localRotation = Quaternion.Euler( mo.rotationOffset );
    184.         hairStyle.transform.localScale = mo.scaleOffset;
    185.     }
    186.    
    187.     public void LoadHairColor() {
    188.         Texture temp = Resources.Load( GameSetting2.HUMAN_MALE_HAIR_COLOR_PATH + ((HairColorNames)GameSetting2.LoadHairColor()).ToString()) as Texture;
    189.        
    190.         hairMount.transform.GetChild(0).renderer.material.mainTexture = temp;
    191.     }
    192.    
    193.     public void LoadHelmet() {
    194.     }
    195.  
    196.     public void LoadShoulderPads() {
    197.     }
    198.  
    199.     public void LoadTorsoArmor() {
    200.     }
    201.    
    202.     public void LoadGloves() {
    203.     }
    204.  
    205.     public void LoadLegArmor() {
    206.     }
    207.  
    208.     public void LoadBoots() {
    209.     }
    210.  
    211.     public void LoadBackItem() {
    212.     }
    213. }
    214.  
    any idea wich direction i have to look at ?
     
  6. VirtuElle

    VirtuElle

    Joined:
    Jan 27, 2013
    Posts:
    458
    Hi,
    First, do you have MultiOnline, MultiLan or the two assets ?
    Can the first player load the waitroom and the game map without problem ?
    Are you sure that you have well build the game ?
    If it says "Connection lost" it could mean that the player was well connected before that, and he just have a problem about the loading of the waitroom.
    Does the host see the second player in the waitroom when this one click on "join" the first time ?

    Did you try the asset alone (with the demo scene) and does it work correctly ?
     
  7. AlanPT

    AlanPT

    Joined:
    Jul 31, 2013
    Posts:
    32
    Hi VirtuElle,

    Thanks again for this and Multionline. I have a quick question. How do you temporarily disable the kit while doing in-unity testing,
     
  8. AlanPT

    AlanPT

    Joined:
    Jul 31, 2013
    Posts:
    32
    Sorry, I just solved the problem myself. All I had to do was disable the chat and the spawn points. Then enable them again when I need to build.
     
  9. VirtuElle

    VirtuElle

    Joined:
    Jan 27, 2013
    Posts:
    458
    No problem, I hope you'll enjoy the assets.
     
  10. Felipe-Brito

    Felipe-Brito

    Joined:
    May 23, 2013
    Posts:
    5
    Is it possible to activate the latency rate ?
    I would like to view in realtime the difference between the frames.

    Thanks
     
  11. VirtuElle

    VirtuElle

    Joined:
    Jan 27, 2013
    Posts:
    458
    Hi,
    There is nothing especially planned for that, but the button "Stats" in editor could maybe give you some informations about it
     
  12. ostrich160

    ostrich160

    Joined:
    Feb 28, 2012
    Posts:
    679
    Hi there, love this asset, it works really well! However, I've had two issues with it and cant work out what to do, hopefully I can find some help here. SHould be basic stuff.
    So first of all, the trail renderer doesnt show for other players on multiplayer. Its using a special trail renderer, this one I believe
    https://www.assetstore.unity3d.com/en/#!/content/16076

    But it shouldnt be too different. So yeh, it shows for the main player, but not others. Odd. So yeh, thats my first issue.

    My second it a little more complex, but still pretty basic. I have a script attached to each player which means if they hit the back part of another player (EnemyTriggerOne, Two, or three) it adds 100 points to the score, and shows that on a GUI text. So, it works, but the issue is, although each player has their own independent camera, the GUI label overlays on other players. So lets say I add 100 points, that will show up on my player AND another player in the exact same play with the players points behind it. Heres the script

    Really hope you get back to me ASAP

    Thanks
     
  13. VirtuElle

    VirtuElle

    Joined:
    Jan 27, 2013
    Posts:
    458
    Answered in MultiOnline Thread
     
  14. hdydd

    hdydd

    Joined:
    Jun 9, 2014
    Posts:
    1
    I called a few days before buying the game center
    I'm writing multionline had to buy
    like me and did not fit multilan
    I would like a refund, please
    Mail is hdy35@naver.com
    Name of the hdydd
     
  15. Protolith

    Protolith

    Joined:
    Jan 18, 2013
    Posts:
    16
    Hi VirtuElle,
    I just purchased Multilan, and I've gone through the Unity tutorial in the documentation. When I run two builds, it doesn't show the game I've created. I also tried putting in the private and public IP address directly, but it still doesn't find the game I've created. I tried disabling my virus protection, and I also tried setting up a port forward in my router with no luck. Any help you may have would be greatly appreciated. I've posted a video of the issue I'm having below..

    https://dl.dropboxusercontent.com/u/48925275/multilan/multilan_test_01.mp4

    Thanks
     
  16. VirtuElle

    VirtuElle

    Joined:
    Jan 27, 2013
    Posts:
    458
    Hi,
    Thanks for the video. Did you well checked th box "Run in background" when you built your game ? (click on "Player settings..." and the check the box "Run in background" on the inspector)
     
  17. Protolith

    Protolith

    Joined:
    Jan 18, 2013
    Posts:
    16
    Hello,
    Yes, "Run in background" was checked before I made a build. Any other ideas?
     
  18. VirtuElle

    VirtuElle

    Joined:
    Jan 27, 2013
    Posts:
    458
    Unfortunately, I don't really know what it could be. Try to build your game with "Development build" and "Script debugging", and use Unity editor play mode to host the game, maybe there will be some error messages which may help us to understand the problem.
     
  19. Protolith

    Protolith

    Joined:
    Jan 18, 2013
    Posts:
    16
    When I run a dev build, and script debug, I do get an error posted below..

    "The connection request to 192.168.1.7:25565 failed. Are you sure the server can be connected to?"

    Maybe I have something setup incorrectly in my network settings that is blocking a connection?
     
  20. VirtuElle

    VirtuElle

    Joined:
    Jan 27, 2013
    Posts:
    458
    That's really strange, it's as if your host was not recognized.
    When you try the script on just on computer, you don't have to open the port on your router, or something like that, but you can have a message of your firewall which ask if you allow others users to connect to your computer.
    Did you have a message like this one ?
    Maybe try with an other port (while you test on your computer, you can put any port, there is no port forwarding to do).
    The other thing I don't understand it that the message "....Search network game..." remains blocked all the time, whereas if no game is found, you must have an other message ("Non game was found"), and you never have this message ?
     
  21. CptObviousHD

    CptObviousHD

    Joined:
    Sep 4, 2014
    Posts:
    1
    Awesome Scritps work Very well I'm just having 1 Problem,

    in the MPlayerNetwork script i have to add scrips to be disabled for other networks view.

    I can add my mouse look and it works Fine but when i add my movement scrip it just shows RED and nothing happens and if i save the script it says that it cant find my script and i added it like

    this.GetComponent<MouseLook>().enabled = false;
    this.GetComponent<RigidController>().enabled = false;

    any advice?
     
  22. VirtuElle

    VirtuElle

    Joined:
    Jan 27, 2013
    Posts:
    458
    ... It don't understand what you mean by "it just shows RED".
    Did you well put it line 18 on MPlayerNetwork ?
    Where exactly did your 2 new scripts on your prefab ? If you put it on a child object of the player, you have to use GetComponentInChildren instead GetComponent.
     
  23. Chezawon

    Chezawon

    Joined:
    Nov 15, 2014
    Posts:
    2
    Hi friend, I want to use this plugin to make an adventure game with multiplayer (4 persons). I need to save the status of each player on the computer that created the room, like Minecraft, do you think I can use it to achieve this? Or is there an option to do it?

    Thanks a lot, I'll waiting for your answer.
     
    Last edited: Nov 20, 2014
  24. VirtuElle

    VirtuElle

    Joined:
    Jan 27, 2013
    Posts:
    458
    Hi,
    Sure, that's not a problem. But how long do you need save these status (I don't play to Minecraft, so I don't really know how the multiplayer works on it ) ?
    If you need to save it just during the current game, you can directly use the C# List<MUser> playerList which manages the players data during the game (you will just have to add the data you need).
    And if you need to save these data for after the game, you can use PlayerPrefs to save easily the data you need on the host's computer.
     
    Chezawon likes this.
  25. Chezawon

    Chezawon

    Joined:
    Nov 15, 2014
    Posts:
    2
    thank you very much for your answer, it was very helpful.
     
  26. Pagego

    Pagego

    Joined:
    Dec 22, 2013
    Posts:
    8
    I just tried to publish my first build with MultiLan, and I received the following error: 'NetworkView' is not supported when building for Win.
    ????????????
     
  27. VirtuElle

    VirtuElle

    Joined:
    Jan 27, 2013
    Posts:
    458
    That's really strange, which option did you choose when you build the game ?
     
  28. Ahisical

    Ahisical

    Joined:
    Aug 13, 2012
    Posts:
    11
    So I brought MultiLan and whenever I try to use it I get the error:

    "The connection request to LONG_IP_HERE:25565 failed. Are you sure the server can be connected to?"

    Also along with this error, the game list does not work, and I have to connect by IP for it to work.

    I tried to do all this, but nothing worked:
    • I changed the computer
    • I changed the port
    • I connected to a different network
    • I tried on different OS
    But I still get the same error!!

    Please help me solve this! Thanks in advance!
     
  29. VirtuElle

    VirtuElle

    Joined:
    Jan 27, 2013
    Posts:
    458
    I didn't see that you post here too, I just have answered to your private message.
     
    Ahisical likes this.
  30. Clinthoney

    Clinthoney

    Joined:
    Apr 28, 2013
    Posts:
    4
    I was wondering if you could help me, I am using UFPS although I would still love to get help from that area I would love it if you could help me with physics because I noticed that when I had a rigidbody cube that I could move around sometimes the cube would be in different locations than on another client. So I thought it out and noticed that when I was moving the cube around it was just moving on both clients because the player has a collider but the problem mostly occurred when I did like a bunch of jumps and turns.

    And also I know it would be alot of work to get everything in UFPS working with this but I would atleast like to see the guns.
     
  31. VirtuElle

    VirtuElle

    Joined:
    Jan 27, 2013
    Posts:
    458
    Hi,
    I'm sorry, but I cannot provide support about integration of several asset, since I don't have myself these assets.
    The documentation and video tutorials show how to change the player, and how sync animations, but some assets are developped in a way which make them pretty hard to integrate to ML or MO, so operating these asset in a mlutiplayer mode require a good level in programming. And unfortunatly, I cannot do a special support for that.
     
  32. Master-Antonio

    Master-Antonio

    Joined:
    Sep 18, 2014
    Posts:
    13
    REQUEST URGENT UPDATE
    Add Compatibility with Unity 4.6 UI
    Add compatibility with Unity 5.

    Thank.
     
  33. RandAlThor

    RandAlThor

    Joined:
    Dec 2, 2007
    Posts:
    1,294
    Also i am too hoping for a new unity ui update i just read this:

    http://forum.unity3d.com/threads/5-1-beta-information-preview.317493/

    and the (replacing RakNet) is what is realy disapointing me.
    Do you know if this is realy a replacement or more an alternative solution like the new ui or the particle systems for example?

    Also, if this will be a real replacement, what does this mean for Ml and MO and me as a customer?
     
  34. VirtuElle

    VirtuElle

    Joined:
    Jan 27, 2013
    Posts:
    458
    If unity changes the network system, I will do an update to get MO and ML compatible with new version.

    This is planned for a few months...
     
    Last edited: Apr 14, 2015
  35. RandAlThor

    RandAlThor

    Joined:
    Dec 2, 2007
    Posts:
    1,294
    That is fine :)
     
  36. nemesiscy

    nemesiscy

    Joined:
    Aug 6, 2014
    Posts:
    7
    May i know how to solve to this problem as well? Thanks
     
  37. VirtuElle

    VirtuElle

    Joined:
    Jan 27, 2013
    Posts:
    458
    Hi, sorry, I didn't seen your message ,do you have the same error message ?
     
  38. nemesiscy

    nemesiscy

    Joined:
    Aug 6, 2014
    Posts:
    7
    Yeap exactly the same...
     
  39. VirtuElle

    VirtuElle

    Joined:
    Jan 27, 2013
    Posts:
    458
    Ok, the problem can have be antivirus or firewall, of maybe your OS.
    But do you have this error even when the host is your own computer ?
     
  40. royalgia

    royalgia

    Joined:
    Oct 26, 2014
    Posts:
    14
    Is that possible to make a boss room, if a player die, then he will back to village but the others fighting, then he comback to that room, still see the boss with the HP that the others already fought ?
     
  41. VirtuElle

    VirtuElle

    Joined:
    Jan 27, 2013
    Posts:
    458
    Hi, I am not sure that I really understand your concept, but anyway you can do everything you want. ML is just a base for multiplayer game, you can create your own rules around it.
     
  42. DanVioletSagmiller

    DanVioletSagmiller

    Joined:
    Aug 26, 2010
    Posts:
    204
    Is this TCP or UDP? My question lies in speed and compatibility. UDP won't work on webgl, but otherwise it is the fastest option for networking. Does your system start with UDP, but then switch to TCP if UDP is not available? Or is it only using 1 network option? Thanks!:)
     
    Last edited: Sep 10, 2015
  43. VirtuElle

    VirtuElle

    Joined:
    Jan 27, 2013
    Posts:
    458
    In fact, MultiLan is totally based on Unity Network and uses all his components (Networks class, RPC function, NetworkView...). I think I have read that it's UPD, but I am not totally sure.
     
  44. Popcony

    Popcony

    Joined:
    Apr 14, 2014
    Posts:
    17
    So, I'm having an issue with MultiLan, The client windows give me an error that "The list of servers for this workgroup is not currently available." Am I doing anything wrong? I opened the documentation PDF, and read though it to find help. But It didn't work. I have an Image bellow, showing that even if I press refresh, It still doesn't work.
     
  45. VirtuElle

    VirtuElle

    Joined:
    Jan 27, 2013
    Posts:
    458
    Hi,
    That means the error is about your network. ML uses directly a Windows dll to get the list of the computers across the network. If you have an error there, you have to solve it from Windows
     
  46. RandAlThor

    RandAlThor

    Joined:
    Dec 2, 2007
    Posts:
    1,294
    So i think summer is over. Do you still want to update this to the new ugui and unet?
     
  47. RandAlThor

    RandAlThor

    Joined:
    Dec 2, 2007
    Posts:
    1,294
    Sorry too ask again but what will come for ml mo in the future now that unity use another GUI and Network system?
    You wrote if they change it you will change mo and ml too.
     
  48. gbison

    gbison

    Joined:
    Feb 2, 2017
    Posts:
    5
    Given the last update, is it safe to assume the developer has abandoned this asset?
     
  49. dsay09

    dsay09

    Joined:
    Feb 8, 2017
    Posts:
    7
  50. mantra_dev

    mantra_dev

    Joined:
    Mar 22, 2017
    Posts:
    2
    Hi there im having issues with mulitlan. When we swap out the box collider then we get problems where one person conrols the other both players. I tried to follow your youtube video however it didnt work. When you suggested to make sure the settings for reliable delta compressed are set, there is no setting for this in our version of multilan. Can you advise what we need to do thanks.