[center][/center]
[center]Hopefully another step in the reduction of winterLove based servers.[/center]
I’ll start of with describing it. Stonefall is a Runescape 2 emulator for the revision 317 client. I guess this would be considered a premature and final release. I had a lot larger plans for Stonefall but lately I have lost all interest in its development and it isn’t enjoyable for me. Partly the reason for this is the limitations its simplistic design puts on it. This is how RuneSource is meant to be though, as it is a gateway into stable server development for winterLove base users.
RuneSource has provided me with the best introduction to Java and Runescape private servers. I only just started learning to develop Java a few short months ago. I think if I had used a base such as DeltaScape or Project Insanity I would have gotten nowhere. But the clarity a properly written framework mixed with a simplistic approach allowed for rapid learning. In saying this, you will have to excuse any ‘poorly written’ code within Stonefall as I’ve improved over time, yet some of the code is older.
Right now I am going to take what I have learnt to try my hand at my own gameserver framework which I can utilise to build a Runescape private server. I would like to encourage anyone using a winterLove base server to stop copy and pasting code to their base and develop using Stonefall or iClarity. I encourage anyone to use my extension to Blake’s RuneSource for a platform for their server. I hope this benefits the community a little bit.
[size=12pt]Features:[/size]
MySQL data saving and loading - The game loads several elements such as accounts, globally spawned items, npcs and their definitions from a MySQL database.
Sufficient thread management - No more cycle and sleep methods that run the entire game on one thread. The server has several dedicated threads handled by Java’s concurrent ScheduledExecutorService.
Seperate processing - Not every processor runs on one thread. Each ‘worker’ has its only thread. Such as network listening, player updating, event management and ground item handling.
Basic event handling system - Actions can be delayed or repeated using a simple threaded event handler. Can fire events in multiples of ticks, seconds, minutes and hours.
Better packet input handling - Packet handlers are managed with decent OOP, using an array for the handlers and a hashmap for commands and buttons.
Day and night switching - The game cycles through the day changing the light to match the corresponding time. You can set events to only trigger at certain times. An example of this is night only npcs.
Npc support - Npcs can be spawned using in-game commands. There is also a list loaded from the database. Currently they just stand idle.
Ground items - Ground item handling is done in a more elegant and efficient manner than most servers. Allows for permanent global spawns (loaded from the database) as well as temporary and player relative spawns.
Private messaging - Handled nicely, while friends and ignores lists are saved as a string rather than a long, to allow for readability.
Animations - Added into the update block, further implemented to support player emote buttons.
Better structuring - The source is packaged and refactored a lot from RuneSource to give it a more professional feel. The features and code were written exclusively for RuneSource so they work properly.
Plus much more (including all the features from RuneSource) such as NIO networking and properly written player updating.
[size=12pt]Credits:[/size]
blakeman8192 - Writer of RuneSource (which this is based upon). Blake thank you for providing me with a reliable and stable foundation to develop with.
I Vain I - Efficient design of the emote button handling system. Thomas thank you for keeping me company while I developed this.
[size=12pt]Pictures:[/size]
[center]
[/center]