Introduction
NetScape is a RSPS Framework designed to help RSPS developers make servers in ANY revision
NetScape is heavily based on Apollo.
Why use NetScape to make a server?
NetScape is a framework on which you can build your RSPS on. We will provide a tested RSPS multi-rev framework which will help develop your server easily, without having to worry about the core parts such as networking, Runescape Task queues, message codecs. Any module made on NetScape will be usable by other servers which are also created with NetScape. This will essentially create a eco-system where NetScape RSPS Modules/Plugins can be created, shared or sold. One of the main issues with RSPS programming is that once content is written, years down the line it becomes obsolete with the new servers coming out, then the developer ends up re-writing logic. NetScape will allow you to make a new server and use your existing modules, so you do not need to re-write logic. We plan to be noob friendly, so even people with little to no programming experience can spin up a server in the revision they want and start adding NetScape modules to add new content to their server!
Dont use it now though cause its not ready, although you can contribute :)
Example 317 Server using NetScape: https://github.com/JayArrowz/317-Example
Netscape Framework:
https://github.com/JayArrowz/NetScape
Nuget Packages:
https://www.nuget.org/packages?q=Tags%3A%22NetScape%22/
Docs:
https://jayarrowz.github.io/NetScape/
Code Docs:
https://jayarrowz.github.io/NetScape/api/
Clients used:
317-
https://mega.nz/file/AA9E2CpJ#VUIm5C...4wSHxRIJrZUKoc
474 -
https://mega.nz/file/5c020CAJ#QgifuO...nhZFouhd9hxQaY
Roadmap
Login
-
317
-
474
-
508
-
OSRS
-
667
-
NXT
Encoder & Decoder Messages
-
317
-
474
-
508
-
OSRS
-
667
-
NXT
Npc/Player Updating:
-
317
-
474
-
508
-
OSRS
-
667
-
NXT
Misc:
-
Plugin system allowing assembly loading/unloading on runtime
-
Player Saving/Loading to DB
-
Unit tests for all modules
-
JS5
-
Multi-rev definition loading
-
Unit test coverage
IMAGES
474:
https://i.imgur.com/1clwPXx.png
https://i.imgur.com/nKhN3fC.png
https://i.imgur.com/BZYFIIM.png
317:
https://i.imgur.com/GtEFp4q.png
https://i.imgur.com/g9H41AL.png
https://i.imgur.com/otzoTk7.png
Start working on content directly without having to look at all the core files (available on nuget):
https://i.imgur.com/bkfr9RL.png
FAQS
Does this only support windows?
- No nearly most if not all OS's support .net5.0
The server is getting a cache loading error / 474 cache is not working?
- Ensure the cache is located inside your USERDIR/AspNetServerData/Cache. Also ensure that any data files in the folder ending in ".dat2" are renamed to ".dat"
https://i.imgur.com/4sXG2Dq.png
Can i use a different database?
- Yes the server is completely database agnostic and you can configure another DB using Entity Framework, however you will have to re-create the migrations by using the command "Add-Migration MigrationName".
What IDE's can i use?
- You can use Visual Studio 2019 or Rider
https://visualstudio.microsoft.com/
https://www.jetbrains.com/rider/download/
How do i add NetScape Modules?
Here is a video on how to add the NetScape.Core nuget package and adding the 317 Revision modules
https://youtu.be/sM5vuRPYOdY
474 Example (Uncommited still):
https://i.imgur.com/YyFlcdh.png
Where are the encoder & decoder messages?
Netscape uses proto to define the codec. It is simple enough and generates strongly typed classes for you. Also helps with defining codecs for multiple revisions without having to dive fully into the core.
https://i.imgur.com/jBF4Oec.png
https://github.com/JayArrowz/NetScap...ageCodec.proto
Note that we have the capability to define encoders/decoders inside the server itself as shown here (We do not need to use the universal proto-decoder/encoder logic, if we make sure the Custom option is enabled the standard proto decode/encode logic will not be called, the reference will be taken from the decoder defined with code):
https://github.com/JayArrowz/NetScap...sages/Encoders
https://github.com/JayArrowz/NetScap...sages/Decoders
Here is how the classes defined inside MessageCodec.proto are used.
Run/Walk Buttons:
https://i.imgur.com/2r66W4K.png
Emote Tab:
https://i.imgur.com/BVnaFEY.png
Async Task Support:
https://i.imgur.com/atJGhIj.png
Note the Filter can point to either a Predicate<DecoderMessage<TMessage>> or a method as shown in the images, it can also be null.
Libraries/Frameworks Used
.Net 5
Entity Framework - Database ORM
DotNetty - Networking
SeriLog - Logging
AutoFac - Dependency Injection / Module
xUnit, NSubstitute, FluentAssertions for Unit Tests
Credits
- JayArrowz
- Riley (Protobuf single encoder and decoder for all revs idea)
- Graham
- Major
- Scu11
-
https://github.com/villermen/runescape-cache-tools
-
https://github.com/apollo-rsps/apollo