Senior Design TNT
Architecture

Project Pictures

DeathMatch in Maze
House
DeathMatch in Arena
House
PowerCraze in Maze
House
One V One in Arena
House
Settings
House
TwoVTwo in Arena
House
HalfHealth in Arena
House
PowerCare in Arena
House

TankNTank

Tank-N-Tank aims to develop an engaging PVE (Player Verses Environment) or PVP (Player Verses Player) tank battle game for the Android platform. Players will control a tank in a dynamic maze-like environment, or an arena style map battling to be the last remaining tank.

In this project, we used a variety of software including Unity, GarageBand and Procreate. Unity was the game engine which processes our code and what we used for programming it, GarageBand is what we used to write the music included in the game, and Procreate is what we used to design many of the graphical aspects of the game.

TNT includes many major aspects of programming, ones that is leaned on more than anything included object-oriented programming in C#. This is what allowed us to create many of the "at run-time" features that were implemented. By creating assests in the game, we were able to then write scripts that could process everything at run time allowing for the game to always randomly generate, including the weapons, AI, and environment.

The networking side of this project focused on taking the localized game core, and adding networking centric features. To do this, a lobby system was utilized to connect players to one another using a server authoritated system. This was one of the more challenging aspects of the game, due to network variation and latency. With this, we also implemented it where there was not a dedicated server, but one of the hosts acted as the server as well.

Although it is not entirely complete, we plan to implement server reconcilation, client prediction, more game modes and even different tank types that can be selected by the user.

Milestones

Milestone 1 (Global Matchmaking – Gabriel)- As we worked on creating a lobby system, we wanted it to be able to work over a variety of networks. Using Unity networking assests, we were able to create a lobby system and network manager that worked over different networks. TankNTank does not require you to be on the same network as other players, being a true online multiplayer experience.

Milestone 2 (Sprite and Animation development - Elisha)- In this iteration of the app, we worked on developing new tank sprites for the Enemy AI and new weapon sprite that allow the player to be able to see what weapon they currently have equiped.

Milestone 3 (Latency/ Security for Matchmaking – Gabriel) - Using the network manager and RPC, we were able to spawn in tanks on the network. This was built off of the local core. The goal has been to set up network objects that need to be able to spawn on the network such as the tanks, bullets, and the walls of the maze. Though not all issues are solved regarding spawning on the network, this is almost complete and handled regarding latency.

Milestone 4 (UI remodeling- Gabriel) – The lobby system is currently working allowing user to be able to join lobbys, including both a quick join and private lobby creation. A private lobby allows friends to play with one another specifically and quick join just allows user to join any lobby to play a match. The lobby system took a lot of time requiring a lot of rework with the UI. The network side worked relativly consistently; however, the UI caused issues with flow and lobby creation.

Milestone 5 (Network Programming for continuity in online matches – Gabriel) – The lobby is a unity service that I am using to create the lobby system. Netcode is dealing with network objects. Lastly “relay” (another unity service) is the last piece of the puzzle for all of them to create an online play. From my understanding netcode deals with the network objects but only locally if I do not have my own dedicated server, this is where “relay” comes in. It acts as a server so I can use Netcode to make this game work with online play.

Milestone 6 (Asset combination-Elisha)- Worked on creating assets that can work between all game modes and game play styles. Such as AI, players, weapons, and environments. These objects are what will be used to create different game modes and be available in both online and offline play. Game Mode script development is now being done to generate a scene based off presets for at run time generation of a game in one scene. Now you can see the barrel weapon type now on the tank.

Milestone 7 (Map Generation – Elisha) Working on updating run-time environment. This includes the spawn of enemies, players, weapons, power ups, traps and the environment. Spawning of players and AI at run time to be able to generate a game and can be used to then generate game modes. Now both Arena and Maze have randomly selected backgrounds that rotate in and out of usage. Fixed the maze generator in the online portion.

Milestone 8 (AI- Elisha)- Using a different pathfinding algorithm to create a better and smarter AI. With this, the goal will be to make an AI that avoids bullets, gets power-ups, and chases the player. This is a very long and complex script. But updated to use navmesh and run with all these assets cloned and generated at run time. Friendly AI and AI bugs are now fixed. All are operating correctly the way they should be. Helped Gabe fix the AI in the online portion of the game.

Milestone 9 (Sound incorporation - Elisha)- Worked on adding a volume setting controller for the background music. All sounds were incorperated using a mixer system. There are two mixers that connect all the special effects to one mixer and the music to the other mixer. These are then controlled using scripts that connect directly to the volume sliders. 10 hours researching/Coding

Milestone 10 (Bug Fixing – Elisha) – Working on adding winning and losing board that pop up upon losing or winning. This and setting windows have been incorporate within a pause menu. Added transitional data that now saves for the player. The volume, SFX volume and Camera Zoom sliders all now change to the corresponding amount when changed in game or in the settings menu in the main menu. Data transfering has been a huge issue causing bugs in the system since player preferences were not carried over. This has been adjusted by using a class structure that all scripts share. 20 hours researching/Coding

Milestone 11 (Game Modes – Elisha) – Working on the game mode script which directly control the settings used to generate both the maze and area on run time. The game mode setting currently has OneVOne, TwoVTwo, power craze, deathmatch and half health. We plan to develop more game modes in the futures and more customizability in later iterations that allow for more game modes to be developed without custom scripts needing to be written at time.

Our UCD presentation can be seen here.

Development Pictures

Lobby System With Network
House
Player Joins into Lobby
House
Two Players Connected into Lobby
House
Setting Screen
House
Lobby System
House
Lobby Join System
House
Private Lobby
House
Game Mode Script
House
Background Script
House
Spawn Script
House
Pause Screen
House
Network Refersh
House

About Us

John

Elisha Cooper

Senior

As a current senior a part of the Texas Wesleyan Computer Science Department, I have worked on this project nearly a year. On this project, I have been primarily responsible for run-time generation of the environment, asset creation, physic's engine and AI. My greatest asset is the identity and core of the game, which primarily is seen in the local gameplay aspect of this game

Jane

Gabriel Gomez

Senior

As a senior at Texas Wesleyan and a computer science major, I have worked on this project close to a year now. I have been primarily responsible for Graphic Design, UI creation/connections, networking and multiplayer. The areas of this game, especially the multiplayer aspect, are my largest contributions to the project and functionality of this game.