Need some help/answers [dev]
#1
Hi AC community,

I am working on a research project on improving Multiplayer performance for games, specifically FPS. This mainly involves optimizing a network [for starters] to give much smoother gameplay experience to players. I have a few questions which will help me determine if this is the right game for me. Could anyone be kind enough to answer the same?

1. How easy/difficult it is to capture debug information in a log?
2. Is it possible to capture information on under-the-hood stats like packet loss, packet delay etc? If yes, what level of detail?
3. Is it possible to capture each player's session information like hit-ratio etc.
??
4. Does it support IPv6?
5. Can I run it in a LAN without requiring internet at any stage?

In case it isn't clear from questions, aim is to study different stats that can be used to measure as an index of [or correlate to] user experience and then compare the same after the optimizations I make.

If it doesn't support IPv6 yet I am willing to work on that as I have decent enough experience porting apps to IPv6. Only hitch being I got till this weekend to make a call on this, though should have another week to port code to IPv6.

So, if anyone is willing to answer my questions, I'll be gladly willing to help with making AssaultCube IPv6 capable.

Thank you.

P.S. I tried posting in Dev Forum but obviously I don't have access to it yet.
Thanks given by:
#2
(25 Aug 11, 03:36PM)the_requiem Wrote: 1. How easy/difficult it is to capture debug information in a log?
2. Is it possible to capture information on under-the-hood stats like packet loss, packet delay etc? If yes, what level of detail?
3. Is it possible to capture each player's session information like hit-ratio etc.
??
4. Does it support IPv6?
5. Can I run it in a LAN without requiring internet at any stage?

1. There are many commands designed for debug info in logs, both client-side and server-side. If, as it seems, you are competent with coding, it is rumored to be quite easy to modify the server code to produce practically any sort of debug information needed.
2. "Packet jump" is reported server-side. Packet jump is the calculation of the average number of packets per second lost due to network latency or disruption.
3. It is completely possible to capture all of that, and anything similar, by modifying the server code.
???
Profit!!
(couldn't resist)
4) Not as of now.
5) Yes. If two computers are connected to the same LAN, running a server on one machine (provided the firewall doesn't block it) will allow the other machine to connect to it as a client.

Quote:So, if anyone is willing to answer my questions, I'll be gladly willing to help with making AssaultCube IPv6 capable.

That would be flippin' sweet!

Quote:P.S. I tried posting in Dev Forum but obviously I don't have access to it yet.

Yeah, devs are the only ones who can make new threads in the "development" section.
Thanks given by:
#3
Quote:1. There are many commands designed for debug info in logs, both client-side and server-side. If, as it seems, you are competent with coding, it is rumored to be quite easy to modify the server code to produce practically any sort of debug information needed.

Cool, I can do that. Just that if stuff I want is already covered, it will save me some time before I can do my first test run.

Quote:3. It is completely possible to capture all of that, and anything similar, by modifying the server code.
???
Profit!!
(couldn't resist)
Well played.

I may pick on few brains just to save me some time going through code and figuring out where to add debug code.

Quote:4) Not as of now.
4. Not for long, then. Again, may pick a few brains to figure out part of code that may need to be changed.

You may have noticed by now, I am in kind of a hurry to get this thing going. I'll play around with source code and just get it to compile and run once, shall get back as and when run into any issues.

As for IPv6, I went through online repo and believe most [all??] of net code is in enet directory, right? If person familiar with it can give me inital pointers, will save me time.

One more thing, I have zero dev experience on Windows and will most likely be doing my initial dev on Linux. I will keep an eye out to make sure I write code that works on both, but would need someone more familiar with coding on Windows to review as well as test for me.

I hope I can contribute some quality code to the community.

Edit: What would be URL for source code if I want to compile?
I think https://actiongame.svn.sourceforge.net/s...05/source/

Or should it be https://actiongame.svn.sourceforge.net/s...v01_10_05/ if I want to compile and then run?
Thanks given by:
#4
(25 Aug 11, 04:57PM)the_requiem Wrote: and believe most [all??] of net code is in enet directory, right?
Yes, that's the networking library (http://enet.bespin.org/ ). The first thing you'll have to do will probably be changing the data type of `host` in ENetAddress from enet_uint32 to smth that can hold an IPv6 address, and changing the usual suspects (socket syscalls and structs, PF_INET etc) to their v6-capable counterparts. Note that most of that can be found in unix.c and win32.c, for *NIX and windows respectively.

But aside of enet, remember that you'll also have to change the stuff that handles e.g. connect string parsing and log output on the game client and server.

Good luck!

(25 Aug 11, 04:57PM)the_requiem Wrote: Edit: What would be URL for source code if I want to compile?
I think https://actiongame.svn.sourceforge.net/s...05/source/

Or should it be https://actiongame.svn.sourceforge.net/s...v01_10_05/ if I want to compile and then run?
You'll need the data and media files too if you want to actually run the game. So the second URL is correct (unless you want to check out from trunk, which would be https://actiongame.svn.sourceforge.net/s...ame/trunk/ )
Thanks given by:
#5
Quote:Yes, that's the networking library (http://enet.bespin.org/). The first thing you'll have to do will probably be changing the data type of `host` in ENetAddress from enet_uint32 to smth that can hold an IPv6 address, and changing the usual suspects (socket syscalls and structs, PF_INET etc) to their v6-capable counterparts. Note that most of that can be found in unix.c and win32.c, for *NIX and windows respectively.

But aside of enet, remember that you'll also have to change the stuff that handles e.g. connect string parsing and log output on the game client and server.

Good luck!

Yeah, as per my experience bulk of changes [and all the bugs] come in UI and logging part of the code.

Quote:You'll need the data and media files too if you want to actually run the game. So the second URL is correct (unless you want to check out from trunk, which would be https://actiongame.svn.sourceforge.net/s...ame/trunk/ )

What would be difference between them? I mean the source/ and trunk?

Is there any FAQ of sorts for devs? I will have quite a few questions before I fit in. I been using ClearCase/git so SVN is kinda new too. My dev box is behind a firewall. I got https_proxy but having some trouble with kdesvn.

EDIT: Was getting this error:

Quote:Repository moved temporarily to 'http://actiongame.svn.sourceforge.net/viewvc/actiongame/branches/v01_10_05/source'; please relocate
Repository moved temporarily to '/viewvc/actiongame/branches/v01_10_05/source/'; please relocate


So used trunk instead and it is downloading code now.
Thanks given by:
#6
The client commands dealing with debug info pretty much all have "dbg" or "debug" in their names.

Some of the AC code deals with IPv4 addresses, can't remember exactly which files; probably client.cpp by my first guess.

EDIT: clients2c.cpp line 1264, server.cpp lines 2399-2414, and the whois command ties into it in clientgame.cpp lines 1621-1625.
Thanks given by:
#7
Thanks, will get to them once core changes are done. I've run into some issues with testing the default binary. Looks like I don't have right drivers on Linux for my test-box.

I tried running the windows version on my laptop but get the "cannot find default font definitions" error. Any idea? I got the config folder with font.cfg present, so that shouldn't be an issue. Any specific libraries I need with VS to compile windows binary?
Thanks given by:
#8
(25 Aug 11, 08:34PM)the_requiem Wrote: Thanks, will get to them once core changes are done. I've run into some issues with testing the default binary. Looks like I don't have right drivers on Linux for my test-box.
You'll need the proprietary drivers for your gfx card, not MESA or something.

(25 Aug 11, 08:34PM)the_requiem Wrote: I tried running the windows version on my laptop but get the "cannot find default font definitions" error. Any idea? I got the config folder with font.cfg present, so that shouldn't be an issue. Any specific libraries I need with VS to compile windows binary?
Yeah, the trunk windows binary is currently broken unfortunately, but compiling should be really easy: open the VC++ project in source/vcpp and hit compile.

Thanks given by:
#9
You guys got any coding guidelines or something? As in, tabs allowed or not, indentation spacing, ANSI compatible C code etc.

Also, due to my project needs, right now I am just working on getting code to run on IPv6. Later on I'll fine tune it so same code can be used for both IPv4 and IPv6 and you can have both IPv4 and IPv6 hosts connecting to the server [maybe not in same session].
Thanks given by:
#10
(26 Aug 11, 07:58AM)the_requiem Wrote: You guys got any coding guidelines or something? As in, tabs allowed or not, indentation spacing, ANSI compatible C code etc.
4 spaces; no C++ streams and stuff like that. That's basically it, and if you're in a hurry, that's really your least concern. We can still fix that later.
Thanks given by:
#11
They murder you if you use stdlib much \:D
Thanks given by:
#12
Well, it is a good thing that am not a big fan of stdlib or streams myself. I got busy with some firefighting on another project of mine so not much progress yet. I've done about 50% of code changes and it hasn't broken anything yet. Will be getting back to it this weekend.

BTW, I was banned from forums over weekend. Seems to be working now, though it could be coz am using a VPN.
Thanks given by:
#13
Not sure what happened with the banning, but many proxies are banned.
Use your normal ip ;)
We like to know where you live.
Thanks given by:
#14
(30 Aug 11, 07:16AM)Ronald_Reagan Wrote: Not sure what happened with the banning, but many proxies are banned.
Use your normal ip ;)
We like to know where you live.

I been travelling for work past month or so and some of the locations seemed to have troublesome proxies.

My Ipv6 setup was borrowed by a colleague so couldn't test out my code. Hopefully this weekend I should get it back and be ready to make first version available by next weekend. This being more of a personal project of mine [at least for now] tough to take as much timeout for it as I would like.

Apologies for the delay and leaving you all hanging.

Thanks given by:
#15
If your project weren't moving faster than the next AC release, your concerns about leaving us hanging might be warranted. <3
Thanks given by: