ArxEngine to w pełni autonomiczny, samodzielny silnik Minecraft Vanilla. Łączy się bezpośrednio z oficjalnym klientem gry bez narzutu proxy, Spigota czy BungeeCord. Nadrzędna sesja PlayerSession zapewnia bezszwowy transfer graczy między instancjami w ułamku milisekundy.
Zaprojektowany od podstaw w Gradle multi-module. Każda warstwa posiada ścisłą odpowiedzialność, gwarantując zerowe sprzężenia i maksymalną przepustowość.
Nadrzędna sesja gracza istniejąca poza światem gry. Utrzymuje połączenie TCP i zarządza bezszwowym przełączaniem między instancjami gier bez ekranu ładowania.
Wysokowydajna warstwa sieciowa oparta na Netty. Automatyczne wykrywanie wersji protokołu podczas handshake i dynamiczny server ping ze statusem MOTD.
Pełne dekodery i enkodery pakietów dla Handshake, Login, faza Configuration (od 1.20.2+, Known Packs, dynamiczne rejestry i tagi) oraz faza Play.
Lekkie, równoległe instancje światów działające w jednym procesie. Każda z własnym cyklem życia (CREATED ➔ READY ➔ RUNNING ➔ STOPPED) i generatorami chunków.
Nowoczesny system rozszerzeń zastępujący ociężałe pluginy Bukkit. Deklaratywne możliwości (PLAYER, COMMANDS, EVENTS, WORLD) bez niebezpiecznej refleksji.
Gotowe implementacje trybów rozgrywki: instancja Lobby z komendą /survival oraz instancja Survival z natychmiastowym powrotem /lobby.
Wersje 1.8.x - 1.21.11 - 26.2 (Vanilla / OptiFine / Fabric)
Weryfikacja profilu, faza Configuration, rejestry & tagi
Lobby / Survival / Minigame (Zero-lag Chunk Dispatch)
Zapomnij o topornych pluginach Bukkit czy skomplikowanych adapterach proxy. W ArxEngine moduły operują bezpośrednio na sesjach i instancjach z deklaratywnymi uprawnieniami.
Silnik kompiluje się do samodzielnego pliku JAR bez potrzeby instalowania Paper/Spigot.
Komenda /survival przenosi gracza do innego świata natychmiastowym wywołaniem transferTo().
Izolacja pamięciowa między instancjami zapobiega wyciekom wątków i błędnym stanom.
public class LobbyModule implements ArxModule {
@Override
public void onEnable() {
// Rejestracja komendy płynnego transferu
CommandRegistry.register("survival", (session, args) -> {
session.sendMessage("§aPrzenoszenie na Survival...");
session.transferTo(Instances.get("survival"));
});
}
@Override
public Set<Capability> requiredCapabilities() {
return Set.of(Capability.PLAYER, Capability.COMMANDS);
}
}
Sprawdź, dlaczego czysty silnik Vanilla bez proxy wygrywa z ociężałym stosem Paper/BungeeCord.
| Architektura | Wymóg Proxy | Transfer Gracza | Użycie RAM | Czas Startu |
|---|---|---|---|---|
| ArxEngine ZALECANY | Brak (Zero) | < 10ms (Bezszwowy) | ~120 MB | < 500 ms |
| Paper + Velocity Proxy | Wymagane (Dodatkowy proces) | 300 - 800ms (Loading screen) | 2.5 - 4.0 GB | 10 - 18 s |
| Spigot + BungeeCord | Wymagane (Dodatkowy proces) | 500 - 1200ms (Loading screen) | 3.0 - 5.0 GB | 12 - 20 s |
| Vanilla Mojang Server | Brak wsparcia dla sieci | Niemożliwy (Jeden świat) | 2.0 - 3.5 GB | 15 - 25 s |
Sklonuj repozytorium, uruchom komendę za pomocą Gradle Wrapper i połącz się dowolnym oficjalnym klientem Minecraft na porcie 25565.