simplified network setup
This commit is contained in:
BIN
Unity-Master/Assets/Scenes/VR_Player1.unity
(Stored with Git LFS)
BIN
Unity-Master/Assets/Scenes/VR_Player1.unity
(Stored with Git LFS)
Binary file not shown.
BIN
Unity-Master/Assets/Scenes/VR_Player2.unity
(Stored with Git LFS)
BIN
Unity-Master/Assets/Scenes/VR_Player2.unity
(Stored with Git LFS)
Binary file not shown.
@ -10,6 +10,8 @@ public class AvatarDataDownloader : MonoBehaviour
|
|||||||
[Header("Server Configuration")]
|
[Header("Server Configuration")]
|
||||||
[SerializeField] private string serverHost = "127.0.0.1";
|
[SerializeField] private string serverHost = "127.0.0.1";
|
||||||
[SerializeField] private int serverPort = 8080;
|
[SerializeField] private int serverPort = 8080;
|
||||||
|
[SerializeField] private bool useGlobalNetworkConfig = true;
|
||||||
|
[SerializeField] private NetworkConfig networkConfigAsset;
|
||||||
[SerializeField] private string targetPlayer = "player1"; // Which player data to fetch
|
[SerializeField] private string targetPlayer = "player1"; // Which player data to fetch
|
||||||
|
|
||||||
[Header("Download Configuration")]
|
[Header("Download Configuration")]
|
||||||
@ -37,6 +39,16 @@ public class AvatarDataDownloader : MonoBehaviour
|
|||||||
|
|
||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
|
// Apply global config if enabled
|
||||||
|
if (useGlobalNetworkConfig)
|
||||||
|
{
|
||||||
|
var cfg = networkConfigAsset != null ? networkConfigAsset : NetworkConfig.Instance;
|
||||||
|
if (cfg != null)
|
||||||
|
{
|
||||||
|
serverHost = cfg.ipAddress;
|
||||||
|
serverPort = cfg.port;
|
||||||
|
}
|
||||||
|
}
|
||||||
// Set up file paths
|
// Set up file paths
|
||||||
syncFilesPath = Path.Combine(Application.dataPath, "Sync-Files");
|
syncFilesPath = Path.Combine(Application.dataPath, "Sync-Files");
|
||||||
if (!Directory.Exists(syncFilesPath))
|
if (!Directory.Exists(syncFilesPath))
|
||||||
|
|||||||
@ -9,6 +9,8 @@ public class AvatarDataUploader : MonoBehaviour
|
|||||||
[Header("Server Configuration")]
|
[Header("Server Configuration")]
|
||||||
[SerializeField] private string serverHost = "127.0.0.1";
|
[SerializeField] private string serverHost = "127.0.0.1";
|
||||||
[SerializeField] private int serverPort = 8080;
|
[SerializeField] private int serverPort = 8080;
|
||||||
|
[SerializeField] private bool useGlobalNetworkConfig = true;
|
||||||
|
[SerializeField] private NetworkConfig networkConfigAsset;
|
||||||
[SerializeField] private string uploadAsPlayer = "player1"; // Upload as which player
|
[SerializeField] private string uploadAsPlayer = "player1"; // Upload as which player
|
||||||
|
|
||||||
[Header("Upload Configuration")]
|
[Header("Upload Configuration")]
|
||||||
@ -35,6 +37,16 @@ public class AvatarDataUploader : MonoBehaviour
|
|||||||
|
|
||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
|
// Apply global config if enabled
|
||||||
|
if (useGlobalNetworkConfig)
|
||||||
|
{
|
||||||
|
var cfg = networkConfigAsset != null ? networkConfigAsset : NetworkConfig.Instance;
|
||||||
|
if (cfg != null)
|
||||||
|
{
|
||||||
|
serverHost = cfg.ipAddress;
|
||||||
|
serverPort = cfg.port;
|
||||||
|
}
|
||||||
|
}
|
||||||
// Set up file paths
|
// Set up file paths
|
||||||
syncFilesPath = Path.Combine(Application.dataPath, "Sync-Files");
|
syncFilesPath = Path.Combine(Application.dataPath, "Sync-Files");
|
||||||
if (!Directory.Exists(syncFilesPath))
|
if (!Directory.Exists(syncFilesPath))
|
||||||
|
|||||||
@ -11,6 +11,8 @@ public class AvatarSyncClient : MonoBehaviour
|
|||||||
[Header("Server Configuration")]
|
[Header("Server Configuration")]
|
||||||
[SerializeField] private string serverHost = "127.0.0.1";
|
[SerializeField] private string serverHost = "127.0.0.1";
|
||||||
[SerializeField] private int serverPort = 8080;
|
[SerializeField] private int serverPort = 8080;
|
||||||
|
[SerializeField] private bool useGlobalNetworkConfig = true;
|
||||||
|
[SerializeField] private NetworkConfig networkConfigAsset;
|
||||||
[SerializeField] private string targetPlayer = "player1"; // Which player data to fetch
|
[SerializeField] private string targetPlayer = "player1"; // Which player data to fetch
|
||||||
|
|
||||||
[Header("Sync Configuration")]
|
[Header("Sync Configuration")]
|
||||||
@ -43,6 +45,16 @@ public class AvatarSyncClient : MonoBehaviour
|
|||||||
|
|
||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
|
// Apply global config if enabled
|
||||||
|
if (useGlobalNetworkConfig)
|
||||||
|
{
|
||||||
|
var cfg = networkConfigAsset != null ? networkConfigAsset : NetworkConfig.Instance;
|
||||||
|
if (cfg != null)
|
||||||
|
{
|
||||||
|
serverHost = cfg.ipAddress;
|
||||||
|
serverPort = cfg.port;
|
||||||
|
}
|
||||||
|
}
|
||||||
// Set up file paths
|
// Set up file paths
|
||||||
syncFilesPath = Path.Combine(Application.dataPath, "Sync-Files");
|
syncFilesPath = Path.Combine(Application.dataPath, "Sync-Files");
|
||||||
if (!Directory.Exists(syncFilesPath))
|
if (!Directory.Exists(syncFilesPath))
|
||||||
|
|||||||
@ -12,14 +12,16 @@ using UnityEngine;
|
|||||||
namespace Convai.Scripts.Runtime.Multiplayer
|
namespace Convai.Scripts.Runtime.Multiplayer
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Simple UDP Audio Receiver V2 - Simulates microphone input by triggering normal Convai flow
|
/// Simple UDP Audio Receiver - Simulates microphone input by triggering normal Convai flow
|
||||||
/// This approach is much simpler and more reliable than trying to replicate gRPC calls
|
/// This approach is much simpler and more reliable than trying to replicate gRPC calls
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ConvaiSimpleUDPAudioReceiverV2 : MonoBehaviour
|
public class ConvaiSimpleUDPAudioReceiver : MonoBehaviour
|
||||||
{
|
{
|
||||||
[Header("Network Configuration")]
|
[Header("Network Configuration")]
|
||||||
[SerializeField] private int listenPort = 12345;
|
[SerializeField] private int listenPort = 12345;
|
||||||
[SerializeField] private bool enableDebugLogging = true;
|
[SerializeField] private bool enableDebugLogging = true;
|
||||||
|
[SerializeField] private bool useGlobalNetworkConfig = true;
|
||||||
|
[SerializeField] private NetworkConfig networkConfigAsset;
|
||||||
|
|
||||||
[Header("NPC Target")]
|
[Header("NPC Target")]
|
||||||
[SerializeField] private bool useActiveNPC = true;
|
[SerializeField] private bool useActiveNPC = true;
|
||||||
@ -58,6 +60,15 @@ namespace Convai.Scripts.Runtime.Multiplayer
|
|||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
_cancellationTokenSource = new CancellationTokenSource();
|
_cancellationTokenSource = new CancellationTokenSource();
|
||||||
|
// Apply global config if enabled
|
||||||
|
if (useGlobalNetworkConfig)
|
||||||
|
{
|
||||||
|
var cfg = networkConfigAsset != null ? networkConfigAsset : NetworkConfig.Instance;
|
||||||
|
if (cfg != null)
|
||||||
|
{
|
||||||
|
listenPort = cfg.port;
|
||||||
|
}
|
||||||
|
}
|
||||||
InitializeNetwork();
|
InitializeNetwork();
|
||||||
InitializeConvai();
|
InitializeConvai();
|
||||||
|
|
||||||
|
|||||||
@ -18,6 +18,8 @@ namespace Convai.Scripts.Runtime.Multiplayer
|
|||||||
[Header("Network Settings")]
|
[Header("Network Settings")]
|
||||||
[SerializeField] private string targetIP = "127.0.0.1";
|
[SerializeField] private string targetIP = "127.0.0.1";
|
||||||
[SerializeField] private int targetPort = 12345;
|
[SerializeField] private int targetPort = 12345;
|
||||||
|
[SerializeField] private bool useGlobalNetworkConfig = true;
|
||||||
|
[SerializeField] private NetworkConfig networkConfigAsset;
|
||||||
|
|
||||||
[Header("Audio Settings")]
|
[Header("Audio Settings")]
|
||||||
[SerializeField] private int recordingFrequency = 16000;
|
[SerializeField] private int recordingFrequency = 16000;
|
||||||
@ -47,6 +49,16 @@ namespace Convai.Scripts.Runtime.Multiplayer
|
|||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
|
// Apply global config if enabled
|
||||||
|
if (useGlobalNetworkConfig)
|
||||||
|
{
|
||||||
|
var cfg = networkConfigAsset != null ? networkConfigAsset : NetworkConfig.Instance;
|
||||||
|
if (cfg != null)
|
||||||
|
{
|
||||||
|
targetIP = cfg.ipAddress;
|
||||||
|
targetPort = cfg.port;
|
||||||
|
}
|
||||||
|
}
|
||||||
InitializeNetwork();
|
InitializeNetwork();
|
||||||
InitializeAudio();
|
InitializeAudio();
|
||||||
_cancellationTokenSource = new CancellationTokenSource();
|
_cancellationTokenSource = new CancellationTokenSource();
|
||||||
|
|||||||
@ -19,6 +19,8 @@ namespace Convai.Scripts.Runtime.Multiplayer
|
|||||||
[Header("Network Configuration")]
|
[Header("Network Configuration")]
|
||||||
[SerializeField] private int listenPort = 12346;
|
[SerializeField] private int listenPort = 12346;
|
||||||
[SerializeField] private bool enableDebugLogging = true;
|
[SerializeField] private bool enableDebugLogging = true;
|
||||||
|
[SerializeField] private bool useGlobalNetworkConfig = true;
|
||||||
|
[SerializeField] private NetworkConfig networkConfigAsset;
|
||||||
|
|
||||||
[Header("Audio Playback")]
|
[Header("Audio Playback")]
|
||||||
[SerializeField] private AudioSource speechAudioSource;
|
[SerializeField] private AudioSource speechAudioSource;
|
||||||
@ -105,6 +107,15 @@ namespace Convai.Scripts.Runtime.Multiplayer
|
|||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
_cancellationTokenSource = new CancellationTokenSource();
|
_cancellationTokenSource = new CancellationTokenSource();
|
||||||
|
// Apply global config if enabled
|
||||||
|
if (useGlobalNetworkConfig)
|
||||||
|
{
|
||||||
|
var cfg = networkConfigAsset != null ? networkConfigAsset : NetworkConfig.Instance;
|
||||||
|
if (cfg != null)
|
||||||
|
{
|
||||||
|
listenPort = cfg.port;
|
||||||
|
}
|
||||||
|
}
|
||||||
InitializeAudio();
|
InitializeAudio();
|
||||||
InitializeNetwork();
|
InitializeNetwork();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,6 +21,8 @@ namespace Convai.Scripts.Runtime.Multiplayer
|
|||||||
[SerializeField] private string targetIP = "127.0.0.1";
|
[SerializeField] private string targetIP = "127.0.0.1";
|
||||||
[SerializeField] private int targetPort = 12346;
|
[SerializeField] private int targetPort = 12346;
|
||||||
[SerializeField] private bool enableDebugLogging = true;
|
[SerializeField] private bool enableDebugLogging = true;
|
||||||
|
[SerializeField] private bool useGlobalNetworkConfig = true;
|
||||||
|
[SerializeField] private NetworkConfig networkConfigAsset;
|
||||||
|
|
||||||
[Header("NPC Source")]
|
[Header("NPC Source")]
|
||||||
[SerializeField] private bool useActiveNPC = true;
|
[SerializeField] private bool useActiveNPC = true;
|
||||||
@ -53,6 +55,16 @@ namespace Convai.Scripts.Runtime.Multiplayer
|
|||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
|
// Apply global config if enabled
|
||||||
|
if (useGlobalNetworkConfig)
|
||||||
|
{
|
||||||
|
var cfg = networkConfigAsset != null ? networkConfigAsset : NetworkConfig.Instance;
|
||||||
|
if (cfg != null)
|
||||||
|
{
|
||||||
|
targetIP = cfg.ipAddress;
|
||||||
|
targetPort = cfg.port;
|
||||||
|
}
|
||||||
|
}
|
||||||
InitializeNetwork();
|
InitializeNetwork();
|
||||||
InitializeConvai();
|
InitializeConvai();
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
Unity-Master/Assets/Scripts/NetworkConfig.asset
(Stored with Git LFS)
Normal file
BIN
Unity-Master/Assets/Scripts/NetworkConfig.asset
(Stored with Git LFS)
Normal file
Binary file not shown.
8
Unity-Master/Assets/Scripts/NetworkConfig.asset.meta
Normal file
8
Unity-Master/Assets/Scripts/NetworkConfig.asset.meta
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 48e977b8cb2ab584a81bd94b48c1b2ab
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
24
Unity-Master/Assets/Scripts/NetworkConfig.cs
Normal file
24
Unity-Master/Assets/Scripts/NetworkConfig.cs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
[CreateAssetMenu(fileName = "NetworkConfig", menuName = "Config/Network Config")]
|
||||||
|
public class NetworkConfig : ScriptableObject
|
||||||
|
{
|
||||||
|
[Header("Global Network Settings")]
|
||||||
|
public string ipAddress = "127.0.0.1";
|
||||||
|
public int port = 8080;
|
||||||
|
|
||||||
|
private static NetworkConfig _instance;
|
||||||
|
public static NetworkConfig Instance
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_instance == null)
|
||||||
|
{
|
||||||
|
_instance = Resources.Load<NetworkConfig>("NetworkConfig");
|
||||||
|
}
|
||||||
|
return _instance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
11
Unity-Master/Assets/Scripts/NetworkConfig.cs.meta
Normal file
11
Unity-Master/Assets/Scripts/NetworkConfig.cs.meta
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c2f6ca8e295dcbc4a9dece402d799c69
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -10,6 +10,8 @@ public class UDPAvatarBroadcaster : MonoBehaviour
|
|||||||
[Header("Network Configuration")]
|
[Header("Network Configuration")]
|
||||||
[SerializeField] private int broadcastPort = 8080;
|
[SerializeField] private int broadcastPort = 8080;
|
||||||
[SerializeField] private string broadcastAddress = "10.138.6.255"; // Local network broadcast
|
[SerializeField] private string broadcastAddress = "10.138.6.255"; // Local network broadcast
|
||||||
|
[SerializeField] private bool useGlobalNetworkConfig = true;
|
||||||
|
[SerializeField] private NetworkConfig networkConfigAsset;
|
||||||
[SerializeField] private bool enableBroadcast = true;
|
[SerializeField] private bool enableBroadcast = true;
|
||||||
|
|
||||||
[Header("Avatar Configuration")]
|
[Header("Avatar Configuration")]
|
||||||
@ -83,6 +85,16 @@ public class UDPAvatarBroadcaster : MonoBehaviour
|
|||||||
|
|
||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
|
// Apply global config if enabled
|
||||||
|
if (useGlobalNetworkConfig)
|
||||||
|
{
|
||||||
|
var cfg = networkConfigAsset != null ? networkConfigAsset : NetworkConfig.Instance;
|
||||||
|
if (cfg != null)
|
||||||
|
{
|
||||||
|
broadcastAddress = cfg.ipAddress;
|
||||||
|
broadcastPort = cfg.port;
|
||||||
|
}
|
||||||
|
}
|
||||||
InitializeNetworking();
|
InitializeNetworking();
|
||||||
CacheAvatarComponents();
|
CacheAvatarComponents();
|
||||||
|
|
||||||
|
|||||||
@ -11,6 +11,8 @@ public class UDPAvatarReceiver : MonoBehaviour
|
|||||||
{
|
{
|
||||||
[Header("Network Configuration")]
|
[Header("Network Configuration")]
|
||||||
[SerializeField] private int listenPort = 8080;
|
[SerializeField] private int listenPort = 8080;
|
||||||
|
[SerializeField] private bool useGlobalNetworkConfig = true;
|
||||||
|
[SerializeField] private NetworkConfig networkConfigAsset;
|
||||||
[SerializeField] private bool enableReceiver = true;
|
[SerializeField] private bool enableReceiver = true;
|
||||||
[SerializeField] private byte targetPlayerID = 2; // Which player to receive data from (0 = any)
|
[SerializeField] private byte targetPlayerID = 2; // Which player to receive data from (0 = any)
|
||||||
[SerializeField] private bool allowPortSharing = true; // For local testing with multiple components
|
[SerializeField] private bool allowPortSharing = true; // For local testing with multiple components
|
||||||
@ -85,6 +87,16 @@ public class UDPAvatarReceiver : MonoBehaviour
|
|||||||
if (targetAvatarRoot == null)
|
if (targetAvatarRoot == null)
|
||||||
targetAvatarRoot = transform;
|
targetAvatarRoot = transform;
|
||||||
|
|
||||||
|
// Apply global config if enabled
|
||||||
|
if (useGlobalNetworkConfig)
|
||||||
|
{
|
||||||
|
var cfg = networkConfigAsset != null ? networkConfigAsset : NetworkConfig.Instance;
|
||||||
|
if (cfg != null)
|
||||||
|
{
|
||||||
|
listenPort = cfg.port;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CacheAvatarComponents();
|
CacheAvatarComponents();
|
||||||
|
|
||||||
if (enableReceiver)
|
if (enableReceiver)
|
||||||
|
|||||||
@ -18,6 +18,8 @@ public class VRExperimentController : MonoBehaviour
|
|||||||
[Header("Network Settings")]
|
[Header("Network Settings")]
|
||||||
[SerializeField] private int udpPort = 1221;
|
[SerializeField] private int udpPort = 1221;
|
||||||
[SerializeField] private bool allowPortSharing = true; // For local testing with multiple components
|
[SerializeField] private bool allowPortSharing = true; // For local testing with multiple components
|
||||||
|
[SerializeField] private bool useGlobalNetworkConfig = true;
|
||||||
|
[SerializeField] private NetworkConfig networkConfigAsset;
|
||||||
|
|
||||||
[Header("Avatar Assignments")]
|
[Header("Avatar Assignments")]
|
||||||
[SerializeField] private GameObject helpfulAvatar;
|
[SerializeField] private GameObject helpfulAvatar;
|
||||||
@ -55,6 +57,15 @@ public class VRExperimentController : MonoBehaviour
|
|||||||
|
|
||||||
void Start()
|
void Start()
|
||||||
{
|
{
|
||||||
|
// Apply global config if enabled
|
||||||
|
if (useGlobalNetworkConfig)
|
||||||
|
{
|
||||||
|
var cfg = networkConfigAsset != null ? networkConfigAsset : NetworkConfig.Instance;
|
||||||
|
if (cfg != null)
|
||||||
|
{
|
||||||
|
udpPort = cfg.port;
|
||||||
|
}
|
||||||
|
}
|
||||||
InitializeObjectMaps();
|
InitializeObjectMaps();
|
||||||
StartUDPListener();
|
StartUDPListener();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user