A 50-days-long, open-source reverse engineering project made by jupiterbjy and ruminex, as part of Hongik-University Graduation Project.
Armada Tanks are developed by these wonderful developers:
- Denis Kotov: Game Design, Programmer, Level design, Art & Graphics
- Pasha Oliynyk: Art & Graphics
- Yaroslav Yanovsky: Producer
- Message: Music Composition, Sound Design
Initial Gameplay Demo (Linux / Windows)
Android on-screen joystick Demo
This project was awarded 2nd place in 2023 Hongik Univ. CS Graduation Project Public Display.
We didn't expect this much popularity among public display, our sincere thanks to professors, juniors, seniors, and many more for playing at our booth!
No external godot plugins or resource (other than Armada tanks') were used - pure Godot + python + ClipStudio Paint.
Contains Markdown documents produced from our reverse-engineering efforts & few helper scripts.
Majority of project's efforts went into this decoding part.
Resulting scripts of reverse-engineering efforts on Armada Tanks's seemingly own in-house format.
- ImageFontSplitter: Old script for splitting each letters from font image. No longer used.
- DF2FNT:
*.df
font format conversion script. Converts fonts into AngelCode's BMFont format. - DTM2Blender: DTM model reconstruction & model definition reconstruction script. Uses black magic trickery to allow Blender's GLTF exporter export mesh, UV and vertex animations properly.
- Tex2JSON:
texture*.scr
texture definition scripts reconstruction script. Also translates DX8 Blending specifiers.
Collection of hand-crafted models.
- CustomResources/Images: Images made from scratch in paint.net or with blender. Refer README.md for details.
- CustomResources/Models: Models made from scratch in blender. Refer README.md for details.
Considering that original game Armada Tanks is officially free - I decided to distribute current build. But since this being open source repo, I can't simply put that as release here, as it clearly contain ENKORD's textures or audios that can't be open sourced - so will be hosting it separately on Google Drive.
By downloading OpenAT Builds, YOU ARE AGREEING TO ALSO DOWNLOAD THE ORIGINAL GAME.
Currently game is built for:
- Windows
- Linux/X11
- Android (Main game requires keyboard and mouse for now)
Since this being open-source repository, all the game's source codes are open, however you'll need to follow few more steps to fill in the missing files.
- Download & install original Armada Tanks game from Official site.
- Follow instruction.
- Open
GodotProject/project.godot
in Godot Editor - Play or download build templates and build yourself!
Version 1 was made before OpenAT - Back then it was called Open Armada. That project was made as a homework-ish Unity project for Computer Graphics lecture in Hong-Ik University.
During that project, we failed to decode Armada Tanks for the entire full week.
Game - despite it's simplistic looks - was VERY complex in design, that we couldn't find a single right thing about it back then.
Therefore, at least a working stuff resembling even tiny bit of it had to be done under about 72 remaining hours. Those models used there were Just-In-Time(quite literally) model for use in impending doom called 'Deadline'.
Quality therefore, was quite miserable.
After failing our original Graduation project, we started working on Armada Tanks again, but from scratch. We only had 50 days till submission and public display.
We thought we could reuse all the thing we did in Unity, and pushed on researching about how we could utilize Armada Tanks resources.
We surely can't simply read x86 ASM as this game seemingly uses DirectX 8.0 directly, however if we could utilize original resources, our project could be run like one of my favourite OpenRCT - by just designating resource path.
Obviously this (and so many much more black magic Armada Tanks implements) was seemingly almost impossible in Unity. So, we nailed down for using godot instead of unity. Not to mention unity's self-destruction with their TOS changes!
During a bit short of a month's hardship, project finally is starting to (at least) run.