Jump to content

Photo

AAV - atrox Arena Viewer (Addon)


  • Please log in to reply
116 replies to this topic

#41 Pharaun

Pharaun
  • LocationSeattle, WA

Posted 28 April 2010 - 08:39 PM

If friendslist is too hard can make it to broadcast to a specific channel maybe? Also a chat feature would rock.


Looking through the code, it seems like the author is broadcasting using AceComm-3.0, which is a wrapper for SendAddonMessage.

Right now, the only valid recipients for SendAddonMessage are "PARTY", "RAID", "GUILD", "BATTLEGROUND", and "WHISPER".

Special channels and friendlist is not supported. Additionally, it's entirely possible that streaming via WHISPER to too many people would cause bandwidth problems (you only get 800B/s (AS IN BYTE, 800 BYTES, not KB!) before Wow kills your client).

That said, if I was the author I'd build in a way for you to transmit data to a list of people, one after another.
  • 0
"Who, after all, is today speaking of the destruction of the Armenians?"

-Adolf Hitler, 1939

#42 Shadowed

Shadowed
  • Members
  • Taurenclass_name
  • US-Mal'Ganis
  • Stormstrike
  • Posts: 266
  • Talents:

Posted 28 April 2010 - 09:45 PM

Looking through the code, it seems like the author is broadcasting using AceComm-3.0, which is a wrapper for SendAddonMessage.

Right now, the only valid recipients for SendAddonMessage are "PARTY", "RAID", "GUILD", "BATTLEGROUND", and "WHISPER".

Special channels and friendlist is not supported. Additionally, it's entirely possible that streaming via WHISPER to too many people would cause bandwidth problems (you only get 800B/s (AS IN BYTE, 800 BYTES, not KB!) before Wow kills your client).

That said, if I was the author I'd build in a way for you to transmit data to a list of people, one after another.


It would depend on how he's doing it, but bandwidth concerns aren't really an issue. AceComm-3.0 handles throttling so you can toss as much data as you want at it, it just might take a little longer. You aren't actually recording that much data (depending on match length!) from what I've seen of the addon, and you could probably compress it pretty well too.
  • 0

#43 Zwacky

Zwacky
  • GW2 Team
  • Humanclass_name
  • EU-Frostwolf
  • Blutdurst
  • Posts: 44
  • Talents: Holy

Posted 28 April 2010 - 11:55 PM

Concerning the broadcast to friendlist issue:
AceComm-3.0 does handle the communication data pretty well, that your data peaks will be flattened over a certain time frame, yes. A basic 2v2 match takes about ~120bytes/s, therefore a 3v3 match is somewhere around the 200ish.

If you'd send to more than three channels (or whisper targets) then you would exceed the max sending bandwith which will result in delaying the whole match.
It becomes pretty ugly, if the delay holds on till the next game is already in progress...

I was thinking about a kind of repeater, which could forward the received data in the own guild spectrum to someone in another guild's (via whisper).
  • -1

#44 Pharaun

Pharaun
  • LocationSeattle, WA

Posted 29 April 2010 - 12:09 AM

Ah maybe I'm confusing the functionality of the addon. Is it live streaming? Or just recording after the fact? I didn't look that far into it.

My point was that if you try to stream at the same time to an order of magnitude (or two) more people, you'd quickly hit the limit.

Edit: if it's already at 100~200B/s, then... yea.
  • 0
"Who, after all, is today speaking of the destruction of the Armenians?"

-Adolf Hitler, 1939

#45 Zwacky

Zwacky
  • GW2 Team
  • Humanclass_name
  • EU-Frostwolf
  • Blutdurst
  • Posts: 44
  • Talents: Holy

Posted 29 April 2010 - 12:23 AM

My point was that if you try to stream at the same time to an order of magnitude (or two) more people, you'd quickly hit the limit.

Edit: if it's already at 100~200B/s, then... yea.


Yes, i understand what you meant, but unfortunately the amount of data limits it. the message is already chopped down to its minimum, so an event message (spell casting) would look like: 14,3,20184,2 - event type, target, spell, additional info (some event types have more add. info like target, etc.)

But as others suggested, there should be another way to broadcast over the guild frontier in a easy way.
  • 0

#46 Pharaun

Pharaun
  • LocationSeattle, WA

Posted 29 April 2010 - 12:32 AM

Are you using the ace lib serialize function? You might be able to reduce some overhead there, but it wouldn't solve the problem.

I don't know your addon well enough, but can you just transmit log histories? Would it be necessary to stream it live? If you added a timestamp, perhaps with millisecond accuracy, you could stream after the fact, right? Just send all the data as like a "match" object, and insert that into a list of "match" objects that a user can play back.
  • 0
