WWIIOL web geeks needed…

If’n you’re not a WWIIOL player or’n you’ve never built a web page, this’n isn’t for you. An’ if’n you try to read’n on, I’m promise’n I’ll do my damn’est ‘n write it all like this’n.

I’m going to give you a preview of something to look at, review really.

Now – take a deep breath. Do not get all overexcited on me. Tell yourself: this means nothing. This is not an official CRS project. I’m doing this in my spare time because Killer has been asking for something like this since Day 1, and because there is overlap with part of my day job (game management and monitoring).

When I started here, game management consisted of a handful of text files (also used to control the building of client datafiles), terrain data. And that was it.

Game management tools consisted of a web page that could tell you if a server might be online or not, and let you brute-force shutdown or start a server.

There wasn’t a whole lot to manage. If you wanted a change, you rebuilt the server.

Wanted to release a patch? Our host coder had to log into a particular box, open up a manual SQL connection to the server and manually update the database tables (which were seriously over-engineered for our usage), restart the auth server, and see if the changes worked.

There was a reasonable amount of monitoring going on, but it was done the extremely hard way (manually crunching of log files).

*Some* game management could be done by bringing the servers down, changing database records and restarting it, but that was pretty limited.

So I started out building tools with Roxen webserver using their RXML language to make it drop-dead trivial to create useful management and monitoring tools. RXML is a very matured version of what JSTL might hope to become (bear in mind, RXML is 10+ years old).

However, Roxen is something of a dying sun (if you follow the first link, note the dates on the right), while JSTL has become mainstream. I am already using a lot of JavaScript and AJAX on recent internal tools, and I’ve done a little retrofitting. That just made switching to JSTL a bit easier, and the time had come for me to try it all out on a scratch pad.

At the same time, this seemed like it might be a useful beginning for something we’ve wanted to do for a long time – carefully exposing some of the game’s data in a format that can be used by afiliate sites.

So while I’m not CRS’s “web guy”, I have nothing to do with our external websites todate, I am the internal “web-tools” guy.

And so, this brings me to my little preview: Wiretap. (Edit: This was formerly a link to zombo.com to make sure you read on) No, this isn’t a joke, but I wanted to make sure you understand that this is a preview. The content was chosen because it was something I needed to work on, not because its what we intend to provide (although for the time being, I guess we *are* providing it).

The URL, which I ask you not to share, since I’m not trying to load or stress test this service, is web3 dot wwiionline dot com.

Disregarding what content is included, not withstanding the content you think should be included, I’m looking for feedback on the documentation, the tutorial, the scripts, the XML and JavaScript. I’m looking to see what kinds of questions the material is going to raise so I can maybe put together an FAQ before we begin investing real time in it: everything so far has been done in my spare time while playing EQ2.

169 Comments

Why did you roll your own ajax and dom utilities? THere are about 500 frameworks out there that have done all this and are well tested.

Ahwulf asked:
Why did you roll your own ajax and dom utilities? THere are about 500 frameworks out there that have done all this and are well tested.

kfs1 originally wrote:
So I started out building tools with Roxen webserver using their RXML language to make it drop-dead trivial to create useful management and monitoring tools. RXML is a very matured version of what JSTL might hope to become (bear in mind, RXML is 10+ years old).

I just used the tools I use. And since I use them, I decided to include them to be on the same page as anyone working with the files. I never tested the XML or JS I’m using with anyone elses framework.

Learning AJAX is on my todo list so this was nice push =)

The stuff I had a look at was pretty easy to understand so I’m looking forward to when more stuff is added. Then I just have to come up with some use for it but that’s not really the hard part =)

I am actually in the process of building a tomcat server. Now I don’t know what to do first. Work on this, or work on getting my XP machine back up fully to play.

I think a captures list will be next :)

Ah…if only you had this stuff two years ago when I *might* have had time to do something with it.

The really clever web guys would use something like this to poll your data at regular intervals into their own database to make it possible to scroll through a campaign.

Seems simple enough. I wish there for a possibility to get current map state (CP ownerships), and a list of captures similar to the current list of HC unit moves. Also, we need weather report and perhaps a forecast :)

I’m just about to do the CP Ownership one.

Very cool. I used to do something similar with an online league, the game did not have it but the league offered some of the info through XML queries, and it was very useful.

One “trick” I used to use there was to query the XML and sometimes store it locally (or the resulting transformed page) so I would not overload the server. I also use something like that to be able to display TeamSpeak’s server info.

Right now I have a script that takes a snapshot of the front twice a day and then I create an animated GIF to see how it went. Useful for post-analisys ;).

With the XML… AJAX, Flex… generating full HTML pages… nice :D

Salute!

Grr. I’m trying to do something in XSLT to automate generation of the documentation. I’m trying to write an xslt:template that will build the argument list for a query. However, my XSLT is rusty and I can’t remember the easy way to do something like this (substitute [] and <>]


[xsl:if test='@optional']{<i>[/xsl:if]
..describe the argument..
[xsl:if test='@optional']</i>}[/xsl:if]

What I wind up doing is:


[xsl:choose]
[xsl:when test='@optional']
{<i> ... describe the argument ... >/i>}
[/xsl:when]
[xsl:otherwise]
... describe the argument ...
[/xsl:otherwise]
[/xsl:choose]

Which is ok; but is there a cleaner way I can do this?

What a cool little interface you’ve created – we’ve been dying for one of these for ages. Now if it could also link with the CSR in some way, that would be cool, that is the data we most want on our squad site. Though I understand this is likely a pipe dream of ours.

Do you have any problem with us polling this regularly(ish) and then storing the results in a database so we can build up a campaign history? I can fully understand if you do. By regularly, I mean once an hour, and likely just the CP ownership data when you’ve done that. With this data, I’d like to look at making some animated campaign maps (should I ever find the time!). This wouldn’t be too difficult as you supply the X/Y coordinates and I’m sure both sides would be interested to see these to analyse their campaigns…

