Skip to main content

GTProxy

GTProxy is a free and open-source network proxy for Growtopia that enables developers to debug incoming and outgoing packets and modify them in real-time. Built with modern C++23, GTProxy provides a powerful foundation for analyzing game network traffic and developing custom features.

Installation

Get GTProxy installed on Windows, Linux, or macOS

Quick start

Connect to Growtopia through GTProxy in minutes

Lua scripting

Extend GTProxy with custom Lua scripts

Configuration

Customize proxy behavior and logging settings

Key features

Packet debugging and modification

GTProxy intercepts all network traffic between your game client and Growtopia servers, allowing you to inspect and modify packets before they’re forwarded. The proxy includes detailed logging for game update packets, variant packets, and message types.
// Example from src/core/config.hpp
struct LogConfig {
    bool print_message{ true };
    bool print_game_update_packet{ false };
    bool print_variant{ true };
    bool print_extra{ true };
};

Built-in HTTP server

GTProxy includes an integrated HTTP server that provides access to game metadata extracted from the Growtopia client. This enables external tools and scripts to query game state and statistics.

Lua scripting engine

Extend GTProxy’s functionality without recompiling by writing Lua scripts. The scripting API provides access to:
  • Event system for packet interception
  • Command registration for custom proxy commands
  • Scheduler for timed tasks
  • World and player state access
  • Item database lookups
-- Example: Intercept and modify packets
event.on("server:SendToServer", function(ctx)
    if ctx:has_packet() then
        local pkt = ctx:parse()
        -- Modify packet fields
        pkt.net_id = 999
        ctx:cancel()
        send.to_server(pkt)
    end
end)

Sub-server redirection support

GTProxy handles sub-server redirection seamlessly, maintaining connections when Growtopia moves you between servers. This works automatically without additional configuration.

Custom command system

GTProxy includes built-in proxy commands and allows you to register custom commands through Lua scripts or C++. Commands use a configurable prefix (default: /).
// Example from src/core/config.hpp
struct CommandConfig {
    char prefix{ '/' };
};
Built-in commands include:
  • /help - List available commands
  • /exit - Disconnect from proxy
  • /warp - Warp to world
  • /skin - Change player skin
  • /nick - Change display name
  • /debug - Toggle debug information

Supported platforms

GTProxy runs on all major operating systems:
  • Windows - Tested on Windows 7, 8, 10, and 11
  • GNU/Linux - Tested on Ubuntu and Arch Linux
  • macOS - Tested on macOS 26 Tahoe

System requirements

Runtime requirements

  • Growtopia client version 3.92 or newer
  • Network connection to Growtopia servers

Build requirements

To build GTProxy from source, you need:
  • CMake 3.24 or newer
  • C++23 compatible compiler (GCC 11+, Clang 14+, MSVC 2022+)
  • Conan 2.0+ package manager
  • Python 3.5+ (for Conan)

Architecture overview

GTProxy is structured into modular components:
src/
├── core/           # Application core, config, logging, scheduler, web server
├── network/        # ENet client/server connections
├── packet/         # Packet types, encoding/decoding, event handling
├── world/          # World entity and state management
├── player/         # Player entity and state management
├── command/        # In-proxy command system
├── scripting/      # Lua scripting engine (sol2)
├── event/          # Event dispatcher system
└── utils/          # Utilities (ByteStream, TextParse, hash, random)

Open source

GTProxy is licensed under the MIT License. The source code is available on GitHub, and contributions are welcome.