PDA

View Full Version : Open Source Halo Dedicated Server



Craig
December 8th, 2009, 10:12 AM
Hello everyone,

I am hesitant to post this here based on mixed feelings about the expansion and continued development on Halo: Combat Evolved, but truly believe this needs to be posted, so Im going to try to convince some of the nay sayers here that this is worthwhile.

We (Myself, Sean Aero, and Btc22) have been discussing viable alternatives to help breathe new life into this old game and its community.

One of the suggestions was of course an open source alternative to the halo dedicated server, now it doesnt sound very exciting at first glance, as its only a server right?..

Wrong, the server is the key component to online play and competition and is the fundamental part of the halo community, and we believe it plays a crucial role, not only to players, but to administrators and commercial server hosts alike.

To save me having to copy/paste, more details are located here (http://dedi.haloanticheat.com/forum/showthread.php?tid=1)

Now its starting to look like something worthwhile, not only does this give developers chance to experiment with online play in halo more than they used to, but it gives us a chance to create new experiences, add new features, the ability to customize your server more than you ever could before, to suit your personal tastes and those that play on your server.

Now as with a project of this scale, it requires a huge amount of time and effort, and will require people of exceptional skill and motivation in order to make this happen.

If you are believe you will be beneficial for this project, please read this (http://dedi.haloanticheat.com/forum/showthread.php?tid=2), or have some feedback you can post here, or post on the project forums (will be there more often).

Sean Aero
December 8th, 2009, 12:22 PM
I would like to point out that we are very serious about this project. We know that the amount of work is probably going to be insane, but we have the time, no need to rush things. We are pro-active and are looking for people that have a certain amount of programming skill and/or knowledge on programming with Halo ( we know your out there :cop: ).

If you think you can contribute in anyway, hence it's open source for a reason, feel free to leave a reply and have a chat!

Sel
December 8th, 2009, 12:39 PM
There was a server app for CE 1.08 called SAPP, it did a lot of the things you are talking about implementing, I'm not sure if the author is still around, but it's worth checking out.

Also MOTD's are client side, or atleast the coding to support them, and CE contains that, of course you could do server chat that gets posted on player joining, but I'm pretty sure that's CE only as well.

Anyway good luck with your project.

Craig
December 8th, 2009, 01:08 PM
Yeah Sean pointed it out to me (http://xhalo.co.cc)

To my knowledge it works using dll injection, has a couple of bugs but nothing major, hasnt been updated in a couple of months, and is for CE only I believe.

Since its closed source, there isnt a lot you can expand on, the features are great, but it isnt as expandable as a fully open implementation that you can edit and create custom events for.

As for the MOTD, there are multiple ways of sending server messages, even if its something like sv_say, or even using the chat system. (as you said, send chat messages to a single player upon connection)

Think of the bigger picture, we are not bound by the constraints of the server (well, to a degree), but more so by the client, which allows us to experiment with what we can do, and make use of it.

ShadowSpartan
December 8th, 2009, 01:08 PM
Now its starting to look like something worthwhile, not only does this give developers chance to experiment with online play in halo more than they used to, but it gives us a chance to create new experiences, add new features, the ability to customize your server more than you ever could before, to suit your personal tastes and those that play on your server.
How exactly do you plan to make the Halo clients accept these new features? Do you plan on programming a new Halo client too, because it's not going to happen by magic.

I don't see this going anywhere, your Halo PC Remake project seems to have failed considering the fact you are moving onto this project.


Think of the bigger picture, we are not bound by the constraints of the server (well, to a degree), but more so by the client, which allows us to experiment with what we can do, and make use of it.
You are extremely bound to the constraints of an unmodified client. There is only so much you can do without modifying the client to accept new features.

Con
December 8th, 2009, 01:16 PM
Wouldn't it be easier to add these features as an extension of the existing dedicated server? (like through some app or hook)

Craig
December 8th, 2009, 01:17 PM
How exactly do you plan to make the Halo clients accept these new features? Do you plan on programming a new Halo client too, because it's not going to happen by magic.

I don't see this going anywhere, your Halo PC Remake project seems to have failed considering the fact you are moving onto this project.


You are extremely bound to the constraints of an unmodified client. There is only so much you can do without modifying the client to accept new features.


All of the features outlined are handled by the server, not the client. (basically the client doesnt know what its doing, just accepts them as normal)

This project and the halo remake go hand in hand (been postponed due to scale), this will most likely be a stepping stone.

You seem to think that we are working against the client, which is untrue. We are only including features that we know are possible for the client to accept it.

Give me an example of one feature that wont work, and I will gladly correct you.


Wouldn't it be easier to add these features as an extension of the existing dedicated server? (like through some app or hook)

We have looked at that option, and we are still debating, right now we are in a phase of analysing the problem, and finding the best solution.

Using a hook is a lot easier, as with the numerous applications that have made use of such a solution (HAC, SAPP, OS), but seems to be a very hacky way of doing things, and hosts are very much wary about using hooks, as it not only uses more resources, but is frowned upon and does not receive a lot of support.

And tbh, would you rather work on a half arsed attempt and complete it with hardly any difficulty at all, or if we create a server from the ground up and will be working on something challenging.

It gives us a good platform to work with, as well as allowing new projects to also make use of our work.

Dwood
December 8th, 2009, 01:27 PM
I don't know but it seems to me like you guys might as well look up some reverse engineering references and reverse-engineer the whole dedicated server thing.

Craig
December 8th, 2009, 01:48 PM
I don't know but it seems to me like you guys might as well look up some reverse engineering references and reverse-engineer the whole dedicated server thing.

Of course we will need to reverse engineer certain parts of the dedicated server to understand how it handles data, but we will not make a 100% copy of the server (will be nearly impossible), but are trying to improve what gearbox originally did, and create as close to an official dedicated server as possible.


You are extremely bound to the constraints of an unmodified client. There is only so much you can do without modifying the client to accept new features.

I never said we were not constrained by the client, I stated that we will have to work with the existing features of the client, but expand the server. (read my post properly)

Skyline
December 8th, 2009, 02:08 PM
but seems to be a very hacky way of doing things

What? Hacky way of doing things not I thinky. It calls a library; nothing hacky about it.


as it not only uses more resources

It all depends on what you're going to be doing. Using .net requires much more resources and can cause more potential problems.



And tbh, would you rather work on a half arsed attempt and complete it with hardly any difficulty at all, or if we create a server from the ground up and will be working on something challenging.


I would rather have a working server created by the game's makers with a simple modification to enable certain elements that would make it easier to use than to have a server created by someone asking for help on how Halo works.

ShadowSpartan
December 8th, 2009, 02:11 PM
All of the features outlined are handled by the server, not the client. (basically the client doesnt know what its doing, just accepts them as normal)
Most of the features you posted do not require a brand new executable to be written. As Con said, something like this is better accomplished through an extension of the current executable, rather than wasting time on a new one that probably will not even work correct.


This project and the halo remake go hand in hand (been postponed due to scale), this will most likely be a stepping stone.
We'll see.


You seem to think that we are working against the client, which is untrue. We are only including features that we know are possible for the client to accept it.
Technically, yes you are. You are limited in what features you can add. You made it sound as if there are an unlimited amount of features you can add through this project, which is entirely incorrect.


Give me an example of one feature that wont work, and I will gladly correct you.
A little overly confident I see. I would like some clarification on "Change player variables (speed, weapon, vehicle, health, etc.)". I think you mean, for instance on the weapons, change the current weapon that a player has. I would love for you to explain how you will do that so that the unmodified client accepts the fact it should now have a different gun.

Another thing that you didn't mention, but it should be a simple task for you to do, seeing as how you know so much. A feature to change the gravity in the server. How would you make an unmodified client accept this change? Just changing the address on the server will not make it update on the clients.


We have looked at that option, and we are still debating, right now we are in a phase of analysing the problem, and finding the best solution.
There is a big difference between writing a dedicated server from scratch, and extending upon the current executable. This is something you should have figured out before you posted an announcement.


And tbh, would you rather work on a half arsed attempt and complete it with hardly any difficulty at all, or if we create a server from the ground up and will be working on something challenging.
You forgot the third option, working on something that might not even work properly in the end, which was then a massive waste of time.


I never said we were not constrained by the client, I stated that we will have to work with the existing features of the client, but expand the server. (read my post properly)
And I never said that you did say that, I added "extremely" to show just how limited you are with what you can do. You are the one who needs to read posts properly.

Craig
December 8th, 2009, 02:19 PM
I will not degrade this topic into a game of tennis between me and you.

Better yet, shall we call the whole thing off because it doesnt appeal to you, or there are certain problems that can be worked around but are too stubborn to think of ways to work around the problem, and instead offload it to me to explain.

The server controls the data of a player based on input and outputs it to the other players, down to how much ammo they have, what position they are in, their health, etc. (the server processes the input, and outputs new data to the client.)

Unlimited amount of features is impossible, im stating that we can add a lot of new features to the server.

Can you explain what a dedicated server does in your own opinion, so I can fathom where your coming from.

Sean Aero
December 8th, 2009, 03:20 PM
I would rather have a working server created by the game's makers with a simple modification to enable certain elements that would make it easier to use than to have a server created by someone asking for help on how Halo works.

We would have loved to see the same, but after 6 years I think we can conclude that "the game's makers" are not going to do this.

We came up with an idea, but knew we need all the resources we can get. So we decided to make this open source let you guys in on it. Hoping that everyone that knows something on this topic would jump in with suggestions and share their knowledge. ( Which we have seen so far, keep them coming :neckbeard:)

On the other hand there are the critics which I expected to show up.
I just want to point out that I'm glad your here, but try and give progressive criticism. This is a game that (I think) you love as well, but with every type of project: "No matter how big the noob, don't try and kill the enthusiasm." Keep that in mind :eng101:

Limited
December 8th, 2009, 04:19 PM
I believe you guys, like the Halo PC project, are way out of your head.

To me, you guys have little knowledge how the Halo server + client works.

The fact 13 out of your ideas already exists baffles me into why you think creating a brand new server application is worth it, do you guys even have experience with server networking? And specifically in C#?

I have no idea why you picked C#, you claim you want " Reduced resources (CPU, memory)", Yet I doubt, you guys with little server experience, programming in C# for a very tight net game already.

Also, please dont act up when you have critiques scrutinizing your idea, if like your last project actually listened to us in the first place, you would have realised we were correct in the fact you were aiming way too high.

supersniper
December 8th, 2009, 04:29 PM
If anything there is a servertoool for halo ce/pc that not much use but it has some new features, like setting the server to change gametypes at certain days for like "gamedays"

Uh has a messaging system that sends messages to the server through the chat system every 5 minutes or so.

Vicky created it but one problem is that it's a bitch to set up (lol but it's worth checking out)

To me that one is the best.

I recommend you guys talk to Vicky.

CrAsHOvErRide
December 8th, 2009, 04:46 PM
I'm with ShadowSpartan on this one. The fact that you have not considered an extension over rewriting everything makes me doubt that you have much clue.

You do realize that you are not only rewriting a dedicated server but basically the whole Blam engine except for the DirectX rasterizer? It just doesn't "control the data of a player based on input and outputs it to the other players"...you have to make calculations and for that you will need the map and for that you will need to be able to load the map cache files. You have to rewrite the whole physics engine to match the one in the client etc.etc...

C# runs on the .NET Framework by the way so no true "multi OS support" like if you would have, if you would write it in C++.

Dwood
December 8th, 2009, 04:54 PM
If you guys figure out how to load and save map cache files, you might as well redo the graphics engine and do prometheus. That would help the community more than a dedicated server ever would.

Kornman00
December 8th, 2009, 05:54 PM
C# runs on the .NET Framework by the way so no true "multi OS support" like if you would have, if you would write it in C++.
Mono (http://en.wikipedia.org/wiki/Mono_(software)) (so it would be better in terms of porting than C++, but not if you're wanting strict control over performance; cpu or memory wise).

pretty much everything has been said that I would have said

Skyline
December 8th, 2009, 06:50 PM
A little overly confident I see. I would like some clarification on "Change player variables (speed, weapon, vehicle, health, etc.)". I think you mean, for instance on the weapons, change the current weapon that a player has. I would love for you to explain how you will do that so that the unmodified client accepts the fact it should now have a different gun.

:downs:.

Omega
December 8th, 2009, 07:23 PM
So 3 people want to make a dedicated server from scratch? Something that took a complete team of (experienced) programmers and here you're going to do it on your own. But it's even worse since you first have to reverse engineering everything. That's close to the definition of insanity. Good luck though.

Vicky
December 8th, 2009, 08:20 PM
I believe you guys, like the Halo PC project, are way out of your head.

To me, you guys have little knowledge how the Halo server + client works.

The fact 13 out of your ideas already exists baffles me into why you think creating a brand new server application is worth it, do you guys even have experience with server networking? And specifically in C#?

I have no idea why you picked C#, you claim you want " Reduced resources (CPU, memory)", Yet I doubt, you guys with little server experience, programming in C# for a very tight net game already.

Also, please dont act up when you have critiques scrutinizing your idea, if like your last project actually listened to us in the first place, you would have realised we were correct in the fact you were aiming way too high.

Ditto that.

Try modding a map on halo pc and join a non-modded server running that map, you'll see where your trouble starts right away. Good to have new ideas but i think the only thing coming close to all your ideas is Korns open sauce.

supersniper
December 8th, 2009, 11:00 PM
this just screamed attack of the programmers ;)

Craig
December 9th, 2009, 05:35 AM
@ Limited - I chose C# because I and the others are much more familiar with it than C++, the performance issues between them both are negligible.

I never stated that I would 100% certain that we would be writing

And I dont believe I did act up, I answered truthfully with the community in mind, and all I got in return was huge amounts of doubt and an uncanny sense of hate towards me, both from Shadow Spartan (who is nitpicking), and from other members.

I have taken into account what you have said, and have voiced my opinions and explained them.

And I dont recall you saying that my last project was out of my league, in actual fact you supported the idea, and when I decided to start work, you where unavailable, or too busy, most of the times didnt even both to leave an email explaining why. (doesnt take a minute)

@ Crash - please read this again, from your posts it sounds as if you havent.(http://dedi.haloanticheat.com/forum/showthread.php?tid=1)

@ Omega - Of course it will be a difficult road, but there are many projects that have done this with a lot of success.

@ Shadow - I did take writing an application that made use of hooks to manipulate the existing server, but you and the other seem to have missed it completely.


We have looked at that option, and we are still debating, right now we are in a phase of analysing the problem, and finding the best solution.

Using a hook is a lot easier, as with the numerous applications that have made use of such a solution (HAC, SAPP, OS), but seems to be a very hacky way of doing things, and hosts are very much wary about using hooks, as it not only uses more resources, but is frowned upon and does not receive a lot of support.

And tbh, would you rather work on a half arsed attempt and complete it with hardly any difficulty at all, or if we create a server from the ground up and will be working on something challenging.

It gives us a good platform to work with, as well as allowing new projects to also make use of our work.

Please do not take this the wrong way, I have spoken with diligence and with respect, While you have done nothing than point out problems (most of which I have pointed out on our forum) about the project and its scope, so I may seem to have turned this into a game of back and forth.

Just because I argue your point, does not make it invalid, nor does it mean I havent listened to your advice, so If I challenge your knowledge on the subject, Its only so I can learn new things, and understand your points in greater detail.

Speaking of which, Dwood what exactly is prometheus?

Dwood
December 9th, 2009, 06:47 AM
halo-dev.org

Omega
December 9th, 2009, 07:19 AM
Now its starting to look like something worthwhile, not only does this give developers chance to experiment with online play in halo more than they used to, but it gives us a chance to create new experiences, add new features, the ability to customize your server more than you ever could before, to suit your personal tastes and those that play on your server.
It's starting to look like something? Everyone can write a description of a program. Do you have a prototype yet? Are you able to connect to the server (not play, just connect)? If you don't have any code at the moment, it looks like nothing because you have nothing.


Now as with a project of this scale, it requires a huge amount of time and effort, and will require people of exceptional skill and motivation in order to make this happen.
Out of curiosity, what is the background of the current programmers? Currently at university or already having a job as programmer?


If you are believe you will be beneficial for this project, please read this, or have some feedback you can post here, or post on the project forums (will be there more often).
I suppose I could help. But my current prediction is that your project is way too big. In the event you will be able to convince me otherwise, I can help with a few things.


There are to our knowledge 5 Major steps in order to accomplish (notify me, if i missed anything)
....
After we have these fundamental features, we will start working on additional features outlined below.
The major steps do not offer anything new. Instead there's a high chance the code will function a bit differently than the original server and you'll get weird bugs, clients that lag, etc. The additional features can all be implemented by injecting a dll or similar techniques. If you design your dll injection properly it's a lot easier to get started, and once you have enough code (and undestand a lot more about the halo server) only then could you start thinking about making something from scratch.


Using a hook is a lot easier, as with the numerous applications that have made use of such a solution (HAC, SAPP, OS), but seems to be a very hacky way of doing things, and hosts are very much wary about using hooks, as it not only uses more resources, but is frowned upon and does not receive a lot of support.
If hosts are against hooks, they will also be against running a completely new program that, in order to run, also needs the .NET framework to be installed. No matter what you do and how you do it, the host always has to trust the code.


And tbh, would you rather work on a half arsed attempt and complete it with hardly any difficulty at all, or if we create a server from the ground up and will be working on something challenging.
Have you tried implementing the additional features using a hook in C or C++? For some reason you say this isn't difficult at all. If so, please make a prototype for the community. Since it's so easy it won't take much time right? Also why would it be a half arsed attempt? Designing a tool that uses dll injection always leads to bad code?


@ Shadow - I did take writing an application that made use of hooks to manipulate the existing server, but you and the other seem to have missed it completely.
Yup, I missed it too. Link?

Cortexian
December 9th, 2009, 07:29 AM
halo-dev.org
halodev.org

Craig
December 9th, 2009, 08:54 AM
This is the quote, read it, as it explains we are still in the process of debating what solution is best, im giving my personal views, and not stating what we will do.


We have looked at that option, and we are still debating, right now we are in a phase of analysing the problem, and finding the best solution.

Using a hook is a lot easier, as with the numerous applications that have made use of such a solution (HAC, SAPP, OS), but seems to be a very hacky way of doing things, and hosts are very much wary about using hooks, as it not only uses more resources, but is frowned upon and does not receive a lot of support.

And tbh, would you rather work on a half arsed attempt and complete it with hardly any difficulty at all, or if we create a server from the ground up and will be working on something challenging.

It gives us a good platform to work with, as well as allowing new projects to also make use of our work.

And yes we have done this before, Btc22 worked and completed on http://haloanticheat.com, so yes we have had experience with this in the past. (albeit the halo client, instead of the server)

The major steps are what are needed before we begin on the additional features (which are the new features if you still dont know what they are)

And thanks Dwood + Freelancer for the link.

Con
December 10th, 2009, 04:14 PM
And tbh, would you rather work on a half arsed attempt and complete it with hardly any difficulty at all, or if we create a server from the ground up and will be working on something challenging.

A late reply on my part, but I would like to add these comments.
Don't assume that it will be half-arsed if you do what I suggested--that ultimately lies in your apparently eager hands. You needn't worry about challenges; they will find you, as in any large project. From a community standpoint, all that matters is a timely and working release no matter the method. Think about what works for us, and not for you.