Claire Peta 5 years ago
parent
commit
efd3c6a1b8
16 changed files with 594 additions and 2 deletions
  1. +8
    -0
      Assets/Data/Networking.meta
  2. +8
    -0
      Assets/Data/Networking/Realtime.meta
  3. +3
    -0
      Assets/Data/Networking/Realtime/Clients.asset
  4. +8
    -0
      Assets/Data/Networking/Realtime/Clients.asset.meta
  5. +8
    -0
      Assets/Scenes/Networking Test Scenes.meta
  6. +309
    -0
      Assets/Scenes/Networking Test Scenes/ServerScene.unity
  7. +7
    -0
      Assets/Scenes/Networking Test Scenes/ServerScene.unity.meta
  8. +8
    -0
      Assets/Scripts/Networking/Core.meta
  9. +8
    -0
      Assets/Scripts/Networking/Core/Protocols.meta
  10. +40
    -0
      Assets/Scripts/Networking/Core/Protocols/LoginProtocols.cs
  11. +11
    -0
      Assets/Scripts/Networking/Core/Protocols/LoginProtocols.cs.meta
  12. +102
    -0
      Assets/Scripts/Networking/Server/ClientData.cs
  13. +11
    -0
      Assets/Scripts/Networking/Server/ClientData.cs.meta
  14. +6
    -2
      Assets/Scripts/Networking/Server/ServerManager.cs
  15. +46
    -0
      Assets/Scripts/Networking/Server/ServerObject.cs
  16. +11
    -0
      Assets/Scripts/Networking/Server/ServerObject.cs.meta

+ 8
- 0
Assets/Data/Networking.meta View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 96c54850426195148a87fcdbc62daa19
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

+ 8
- 0
Assets/Data/Networking/Realtime.meta View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a3f419a2d7cba5640843e97987f1968e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

+ 3
- 0
Assets/Data/Networking/Realtime/Clients.asset View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:df98d400e1ed97cfd80f5dc44fca4562a4a6dd85f7dd47e9f39b8599ec425963
size 423

+ 8
- 0
Assets/Data/Networking/Realtime/Clients.asset.meta View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a994940378bdf5d439f7e86d8fa19d63
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

+ 8
- 0
Assets/Scenes/Networking Test Scenes.meta View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5b00be84ab0e5f043868ec15b234a082
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

+ 309
- 0
Assets/Scenes/Networking Test Scenes/ServerScene.unity View File

@ -0,0 +1,309 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 0
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0.44657868, g: 0.49641263, b: 0.57481706, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 11
m_GIWorkflowMode: 0
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 1
m_LightmapEditorSettings:
serializedVersion: 10
m_Resolution: 2
m_BakeResolution: 40
m_AtlasSize: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 1
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 500
m_PVRBounces: 2
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVRFilteringMode: 1
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ShowResolutionOverlay: 1
m_LightingDataAsset: {fileID: 0}
m_UseShadowmask: 1
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &143416560
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 143416563}
- component: {fileID: 143416562}
- component: {fileID: 143416561}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!81 &143416561
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 143416560}
m_Enabled: 1
--- !u!20 &143416562
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 143416560}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_projectionMatrixMode: 1
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_GateFitMode: 2
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 0
orthographic size: 5
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!4 &143416563
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 143416560}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &533897901
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 533897903}
- component: {fileID: 533897902}
m_Layer: 0
m_Name: Directional Light
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!108 &533897902
Light:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 533897901}
m_Enabled: 1
serializedVersion: 8
m_Type: 1
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
m_Intensity: 1
m_Range: 10
m_SpotAngle: 30
m_CookieSize: 10
m_Shadows:
m_Type: 2
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
m_NearPlane: 0.2
m_Cookie: {fileID: 0}
m_DrawHalo: 0
m_Flare: {fileID: 0}
m_RenderMode: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_Lightmapping: 4
m_LightShadowCasterMode: 0
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
m_ColorTemperature: 6570
m_UseColorTemperature: 0
m_ShadowRadius: 0
m_ShadowAngle: 0
--- !u!4 &533897903
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 533897901}
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
m_LocalPosition: {x: 0, y: 3, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!1 &2055869448
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2055869450}
- component: {fileID: 2055869449}
m_Layer: 0
m_Name: ServerManager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &2055869449
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2055869448}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 220b4889c8b3f7b4f84286ba8773e1b6, type: 3}
m_Name:
m_EditorClassIdentifier:
Port: 2222
--- !u!4 &2055869450
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2055869448}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 5.5589285, y: -2.3487442, z: 2.134001}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

+ 7
- 0
Assets/Scenes/Networking Test Scenes/ServerScene.unity.meta View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 76a17602039943f4a8ea64c13c2d8050
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

