Thread: Rune.JS - A RuneScape game server written entirely in (TypeScript) JavaScript

Page 1 of 4 123 ... LastLast
Results 1 to 10 of 36
  1. #1 Rune.JS - A RuneScape game server written entirely in (TypeScript) JavaScript 
    Registered Member
    TheBlackParade's Avatar
    Join Date
    Dec 2019
    Posts
    22
    Thanks given
    27
    Thanks received
    25
    Discord
    TheBlackParade#1260
    Rep Power
    86


    [Only registered and activated users can see links. ]

    Rune.JS 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.

    Okay, so technically it's all in TypeScript, but that's because I just love TypeScript. As a frontend developer, I generally use it for everything. As for the... but why?... I was bored and wanted to see how difficult it would be, as I hadn't seen anyone attempt something like this before and actually get very far with it. Node surely isn't the best tool for a game server type of application, but it has some interesting features that I wanted to try and make use of for a server just for kicks. I've only spent a few days on it so far, so it's pretty bare bones at the moment.

    Currently the server is set up for the 377 revision of the game. There are not any plans to convert it to other versions at this time, though that could very well change. Any regular 377 client with RSA enabled should work with Rune.JS.

    The project is currently hosted publicly on Github: [Only registered and activated users can see links. ]


    Features

    - Login & input/output packet handling.
    - Player saving/loading via JSON files.
    - Multiplayer support.
    - Map region/chunk handling.
    - Item inventory implementation.
    --- Item definition parsing via the game cache.
    --- Additional item data loading via YAML configuration.
    --- Inventory item swapping.
    - Player equipment with item bonuses & weight.
    - NPC spawning and updating.
    --- NPC spawn loading via YAML configuration.
    - Player & NPC pathing validation via collision and tile maps generated from the game cache.
    - Player client settings saving and loading.
    - A basic REST service for polling logged in users.
    - A diverse TypeScript plugin system for easily writing new content based off of in-game actions.


    Usage

    1. Download and install Node.JS **version 12 or higher**: [Only registered and activated users can see links. ]
    2. Clone the Github Repo: [Only registered and activated users can see links. ]
    3. Install dependencies by navigating to the project in your Terminal or command prompt and running the command npm install
    4. Copy the data/config/server-config-default.yaml and paste it into the same folder using the name server-config.yaml.
    5. Go into your new server-config.yaml file and modify your RSA modulus and exponent with the ones matching your game client.
    - You may also modify the server's port and host address from this configuration file.
    6. Run the game server and REST service by inputting the command npm start

    The game server will spin up and be accessible via port 43594. The REST service can be accessed via port 8888.


    Cache Parsing

    A separate package was created that Rune.JS uses to parse the 377 game cache. This package parses item definitions, npc definitions, landscape object definitions, map region tiles, and map region landscape objects. The cache parsing was created based off code written by Graham in Hyperion.

    The Rune.JS cache-parser package can be found here:

    [Only registered and activated users can see links. ]
    (also published on NPM under the namespace runejs)


    REST API

    Online players can be polled via the REST protocol for web applications. An accompanying server control panel UI is panned utilizing VueJS that will point to this REST service.


    API Endpoints:

    GET /players : Returns a list of players currently logged into the game server.
    GET /items?page=x&limit=y : Returns a list of item metadata loaded by the game server.
    GET /items/{itemId} : Returns details about a specific item by id.
    PUT /items/{itemId} : Updates an item's configurable server data.


    Media

    Spoiler for Media:























    Contributors

    @[Only registered and activated users can see links. ]
    @[Only registered and activated users can see links. ]
    @[Only registered and activated users can see links. ]
    Reply With Quote  
     


  2. #2  
    JavaScript Heathen 👹
    frostbit3's Avatar
    Join Date
    Mar 2012
    Age
    25
    Posts
    388
    Thanks given
    316
    Thanks received
    78
    Rep Power
    43
    good shit ))
    [Only registered and activated users can see links. ]
    Reply With Quote  
     

  3. Thankful user:


  4. #3  


    Jigsaw's Avatar
    Join Date
    Jan 2011
    Posts
    401
    Thanks given
    234
    Thanks received
    196
    Discord
    Jesse#4900
    Rep Power
    464
    Impressive! I'll be keeping an eye on this.
    [Only registered and activated users can see links. ]

    [Only registered and activated users can see links. ]
    Reply With Quote  
     

  5. Thankful user:


  6. #4  
    2020 © IPS Guardian

    Guardian's Avatar
    Join Date
    May 2017
    Age
    23
    Posts
    1,486
    Thanks given
    906
    Thanks received
    1,371
    Rep Power
    5000
    Rune.js - [Only registered and activated users can see links. ] - A JavaScript library for programming graphic design systems with SVG.

    Reply With Quote  
     

  7. #5  


    Jigsaw's Avatar
    Join Date
    Jan 2011
    Posts
    401
    Thanks given
    234
    Thanks received
    196
    Discord
    Jesse#4900
    Rep Power
    464
    Quote Originally Posted by Guardian View Post
    Rune.js - [Only registered and activated users can see links. ] - A JavaScript library for programming graphic design systems with SVG.
    I'm not convinced that will be much of an issue, although if @[Only registered and activated users can see links. ] does decide to change the name, rs.js has a nice ring to it.
    [Only registered and activated users can see links. ]

    [Only registered and activated users can see links. ]
    Reply With Quote  
     

  8. Thankful user:


  9. #6  
    2020 © IPS Guardian

    Guardian's Avatar
    Join Date
    May 2017
    Age
    23
    Posts
    1,486
    Thanks given
    906
    Thanks received
    1,371
    Rep Power
    5000
    Its confusing rn, since rune.js library is common used by senior devs

    Reply With Quote  
     

  10. #7  
    Unfortunately we’re all human. Except me


    Join Date
    Aug 2011
    Posts
    920
    Thanks given
    535
    Thanks received
    437
    Rep Power
    613
    Nice work
    Reply With Quote  
     

  11. Thankful user:


  12. #8  




    Scu11's Avatar
    Join Date
    Aug 2007
    Age
    25
    Posts
    16,064
    Thanks given
    7,048
    Thanks received
    11,850
    Discord
    Scu11#7214
    Rep Power
    5000
    Quote Originally Posted by Guardian View Post
    rune.js library is common used by senior devs
    barely downloaded 100 times per week so ur stretching by claiming its "commonly used" lmao

    [Only registered and activated users can see links. ]



    Reply With Quote  
     

  13. Thankful users:


  14. #9  
    أول الغضب جنون وآخره ندم
    Savions's Avatar
    Join Date
    Aug 2012
    Age
    21
    Posts
    2,456
    Thanks given
    164
    Thanks received
    1,537
    Rep Power
    2027
    Quote Originally Posted by Scu11 View Post
    barely downloaded 100 times per week so ur stretching by claiming its "commonly used" lmao
    and not to mention "senior devs" as if this library requires you to have years of knowledge and experience before being able to work with
    Reply With Quote  
     

  15. Thankful users:


  16. #10  
    Registered Member
    TheBlackParade's Avatar
    Join Date
    Dec 2019
    Posts
    22
    Thanks given
    27
    Thanks received
    25
    Discord
    TheBlackParade#1260
    Rep Power
    86
    Thanks for the support! I'd actually seen that while I was setting up the Github org, but didn't figure it would be too much of an issue. Though if they do happen to take up issue with it, I wouldn't care about changing the name. RS.JS indeed doesn't sound too bad, haha. Scape.JS wouldn't be awful either.


    EDIT:

    @[Only registered and activated users can see links. ] literally just saw your post about a JS/Node based server from your signature haha. Had no idea anyone had even considered this before, but it's funny that our posts are so close together in time especially.


    EDIT 2:

    Completed a system for loading additional item information (weight, equipment stats, equip slot, etc...) and merged into master. Also made a Kanban board on the main repo for visibility into how development is going: [Only registered and activated users can see links. ]

    Haven't had time to do much today, as I was busy cleaning out my polebarn/shop. Got very messy after a recent engine swap and the weather has been superb lately so it was a good time to do all that. May start on equipment and equipment updating today, not sure yet.


    EDIT 3:

    Updated the first post to include a more verbose setup list and a new project logo. Also edited the features list a bit to include the fact that RSA encryption for login and the isaac cipher for packets are included in this as well.
    Reply With Quote  
     

  17. Thankful users:


Page 1 of 4 123 ... LastLast

Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Similar Threads

  1. Replies: 1
    Last Post: 12-06-2011, 09:30 PM
  2. Replies: 5
    Last Post: 09-28-2011, 06:39 AM
  3. Replies: 38
    Last Post: 09-01-2009, 10:02 PM
  4. PyWorld - Runescape server written in Python
    By w::v::d in forum Projects
    Replies: 15
    Last Post: 08-10-2009, 11:25 PM
  5. Replies: 8
    Last Post: 04-27-2008, 05:41 AM
Tags for this Thread

View Tag Cloud

Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •