Skip to content

xeroconf/athenaware

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 

Repository files navigation

⛵ Athenaware

Features from the Athenaware (Prismarine) project. Not all features are included, as some are trivial (e.g., a crosshair) or still work and are potentially game-breaking. Over time, I’ll continue to populate this repository with the remaining features.

Important

This repository contains feature implementations only and cannot be compiled in its current state. It is provided solely for reference and educational purposes.

Note

Athenaware is built using an old version of Scaffold, my framework for clean, scalable and modular cheat development.

About this Project

Code Style

I chose to keep the code style consistent with Unreal Engine 4, hence the extensive use of PascalCase and UE4 naming conventions.

Features

All the feature implementations in this repository implement the feature abstract class and communicate with each other using a shared message dispatcher provided by the managing domain. Some features retrieve the feature instance from the owning feature manager directly, but this is bad practice on my part and was done to speed up release.

Actor Service

The Actor Service was introduced as a solution to avoid iterating through the entire actor list every frame. Instead of scanning all actors, we hooked into key lifecycle events of AActor, such as BeginPlay and EndPlay.

By listening to these events, we could selectively track only the actors we care about. Relevant actors were added to an internal list when they spawned and removed when they were destroyed. Additionally, ActorAggregationUpdateEvent was fired to all listening features. The goal was to allow each feature to independently track the actors it needs by handling the relevant actor lifecycle event(s).

This approach drastically reduced the number of actors we needed to process each frame, since our internal list(s) contained only the specific actors we were interested in, rather than every actor in the world. This significantly increased performance and is a major factor as to why Athenaware has minimal impact on framerate.

Draw Service

The Draw Service managed all draw lists and safely swapped them for rendering on the RHI thread. These draw lists allowed precise control over the rendering order of items on the screen using DrawService::PushLayer. For example, main UI elements could be ensured to appear on top of other content.

Session Service

You may find references to the Session Service in some features (e.g., GetSession(), IsInSession()). The Session Service managed the state of the current server game world and provided helper functions for sending RPCs, managing action states, and more. It was also responsible for starting and stopping features that were specific to being in the world (e.g. ESP).

Screenshot of Athenaware

About

⛵ Feature implementations from the Athenaware SoT project.

Topics

Resources

Stars

Watchers

Forks

Languages