Draft:Tonk

From Esolanging
Jump to navigationJump to search
This page is a Work-In-Progress. It may change in the future.

Tonk is an esoteric "programming language" by User:AnalysisOfVariance in 2026 based on the tank game Woomy-Arras.io. However, it is less like a programming language and more like Conway's Game of Life, as it is a zero-player game.

Tonk is based on the 2TDM (Team Deathmatch) mode, with a 9750x6500 map ported from the game.

Program structure

Programs in Tonk are structured like this:

Red Team
    Player Name
        Player
        1/1/1/1/1/1/1/1/1/1
        1
Blue Team
    [AI] Bot Name
        AI
        1/1/1/1/1/1/1/1/1/1
        1

Leaderboard
    Player Name - Annihilator - 59.21k
    [AI] Bot Name - Mini Asteroid - 32.15k

Max Players: 100
Bot Amount: 100
Map ID: 1234abc
    ~~~~ ~~~~ .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ==== ====
    ~~~~ ~~~~ .... .... .... OOOO .... .... .... OOOO OOOO .... .... .... OOOO .... .... .... ==== ====
    ~~~~ BBBB .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... RRRR ====
    ~~~~ .... .... .... .... .... .... .... .... OOOO OOOO .... .... .... .... .... .... .... .... ====
    ~~~~ .... .... .... OOOO .... .... .... .... .... .... .... .... .... .... OOOO .... .... .... ====
    ~~~~ .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ====
    BBBB .... .... .... .... .... .... .... .... """" """" .... .... .... .... .... .... .... .... RRRR
    ~~~~ .... .... .... .... .... .... OOOO """" """" """" """" OOOO .... .... .... .... .... .... ====
    ~~~~ .... .... .... .... .... .... """" """" """" """" """" """" .... .... .... .... .... .... ====
    ~~~~ .... .... OOOO .... .... """" """" """" OOOO .... """" """" """" .... .... OOOO .... .... ====
    ~~~~ .... .... OOOO .... .... """" """" """" .... OOOO """" """" """" .... .... OOOO .... .... ====
    ~~~~ .... .... .... .... .... .... """" """" """" """" """" """" .... .... .... .... .... .... ====
    ~~~~ .... .... .... .... .... .... OOOO """" """" """" """" OOOO .... .... .... .... .... .... ====
    BBBB .... .... .... r..b .... .... .... .... """" """" .... .... .... .... .... .... .... .... RRRR
    ~~~~ .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ====
    ~~~~ .... .... .... OOOO .... .... .... .... .... .... .... .... .... .... .... .... .... .... ====
    ~~~~ .... .... .... .... .... .... .... .... OOOO OOOO .... .... .... .... OOOO .... .... .... ====
    ~~~~ BBBB .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... RRRR ====
    ~~~~ ~~~~ .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ==== ====
    ~~~~ ~~~~ .... .... .... OOOO .... .... .... OOOO OOOO .... .... .... OOOO .... .... .... ==== ====

Program files are meant to represent the initial game state plus an overview.

Team players

At the top are the players for the red team and blue team. A team player may be specified like this:

    [Player Name]
        [Player|AI]
        Body Damage/Max Health/Weapon Speed/Weapon Health/Weapon Penetration/Weapon Damage/Reload/Movement Speed/Shield Regeneration/Shield Capacity
        [Spawn Order]

The first line is the player name. If the player is a "human", then this can be anything. If the player is a bot, then it must start with "[AI]" and begin with a name from the list of bot names, including the long removed one.[1]

The second line determines whether the player is a "human" or AI. AI players have the same AI as in the real game, however Player ("human") players have smarter AI but have a more realistic FOV, for example player players using the M-61, Transmitter, or Hephaestus with high Weapon Speed will stay further away from enemies while shooting in the general direction of their enemies, Overload users will tend to move slower and keep their drones close, but if they see a weak AI player then they will massacre them. Player players can only move in the four cardinal directions or a combination of perpendicular directions (so 8 directions), while AI players can move in any direction just like in the real game.

The third line determines the stats of the player's tank. The skill points spent must not be greater than 42, they must be valid (i.e. no greater than 9 or 12 or something else depending on the stat), and they must be according to the tank. For example, Orbital Strike would not have Weapon Speed, while Chinook would not have Weapon Speed, Weapon Health, Weapon Penetration, Weapon Damage, and Reload.

The fourth line determines the spawn order. Simply put, this refers to the index starting at one of the point on the map this will spawn at. In the small example map below, a tank on the red team with an index of 1 would spawn at the first r, while a tank with an index of 2 would spawn at the second r. Players may share the same index.

    ..b. .... .b..
    .... ""r" ....
    .... .... .r..

Leaderboard

The starting leaderboard determines the players' tanks. (even though they should've been up there) An example leaderboard could look like:

Leaderboard
    [AI] bent boomer is bad - Bent Boomer - 91.73k
    4NAX - Rocket Ball - 59.21k

AI tank restrictions

