Skip to content

AIP21/WAT-Vis

Repository files navigation

WAT:Vis (Where Are They? : Visualizer)

WAT:Vis is a tool to decode player positional data and visualize it in an intuitive and interactive way while also providing incredibly useful analytical insights for game developers and game server owners using artificial intelligence and machine learning algorithms. Currently it supports only data in a .txt file but .csv support is coming soon and custom format support is planned. Originally, this tool was made to visualize data from the game Minecraft, but this project has grown to be more useful for more broader applications than just Minecraft.

Links to the original Minecraft mod: Modrinth or Curseforge or Github

Currently (although not for long), this only supports one data format. See the Data Format section below for more details on the structure of the the data this tool supports.

I made this (and the minecraft mod) as a fun project to learn more about Java.

Setup and running the program

The program should do all of its necessary setup automatically. If something goes wrong, create folders in the run directory titled "configs", "logs", "inputs", "outputs", and "worldImages".

  1. Put the .jar file in an empty folder
  2. Run the .jar file

Now you are good to go, just import your data using the button on the top bar!

Folder Setup

There are four main folders that are created in the run directory:

  • "configs": Contains the config files.
  • "inputs": Put any input data in this folder.
  • "outputs": Any exported images are put in this folder.
  • "worldImages": Put any world images in this folder.
  • "logs": Contains the log files generated by the tool. If you find a bug or problem, include the necessary log file in you issue.
  • ".downloads": Contains the assets used for doing the seed mapping. They are downloaded from mojang.com and are the property of Mojang AB.

Features

  1. Display all the data that you imported.
  2. Display a desired date range or a single point in time.
  3. Animate the time to see players moving around as time passes.
  4. See a list of all the players in the data, how many data entries they have, and either change their marker color or disable them entirely.
  5. Select individual or multiple points and see their information. This includes the date, player name, and position. Select every point with Control+A, drag right click to select an area, Shift+Click to select multiple points, Control+Click to select hidden points.
  6. Right click to open a menu to either hide or show selected points. Hold control to show hidden points.
  7. Represent the data in four ways: Pixels, Dots, Lines, or a Heatmap.
  8. Option to fade out data based on its age.
  9. Set a threshold for line lengths in order to prevent long lines that result from data inaccuracies.
  10. Option to show lines hidden by the threshold.
  11. Import a background image of the data's world so that you can see where players are in correspondance to the environment.
  12. Extensive configuration for almost everything
  13. Ability to export a view of all the data in one image or take a screenshot of the current view.
  14. Dark/Light mode so you don't burn your eyes.
  15. (Just for Minecraft) World mapping using a seed. Just input your world seed and version when importing data and it will map out the biomes for you.
  16. Automatically fetches updates from github and asks you if you want to update.
  17. (COMING SOON) Custom data format support. Specify how your data is formatted an the tool will import the data accordingly.
  18. (COMING SOON) Insights. The tool will automatically analyze and create a data dashboard for you. It will contain tons of useful graphs and information about your data. It also will be configurable so that you can arrange and include only the information you want.
  19. And some other stuff I probably forgot to write here.

Data Format

The data is formatted in a specific way, and can only be read in that way (for now, this will change). Here is an example line of data:

21:25:29; Player24; (-98, 65, -1460);

Each "chunk" of data (excluding the last chunk) is separated by a semicolon and a space ("; ").

The first chunk of data, 21:25:29, is the time of the entry, formatted in "HH:mm:ss" (hours, minutes, seconds). It uses the local time of the server or computer that logged this data, NOT the player's local time.

The second chunk of data, Player24, is the name of the player whom this log is of. It could be the player name, their account or player id, or anything else that identifies them.

The third chunk of data, (-98, 65, -1460), is the position of the player in the environment. There are currently two formats for the position: 1) As an integer 3-dimensional vector, formatted and ordered in (x, y, z). Or, 2) As an integer 2-dimensional vector, formatted and ordered in [x, z]. The first format must use parenthesis and the second one must use brackets, this is how the code differentiates between the two formats.

The entry ends in a semicolon and a line break (new line).

The naming of an input file is also important since it (currently) must be formatted in a specific way. They (currently) have to be a .txt file. Here is an example file name:

MyServer-overworld-log-2022-04-23.txt

Each part of the name is separated by a hyphen ("-").

The first part is the source name, such as the world/server/map name. This can be anything, it is only for you to know where the data is from.

The second part is the data dimension, it can be either "overworld", "nether", or "the-end".

The third part is just indicating that it is a log file. Once again, this can be anything you choose.

The fourth part is the date, separated by hyphens. It is formatted in "YYYY-MM-dd" (year, month, day of month).

Images

Here are some screenshots from the program, using made-up data and data from my Minecraft server.

Large-scale overview: image

Close-up lines: image

Close-up dots: image

Heatmap: image

Using a background world image: image

Exported image: image

Acknowledgements and Licenses

  • All icons used are sourced from Google Material Icons under the Apache Licence - 2.0 (The license file is inside the icons directory)
  • Seed Mapping code was originally sourced from MineMap made by KaptainWutax under the MIT License. I modified it significantly in order to properly integrate it with this tool.
  • Auto-Updating code sourced from MineMap but is also modified.
  • XChart is used under the Apache License 2.0 license

THIS IS NOT AN OFFICIAL MOJANG PRODUCT AND IS NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT