Skip to content

My 1st year game project for City University of London Java module.

Notifications You must be signed in to change notification settings

Supermarcel10/BattleArmourGame

Repository files navigation

Game "Battle Armour"

CONCEPT

This game is heavily inspired on the arcade game Tank Battalion, created by Namco, released in 1980. The original game was created and originally released in Japan under the name of "タンクバタリアン (Tanku Batarian)". A year later it was released to the US market.

The game was later re-released with drastic improvements under the name of Battle City as well as Tank Force.

This project will be a general recreation of the original 1980 game in Java. The idea is that the game runs on Windows, Mac and Linux with no emulation required.

My version will be implementing something similar to the original game, with a smoother FPS and smoother movement. I will also make custom perks and balance the game in the way I believe it is difficult enough to be engaging, but still physically doable.

GAMEPLAY

GameplayGameplay

The game features both single player and co-op modes.
Players can move around the map and shoot bullets at enemies and blocks.
The idea of the game is to get the highest score and compete with other teams and players.
Skill and intuition are also a big part of the game, as the player(s) can dodge bullets, destroy enemies and blocks as shown on the image.
There are plenty of perks which can be picked up by the player(s) to give them an advantage whilst making the game more interactive.

Different enemy types also have different properties, such as the exploding enemy which explodes on death.

A procedural spawning system is in place, which means that enemies will Spawn Indicator Block spawn forever, until the player(s) lose. The high scores are stored in a database, which can be accessed from the main menu to see their high scores.

Once the players get bored with the game, they can also create their own maps and play on them. They can also share them with other players. New textures and blocks with customised properties can also be added to the game to change up the mechanics.

OPTIONS

Settings Overview

The options UI menu is currently in development. It will feature the ability to change the controls, resolution and sound volume without needing to restart the game. All settings except for fullscreen are implemented. As of right now, you can manually change the settings by altering the Config.java file.

The settings include:

  • Resolution - the game will always target the biggest square resolution possible, so if you have a 1920x1080 monitor, the game will target 1080x1080.
  • Fullscreen - the game will run in fullscreen if this is set to true.
  • FPS limit - the FPS limit of the game. A value between 0 and 240.
  • Sound volume - the volume of the sound effects. A value between 0 and 1.
  • Music volume - the volume of the music. A value between 0 and 1.
  • Controls - the basic controls of the play menu.

CONTROLS

The controls can be customized in the options' menu.

Player Movement Controls Shooting Control
Enemy Spawn Block 1 W A S D SPACE
Enemy Spawn Block 2 ENTER

ENEMIES

Enemy Information

Enemies are the main threat to the player. They will try to destroy the player(s) tanks and the base.
Enemies will procedurally spawn forever, until the player(s) lose.
The higher the score, the faster enemies will spawn.
The spawn tables are also weighted; the higher the score, the more likely it is for a higher tier enemy to spawn.
With co-op, the spawn rate is increased to leverage the advantage of having more players.

Enemy Types

Image Enemy Type Description
Basic Tank BASIC Weakest enemies. They are the fastest and have the least health.
Heavy Tank HEAVY Strongest enemies. They are the slowest and have the most health.
Fast Tank FAST Fastest basic enemies.
Exploding Tank EXPLODING Special type of enemy that explodes on death, dealing damage to the player and damaging all nearby blocks. They prefer to target the base over the player.

PERKS

Perk Information

Perks are special items which can be picked up by the player to give them an advantage.

All perks have a timer. One the timer runs out the perk will be taken away from the player.
Some perks also have additional properties, such as the Penetrating Bullets Perk PENETRATING BULLETS perk, which has a limited number of uses.

Perk Stacking

Certain perks can be stacked, and will have slightly different implementations.
For example, the Double Damage Perk DOUBLE DAMAGE perk can be stacked as many times, giving the player a chance to one tap heavies or bricks.
The Shield Perk SHIELD perk can be stacked as many times. Picking up will reset the timer for the shield.
The Quad Shot Perk QUAD SHOT perk can be stacked as many times, it resets the number of available quad shots as well as the timer.

Perk Spawning

Perks have a chance to spawn when an enemy is killed. The chance of a perk spawning is 1 in 5.
The choice of perks is random, but the chance of a perk spawning is the same for all perks.

Perk Types

Image Perk Type Description
Quad Shot Perk QUAD SHOT Allows the player to shoot 4 bullets at once in each direction.
Double Damage Perk DOUBLE DAMAGE Allows the player to deal double damage to blocks and tanks.
Shield Perk SHIELD Allows the player to take 1 hit before dying.
Speed Boost Perk SPEED BOOST Allows the player to move faster.
Fast Shot Perk FAST SHOT Allows the player to shoot faster.
Bullet Propulsion Perk BULLET PROPULSION Allows the player to shoot further/faster.
Penetrating Bullets Perk PENETRATING BULLETS Allows the player to shoot through multiple enemies.
Explosive Bullets Perk EXPLOSIVE BULLETS Allows the player to shoot bullets which explode on impact. (WIP)

BLOCKS

### Block Types
Image Block Name Description
Base Block BASE Base the players are protecting from enemies.
Brick Block BRICK Destructible blocks which can be destroyed by the player.
Edge Block EDGE Indestructible blocks placed around the map to prevent the player from moving out and provide balance.
Water Block WATER Special blocks allowing shots through but preventing movement.
Leaf Block LEAVES Blocks that obstruct the view of tanks traveling below.

Automatic block adding system

Blocks can also be easily added to the game by adding a new block type to the BlockType enum, as well as adding a new image to the resources/images/blocks folder named the same as the enum. The game will automatically pick up the new block type and use the image. You will be able to use the build menu to create a game with the new block type and play a round with the new textures!

Build mode exclusive blocks

The build mode also features a block type called NONE. This block type is used to remove blocks from the map.

Enemy Spawn Block ENEMY SPAWN and Player Spawn Block PLAYER SPAWN designated blocks are also used in build mode to place the spawn points for the enemies and players. There can only be 2 player spawn points and unlimited enemy points. The game will automatically pick up the spawn points and use them in the game.

BUILD MODE

Build Mode

The build mode allows the player to create their own maps, share them and play them. To load a map, the player must press L on the keyboard. This will open a file chooser, where the player can select a map file to load. The map file must be a .level file. The validity of the map file is checked upon loading.

To save a map, the player must press ESC on the keyboard. This will open a file chooser, where the player can select a map file to save to. The map file must be a .level file. The validity of the map file is checked upon saving.

To quit without saving, the player can press BACKSPACE on the keyboard.

To place a block, the player can left-click on the mouse.
To cycle through the block types the player can right-click on the mouse or use SPACE.

HIGH SCORE

High Score Screen

The high score system stores all scores in a database. This database is currently local, but it's possible to have a remote database. The high score system is also used to store the player's name, which is used in the high score table. If a player has played on a map before, and they achieved a higher score, their name will be updated in the database.

Each level has a different high score table.
When saving or selecting a file to display data for, the files are hashed and the hash is used to identify the level.
This prevents cheating by editing the files to get a high score.

Planned features

  • Adding new pickups like explosive bullets (partially complete)
  • Settings to change the controls and resolution (partially complete)

Copyright & Disclosure

Art

Some pieces of art are DALL.E generated images, which are licensed under the Creative Commons Attribution 4.0 International License. These pieces are edited by me to fit the game. Other pieces are created by me in Illustrator and Piskel.

Code

All code is written/authored by me, unless otherwise stated.

Imported additional libraries are licensed under their respective licenses, and created by their respective authors.
These libraries include:

Fonts

PressStart2P font is used in this project, which is licensed under the SIL Open Font License. The font is created by CodeMan38 and can be found here.

Sounds

The following utilised sounds are created by Dark Fantasy Studio and are licensed under the Dark Fantasy Studio Licence. These tracks are paid for and are NOT free to use. To receive a licence in your name, you must purchase the tracks from Dark Fantasy Studio.

  • Tank Shot (Album: Earth Spell)
  • Block Break (Album: Earth Spell)

The following utilised sounds are created by Mixkit and are licenced under the Mixkit Sound Effects Free Licence.

  • Button Click
  • Game Over
  • Game Start
  • Power Up (High)
  • Power Up (Low)
  • Player Dead
  • Player Move
  • Main Menu Music

The following utilised sounds are created by ZapSplat and are licenced under the Standard Licence.

  • Tank Explode

Music

The below utilised music tracks are created by Joel Steudler and are licensed under the Joel Steudler Music Licence. These tracks are paid for and are NOT free to use. To receive a licence in your name, you must purchase the tracks from Joel Steudler's website.

  • Battle At The Stones
  • Fight or Flight
  • Heroes Rise
  • Honorbound Army
  • Rise Above Darkness
  • Warband Marauders
  • Wasteland Warrior

The below utilised music tracks are created by Dark Fantasy Studio and are licensed under the Dark Fantasy Studio Licence.
These tracks are paid for and are NOT free to use. To receive a licence in your name, you must purchase the tracks from Dark Fantasy Studio.

  • Venom

About

My 1st year game project for City University of London Java module.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages