
Publisher
cas
Godot VoIP
Godot VoIP 🎙🌠is a Godot addon which makes it very easy to setup a real time voice chat system in your Godot game. This addon also includes a demo project.
This plugin has been mirrored from the Godot Asset Library.
The plugin author is in no way affiliated with Gadget.
If you are the author of this plugin and would like this mirror removed, please contact support@gadgetgodot.com.
godot-voip 🎙️🌐
godot-voip is a Godot Engine addon which makes it very easy to setup a real-time voice-chat system in your Godot game. This addon also includes a demo project.
⚠ currently unmaintained ⚠
Engine Compatibility
- Godot Engine 3.2: godot-voip 2.0
- Godot Engine 3.3+: godot-voip 3.0+
- Godot Engine 4: ❌unavailable❌
Setup
Adding to a existing project
(Any kind of high-level multiplayer peer is required.)
- Click on the AssetLib inside editor or go to the Godot Asset Library to download the latest release, or you can clone/download this repository to get the latest commit.
- Select the
addons/godot-voip/
folder and move it into your Godot project. (Note: make sure the structure is stillres://addons/godot-voip/
) - Go to project-settings/audio and enable audio input.
- Now go to the plugins tab also inside project-settings and enable the godot-voip plugin.
- Add either a
VoiceInstance
(one connection) or aVoiceOrchestrator
(more than 2 participants) node to your scene. - Set
$VoiceInstance.recording
or$VoiceOrchestrator.recording
totrue
and it will send your microphone input to connected participants.
Running demo
- Go to the templates tab in the Godot Engine project manager and look for godot-voip, or go to the Godot Asset Library to manually download the latest release, or you can clone/download this repository to get the latest commit.
- Open and run downloaded project.
For macOS users
Users running godot-voip on macOS need to make sure the microphone format in macOS audio settings is equal to the mix-rate in Godot project-settings.
GDNative
Some parts of this library have been ported to gdnative-rust to improve performance and to implement compression using the opus-codec and other audio processing. To use the gdnative implementation use the NativeVoiceInstance
node instead of the usual VoiceIntance
.
Building
To compile the gdnative parts of this library you will need Rust installed on your machine: https://www.rust-lang.org/. Then open addons/gdnative/
in your terminal and run cargo build
. You'll find the compiled binary in target/
. Then add the compiled binary to your platform in the godot-voip gdnative library called godot-voip-native.tres
also found in the gdnative directory.
Todo
- Implement audio compression.
Documentation
VoiceInstance
This node implements a single voice connection.
Signals
received_voice_data(data: PoolRealArray, from_id: int)
Emitted when voice data is received.sent_voice_data(data: PoolRealArray)
Emitted when recording and data is sent.
Properties
Type | Name | description |
---|---|---|
NodePath |
custom_voice_audio_stream_player | When used, the referenced AudioStreamPlayer /AudioStreamPlayer2D /AudioStreamPlayer3D will be used as output for incoming audio data. |
bool |
recording | If true, the VoiceInstance will process and send microhphone audio to the other VoipInstance. |
bool |
listen | If true, the VoiceInstance will also play any microhphone data it records. |
float |
input_threshold | Value above which microhphone data will be sent. Set to 0 to disable. |
NativeVoiceInstance
This node implements a single voice connection using rust-gdnative.
Signals
received_voice_data(data: PoolRealArray, sender_id: int)
Emitted when voice data is received.sent_voice_data(data: PoolRealArray)
Emitted when recording and data is sent.
Properties
Type | Name | description |
---|---|---|
NodePath |
custom_voice_audio_stream_player | When used, the referenced AudioStreamPlayer /AudioStreamPlayer2D /AudioStreamPlayer3D will be used as output for incoming audio data. |
bool |
recording | If true, the NativeVoiceInstance will process and send microhphone audio to the other NativeVoiceInstance. |
bool |
listen | If true, the NativeVoiceInstance will also play any microhphone data it records. |
float |
input_threshold | Value above which microhphone data will be sent. Set to 0 to disable. |
VoiceOrchestrator
This node implements multiple voice connections. It will automatically spawn new VoiceInstances when a player connects to the server and will remove them again after they disconnect.
Signals
received_voice_data(data: PoolRealArray, from_id: int)
Emitted when voice data is received.sent_voice_data(data: PoolRealArray)
Emitted when recording and data is sent.created_instance(id: int)
Emitted when a newVoiceInstance
is created.removed_instance(id: int)
Emitted when aVoiceInstance
is removed.
Properties
Type | Name | description |
---|---|---|
bool |
recording | If true, the VoiceInstance will process and send microhphone data to the other VoipInstance. |
bool |
listen | If true, the VoiceInstance will also play any microhphone data it records. |
float |
input_threshold | Value above which microhphone data will be sent. Set to 0 to disable. |
enum |
type_voice_instance | Type of VoiceInstance used. NATIVE, GDSCRIPT |
VoiceOrchestrator does not support a custom AudioStreamPlayer
.