Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Welcome to our site

Take a moment to join our board

Spirited

Comet - Open Source Conquer Online Server

Recommended Posts

Introduction

Comet is a Conquer Online server project containing an account server and game server. The account server authenticates players, while the game server services players in the game world. This simple two-server architecture acts as a good introduction into server programming and networking. The server is interoperable with the Conquer Online game client, patch 5017 (not provided by this project).

Discussion

This project was initially created for an interview as a 3-week programming project. Now, it's a base source that I'm opening up to the community. Feel free to add to it and submit push requests. I'm mostly active on my GitLab account, but feel free to hit me up on Discord or Cooldown if I don't get to things soon enough.

Links

Source Control: https://gitlab.com/spirited/comet
Readme: https://gitlab.com/spirited/comet/blob/master/Readme.md
Issue Tracker: https://gitlab.com/spirited/comet/issues
Storyboard: https://trello.com/b/tb8ChBlF/comet 

  • Like 3

Share this post


Link to post
Share on other sites
Posted (edited)

i have a problem with building it. I am new to visual studio code.

COMET1.JPG

Edited by foxbat

Share this post


Link to post
Share on other sites

@foxbat I do not understand the picture that you linked. You VSCode open in just a .vscode folder. This does not give any useable information. Examples of useful information might be build logs. I would start by learning how to create a C# project like hello world or something. 

Share this post


Link to post
Share on other sites
Posted (edited)

"recommended but optional. After installing both, open the top directory for Comet. You will be asked to install the C# extension for Visual"

 

I am confused with the above mention. Should I open the folder using VScode. or should i have to rightclick the luanch.json and open it using VScode?

Edited by foxbat

Share this post


Link to post
Share on other sites
21 minutes ago, foxbat said:

"recommended but optional. After installing both, open the top directory for Comet. You will be asked to install the C# extension for Visual"

 

I am confused with the above mention. Should I open the folder using VScode. or should i have to rightclick the luanch.json and open it using VScode?

That should say "open the top directory in Visual Studio Code". I'll modify that part of the readme.

I kind of expected that people know how to use dotnet. Normally, open source projects don't really teach you how to use a language, they teach you how to configure the project. I'll try and incorporate as much of your feedback as I can into the readme, but just keep that in mind.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By W1cked
      I had help from @Spirited to figure this stuff out and port it to Go. I know a lot of people in the emulator communities don't use Go, but I hope with more packages released it will lift the barrier for people to use it.
      It's pretty straight forward, use the NewRC5 method instead of a struct literal. Encrypt by calling Encrypt and supplying a dst byte slice the same size as the src slice. For Decrypting, do the same thing.

      This adheres to the Cipher.Block interface, so for your client/conn structs you can just use that interface type.
       
      package rc5 import ( "encoding/binary" "math/bits" ) const ( WordSize = 16 Rounds = 12 KeySize = WordSize / 4 SubSize = 2 * (Rounds + 1) ) type RC5 struct { Key []uint32 Sub []uint32 } func NewRC5() RC5 { c := RC5{} c.Key = make([]uint32, KeySize) c.Sub = make([]uint32, SubSize) //Conquer default key c.generateKeys([]byte{ 0x3C, 0xDC, 0xFE, 0xE8, 0xC4, 0x54, 0xD6, 0x7E, 0x16, 0xA6, 0xF8, 0x1A, 0xE8, 0xD0, 0x38, 0xBE, }) return c } func (r *RC5) generateKeys(buf []byte) { //Initialize key expansion //seedLength := len(buf) / WordSize * WordSize for i := 0; i < KeySize; i++ { r.Key[i] = binary.LittleEndian.Uint32(buf[i*4:]) } //Generate r.Sub r.Sub[0] = 0xB7E15163 for i := 1; i < SubSize; i++ { r.Sub[i] = r.Sub[i-1] - 0x61C88647 } //Generate key vector var a, b uint32 var i, j int for x := 0; x < 3*SubSize; x++ { r.Sub[i] = bits.RotateLeft32(r.Sub[i]+(a+b), 3) a = r.Sub[i] r.Key[j] = bits.RotateLeft32(r.Key[j]+(a+b), int(a+b)) b = r.Key[j] i = (i + 1) % SubSize j = (j + 1) % KeySize } } func (r *RC5) Encrypt(dst, src []byte) { length := len(src) / 8 if (len(src) % 8) > 0 { length = length + 1 } copy(dst, src) for word := 0; word < length; word++ { a := binary.LittleEndian.Uint32(dst[8*word:]) + r.Sub[0] b := binary.LittleEndian.Uint32(dst[(8*word + 4):]) + r.Sub[1] for round := 1; round <= Rounds; round++ { a = bits.RotateLeft32(a^b, int(b)) + r.Sub[2*round] b = bits.RotateLeft32(b^a, int(a)) + r.Sub[2*round+1] } binary.LittleEndian.PutUint32(dst[8*word:], a) binary.LittleEndian.PutUint32(dst[8*word+4:], b) } } func (r *RC5) Decrypt(dst, src []byte) { length := len(src) / 8 if (len(src) % 8) > 0 { length = length + 1 } copy(dst, src) for word := 0; word < length; word++ { a := binary.LittleEndian.Uint32(dst[8*word:]) b := binary.LittleEndian.Uint32(dst[(8*word)+4:]) for round := Rounds; round > 0; round-- { b = bits.RotateLeft32(b-r.Sub[2*round+1], -int(a)) ^ a a = bits.RotateLeft32(a-r.Sub[2*round], -int(b)) ^ b } binary.LittleEndian.PutUint32(dst[8*word:], a-r.Sub[0]) binary.LittleEndian.PutUint32(dst[8*word+4:], b-r.Sub[1]) } } func BlockSize() int { return 8 }  
    • By Nyorai
      Conquer Origins was brought to existence as a way to replicate the prime days of the popular and beloved multiplayer game Conquer Online. Throughout the years, many things have changed in the game, shifting it completely from its essence what from what veterans remember it for. Our goal at Conquer Origins is to provide a small niche of people with the opportunity to relive those days once again, meeting new people whom they may one day call friends and create a few more memories of the game to remember.
      The main focus we have is to please our community and make sure that everyone who join us is having a great time. Therefore, feedback is something extremely valued by us and it's something we're consistenly asking from our community as it is the only way for us to understand everyone's needs and what direction the server should take.
      Our history
      We're certain most people have either heard or played our very first server: Shannara. It has run for 3+ years, was the most populated classic server for almost 2 years and has given us both the experience and the motivation to run a server and manage communities. Last summer, the community that was playing at the time requested us to work on a new server with lower rates, without some of the custom content we had at Shannara and with some improvements in terms of quality of life (QoL) gameplay, amongst many other things. For nearly a year we restructured most of the Shannara source (that already had 3+ years of work in it) and tried to squeeze out every single bug we could find. We believe Shannara has put out tons of groundbreaking and unique content and with Origins we expect not only to keep that legacy but make it even better.
      What can you expect?
      Level 130 as the maximum level you can achieve All official monsters and default spawns locations Maximum composition level being the original +9 All official quests and events there were in the game Identical calculations for Experience, Damage, etc. Identical algorithms for all sort of spells (Line, Fan, Collide, etc.) Original classes (Archer, Warrior, Trojan, Water, Fire) Original composition system What have we improved?
      Possibility to run the game at Fullscreen and custom resolutions Increased view/jump range Set custom FPS limit according to your needs Modern Quality of Life features to enhance the player experience Custom power-leveling matching system Custom Anticheat to prevent players from using hacks/cheats Implemented support for custom cosmetics (weapon skins) Custom launcher that lets you customize your game client Our rates
      When Conquer Origins was launched, we knew there were going to be bugs and lots of balancing to be done due to the fact we had restructured most of the source. Therefore, we made the decision to launch the server with really low rates without any multipliers meaning they were identical to the official rates. We have ran the server like that for a few months now and only recently we've significantly buffed the rates which will allow new players to easily catch up with the ones who've been testing and helping improve the server. Since rates may suffer some changes from time to time or due to special events, we'll be leaving an URL at the end of the thread where you'll be able to check the current rates at all times.
      Custom Content
      Ever since the release of Origins we have been putting out custom content that is improving the gameplay of our community. I'll be leaving some screenshots of features that include but are not limited to: user-friendly voting system that will remind you when you can vote again, quest dialog where you can check your available quests, advanced mining and hunting options for VIP players, changelog that will let you check all the new and previous changes, ground items displaying the item quality and composition and much more.
       
      Visit us: https://www.conquerorigins.com/
      Check our rates: https://www.conquerorigins.com/Statistics/Rates
      Join us on Discord: https://discord.gg/wX2K7sG

       
       
    • By Spirited
      Introduction
      This is a simple command-line tool for editing portals in dmaps. It outputs a list of portals from a dmap in the format index,x,y, and allows you to write them back to the dmap in the same format. It can be compiled for Windows, Linux, or Mac using the Golang compiler, and I have attached the Windows build of the tool. I wrote the tool in about an hour, so it's a bit messy, but all open source and MIT licensed for whoever wants to do something with it. Figured that I'd write it on the third request.
      Links
      https://spirited.io/project/portals/
×

Important Information

By using this site, you agree to our Terms of Use.