Skip to content

Repository files navigation

PyrealACE

High-Performance Asheron's Call Server with OpenMP Acceleration

PyrealACE combines the rock-solid protocol compatibility of ACE with OpenMP-accelerated game logic from PyrealEngine for maximum performance.


Why PyrealACE?

FeatureACE_OriginalPyrealEngine-ACPyrealACE
Client CompatibleYesNoYes
OpenMP AccelerationNoYesYes
Parallel AI UpdatesNoYesYes
Parallel PhysicsNoYesYes
Parallel Spell EffectsNoYesYes
Production ReadyYesNoYes

PyrealACE = ACE Protocol + PyrealEngine Performance


Architecture

 PyrealACE Server
├────────────────────────────────────────────────────────────┤
│ PROTOCOL LAYER (C# - Protected, 426 files) │
│ • From ACE_Original - 100% client compatible │
│ • CRC32 checksums, standard AC protocol │
├────────────────────────────────────────────────────────────┤
│ NATIVE LAYER (C++ OpenMP, ~9,700 lines) │
│ • AI/Pathfinding - parallel agent updates │
│ • Physics - parallel collision detection │
│ • Combat - optimized damage calculations │
│ • Magic - parallel DoT/HoT processing │
│ • Loot - batch parallel generation │
│ • World - parallel landblock management │
└────────────────────────────────────────────────────────────┘

NEWCONTENT NEWCONTENT NEWCONTENT NEWCONTENT NEWCONTENT NEWCONTENT NEWCONTENT NEWCONTENT NEWCONTENT


Building

Prerequisites

  • .NET 8.0 SDK
  • CMake 3.20+
  • C++20 compiler with OpenMP support:
    • Windows: Visual Studio 2022 or Clang/LLVM 17+
    • Linux: GCC 12+ or Clang 17+
  • MySQL/MariaDB

Build Native Modules

cd Native
mkdir build &&cd build
# Windows (Visual Studio)
cmake .. -G "Visual Studio 17 2022" -A x64
cmake --build . --config Release
# Windows (Clang - recommended for best OpenMP)
cmake .. -G Ninja -DCMAKE_CXX_COMPILER=clang++
cmake --build . --config Release
# Linux
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)

Build .NET Server

cd Source
dotnet build -c Release

Run

cd Source/ACE.Server/bin/Release/net8.0
./ACE.Server

Project Structure

PyrealACE/
├── Source/ # C# Server (from ACE_Original)
│ ├── ACE.Server/
│ │ ├── Network/ # PROTECTED - Do not modify!
│ │ ├── Native/ # P/Invoke bridges
│ │ ├── Managers/ # Safe to integrate native calls
│ │ └── WorldObjects/ # Safe to integrate native calls
│ ├── ACE.Common/
│ ├── ACE.Database/
│ ├── ACE.DatLoader/
│ └── ACE.Entity/
├── Native/ # C++ OpenMP Modules
│ ├── pyreal_ai/ # AI & Pathfinding
│ ├── pyreal_combat/ # Combat calculations
│ ├── pyreal_physics/ # Physics & collision
│ ├── pyreal_magic/ # Spell system
│ ├── pyreal_loot/ # Loot generation
│ ├── pyreal_skills/ # Skill calculations
│ ├── pyreal_world/ # World/landblock management
│ ├── pyreal_database/ # Weenie cache
│ ├── exports/ # C API for P/Invoke
│ └── CMakeLists.txt # Build configuration
├── Database/ # SQL scripts
├── PROTECTED_PROTOCOL.md # READ THIS FIRST!
└── README.md

Protocol Protection

CRITICAL: The Source/ACE.Server/Network/ directory contains 426 files that define the Asheron's Call network protocol. These files MUST NOT be modified to maintain client compatibility.

See PROTECTED_PROTOCOL.md for details.


Native Module Integration

The native OpenMP modules are integrated via P/Invoke:

// In WorldManager.cs or similar game logicusingACE.Server.Native;privatevoidUpdateGameTick(floatdeltaTime){// OpenMP-accelerated updatesNativeAI.UpdateAgents(deltaTime);NativePhysics.Update(deltaTime);NativeMagic.UpdateEffects(deltaTime);NativeWorld.Update(deltaTime);}

Disclaimer

This project is for educational and non-commercial purposes only.

  • Asheron's Call was a registered trademark of Turbine, Inc. and WB Games Inc.
  • PyrealACE is not associated with Turbine, Inc. or WB Games Inc.

Credits

  • ACE Team - Original ACE emulator (protocol layer)
  • PyrealEngine Contributors - OpenMP-accelerated game logic
  • Asheron's Call Community - Continued support and testing

License

GNU Affero General Public License v3.0 - See LICENSE

Performance Targets

Server Capacity & Responsiveness

MetricACE (Original)PyrealACE
Max Concurrent Players~2005,000+
World Heartbeat200ms (5 Hz)30ms (33.3 Hz)
Update Frequency5 updates/sec33.3 updates/sec (6.6x faster)
Player Input Latency200ms response time30ms response time
Fine-Grained ControlStandard6x smoother player interaction

Parallel Processing Throughput

MetricACE (Single-threaded)PyrealACE (OpenMP)
AI updates/tick~1,00010,000+ (10x)
Physics bodies/tick~5005,000+ (10x)
Spell effects/tick~2002,000+ (10x)
Pathfinding queries/sec~1001,000+ (10x)
Loot generation/sec~50500+ (10x)
Combat calculations/sec~1,00010,000+ (10x)

