MCPcopy Index your code
hub / github.com/aehmttw/Tanks

github.com/aehmttw/Tanks @v1.6.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.6.1 ↗ · + Follow
5,061 symbols 19,462 edges 677 files 130 documented · 3%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Tanks: The Crusades

Tanks: The Crusades is a game written in Java inspired by Wii Play's Tanks.

There are over 20 unique enemies you can fight, but you can add more of your own too.

The game supports Windows, Mac and Linux.

Tanks can be found on Steam, itch.io, and the iOS App Store

How to play

Controls:

Use the arrow keys or WASD to move

Left click or click space to shoot

Right click or press enter to lay a mine

Press escape to pause the game

Level Editor controls:

Left click to place

Right click on an object to destroy it

Right click on nothing to rotate the object you are placing

Press up and down arrow keys or scroll to cycle enemy tanks

Press left and right arrow keys to cycle enemy tank, obstacle, player tank

Press space to access the object menu

Press escape to change level settings

Press enter to play your level

The following are three screenshots of the game in action. The user controls the azure blue tank using the mouse or keyboard.

Gameplay Gameplay Gameplay

Installation

To use the game you need to install Java. For this purpose you may need administrator privileges to install software on your machine. You can install Java from java.com. The minimum Java version is Java 8.

You can download the jar file for Tanks. To run the jar file you can double-click on it.

Development

To develop the game we suggest using Eclipse or IntelliJ. Eclipse can be installed from eclipse.org. IntelliJ can be installed from jetbrains.com.

To access the source code you also need to install Git.

Gradle Build (Recommended)

It is recommended you use gradle to build Tanks using the following commands:

Windows

./gradlew.bat clean build

Unix (OSX, Linux, etc.)

./gradlew clean build

IDE Build

You will need to add the following libraries to the build path of the project:

PNGDecoder by Matthias Mann in TWL

Netty

All the jars and natives of the following LWJGL libraries:

LWJGL (core)

OpenGL

OpenAL

GLFW

Assimp

STB

Commons IO

Steamworks4j

You can all download these libraries in zip format from here.

Please note - Tanks uses a custom version of Steamworks4j compiled with Mac OS arm64 natives. We recommend you use the libraries linked above, because they contain that modified Steamworks4j library.

Credits:

Main Developer:

Matei Budiu (Aehmttw)

Code Contributors:

Karan Gurazada

Hallowizer

Grify

Mihai Budiu

Panadero1

Arkar Tan

Pythonmcpi

Cool TM

QazCetelic

Lancelot

Parth Iyer (ghostlypi)

brodiscool0902 on Discord

Blimpdxmk2

NekoSora

Comet

Supporters:

SapphireDrew

Special Thanks:

Everyone from the Tanks Discord who helped with ideas and bugs!

Font License

This game uses the Source Han Sans typeface ("思源黑体"), licensed under the SIL Open Font License 1.1.
Copyright © 2014-2025 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'.
Source is a trademark of Adobe in the United States and/or other countries.

Extension points exported contracts — how you extend this code

IServerPlayerTank (Interface)
Represents a player's tank on the server - either a TankPlayer or a TankPlayerRemote (No tanks on the field will impleme [7 …
src/main/java/tanks/tank/IServerPlayerTank.java
IBlankBackgroundScreen (Interface)
Used for the tank editor so that the background behind it doesnt include the obstacles [12 implementers]
src/main/java/tanks/gui/screen/IBlankBackgroundScreen.java
BiFunction (Interface)
(no doc) [20 implementers]
src/main/java/tanks/BiFunction.java
IDrawableWithGlow (Interface)
(no doc) [9 implementers]
src/main/java/tanks/IDrawableWithGlow.java
IDrawable (Interface)
(no doc) [276 implementers]
src/main/java/tanks/IDrawable.java

Core symbols most depended-on inside this repo

get
called by 1370
src/main/java/basewindow/ShaderProgram.java
draw
called by 943
src/main/java/tanks/gui/ITrigger.java
update
called by 890
src/main/java/tanks/gui/ITrigger.java
size
called by 754
src/main/java/tanks/gui/screen/leveleditor/EditorClipboard.java
setColor
called by 541
src/main/java/tanks/gui/screen/leveleditor/OverlaySelectColorAndNoise.java
add
called by 464
src/main/java/tanks/network/SynchronizedList.java
displayInterfaceText
called by 425
src/main/java/tanks/Drawing.java
set
called by 420
src/main/java/basewindow/ShaderProgram.java

Shape

Method 4,187
Class 771
Interface 79
Enum 23
Function 1

Languages

Java100%
Kotlin1%

Modules by API surface

src/main/java/tanks/Drawing.java103 symbols
src/main/java/tanks/tank/TankAIControlled.java89 symbols
src/main/java/lwjglwindow/ShaderUtil.java84 symbols
src/main/java/lwjglwindow/LWJGLWindow.java78 symbols
src/main/java/tanks/gui/screen/leveleditor/ScreenLevelEditor.java62 symbols
src/main/java/basewindow/ShaderProgram.java61 symbols
src/main/java/tanks/Chunk.java60 symbols
src/main/java/tanks/Game.java58 symbols
src/main/java/basewindow/BaseWindow.java57 symbols
src/main/java/tanks/gui/screen/ScreenEditorPlayerTankBuild.java54 symbols
src/main/java/tanks/Movable.java52 symbols
src/main/java/tanks/tank/Tank.java47 symbols

For agents

$ claude mcp add Tanks \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact