XliteKt is an open-source, and forever open-source Kotlin based OSRS Emulator for educational purposes.

Overview

xlitekt

wakatime

Introduction

XliteKt is an open-source, and forever open-source Kotlin based OSRS Emulator for educational purposes. Currently built around the game update: #202 (Nex)

The goal behind this project is to provide the community with a powerful, yet simple to use framework that is heavily documented.

Xlite is currently built by two developers:

Getting Started

Make sure to download the Jan 6th #202 cache version from one of the archives below. We don't push this to github for obvious reasons.

Download a cache from one of the archives:

Place the cache you downloaded into the ./cache/ folder inside of the project. This path is configurable in the application.conf.

Generate RSA tokens and update your application.conf file

This will eventually be a gradle task to generate new RSA keys. For now, you can reference the rune-server thread: any-revision-enabling-rsa

Download and install the #202 xteas inside of the map folder in resources.

You can find this file on the runstats repo, called xteas.json

Application configuration

Most everything will be setup and configured already for you around the build #202. So unless you're porting to a recent revision you'll really only need to worry about updating the RSA Keys in the application.conf file.

Configuration for ktor can be found in the ktor block.

ktor {
    development = false
    deployment {
        port = 43594
        watch = [ classes, resources ]
    }
    application {
        modules = [ com.runetopic.xlitekt.ApplicationKt.main ]
    }
}

Configuration for game related properties. You will need to generate your RSA exponent and modulus, as well as the packet sizes.

We will be writing a tutorial in the future for dumping packets sizes and other information from the current OSRS client as well as the gradle task to generate RSA tokens.

Please change the RSA tokens for a production based environment, these keys are just an example. Do not use this for anything other than local development.

game {
    build {
        major = 202
        minor = 1
    }
    packet {
        sizes = [ 3, 8, 16, -1, -1, 8, 2, 1, 8, 0, 8, 8, 0, 2, 16, 16, 8, 9, 11, 8, 8, 7, 2, 4, 7, 4, -1, 7, 15, 8, -1, 8, 9, 7, 15, 6, -1, 3, 11, 15, 4, 8, 8, 8, -1, -2, 3, 3, 5, -1, -1, -1, -1, 7, 7, 0, 7, -1, -1, 3, -2, 3, 8, 3, 8, 0, 8, 4, 7, 11, 3, 6, 8, 11, 3, 8, 7, 4, -1, 2, 15, 7, 8, 3, 14, 3, -1, 10, 8, 13, 3, -1, 3, -1, 7, -1, 0, -2, -1, -1, 2, -1, -1, -1, 3, -1 ]
    }
    cache {
        path = "./cache/"
    }
    rsa {
        exponent = "74319506585812759823290259020934858088666404737094871101540670473424793671202076033582991318775440709937362678616598621443723414224839661646087632908361014054642952231258678163322462341878133664959918342102621655539431162351843502897522597279543226584696172903586455624355061037387268986011976499046968675073"
        modulus = "101152132894052393265886644489429469067887733993499471826334750806131431774995232950094045980615261210482740859538462033841944288877997111341162261129657268035424385776764492943939466200272309679088830878857767599863397432612329236019641861788901097158810527108145428907942159175673330991981851896173021952237"
    }
    xteas {
        path = "/map/xteas202.json"
    }
}

Configuration related to network.

network {
    timeout = 10000
}

Maps

Maps are loaded using the xteas provided from Runestar, which follows this format:

[
  {
    "mapsquare": 4662,
    "key": [
      327206325,
      671317497,
      652416162,
      -982088476
    ]
  }
]

Documentation

https://runetopic.github.io/xlitekt/

Comments
  • Feature/packets

    Feature/packets

    • Packet decoding
    • Packet encoding
    • Network pipeline cleanup and exception handling.
    • Proper logging (Thanks to Scu11s inline logger)
    • GPI Mostly finished (Still need to implement all of the blocks)
    • Adding 202 XTEAS.
    • Simple World implementation and Actor collection (This is based from Graham, will end up redoing this when I CBA)
    enhancement 
    opened by tyler27 1
  • Feature/run energy

    Feature/run energy

    Implemented run energy system. Using a float for the energy values, as OSRS uses 10_000f for 100% so 1 run energy unit is 100.

    This doesn't support stamina potions or any of the other weight reducing effects, but this is a good start.

    opened by tyler27 0
  • Feature/containers

    Feature/containers

    • More containers work
    • Equipment work. (Need to do removing / adding of stackable items)
    • EquipmentInventory started
    • Item sequences
    • Actor bonuses
    • Item weight (Worn & Inventory)
    • Item info updates (Hiding body parts)
    • Fixing broken items in the wiki dump.
    • Fixing walkable/non-walkable modals.
    • Update IfSetEvent to calculate the events to support multiple.
    opened by tyler27 0
  • Zone implementation. [WIP - DO NOT MERGE YET]

    Zone implementation. [WIP - DO NOT MERGE YET]

    • NPC Zone based updating.
    • Minor movement work to improve the feel of walking / running.
    • Minor code cleanup and improvements.
    • Fix PlayerSync exception logging being swallowed.
    • Removing toList from SequentialActorSynchronizer.kt and ParallelActorSynchronizer.kt
    • Fixing some issues with cached blocks in PlayerInfoAssembler.kts
    • Adding OpNPCPacket.kt, OpNPCHandler.kts, and OpNPC1Disassembler.kts for NPC operations.
    • Adding OpLocPacket.kt, OpLocHandler.kts, OpLoc1Disassembler.kts and OpLoc2Disassembler.kts for Game object operations.
    • Refactor NPCInfoPacketAssembler.kts and NPCExtendedInfoPacketAssembler.kts to use zone utility function.
    • Adding entry and toString function to NPC.kt
    • Fixing unsigned byte issues with packet disassemblers.
    • Fixing level issue with Movement.kt when we went to queue waypoint steps.
    • Removing dead code from Location.kt and removing Comparable.
    • Modify CollisionMap.kt to include object locs for zones upon creation.
    • Removing toList from BenchmarkParallelActorSynchronizer.kt
    • Making NPCs nullable inside the typealias for ActorList.kt
    enhancement 
    opened by tyler27 0
  • Collision map support to implement pathfinding. WIP DO NOT MERGE YET

    Collision map support to implement pathfinding. WIP DO NOT MERGE YET

    • Updated cache library to not decompress entries in index 5 as we need to decompress this inside of the server itself.
    • Start to loading MapSquareEntryType.
    • Using the ZoneFlags Kris came up with, to split this up by zones. Will make it prettier down the line.
    enhancement 
    opened by tyler27 0
