init networking, connecting and packet sending is now possible
This commit is contained in:
parent
2bb1df00ee
commit
bb8d9889a1
3
.gitignore
vendored
3
.gitignore
vendored
@ -46,3 +46,6 @@ sysinfo.txt
|
||||
|
||||
# Emacs #
|
||||
*~
|
||||
|
||||
# Distribution #
|
||||
/Dist/
|
||||
|
File diff suppressed because it is too large
Load Diff
9
Assets/Scripts/Networking.meta
Normal file
9
Assets/Scripts/Networking.meta
Normal file
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d74936181e8335c46a02a1bb60cba54e
|
||||
folderAsset: yes
|
||||
timeCreated: 1494188604
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
59
Assets/Scripts/Networking/Client.cs
Normal file
59
Assets/Scripts/Networking/Client.cs
Normal file
@ -0,0 +1,59 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Networking;
|
||||
|
||||
public class Client : MonoBehaviour {
|
||||
|
||||
NetworkClient client;
|
||||
private bool running = false;
|
||||
|
||||
// Use this for initialization
|
||||
void Start () {
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update () {
|
||||
if (client.isConnected) {
|
||||
}
|
||||
}
|
||||
|
||||
public void LaunchClient(string ip, int port) {
|
||||
if (running) {
|
||||
return;
|
||||
}
|
||||
|
||||
ConnectionConfig config = new ConnectionConfig();
|
||||
config.AddChannel(QosType.ReliableSequenced);
|
||||
config.AddChannel(QosType.UnreliableSequenced);
|
||||
NetworkServer.Configure(config, 10);
|
||||
|
||||
client = new NetworkClient();
|
||||
client.Configure(config, 10);
|
||||
|
||||
running = true;
|
||||
|
||||
client.RegisterHandler(MsgType.Connect, OnConnected);
|
||||
client.RegisterHandler(MsgType.Disconnect, OnDisconnected);
|
||||
client.RegisterHandler(MsgType.Error, OnError);
|
||||
|
||||
client.Connect(ip, port);
|
||||
|
||||
Debug.Log("Client launched!");
|
||||
}
|
||||
|
||||
public void OnConnected(NetworkMessage msg) {
|
||||
Debug.Log("Connected!");
|
||||
client.Send(PktType.TestMessage, new TextMessage("Hai, I connected!"));
|
||||
}
|
||||
|
||||
public void OnDisconnected(NetworkMessage msg) {
|
||||
Debug.Log("Disconnected!");
|
||||
}
|
||||
|
||||
public void OnError(NetworkMessage msg) {
|
||||
Debug.LogError("Encountered a network error. Shutting down.");
|
||||
client.Disconnect();
|
||||
running = false;
|
||||
}
|
||||
}
|
12
Assets/Scripts/Networking/Client.cs.meta
Normal file
12
Assets/Scripts/Networking/Client.cs.meta
Normal file
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 59c7e1a1c51593e4093238f13c713947
|
||||
timeCreated: 1494189789
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
9
Assets/Scripts/Networking/Messages.meta
Normal file
9
Assets/Scripts/Networking/Messages.meta
Normal file
@ -0,0 +1,9 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e8b8f48aeaed80f42b444b6498fe859d
|
||||
folderAsset: yes
|
||||
timeCreated: 1494190696
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
22
Assets/Scripts/Networking/Messages/TextMessage.cs
Normal file
22
Assets/Scripts/Networking/Messages/TextMessage.cs
Normal file
@ -0,0 +1,22 @@
|
||||
using UnityEngine.Networking;
|
||||
|
||||
public class TextMessage : MessageBase {
|
||||
|
||||
public string message;
|
||||
|
||||
public TextMessage(string message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public TextMessage() {
|
||||
}
|
||||
|
||||
public override void Deserialize(NetworkReader reader) {
|
||||
message = reader.ReadString();
|
||||
}
|
||||
|
||||
public override void Serialize(NetworkWriter writer) {
|
||||
writer.Write(message);
|
||||
}
|
||||
|
||||
}
|
12
Assets/Scripts/Networking/Messages/TextMessage.cs.meta
Normal file
12
Assets/Scripts/Networking/Messages/TextMessage.cs.meta
Normal file
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e1fce6b5facaaff4899461bf7b3c69be
|
||||
timeCreated: 1494190706
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
8
Assets/Scripts/Networking/MsgType.cs
Normal file
8
Assets/Scripts/Networking/MsgType.cs
Normal file
@ -0,0 +1,8 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class PktType {
|
||||
|
||||
public const short TestMessage = 200;
|
||||
}
|
12
Assets/Scripts/Networking/MsgType.cs.meta
Normal file
12
Assets/Scripts/Networking/MsgType.cs.meta
Normal file
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 430a933ca3f0fa849bc55f725fe9cffc
|
||||
timeCreated: 1494190350
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
64
Assets/Scripts/Networking/NetworkEstablisher.cs
Normal file
64
Assets/Scripts/Networking/NetworkEstablisher.cs
Normal file
@ -0,0 +1,64 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
/**
|
||||
* This class is used pretty much anywhere in order to make the "first step" of networking.
|
||||
* It adds the proper components to World Root and tells them to start.
|
||||
* */
|
||||
public class NetworkEstablisher : MonoBehaviour {
|
||||
|
||||
[Tooltip("Required field only if StartClient() is used.")]
|
||||
public InputField IPField;
|
||||
[Tooltip("Required field only if StartClient() is used.")]
|
||||
public InputField clientPortField;
|
||||
|
||||
[Tooltip("Required field only if StartServer() is used.")]
|
||||
public InputField serverPortField;
|
||||
|
||||
public GameObject worldRoot;
|
||||
|
||||
// Use this for initialization
|
||||
void Start () {
|
||||
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update () {
|
||||
|
||||
}
|
||||
|
||||
public void StartClient() {
|
||||
string ip = IPField.text;
|
||||
if (ip.Length == 0) {
|
||||
ip = "localhost";
|
||||
}
|
||||
string portText = clientPortField.text;
|
||||
int port = 3935;
|
||||
if (portText.Length > 0) {
|
||||
port = Int32.Parse(portText);
|
||||
}
|
||||
StartClient(ip, port);
|
||||
}
|
||||
|
||||
public void StartClient(string ip, int port) {
|
||||
Client client = worldRoot.AddComponent<Client>();
|
||||
client.LaunchClient(ip, port);
|
||||
}
|
||||
|
||||
public void StartServer() {
|
||||
string portText = serverPortField.text;
|
||||
int port = 3935;
|
||||
if (portText.Length > 0) {
|
||||
port = Int32.Parse(portText);
|
||||
}
|
||||
StartServer(port);
|
||||
}
|
||||
|
||||
public void StartServer(int port) {
|
||||
Server server = worldRoot.AddComponent<Server>();
|
||||
server.LaunchServer(port);
|
||||
}
|
||||
}
|
12
Assets/Scripts/Networking/NetworkEstablisher.cs.meta
Normal file
12
Assets/Scripts/Networking/NetworkEstablisher.cs.meta
Normal file
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 556e33cbb85299f4db702c15ab869ad7
|
||||
timeCreated: 1494188614
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
61
Assets/Scripts/Networking/Server.cs
Normal file
61
Assets/Scripts/Networking/Server.cs
Normal file
@ -0,0 +1,61 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Networking;
|
||||
|
||||
public class Server : MonoBehaviour {
|
||||
|
||||
// Use this for initialization
|
||||
void Start () {
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update () {
|
||||
|
||||
}
|
||||
|
||||
public void LaunchServer(int port) {
|
||||
|
||||
ConnectionConfig config = new ConnectionConfig();
|
||||
config.AddChannel(QosType.ReliableSequenced);
|
||||
config.AddChannel(QosType.UnreliableSequenced);
|
||||
NetworkServer.Configure(config, 10);
|
||||
|
||||
NetworkServer.Listen(port);
|
||||
|
||||
NetworkServer.RegisterHandler(PktType.TestMessage, HandlePacket);
|
||||
|
||||
NetworkServer.RegisterHandler(MsgType.Connect, OnConnected);
|
||||
NetworkServer.RegisterHandler(MsgType.Disconnect, OnDisconnected);
|
||||
NetworkServer.RegisterHandler(MsgType.Error, OnError);
|
||||
|
||||
Debug.Log("Server started on port " + port);
|
||||
}
|
||||
|
||||
public void HandlePacket(NetworkMessage msg) {
|
||||
|
||||
switch(msg.msgType) {
|
||||
case PktType.TestMessage:
|
||||
TextMessage textMsg = new TextMessage();
|
||||
textMsg.Deserialize(msg.reader);
|
||||
Debug.Log("Received message: " + textMsg.message);
|
||||
break;
|
||||
default:
|
||||
Debug.LogError("Received an unknown packet, id: " + msg.msgType);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void OnConnected(NetworkMessage msg) {
|
||||
Debug.Log("Someone connected!");
|
||||
}
|
||||
|
||||
public void OnDisconnected(NetworkMessage msg) {
|
||||
Debug.Log("Someone disconnected?");
|
||||
}
|
||||
|
||||
public void OnError(NetworkMessage msg) {
|
||||
Debug.LogError("Encountered a network error on server");
|
||||
}
|
||||
}
|
12
Assets/Scripts/Networking/Server.cs.meta
Normal file
12
Assets/Scripts/Networking/Server.cs.meta
Normal file
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8c71a508208a2fe4fa5ba111e3b8b540
|
||||
timeCreated: 1494189796
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -4,4 +4,7 @@
|
||||
EditorBuildSettings:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Scenes: []
|
||||
m_Scenes:
|
||||
- enabled: 1
|
||||
path: Assets/Scenes/TestMap.unity
|
||||
guid: 1e552a0d1c3eb4ea994f34bf49696c90
|
||||
|
@ -35,6 +35,7 @@ GraphicsSettings:
|
||||
- {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
|
||||
- {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
|
||||
- {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
|
||||
- {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_PreloadedShaders: []
|
||||
m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
|
||||
type: 0}
|
||||
|
@ -66,7 +66,7 @@ PlayerSettings:
|
||||
disableDepthAndStencilBuffers: 0
|
||||
defaultIsFullScreen: 1
|
||||
defaultIsNativeResolution: 1
|
||||
runInBackground: 0
|
||||
runInBackground: 1
|
||||
captureSingleScreen: 0
|
||||
muteOtherAudioSources: 0
|
||||
Prepare IOS For Recording: 0
|
||||
|
@ -1 +1 @@
|
||||
m_EditorVersion: 5.6.0xf3Linux
|
||||
m_EditorVersion: 5.6.0f3
|
||||
|
@ -46,6 +46,6 @@ Version 0.1.0 - Gigantic
|
||||
- [x] Spawning basic capsule characters.
|
||||
- [x] ...With movement capabilities.
|
||||
- [ ] Client-server connectivity, players can see each other moving around.
|
||||
- [ ] 1. Client-server connectivity: the clients can connect to the server and send some messages back and forth.
|
||||
- [x] 1. Client-server connectivity: the clients can connect to the server and send some messages back and forth.
|
||||
- [ ] 2. Players can see eachothers capsule-characters and send commands to move them around.
|
||||
- [ ] 3. Basic syncing (Send sync packages at certain intervals) in order to sync positions correctly between server and client.
|
||||
|
Loading…
Reference in New Issue
Block a user