"Who, after all, is today speaking of the destruction of the Armenians?"

-Adolf Hitler, 1939

#47 Zwacky

Zwacky
  • GW2 Team
  • Humanclass_name
  • EU-Frostwolf
  • Blutdurst
  • Posts: 44
  • Talents: Holy

Posted 29 April 2010 - 12:51 AM

Are you using the ace lib serialize function? You might be able to reduce some overhead there, but it wouldn't solve the problem.

I serialize only data that don't occur a lot like broadcasting started or match ended. The arena messages are stored and sent together every 0.1 seconds as one sending (unserialized), if there is something in the queue.
I could index the most used spellids, but this wouldn't reduce the overall data size that much. timestamps are excluded in broadcasts.

when you choose to broadcast, the match information gets saved to the match object (for standard local recording) and additionally sent to the addon channel. therefore everyone who listens to the specific sender, will display the received messages immediately on their player.
  • 0

#48 Shadowed

Shadowed
  • Members
  • Taurenclass_name
  • US-Mal'Ganis
  • Stormstrike
  • Posts: 266
  • Talents:

Posted 29 April 2010 - 01:28 AM

I serialize only data that don't occur a lot like broadcasting started or match ended. The arena messages are stored and sent together every 0.1 seconds as one sending (unserialized), if there is something in the queue.
I could index the most used spellids, but this wouldn't reduce the overall data size that much. timestamps are excluded in broadcasts.

when you choose to broadcast, the match information gets saved to the match object (for standard local recording) and additionally sent to the addon channel. therefore everyone who listens to the specific sender, will display the received messages immediately on their player.


Oh hi, you're the author.

If you really wanted to be fancy, you could setup some additional complexity where when you enter an arena match all the people using the addon do negotiations so you can distribute the comms. For example, on 3vs3, if 2 of the 3 players have the addon, you could have each player send their own comms, and do additional checks to figure out who gets to send the 3rd players data.

The main downside to a system like this, besides the complexity is the fact that disconnects can mess it up, and renegotiation once you figure out someone disconnected is a bit awkward. Since, if someone disconnects you probably lost or the match was already decided, it's not a huge issue. If you want something like that, I can give you more details on how you would implement it.

Streaming to multiple people who aren't in the same guild/group/whatever, would require sending data into a custom chat channel. You can't really get around that if you want live streaming, a relay setup is going to be far more of a pain than just letting people set a custom data channel and syncing them all to join it.

I would have to look into the data scheme more to give something more specialized but, sending messages every 0.1 seconds is overkill. Given you already have to factor in latency between the players you're already looking at least 100ms before other people see the data sent. Grouping it every 0.5-1 second would give you roughly the same results.

Some code notes:

Tables work well for cleaning up code where you have multiple cases, for example your CHAT_MSG_BG_SYSTEM_NEUTRAL function can be turned into: https://gist.github....f72dd066ae82f4a

Memory is not a profiling metric. The memory count you're referencing in the description, as are 99% of people talking about is static memory, what you want to watch out for is garbage memory which is when you create a lot of tables and quickly dereference them. Even then, garbage memory isn't killer, unless you are doing something very wrong.

You don't need to define your own string split, WoW already has one, string.split. It's also more efficient since you won't be creating a table every time you call it.

An example of where you can avoid creating garbage memory is your comm code. It's unnecessary to serialize everything, you can use a string.split to get the arguments out of most comm code. Serialization is more useful for sending complex tables, but simple things like a version check should just be done with a string that is parsed out.

Variablessss, don't use single letter names. M and T are bad variable names for example.

There's a few more, but need to go back to work, I'll look tomorrow.
  • 0

#49 Pharaun

Pharaun
  • LocationSeattle, WA

Posted 29 April 2010 - 01:36 AM

when you choose to broadcast, the match information gets saved to the match object (for standard local recording) and additionally sent to the addon channel. therefore everyone who listens to the specific sender, will display the received messages immediately on their player.


Can that match info get accurate timestamps, for reconstruction after the fact? Or could it? :D
  • 0
"Who, after all, is today speaking of the destruction of the Armenians?"

-Adolf Hitler, 1939

#50 Indirect

Indirect
  • Members
  • Blood Elfclass_name
  • US-Arthas
  • Ruin
  • Posts: 6
  • Talents: Protection

Posted 29 April 2010 - 04:13 AM

posting so i can dl in the morning
  • 0
derp derp :paladin::deathknight::warrior:

#51 Viperrx

Viperrx
  • Members
  • Draeneiclass_name
  • US-Lightninghoof
  • Shadowburn
  • Posts: 1
  • Talents:

