||TeamSpeak 3 Architecture
by Bastian Schaar on Jun 23, 2007
Last month we didn't have much devblog-worthy news for you because we were busy working on packet structure rewrites deep down in the core of TeamSpeak 3. For our new, upcoming website we have designed a flow-chart with a high level overview of the TeamSpeak 3 architecture. So, in this devblog we will give you a sneak preview and explain the flow-chart in some detail.
The four boxes at the top are the things a regular user is most likely to encounter.
That's about all the tasty new information we'd like to reveal to you at this time!
- The "Graphical User Interface" (Qt) is the main TeamSpeak 3 client application, similar to what you use currently in TeamSpeak 2. Note, however, that TeamSpeak 3 will now natively support Macintosh, Linux, and Windows platforms (hooray!).
- The "Console User Interface" is currently used for stress testing a TeamSpeak 3 server with bot-like clients, but depending on the lua script (scripting language) it is now capable of doing just about anything you can imagine!
- "Telnet" and "Scripts / Programs, 3rd Party, Web Interface" all use our new powerful query interface similar to TeamSpeak 2's TCP Query but much more powerful. In addition, the web interface is now an external PHP script which can be used to administer a TeamSpeak server via a web browser.
- "ClientLib/SDK" is a library (dll/so) which makes it possible to interact with the server by using its simple programming interface. So, it provides the possibility to for example connect to a server, mute the microphone, or switch channels. The "Capture/Playback/Input" components are going to provide a plugin system which allows you to for example write your own playback plugin which streams the output to a shoutcast server in addition to playing it back. Although the UDP protocol is a superior choice for real time voice communication, TeamSpeak 3 will also provide the option of using TCP instead of UDP. Support for TCP connectivity is particularly useful for circumstances where people need to use proxies, or where UDP is completely blocked due to corporate firewalls, etc.
- "Server" is fairly self-explanatory, we will support a database plugin system so for example you can write your own plugin for a completely proprietary database if you wanted to. The server components will also be available as a library version to include into your own application.
As a side note, we are currently looking for another full time, talented programmer to join our team. For more information on this position please visit our Jobs & Careers page.
As usual, please stay tuned to our site for more information and keep your eyes peeled for our NEW site coming soon!
||New Development Updates
by Bastian Schaar on Apr 13, 2007
First off we are sorry this developer blog entry took so long. Although we are making excellent progress, we have been extremely wrapped up with TeamSpeak 3 coding all this year, and more recently we have also been occupied with moving our office to a new location in Bavaria... but now we are settled into our new office and have time to write up this entry.
The main programming goal we had set for ourselves and accomplished since our last blog entry was to completely rewrite the protocol structure deep down in the TeamSpeak 3 core. The change in the protocol now allows us to handle many things far more effectively within the code, reduces overall bandwidth usage, and should also cut down the required CPU cycles to parse packets.
In addition, regular blog readers may remember that a while ago we stated that we still had an outstanding TODO task which negatively affected the latency of voice playback. We've put some effort into this area and the latency has been lowered even more, while not only maintaining playback quality but actually improving it slightly. We are also currently in the process of putting a tool together which allows us to measure the latency of just about any VoIP solution out there, so we might soon be able to provide you with numbers showcasing the differences between TeamSpeak 2 and TeamSpeak 3 with regard to the time it takes from saying "two foes at the castle" and your mate actually hearing what you said. That being said, even without this tool it is already very obvious that TeamSpeak 3 is much faster than it's predecessor!
One other thing we've recently allocated time for is implementing per server capture and playback devices. So you can now do some really cool things like hook up two USB headsets to your computer, fire up TeamSpeak 3 and join two different servers (remember the tabbed voicecom feature we hinted at from one of our previous blogs?), hand one headset to your mate and be able to talk as if you were running two entirely separate clients. Hence, your mate will only hear what people on "his" server are saying, and will only be able to speak to those users and vice versa. The flexibility this feature provides should make for some really cool setups that were either impossible or cumbersome to realize with TeamSpeak 2.
As the last feature we want to showcase within this blog entry, we have now created TeamSpeak 3 sound packs! The idea here is to allow all the sounds that are played when some action occurs (e.g. in TeamSpeak 2 when you mute your microphone you hear "Microphone Muted") to be packaged in a sound packs, and distributed easily. So when TeamSpeak 3 is released and some of you feel creative, you can whip up your very own sound pack that anyone can download to their TeamSpeak 3 sounds folder and voila, it will appear in the options dialogue as a new sound pack.
That's it for now, please stay tuned to our website for more updates!
||Updates before the Holidays
by Sven Paulsen on Dec 13, 2006
Hello TeamSpeak fans!
After a few weeks of intense developing, we are back to bring you more news concerning TeamSpeak 3.
Currently we are adding key-bindings to the TeamSpeak client. With this new interface it will be possible to bind, for example, button 5 on your joystick to mute your microphone and button 3 on your mouse to mute output. We also plan to support things like push-to-mute, which requires support to bind actions to 'button-down' and 'button-up' events - pretty neat stuff.
We have decided to allow the user to store his preferred servers as bookmarks, just like you all know from your favorite web browser. The graphically most challenging component, the bookmark manager, is nearly finished.
TeamSpeak 3's Core Architecture
OK, for all you techies and brainiacs out there, we are developing the client in two layers, the core part which we usually refer to as the ClientLib and the interface part which we call the ClientUI . The ClientUI uses the ClientLib to do all the interaction with TeamSpeak 3 servers (like connecting, disconnecting, creating channels, etc). The ClientUI is responsible for the user interface (hence UI), as it presents the user with dialogs and windows showing information retrieved from the ClientLib (e.g. the channel list in a tree view) and it allows the user to issue commands (e.g. right click on a user and kick client) that are submitted into the ClientLib which carries the command into execution. The advantage of this modular approach can easily be seen from a developer's point of view. When anybody wishes to create an entirely new user interface, he just takes the existing ClientLib , and substitutes our ClientUI with his own completely custom interface.
The ClientLib can also be used when integrating TeamSpeak into a totally different application - like an online game. This is something we are really looking forward to. That is, having the advantages of a fully integrated voicecom solution within an online game (e.g. automatic team channels) bundled with the advantages of a full-featured voicecom application, as opposed to the often very 'limited' in-game voicecom solutions that you see in most of today's voice-enabled games.
Currently we already have TWO user interfaces, the regular full featured graphical one, and a console only application that we use mainly for stress testing - spawning hundreds of these clients at once (you could call it 'bot'). This stress testing has become increasingly interesting since we recently added a new command to the server's serverquery interface which allows you to spawn a new virtual server. It would be hard to fill e.g. 500 virtual servers (*) with 50 clients each during closed alpha (especially with our current 6 alpha testers) without them. Of course these bots are no real substitute for 25000 testers, and we will certainly extend our test team once we reach feature completeness and progress into our open beta stages.
(*) Spawning 500 virtual servers is fact, not fiction, even in our current ALPHA server. Hence, we hope to say good-bye to the petty 75 virtual server 'scalability restriction' that TeamSpeak 2 has.
Hail to the igloo-building gods
In three weeks we will try to build an igloo to sleep in, just as we did last year. But this time we won't take a tent as backup with us. So don't worry if our next blog entry is late, it's simply because we're getting thawed out after being frozen like popsicles! If you really want us to survive, you still have a little time left to teach us how to build a GOOD igloo. Please post your comments in our forums - we'd love to hear from you.
See you next time...
||TeamSpeak 3 Development Updates
by Sven Paulsen on Sep 25, 2006
The clock hasn't stopped ticking for us developers during the past few weeks. So here we are again to present you with our latest achievements.
While we are building up the new, powerful server query (formerly known as TCP query) component to TeamSpeak 3 we are also preparing new, detailed documentation for your use. In addition, the server query can now be switched into an interactive mode which gives you the ability to use the up/down cursor keys for cycling between the last given commands. You can also use the backspace key to edit the current command-line.
We're also making significant progress on our new web interface. The web interface will not be part of the server. Instead it will consist of a PHP-based web application, which can handle multiple virtual servers and server instances at once. The main application of this new interface will be for server farming or maintenance of servers by host providers, since normal end-users will be able to do all configuration and administration of the server from within the new TeamSpeak 3 client. Since the web interface uses the server query to interact with the server, the server query has consequently become a very powerful tool (happy day for all script developers).
Additionally we are also busy fixing numerous bugs, which our ALPHA test team found.