simplified network setup

This commit is contained in:
tom.hempel
2025-09-21 23:34:22 +02:00
parent e751acab07
commit 4fbc109b89
16 changed files with 169 additions and 6 deletions

Binary file not shown.

Binary file not shown.

View File

@ -10,6 +10,8 @@ public class AvatarDataDownloader : MonoBehaviour
[Header("Server Configuration")]
[SerializeField] private string serverHost = "127.0.0.1";
[SerializeField] private int serverPort = 8080;
[SerializeField] private bool useGlobalNetworkConfig = true;
[SerializeField] private NetworkConfig networkConfigAsset;
[SerializeField] private string targetPlayer = "player1"; // Which player data to fetch
[Header("Download Configuration")]
@ -37,6 +39,16 @@ public class AvatarDataDownloader : MonoBehaviour
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
syncFilesPath = Path.Combine(Application.dataPath, "Sync-Files");
if (!Directory.Exists(syncFilesPath))

View File

@ -9,6 +9,8 @@ public class AvatarDataUploader : MonoBehaviour
[Header("Server Configuration")]
[SerializeField] private string serverHost = "127.0.0.1";
[SerializeField] private int serverPort = 8080;
[SerializeField] private bool useGlobalNetworkConfig = true;
[SerializeField] private NetworkConfig networkConfigAsset;
[SerializeField] private string uploadAsPlayer = "player1"; // Upload as which player
[Header("Upload Configuration")]
@ -35,6 +37,16 @@ public class AvatarDataUploader : MonoBehaviour
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
syncFilesPath = Path.Combine(Application.dataPath, "Sync-Files");
if (!Directory.Exists(syncFilesPath))

View File

@ -11,6 +11,8 @@ public class AvatarSyncClient : MonoBehaviour
[Header("Server Configuration")]
[SerializeField] private string serverHost = "127.0.0.1";
[SerializeField] private int serverPort = 8080;
[SerializeField] private bool useGlobalNetworkConfig = true;
[SerializeField] private NetworkConfig networkConfigAsset;
[SerializeField] private string targetPlayer = "player1"; // Which player data to fetch
[Header("Sync Configuration")]
@ -43,6 +45,16 @@ public class AvatarSyncClient : MonoBehaviour
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
syncFilesPath = Path.Combine(Application.dataPath, "Sync-Files");
if (!Directory.Exists(syncFilesPath))

View File