Posted 29 April 2010 - 06:56 AM

Looks really cool, will have to check it out tommorrow.
  • 0

#52 Zwacky

Zwacky
  • GW2 Team
  • Humanclass_name
  • EU-Frostwolf
  • Blutdurst
  • Posts: 44
  • Talents: Holy

Posted 29 April 2010 - 09:37 AM

thanks for your reply, I won't go into every statement you made, but am thankful for your review.

You don't need to define your own string split, WoW already has one, string.split. It's also more efficient since you won't be creating a table every time you call it.

Oh dear, I've already been wondering, why there is no such in built function in Lua -> strsplit.

An example of where you can avoid creating garbage memory is your comm code. It's unnecessary to serialize everything, you can use a string.split to get the arguments out of most comm code. Serialization is more useful for sending complex tables, but simple things like a version check should just be done with a string that is parsed out.

You're right, version checks aren't really complex. but those events don't happen a lot (version check happen once on login for instance). Having to send an oponnent entity durin a match is rather more complex and to be honest and they possibly could be parsed out. I was lazy enough to not parse it on my own instead using serialization, that fulfilled the current requirement at that time then perfectly :P

I'll definately look into the Chat Channels and try to build a new way of communication!

Can that match info get accurate timestamps, for reconstruction after the fact? Or could it?

Yes, it's saved in an elapsed time format like 12.07s. So you would be able to send a bulk of data and go through them.

Thank you for your suggestions, I really appreciate it =) I'll keep you updated!
  • 1

#53 Zeíken1296684868

Zeíken1296684868
  • Members
  • Undeadclass_name
  • EU-Tarren Mill
  • Misery
  • Posts: 161
  • Talents: Discipline

Posted 01 May 2010 - 01:34 PM

Working fine but it would be alot better addon with ability to broadcast people outside of your guild
  • 0

#54 cyrfer

cyrfer
  • Junkies
  • Humanclass_name
  • EU-Aegwynn
  • Blutdurst
  • Posts: 2,737
  • Talents: Arms
  • RBG: 576

Posted 01 May 2010 - 11:17 PM

i don´t know if it has been mentioned, but it does not show mmr and rating for me.
using latest version.
  • 0

I have never trolled in my life.


#55 Zwacky

Zwacky
  • GW2 Team
  • Humanclass_name
  • EU-Frostwolf
  • Blutdurst
  • Posts: 44
  • Talents: Holy

Posted 02 May 2010 - 01:36 AM

i don´t know if it has been mentioned, but it does not show mmr and rating for me.
using latest version.


mmr is only tracked, if it fulfills the following requirements:
  • rated match
  • waiting until score board pops up

Working fine but it would be alot better addon with ability to broadcast people outside of your guild

I'm currently testing and optimizing the possibility to broadcast to chat channels instead of the addon channel, which makes broadcasting and viewing accessible to everyone on the server. Kinda huge refactoring, so it'll take some days :\
  • 0

#56 cyrfer

cyrfer
  • Junkies
  • Humanclass_name
  • EU-Aegwynn
  • Blutdurst
  • Posts: 2,737
  • Talents: Arms
  • RBG: 576

Posted 02 May 2010 - 09:41 AM

mmr is only tracked, if it fulfills the following requirements:
rated match
waiting until score board pops up


doing this for every game last night and i couldn´t find a single game where it has been tracked.

working for everybody else fine?
  • 0

I have never trolled in my life.


#57 Aeowin

Aeowin
  • Junkies
  • Humanclass_name
  • US-Bleeding Hollow
  • Ruin
  • Posts: 136
  • Talents: Shadow 1/2/0/1/1/1
  • RBG: 576

Posted 02 May 2010 - 09:42 AM

Very cool addon
  • 0

#58 Eskepeto

Eskepeto
  • Eskepeto
  • Orcclass_name
  • EU-Sanguino
  • Cruelty / Crueldad
  • Posts: 225
  • Talents: Elemental

Posted 02 May 2010 - 02:26 PM

best addon
  • 0

#59 Ninian

Ninian
  • Members
  • Undeadclass_name
  • EU-Dunemaul
  • Cataclysme / Cataclysm
  • Posts: 103
  • Talents: Marksmanship

Posted 02 May 2010 - 02:39 PM

Awesome. I immediately made a post on our guild forums about this:)
  • 0

#60 Svenn

Svenn
  • Junkies
  • Undeadclass_name
  • EU-Balnazzar
  • Raserei / Frenzy
  • Posts: 179
  • Talents: Frost

Posted 03 May 2010 - 03:29 PM

1.1.5 soon?!
  • 0
Posted Image

Warcraftmovies:
Zvenn 1
Zvenn 2




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

<