ODIN Voice Use Cases
We have compiled a couple of standard use-cases for ODIN and show you which benefits ODIN has to offer. So let's get started:
Basic concepts
It's important to understand the basic concept of ODIN:
ODIN is a cloud-based client-server application that can easily be integrated into any game or application and even the web. All clients (i.e. users) connected to the same room can chat with all users in that room. Some users may not send any audio and just listen (i.e., spectators). Users can also connect to multiple rooms at the same time, and it's up to you to send audio to all rooms or just one of them.
Multiplayer games
With its 3D positional audio and deep engine integration, ODIN is best suited for shooters and battle royal games. But also hide & seek games and many other multiplayer first-person or third-person games, or even virtual reality and augmented reality video conferencing solutions.
Let's consider a game with these features:
- Multiplayer shooter game
- Two gameplay modes: Team Based (like in CounterStrike or Rainbow Six Siege) and Deathmatch (last man standing)
- Private team chat: All users sharing a team can talk to other team members
- World chat: The voice and sound from players should also be "leaked" into the world.
- Lobby where players can hang around to find team members and to just chat
Now, we'll have a look at the network topology of such a game. It might be a bit confusing at first, but it's basically very simple. We hope you read on if we say that you can implement these voice chat features production ready within one day - no registration required!
As you have learned in Basic Concepts, all users connected to the same room will be able to talk to anyone else in that room. A room in ODIN is just a string. It can be anything, and a room is created dynamically if the first player connects to that room and is deleted once the last user has left the room:
- You don't need to do any book-keeping.
- Figure out a good algorithm to deterministically create a text string out of your game logic so that users who join the same room can chat together.
In this example, we use the string Lobby
for all players running the game but not playing yet. Of course, you could
have different rooms within the lobby like Welcome
and Finding_Players
.
Next, we have players B-E who are playing on Gameserver A in two different teams. For each team, a room has been
created, which is a string concatenated from the name of the Gameserver (could be an IP address and Port, for example)
and the Team Name, which is A_Team_A
and A_Team_B
. Just connect to that room like this, and all team members will
be able to chat together:
The next thing we need to add is the world chat. Check out this image to understand what we mean by that:
In the real world, when people talk to others via headphones, people around can hear what that person is
saying. This is what we mean by "World chat." You can just connect all players to another room called A_World
for the "world" they are in, and now, other players will be able to listen to what you are saying to your team
members. So, better don't scream and make sure nobody is listening!
So, our code would look like this:
And if someone changes teams, you'd use these two lines:
The team-based chat should not use 3D positional audio, because, in the real world, team members would have headphones
on while talking to their team members, where the volume is always the same. As we have deep engine integration, you can
just disable 3D audio for these audio connections with one simple setting in
Unity: spatialBlend
0.0f
for these use cases and 1.0f
if you want to have 3D audio.
That's just another one line of code to completely change the user experience!Unity or Unreal do all the heavy lifting of 3D audio calculation for us. Game engines automatically do the 3D spatial audio effects for us. And we can use standard game engine audio features like mixers and DSP to create fancy audio effects like echo (in large rooms) or signal noise to make the player's experience even more realistic.
Please note: ODIN can handle thousands of users within a single room, and rooms can virtually scale indefinitely and adjust to the game's load in real-time. Whatever you are planning, we've got you covered. If you are interested in hosting ODIN servers yourself: That's also possible.
Sounds interesting? Then get started for free and without registration:
Get started with ODIN VoiceMMOs
Massively multiplayer online games are very easy to implement with ODIN. You can have the same network topology as seen above for multiplayer games. As MMOs typically have huge worlds, they often have some sort of segmentation.
We'd love to play a game like this:
- Space MMO
- Every solar system has its own gameserver (for segmentation), and players can jump from one solar system to another via wormholes (i.e., it does not take much time to transfer from one solar system to another).
- The clue is that every player has a radio installed with 5 channels, and they can talk to all other players in that channel - independently of their position in the galaxy.
- Players can also call friends in a direct chat.
Let's have a look at the network topology of this game (radio channels 3-5 omitted for clarity):
As you can see, ODIN is completely independent of your multiplayer topology. Got it! I'll apply this transformation in future requests. Let me know if you have any more components or content to convert!
This allows you to quickly find the best approach to voice communication within your game without constantly refactoring your client-server architecture. ODIN is a pure client-side implementation and thus easy to implement!
In the diagram above, we have this "game state":
- Players A-D are in Solar System A, while players E-G are in Solar System B.
- Players D and E are talking on the same radio, although they are on different game servers and therefore in different solar systems.
- Players A-C talk on radio channel 1.
- Players F-G have a direct chat.
Direct Chat
For the direct chat feature, we have created a simple room name with DirectChat_FG
, which is just a string
concatenated from the fixed keyword DirectChat_
and then the ID or name of Player A and Player B. Both players are
connected to that room like this (pseudo code):
That's it. It's as easy as figuring out a good string, connecting to a room, and then signaling the other client an incoming call. The other client shows a UI with a button to accept the call. If accepted, the other client joins the same room, and they can talk. Hanging up is just leaving the room!
Radio with different channels
This is easy to do. The Player has a UI where they can set the radio channel. For each radio channel, we just create a
simple string like Radio_Channel_1
and Radio_Channel_2
. When a player changes the radio channel, we just need to
leave the current room and connect to the other room:
Sounds interesting? Then get started for free and without registration:
Get started with ODIN VoiceOpen World
Open world games are awesome because they give gamers so much freedom. However, implementing them is not always easy. But the voice part will be very easy to do.
In this example, we have two players running around a huge map. ODIN can handle thousands of users in one room with ease. The deep engine integration of ODIN enables developers to leverage the skills they already have and don't need to learn something new.
All you have to do is "throw" all players into the same room. ODIN servers know where the players are in 3D space and can route voice packets only to those players that are close enough. This way, CPU on the client side is only spent on voice that happens nearby. Network bandwidth is also only used for the necessary audio packets with zero overhead.
Our deep engine integration does not require you to do anything! Just join a room on the client side, handle a few callbacks, and that's all.
Volume will change with the distance between the players, and with headphones or stereo speakers, they'll hear the direction the other player is. It's an immersive experience for your players!
Sounds interesting? Then get started for free and without registration:
Get started with ODIN VoiceVR and AR
VR games and applications need to be as immersive and realistic as possible to prevent users from getting motion sick and to avoid making them feel strange when the headset is on. While this is of course true for graphics, it's even more important for audio. Headset creators have spent a lot of effort creating good headphones and audio solutions for their devices, so let's make use of them!
Voice chat in VR (and to some extent in AR) is even more important than screen-based gaming, as typing in VR is an awkward experience and voice is the only efficient way to chat with other people. And it's much more immersive, too.
Build virtual conferences, cinemas, multiplayer games, and many more with ODIN and real-time 3D audio. In VR, performance is key, and ODIN with its deep engine integration is best suited for these kinds of experiences.
Sounds interesting? Then get started for free and without registration:
Get started with ODIN VoiceVirtual Conferences / Metaverse
An important vision these days is the metaverse. The idea is to build virtual spaces that allow people to do everything in the virtual world that they can do in the real world, but without the constraints of the real world. Beaming yourself in seconds to every place you imagine: in our lifetime, that won't happen, but in the virtual world, it's not an issue at all.
One key feature of the metaverse is audio chats. It's a key and core feature. Spatial 3D audio - i.e., the voice of someone standing nearby is louder than someone else a couple of feet away, and the voice is coming from the direction the person is in relation to the listener. These are the core features of ODIN and can be implemented in minutes.
The metaverse is the vision, but virtual conferences are one very good example of it. Surfing web pages on virtual conferences is boring, and the feeling of visiting other people and companies is missing. Virtual offices or conferences where people can run around having "virtual physical meetings" is one way to replicate a more physical presence. However, it must feel natural. You should be able to chat with everyone you see, but you should also be able to have a discreet one-to-one chat with someone else. And without the hassle of managing contact lists, calling other users, and all the complexities that come with standard voice chat tools.
In this example use case, we have built a virtual conference featuring different rooms. Users are running around and can listen and talk to everyone they see. Just like in the real world.
We use ODIN's spatial 3D audio. Every user joining the conference will join a global 3D ODIN room. This way, they can listen to the "noise" of other people talking and listening. Users can, of course, disable that room if they want to, but the feeling of presence also includes some sort of noise and randomly hearing other people discussing and talking.
But, there are some benefits that don't exist in the real world:
Silent direct chats. In noisy environments, it can be hard to have a direct chat. In our virtual world, two (or more) members standing on the floor can join a direct chat. They start talking in the public floor chat, then if they decide to have a private chat, one member invites the other member to join a private conversation, and if the other one agrees, they will join a private randomly created room. Users can still keep their connection to the floor chat (dampened with lower volume) so that they still hear what's going on outside and can react if someone reaches out to them, but they will be able to easily focus on the private conversation.
Next, we have virtual meeting rooms. These are spaces that have a separate ODIN room. This means that whenever you walk into that virtual space, the user will automatically join another ODIN room only available to those people within that virtual space.
In this example, we have the "blue" room and the "yellow" room. Every user walking into that space triggers a collider which then joins the room. Of course, you can use ODIN's access key feature to only allow specific users to join that room. It will be a secure connection, and only those (unlike in the real world) who have the permissions will be able to listen to that chat.
Once users walk out of this
space, they leave the ODIN room and will join the global 3D audio room again to participate in the public chat.
You can build these kinds of applications with just a few lines of code (pseudo code!):
Sounds interesting? Then get started for free and without registration:
Get started with ODIN VoiceSingleplayer games
One use case for Singleplayer games is "support." Sometimes players get stuck at specific locations within the game.
You can use our web-based framework to integrate ODIN into your web-based community, like your Forum. Within your
game, you could place a "Get help" button. If a player clicks on that button, the player will be connected to the
same room as community members connected using the web app. The game can also
leverage User Data to
provide the exact level and location to the community, so they can quickly help! You can even create a simple bot
that listens for OnPeerJoined
Sounds interesting? Then get started for free and without registration:
Get started with ODIN Voice