Owner
Runetopic
Runetopic
PlanetFacts - An educational android app for kids to learn about the planets in our solar system. Built with Kotlin.

PlanetFacts PlanetFacts is an offline simple, modern & material-designed educational Android application for kids. It contains basic facts with visual

Saikat Datta 1 Oct 16, 2022
YAML-based source-based kotlin module descriptors

kproject - Liberate your Kotlin projects YAML-based source-based kotlin module descriptors that runs on top of gradle. Define your kotlin multiplatfor

KorGE Game Engine & Korlibs 16 Jan 31, 2023
Open-Source Forge 1.8.9 Hypixel Duels bot! Planned to support many modes and written in Kotlin.

This project has been moved to a new repository: [HumanDuck23/duck-dueller-v2](https://github.com/HumanDuck23/duck-dueller-v2) Duck Dueller Are you ti

null 2 Aug 29, 2022
Open source Crypto Currency Tracker Android App made fully in Kotlin

CoinBit CoinBit is a beautiful CryptoCurrency app, completely open sourced and 100% in kotlin. It supports following features Track prices of over 300

Pranay Airan 50 Dec 5, 2022
an open source algorithmic trading framework written in Kotlin for anyone serious about algo-trading

Roboquant Roboquant is an algorithmic trading platform that is fast and flexible while at the same time strives to be easy to use. It is fully open so

Neural Layer 132 Jan 2, 2023
Free and open source manga reader for Android.

Build Stable Weekly Preview Contribute Support Server Tachiyomi Tachiyomi is a free and open source manga reader for Android 5.0 and above. Features F

Tachiyomi 20.2k Dec 30, 2022
Free and open source Android app to manage qBittorrent remotely.

qBitController qBitController is a free and open source app for managing qBittorrent remotely. Please note that qBitController is in alpha version. Us

Bartu Özen 12 Dec 25, 2022
Bible Study App, by And Bible Open Source Project

Bible Study App by And Bible Open Source Project Powerful offline Bible Study tool for Android Promovideo See promovideo in Youtube Users Please see t

And Bible 437 Dec 23, 2022
An open-source Android app for locating your group's people privately using Facebook Login, Google Maps API and Firebase

An open-source Android app for locating your group's people privately using Facebook Login, Google Maps API and Firebase

Duong Tran Thanh 2 Feb 27, 2022
Kotatsu is a free and open source manga reader for Android platform

Kotatsu is a free and open source manga reader for Android platform. Supports a lot of online catalogues on different languages with filters and search, offline reading from local storage, favourites, bookmarks, new chapters notifications and more features.

null 7 Dec 19, 2022
XCore is a Open-Source , simple and lightweight API & Template for Android Apps.

XCore XCore is a Open-Source , simple and lightweight API & Template for Android Apps. Support XCore is compatible with Android Studio & Sketchware Pr

TherionRO 3 Dec 2, 2022
An open source app which can be used to do basic surveys

SurveyApp This is an open source app which can be used to do basic surveys. It supports multiple question types. For demo please check the releases pa

Dhiraj Uchil 0 Dec 9, 2021
Android Open-Source Telematics App with Firebase© integration

Android Open-Source Telematics App with Firebase© integration Description This Telematics App is developed by Damoov and is distributed free of charge

null 0 Jan 14, 2022
OpenAbyss - Open source script for Powbot that crafts runes through the abyss

OpenAbyss Open source script for Powbot that crafts runes through the abyss Feat

null 3 Feb 9, 2022
TheMovies 🎬 A demo project for The Movie DB based on Kotlin MVVM architecture and material design & animations.

A simple project for The Movie DB based on Kotlin MVVM clean architecture and material design & animations. How to build on your environment

Jaewoong Eum 420 Nov 29, 2022
Akka-in-action-kotlin - Accompanying source code for Akka in Action by Kotlin

Akka実践バイブル Kotlin版サンプルコード ( Accompanying source code for Akka in Action by Kotli

nrs 7 Jul 26, 2022
A complex of libraries and starters for organizing long-polling-based interaction between the client and the server.

A complex of libraries and starters for organizing long-polling-based interaction between the client and the server.

Mikhail Titov 2 Jun 25, 2022