New CO1 Server Development (Lots of client mods/fixes)

09/27/2017 06:51 Nusku#1
For the last few months I've been working on a private CO server for CO 1.0 (~version 4280, prior to CO2 patch, but with CO2 interface). Basically, no battle power, new classes, bless, etc. It's just CO1 right before CO2 patch.

I've done quite a lot of heavy client editing, mostly to bring CO1 to a more 'modern' version, but still keep all of the elements that made it great.

The server is running in C# written from scratch with ideas/help from all of the open source projects around here.
It uses Microsoft SQL server / entity framework ORM for data storage, Redis for real-time info (useful for website), and MongoDB for log storage.

Server features so far:
  • Base core features to allow monster, multi player interaction (ex attacking, jumping, talking, etc)
  • Scripting system, with a lot of the cq_action from leaked databases converted. This includes nearly all quests, events, etc!
  • Increased view/jump range
  • Some of the basic CO features such as teams, guilds, buying, selling, leveling, etc. Still a work in progress for things like rebirth. A lot of testing left to do, and quite a few features left still.
  • High performance networking (async) which from my current tests should easily allow hundreds of characters online
  • Highly abstract/event driven to allow easy implementation of custom quests/events
  • Properly threaded: single thread for packet/event processing, multithreading for offloading expensive tasks such as pathfinding (no silly sleep calls anywhere)

The client its self has been modified to include some of the following features (more coming soon!)
  • 1080p Resolution (properly re-aligned all elements), 60 fps
  • Small performance/bug fixes here and there including cursor lag bug, team leader star being present on relog
  • Quality of life changes: Close interfaces with escape, commas in numbers, increased view range, jump range, extra debug info, better ping calculation
  • Health bars
  • Fixed item names, player names, npc names, etc during zoom in/out
  • Added Anti-alias / Multisampling (was hard.... but can see a difference!)

Here's a picture of the login/in-game :)
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]

And in case you are wondering how it looks without the AA/Multisample, here is a link to an image with it disabled: [Only registered and activated users can see links. Click Here To Register...]

Hopefully, once the server is nearing completion, I may be able to create some higher quality meshes, interfaces (which newer systems can make use of), etc with the help of others.

Let me know what everyone thinks :D

edit: by popular request, the website is [Only registered and activated users can see links. Click Here To Register...] :D
09/27/2017 07:14 Asphy×ia#2
Wow, that's impressive.
09/27/2017 07:25 Nusku#3
Quote:
Originally Posted by Asphy×ia View Post
Wow, that's impressive.

Thanks :D - feels good to finally be able to show it off after months coding, late night coffees and tons of swearing and debugging
09/27/2017 11:52 Xio.#4
Yes, we need this! Innovation and hard work, I'm looking forward to playing this!
09/27/2017 17:49 KraHen#5
Great work, I refuse to believe that you are new to epvp, who are you?
09/27/2017 18:00 boDil#6
Someone on epvp who actually sounds competent is making a server? This is like spotting an albino alligator or something.
09/27/2017 20:48 Spirited#7
I support this.
09/27/2017 23:02 Nusku#8
Thanks for the support everyone!

I am hoping within the next month or so I may be able to put up a beta server, but first I want to make sure everything is running smooth enough to give ppl a chance to play the game with few interruptions/bugs.

I'll be posting more updates as I add/update things. At the moment its still lacking critical things like trading, rebirth and shopping stalls and guilds/teams havent been fully tested.

Also nah, I am not new to ePVP, been here for a while but I didn't remember my info so i made a new acc a while ago.
09/29/2017 01:39 kharina#9
Nice Nice i will waitting for your Betaserver, also Halloween is cooming and Xmas, think about good events.. I will keep eyes on this thread.
09/29/2017 09:14 Nusku#10
A quick update on progress :D
I have finally got around to implementing item quality/level upgrades, tested teams, guilds, etc a bit more.

Also another client change - added a quick hack to allow me to close the dialog windows from the server (instead of relying on client), and as you will see in the video below, I also fixed the position of the guild/name strings when jumping AND zooming in so they stay relative to the character.

Oh, and I ran a stress test with a quick 50 line bot I wrote to see how well it handles mass relaying of packets. The server was hosted remotely to ensure a more "real life" scenario. I will be testing 300-600 clients using multiple digital ocean VMs soon from different locations around the world to get an even better idea. In the video below, theres 130 chars jumping around at random speeds and predetermined positions (no speed hack detection yet). The server CPU Usage was on average 1-2% during the entire time, which is acceptable .

Anyhow... here is the video!
[Only registered and activated users can see links. Click Here To Register...]
09/30/2017 17:31 zeons3#11
If you need any Beta testers let me know, used to do client testing for Blizzard back in the day (not that it means anything, i just wanted to brag)
09/30/2017 19:58 Darkkal#12
Looks sick man, keep up the good work! +1 for the usage of redis, we use that at my job and it is really awesome!
10/05/2017 13:40 jackpotsvr#13
Nice progress! Good luck with the ongoing development ;)
10/11/2017 13:00 Nusku#14
Sorry for the lack of updates, i've been busy working on the server pretty much 24/7.

At this point, I think i'm about 2-3 weeks away from a public test.

Since my last post, here's a rough log of what's been done:
* Fixed a bunch of issues in core code, added quite a few more critical gameplay components (trading, teams, item dialogs, item scripts, and pretty much finished all original quests)
* Ported server to .NET Core 2.0 (fully compatible with linux)
* Fully integrated redis and added a large amount of statistics/recording (lifetime/session). Also made use of pub/sub for sending commands (ex: shutdown, broadcast, maintenance, etc) and receiving live log data (for later integration)
* Added logging to most critical parts (ex item action like pickup,drop,trade, etc), logins, etc. Enough that I can track down item/gold/whatever in case of a player getting 'hacked'.
* Setup a private dedicated dev server (wooo!) with continuous integration and update scripts to automatically stop,update and restart the server on every commit (separate production branch). This will likely serve as the test server once I feel it's ready.

As for what is left to do (core gameplay):
* Player houses
* Market stalls
* Summon pets (guards for ex)

Once I get these things in, it should be ready for public testing :). While these features aren't that hard to implement, I'm still going through testing and fixing lots of other bugs as well. Even wrote my self a nice 20 page spec of all core CO1 features to help with testing it. I might make this public as well if others want to help/fill in things.
10/11/2017 15:30 Xio.#15
Quote:
Originally Posted by Nusku View Post
Sorry for the lack of updates, i've been busy working on the server pretty much 24/7.

At this point, I think i'm about 2-3 weeks away from a public test.

Since my last post, here's a rough log of what's been done:
* Fixed a bunch of issues in core code, added quite a few more critical gameplay components (trading, teams, item dialogs, item scripts, and pretty much finished all original quests)
* Ported server to .NET Core 2.0 (fully compatible with linux)
* Fully integrated redis and added a large amount of statistics/recording (lifetime/session). Also made use of pub/sub for sending commands (ex: shutdown, broadcast, maintenance, etc) and receiving live log data (for later integration)
* Added logging to most critical parts (ex item action like pickup,drop,trade, etc), logins, etc. Enough that I can track down item/gold/whatever in case of a player getting 'hacked'.
* Setup a private dedicated dev server (wooo!) with continuous integration and update scripts to automatically stop,update and restart the server on every commit (separate production branch). This will likely serve as the test server once I feel it's ready.

As for what is left to do (core gameplay):
* Player houses
* Market stalls
* Summon pets (guards for ex)

Once I get these things in, it should be ready for public testing :). While these features aren't that hard to implement, I'm still going through testing and fixing lots of other bugs as well. Even wrote my self a nice 20 page spec of all core CO1 features to help with testing it. I might make this public as well if others want to help/fill in things.
Please do!