Closed GoogleCodeExporter closed 8 years ago
GHost++ already ends the game 60 seconds after the throne/tree is destroyed in
DotA.
It also ends the game 60 seconds after it detects that there is only one player
left
in the game.
Can you provide logs with evidence of the error? I also don't understand what
you
mean by: "Also, I have my configs set so that when there are less than 2
players left
in the game, the countdown timer will start". GHost++ does not have any such
configuration options. If you're using GHostOne I cannot provide any support
for you.
I'll leave this issue open for now but I won't start work on it until I see some
evidence that there's actually a problem.
Original comment by hogantp
on 9 Nov 2009 at 4:50
sometimes it doesnt end the game
1 player start to killing all others and getting a huge stats
Original comment by bazarov...@gmail.com
on 10 Nov 2009 at 12:51
I'll need some logs or a replay or (even better) both.
Original comment by hogantp
on 10 Nov 2009 at 1:06
http://localhostr.com/files/7a5dc1/replay.rar
Original comment by bazarov...@gmail.com
on 10 Nov 2009 at 1:29
hogantp:
I think they are highly confused and are misrepresenting their issues with the wrong
words. I just watched the replay. The game ended after the throne was killed as
it
should.
The other issue about padding stats after players leave exists and IMO should be
worked on but the throne is very much still standing at that point. I've seen
many of
my GHost++ games stay open for much longer than necessary because one player or
two
are still in the game killing people that have already left. I think this is the
issue they are talking about even though they mention after the throne being
destroyed.
I hope this clarifies. Their posts were way off base to the replay I watched.
Original comment by robertcl...@gmail.com
on 10 Nov 2009 at 4:00
lol man
when all left, countdown timer works too, i dont know real time, 1 or 2 minutes
but when same team left, game ends automatically
ghost doesnt disconnect them, but it doesnt collect any stats after that time
how it should be i mean
Original comment by bazarov...@gmail.com
on 10 Nov 2009 at 4:25
I see. The issue of DotA stats being recorded when they "shouldn't" be is a
complicated one. First you have to decide when you should stop recording stats,
then
you have to consider that GHost++ doesn't typically have access to enough
information
to accurately detect the appropriate conditions. For example, detecting that
all the
players on one team have left is impossible because of the existence of the -sp
and
-switch commands in DotA. GHost++ doesn't know the outcome of those commands and
therefore it doesn't know who's on which team. That said, it's possible for it
to
detect whether those commands have been used or not so it could be written to
work
when no shuffling or swapping takes place but I prefer to write solutions that
work
in all cases rather than just some.
It's also complicated by the fact that the statistics sent by DotA are typically
summary statistics (e.g. it doesn't send a message every time you get a creep
kill,
it just says "you got 94 creep kills" when you leave the game). Some very few
statistics such as hero kills are sent as they happen, but they're also sent as
a
summary at the end of the game. In addition to this, some summaries are sent
more
than once (e.g. creep kills are sent when you leave the game and also when the
tree/throne dies). Occasionally the summaries do not match for whatever reason,
so
it's difficult to decide which one is correct.
GHost++ only records the end of game summaries that are sent when the
tree/throne
dies and ignores the other messages, aside from printing some notices to the
server
console for information and entertainment purposes.
All of that said, I know that the DotA meta data format has changed at least
once
since the statsdota code was written and the parser has not necessarily been
updated
to follow every change. It's possible some of these issues have already been
solved
but that GHost++ doesn't know how to read the new data.
In summary, as the DotA map is currently written (that I'm aware), it would be
possible for GHost++ to attempt to determine when statistics gathering should
stop
but it wouldn't be a sure thing. In addition, even if it could make that
decision it
wouldn't necessarily be able to stop gathering statistics anyway since it would
be
forced to choose between one of two summaries, e.g. the number of creeps you had
killed when you left the game or when the tree/throne died. The ideal solution
is for
the DotA meta data format to be modified or rewritten with this in mind but
it's not
something that I have any desire to campaign for especially since it would
require
rewriting a fair amount of code in GHost++.
Original comment by hogantp
on 10 Nov 2009 at 4:40
ill do my best to have a replay where i can still play after throne was owned
or
admin used !end command
Original comment by bazarov...@gmail.com
on 10 Nov 2009 at 6:47
Actually, the issue I posted was about games not always automatically ending
(unhosting) after the throne is destroyed - absolutely nothing to do with
score. It's
my fault; I don't think I described the issue clear enough. The game "ends" in
the
sense that all players are frozen after the tree/throne is destroyed; you can't
fountain feed in this state because you can't control the hero. However, the
issue is
that the game timer continues because one or more players are still connected
to the
bot (e.g. they don't click "continue playing" or "quit game" buttons), so the
game
timer continues. This results in the game still being hosted by the bot (I can
type
".getgames" and it would still show the game), and stat tracking displaying
everyone
as leavers because the game timer runs for three hours when it ended at 50
minutes.
As you probably know by now, I am indeed talking about Ghost One and not
Ghost++. I
apologize for posting it in the wrong googlecode site. However, if this issue is
indeed in Ghost++, then it will carry over into Ghost One. But I do understand
that
if this issue is rooted in Ghost One, then it may not necessarily be in Ghost++
- at
which point again I apologize for wasting your time.
As for stat padding (fountain feeding), I did post a solution in the Ghost One
support forums. By looking at the source files, I did notice that the only true
scores that are recorded are the ones decomposed from the packets sent at game
end.
However, my compromise was to replace only the kills and deaths, as those are
the
main stats inflated by fountain feeding. Since Ghost recieves packets when a
player
dies, we can very well keep track of kills and deaths. We'd first have to
create a
kills, deaths, and hasLeft (not sure, but maybe we can use the "leaver message
sent"
boolean? If not, we can just create a new "hasLeft" boolean initialized to 0
and set
it to 1 when player gets kicked/disconnects/leaves) variable for the dota game
player
class. Then, we simply include a logic check to see if the victim has already
left
the game, and if so, do not increment the killer's kill count. And vice versa,
if the
killer has left (team is using the leaver), then do not increment his score
because
he was not controlling the hero. However, if the victim has not left the game,
his
death count will be incremented even though he was killed by a leaver because
he was
still under control of his hero.
This compromise will still pull assists, creep score, tower kills, courier
kills,
etc. from the final packet(s) at end game, but we will ignore the kills/deaths
from
the final packet(s) and instead store the variables that we manually maintained.
Original comment by liur...@gmail.com
on 10 Nov 2009 at 9:16
I'm not aware of a bug with the gameover timer in GHost++. If you can provide
me with
logs and/or a replay from a GHost++ bot rather than a GHost One bot I'll look
into it
but at this point I have to assume it's a problem with GHost One rather than
GHost++.
I'll close this issue for now.
Original comment by hogantp
on 11 Nov 2009 at 4:07
Original issue reported on code.google.com by
liur...@gmail.com
on 8 Oct 2009 at 7:13