Github Repository
Server Download
Client Download
Client Download (Mirror)
Tutorial For Setting Up Asteria
Prelude
Asteria is an open source Runescape emulator for the #317 protocol. It has been in ongoing development since late 2013, and today I'm finally done and finished with it. I've improved as a developer throughout the multiple releases (being as I started when I was 15, I'm 17 now), and for that reason there's some code currently present that I cringe at. I don't have the determination to go back and rewrite it all, at this point I'd honestly rather just start something entirely new.
If you're using 2.0 (or God forbid 1.0) I highly recommend taking the time out to port your content over to this release. Although it's not mandatory, so many things were fixed and changed that it'd really be in your best interest to make the change. I'll go over some of the major things that were changed later in the topic. You can (and I encourage you to) still post your issues on the Github issues page, although I can't guarantee they'll be fixed as fast as they were before. Sorry.
Whats different?
Tons of things were worked on and improved such as the location model, item containers, tasks, skills, minigames, utilities, as well as tons of bugs fixes and other performance/design optimizations.
Networking
I was wrong about the cycle based reactor design, it's not scalable enough. You have to handle logins every game sequence which results in missed login requests under high stress, not to mention the overhead of doing all logins on the game thread. With that said I have decided to switch from raw NIO to Netty 4 for the networking. I chose Netty because it's high performing, has a very nice abstraction model, and because there's lots of support for it (if you need help).
Plugins
It's nothing elaborate, just a simple easy-to-use plugin system that utilizes listeners. Plugins are compiled into Java bytecode and are all currently written in Groovy. If that isn't your thing you can write them in Scala, Jython, JRuby, Xtend, plain Java, or any other programming language that can be compiled into Java bytecode.
NPC Dialogues
The whole Dialogue -> DialogueAction concept was defective and therefore has been replaced with the DialogueChainBuilder -> DialogueChain model, which performs better, is easier to use, and includes full support for more complex things like dialogue options.
Player Serialization
Albeit I'll be the first to admit it's a bit messier, the new serialization system allows for serialization/deserialization tokens to be written on one line. Serialization is done asynchronously (of course) and will make use of Guava's caching model so during deserialization the file is only loaded when it's absolutely needed to.
Media
Not much media, most of the media is on the Asteria 2.0 thread which you can view here.
Special Thanks
Ryley
blakeman8192