Anyhow, I dream and digress. Fantastic stuff you’ve got here Kfsone.

S!

Sure, polling is ok, try not to drown or swamp it, data has a granularity of about 5 minutes, so you don’t need to poll more frequently than that for the same data, really.

I added the current CP states – within 5 minutes – see http://web3.wwiionline.com/datasets.xml for a list and documentation.

I’ll link that to the front pages shortly.

But the CP states is

/xml/cpstates.xml
/xml/cpstates.citys.xml
/js/cpstates.js
/js/cpstates.citys.js

Why am I seeing Zombo? :)

Doh!….I’m a dummeh..

Kfsone, I do XSLT all day, but don’t quite get what you’re after, but why can’t you just do:

[xsl:if test=’@optional’]{
..describe the argument..
}[/xsl:if]

You can mix the [xsl] tags with html tags as the XSL tags are in the XSL namespace whereas the html tags have no namespace.

Perhaps I don’t get what you mean, but I’m off to bed in 30 – if you email me the full XSL you have, I’ll try to turn it around quick for you if I can…

Unless I’m mistaken, is “hcstatus.xml” a list of units and their locations? I still have that brigade tool and my biggest problem is having to update the current map state by hand, so this could be quite the help indeed for us strategic types…

And in the squad lists, are those variables (country, branch, etc.) just little things thrown in there, leftovers from old plans, or hopeful dreams? (I know better than to speculate about the near future. ;) )

Defting: It *always* describes the argument; but if the argument tag has an “optional” attribute, then I want to put it in italics with {…} around it. Take a look at my XSLT (its a bit crummy, http://web3.wwiionline.com/datasets.xsl). It’s the “xsl:for-each select=’attribs/attrib'” chunk — It was easy enough to put {}s around the block with xsl:if, but I couldn’t work out how to put it in italics or a different color.

That chunk was originally [xsl:apply-templates match=”attribs/attrib”] but then it had this nasty side-effect of dumping the other attributes into the output too (which are at the same level as attribs, so I found that a little bizzare)

Victarus: Yes it is :) Make sure you check out http://web3.wwiionline.com/datasets.xml for a list and description of the ones I’ve done so far.

lol, I wish you had made this post about a month or so ago then – right now I have a completely arbitrary system for CP IDs. Now I need to either make a list to convert them whenever I reference the “official” IDs or go over the one I have and make them match. (Fate is a horrible, evil thing sometimes. :p )

Well this is definitely a motivation for me to learn networking & xml at least. Hopefully the ability to open a map to fool around with brig movements will encourage a little more planning which, in turn, will make stalemates much less common, adding to the fun of the overall map. A little optimistic maybe, but it’ll help a little at least. :)

I added the octet x and y of the CPs to the meta-data files. (octets are 800×800; so to get the aproximate x/y in metres, multiply by 800)

This looks excellent kfs, nice work!

Do you plan to provide data for ab/depot/fb/etc ownership changes? Or would that be too finer resolution?

I’d like to write a system tray notification tool that would display a small alert upon change of faculty ownership, fb ownership, cp ownership/control, brigade movements, AO placements, etc.

Idealy there would be a full xml listing (that you could cache for, say, 30 minutes at a time), and an xmlquery for recent changes. So i could establish state by grabbing the whole xml once and roll forward using the xmlquery, then poll the xmlquery every so often.

Hi Kfsone,

How about…

[span class=”mandatory_arg”]
[xsl:if test=’@optional’]
[xsl:attribute name=”class”]optional_arg[/xsl:attribute]
[/xsl:if]
[/span]

And then link to a CSS that defines the attributes for the classes mantatory_arg and optional_arg. If you don’t want to add another file, then simply put the css styles at the beginning of the generated html.
In the long run, it pays to move the styling to a CSS, and it also makes those kind of things simpler.

Salute!

Oh, I did not see the ‘{‘,’}’ around the optional arguments definition… but that has to be solved with if’s, if you want to add it in text and styling it with different font/color is not enough. And “..describe the argument..” should be in there just before the [/span]… it’s just too early for me :)

I thought maybe you could use a variable, in another language I might have done:


var pfx = "", sfx = "" ;
if ( node.getAttribute('optional') ) {
pfx = "<i>{" ;
sfx = "}</i>" ;
}
output = pfx + describe(node) + sfx;

I also tried defining a template


<xsl:template match="attribs/attrib[attribute::optional='true']">
<i>{<xsl:apply-templates match="attribs/attrib"/>}</i>
</xsl:template>

<xsl:template match="attribs/attrib">
... describe the node ...
</xsl:template>

But I kept getting other nodes at the same level as “attribs” dumped into the output :(

Very likely we’ll do facilities too. But I suspect we may want to increase the delay on that information and also monitor the provisioning costs.

Implementing the delays may actually obviate the ‘expense’ of the queries, for instance; I delay the HC Unit information by copying the current data into a shunt table every 10 minutes, and then copying the shunt table into the published table before we next copy into the shunt, so the information you get is 10+ minutes old.

I dont know if you know my little unfinished game called “THE HC GAME” (http://www.ampostata.org/The_HC_Game/The_HC_Game.zip and http://www.ampostata.org/The_HC_Game/music.zip)…

I could try to implement “read real world” so it could read the current game world and import it on my game map. As soon as I figure how to know all brigades positions on map I will shoot a try…

BTW, I gave each city a IDnumber and x,y coordinates, and I am doubing if implementing same numbering as CRS had or continue with my own datas…

————-

[xsl:for-each select=”attribs/attrib”]
[!– changes start here –]
[xsl:variable name=”pre”][xsl:if test=”@optional=’true'”]{[/xsl:if][/xsl:variable]
[xsl:variable name=”post”][xsl:if test=”@optional=’true'”]}[/xsl:if][/xsl:variable]
[xsl:variable name=”elementName”]
[xsl:choose]
[xsl:when test=”@optional=’true'”]i[/xsl:when]
[xsl:otherwise]u[/xsl:otherwise]
[/xsl:choose]
[/xsl:variable]
[xsl:element name=”{normalize-space($elementName)}”]
[xsl:attribute name=’title’][xsl:value-of select=”@tip”/][/xsl:attribute]
[xsl:value-of select=”$pre”/][b][xsl:value-of select=”@name”/][/b][xsl:value-of select=”$post”/]
[/xsl:element]
[!– changes end here –]
=
————-
This gets the optional elements to be surrounded by ‘{‘ and ‘}’ and be in italics, while the mandatory ones are underlined.

Checked against your data.xml file.

Cheers!

I bet someone could write a sidebar app for Vista that would show this data.

Kfsone – got what you mean now – was late and brain wasn’t working.

To get your templates to work use:

[xsl:template match=”attrib[attribute::optional=’true’]”]
[i]{[xsl:call-template name=”attrib” /]}[/i]
[br/]
[/xsl:template]

[xsl:template match=”attrib” name=”attrib”]
[u title='{@tip}’][b][xsl:value-of select=’@name’/][/b][/u]
=
[xsl:choose]
[xsl:when test=”@type”]<[xsl:value-of select=’@type’/]>[/xsl:when]
[xsl:when test=”@values”][xsl:value-of select=’@values’/][/xsl:when]
[/xsl:choose]
[xsl:if test=”@optional=’false'”][br/][/xsl:if]
[/xsl:template]

The only bit I don’t like is the if-test for the false @optional attribute to output the trailing [br/] which in the optional=true template is called after the trailing }, but can’t be called by default in the attrib-template otherwise it will break before the tailing }.

Ok – thank you both :) And, good catch, Defting. That br/ originates from when I couldn’t get the argument strings to work :) Had completely forgotten how variables worked, and the difference between match= and name= / apply- vs call- with templates. I still don’t exactly get why apply-templates match=”attrib” was dumping the rest of the upper-level nodes but…

how about adding factory states when you add stuff next time?

oh and I just have to ask… would it be possible or rather, would you do a non-delayed list of towns with bomber ews on? Did this little thing a while ago in java where I typed in the names of the towns that set off ews and got lines towards the factories so I could see what way they were flying or if they were going to the factories at all. Anyway, it would be cool to have it update itself so I don’t have to check the map every time EWS goes off somewhere.

Is one of the goals here to create an application that could essentially tell me when I should log on?

I play 3 times a week during a set time, but I’d gladly change these times based on the status of the gameworld – if I could look on the web or get an automated message on my blackberry.

We all hear about great battles that take place when we are NOT online – and its a shame that we miss them simply because the technology is not there to vibrate my pager while im dozing off in front of Grey’s Anatomy with the wife!

Help me, please!

Trout

We deliberately delay the data. We don’t want the HCs knowing the other side has moved within seconds of them moving a unit. We don’t want you having supercomputer automated ninja ews tracking powers.

It wasn’t a goal I had in mind, but that sounds like its in the spirit of the sorts of things I’d hope to be able to enable. I don’t currently keep AOs in a database (I do track statistics, but not where actual AOs are). I probably should, with a short delay on exposing that data, so that you could track things like that.

– Oliver

Firefox says that the current datasets.xml isn’t well-formed:

XML Parsing Error: not well-formed
Location: http://web3.wwiionline.com/datasets.xml
Line Number 2, Column 6:

Added captures and facilitylist.

Added captures and facilitylist.

Yay! This is great!

A couple of comments:

/xmlquery/captures.xml
– The hours param doesn’t appear to be limited to 168 (plugged in 10000 and got data back to 2006-11-10 12:04:04.0).
– Also, it would be easier if the hours param wasn’t required when using the fromid field.

/xml/facilitylist.*
– Is it possible to get a higher resolution for the x/y coords for facilites? Many that are within >800m of each other have the same coords, which isn’t very useful for plotting a town on a map.

Lastly, i’d be nice if we had a way to get the owner of all facilities (ie, xml with just id and owner, updated infrequently) that we can maintain using /xmlquery/captures.xml

(or even just for the facilities in contested cp’s)

http://web3.wwiionline.com/captureticker.jsp

Of course, the downside to Ajax is that you can’t pull 3rd party data. If someone wants to make Ajax tools that make use of the XML data in an Ajax page, they’re going to have to pull the data to their own site or Proxy the queries themselves.

Finally!

Now that saves me from pulling all the CP info from the map pages and CSR – admittedly I did get a reasonable way with some RXML for tracking the opposing HC characters movements and tying back to their logical brigades. Then again, that was 18 months ago and pre-dated having any kind of in game link! :p

Methinks it’s still past time to turn off my old wwiiol stats pages.

asn

Heh, tomorrow I’ll add a 15 minute delayed all-facilities status and a 5 minute delayed “facilities that don’t match CP”.

My game (THE HC GAME) can now read the live cities status. Expect an update soon reading brigades.

Anyway to get cities with AO?

http://www.ampostata.org/The_HC_Game/The_HC_Game.zip

We don’t currently export that information in a useful format to a database, but I’ll be adding it after I get done with current projects.

First off… This is a great start KFS1. Thanks.
Darn it now you are going to force me to update my map/rdp widgets. :)

Question 1) How do coordinates in octets map to geographic coordinates?

Question 2) This may be simpler. What are the dimensions in octets of the status map on the WW][OL homepage?

That’ll do for starters. Woot!

Actually, one of the pages describes octets. Octets are our 800x800m tiles and 0.0 is 0.0.0N 0.0.0E; while ox=1,oy=1 is 800m north and 800m east of 0.0.

I’d have to ask Ramp for the dimensions.

finally came to check the site out. Lots of cool info here. I’ll be visiting more often. & you of course know I have nada to offer LOL

& ya I cant type my tag right the first time either ;P

where’s the edit button!

Actually, one of the pages describes octets. Octets are our 800×800m tiles and 0.0 is 0.0.0N 0.0.0E; while ox=1,oy=1 is 800m north and 800m east of 0.0.

What is the standard identification means for the eight 400m x 400m right triangles that make up an octet?

Are there standard ways of referring to which of the faces of a 400m x 400m right triangle one is referring to, and/or which of the vertices?

Thanks for your work on this. I’d sure like to be able to obtain a list of all members of our squad (according to the CRS database) regardless of when they last logged in. As far as I know there’s no way to obtain the list OUTSIDE of the game. Do you have a query/script for that?

That’s currently something that we have agreed would not be delivered outside of an official package arrangement – i.e. outside the bounds of what I can expose in my private experimentation. That’s not to say we won’t do it, or that we will charge for it, just that its not something we want to release without this being an official CRS deal.

hi,
I see your work, this is very good.

I see that you don’t want give some information for squad people, but can we have the same information for a player than the csr, with the use of a xml command ?

Tanaka

Its not that I don’t want to give the information, there are simply constraints on what information I can expose while this is unofficial. When it goes official, there’ll be a lot more information and options available. E.g. we may allow squads to pull their own data *from* a specific IP address or with a special private key.

hi,

i sent you an email asking if we can have some information about what we can have from specific location

do you received it ?

I work for the 3e DLM Squad (Squad Id : 16), where i am XO and where i work with the 2 other website admin

I just tried to include a Data page to my NEW web site for the C-Hawks. http://chawkswwiiol.com

If I go here http://web3.wwiionline.com/documentation.jsp and go to the bottom the page the link “Click here for the completed example.” It works Great. But from my page, I get a page error and nothing loads.

The code is identical to the source code you have.

Does anyone know why it’s not working?

Already answered that here earlier and on other threads. Ajax doesn’t allow you to pull data from a different source than the html/javascript you are viewing. So you have to either copy, mirror or proxy the data for yourself.

kfsone Says:
March 5th, 2007 at 8:52 pm
Its not that I don’t want to give the information, there are simply constraints on what information I can expose while this is unofficial. When it goes official, there’ll be a lot more information and options available. E.g. we may allow squads to pull their own data *from* a specific IP address or with a special private key.

no news ?

Tanaka, from the original post:

Now – take a deep breath. Do not get all overexcited on me. Tell yourself: this means nothing. This is not an official CRS project. I’m doing this in my spare time because Killer has been asking for something like this since Day 1, and because there is overlap with part of my day job (game management and monitoring).

I don’t see us picking this up as an official project until after we’ve gotten TOEs out of the way. I’m currently working on finishing up some of the management tools which I hope to have done by Monday so I can move into more active beta testing.

oh, ok kfsone,

When i read your first answer after my question, i understood that this is already made and we had only to ask for the tools.

Didn’t understand this will be a possibility !
I understand you must finish what you do for the official part, because i will use it faster.

excuse me, but i am french speaking man, and sometime i don’t see subtelity in the language

S! Kfsone,

I was wondering if there a XML feed for a sortie. I’m working on a webapplication for the ww2ol community. And I need to read a sortie. I can produce a script that can read the HTML source code of a sortie, but it would be easier to use a XML feed for it.

The sortie is read only once, and then stored in my own database. So not a lot of traffic for CRS. And the player need to submit thier sorties (sortie id’s), so not an automatic polling system.

But anyway my question is:
Is there a XML feed for a sortie? I would like to submit a sortie id and get some data back. For example:
– date time
– campaign
– persona id (pid)
– player name
– kills
– kills in detail (unit, player)

and maybe more.

I hope you can help me!

Falcko

hi falcko

i ask for it, but this is not the priority first atm

found your own system to get it, i did, this is long, but work

you want it ?

if you want something i make a “zip” of my own program, you can get here :

http://www.tanaka-world.net/BattleGroundEurope/SquadStat.zip

Use it with precaution, to get the entire information for a squad of 30 members, this is 2 x 6 hours for each big table “MembreSortie” and “Membrekill”

Thanks Tanaka!

I will look into it.

Last week I made an PHP script that will read the sortie from the HTML page, so i’m good for now. Just like I did read the kill stats to make the banner below:

Falcko

Falcko, this is what I used to do until I extended it too much and CRS blocked my site from scraping their site. Just before it was blocked I was scraping approx 1,200 players at the time.

Was a fun project, I had quite a lot of stats built up, not sure I have the database anymore I deleted it I think.

1200 players !!!!!!!!

i have only 35 players !!!

Ok, been tinkering with CP Ownership to see where AOs are at the moment. At this moment I see several AOs per side, but in game it is only 2 AOs per side?

Is CP Ownership delayed?

It’s showing AOs that have come down but not been un-ao-ified. Not much help :(

Oh, and I’m having trouble getting more than 1 Ajax Object running per page, which is limiting :(

Did that clear up the non-AO towns?

Top dog :) Thanks KFS1 :)

It’s gone again kfs, it’s reporting too many AOs.

http://www.22ndmech.org/

Found a new bug in http://web3.wwiionline.com/xmlquery/facilities.xml

It never shows the Axis FBs as open, open is always false for them, the French/British FBs are fine.

Oh, I know you’re busy with TOEs and this is a side project, so don’t worry about it, thought I’d just tell you :)

So to find all active FBs to say Luxembourg I would have to poll all surrounding towns? Seems overly excessive on the XML polling.

Would make sense to expand facilities.xml to include inbound open fb’s also.

Seems that when the attacking force cap the AB (before the town is captured) the open=’y’ tag disappears, which is rather annoying.

Do you mean it never comes back? Its supposed to close when they cap the town but it should open again eventually. I looked thru the code and I don’t see any route by which the AB could ever be opened without updating the database.

Say the Allies are attacking Trier, they will eventually have to cap 3 of the 4 ABs in town and then make sure the last AB is capped last.

Once the allies get to this stage, the capped ABs never show up in the Allies list, if the Axis cap them back they return to the list.

I’m building a Java model of all the various objects and their relationships with navigable links between them all, and it’s coming along very nicely. I’m not sure what I will do with it afterwards, but it should be possible to give it a GUI or web front end of some sort. Early days yet though :)

The documentation for the CP Ownerships query appears to differ from what is actually returned. It says:

ao= Side (or 0) which has an AO on the town

But the ao element actually contains:

Let’s try that again, since it gobbled the tags:

ao=”true”

The Facilities query appears to be the only way to determine the current ownership of a facility, but it’s necessary to specify a specific CP in the query. So, to determine the ownership of all capturable facillities, it would be necessary to issue 795 separate queries, one for each non-bridge CP (unless I missed something, in which case please feel free to point it out).

How about adding a new option ‘cp=all’ which includes all facilities for all CPS, but only where the the current owner of the facility differs from the current owner of the CP?

That would still be a lot more information than you need: as of 1.27 its really only the side that matters, and you can tell that from getting a list of who owns all the CPs. You then only need facility level detail for contested towns, and I’ll look at adding an option to return all contesting facilities.

Re aos=true – it appears tomcat coerces any tinyint(1) into a boolean value by default. Fixed.

I noticed you fixed it, it broke my app of course :)

A few other minor things while I think about it.

The country metadata should probably have a ‘side’ element to tie the two together.

I’m not sure I understand the subtle distinction between ‘owner’ and ‘controller’. Especially as CP states defines controller in terms of country, whereas firebase status defines them in terms of side.

I don’t use cpdetail.xml because I am using sets and maps to hold related items, but I couldn’t help noticing when I parsed it that there are a small number of CPs where there is a discrepancy between for example the number of ABs and the actual number in the facilities list which are linked to that CP. I don’t think it’s my bug and I didn’t keep a list of the differences, sorry. I should have done.

In cpdetail.xml there is a ‘links’ attribute. Isn’t this just the same as the one in cpstates.xml?

My app is working quite nicely in terms of linking everything together, although at the moment it’s just dumping stuff about towns with AOs, for example:

Attigny
CP id: 307
Contested: no
Has AO: yes (Allied)
Original country: France
Original side: Allied
Owner: Germany
Controller: France
Depots
Attigny Railway Station
Attigny-Vouziers Depot
Attigny City
Attigny-Rethel Depot
Firebase: Attigny-Rethel FB (Germany)
Attigny-Mazagran Depot
Depot link (no firebase): Mazagran-Attigny Depot
Attigny-Launois Depot
Army bases
Attigny Armybase
Firebases
Attigny-Launois FB, Closed
Attigny-Vouziers FB, Closed
Vouziers-Attigny FB, Closed
Attigny-Rethel FB (Germany), Open
Rethel-Attigny FB, Closed
Launois-Attigny FB, Closed
Outward links
Attigny-Vouziers Depot -> Attigny-Vouziers FB (closed) -> Vouziers-Attigny Depot
Attigny-Rethel Depot -> Attigny-Rethel FB (open) (owner Germany) -> Rethel-Attigny Depot
Attigny-Mazagran Depot -> Mazagran-Attigny Depot
Attigny-Launois Depot -> Attigny-Launois FB (closed) -> Launois-Attigny Depot
Inward links
Attigny-Vouziers Depot <- Vouziers-Attigny FB (closed) <- Vouziers-Attigny Depot
Attigny-Rethel Depot <- Rethel-Attigny FB (closed) <- Rethel-Attigny Depot
Attigny-Mazagran Depot <- Mazagran-Attigny Depot
Attigny-Launois Depot <- Launois-Attigny FB (closed) <- Launois-Attigny Depot

I’m adding the unit stuff next. It’s been an entertaining diversion :)

Added units:

Antwerp
CP id: 320

Deployed units
Army: 1st Infantry Division (1st Corps)
Air Force: 76 Squadron (CAS Brigade) (70 Bomber Wing)
Navy: 19 Destroyer Flotilla (Nore Command)

Not a bad afternoon’s work but that’s enough for today :)

There seems to be a problem with the firebase open status returned by the facilities.xml?fbs=all and facilities.xml?fbs=open queries.

Today, Chilly was axis and Charleville was French and therefore one of the pair of firebases (1815 and 1818) should have been open, shouldn’t it? Neither was returned as being open in either query.

Ignore that, it was my bug to do with town ownership :)

kfsone, I’ve got enough of an app for you to have a look at now, if you want to. Email me your email address and I’ll send you a link. I have a todo list as long as your arm but it’s coming together.

kfsone@playnet.com

Why not post a link to it? There’s a few of you working on apps, so far each with its own special emphasis. Quite possible y’all could be pooling some of your resources and/or focusing your own projects on your preferred aspects :)

OK, it’s here:

http://www.steve-p.com/wwiiol/WWIIOL.jar

Read the readme first:

http://www.steve-p.com/wwiiol/readme.txt

I will update it periodically whenever I work on it.

In the capture list query, there are ‘from’ and ‘to’ attributes. Do these indicate the country ownership of the facility? If so, they are currently always the same, so it’s not working. Or have I got the wrong end of the stick?

I notice that quite a few entries in the capture list have squad=”0″ – does this have some meaning, or is it a bug?

I was also wondering what (if anything) would go into the capture log when the AO is pulled on a contested CP, causing all attached facilities to revert to the town owner.

sres: “Seems that when the attacking force cap the AB (before the town is captured) the open=’y’ tag disappears, which is rather annoying.”

The AB stays closed until it is spawnable (you obtain ownership). If the database reflects that, its accurate.

SLR: I already said somewhere else that the current 1.26 host is writing the wrong data to those columns. You’ll have to wait for 1.27 for a fix. Squad 0 is no squad.

Of course… I completely forgot some people aren’t in a squad, and of those, a few are capable of capping things :)

Lone Wolfs are valuable. Never rule out the power of 1.

So is 1.27 ready for the next reset? I know, I know, I just want an odds 50/50 60/40.

A WIRETAP-related bug report:

file: http://web3.wwiionline.com/wwiiol-meta.xml
line: 3

The attribute tag ‘version’ is misspelled as ‘versioh’.

/xmlquery/cps.xml/cps/cp@ao is no-longer a boolen or a side number, it is now the id of the attacking brigade.

I noticed, thanks.

Has the cpstates query gone a bit wrong? There are a lot of CPs shown as being owned and controlled by country 2, i.e. USA. I think it’s a large proportion of the bridges.

2 = destroyed I think

OK, thanks. All the data feeds seem to have stopped updating now by the way – nothing new for a couple of hours.

Are your servers synchronized via ntp with any time servers? You seem to be returning capture times which are in the future by anything up to 30 seconds.

On second thoughts maybe if I spawn in quick I can kill the capper :)

My application reports that there are occasional gaps in the capture logs:

Capture id 836 missing
Capture id 1829 missing
Capture id 4580 missing
Capture id 4801 missing
Capture id 4803 missing

Are these numbering gaps just an artefact of some internal mechanism for allocating them, or do they represent missing data?

I’m trying to get my head round a discrepancy in the data between CP ownership and the captures which change CP ownership.

Take Leuven (id 272) for example. Its original owner was England, it does not appear in cpstates.xml implying it is still owned by England, and it shows on the map on the WWIIOL site as being owned by England. It seems fairly comprehensive therefore that it is owned by England. However, the ownership changes in the capture log are:

Wed Aug 29 18:15:29 BST 2007 ENGLAND -> GERMANY
Wed Aug 29 18:44:58 BST 2007 GERMANY -> FRANCE

So, why isn’t Leuven owned by France? Is there some other way apart from a capture that a town can change ownership between the allied countries?

Interesting how this data exposure to benefit gameplay also has potential as a means of allowing selected members of the community to aid in bug identification. 8^)

The gaps you are seeing are non-capture events, and side 3 is neutral – it was already in the meta data, I hope its a little more obvious now.

All of the servers are ntp synced to a strata 1 server. How about you? Or are you running the “linear time is a myth” operating system from Microsoft?

I don’t think blaming Microsoft is the answer in this case ;) My dev system is XP/Vista, and of course the clock is wrong as usual, but it’s only two seconds out, compared it to my office clock. That is synched to an atomic clock every night by radio signal, and is always accurate.

Just now I got a cap time which was 13 seconds in the future as far as my dev system is concerned (i.e. really 11 seconds compared to the atomic clock ). Maybe you should check the ntpd logs to see if your syncs are really working, otherwise it’s a bit of a mystery.

What is a ‘non-capture’ event? Sounds interesting.

Nope. All of the servers are within 0.012 microseconds of 15 NTP servers I pointed them at ranging from Stratum 1 through 3. Windows provides notoriously unreliable time keeping.

I will check tomorrow that I’m not adding the capture duration to the capture time, but the clocks on those machines take about 399 days to drift the same amount as the typical desktop PC does in a day, and the operating system keeps time with significantly greater accuracy than any windows build todate.

I am a software engineer and do appreciate a lot the topics and work dedicated to enhance the game play of battleground europe.

Is there any script around or any page that will allow me to see a squad member list?

This could be very useful for squad admins since they dont have to go manually doing screenshots in the game and then updating squad roster by hand.

…or is there any crs page that allow us to see our squad roster like the old days?

WireTap is still “unofficial” and “alpha”, at this time there are severe limits on what I can expose. The squad info is something that the company still sees a possible saleable on – e.g. having the CO pay a small extra fee in order to obtain a password to let his users access the info via. So the squad info we’re exposing is minimal right now.

Who do i need to get in contact to pay to get a password for myself to get access to squad data so doing maintenance in my site becomes easier?

Nowadays I have to do a lot by hand. If the squad info access is something saleable then I wont hesitate in paying a fee to get access to the data. a mysql database would be great but if i have to fetch it from a web page that would be ok.

Thank you for the info. I am looking forward in hearing from you.

Regards,

You’d have to contact rafter@playnet.com or maypole@playnet.com and talk them into establishing WireTap as an official Playnet service with free and chargeable components.

Right now, WireTap is a service of me, that the company has allowed me to provide within certain constraints; one of those constraints is certain info that they feel it would be damaging to just give away now and then later try to charge for.

I already sent them a message yesterday and have not gotten a reply yet. I am going to resend it because the subject could be filtered as spam (It said: access to web tools). 8-( I did not realize it till now.

I want to thank you for your time. I am hoping I can get access to some data. It doesnt bother to me to pay for it.

Regards,

We had a LOT of people out sick today, seems someone brought something nasty back from the AGC con last week.

KFS1, is there a way to search the capture ticker for past captures. Specifically I want to know what happened in Ciney AB Tuesday Sept 11 9PM Mountain when the allies capped the ab under the nose of 6-7 axis players who were in the bunker.

If it’s an invisible ei then he would have known he was invisible because no one was killing him.

edit: Really, really stupid segment removed

NM KFS1 I figured it out.

I still think there’s something fishy with the capture times.

My application uses the system clock in conjunction with an adjustment factor which is deduced by an ntpd query to a source I believe is reliable to ensure that it is spot on. Certainly it is within tens of milliseconds anyhow.

The ‘Date’ field in the http header from your server is always pretty close to the expected time, indicating the time of your web server and my system are near enough in sync.

However, the capture query still returns capture times which are anything up to 1 minute in the future, and I don’t really have an explanation for that, unless those times are wrong.

The same thing happens on windows and linux BTW.

Only up to a minute? Rounding?

The highest discrepancy I have seen so far is 55000 milliseconds (it’s all in milliseconds so it’s not a rounding issue).

OK here’s an example of a capture query that’s a bit odd.

The HTTP header returned from a capture query contained a Date field with “Wed, 26 Sep 2007 14:22:58 GMT”

According to my calculations (well Java’s calendar class anyway) that turns out to be (in seconds):

1190816578

In the file returned in the query, capture 18156 was included which had:

at=’1190816636′

So, the capture time was 58 seconds later than the query it was returned in.

It’s interesting that the 58 second discrepancy occurred at 58 seconds past the minute as far as the web server is concerned. It could be a coincidence. I’ll see if there’s a pattern.

The 58 seconds past the minute was a coincidence. At 14:47:43 I got a capture which was 60 seconds ahead of the query it was returned in, a new record :)

Finally, the HTTP date conversion to seconds checks out using a different source:

$ date –date “Wed, 26 Sep 2007 14:22:58 GMT” +%s
1190816578

So to sum up, capture times are often in the future as far as the web server is concerned, and the web server time appears correct, implying the capture times are not.

I now rest my case and await further developments :)

Nope. All of the servers are within 0.012 microseconds of 15 NTP servers I pointed them at ranging from Stratum 1 through 3. Windows provides notoriously unreliable time keeping.

Er? I usually set up a local time server and then pointed everything else at it. That way I have to really only worry about judder on the one host’s connections outbound. Also makes it simple if you decide to get fancy and go with a radio time tick receiver, and lock the heck out of the firewall too… only the one client requires a rule to go out, instead of all of them.

Could be a mySQL issue and how it creates a snapshot of the data that is being queried in the select statement.

How long does it take you to do the total request, From query request until the start of the return of data?

Is it only 1 capture and 1 capture only? It could be how the transactions are fed into the database. The next insert is created and held open until the data is fed in and committed.

This uncommitted record is grabbed by the snapshot and data fed into after the start of the query.

You have to keep in mind this is one of MySQL’s weakest points in handling transactional data.

It’s all conjecture, I know Oracle and Postgres do not have this issue. But I find bug listings for MySQL on this type of issue.

If we’re speculating, then maybe there’s a conversion going on to get seconds since the epoch which is returned in the XML file from some other native format, and there’s a bug in it.

It can’t take long to process the query server-side. The whole round trip time from client to server and back again is only a fraction of a second when requesting captures starting at a known recent capture id.

Er? I usually set up a local time server and then pointed everything else at it. That way I have to really only worry about judder on the one host’s connections outbound. Also makes it simple if you decide to get fancy and go with a radio time tick receiver, and lock the heck out of the firewall too… only the one client requires a rule to go out, instead of all of them.

And? I said:

All of the servers are within 0.012 microseconds of 15 NTP servers I pointed them at ranging from Stratum 1 through 3.

I don’t recall stating what our NTP configuration was, only its effect :)

I think something has gone a bit awry with the rdpoutput.xml query:

[B@11d0be7

It gobbled the tags as usual but take a look and you will see what I mean.

I’m very very glad by your contribution. Wiretap it’s a great resource for players community, awesome work!.

Thanks a lot mate.
S!, 1SC – Covifox and sorry lang :(

* I’m working on it right now… ^^

Seems you’ve broken the resources page on web3 mate.

Damn. I thought tomcat was stable.

Hi, Kfsone and thanks for your Wiretap -service.

Here’s one new: http://www.lagus.org/webmap/

Ok, I have a question (possibly stupid) about the coordinates in, for example, the deathmaps.
From the wiretap documentation:
“(x and y in meters from N0.0.0/E0.0.0)”

Ok this might be the stupid part: What map projection system should be used calculated the actual coordinates?

I’m trying to plot coordinates on google maps and need to calculate lat/long coordinates from N0.0.0+x meters / E0.0.0 + y meters…

I have completed a version showing the FB line and kill ratios on a webpage image. It also includes graphical movements history and a campaign viewer.

Fun stuff that wirefeed.. something to chew on for many hours to come :P

S!

GenXS

KFS1, could you possibly add a xml feed with the current campaign number and day in the campaign ? This would help enormously with the archiving me and others are doing. For example see the campaign viewer on http://wire.ww2intel.com. I would like to add the campaign day printed to the image but can’t find where to read it.

Second, any luck on the new image map ? Or is that delayed due to the new CPs coming on the map ?

And third, my tool keeps track of the amount of CP’s allied and axis. Is it correct that there are currently 597 victory related CPs on the map ?

Thanks in advance.

GenXS

S! Kfsone

I’d find it helpful if you’d add “from” and “to” for FBs to facility list:
http://web3.wwiionline.com/xmlquery/facilities.xml?fbs=open

where from would be the id of the cp the FB opens from and to the id of the cp the FB opens to.

Added config.xml which has as many database-held configuration values as I’m able to expose.

Zeta: You can get that information from links.xml or links.js.

http://web3.wwiionline.com/xml/links.xml
http://web3.wwiionline.com/js/links.js

I did, however, add a list of open FBs with ownerships:

http://web3.wwiionline.com/xml/openfbs.xml
http://web3.wwiionline.com/js/openfbs.js

Thanks, KFS1. I never noticed the FB-attribute in the links file. I was afraid I’d have to parse the info from FB names.

(btw, the problem with my server not opening some of the wiretap files dissapeared ‘by itself’ just like it started — I’m content to leave it to be ‘one of those things’ and not think about it anymore :)

??

http://wiretap.wwiionline.com/xmlquery/captures.xml?hours=2&limit=50

after some days spen to read the Xml data by php (no ajax, no js, with good final result, until the Xml response was right)…

http://ezio2000.netsons.org/BySquad.php

now the link don’t works more, because the SQUAD field is always and only set to 0…

why??

this resource don’t works frome some days…

http://wiretap.wwiionline.com/xmlquery/captures.xml

it displays always and only results from squad=0

why?

opps, sorry, only now I can see online the first post :-(

Revealing the squad affiliation was the single most source of complaints about WireTap so we decided to make the call to reveal it. Sorry :(

very sorry me too… and I really can’t understand why

someone feels embarrassed about his squad??

I have made another php

http://ezio2000.netsons.org/Captures.php

in wich I read NOT names but only the squad recurrence (how many captures by squad in the last ten days)

is not possible to have an XML like first but without names?

ty
ty

S! again KFS1

Would it be very easy to add cut-off / receiving supply -info for CPs? For example to cpstates.citys.xml .

We can of course figure if a CP is cut-off or not by ourselves, but I thought I ask you first before I start coding. :)

Thanks again,
Zeta

And another too :) : town/facility altitudes?

under http://wiretap.wwiionline.com/js/factorylog.1h.js, several axis factories have a ‘0’ rdp status which (if i understand it correctly) means that they don’t contribute to the current rdp cycle – is that intended or just a bug?

Pedro: Factories that are too damaged don’t produce RDP points, and neither to factories that are captured by the enemy.

Two things can cause a factory not to contribute:

. Enemy ownership,
. Destruction (“destroyed” visible state in-game)

In the case of the latter, they don’t start contributing again until they visually rebuild in-game: that makes a large scale raid on a single factory that destroys more effective than the same amount of ordnance spread across multiple factories without causing destruction.

I have a question regarding the deathmaps: Do they record all deaths (like a noob crashing his aircraft during takeoff) or only actual kills where a player kills another player?

Any idea when we might get this great service fully operational again?-)

S!

I need help with two things.

the first is how to read this unix_timestamp: at=”1238220430″ its been driving me nutz.

the second thing is im trying to create graphs like killban has on his site, there is nothing wrong with his and i think they are great but i want separate graphs for separate factories. after acouple days ive finally figured out how to convert the xml data into a form i need for the charts, but now i need to be able to separate the different factories from the factorylog.xml. i thought i could use the query function but i guess only the “limit” query works for this xml file.

how can i go about separating the factories?

thanks!

Erh, ‘at=”1238220430″‘ isn’t a Unix time, 1238220430 is a Unix time.

Nobody can answer your questions because you’ve said “I’m trying to do something and can’t”. Are you using Windows or Mac (Mac uses Unix times)? Are you using a programming language or doing this in notepad?

Link: Wikipedia definition of ‘Unix time’
Link: MSDN article on converting Unix Time to Windows time structures

Im using XP and am using a series of .vbs and .bat scripts

– .vbs to download the factorylog (for some reason it doesnt want to download the log when i put the URL with ?limit=135 at the end of it…)
– a .vbs that replaces all the fids to their factory names
– a .bat to seperate the different factoies
– a .vbs that changes the format so it shows correctly on the chart

im still having to figure out how to make the graphs show a specific period of time.

Well boys Ive done it! It can viewed here: http://snipets.myvnc.com/Factory_Graph/Factories.m+1h.html

There are 4 different versions of the page, the 1st being the page with Maps and 1 Hour Graphs, the 2nd With just 1 Hour Graphs, the 3rd with Maps and 1 Day Graphs, and the 4th with 1 Day Graphs.

Let me know what yall think

Thanks for putting out info on Wiretap KFS1!

Sweet, Snipe, but Chrome, Spyware S&D, Spybot and MalwareBytes all detect “snipets.myvnc.com” as a malware host (although this seems to be because of myvnc.com rather than snipets specifically). The only way I could view your site was to bring up a virtual machine and disable the browser security inside it :(

8O *runs off to scan meh server!*

the .myvnc.com is from http://www.no-ip.com/ so i dont have to remember my IP every time i want to access my site… thats weird ive viewed the site with that link from 3 different computers using IE7 and Firefox, and even two more US Army computers and none of them said anything.

use this http://121.131.141.235/Factory_Graph/Factories.m+1h.html

having a personal server/website is almost not worth the headache :P all learning i guess

Any news on when Wiretap will be operational again?

S!

ive got a question for ya. Bell0 has a good program out that show your last 5 kills and last 5 killers on a G15 keyboard LCD. and thats pulling the data from the main page of a player, so it only updates when you complete your mission.

well i had an idea of using the “enemies” tab to pull the data from as the enemies tab updates as soon as you die/kill some one. i think i know of a way of doing this but im having one problem. the enemies tab cannot be sorted by date, it only sorts by number of kills on that person.

now my question is: is there a way to sort the enemies list? so that the most recent kills would be at the top of the list

sry to post here but its the only place i knew of

p.s. meh wiretap graphs are still kickin :D

thanks

Is there data output for kills, RTB’s – typs of units killed for indivual plyer??

That’s CS&R which is Ramp’s bailiwick, and which I have arduously avoided having anything to do with :)

Config.xml still says campaign 57.

Currently we lack and up-to-date list of campaign winners. CSR has couple errors (and no truce outcome) and BattlegroundTools.com is not updating… This is not quite Wiretap material, but….

Cheers
Zeta

Openfbs.xml is showing all axis FBs to be open again. This happened after last restart too, so there is some kind of persisting little kink somewhere.

Leave a Reply

Name and email address are required. Your email address will not be published.

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

You may use these HTML tags and attributes:

<a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <pre> <q cite=""> <s> <strike> <strong> 

%d bloggers like this: