RuneJS is a RuneScape game server written in TypeScript and JavaScript. The goal of the project is to create a comprehensive game engine, while also providing simple and easy to use content development systems and APIs.
Add the ability to equip items and enhance player updating to show a player's equipped items. The player's equipment stats should also update to reflect their equipped items.
Players should be able to:
Equip items based off of the additional item metadata story #1 (which this is dependent upon)
Players should be able to be given hint indicators during quests, tutorials, or any other action that can identify which object, NPC, or player they are meant to be interacting with.
Hint icons should be able to be shown for:
Location objects (world objects, ie a door or tree)
Instead of adding a catch clause similar to:
catch(error => console.log(error));
to the end of each promise, I propose we should export a few generic (and re-useable) exception handlers so that changes to exception handling behaviour can be applied consistently.
Players should be able to view a list of their personally saved friends, as well as a list of players they have chosen to ignore. Players can message other players via the Friends list, as well as see their online status and active game world.
Friends list
Friends list should show friend's online status, dependent upon their active privacy settings
Friends list should show a friend as offline if they are not online
Friends list should show which world the player is logged in to
Players should be able to send messages to their online friends via the Friends list
Players should be able to receive messages from other players depending on their privacy settings
Players can add other players to their Friends list
Players can remove names from their Friends list
The player's Friends list saves and loads with their character
Ignore list
Players should not see messages from users on their Ignore list
Players can add other players to their Ignore list
Players can remove names from their Ignore list
The player's Ignore list saves and loads with their character
Privacy settings
Players can modify their privacy settings
Privacy setting modifications send out updates about the Player's online status if set to "Friends" or "Off"
Privacy settings save and load with the player's character
Split out login and authentication into a separate project and runnable service. rune-js/server can import this as a devDependency and run it alongside the main game server.
errors currently just print a general idea of what happened, not where and what caused it. We should have proper stack traces to find where and what caused it
Players should be able to have their own private game instance, including their own personal game objects, NPCs, and world items.
Players should not be able to see actions of other players in their private instance.
Other players should not be able to see the actions of this player in their private instance.
Players should be able to join a group instance where they share the aforementioned resources - game objects, NPCs, and world items.
Players outside of this group instance should not be able to see the actions of those within.
Vise versa for those inside in instance.
The game world should have a global instance that applies to all players and NPCs that are not assigned to a specific instance (they are not in private gameplay of any kind).
This is a game instance shared by everyone within the world that is not in a private instance.
All world items, objects, NPCsc, etc are visible to everyone inside the global instance.
The global instance and private instances can not be engaged at the same time. The player must be either in the global instance or a specific instance - whether that be a group or private instance.
Friends list status is independent of instances - a player is shown as online regardless of which instance type they are logged into.
Any plans on supporting https://github.com/reinismu/runescape-web-client-377/? And do y'all have an IRC channel or Discord? I'm working on a similar project but for a much earlier revision :P. Looks like we took some similar approaches, especially with cache management.
Need to add the ability for landscape objects to be spawned and/or despawned for specific players or a specific player instead of always for the entire game world.
[1] Error decoding client data
[1] TypeError: this[methodName] is not a function
[1] at ByteBuffer.put (server\node_modules@runejs\byte-buffer\src\byte-buffer.ts:95:29)
[1] at LoginHandshakeParser.parse (server\src\net\data-parser\login-handshake-parser.ts:21:26)
[1] at ClientConnection.parseIncomingData (server\src\net\client-connection.ts:51:33)
[1] at Socket.socket.on.data (server\src\game-server.ts:110:38)
[1] at Socket.emit (events.js:189:13)
[1] at addChunk (_stream_readable.js:284:12)
[1] at readableAddChunk (_stream_readable.js:265:11)
[1] at Socket.Readable.push (_stream_readable.js:220:10)
[1] at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)
Add the ability for players to toggle between running and walking, and have them actually run. This will be a small modification within the WalkingQueue and player settings. Since this is a player setting, this story is dependent upon #3.
The player should:
Be able to toggle on run mode and run.
Be able to toggle off run mode and resume walking.
Players should be able to have their own private game instance, including their own personal game objects, NPCs, and world items.
Players should not be able to see actions of other players in their private instance.
Other players should not be able to see the actions of this player in their private instance.
Players should be able to join a group instance where they share the aforementioned resources - game objects, NPCs, and world items.
Players outside of this group instance should not be able to see the actions of those within.
Vise versa for those inside in instance.
The game world should have a global instance that applies to all players and NPCs that are not assigned to a specific instance (they are not in private gameplay of any kind).
This is a game instance shared by everyone within the world that is not in a private instance.
All world items, objects, NPCsc, etc are visible to everyone inside the global instance.
The global instance and private instances can not be engaged at the same time. The player must be either in the global instance or a specific instance - whether that be a group or private instance.
Friends list status is independent of instances - a player is shown as online regardless of which instance type they are logged into.