Posted: Wed Jun 09, 2010 3:52 pm
Hi All,
After a bit of absense from the game (and not much experience then), I've decided to attempt an introduction of a replay & recording system. I am a code monkey by day, so it's time I give away some of my talents for free. Please excuse any ignorance.
There are all sorts of reasons for or against the introduction of this kind of a system. I don't really care for those, cause I'm doing it in any case.
I'll be working with FAZR5. I forget what revision i checked out of the repo (not at my dev machine now), but it is whatever was available earlier today.
As far as I have thought it through, I'm setting the following milestones that need to be completed:
Record the incoming messages somewhere.
Messages are received from the client and acted upon by the server - and also generated by the server. There is oppurtunity in many places to dump this to a file locally. Initially, this dumping will probably be verbose and non-optimum (neither compressed nor optimized for quick I/O). Eventually, I'd hope to write this data in binary format and taking as few resources away from the game threads.
Set up a modified server for community testing.
I'll need the help of some of the community to play a number of different types of games on the server. I have a few places to host, but only in South Africa. Latency may be an issue. I'm not sure. Otherwise. I'd appreciate someone hosting my modified server for a few hours or days. I doubt anyone will see much data that comes out of this.
Analyze the records, deciding what is necessary and what is not
This is going to be a bit of a biggie, and somewhat related to #1. I have no idea how many messages will be logged. One would want the minimum that is required to account for every action a player may take in-game. Clearly, players who spend most of their time dogfighting will produce a signficant amount of data. Repeat 1-3 a few times, till I'm sure I know what I want. This completes the recording side of things.
Introduce an observer system (does this exist?)
There may be some opposition to this, but it is completely necessary to view a replay. IMHO, the commander view will be the best to watch a replay. Most other functionality will be disabled, and the commander view will be the only view that is accessible. The observer will be able to see the entire map or just what has been discovered by all the teams.
Enhance the observer system to replay games.
This will be launched seperately from the initial interface. The user will be taken directly to the commander view (well, observer view) and they can then sit back and watch the game. This may a
Add a options to the server/game settings, so the server admin/game creator can activate or deactivate recording and observing.
Publish (semi-) automagically the records somewhere publically accessible.
Extract parts of a replay to show an especially exciting dogfight, or close call.
Fast-forward/pause/etc buttons in the replay view.
Track a player as they fly around.
One could argue that the observer view could make games susceptible to cheating, but if it can be deactivated, then does this matter?
I'd appreciate comments and criticism, especially from some of alleg's main devs. I'll start posting some code or patches soonish.
All in all, if I get it right, I feel this can be a very valuable addition to Alleg, that many would appreciate from cadets to squad leaders. The recordings and replays could be used for other things, such as data mining, discovering RoC violators, squad hiring, squad firing (yeh, the stupid things you do constantly will be seen), training (a cadet can't be promoted if they haven't been seen to nan properly), improved tactics (does a commander always do the same thing in a specific map? Are you a commander and do you? This'll stop you), improved dogfighting, etc.
P.S. To whom it concerns: AFAIK, SC has always had replays.
After a bit of absense from the game (and not much experience then), I've decided to attempt an introduction of a replay & recording system. I am a code monkey by day, so it's time I give away some of my talents for free. Please excuse any ignorance.
There are all sorts of reasons for or against the introduction of this kind of a system. I don't really care for those, cause I'm doing it in any case.
I'll be working with FAZR5. I forget what revision i checked out of the repo (not at my dev machine now), but it is whatever was available earlier today.
As far as I have thought it through, I'm setting the following milestones that need to be completed:
Record the incoming messages somewhere.
Messages are received from the client and acted upon by the server - and also generated by the server. There is oppurtunity in many places to dump this to a file locally. Initially, this dumping will probably be verbose and non-optimum (neither compressed nor optimized for quick I/O). Eventually, I'd hope to write this data in binary format and taking as few resources away from the game threads.
Set up a modified server for community testing.
I'll need the help of some of the community to play a number of different types of games on the server. I have a few places to host, but only in South Africa. Latency may be an issue. I'm not sure. Otherwise. I'd appreciate someone hosting my modified server for a few hours or days. I doubt anyone will see much data that comes out of this.
Analyze the records, deciding what is necessary and what is not
This is going to be a bit of a biggie, and somewhat related to #1. I have no idea how many messages will be logged. One would want the minimum that is required to account for every action a player may take in-game. Clearly, players who spend most of their time dogfighting will produce a signficant amount of data. Repeat 1-3 a few times, till I'm sure I know what I want. This completes the recording side of things.
Introduce an observer system (does this exist?)
There may be some opposition to this, but it is completely necessary to view a replay. IMHO, the commander view will be the best to watch a replay. Most other functionality will be disabled, and the commander view will be the only view that is accessible. The observer will be able to see the entire map or just what has been discovered by all the teams.
Enhance the observer system to replay games.
This will be launched seperately from the initial interface. The user will be taken directly to the commander view (well, observer view) and they can then sit back and watch the game. This may a
Add a options to the server/game settings, so the server admin/game creator can activate or deactivate recording and observing.
Publish (semi-) automagically the records somewhere publically accessible.
Extract parts of a replay to show an especially exciting dogfight, or close call.
Fast-forward/pause/etc buttons in the replay view.
Track a player as they fly around.
One could argue that the observer view could make games susceptible to cheating, but if it can be deactivated, then does this matter?
I'd appreciate comments and criticism, especially from some of alleg's main devs. I'll start posting some code or patches soonish.
All in all, if I get it right, I feel this can be a very valuable addition to Alleg, that many would appreciate from cadets to squad leaders. The recordings and replays could be used for other things, such as data mining, discovering RoC violators, squad hiring, squad firing (yeh, the stupid things you do constantly will be seen), training (a cadet can't be promoted if they haven't been seen to nan properly), improved tactics (does a commander always do the same thing in a specific map? Are you a commander and do you? This'll stop you), improved dogfighting, etc.
P.S. To whom it concerns: AFAIK, SC has always had replays.