Skip to content

Commit 4358789

Browse files
Merge branch 'master' into combat
2 parents 9d3e289 + 211a0a9 commit 4358789

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+12347
-300
lines changed

.github/workflows/master.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: Lint & Build Project
2+
3+
on:
4+
pull_request:
5+
branches: [ master ]
6+
push:
7+
branches: [ master ]
8+
9+
jobs:
10+
build:
11+
runs-on: ubuntu-latest
12+
13+
steps:
14+
- name: Checkout Repository
15+
uses: actions/checkout@v2
16+
17+
- name: Setup Node
18+
uses: actions/setup-node@v1
19+
with:
20+
node-version: '13.x'
21+
22+
- name: Install Node Modules
23+
run: npm i
24+
25+
- name: Run Linter
26+
run: npm run lint
27+
28+
- name: Build Project
29+
run: npm run build

CONTRIBUTING.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
# Contributing to Rune.JS
1+
# Contributing to RuneJS
22

3-
Rune.JS was created with the intention of utilizing JavaScript/TypeScript and Node's innovative features. RxJS was imported for reactive programming as well, opening up opportunities for easy content development. As such, there are a few things we're looking to avoid...
3+
RuneJS was created with the intention of utilizing JavaScript/TypeScript and Node's innovative features. RxJS was imported for reactive programming as well, opening up opportunities for easy content development. As such, there are a few things we're looking to avoid...
44

55
1. Direct ports/copying from Java servers
6-
- This defeats the purpose of Rune.JS by implementing basic flows that any regular Java-based server would use. Think outside the box and really utilize ES6, TypeScript, Node, and RxJS! :)
6+
- This defeats the purpose of RuneJS by implementing basic flows that any regular Java-based server would use. Think outside the box and really utilize ES6, TypeScript, Node, and RxJS! :)
77
2. Additional/outside dependencies
8-
- Sometimes additional dependencies can not be avoided, but we'd like to avoid them as much as possible. Rune.JS intends to be simple and easy for anyone to pick up, without requiring the user to set up any databases or additional third party systems.
8+
- Sometimes additional dependencies cannot be avoided, but we'd like to avoid them as much as possible. RuneJS intends to be simple and easy for anyone to pick up, without requiring the user to set up any databases or additional third party systems.
99
- In some cases this is of course unavoidable, as such we'll handle them on a case-by-case basis.
1010

1111
Ultimately if you're looking to contribute, it's best to check in with us on Discord to see if we're already working on a specific feature or have plans for it already. Add us at **TheBlackParade#1260**

README.md

Lines changed: 38 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -7,36 +7,48 @@
77

88
RuneJS is a RuneScape game server written entirely using TypeScript and JavaScript. The aim of this project is to create a game server that is both fun and easy to use, while also providing simple content development systems.
99

10-
Currently the server is set up for the 435 revision of the game, which was a game update made on October 31st, 2006. There are not any plans to convert it to other versions at this time.
10+
The server runs on the 435 revision of the game, which was a game update made on October 31st, 2006. There are not any plans to convert it to other versions at this time.
11+
12+
**RuneJS is completely open-source and open to all pull requests and/or issues. Many plugins have been added by contributor pull requests and we're always happy to have more!**
1113

1214
## Features
1315

14-
- RSA and ISAAC ciphering support.
15-
- Login & input/output packet handling.
16-
- Player saving/loading via JSON files.
17-
- Multiplayer support.
18-
- Map region/chunk handling.
19-
- Item inventory implementation.
20-
- Item definition parsing via the game cache.
21-
- Additional item data loading via YAML configuration.
22-
- Inventory item swapping.
23-
- Player equipment with item bonuses & weight.
24-
- NPC spawning and updating.
25-
- NPC spawn loading via YAML configuration.
26-
- Player & NPC pathing validation via collision and tile maps generated from the 377 game cache.
27-
- A basic REST service for polling logged in users.
28-
- Full functional update server.
29-
- A diverse TypeScript plugin system for easily writing new content based off of in-game actions.
30-
- Flexible quest and dialogue systems for easy content development.
16+
- Asynchronous server infrastructure using Promises and RxJS Observables
17+
- RSA and ISAAC ciphering support
18+
- Login & input/output packet handling
19+
- Player saving/loading via JSON files
20+
- Player credential validation and password hashing
21+
- Multiplayer support:
22+
- Multiplayer rendering
23+
- Full chat support
24+
- Quadtree collision detection for finding nearby players to synchronize
25+
- Map-chunk based positioning
26+
- Item support:
27+
- Item definition parsing via the game cache
28+
- Additional item data loading via YAML configuration
29+
- Inventory items, equipment items, item swapping
30+
- Item dropping and picking up
31+
- Buying/selling via shops
32+
- Player equipment:
33+
- Equipment bonuses and item weight tracking
34+
- Full equipment bonus widget support
35+
- NPCs and NPC synchronization:
36+
- NPC spawn loading via YAML configuration
37+
- Player & NPC pathing validation via collision and tile maps generated from the game cache
38+
- A basic REST service for polling logged in users and game items
39+
- Fully functional game update server
40+
- A diverse TypeScript plugin system for easily writing new content based off of in-game actions
41+
- A simplified JavaScript plugin system for quickly and easily bootstrapping game content
42+
- Flexible quest and dialogue systems for more advanced content development
3143

3244
## Usage
3345

34-
1. Download and install Node.JS **version 12 or higher**: https://nodejs.org/en/
46+
1. Download and install NodeJS **version 13 or higher**: https://nodejs.org/en/
3547
2. Clone the Github Repo: https://github.com/rune-js/server
3648
3. Install dependencies by navigating to the project in your Terminal or command prompt and running the command npm install
37-
4. Copy the `data/config/server-config-default.yaml` and paste it into the same folder using the name `server-config.yaml`.
38-
5. Go into your new `server-config.yaml` file and modify your RSA modulus and exponent with the ones matching your game client.
39-
- You may also modify the server's port and host address from this configuration file.
49+
4. Copy the `data/config/server-config-default.yaml` and paste it into the same folder using the name `server-config.yaml`
50+
5. Go into your new `server-config.yaml` file and modify your RSA modulus and exponent with the ones matching your game client
51+
- You may also modify the server's port and host address from this configuration file
4052
6. Run the game server and REST service by inputting the command npm run server
4153

4254
The game server will spin up and be accessible via port 43594. The REST service can be accessed via port 8888.
@@ -56,10 +68,10 @@ Online players can be polled via the REST protocol for web applications.
5668

5769
##### API Endpoints:
5870

59-
- `GET /players` : Returns a list of players currently logged into the game server.
60-
- `GET /items?page=x&limit=y` : Returns a list of item metadata loaded by the game server.
61-
- `GET /items/{itemId}` : Returns details about a specific item by id.
62-
- `PUT /items/{itemId}` : Updates an item's configurable server data.
71+
- `GET /players` : Returns a list of players currently logged into the game server
72+
- `GET /items?page=x&limit=y` : Returns a list of item metadata loaded by the game server
73+
- `GET /items/{itemId}` : Returns details about a specific item by id
74+
- `PUT /items/{itemId}` : Updates an item's configurable server data
6375

6476
## Aditional Information
6577

cache/main_file_cache.dat2

514 Bytes
Binary file not shown.

cache/main_file_cache.idx255

0 Bytes
Binary file not shown.

cache/main_file_cache.idx4

2.12 KB
Binary file not shown.

0 commit comments

Comments
 (0)