@ -12,14 +12,16 @@ using UnityEngine;
namespace Convai.Scripts.Runtime.Multiplayer
{
/// <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
/// </summary>
public class ConvaiSimpleUDPAudioReceiverV2 : MonoBehaviour
public class ConvaiSimpleUDPAudioReceiver : MonoBehaviour
{
[Header("Network Configuration")]
[SerializeField] private int listenPort = 12345;
[SerializeField] private bool enableDebugLogging = true;
[SerializeField] private bool useGlobalNetworkConfig = true;
[SerializeField] private NetworkConfig networkConfigAsset;
[Header("NPC Target")]
[SerializeField] private bool useActiveNPC = true;
@ -58,6 +60,15 @@ namespace Convai.Scripts.Runtime.Multiplayer
private void Start()
{
_cancellationTokenSource = new CancellationTokenSource();
// Apply global config if enabled
if (useGlobalNetworkConfig)
{
var cfg = networkConfigAsset != null ? networkConfigAsset : NetworkConfig.Instance;
if (cfg != null)
{
listenPort = cfg.port;
}
}
InitializeNetwork();
InitializeConvai();

View File

@ -18,6 +18,8 @@ namespace Convai.Scripts.Runtime.Multiplayer
[Header("Network Settings")]
[SerializeField] private string targetIP = "127.0.0.1";
[SerializeField] private int targetPort = 12345;
[SerializeField] private bool useGlobalNetworkConfig = true;
[SerializeField] private NetworkConfig networkConfigAsset;
[Header("Audio Settings")]
[SerializeField] private int recordingFrequency = 16000;
@ -47,6 +49,16 @@ namespace Convai.Scripts.Runtime.Multiplayer
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();
InitializeAudio();
_cancellationTokenSource = new CancellationTokenSource();

View File

@ -19,6 +19,8 @@ namespace Convai.Scripts.Runtime.Multiplayer
[Header("Network Configuration")]
[SerializeField] private int listenPort = 12346;
[SerializeField] private bool enableDebugLogging = true;
[SerializeField] private bool useGlobalNetworkConfig = true;
[SerializeField] private NetworkConfig networkConfigAsset;
[Header("Audio Playback")]
[SerializeField] private AudioSource speechAudioSource;
@ -105,6 +107,15 @@ namespace Convai.Scripts.Runtime.Multiplayer
private void Start()
{
_cancellationTokenSource = new CancellationTokenSource();
// Apply global config if enabled
if (useGlobalNetworkConfig)
{
var cfg = networkConfigAsset != null ? networkConfigAsset : NetworkConfig.Instance;
if (cfg != null)
{
listenPort = cfg.port;
}
}
InitializeAudio();
InitializeNetwork();
}

View File

@ -21,6 +21,8 @@ namespace Convai.Scripts.Runtime.Multiplayer
[SerializeField] private string targetIP = "127.0.0.1";
[SerializeField] private int targetPort = 12346;
[SerializeField] private bool enableDebugLogging = true;
[SerializeField] private bool useGlobalNetworkConfig = true;
[SerializeField] private NetworkConfig networkConfigAsset;
[Header("NPC Source")]
[SerializeField] private bool useActiveNPC = true;
@ -53,6 +55,16 @@ namespace Convai.Scripts.Runtime.Multiplayer
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();
InitializeConvai();
}

BIN
Unity-Master/Assets/Scripts/NetworkConfig.asset (Stored with Git LFS) Normal file

Binary file not shown.

View File

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

View 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;
}
}
}

View File

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

View File

@ -10,6 +10,8 @@ public class UDPAvatarBroadcaster : MonoBehaviour
[Header("Network Configuration")]
[SerializeField] private int broadcastPort = 8080;
[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;
[Header("Avatar Configuration")]
@ -83,6 +85,16 @@ public class UDPAvatarBroadcaster : MonoBehaviour
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();
CacheAvatarComponents();

View File

@ -11,6 +11,8 @@ public class UDPAvatarReceiver : MonoBehaviour
{
[Header("Network Configuration")]
[SerializeField] private int listenPort = 8080;
[SerializeField] private bool useGlobalNetworkConfig = true;
[SerializeField] private NetworkConfig networkConfigAsset;
[SerializeField] private bool enableReceiver = true;
[SerializeField] private byte targetPlayerID = 2; // Which player to receive data from (0 = any)
[SerializeField] private bool allowPortSharing = true; // For local testing with multiple components
@ -85,6 +87,16 @@ public class UDPAvatarReceiver : MonoBehaviour
if (targetAvatarRoot == null)
targetAvatarRoot = transform;
// Apply global config if enabled
if (useGlobalNetworkConfig)
{
var cfg = networkConfigAsset != null ? networkConfigAsset : NetworkConfig.Instance;
if (cfg != null)
{
listenPort = cfg.port;
}
}
CacheAvatarComponents();
if (enableReceiver)

View File

@ -18,6 +18,8 @@ public class VRExperimentController : MonoBehaviour
[Header("Network Settings")]
[SerializeField] private int udpPort = 1221;
[SerializeField] private bool allowPortSharing = true; // For local testing with multiple components
[SerializeField] private bool useGlobalNetworkConfig = true;
[SerializeField] private NetworkConfig networkConfigAsset;
[Header("Avatar Assignments")]
[SerializeField] private GameObject helpfulAvatar;
@ -55,6 +57,15 @@ public class VRExperimentController : MonoBehaviour
void Start()
{
// Apply global config if enabled
if (useGlobalNetworkConfig)
{
var cfg = networkConfigAsset != null ? networkConfigAsset : NetworkConfig.Instance;
if (cfg != null)
{
udpPort = cfg.port;
}
}
InitializeObjectMaps();
StartUDPListener();