PDA

View Full Version : Hyperion - By Graham



Rixi
June 18th, 2010, 17:21
This is NOT my work, this is made by Hyperion team which was lead by Graham Edgecombe. All credits to the Hyperion team!
Hyperion
the open-source Java gameserver suite

About

Hyperion is a Java gameserver suite which aims to provide an excellent, stable, quality base with advanced features such as update server (to stream the cache to the client without need to download the full cache before playing) and login server (for multi-world support with cross world messaging).

The server has been developed completely from scratch, even the ISAAC cipher code is scratch (as the one used by most is copyrighted by Jagex).

Also, for those working on their own servers, there is documentation on the login, update and in-game protocol, and information about the updating and walking procedures.

Twitter

SVN commits as well as our ramblings can be found here: Only the registered members can see the link.
(Twitter has been dead for ages but you can still look in there if you want to know more about Hyperion)

Support Signatures

Only the registered members can see the link.

Only the registered members can see the link.

Credits:

Hyperion Team:


Graham
Blake
BrettR


Other Credits:


Vastico - item def code + data file
Lothy - equipment code snippet
Miss Silabsoft - some more equipment fixes
Scu11 - found + fixed multiple bugs
Sub - found npc bug
Sean - testing, ideas
William - testing, ideas




Features

Green = Complete in the latest Hyperion(276)
Orange = Under development in the latest Hyperion(276)
Red = Not yet started in the latest Hyperion(276)

World server


Login
Updating

Rendering
Multiplayer
NPCs
Update masks
Region system


Communication

Public chat
Commands
Chat options
Friends/ignores/private chat
Report abuse


Inventory/item support

Item class
Container class
Interface container listener
Equipment container listener
Weapon container listener
Swapping/equipping/etc
Banking
Action and action queue system


Clipping and path finding


Login server


Saving/loading/online checking
World password check
PM and friendslist


Cache system

File server


JAGGRAB and HTTP server
Integrated webclient


Web interface



Unique features

Action system:

The action system is another first which is going to prove quite unique as it is developed. There is an Action class and ActionQueue class. The ActionQueue will queue and process actions for a player.

Since a lot of actions share code (i.e. woodcutting and mining are extremely similar), there are some abstract classes such as AbstractHarvestingAction which will contain code common to both.

These allow rapid development and easy bug fixing, as well as just looking cool.

Cached update blocks:

Say you had 100 players in a region, and then a new one logs in. In a traditional server, each 100 players will reconstruct the new player's appearance update block when they login. This server will cache update blocks for the duration of the cycle, so it only happens once, at the expense of slightly more memory usage.

This should give some improvements when there are a lot of players in an area, especially if the updates are large (like appearance blocks).

Pooled player updating:

Player updating is a read only task. This means you can execute it in multiple threads safely. The server creates a thread pool with the same number of cores as the current computer it is running on, and dispatches update tasks to this pool.

To prevent threading issues, the main thread will block until all the updates are complete. Then the main thread may run as usual, processing packets and performing reads and writes safely with little worry of thread-safety.

This can give vast improvements when you have a PC with multiple cores and/or processors.

There are classes allowing you to do this as well (namely the ParallelTask class), however, there are few remaining cases in which this is possible to do safely.

Update server:

The update server uses the ondemand and a Only the registered members can see the link. protocol to stream the cache to the client just like a popular MMORPG. This gives a few advantages: when the cache is modified, it can be pushed out to all new clients very easily with minimum bandwidth used up by subsequent updates (the files in the cache are only updated when the client deems it necessary). Also, no client modifications are needed to make it work as long as your client fills the requirements stated below.

Screenshots

Update server:
Currently broken
Only the registered members can see the link.

Inventory:
Currently broken
Only the registered members can see the link.

Multiplayer:
Currently broken
Only the registered members can see the link.

Equipment:
Currently broken
Only the registered members can see the link.

Benchmark

I've done some testing and it seems the server can handle 2000 players without crashing. However, these are not real players so not entirely accurate. Also, bear in mind the server in fact has very few features and this will have an impact on performance (in a real server if you had 2000 players they would be performing actions).

For those interested in how the benchmark was setup, the SYI attacker was run on the same PC as the server. The PC is dual core, 2.2ghz. With the way in which the server is setup it would perform better on more cores, as not just the input/output is done in a multi-threaded manner. The throttle filter was disabled. With it enabled, they will connect slowly. Also, there is no limit per IP yet.

While this number of players are online, the server is still usable (logins are slower than normal - as expected - but there isn't much lag).

Release


Only the registered members can see the link.


Subversion

Latest and probably last revision is 276

Subversion URL: Only the registered members can see the link. (Only the registered members can see the link.)

License


Copyright © 2009 The Hyperion Development Team

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

THREAD IS BEING WORKED ON! PLEASE WAIT PATIENTLY!

Fly
June 18th, 2010, 17:21
EDIT: I removed most of dead links.

You should fix some of the broken pictures.

Aaron
June 18th, 2010, 17:22
This source is beast, Very Stable, Love it:D

Neelix
June 18th, 2010, 17:29
Nice and clean server but I don't like the fact that it is a 317 which isn't even full yet. 317 should all have full features nowadays.

I D3stroy I
June 18th, 2010, 18:07
Reminds me of Older Runescape :) Very nicely done stabled and cleaned server

Realscape
June 18th, 2010, 20:11
Looks nice:D

The Soul
June 18th, 2010, 22:26
I laughed at the part where you said it's the "most powerful 317 engine." It's a decent base but certainly not the "most powerful;" many people have servers superior to Hyperion however they don't release them to the public.

Canownueasy`
June 18th, 2010, 22:34
I laughed at the part where you said it's the "most powerful 317 engine." It's a decent base but certainly not the "most powerful;" many people have servers superior to Hyperion however they don't release them to the public.

Like YarnovaScape ;)

Fenway`
June 21st, 2010, 03:11
Like YarnovaScape ;)

your obsessed

Canownueasy`
June 21st, 2010, 03:28
your obsessed

I know, because it freaking rocks.

Relapse
June 21st, 2010, 03:45
I never understood why people just cant let Graham post his stuff on here... although hes not as active on RuneLocus he generally updated his threads before

Fenway`
June 21st, 2010, 04:47
I don't think he even uses runeserver

Malik
August 4th, 2010, 18:06
All the links are broken.Can you add new ones?

EDIT: Nevermind, found another one and I have no clue to do anything right on it.

Syrup
August 4th, 2010, 18:10
nice release.

Pyro Sauce
August 27th, 2010, 00:27
update links pl0x?

Cryptic
September 9th, 2010, 13:18
Graham is freaking best!

pixelpwn
September 19th, 2010, 01:42
Probably the stablest 317 ive ever had and ive added tele`s and shops and stuff still exact same

omniroar
September 19th, 2010, 09:00
Client?

¯¯hereitis
September 19th, 2010, 09:03
Nice.¯

remcov
February 22nd, 2011, 03:12
is there a client O.o?

Rixi
July 13th, 2011, 12:28
The thread is going throught some updates, I'm updating the layout and stuff to differ from the original post by Graham on ************. Credits still go to Graham, of course!

I'm also looking into releasing my Hyperion project from December 2010, it should kickstart Hyperion development.

--Rixi--

P.S. There is a client jarred (non-renamed client) but you can use "RS317 Lite Packaged" which should be found from another RSPS Site if you googled "RS317 Lite Packaged", then you'll have to enable "downloadCrcs();" in the client class(to allow usage of update server).

I'll be glad to help with any troubles you may have :)