Welcome, guest! Please login or register.

    * Shoutbox

    • calemx: death's-server has officially been released, come check us out  - [link]
      September 13, 2019, 04:14:21 AM
    • PavSwag: try autoscape,0rg today i will personally help you get RICH and well KNOWN - pav
      September 12, 2019, 12:26:40 PM
    • cbrophy: would my account from 2013 work?
      September 12, 2019, 05:04:43 AM
    • ragnoroker: RuneGuild has officially been released, come check us out - [link]
      September 11, 2019, 11:26:35 AM
    • ragnoroker: RuneGuild has officially been released, come check us out - [link]
      September 11, 2019, 11:26:31 AM
    • ragnoroker: RuneGuild is due to be released tomorrow! First few players will recieve some goodies. Sign up on our website [link] Join our discord for updates [link]
      September 07, 2019, 07:43:28 PM
    • ragnoroker: RuneGuild is due to be released tomorrow! First few players will recieve some goodies. Sign up on our website [link] Join our discord for updates [link]
      September 07, 2019, 07:42:59 PM
    • ChrisMeadows: Yo, what's the forum's discord?
      September 04, 2019, 08:33:06 PM
    • newerarsps: i cannot register to rsps list anyone can help?
      September 01, 2019, 11:24:00 PM
    • PavSwag: Date Registered: July 03, 2012, 03:54:45 PM Think im just as good vet as u man, + I have over 80B in rs3 think im good on anyones 100k ass lookin bank b oi
      August 27, 2019, 10:48:09 AM
    • PavSwag: autoscape is the most legit server i have  ever played. infernal dragons and twisted bows
      August 27, 2019, 10:41:20 AM
    • PavSwag: Join autoscape,0rg fun events daily for infernal mystery boxes only server with Infernal Twisted Bow
      August 26, 2019, 12:09:40 AM
    • Sblasko9: Date Registered: May 04, 2007
      August 25, 2019, 12:24:35 PM
    • ganch: but you're not falsely accusing us of having a rat in our cache
      August 24, 2019, 01:21:05 AM
    • bumfluff120: my acc was made in 2006, btw
      August 24, 2019, 01:06:55 AM
    • ganch: also @hodford, your account was made in 2013 btw. I am an owner of autoscape, I'd like to see your virustotal scan of our cache
      August 23, 2019, 10:18:15 PM
    • ganch: @hodford if autoscape cache has a keylogger in the cache, then how come you posted an ad for them?
      August 23, 2019, 10:12:05 PM
    • ragnoroker: New Server! - Join today, double exp this weekend :) - [link]
      August 22, 2019, 11:44:10 AM
    • ragnoroker: New Server! - Join today, double exp this weekend :) - [link]
      August 22, 2019, 11:44:02 AM
    • gogata: holy crap time to make a rsps again 10 years later since i made this acc LOL
      August 21, 2019, 03:23:51 PM

    Author Topic: RSCGo: A new RSClassic server implementation written in Go 1.11+  (Read 19 times)

    0 Members and 1 Guest are viewing this topic.

    OfflineZach Knight

    • Member
    • **
    • Posts: 49
    • Thanks: +0/-0
      • View Profile
    Hello, Moparscape!

    I have, over the last month, begun development on a new project.  I became really interested in Go over the last few years, and had thought about doing a project like this one for a while.  Recently I was going to start improving an old RSCDaemon-based codebase I'd worked on in the past, and after hacking on it for a little while, decided that it would be better, and actually probably be a lot easier, and definitely more enjoyable, if I just implemented a brand new RSClassic server using Go instead.  So, about a month or so ago, I sat down and started working on it.  It's now at a state to where others would find it useful, and as such, I've decided to publicize it a little.  I know that this is where I used to discuss RSClassic development, and so I've decided to post it here first!

    Server: https://github.com/spkaeros/RSCGo
    Client: https://github.com/spkaeros/RSCGo-Client

    For those that have not heard of it, Go is a programming language designed by some developers at Google which implements CSP-style concurrency, and was designed with the goal of replacing C/C++ for a lot of Google's projects.  I'd say that they did a decent job, as I personally love using Go, and find it the most intuitive language I have ever learned.  Plus, it compiles to native code, which I think is great.

    RSCGo is being designed with performance, simplicity, and portability in mind.
    It should always be able to compile and run on the three major desktop operating systems: Linux, Windows, and Mac OS X.
    It should be able to handle large player loads on modest hardware.
    It should leverage modern technologies to provide a responsive user experience, and run efficiently on modern hardware, using minimal resources.

    For the database, I've decided on SQLite3, as I feel it is the best SQL for the job and enables easy and fast deployment, without needing any SQL server installed nor root access on the target machine.  I am debating on implementing a less-powerful data store for this project so that I may remove SQLite3 as a dependency, as go-sqlite3, the package I use for my SQLite3 driver, depends on CGo, which seriously impedes portability and increases binary size a great deal.  This may or may not happen in the future, we'll see.
    For configuration settings, I've decided to use TOML, as I feel like YAML is kind of overkill, and INI too simple.  Plus, I like the TOML API a lot better than the INI API in Go.
    For command-line flags parsing, I've opted to depend on a package from a github user: jessevdk/go-flags  It provides a very nice and easy to use API and much more complete parsing capabilities than the go standard flags package does.
    For password hashing, I've decided to use SHAKE256, using a configurable salt, with an output length of 64 bytes, and I use the golang.org/x/crypto API for this.  This is the highest security SHA3 algorithm available and while the security level may be a tad overkill, the performance hit from using this versus a less secure algorithm is negligible, and so I decided to go ahead and use it.
    That's all of the dependencies for this project.  Obviously to build it you'll need a working Go 1.11+ compiler.  I do test builds for RSCGo on 32 and 64bit Linux and Windows, and nothing more.  If anyone can help me to test against 32 or 64bit Darwin, that would be greatly appreciated.  I believe that it'll compile and work well on any target system with a working Go 1.11+ compiler with CGo support and accompanying C compiler, and a working SQLite3 C driver implementation.  If I ever manage to drop SQLite3 as a dependency, it should compile and run fine on any target supported by Go, which is a rather long and impressive list.

    Here is a screenshot of a slightly earlier revision in action, just after multiplayer walking support was finished:

    Anyways, I'm going to stop writing about it for now.
    If you have any questions, comments, or suggestions, please let me know.
    If you'd like to sponsor further development, or provide a server and domain for a publicly available server running RSCGo, please let me know.  I'm going to attempt to work on this until it's complete, but unless someone else can provide the means for it, I am not able to host it publicly at this time.
    Runescape Gambling


    Copyright © 2017 MoparScape. All rights reserved.
    Powered by SMFPacks SEO Pro Mod |
    SimplePortal 2.3.5 © 2008-2012, SimplePortal