Page 1 of 1

[Feature Request] Gravity Syncing

Posted: Mon Sep 19, 2016 2:02 pm
by DrakeWasHere
Hello all!

With the new version of SAPP available, gravity is a mutable value that can be changed on-the-fly by an admin.

As of now, there is no way to support syncing this change with HaloMD clients, as the HAC2 changes that allow server-client gravity syncing are not available to use on Mac in its current form, nor does the dev on HAC2 seem to have any interest in working on support for HaloMD.

I was hoping someone with experience writing plugins for HaloMD, or in making changes to MD in general, could comment on the feasibility of such a feature, if there is any work planned to incorporate it, and if not, could provide more information on plug-in development.


I am a software engineer myself, and would be interested on working on this problem, but as of now have no experience with HaloMD's source code, or it's plugins. Any guidance would be appreciated.

Best,
Drake

Re: [Feature Request] Gravity Syncing

Posted: Mon Sep 19, 2016 2:44 pm
by A Stick
How did you get a server on Mac?

Re: [Feature Request] Gravity Syncing

Posted: Tue Sep 20, 2016 8:46 am
by DrakeWasHere
A Stick wrote:How did you get a server on Mac?
My first server was hosted in a VM on my mac, and given a bridged connection in the VirtualBox settings so that I could properly port forward. Trying to mess around with Wine was just too much work when I already had an ISO of windows XP for a VM.

My current one is a dedicated Windows 7 box that I had an extra of.

If you want any help setting up a server, feel free to PM me.

Re: [Feature Request] Gravity Syncing

Posted: Wed Sep 21, 2016 6:37 am
by swampy
DrakeWasHere wrote:
A Stick wrote:How did you get a server on Mac?
My first server was hosted in a VM on my mac, and given a bridged connection in the VirtualBox settings so that I could properly port forward. Trying to mess around with Wine was just too much work when I already had an ISO of windows XP for a VM.

My current one is a dedicated Windows 7 box that I had an extra of.

If you want any help setting up a server, feel free to PM me.

I have Virtual box and also a copy of Parallels . What would be best for Win7? Also I*'m on an old Mac Pro, so I was thinking of just doing a separate h/d and running Windows full speed ahead because I want to set up a good Steam machine.

Re: [Feature Request] Gravity Syncing

Posted: Wed Sep 21, 2016 1:54 pm
by DrakeWasHere
swampy wrote:I have Virtual box and also a copy of Parallels . What would be best for Win7? Also I*'m on an old Mac Pro, so I was thinking of just doing a separate h/d and running Windows full speed ahead because I want to set up a good Steam machine.

If you want to use it as a steam machine as well, definitely go the BootCamp route. If you just want to host a server in the easiest possible way without messing with Wine, just install a VM and run it on that.


Again, if you want to talk about hosting / running a server, and do not have any insight on gravity syncing in HaloMD, please just PM me.

Re: [Feature Request] Gravity Syncing

Posted: Wed Sep 21, 2016 4:21 pm
by nil
DrakeWasHere wrote:Hello all!

With the new version of SAPP available, gravity is a mutable value that can be changed on-the-fly by an admin.

As of now, there is no way to support syncing this change with HaloMD clients, as the HAC2 changes that allow server-client gravity syncing are not available to use on Mac in its current form, nor does the dev on HAC2 seem to have any interest in working on support for HaloMD.

I was hoping someone with experience writing plugins for HaloMD, or in making changes to MD in general, could comment on the feasibility of such a feature, if there is any work planned to incorporate it, and if not, could provide more information on plug-in development.


I am a software engineer myself, and would be interested on working on this problem, but as of now have no experience with HaloMD's source code, or it's plugins. Any guidance would be appreciated.

Best,
Drake
Have you built HaloMD from source using Xcode before? There is a couple of built-in plug-in targets as examples. See MDPlugin.h for some documentation. I don't have a template plug-in project right now with me, but you can look at the build settings for the plug-in targets. If you Reveal Mods in Finder, and go up a folder or two, there should be a couple directories for installed plug-ins.

002 informed me that btcc22 didn't add a feature to HAC, but I don't know how the gravity thing works, or why the value needs to even be synced.
(MGM IRC Chat)
[09:31:39] <Zero2r> oh
[09:31:50] <Zero2r> well I did write a plugin that allows one to set an arbitrary gravity constant
[09:33:05] <Zero2r> by default it's 0.997 G (well it's 1/3.048/30/30 world units per tick squared)
[09:33:31] <Zero2r> 10/3.048/30/30*
[09:34:07] <Zero2r> basically if you're in the air, it subtracts that much from your Z velocity every single tick
[09:35:08] <Zero2r> if you're talking about the gravity constant thing
[09:35:38] <Zero2r> it's easy to find. bit slicer can easily do the job by monitoring your Z coordinate
[09:36:17] <Zero2r> I gave this information to sehe who incorporated it into SAPP. I don't know how it communicates with HAC2, so that's what needs to be found
[12:10:41] <Zero2r> oh it doesn't communicate with HAC2
[12:10:56] <Zero2r> as I suspected, btcc22 never actually added the feature to hac2
[12:10:59] <Zero2r> it's just an anticheat feature

Re: [Feature Request] Gravity Syncing

Posted: Wed Sep 21, 2016 8:09 pm
by 002
I poked around in Bit Slicer for you. You'll find the gravity constant at 0x37B600 in Bit Slicer. It's a 32-bit floating point number.

It's equal to about 0.003565 world units per tick squared. Basically, this number is subtracted from every objects' and particles' Z velocity every tick while in the air.

If you want to convert this to meters per second squared, 1 world unit equals 10 feet which equals 3.048 meters, therefore 1 world unit equals 3.048 meters. 1 ticks is 1/30 of a second, so 1 tick squared equals 1/900 seconds squared. Up to you on how you want to deal with this constant, really.

Re: [Feature Request] Gravity Syncing

Posted: Fri Sep 23, 2016 9:46 am
by DrakeWasHere
nil wrote:Have you built HaloMD from source using Xcode before? There is a couple of built-in plug-in targets as examples. See MDPlugin.h for some documentation. I don't have a template plug-in project right now with me, but you can look at the build settings for the plug-in targets. If you Reveal Mods in Finder, and go up a folder or two, there should be a couple directories for installed plug-ins.

002 informed me that btcc22 didn't add a feature to HAC, but I don't know how the gravity thing works, or why the value needs to even be synced.
I have not done any work with the HaloMD source code before, nor with the plugins, but I will be checking out the plugin stucture this week.

Well I don't think that it was an added feature so much as something that *just works* with anticheat and SAPP that SAPP implemented, but I could be mistaken.

I tested out the gravity feature on my own servers, and in MD it shows a lag like jumping between server position and client position, so something definitely needs to be synced.
002 wrote:I poked around in Bit Slicer for you. You'll find the gravity constant at 0x37B600 in Bit Slicer. It's a 32-bit floating point number.

It's equal to about 0.003565 world units per tick squared. Basically, this number is subtracted from every objects' and particles' Z velocity every tick while in the air.

If you want to convert this to meters per second squared, 1 world unit equals 10 feet which equals 3.048 meters, therefore 1 world unit equals 3.048 meters. 1 ticks is 1/30 of a second, so 1 tick squared equals 1/900 seconds squared. Up to you on how you want to deal with this constant, really.
So I played around with changing the values on the server and my own MD client using that address, and as long as the values are the same there is no syncing issue.

Looking through the plugin structure, it should be trivial to set that value as needed. Right now I just cannot figure out how to get that gravity value from the SAPP server without being/asking admin

Re: [Feature Request] Gravity Syncing

Posted: Mon Sep 26, 2016 8:33 am
by DrakeWasHere
Just a quick update, but running memory scans and sniffing network traffic between the server and client hasn't turned up any meaningful results so far.

If anyone knows how SAPP announces changes to the gravity variable to clients, that information would make this plugin one step closer to complete

Re: [Feature Request] Gravity Syncing

Posted: Mon Sep 26, 2016 12:45 pm
by nil
DrakeWasHere wrote:Just a quick update, but running memory scans and sniffing network traffic between the server and client hasn't turned up any meaningful results so far.

If anyone knows how SAPP announces changes to the gravity variable to clients, that information would make this plugin one step closer to complete
Guessing it could be through the chat system. Anyway seems like an appropriate question to ask the SAPP folk.

Re: [Feature Request] Gravity Syncing

Posted: Tue Sep 27, 2016 1:35 pm
by DrakeWasHere
nil wrote:
DrakeWasHere wrote:Just a quick update, but running memory scans and sniffing network traffic between the server and client hasn't turned up any meaningful results so far.

If anyone knows how SAPP announces changes to the gravity variable to clients, that information would make this plugin one step closer to complete
Guessing it could be through the chat system. Anyway seems like an appropriate question to ask the SAPP folk.
I looked at chat data and have not found anything resembling a variable announcement.

I messaged the dev on SAPP, as well as posted on the main forum for features / requests / help, and will report back if I get anything.

Re: [Feature Request] Gravity Syncing

Posted: Thu Sep 29, 2016 11:30 am
by DrakeWasHere
Anyway, I posted on the SAPP forum and PM'ed a couple people, and so far the only lead has been that it is a feature of SAPP's anti-cheat client plugin and not HAC/HAC2

Talked to the dev on SAPP and apparently it is handled through the chat protocol, but uses specific hooks which he has yet to finalize. -,-