View Full Version : C# port... gauging interest
EvoZak
09-23-2012, 01:22 PM
So I have ported some of the server code over to C# on .net 3.5. It's been a couple of years since I seriously worked on it and don't mind hosting it on GitHub if there is development interest. I want to start working on it again and would like to have some collaborators.
By "some" I mean I have a working UDP server, zoning, inventory management, combat, and lots of other items. It's been awhile but I think I have spells working somewhat. This is a line by line port I did by hand from the C++ source over hundreds of hours. I didn't use any converters so a lot of the class design has changed to meet my tastes, etc.
It is a super fun project that I learned a ton on. Really fun tackling various issues and porting them over. Major respect to the people that originally figured out how they were aligning ints into x bits in those structs.
My original goal was to learn and to see if the .NET framework was a verifiable choice for server programming. It is and has managed code benefits. There's a ton left to do. If there is interest I will provide more details. I don't want to have an epic post in a crickets thead :)
Caryatis2
09-23-2012, 03:58 PM
I don't think the benefits of managed code outweigh the hassles of a split project. I also don't think there is a large untapped base of .NET programmers in this community so in reality it would probably be a very small team trying to keep pace with the main project while most server ops just compile the C++ code and go.
Not to mention, linux ops needing to use mono. Don't see it catching on.
EvoZak
10-04-2012, 09:31 PM
So mostly crickets. That's cool. Still a fun project. Almost as interesting as watching the community run cool servers and implement the various features.
ankhamunn
10-24-2012, 07:23 PM
First time poster / long time lurker. To be honest I've been reading the forums lately thinking that jumping into a client dev project would be a great experience. If you're still around and the offer is still open - I'd love to chat briefly about what you've done. I'm graduating with a degree in CS this December but most of my experience is with Java/Python and a handful of trivial coursework in C/MIPS. Point being - I know my CS stuff but would like to jump into C++/C#/.Net work with a larger project.
Caryatis
10-24-2012, 09:40 PM
client != server
ankhamunn
10-25-2012, 12:00 PM
Ah totally read what I wanted to read. ;) I've been thinking about doing a C# client to interact with the server. Pardon me :)
EvoZak
10-29-2012, 10:31 PM
Honest enough mistake Ankh, no worries. Keep looking in some of the other threads. I've seen one or two client projects get talked about quite a bit.
Speedz
12-11-2012, 07:52 PM
Most of what I do in learning to code and making new projects is in C#.
I would very much like to see this.
IMO I don't think it needs to "compete" for devs from the main C++
But if a few people that do code on C# want to play around I think having a good start on the option to do so is great.
I would like to have a look at the source if you still have it available.
addingice
01-09-2013, 04:39 PM
Frankly, I would much rather see a Go version then a c# version.
It's designed for servers, it's the exact niche it was designed for, deployment is insanely simple for both windows and linux (and mac) once you understand the methodology (it's the same for all Go rather than different per platform, but it is slightly unique compared to other languages) and it's wonderful to deploy with scripts and patching/updates.
i've been kicking that idea around for a while, especially since I could use native interop to reuse whole swaths of the current code as I slowly migrate it over.
Sadly the main reason I've considered it is not because I love Go so much and the benefits would be so awesome (I would always hate to split teams up or even potentially draw effort away from this), but just because I want to avoid svn and move to git/github =-P
I'm so spoiled with my DVC systems. I love small clean patches with almost no effort to jump into another project.
addingice
01-09-2013, 04:49 PM
Oh, and the compile times. Go is so damn fast to compile it's insane. nothing like 'change one line, compile. change one line, compile, etc etc etc'.
daerath
03-19-2013, 09:03 AM
So I have ported some of the server code over to C# on .net 3.5. It's been a couple of years since I seriously worked on it and don't mind hosting it on GitHub if there is development interest. I want to start working on it again and would like to have some collaborators.
By "some" I mean I have a working UDP server, zoning, inventory management, combat, and lots of other items. It's been awhile but I think I have spells working somewhat. This is a line by line port I did by hand from the C++ source over hundreds of hours. I didn't use any converters so a lot of the class design has changed to meet my tastes, etc.
It is a super fun project that I learned a ton on. Really fun tackling various issues and porting them over. Major respect to the people that originally figured out how they were aligning ints into x bits in those structs.
My original goal was to learn and to see if the .NET framework was a verifiable choice for server programming. It is and has managed code benefits. There's a ton left to do. If there is interest I will provide more details. I don't want to have an epic post in a crickets thead :)
Sounds interesting. I've entertained the idea of writing parts of the emu in c#. While it would be exclusively a windows port, there are a number of advantages to using .NET over native code. At a minimum its a neat project and could produce some interesting benchmarks.
Did you / Can you post what you have so far on github?
EvoZak
05-02-2013, 10:21 PM
Sorry for the gap in responses. A well placed PM fired an email and alerted me... The result: https://github.com/jasoncoding/EqEmulator-net
Be advised that compared to the C++ project it's a wee infant, but it's still fun and a neat start. I probably have several hundred hours logged on what's there now. I'll be adding better overviews to the code, sample data and a short to do list I had going soon.
Shawn319
05-03-2013, 04:23 AM
I'd be interested in looking at the C# port.. although i'm just getting back into the C++ version and getting the clients setup myself.. but definitely will be downloading and taking a peek.
squevis667
05-07-2013, 01:24 PM
Knock the dust off this bad boy. I would love to get a look at what you have done.
Vexyl
05-07-2013, 05:56 PM
Knock the dust off this bad boy. I would love to get a look at what you have done.
The github link was already posted:
https://github.com/jasoncoding/EqEmulator-net
Tyen05
06-24-2013, 05:25 AM
bumped, & saved for reference
Dimorge02
08-10-2013, 08:13 AM
I'd be interested in helping. If anything for fun :)
provocating
08-11-2013, 10:05 AM
I'd be interested in helping. If anything for fun
Same here. I do C# at my day job.
Zathule
03-21-2014, 08:16 PM
As the server is already working, we as a community might be better served with a stable C# client.
This would give as a path to be free of any SoE code. Then as a community we could build our own world(s). Open source server, client open up open source lore, open source zones, etc...
Just a thought.....
Tyen05
03-22-2014, 10:58 PM
If we had a C# way to Login to an eqemu server and send/receive 1 opcode, I can put Everquest in Unity and run it in a Browser.
I very much would like a C# pal.
I wrote up some dildo text to kind of explain the process and have a C# prototype to get someone started.
http://eqbrowser.com/help/
rhyotte
03-23-2014, 05:51 PM
Seems a bit Windows centric... would prefer a more neutral language, and easy Linux portability.
squevis667
03-23-2014, 06:06 PM
If it is Unity and browser based, it should run on Apple, Linux, and PC. You would not need WINE or anything else to run it. Where this really gives you payback is people with custom servers could even have custom clients supporting their mods, etc. It would be OS neutral.
moofta
03-24-2014, 06:24 AM
Seems a bit Windows centric... would prefer a more neutral language, and easy Linux portability.
This is a common and understandable misconception. C# is just a programming language, and is not bound to any OS in particular. At work one team runs a C# server on embedded Linux :)
Unity uses C# running on Mono, which runs on Mac OSX, BSD, Linux and Windows ( and actually way more like iPhone and the PS3) http://www.mono-project.com/What_is_Mono ).
The original implementation of the C# language runs on Microsoft's .Net, which *is* Windows bound. The Mono implementation does lack some of the libraries, but the parity is way better now than it was a few years ago. I ran their compatability tool versus some of our server code at work and there weren't any real issues at all.
I can write C++, but my day job is writing (pretty busy) servers in C#. It's much quicker to take a product to market with C# than C++, and there is a much bigger pool of C# developers to hire than C++ (at least here in the UK).
On the other hand, there's no point reinventing the wheel, and I would rather contribute to the C++ server than duplicate effort. Additionally, C++, when written correctly, has a much smaller footprint and better utilisation of resources - and a lot of the EQEmu servers are pretty low powered in the scheme of things (at least compared to corporate machines), so reducing a few CPU cycles and using less RAM *is* important.
Tyen05
03-24-2014, 12:01 PM
I'm basically keeping the server C++ and having the CLIENT be C#
Also, like Moofta said, the EQBrowser Unity client runs on ALL platforms: Linux, mac, PC, android, ios, xbox, ps4, and Web Player.
Null added our C# networking prototype to a fresh Unity project so we can try and build the networking part of the client. It's separate from the main build so the focus can be on point.
It's still shit, but it's a start.
https://github.com/eqbrowser/Network-Proto-Unity-to-Eqemu
lakedoo23
06-07-2017, 04:01 PM
Sorry to necro this thread, did anyone ever start the C# port?
I am about to start this project unless someone has already done it. I was thinking about using IronPython for the script engine vs Lua unless there are some major objections. Keeping the MySQL database. I was going to also change the IP setup information to a table in the database vs an XML file.
fzzzty
06-11-2017, 11:06 AM
I've considered doing this also, actually, including again just a few days ago.
It sounds like I would go in a different direction with it but maybe we can share pieces and/or split the work up. I don't really know the code base well at all though at this point so I'm not sure if/how it could be divvied up.
I assume that the most important part would be to convert the protocol and networking into its own class library (or libraries). Like I said though I dunno how this is wired up per-character/client/etc. to know how eventing or whatever works currently and how it should work in .NET-land.
The eqbrowser link to the networking code seems to be dead, unfortunately.
Vexyl
06-11-2017, 11:25 AM
OP posted link on first page: https://github.com/jasoncoding/EqEmulator-net
fzzzty
06-11-2017, 01:19 PM
Oops I never even noticed this was page two, thank you.
pharone1
01-10-2019, 01:40 PM
The last commit was over 6 years ago on github. I'm assuming this project is dead right?
vBulletin® v3.8.11, Copyright ©2000-2025, vBulletin Solutions Inc.