Many times there are no players in a game or all are already busy in on-going game sessions. This will let some of the players quit the game as they will have no one to compete with. Situation can be worse in turn based games. For example, you might need 4 players to start the game but there are only 3 players available. So, a better option should be available to handle this situation. In AppWarp S2, developers can create virtual users.Muchas veces no hay jugadores en un juego o todos ya se encuentran ocupados en sesiones en curso. Esto provocará que algunos jugadores abandonen el juego ya que no tendrán con quien competir. La situación puede ser peor en un juego basado en turnos. Por ejemplo, podría necesitar 4 jugadores para empezar un juego pero solo hay 3 jugadores disponibles. Entonces, una mejor opción debe estar disponible para manejar esta situación. En AppWarp S2, los desarrolladores pueden crear usuarios virtuales.
Virtual Users
Virtual User is an extension of the User class in AppWarp S2. You can create an object of this class and add it in the room. This will let other players think that there is a new player. The client side code does not have to be changed, the game on client side will treat all these virtual users as they were real game players.
Adding Virtual User
Adding virtual user is very easy. All you have to do is create an object of class ‘VirtualUser’. Then add this user in a room. For example:
IUser user = (IUser) new VirtualUser("FakeUser", myRoom, myZone);
myRoom.addUser(user, true);
In the above code, I am creating a virtual user with the name “FakeUser” in room “myRoom” of zone “myZone”. Then I added this virtual user in myRoom with addUser method. Although, we have a specific room in VirtualUser’s constructor still we are adding it to the room because this will generate a notification and send it to all the users in that room. All players will get the notification that a new player has joined the room.
Creating AI for Virtual User
VirtualUser will only act as a dummy user, it won’t do anything of its own. You have to write AI to simulate the behavior of VirtualUser. This will let you create Bots in your game. You can create a wrapper around VirtualUser or write AI logic in a separate class. When you are ready with your AI and want to perform an action on behalf of VirtualUser, simply call the BroadcastChat method of IRoom with the message and name of the bot user. For example:
room.BroadcastChat(botUser.getName(), “Hey! I am Moving”);
Other players will treat it as the real player and react as it was sent by a real player himself. Therefore, you will not have to change the code on client side.
Use Cases
There are lot of use cases for VirtualUser and some of these are as follows.
-
Generating Users when there are none
In the beginning of the game, there are going to be less players. This can degrade the quality of game experience. Suppose a player comes in your game to play multiplayer mode but if there are no players then you can generate fake users to play against him. This will improve the overall game experience of the player. Example of such a game can be Card Games where you need at least a few players to start the game. -
Generating Server Side Enemies
In MMOs or open world games, there are enemies that are generated by the server. You can use VirtualUsers to create enemies. The advantage of this is that enemies will appear to all the players at the same location & time with the same health. For example, this could be a great feature for co-op games. -
Generating Managers/Dealers
In many card like games, there is a need of a dealer. Since every client is a player, there are no dealers available. This can be done with Virtual User. You can create a VirtualUser in each room and assign him the AI for dealer.
Definitely a lot can be done with this new feature and I believe it will be very helpful to you, developers. Feel free to share your use cases in comments box below.
Sample
We understand how important a sample is. They help you learn better and this is why we have created a basic sample for you. You can grab the sample from here.
In the above sample, we are creating virtual users so if no new players join a room for 30 seconds then the game will start. Since in this sample, we are dealing with turn based rooms, the virtual users will also get their turn. The sample simulates a basic behavior for these virtual users by sending moves on behalf of these virtual users.
Please have look at the code to understand it better.
Conclusion
The VirtualUsers allow you to create fake users in your games. They are very easy to implement and do not require any changes on the client side.
Usuarios Virtuales
Usuarios virtuales es una extensión de user class en AppWarp S2. Puede crear un objeto de esta clase y agregarlo a la sala. Esto les permitirá a otros jugadores pensar que hay un nuevo jugador. La codificación por parte del cliente no debe cambiar, el juego en el lado del cliente interactuará con estos jugadores virtuales como si fueran jugadores reales.
Añadir Usuarios Virtuales
Añadir usuarios virtuales es muy simple. Todo lo que necesita hacer es crear un objeto de clase “VirtualUser”. Entonces agregar este usuario a una sala. Por ejemplo:
IUser user = (IUser) new VirtualUser("FakeUser", myRoom, myZone);
myRoom.addUser(user, true);
En la codificación anterior, estoy creando un usuario virtual con el nombre de FakeUser en la sala myRoom de zona myZone. Luego agrego este usuario virtual a myRoom con el método addUser. Sin embargo, tenemos una sala específica en el constructor VirtualUser aún somos agregados a la sala ya que esto generará una notificación que será enviada a todos los usuarios de la sala. Todos los jugadores obtendrán una notificación que un nuevo jugador se ha unido a la sala.
Crear un AI para el usuario virtual
VirtualUser actuará solo como un usuario ficticio, no hará nada por su cuenta. Tiene que escribir AI para simular el comportamiento del VirtualUser. Esto le permitirá crear Bots para su juego. Puede crear una envoltura alrededor de su VirtualUser o escribir un AI lógico en una clase separada. Cuando esté listo con su AI y quiera realizar una acción en nombre de su VirtualUser, simplemente llame el método BroadcastChat de IRoom con el mensaje y nombre de usuario bot. Por ejemplo:
room.BroadcastChat(botUser.getName(), “Hey! I am Moving”);
Otros jugadores lo trataran como un jugador real y reaccionará como si fuese enviado por un usuario real. Por lo tanto, no tendrá que cambiar la codificación del cliente.
Casos de uso
Existen muchos casos de uso para VirtualUser y algunos de ellos.
-
Generar usuarios cuando no hay mas
En el inicio del juego, habrá pocos jugadores. Esto puede disminuir la calidad de la experiencia del juego. Supongamos que un jugador entra a su juego para jugar en modo multijugador pero si no hay muchos jugadores, entonces usted puede generar usuarios falsos para jugar contra él. Esto mejorará la experiencia del juego. Un ejemplo de este tipo de juego puede ser un Juego de Cartas, donde necesita al menos dos jugadores para empezar el juego. -
Generación de Enemigos por el Servidor
En MMOs o juego abiertos, hay enemigos que son generados por el servidor. Puede usar VirtualUser para crear enemigos. La ventaja de esto es que los enemigos aparecerán a todos los jugadores en la misma ubicación y tiempo con la misma salud. Por ejemplo, esto puede ser una gran función para juegos co-op. -
Generación Gestores/Distribuidores
En muchos juegos de cartas, existe la necesidad de un distribuidor. Ya que cada cliente es un jugador, no existen distribuidores disponibles. Esto se puede hacer con VirtualUser. Puede crear un VirtualUser en cada sala y asignarle el AI para distribuidor.
Definitivamente mucho puede hacerse con esta nueva función y creo que les será muy útil a ustedes, desarrolladores. Por favor comparta sus casos en la sección de comentarios.
Muestra
Entendemos lo importante que es una muestra. Esto le ayudará a entender mejor y esta es la razón por la que hemos creado una muestra básica para usted. Puede tomar la muestra desde Aquí.
En la muestra de arriba, hemos creado usuarios virtuales así que si nuevos usarios se unen a la sala por 30 segundos, entonces el juego empezará. Desde esta muestra, estamos tratando con salas basadas en turnos, los usuarios virtuales también obtendrán su turno. La muestra simula un comportamiento básico para estos usuarios virtuales enviando movimientos por parte de los usuarios virtuales.
Por favor revise la codificación para entender mejor.
Conclusión
Los usuarios virtuales le permiten crear usuarios falsos en su juego. Son muy fáciles de implementar y no requieren de ningún cambio en la parte del cliente.
Leave A Reply