Project – Demo

this is a demo of our final project, a multiplayer videogame made with Unity.

chozaoop

Hey guys!

So we finally have an stable version of the Tanks Online game we did as a project!

Reminder: This game is not ours entirely, we got the game, then customized some stuff such as 3rd person camera, aim freely, visual filters, power ups, respawning, and most importantly a multiplayer capability we learned at the Unity Roadshow about 2 or 3 weeks ago.

Here’s a video showing some gameplay:

We had been testing the game on Ken’s class, it has been fun and it’s looking real different from the first version, Hermes freaking rocks!

While testing we detected some bugs and errors in general, Hermes then fixed it and also added some stuff. We also noticed how the game becomes less stable the more people enters a game, so let’s say it’s a good 1v1.

Ver la entrada original

Project Update #4

So we’ve finished the tutorials and we will start creating our own game.

As a reminder, our objective in the course is to explore and learn about the Unity engine, game logic and how game objects work.

In the last couple of days we implemented a system to create different tanks in the same scene, the logic to control the game flow and audio mixers.

The tank manager is a script that controls that instantiate a tank in the scene, setting its new color, and defines several methods to modify the behaviour of the tank, like disabling control.TankManager.png

The Game Manager is a script that controls the game (duh), setting the targets for the camera (because there could be different number of tanks), and have different functions that are executed based in the current state of the game (i.e.: starting a round, playing, finishing). We can archive this thanks to coroutines, which are functions that can pause its execution and return to the normal flow of unity (updating the frame, etc.) and then continue executing where it left.GameManagerCode.png

So the Game Manager just defines the number of rounds to win, the delay time to start (a countdown), controls the targets of the camera, instantiates the tanks and the Manager also keeps track of the state of the tanks (to finish the game when there is only one tank left in the scene).

GameManager.png

The starting delay just shows the text “tanks!”.

Text.PNG

The audio mixer is just like a filter to all the audio sources that the game have, you can just create one in the project folder.CreateAudioMixer.png

You can also create sub-mixers, so you can divide the sounds of the game and apply different filters to it, in addition to the main mixer.

Attenuation.PNG

In the output field of the audio source of the different objects you can select the audio mixer that you want that sound belong to.

DrivingTankAudio.png

And as you can see in the images you can add filters, modify the pitch, level, attenuation and other things until you are satisfied with the sound effects of the game.

The next idea is to create an interface to interact with the tank and game manager scripts. This interface will let the player to set some properties for the game (like adjusting the damage, the force and the color of the tank).

Project Update #3

We are almost on the end of the tutorials, I guess we will finish it and start creating the modified game by Wednesday. Because there are a lot of things we’ve done and there is no much time to explain everything, I’ll just add some images and briefly explain what they are.

This part is about creating the tank health, UI and logic. So I started adding a slider. Because the canvas is it’s own space it’s needed to change the Render mode to World Space.

Canvas

I moved the slider under the tank, changed its size and deleted the thing to move its value.

canvas2

I changed the default image by this one, it is a circle with a gap in the middle. Also changed the slider mode to radial (so it fills clockwise and not left to right).Canvas3

I added the script to control the health slider, I used color interpolation to calculate the color needed in the cicle and set the value of the slider based in the health of the tank.

chap3

And now you can see that the tank has a green circle around it. There’s also a explosion animation for the tank, when the healh of the tank reaches zero, an explosion animation is created in the same position as the tank and the tank object is deleted from the scene.

explosinThis part is about creating the shells prefabs.

First I added the shell model to the scene, added a Capsule collider to it, checked Is Trigger (to trigger a method when it collides with a tank), and also a light.

Shell

Here’s some code that goes in the Shell. When it collides it searches for tanks (that are in a special layer that groups all the tanks), calculates its distance to the tanks and apply a force and a damage to the tank according to that distance. When the shell touches something, it plays an explosion animation and deletes the shell object. Also, the shell is automatically deleted after it’s been two seconds in the scene (to avoid having around shells that, for some reason, never collided).

explosionScript

Here you can see, I dropped a shell in the scene, it exploded and the tank taked damage.shellExplosionNext part is about shooting shells, I added another slider, changed the image to the yellow arrow and set its position in front of the tank.

FireShellUI

Here’s the code that allows the tank to shoot. The tank can charge its shoot and when the player releases the shoot key, a new instance of the shell prefab is created, and its velocity and direction is calculated according to the tank position, rotation and the amount of time that the player pressed the key. It also sets the value of the slider to the value of the charge amount, so the player can see the arrow growing when they press the fire button.ShellShootCode

And here you can see the tank rotating and firing shells!shootingShells

Next in the list is creating a manager to handle the spawning of tanks.

Project Update #2 (and change)

We are changing our project for something simpler due to time and lack of Unity knowledge, it’s still a game though.

So the new project is about a tank fight videogame, we’ll do this game following the Unity tutorial Tanks tutorial, and this way we will learn how to use Unity and create the project.

But of course we won’t just deliver a videogame someone else made, the idea is to complete the tutorial and then use the same assets and modify the game so that it looks and plays different.

This is what we have so far.

chap3

Untitled

We have the scenario, the camera logic (calculating were it shoud be looking at, according to the tanks position) and the tank movement (input and particle effects).

More information will be availible soon, please contact your #TC201 provider.

Project update #01

the team members are:

  • Hermes Espínola González
  • José Andrés Choza
  • Juan Salvador Fernández
  • Gerardo Cruz

The idea of the project is create a video game where the objective is fight in an arena.
Due to the fact that we don’t know anything about 3D modeling and animation, we will use creative commons assets from the unity asset store.
We have already implemented the movement of the character.

PlayerMovement

For the artificial intelligence we will be using a plugin for unity called RAIN. We are reading the documentation and trying to create our first AI character.