Gossellin Grégory reports on the Blender game 'Dust of Adventure', created by 4 German teenagers!
Dust of Adventure (previously “Project Global”) is the last project from Extend Studios, a little “virtual” studio created by 4 German teenagers, which works on a real game!
Presentation of the game
Dust of Adventure is a multiplayer game made with Blender Game Engine which is today in alpha phase. A 'small band of 4 enthusiasts' are working on the project: Jan Thieß Brockmann (Music, Animation, Programing), Niklas Ravnsborg-Gjertsen (Design, Marketing), Moritz Brückner (Music, Modelling) and Richard Keil (Programing, Texturing, Animation).
The purpose of the game is to survive in the desert – only with a gun. Look at this video, we talk technique after it.
All the modeling was realized with Blender, and the game engine used is Blender Game Engine. GIMP (GNU Image Manipulation Program) was used for textures and the music was created with Samplitude Music Studio.
This project is different from other by the will to make a multiplayer game.
However, the volume of data to exchange must stay low, so the numbers of players must be small too. To do a chat, the volume of data is not important and it's possible to synchronize several hundred users. The real-time aspect is not important.
For a 3D world with numerous objects and complexes physical rules, there is an explosion of the volume of data!
One very players' large number are connected to a MMO. Games like «World of Warcraft» need servers to connect thousands of people. I think, no, i'm sure, it's not possible to do a MMORPG like «Warcraft» with Blender, using a python script !
To play on the network, you must create an «universe» in which all actions from each others are considered. The simplest is «Master» (server) to manage all the world physics, the game logic and dispatch information to the different «Slaves» (clients). A game with 2 players can be done with a master and a slave.
Blender Game Engine wasn't made to do «multiplayer» game on network. There are some attempt more or less accomplished to synchronize objects via network. The most advanced is the one of Angus Hollands (Agoose77 sur BlenderArtists). A discussion thread: http://tinyurl.com/pwtcwqx. It is an addon and a minimalist library, to create some simple games.
A socket is a communication canal that we open between 2 computers to transmit information. This canal is identified by a number, which is the port. The computer is identified by an address (the IP address). A client is connected by a server by using a canal, and a server communicates with its x clients by x canals. The way in which the communication is accomplished is called a protocol. In a game by LAN (Local Area Network) or WAN, there are 2 sockets types: UDP and TCP. TCP encapsulates UDP by adding to it a good reception control. So, UDP is faster, but the data sent is not necessarily receipt or correctly receipt. When the speed is more important than the data quality, we use UDP.
The Multicast allows to diffuse and collect data between the connected computers. It allows its clients and servers to connect using the same IP address and the same port: most routers support this system. In IPV4, the addresses between 184.108.40.206 and 220.127.116.11 are reserved to Multicast. However, it is usable only on a LAN.
The script for data to exchange with Python is easy to understand, but when we want to have something more optimized, the code increases very quickly.
I don't look this game code, but I suppose they have some trouble with the network part. Moving several characters in a scene synchronizing their position, it is easy. It's the same to shoot an enemy: only when the player's computer says to the server that the enemy is touched! If we need to synchronize the physique, we could not have only a simple data exchange with Python on the network, that requires a real synchronization architecture via the network.
They say: “In version 2.0 we'll make some big changes. The most important task is to rewrite the network. Yes - it works but it's not really extendable. Secondary tasks are improvements in performance, music and graphic. Additionally we'll integrate a new weapon system with different weapons. A release date is not defined yet.”
There is no age for creating games. Blender is a free set of tools with a Game Engine easy to learn and use. So numerous teenagers are beginning game development using this engine. It's the one which has an integrated and a complete modeler (Blender). It's more easy for me to teach Game Development, Level Design, Game Design and programming with this tool. You can read this book i've written with all recipes needed to create a game with this Engine.