+ 8
- 0
Assets/Scripts/Networking/Core.meta View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 45c42dabe7529fb4a84a425a53989283
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

+ 8
- 0
Assets/Scripts/Networking/Core/Protocols.meta View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: be5445550c45cf64f81ee97fb0bbef6f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

+ 40
- 0
Assets/Scripts/Networking/Core/Protocols/LoginProtocols.cs View File

@ -0,0 +1,40 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class LoginProtocols
{
public const short RequestLoginDetails = 100;
public const short SendingLoginDetails = 101;
public class EmptyMsg : MessageBase { }
public class LoginMsg : MessageBase
{
public string Name;
public Color Color;
public LoginMsg (string Name, Color Color)
{
this.Name = Name;
this.Color = Color;
}
public override void Serialize(NetworkWriter writer)
{
base.Serialize(writer);
writer.Write(Name);
writer.Write(Color);
}
public override void Deserialize(NetworkReader reader)
{
base.Deserialize(reader);
Name = reader.ReadString();
Color = reader.ReadColor();
}
}
}

+ 11
- 0
Assets/Scripts/Networking/Core/Protocols/LoginProtocols.cs.meta View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b187099d0b764234b91bea535335e761
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

+ 102
- 0
Assets/Scripts/Networking/Server/ClientData.cs View File

@ -0,0 +1,102 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.Networking;
namespace Networking.Server
{
[CreateAssetMenu(menuName = "Major Project/Networking/ClientList", order = 150)]
public class ConnectionHandler : ScriptableObject
{
#region Public Variables
/// <summary>
/// All Clients which are Currently Connected;
/// </summary>
public List<ClientData> ConnectedClients;
/// <summary>
/// Clients which connected at one point but no longer are
/// Usefull if a client needs to reconnect
/// </summary>
public List<ClientData> DisconnectedClients;
#endregion Public Variables
#region Private Variables
public NetworkServerSimple server;
#endregion Private Variables
/// <summary>
/// Clears the lists
/// </summary>
public void Reset()
{
ConnectedClients = new List<ClientData>();
DisconnectedClients = new List<ClientData>();
}
/// <summary>
/// Resets the client list + registers handlers with the server
/// </summary>
/// <param name="serverObject">Server to register handlers with</param>
public void SetUp(ServerObject serverObject)
{
this.server = serverObject.server;
Reset();
server.RegisterHandler(MsgType.Connect, OnClientConnect);
}
public void OnClientConnect(NetworkMessage msg)
{
if (ConnectedClients.Any(p => p.ID == msg.channelId))
{
Debug.LogError("Client[" + msg.channelId + "] already connected");
return;
}
msg.conn.Send(LoginProtocols.RequestLoginDetails,new LoginProtocols.EmptyMsg());
}
}
[System.Serializable]
public class ClientData
{
/// <summary>
/// Client Name
/// </summary>
public string Name;
/// <summary>
/// Color which represents player, picked by player
/// </summary>
public Color Color;
/// <summary>
/// Clients Current Score
/// </summary>
public int Score;
/// <summary>
/// Network connection ID
/// </summary>
public int ID;
/// <summary>
/// Connection to Client
/// </summary>
public NetworkConnection conn;
}
}

+ 11
- 0
Assets/Scripts/Networking/Server/ClientData.cs.meta View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 49a4cbda139bddf4cad03720111d095c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

+ 6
- 2
Assets/Scripts/Networking/Server/ServerManager.cs View File

@ -15,10 +15,14 @@ namespace Networking.Server
[Header("Server Settings")] [Header("Server Settings")]
[SerializeField] [SerializeField]
private int Port; private int Port;
private bool startServerOnAwake;
[SerializeField]
private bool StartServerOnAwake;
[Header("References")]
[SerializeField]
private ServerObject Server;
#endregion Inspector Fields #endregion Inspector Fields
private NetworkServerSimple server;

+ 46
- 0
Assets/Scripts/Networking/Server/ServerObject.cs View File

@ -0,0 +1,46 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
namespace Networking.Server {
[CreateAssetMenu(menuName = "Major Project/Networking/ClientList", order = 150)]
public class ServerObject : ScriptableObject
{
#region Inspector Fields
[Header("Server Settings")]
[SerializeField]
private int Port;
[Header("References")]
[SerializeField]
private ConnectionHandler LoginHandler;
#endregion Inspector Fields
#region ReadOnly Variables
public NetworkServerSimple server { get; private set;}
#endregion ReadOnly Variables
public void StartServer(int port)
{
Debug.Log("Starting Server on " + port);
server = new NetworkServerSimple();
LoginHandler.SetUp(this);
server.Listen(port);
}
}
}

+ 11
- 0
Assets/Scripts/Networking/Server/ServerObject.cs.meta View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b830880a55d87894ca10335e6bcb78d0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

Loading…
Cancel
Save