You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,11 @@
1
-
# Contributing to Rune.JS
1
+
# Contributing to RuneJS
2
2
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...
4
4
5
5
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! :)
7
7
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.
9
9
- In some cases this is of course unavoidable, as such we'll handle them on a case-by-case basis.
10
10
11
11
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**
Copy file name to clipboardExpand all lines: README.md
+38-26Lines changed: 38 additions & 26 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,36 +7,48 @@
7
7
8
8
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.
9
9
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!**
11
13
12
14
## Features
13
15
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
31
43
32
44
## Usage
33
45
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/
35
47
2. Clone the Github Repo: https://github.com/rune-js/server
36
48
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
40
52
6. Run the game server and REST service by inputting the command npm run server
41
53
42
54
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.
56
68
57
69
##### API Endpoints:
58
70
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
0 commit comments