Jump to content

Featured Replies

Posted
  • Popular Post
comment_43799

NUmaf0h.png

 

Download Link:

https://runeindex.com/drive/s/loyDj927AyfXOYw6DySeZSfGSjayE6

Tools:

N\A

Introduction

Apollo is a RuneScape emulator which aims to encourage a fundamentally-different alternative to the way in which private server development is done today. It consists of a high-performance, modular server written in Java as well as a collection of utilities for managing the data files and plugins.

Plugins

Currently people download a server, read through tutorials and apply their modifications or write their own code on top of it. They'll then host it or release it. The result is we currently have a complete mess of servers (this includes every current base - Hyperion, rs2hd, winterlove) all created from cobbled-together code.

Apollo is going to change that through its plugin system. Instead of throwing everything into one big application, Apollo consists of:
 

  • A small 'core' application which provides features necessary for the server to operate.
  • A set of plugins, and the tools to manage them (install, uninstall, publish, download, etc).
  • Some additional tools and utilities for managing the data files.



This will make it much easier for everyone to develop a private server, no longer restricting it to people who can (or can't as the case is here) program. Instead of messing around copying and pasting lines of code from a woodcutting tutorial, people will simply have to download and install a woodcutting plugin.

There is also a plan to have a plugin repository (or maybe multiple repositories) and a set of tools to make the experience very much like a package manager on Linux.

It also means updates can be provided for the core server (e.g. security, stability, optimizations) very easily. Users will just have to download the new jar, overwrite the current one with the new one, and reboot their server.

And best of all, inexperienced users are protected from making fatal mistakes in the core and are kept away from stuff that they shouldn't be editing at their experience level.

Plugins are currently written in Ruby, however, in the future other languages could be added. Here is what a plugin looks like:

hello.rb:

Code:
require 'java'
java_import 'org.apollo.game.model.Animation'

on :command, :hello do |player, command|
  player.play_animation Animation::WAVE
  player.send_message "Hello, World!"
end

plugin.xml:

Code:
<?xml version="1.0"?>
<plugin>
  <id>hello</id>
  <version>1</version>
  <name>Hello World Command</name>
  <description>Adds a ::hello command which simply prints 'Hello, World!'.</description>
  <authors>
    <author>Graham</author>
  </authors>
  <scripts>
    <script>hello.rb</script>
  </scripts>
  <dependencies />
</plugin>

Core Features

Some of the significant (technically) current core features include:
 

  • Packet encoding/decoding has been split from the representations of the packets themselves. This allows the potential for encoding/decoding to go on in parallel and also allows multiple revisions to be supported. Currently 317 and 377 are both completely supported.
  • Update server support (JAGGRAB, ondemand and HTTP).
  • Packet handler chaining: this allows multiple plugins to be able to intercept a single packet and deal with it appropriately. For example, a quest plugin could intercept searching a bookshelf for instance, if the behaviour needed to change in certain cases.
  • Parallel execution of player updating for multi-core machines - this has a significant benefit on my dual core machine used to test the server.



As well as that, it has the bog standard stuff:
 

  • Login
  • Appearance updating
  • Multiplayer
  • Walking/running
  • Rights management
  • Travel back algorithm for movement
  • Character design
  • Chatting
  • Commands
  • Inventory support
  • Equipment support
  • Animations
  • Graphics
  • Facing/turn to
  • Action system
  • Working distanced actions
  • All data types implemented
  • Task scheduler based on game ticks
  • Saving/loading with a custom binary format
  • Skill levels/experiences
  • Plugin management
  • Reads item information from the cache



Plugin features

These are the current plugins that I've developed so far.
 

  • hello: a 'hello world' plugin just to demonstrate how they are used for plugin developers.
  • cmd-item: item-related commands: item, destroy and empty
  • cmd-skill: skill-related commands: max
  • cmd-teleport: teleport/position-related commands: pos, tele
  • dummy: the dummies in Varrock
  • mining: a mining plugin to demonstrate a larger plugin for future plugin developers, and to test some of the newer features (not yet completed)



Source control/building

Currently the repository is private (it isn't ready yet, and will not be released until it is ready!).

Server architecture

Third-party libraries

The server uses the Netty API for the networking code. Netty supports a variety of transports such as NIO and blocking IO, so you can choose what is right for your environment/use case.

The Commons Compress library is used for decompressing bzip2-compressed files in the cache.

The JUnit library is used for unit testing.

The JRuby library is used to execute the Ruby plugins.

APIviz is used to draw pretty diagrams in the Javadocs.

Media

Mining/prospecting plugin:
687474703a2f2f61706f6c6c6f2d736572766572

Wielding items:
687474703a2f2f61706f6c6c6f2d736572766572

Real 377 support:
687474703a2f2f61706f6c6c6f2d736572766572

Skill levels:
687474703a2f2f61706f6c6c6f2d736572766572

Testing the hello plugin:
687474703a2f2f61706f6c6c6f2d736572766572

Benchmarks

These are quite out of date and I will get around to redoing them at some point on a variety of platforms/configurations!

These are from a 32 bit machine running Windows 7. It has a dual core 2.2 ghz processor and 2 GB of RAM. Java 1.7.0-ea was used with the HotSpot Server VM.

Parallel updater:

The cycle time with 2000 idle players took 240-270ms (later improved to 140-160ms). The cycle time with 2000 players spamming chat messages was 420-470ms.

Sequential updater:

The cycle time with 2000 idle players took 290-340ms. With the players spamming chat messages it took 550-700ms.

Using the parallel updater (recommended for the PC since it has multiple cores), the performance was well within the 600ms limit. It isn't amazing hardware either.

Current Plans

The plan roughly is:
 

  1. Get the core finished to a usable state for plugin developers.
  2. Allow a select number of people early access in order for them to develop open-source plugins accurate to RuneScape. Finish developing the core while this goes on.
  3. Release the core and all the plugins simultaneously.
  4. Sit back and do occasional updates to the core. The community can do the rest.



Credits

 

  • blakeman8192
  • Sir Sean
  • super_
  • wL
  • daiki
  • Saevion
  • popcorn89
  • Tom
  • defyboy
  • silabsoft
  • thiefmn6092
  • Phyfiox (aka Raul)
  • Scu11
  • Palidino76
  • Parabolika
  • Replies 42
  • Views 7k
  • Created
  • Last Reply

Top Posters In This Topic

  • 4 weeks later...
  • 2 weeks later...
  • 5 weeks later...
  • 4 weeks later...
  • 4 weeks later...
  • 2 weeks later...
  • 1 year later...
comment_64424
On 22/1/2020 at 10:04, RuneArchive said:

NUmaf0h.png

 

Enlace de descarga:

 

contenido oculto

  • Reacciona o responde a este tema para ver el contenido oculto.

 

Instrumentos:

N / A

Introducción

Apollo es un emulador de RuneScape que tiene como objetivo fomentar una alternativa fundamentalmente diferente a la forma en que se realiza hoy en día el desarrollo de servidores privados. Consiste en un servidor modular de alto rendimiento escrito en Java, así como una colección de utilidades para administrar los archivos de datos y complementos.

Complementos

Actualmente, las personas descargan un servidor, leen tutoriales y aplican sus modificaciones o escriben su propio código encima. Luego lo alojarán o lo lanzarán. El resultado es que actualmente tenemos un completo lío de servidores (esto incluye todas las bases actuales: Hyperion, rs2hd, winterlove), todos creados a partir de código improvisado.

Apollo va a cambiar eso a través de su sistema de complementos. En lugar de incluir todo en una gran aplicación, Apollo consta de:
 

  • Una pequeña aplicación "central" que proporciona las características necesarias para que el servidor funcione.
  • Un conjunto de complementos y las herramientas para administrarlos (instalar, desinstalar, publicar, descargar, etc.).
  • Algunas herramientas y utilidades adicionales para administrar los archivos de datos.



Esto hará que sea mucho más fácil para todos desarrollar un servidor privado, sin restringirlo más a las personas que pueden (o no pueden, como es el caso aquí) programar. En lugar de perder el tiempo copiando y pegando líneas de código de un tutorial de corte de madera, la gente simplemente tendrá que descargar e instalar un complemento de corte de madera.

También hay un plan para tener un repositorio de complementos (o quizás varios repositorios) y un conjunto de herramientas para hacer que la experiencia sea muy parecida a la de un administrador de paquetes en Linux.

También significa que se pueden proporcionar actualizaciones para el servidor central (por ejemplo, seguridad, estabilidad, optimizaciones) muy fácilmente. Los usuarios solo tendrán que descargar el nuevo jar, sobrescribir el actual con el nuevo y reiniciar su servidor.

Y lo mejor de todo es que los usuarios sin experiencia están protegidos de cometer errores fatales en el núcleo y se mantienen alejados de cosas que no deberían editar en su nivel de experiencia.

Los complementos están escritos actualmente en Ruby, sin embargo, en el futuro se podrían agregar otros idiomas. Así es como se ve un complemento:

hello.rb:

Código:
require 'java'
java_import 'org.apollo.game.model.Animation'

on :command, :hello do |player, command|
  player.play_animation Animation::WAVE
  player.send_message "Hello, World!"
end

plugin.xml:

Código:
<?xml version="1.0"?>
<plugin>
  <id>hello</id>
  <version>1</version>
  <name>Hello World Command</name>
  <description>Adds a ::hello command which simply prints 'Hello, World!'.</description>
  <authors>
    <author>Graham</author>
  </authors>
  <scripts>
    <script>hello.rb</script>
  </scripts>
  <dependencies />
</plugin>

Características principales Algunas de las características principales

importantes (técnicamente) actuales incluyen:
 

  • La codificación / decodificación de paquetes se ha separado de las representaciones de los propios paquetes. Esto permite que el potencial de codificación / decodificación continúe en paralelo y también permite admitir múltiples revisiones. Actualmente, 317 y 377 son completamente compatibles.
  • Soporte de servidor de actualización (JAGGRAB, ondemand y HTTP).
  • Encadenamiento de manejadores de paquetes: esto permite que múltiples complementos puedan interceptar un solo paquete y manejarlo de manera apropiada. Por ejemplo, un complemento de búsqueda podría interceptar la búsqueda en una estantería, por ejemplo, si el comportamiento necesita cambiar en ciertos casos.
  • Ejecución paralela de la actualización del reproductor para máquinas de varios núcleos: esto tiene un beneficio significativo en mi máquina de doble núcleo utilizada para probar el servidor.



Además de eso, tiene las cosas estándar del pantano:
 

  • Acceso
  • Actualización de apariencia
  • Multijugador
  • Caminar / correr
  • Gestión de Derechos
  • Algoritmo de retroceso para el movimiento
  • Diseño de personaje
  • Charlando
  • Comandos
  • Soporte de inventario
  • Soporte de equipo
  • Animaciones
  • Gráficos
  • Mirando / voltear a
  • Sistema de acción
  • Trabajando acciones a distancia
  • Todos los tipos de datos implementados
  • Programador de tareas basado en ticks del juego
  • Guardar / cargar con un formato binario personalizado
  • Niveles de habilidad / experiencias
  • Gestión de complementos
  • Lee la información del artículo del caché



Características de los complementos

Estos son los complementos actuales que he desarrollado hasta ahora.
 

  • hola:  un complemento 'hola mundo' solo para demostrar cómo se utilizan para los desarrolladores de complementos.
  • cmd-item:  comandos relacionados con el elemento: elemento, destruir y vaciar
  • cmd-skill:  comandos relacionados con la habilidad: max
  • cmd-teleport:  teletransporte / comandos relacionados con la posición: pos, tele
  • maniquí:  los maniquíes en Varrock
  • minería:  un complemento de minería para demostrar un complemento más grande para futuros desarrolladores de complementos y para probar algunas de las funciones más nuevas (aún no completadas)



Control / creación de código fuente

Actualmente, el repositorio es privado (aún no está listo y no se lanzará hasta que esté listo).

Arquitectura del servidor

Bibliotecas de terceros

El servidor utiliza la 

contenido oculto

  • Reacciona o responde a este tema para ver el contenido oculto.

 API para el código de red. Netty admite una variedad de transportes como NIO y bloqueo de IO, por lo que puede elegir lo que sea adecuado para su entorno / caso de uso.

los 

contenido oculto

  • Reacciona o responde a este tema para ver el contenido oculto.

 La biblioteca se utiliza para descomprimir archivos comprimidos con bzip2 en la caché.

los 

contenido oculto

  • Reacciona o responde a este tema para ver el contenido oculto.

 La biblioteca se utiliza para pruebas unitarias.

los 

contenido oculto

  • Reacciona o responde a este tema para ver el contenido oculto.

 La biblioteca se utiliza para ejecutar los complementos de Ruby.

 

 

contenido oculto

  • Reacciona o responde a este tema para ver el contenido oculto.

 se utiliza para dibujar bonitos diagramas en los Javadocs.

Complemento de

minería de medios / prospección: Elementos que manejan: Soporte Real 377: Niveles de habilidad: Probar el complemento hello: Puntos de referencia ¡ Estos están bastante desactualizados y podré rehacerlos en algún momento en una variedad de plataformas / configuraciones! Estos son de una máquina de 32 bits que ejecuta Windows 7. Tiene un procesador de doble núcleo de 2,2 ghz y 2 GB de RAM. Se utilizó Java 1.7.0-ea con la máquina virtual HotSpot Server. Actualizador paralelo: el tiempo de ciclo con 2000 reproductores inactivos tomó 240-270ms (luego mejorado a 140-160ms). El tiempo de ciclo con 2000 jugadores enviando mensajes de chat no deseados fue de 420-470 ms. Actualizador secuencial:
687474703a2f2f61706f6c6c6f2d736572766572


687474703a2f2f61706f6c6c6f2d736572766572


687474703a2f2f61706f6c6c6f2d736572766572


687474703a2f2f61706f6c6c6f2d736572766572


687474703a2f2f61706f6c6c6f2d736572766572













El tiempo de ciclo con 2000 reproductores inactivos tomó 290-340 ms. Con los jugadores enviando mensajes de chat no deseados, tomó 550-700ms.

Usando el actualizador paralelo (recomendado para PC ya que tiene múltiples núcleos), el rendimiento estuvo dentro del límite de 600ms. Tampoco es un hardware asombroso.

Planes actuales

El plan a grandes rasgos es:

 

 

 

 

 

  1. Obtenga el núcleo terminado a un estado utilizable para los desarrolladores de complementos.
  2. Permita el acceso temprano a un número selecto de personas para que puedan desarrollar complementos de código abierto precisos para RuneScape. Termine de desarrollar el núcleo mientras esto continúa.
  3. Suelta el núcleo y todos los complementos simultáneamente.
  4. Siéntese y haga actualizaciones ocasionales del núcleo. La comunidad puede hacer el resto.



Créditos

 

  • blakeman8192
  • Sir Sean
  • súper_
  • wL
  • daiki
  • Saevion
  • palomitas de maíz89
  • Tomás
  • desafiante
  • silabsoft
  • ladrón
  • Phyfiox (también conocido como Raul)
  • Scu11
  • Palidino76
  • Parabolika

mu bien tambien xd

 

Create an account or sign in to comment