Some AI names have some restrictions to the tanks they can use, however. As of now, the restrictions are:

  • [AI] bent boomer is bad can ONLY use Bent Boomer. Anything else results in an error.

Max players and bot amount

Max Players simply determines the maximum amount of "human" players. Currently, it does nothing other than error out when you have more "human" players than the limit.

Bot Amount determines the maximum amount of bots that can spawn. Since bots spawn randomly on a random team at a random position, this can be helpful to control program behavior a tiny bit for small programs utilizing few bots. This can be set to zero to have no bots.

Map

Map ID is a 9-digit hexadecimal number in lowercase. Currently, it does nothing.

The map is ASCII art of the 2TDM map in Woomy, with the initial positions for red team players being marked with r and blue team players being b.

Players' exact spawn positions are randomized within the sub-cell, with each cell of the map containing 4 sub-cells horizontally.

For the ASCII art of the map, ~~~~ is a blue team base cell, BBBB is a blue team base cell with a blue base defender, ==== is a red team base cell, RRRR is a red team base cell with a red base defender, OOOO is an obstacle, """" is a pentagon nest cell, and .... is an empty cell. In the actual game's configuration file for 2TDM, they would respectively correspond to n_b1, bas1, n_b2, bas2, roid, nest, and norm. The horizontal spaces between cells (for example, the space in ~~~~ ~~~~) are just to make the ASCII art look nicer. However, they must be preserved. The ASCII art does not have to be preserved, however. However it would be nice if you did.

Commands

Template:WIPsec

Commands are based on the interactions between entities.

Tank commands are assigned based on their branches.

Tanks

Examples

One Time Cat

Since Tonk programs never halt, this program does not halt as well and will produce unpredictable results after you input your byte. Also, a shape or a sanctuary might spawn between any of these tanks, completely ruining the program.

Red Team
    Kasane Teto
        Player
        2/6/3/4/6/8/6/2/0/1
        1
Blue Team
    [AI] Hatsune Miku
        AI
        2/6/7/4/6/8/6/2/0/1
        1
    [AI] Have you considered how many of us you killed
        AI
        0/0/0/0/0/0/0/0/0/0
        2

Leaderboard
    Kasane Teto - Annihilator - 65536
    [AI] Hatsune Miku - M-61 - 59221
    [AI] Have you considered how many of us you killed - Basic - 0

Max Players: 1
Bot Amount: 2
Map ID: 45fc91d
    ~~~~ ~~~~ .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ==== ====
    ~~~~ ~~~~ .... .... .... OOOO .... .... .... OOOO OOOO .... .... .... OOOO .... .... .... ==== ====
    ~~~~ BBBB .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... RRRR ====
    ~~~~ .... .... .... .... .... .... .... .... OOOO OOOO .... .... .... .... .... .... .... .... ====
    ~~~~ .... .... .... OOOO .... .... .... .... .... .... .... .... .... .... OOOO .... .... .... ====
    ~~~~ .... .... .... .... b... .... .... .... .... .... .... .... .... .... .... .... .... .... ====
    BBBB .... .... .... .... .... .... .... .... """" """" .... .... .... .... .... .... .... .... RRRR
    ~~~~ .... .... .... ..br .... .... OOOO """" """" """" """" OOOO .... .... .... .... .... .... ====
    ~~~~ .... .... .... .... .... .... """" """" """" """" """" """" .... .... .... .... .... .... ====
    ~~~~ .... .... OOOO .... .... """" """" """" OOOO .... """" """" """" .... .... OOOO .... .... ====
    ~~~~ .... .... OOOO .... .... """" """" """" .... OOOO """" """" """" .... .... OOOO .... .... ====
    ~~~~ .... .... .... .... .... .... """" """" """" """" """" """" .... .... .... .... .... .... ====
    ~~~~ .... .... .... .... .... .... OOOO """" """" """" """" OOOO .... .... .... .... .... .... ====
    BBBB .... .... .... .... .... .... .... .... """" """" .... .... .... .... .... .... .... .... RRRR
    ~~~~ .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ====
    ~~~~ .... .... .... OOOO .... .... .... .... .... .... .... .... .... .... .... .... .... .... ====
    ~~~~ .... .... .... .... .... .... .... .... OOOO OOOO .... .... .... .... OOOO .... .... .... ====
    ~~~~ BBBB .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... RRRR ====
    ~~~~ ~~~~ .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ==== ====
    ~~~~ ~~~~ .... .... .... OOOO .... .... .... OOOO OOOO .... .... .... OOOO .... .... .... ==== ====

Display

There is also a display to allow the user(s) to watch the program execute. However, there can optionally be multiple displays from separate clients, either on the same machine or over the network. The display is exactly like that of the actual game.

See also

Notes and references

  1. ↑ The long name in question is "UWU OWO LMFAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOUWU OWO LMFAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOUWU OWO LMFAOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO". It was removed and replaced with "UWU OWO LMFAOOOOOO" because it was too long and would vastly overshoot the leaderboard whenever it was on there.