Why 30ms Heartbeat Matters

The 6.6x faster update rate enables:

  • Smoother movement - Position updates every 30ms instead of 200ms
  • Responsive combat - Hit detection and damage in 30ms instead of 200ms
  • Fluid spellcasting - Instant visual feedback for player actions
  • Better PvP - Reduced input lag for competitive gameplay
  • Scalability - More compute budget per update with parallel processing

PyrealACE

High-Performance Asheron's Call Server with OpenMP Acceleration

PyrealACE combines the rock-solid protocol compatibility of ACE with OpenMP-accelerated game logic from PyrealEngine for maximum performance.


Why PyrealACE?

FeatureACE_OriginalPyrealEngine-ACPyrealACE
Client CompatibleYesNoYes
OpenMP AccelerationNoYesYes
Parallel AI UpdatesNoYesYes
Parallel PhysicsNoYesYes
Parallel Spell EffectsNoYesYes
Production ReadyYesNoYes

PyrealACE = ACE Protocol + PyrealEngine Performance


Architecture

 PyrealACE Server
├────────────────────────────────────────────────────────────┤
│ PROTOCOL LAYER (C# - Protected, 426 files) │
│ • From ACE_Original - 100% client compatible │
│ • CRC32 checksums, standard AC protocol │
├────────────────────────────────────────────────────────────┤
│ NATIVE LAYER (C++ OpenMP, ~9,700 lines) │
│ • AI/Pathfinding - parallel agent updates │
│ • Physics - parallel collision detection │
│ • Combat - optimized damage calculations │
│ • Magic - parallel DoT/HoT processing │
│ • Loot - batch parallel generation │
│ • World - parallel landblock management │
└────────────────────────────────────────────────────────────┘

NEWCONTENT NEWCONTENT NEWCONTENT NEWCONTENT NEWCONTENT NEWCONTENT NEWCONTENT NEWCONTENT NEWCONTENT


Building

Prerequisites

  • .NET 8.0 SDK
  • CMake 3.20+
  • C++20 compiler with OpenMP support:
    • Windows: Visual Studio 2022 or Clang/LLVM 17+
    • Linux: GCC 12+ or Clang 17+
  • MySQL/MariaDB

Build Native Modules

cd Native
mkdir build &&cd build
# Windows (Visual Studio)
cmake .. -G "Visual Studio 17 2022" -A x64
cmake --build . --config Release
# Windows (Clang - recommended for best OpenMP)
cmake .. -G Ninja -DCMAKE_CXX_COMPILER=clang++
cmake --build . --config Release
# Linux
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)

Build .NET Server

cd Source
dotnet build -c Release

Run

cd Source/ACE.Server/bin/Release/net8.0
./ACE.Server

Project Structure

PyrealACE/
├── Source/ # C# Server (from ACE_Original)
│ ├── ACE.Server/
│ │ ├── Network/ # PROTECTED - Do not modify!
│ │ ├── Native/ # P/Invoke bridges
│ │ ├── Managers/ # Safe to integrate native calls
│ │ └── WorldObjects/ # Safe to integrate native calls
│ ├── ACE.Common/
│ ├── ACE.Database/
│ ├── ACE.DatLoader/
│ └── ACE.Entity/
├── Native/ # C++ OpenMP Modules
│ ├── pyreal_ai/ # AI & Pathfinding
│ ├── pyreal_combat/ # Combat calculations
│ ├── pyreal_physics/ # Physics & collision
│ ├── pyreal_magic/ # Spell system
│ ├── pyreal_loot/ # Loot generation
│ ├── pyreal_skills/ # Skill calculations
│ ├── pyreal_world/ # World/landblock management
│ ├── pyreal_database/ # Weenie cache
│ ├── exports/ # C API for P/Invoke
│ └── CMakeLists.txt # Build configuration
├── Database/ # SQL scripts
├── PROTECTED_PROTOCOL.md # READ THIS FIRST!
└── README.md

Protocol Protection

CRITICAL: The Source/ACE.Server/Network/ directory contains 426 files that define the Asheron's Call network protocol. These files MUST NOT be modified to maintain client compatibility.

See PROTECTED_PROTOCOL.md for details.


Native Module Integration

The native OpenMP modules are integrated via P/Invoke:

// In WorldManager.cs or similar game logicusingACE.Server.Native;privatevoidUpdateGameTick(floatdeltaTime){// OpenMP-accelerated updatesNativeAI.UpdateAgents(deltaTime);NativePhysics.Update(deltaTime);NativeMagic.UpdateEffects(deltaTime);NativeWorld.Update(deltaTime);}

Disclaimer

This project is for educational and non-commercial purposes only.

  • Asheron's Call was a registered trademark of Turbine, Inc. and WB Games Inc.
  • PyrealACE is not associated with Turbine, Inc. or WB Games Inc.

Credits

  • ACE Team - Original ACE emulator (protocol layer)
  • PyrealEngine Contributors - OpenMP-accelerated game logic
  • Asheron's Call Community - Continued support and testing

License

GNU Affero General Public License v3.0 - See LICENSE

About

No description, website, or topics provided.

Resources

Code of conduct

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages