Skip to content

Zynerji/PyrealACE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5,737 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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?

Feature ACE_Original PyrealEngine-AC PyrealACE
Client Compatible Yes No Yes
OpenMP Acceleration No Yes Yes
Parallel AI Updates No Yes Yes
Parallel Physics No Yes Yes
Parallel Spell Effects No Yes Yes
Production Ready Yes No Yes

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 logic
using ACE.Server.Native;

private void UpdateGameTick(float deltaTime)
{
    // OpenMP-accelerated updates
    NativeAI.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

Metric ACE (Original) PyrealACE
Max Concurrent Players ~200 5,000+
World Heartbeat 200ms (5 Hz) 30ms (33.3 Hz)
Update Frequency 5 updates/sec 33.3 updates/sec (6.6x faster)
Player Input Latency 200ms response time 30ms response time
Fine-Grained Control Standard 6x smoother player interaction

Parallel Processing Throughput

Metric ACE (Single-threaded) PyrealACE (OpenMP)
AI updates/tick ~1,000 10,000+ (10x)
Physics bodies/tick ~500 5,000+ (10x)
Spell effects/tick ~200 2,000+ (10x)
Pathfinding queries/sec ~100 1,000+ (10x)
Loot generation/sec ~50 500+ (10x)
Combat calculations/sec ~1,000 10,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?

Feature ACE_Original PyrealEngine-AC PyrealACE
Client Compatible Yes No Yes
OpenMP Acceleration No Yes Yes
Parallel AI Updates No Yes Yes
Parallel Physics No Yes Yes
Parallel Spell Effects No Yes Yes
Production Ready Yes No Yes

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 logic
using ACE.Server.Native;

private void UpdateGameTick(float deltaTime)
{
    // OpenMP-accelerated updates
    NativeAI.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

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors