Forged Alliance Forever Forged Alliance Forever Forums 2012-05-06T00:25:34+02:00 /feed.php?f=2&t=626 2012-05-06T00:25:34+02:00 2012-05-06T00:25:34+02:00 /viewtopic.php?t=626&p=12448#p12448 <![CDATA[Re: Replay vault]]> Statistics: Posted by Alcide — 06 May 2012, 00:25


]]>
2012-05-05T18:39:53+02:00 2012-05-05T18:39:53+02:00 /viewtopic.php?t=626&p=12414#p12414 <![CDATA[Re: Replay vault]]> Statistics: Posted by Raging_Squirrel — 05 May 2012, 18:39


]]>
2012-02-21T23:51:25+02:00 2012-02-21T23:51:25+02:00 /viewtopic.php?t=626&p=6939#p6939 <![CDATA[Re: Replay vault]]>
- Name of your game + host + map
- Players and AIs in it (faction + start position + color)
- Start time
- End time
- Trueskill of all players/AI before and after.
- Scores
- When do you die or win during the game.

Statistics: Posted by Ze_PilOt — 21 Feb 2012, 23:51


]]>
2012-02-19T19:55:16+02:00 2012-02-19T19:55:16+02:00 /viewtopic.php?t=626&p=6769#p6769 <![CDATA[Re: Replay vault]]>
Ze_PilOt wrote:
HAHA ! I knew there was a perfect spot to place the id of the game !!

On launch : gameInfo.GameOptions['ReplayID'] = randstring

And thay replayID string is inside the replay.
All we have to do is add a switch so FA knows the real ID, and change the randstring with it, done.

thygrrr wrote:
It's almost like GPG knew :o


Not exactly GPG, I am the one who added that ReplayID with random generation string in lobby/replay when I made fa-ladder.com, but I end up not using it.

If you know the gameid when hosting, you could send it from FAF to FA with command line.

Statistics: Posted by Moritz — 19 Feb 2012, 19:55


]]>
2012-02-18T14:03:41+02:00 2012-02-18T14:03:41+02:00 /viewtopic.php?t=626&p=6717#p6717 <![CDATA[Re: Replay vault]]> I'd thought about local replay parsing to create map snapshots, but it turns out you can't use LOG, etc, commands from within a replay, which means you can't automatically output information. If you find a way that works with that, let me know ;)

Statistics: Posted by Gowerly — 18 Feb 2012, 14:03


]]>
2012-02-18T09:13:07+02:00 2012-02-18T09:13:07+02:00 /viewtopic.php?t=626&p=6702#p6702 <![CDATA[Re: Replay vault]]>

Statistics: Posted by thygrrr — 18 Feb 2012, 09:13


]]>
2012-02-17T21:49:12+02:00 2012-02-17T21:49:12+02:00 /viewtopic.php?t=626&p=6653#p6653 <![CDATA[Re: Replay vault]]>
On launch : gameInfo.GameOptions['ReplayID'] = randstring

And thay replayID string is inside the replay.
All we have to do is add a switch so FA knows the real ID, and change the randstring with it, done.

Statistics: Posted by Ze_PilOt — 17 Feb 2012, 21:49


]]>
2012-02-17T16:31:29+02:00 2012-02-17T16:31:29+02:00 /viewtopic.php?t=626&p=6615#p6615 <![CDATA[Re: Replay vault]]> Statistics: Posted by Ze_PilOt — 17 Feb 2012, 16:31


]]>
2012-02-17T15:37:07+02:00 2012-02-17T15:37:07+02:00 /viewtopic.php?t=626&p=6611#p6611 <![CDATA[Re: Replay vault]]>
Ze_PilOt wrote:
I have to investigate how to tag them without breaking them.

Maybe append the UUID to the Forged Alliance Version string... lots of possibilities.

Statistics: Posted by thygrrr — 17 Feb 2012, 15:37


]]>
2012-02-17T13:52:10+02:00 2012-02-17T13:52:10+02:00 /viewtopic.php?t=626&p=6607#p6607 <![CDATA[Re: Replay vault]]>
ToejamS wrote:
As I have no practical experience of web based database deployment, Im quite interested to see your solution.

the most popular solution for web is this: http://en.wikipedia.org/wiki/LAMP_(software_bundle)

we use php+mysql to generate a web page, and js+jquery to plug in some cool interface effects

Statistics: Posted by Raging_Squirrel — 17 Feb 2012, 13:52


]]>
2012-02-17T13:10:47+02:00 2012-02-17T13:10:47+02:00 /viewtopic.php?t=626&p=6606#p6606 <![CDATA[Re: Replay vault]]>

I have to investigate how to tag them without breaking them.

Statistics: Posted by Ze_PilOt — 17 Feb 2012, 13:10


]]>
2012-02-17T13:05:32+02:00 2012-02-17T13:05:32+02:00 /viewtopic.php?t=626&p=6605#p6605 <![CDATA[Re: Replay vault]]>
I'd be interested in a clean solution (i.e. with an extended 'joining game' or 'ladder start' message that will be coming with the JSON implementation in the near future.

Statistics: Posted by thygrrr — 17 Feb 2012, 13:05


]]>
2012-02-17T12:01:42+02:00 2012-02-17T12:01:42+02:00 /viewtopic.php?t=626&p=6598#p6598 <![CDATA[Re: Replay vault]]>
The client will be aware of many game infos, like who is in the game,.....
Each game has an uniqueId (it's already the case).

The lobby will have to somehow link a replay with a gameId.

Then, when you send a game to the server, it check first if a game with that id already exists. If it's the case, it will check if another game with the same id has already a replay longer. If so, it will discard it. Otherwise, it will allow you to send the replay.

Of course, the server can ask the last player in the game to send the replay after it.
But there is an big problem with that :
If that player quit the lobby before it had a chance to upload it, there is a big probability that the previous leaving player I can ask is already in another game, meaning that his lastgame replay is not the one I want.
So that unique id feature is a must-have.
And with it, I can link many others infos that are not in the replay, like the featured mod used, the rating of the players at that time and currently, the game quality of it, the point earned and lost by each player, at what time each player died or leave,... Basically all the things the server may know. And the reliable xml stats sent by FA (mass spend,...).

Either way, the replay upload will go through the server (like the map), and the server will feed the DB itself.
I'm not sure yet if the parsing of the replay will be done server or client side.
The parsing code is mostly already written.

The "biggest" problem is to actually find a easy and not invasive way to link a game id to a replay.

Also, that's also mean that all the datas I've previously said will be available even without any replay associated.
Yes, that's mean playertrack stat-like in FAF.

Statistics: Posted by Ze_PilOt — 17 Feb 2012, 12:01


]]>
2012-02-17T11:35:39+02:00 2012-02-17T11:35:39+02:00 /viewtopic.php?t=626&p=6596#p6596 <![CDATA[Re: Replay vault]]>
First issue is at the moment, every player uploads a replay. How can you enure that only a single replay is uploaded. Perhaps if the server takes all replays from a game and keeps the biggest sized file ( it will be the most complete file from the last player or obs ) and discards the rest.

Are you running everything with html code or using a database management software. What software would you use? If say you created a Microsoft Access app for the server, does python support jet databases? A simple database could be created, on the server that updates a database stored locally on the client through small appended updates. This would reduce overall traffic and server cpu time while maintaining data integrity and maximizing flexibility in displaying and retrieving results. Most database software includes some compression and I would suggest the file size hit on the client computer to be no more than a few megabytes even for multiple 10,000s of replays.

As I have no practical experience of web based database deployment, Im quite interested to see your solution. I did quite extensive study on MS access, back in version 2.0 which wasnt an exercise not in database programming ability but the ability to find work arounds for every bug that access had.

One thing I would not like to see anywhere is the result. Don't spoil the ending... please....

Statistics: Posted by ToejamS — 17 Feb 2012, 11:35


]]>
2012-02-16T11:55:56+02:00 2012-02-16T11:55:56+02:00 /viewtopic.php?t=626&p=6530#p6530 <![CDATA[Re: Replay vault]]> My Dream Feature
I think each replay needs some kind of "Game Progress Animation" to identify it by, maybe even several. Just the maps don't work, it was one of the greatest limitations of GameReplays.org in my eyes. You don't want to download a map, you want to know what people did on it!

So a simple animation showing the game in, say, 5 steps on the minimap, would really rock. Imagine you could see 5 snapshots of the minimap of a game, one at start, and then one every 5 minutes or something.

This is quite difficult to implement and may need a sizable chunk of client-side work (i.e. export the snapshots at game time...).


A modest alternative
Allow a reviewer to upload screenshots as "highlights". Could be abused, so reviewer status has to be a trusted role. This takes a crapload of effort and would require very, very, very dedicated replay reviewers.


A wacky alternative (think Rube Goldberg Contraption) that might even work(tm)

However, making little minimap animations could be automated through a simple ui mod and local replayserver (so you could build a PC that works as a "replay rendering farm" - PCs that run FA reasonably well are cheap nowadays).

It's an excruciatingly convoluted process, but it'd work like this:

  • machine runs a local live replay server and a script that can launch and kill FA.
  • The replay server opens the replay file and relays it to FA which it then launches.
  • the machine also runs Fraps or another screenshot making software and exports screenshots every minute or so
  • a local clientside mod hides the HUD but not the straticons, keeps the camera at max zoom angle, runs games at +10 speed or something to accelerate the process, etc
  • the replayserver will terminate FA once a replay has been fully played or it has timed out, and will then mount the next replay in the queue and restart FA for that replay
  • finally, someone takes about half an hour and manually reviews all the screenshots (a script or fraps can automatically crop or resize them to just be the minimap) and weeds out the broken ones (actually the local replayserver can just destroy the screens for replays that timed out, i.e. had the FA process crash or hang)
  • screenshots are named in a simple system so if the replay vault PHP finds them, it knows what to do with them

In a night's work, such a machine could process a couple dozen replays automatically, making it a useful feature for automatic "upgrading" of "premium" replays without the need of someone manually making, sizing and cropping all the screenshots. So, the machine would be fed from a queue of the "most popular / hottest / editor picked reviews" and would just shit out small animations of the minimap for them.


I think I could write the basic "snapshot farm" scripts in a weekend (maybe even a day, python rocks), but it'd require a lot of tweaking and back-end work in the long run.
BUMMER: My personal goal is to focus primarily on the Lobby for a while, but if I ever feel the need to build this Incredible Machine, I'll let you guys know. But if someone else thinks they want to build it, I'll gladly give tips and support and could provide the replayserver/fa launcher tool in very little time (just not all the screenshotting stuff).

Addendum: With a little research, I think this can likely be done solely in Python meaning it could be built into a simple standalone application that replay reviewers (trusted!) could then just run on their PCs. It'd use their existing Forged Alliance and apply some of the magic I learned to get the new Lobby to work without modifying crap to smithereens. Actually, I think I will try a proof of concept later to see whether PIL's "ImageGrab" function works on DirectX. But one could always make a UI mod that just triggers supcom's integrated screenshot code, I guess.

Statistics: Posted by thygrrr — 16 Feb 2012, 11:55


]]>