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.
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 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.
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.
The controls can be customized in the options' menu.
Player | Movement Controls | Shooting Control |
---|---|---|
![]() |
W A S D |
SPACE |
![]() |
↑ ↓ ← → |
ENTER |
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.
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, which has a limited number of uses.
Certain perks can be stacked, and will have slightly different implementations.
For example, the DOUBLE DAMAGE perk can be stacked as many times, giving the player a chance to one tap heavies or bricks.
The SHIELD perk can be stacked as many times. Picking up will reset the timer for the shield.
The QUAD SHOT perk can be stacked as many times, it resets the number of available quad shots as well as the timer.
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.
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!
The build mode also features a block type called NONE. This block type is used to remove blocks from the map.
ENEMY SPAWN and
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.
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
.
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.
- Adding new pickups like explosive bullets (partially complete)
- Settings to change the controls and resolution (partially complete)
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.
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:
- city.cs.engine - unknown licence
- javazoom.jlayer - licenced under the Lesser General Public License (LGPL) version 2.1
- org.xerial.sqlite-jdbc - licenced under the Apache License, Version 2.0
- org.jetbrains.annotations - licenced under the Apache LSicense, Version 2.0
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.
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
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