asteria-3.0 icon indicating copy to clipboard operation
asteria-3.0 copied to clipboard

An open source Runescape server designed to emulate the #317 protocol. This is no longer being developed.

Asteria-3.0

Asteria is an open source Runescape emulator for the #317 protocol that has been in ongoing development since late 2013. It aims to be fast, reliable, scalable, and easy-to-use. It currently runs on Java 8.

Please check out the successor to this project Luna, which aims to correct the many mistakes I made throughout the various releases of Asteria.

Development History

Asteria 1.0 (Jan 2014)

Asteria 2.0 (May 2014)

Asteria 3.0 (July 2015)

Ideas for 4.0 (If developed)

~~These are things that could possibly be added to the 4.0 release if developed, entries marked with * will be added for certain. Alternatively, a 4.0 release will probably be scrapped entirely and a new project will be started from scratch containing everything below and more.~~

Everything below will be added to my new project Luna. I will no longer be doing any major overhauls on this repository, but I will still be fixing any basic issues that come up. Treat my new project as if it was Asteria 4.0, because it's goal is to correct everything I did wrong with this release.

  • Maven to manage dependencies *
  • JUnit for unit testing *
  • Log4j2 for usage as the logging framework *
  • Log file for serious errors (in conjunction with log4j2) *
  • Classes like Item, Position, etc. made immutable *
  • Usage of Guava's service model in place of the Service/ServiceQueue model *
  • Usage of Guava's stopwatch in place of Asteria's stopwatch (Guava does it better) *
  • ForkJoinPool instead of GameSyncTask and GameSyncExecutor? Or at the least a redesign of the two aforementioned classes
  • General design and performance optimizations, some of which were mentioned on the official 3.0 release thread on Rune-Server *
  • Better networking model and decoupling of message encoding/decoding *
  • Update content to OSRS revision (is it really worth the time though?)
  • Better task/action decoupling, support for OneInstanceTask's as well as OneTimeTask's, and support for actions and action policies such as triggering events with certain policies, etc.
  • Swapping of the Groovy plugin system for something more practical like Xtend, or even Scala
  • More of the content code added as plugins
  • Completely null-free character lists, for the iterator, general methods, etc.
  • Improving the plugin model by adding functionality for determining which plugins listeners in the chain are executed (if multiple plugin listeners are mapped to a plugin context class). Apollo does this very nicely
  • Hyperion's region system with an algorithm that prioritizes player by distance and combat state
  • Apollo's file system and pathfinding implementation (thanks Major)
  • JAGGRAB
  • YAML instead of JSON for data serialization. Much more readable and easier to write
  • Usage of Guava's EventBus instead of event listeners for plugins *