You can subscribe to this list here.
| 2000 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(7) |
Nov
(167) |
Dec
(101) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2001 |
Jan
(178) |
Feb
(82) |
Mar
(111) |
Apr
(119) |
May
(126) |
Jun
(27) |
Jul
(140) |
Aug
(65) |
Sep
(120) |
Oct
(88) |
Nov
(50) |
Dec
(6) |
| 2002 |
Jan
(44) |
Feb
(82) |
Mar
(47) |
Apr
(121) |
May
(65) |
Jun
(72) |
Jul
(47) |
Aug
(160) |
Sep
(149) |
Oct
(21) |
Nov
|
Dec
(26) |
| 2003 |
Jan
(81) |
Feb
(108) |
Mar
(13) |
Apr
(16) |
May
(5) |
Jun
(31) |
Jul
(10) |
Aug
(14) |
Sep
(16) |
Oct
(4) |
Nov
(2) |
Dec
(17) |
| 2004 |
Jan
(64) |
Feb
(7) |
Mar
(3) |
Apr
(30) |
May
(22) |
Jun
|
Jul
(20) |
Aug
(15) |
Sep
(5) |
Oct
(9) |
Nov
|
Dec
(2) |
| 2005 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
(2) |
Jun
(2) |
Jul
|
Aug
(1) |
Sep
(1) |
Oct
|
Nov
(3) |
Dec
(3) |
| 2006 |
Jan
(8) |
Feb
(5) |
Mar
(8) |
Apr
(4) |
May
(7) |
Jun
(6) |
Jul
(10) |
Aug
(6) |
Sep
(8) |
Oct
(28) |
Nov
(43) |
Dec
(19) |
| 2007 |
Jan
(23) |
Feb
(25) |
Mar
(9) |
Apr
(57) |
May
(59) |
Jun
(90) |
Jul
(112) |
Aug
(54) |
Sep
(22) |
Oct
(13) |
Nov
(23) |
Dec
(18) |
| 2008 |
Jan
(15) |
Feb
(13) |
Mar
(47) |
Apr
(133) |
May
(83) |
Jun
(112) |
Jul
(138) |
Aug
(77) |
Sep
(114) |
Oct
(27) |
Nov
(33) |
Dec
(109) |
| 2009 |
Jan
(64) |
Feb
(31) |
Mar
(35) |
Apr
(46) |
May
(144) |
Jun
(124) |
Jul
(85) |
Aug
(105) |
Sep
(217) |
Oct
(188) |
Nov
(143) |
Dec
(157) |
| 2010 |
Jan
(68) |
Feb
(11) |
Mar
(73) |
Apr
(87) |
May
(146) |
Jun
(183) |
Jul
(133) |
Aug
(113) |
Sep
(63) |
Oct
(36) |
Nov
(44) |
Dec
(45) |
| 2011 |
Jan
(38) |
Feb
(27) |
Mar
(21) |
Apr
(32) |
May
(24) |
Jun
(28) |
Jul
(28) |
Aug
(36) |
Sep
(43) |
Oct
(31) |
Nov
(30) |
Dec
(16) |
| 2012 |
Jan
(31) |
Feb
(39) |
Mar
(57) |
Apr
(36) |
May
(17) |
Jun
(27) |
Jul
(22) |
Aug
(34) |
Sep
(30) |
Oct
(26) |
Nov
(12) |
Dec
(14) |
| 2013 |
Jan
(10) |
Feb
(3) |
Mar
(3) |
Apr
(15) |
May
(10) |
Jun
(15) |
Jul
(9) |
Aug
(11) |
Sep
(15) |
Oct
(23) |
Nov
(29) |
Dec
(19) |
| 2014 |
Jan
(6) |
Feb
(11) |
Mar
(28) |
Apr
(16) |
May
(14) |
Jun
(31) |
Jul
(23) |
Aug
(19) |
Sep
(9) |
Oct
(6) |
Nov
(6) |
Dec
(4) |
| 2015 |
Jan
(78) |
Feb
(6) |
Mar
(1) |
Apr
(3) |
May
(1) |
Jun
|
Jul
|
Aug
(2) |
Sep
|
Oct
(1) |
Nov
|
Dec
|
| 2016 |
Jan
|
Feb
|
Mar
(5) |
Apr
(2) |
May
|
Jun
|
Jul
(1) |
Aug
(2) |
Sep
(1) |
Oct
|
Nov
(1) |
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
1
(1) |
2
|
3
|
|
4
|
5
(10) |
6
(2) |
7
(3) |
8
(4) |
9
|
10
|
|
11
|
12
|
13
|
14
|
15
|
16
|
17
|
|
18
|
19
|
20
|
21
|
22
|
23
|
24
|
|
25
|
26
|
27
|
28
|
29
|
30
|
31
|
|
From: Marcus A. <maa...@ab...> - 2004-07-08 12:06:16
|
On Thu, 8 Jul 2004, Mike Earl wrote: > Let's say A,B,C are on one side and N,M,O on another. > > If we determine that A sees N, do we need to check B & C? (I think > not?) It might even make sense (esp. on large maps with many units) to > evaluate distances to all enemy units first, sort them, and check to see > if we're seen by the closest ones first. I don't think A seeing N means that B and C automatically see A. It's a good idea, but automatic visibility propagation isn't very realistic, IMHO. > The A->N LoS will share most of the calculation (the expensive part?) > with N->A; you may want to do them at the same time. Sounds good! |
|
From: Mike E. <m....@co...> - 2004-07-08 11:49:53
|
On Thu, 2004-07-08 at 03:21, Jan Ekholm wrote: > Well, this is my grand vision of how the LOS should work. It's obviously > flawed in several serious ways, so please let me know where the major > faults are, or just silently fix my goofs in CVS after I commit the stuff. No, sounds good. I can suggest a couple of (obvious?) optimizations that may win if N,M get big: > 1. all own units are always visible. > > 2. the server does all the calculations and sends out SetVisibility > actions when visibility for a unit changes. > > 3. the server iterates over all N*M units and checks LOS between each pair > of units. The general LOS value that the check gives is modified depending > on the units. For example if A is hidden and B moves on an open field > nearby there is a clear LOS from A->B and B->A. However, A being hidden > means that A sees B but not the reverse. These calculations are left out > for now. Let's say A,B,C are on one side and N,M,O on another. If we determine that A sees N, do we need to check B & C? (I think not?) It might even make sense (esp. on large maps with many units) to evaluate distances to all enemy units first, sort them, and check to see if we're seen by the closest ones first. The A->N LoS will share most of the calculation (the expensive part?) with N->A; you may want to do them at the same time. With any luck you end up with a lot less than N*M/2. > The actual implementation is fairly simple, but in order to not send out > stupid amounts of data some care has to be taken. The server needs to > store the visibility the unit had during the last LOS update (the unit's > internal visibility flag) and a set of new visibility flags for the LOS > update. All units start as not visible at first. Each unit that an > enemy unit sees is marked as visible in the new set of flags. A unit that > is not seen triggers no update. In the end one compares the new set of > flags to the units' last visibility, and if they differ then a > SetVisibility is sent out with the new visibility status. After this the > new flag set is stored in the units' internal visibility flags. Yes, sounds good. My only suggestion (as above) is to consider doing A->N and N->A at same time, and not to bother looking further at LoS to a unit once you know he's visible. - mikee |
|
From: Marcus A. <maa...@ab...> - 2004-07-08 08:23:30
|
On Thu, 8 Jul 2004, Jan Ekholm wrote: > > Hm, quite simple, so it must be broken somehow? No, I think this is exactly how it was with the old action system. /M |
|
From: Jan E. <ch...@in...> - 2004-07-08 07:21:19
|
Well, this is my grand vision of how the LOS should work. It's obviously
flawed in several serious ways, so please let me know where the major
faults are, or just silently fix my goofs in CVS after I commit the stuff.
1. all own units are always visible.
2. the server does all the calculations and sends out SetVisibility
actions when visibility for a unit changes.
3. the server iterates over all N*M units and checks LOS between each pair
of units. The general LOS value that the check gives is modified depending
on the units. For example if A is hidden and B moves on an open field
nearby there is a clear LOS from A->B and B->A. However, A being hidden
means that A sees B but not the reverse. These calculations are left out
for now.
The actual implementation is fairly simple, but in order to not send out
stupid amounts of data some care has to be taken. The server needs to
store the visibility the unit had during the last LOS update (the unit's
internal visibility flag) and a set of new visibility flags for the LOS
update. All units start as not visible at first. Each unit that an
enemy unit sees is marked as visible in the new set of flags. A unit that
is not seen triggers no update. In the end one compares the new set of
flags to the units' last visibility, and if they differ then a
SetVisibility is sent out with the new visibility status. After this the
new flag set is stored in the units' internal visibility flags.
Hm, quite simple, so it must be broken somehow?
--
"Right, you bastards, you're... you're geography"
-- Terry Pratchett, Guards! Guards!
|
|
From: Jan E. <ch...@in...> - 2004-07-07 10:28:35
|
On Wed, 7 Jul 2004, Marcus Alanen wrote:
>On Wed, 7 Jul 2004, Jan Ekholm wrote:
>
>> You are probably right. So be it then. I'll add a small module for that
>> purpose. Any ideas for how to avoid doing N*N LOS checks (each unit with
>> each unit)? Ok, actually all friendlies against all enemies, so basically
>> N*(N/2) comparisons.
>
>No, but we could start by just trying the N*N/2 comparisons and see if
>it is good enough.
Ok, it doesn't have to be done every second either. Maybe once every 4s
player time (once every 30s simulation time)? Or something like that.
>How have we decided previously: if A sees Z, does Z always see A? I'd
>myself wouldn't want this, it'd enable A to hide in the forest close
>to a field, wait for Z to come close and then start shooting. Then Z
>would also immediately see A due to A shooting at Z. Sound ok?
Yes, LOS has to be asymmetric. A hiding small unit can see a lot of other
units that can't see it. So A seing B doesn't imply that B sees A. Firing
on a unit would reveal the attacker immediately to the target.
--
"You can't trample infidels when you're a tortoise. I mean, all you could
do is give them a meaningful look."
-- Terry Pratchett, Small Gods
|
|
From: Marcus A. <maa...@ab...> - 2004-07-07 10:11:44
|
On Wed, 7 Jul 2004, Jan Ekholm wrote: > You are probably right. So be it then. I'll add a small module for that > purpose. Any ideas for how to avoid doing N*N LOS checks (each unit with > each unit)? Ok, actually all friendlies against all enemies, so basically > N*(N/2) comparisons. No, but we could start by just trying the N*N/2 comparisons and see if it is good enough. How have we decided previously: if A sees Z, does Z always see A? I'd myself wouldn't want this, it'd enable A to hide in the forest close to a field, wait for Z to come close and then start shooting. Then Z would also immediately see A due to A shooting at Z. Sound ok? |
|
From: Jan E. <ch...@in...> - 2004-07-07 08:52:53
|
On Tue, 6 Jul 2004, Marcus Alanen wrote:
>On Tue, 6 Jul 2004, Jan Ekholm wrote:
>
>> The LOS outline may be off by default nowadays. As for the normal who sees
>> who stuff, there is still some thinking to do. Should the clients
>> themselves evaluate who they see, or is it up to the server to tell the
>> clients what that client's units see right now? The latter is better, but
>> requires more bandwidth. Not that there actually would be that many
>> changes per second, I think.
>
>I'd say server. I don't think the bandwidth bill will be too high. It
>could just send the changes in sight, not complete sight information.
>Actually I think we already send the same stuff many
>times with ChangeModifiersAct.
You are probably right. So be it then. I'll add a small module for that
purpose. Any ideas for how to avoid doing N*N LOS checks (each unit with
each unit)? Ok, actually all friendlies against all enemies, so basically
N*(N/2) comparisons.
>> But that map already knows about the terrain, it's basically just a
>> different "cost" for each terrain type. Water has no cost at all while
>> woods have a big cost.
>
>Yes, this is what I meant.
>
>/M
>
--
There were no public health laws in Ankh-Morpork. It would be like
installing smoke detectors in Hell.
-- Terry Pratchett, Feet of Clay
|
|
From: Marcus A. <maa...@ab...> - 2004-07-06 13:32:02
|
On Tue, 6 Jul 2004, Jan Ekholm wrote: > The LOS outline may be off by default nowadays. As for the normal who sees > who stuff, there is still some thinking to do. Should the clients > themselves evaluate who they see, or is it up to the server to tell the > clients what that client's units see right now? The latter is better, but > requires more bandwidth. Not that there actually would be that many > changes per second, I think. I'd say server. I don't think the bandwidth bill will be too high. It could just send the changes in sight, not complete sight information. Actually I think we already send the same stuff many times with ChangeModifiersAct. > But that map already knows about the terrain, it's basically just a > different "cost" for each terrain type. Water has no cost at all while > woods have a big cost. Yes, this is what I meant. /M |
|
From: Jan E. <ch...@in...> - 2004-07-06 13:28:13
|
On Tue, 6 Jul 2004, Marcus Alanen wrote:
>>>- broken LOS
>> In what way? Units that aren't seing each other is something I've also
>
>It doesn't show the LOS outline, and the nobody seems to tell the units
>that they see new enemies, I think. This was the work of old/change_los.py.
The LOS outline may be off by default nowadays. As for the normal who sees
who stuff, there is still some thinking to do. Should the clients
themselves evaluate who they see, or is it up to the server to tell the
clients what that client's units see right now? The latter is better, but
requires more bandwidth. Not that there actually would be that many
changes per second, I think.
>> noticed. What does the LOS outline show, or is it broken? Btw, I think
>> we'll not allow the players to use the LOS outline at all, it just doesn't
>> seem useful. Something that could be used instead is to let the user check
>> LOS to given positions on the map, or just trace LOS from a unit to the
>> current cursor position.
>
>Hm, dunno, perhaps not overly realistic with so complete information.
>But, let's just fix it first.
Oh, no, are you getting realistic when there is good brainstorming and
vague ideas being thrown out?
>>>- shortest-path is quite broken, unfortunately.
>> You mean the pathfinding? I think it should be altered to try to use the
>> same image map as the LOS uses.
>
>This would assume LOS values are equal to path cost values, so I don't
>think it can use exactly the same (think lakes: good LOS, bad path
>cost), but perhaps a similar image map.
But that map already knows about the terrain, it's basically just a
different "cost" for each terrain type. Water has no cost at all while
woods have a big cost.
--
"Bingeley bingeley beep!"
-- The Personal Disorganizer, Terry Pratchett in Feet of Clay
|
|
From: Marcus A. <maa...@ra...> - 2004-07-05 22:25:59
|
>>- broken LOS > In what way? Units that aren't seing each other is something I've also It doesn't show the LOS outline, and the nobody seems to tell the units that they see new enemies, I think. This was the work of old/change_los.py. > noticed. What does the LOS outline show, or is it broken? Btw, I think > we'll not allow the players to use the LOS outline at all, it just doesn't > seem useful. Something that could be used instead is to let the user check > LOS to given positions on the map, or just trace LOS from a unit to the > current cursor position. Hm, dunno, perhaps not overly realistic with so complete information. But, let's just fix it first. >>- shortest-path is quite broken, unfortunately. > You mean the pathfinding? I think it should be altered to try to use the > same image map as the LOS uses. This would assume LOS values are equal to path cost values, so I don't think it can use exactly the same (think lakes: good LOS, bad path cost), but perhaps a similar image map. |
|
From: Jan E. <ch...@in...> - 2004-07-05 20:45:05
|
On Mon, 5 Jul 2004, Marcus Alanen wrote:
>Jan Ekholm wrote:
>> On Mon, 5 Jul 2004, Marcus Alanen wrote:
>>
>>
>>>Hm. I haven't looked too much into it, but we only do
>>>"del scenario.info.units[self.id]" in units.py.
>>>
>>>An easy solution would be to just iterate using .values(), which
>>>creates a new temporary list. Then check if the unit is really dead,
>>>if it isn't, continue with its plans. ?
>> Didn't know that .itervalues() disallowed changing the collection. Hm,
>
>I guess it's there to make stuff safer to use. Makes some algorithms a
>bit more awkward, though.
>
>> I think it should be justok to use .values(), as the unit isn't really
>> used after that anymore, it gets removed from scenario.info.units and
>> shouldn't be referenced anymore.
>
>I tried it out, and it seems to have worked fine. Units die and nothing
>crashes.
Good.
>Bugs so far:
>- broken LOS
In what way? Units that aren't seing each other is something I've also
noticed. What does the LOS outline show, or is it broken? Btw, I think
we'll not allow the players to use the LOS outline at all, it just doesn't
seem useful. Something that could be used instead is to let the user check
LOS to given positions on the map, or just trace LOS from a unit to the
current cursor position.
>- shortest-path is quite broken, unfortunately.
>- ?
You mean the pathfinding? I think it should be altered to try to use the
same image map as the LOS uses.
>Oh, by the way. It'll be fun trying to make the game playable, because
>the current going rate for one's army seems to be "slaughter". :-)
No, no, your tactics suck. ;)
--
You've got a lot of time for abstract thought when you've got your hand
stuck up a dead badger.
-- Terry Pratchett, Johnny and the Bomb
|
|
From: Marcus A. <maa...@ra...> - 2004-07-05 19:26:49
|
Jan Ekholm wrote: > On Mon, 5 Jul 2004, Marcus Alanen wrote: > > >>Hm. I haven't looked too much into it, but we only do >>"del scenario.info.units[self.id]" in units.py. >> >>An easy solution would be to just iterate using .values(), which >>creates a new temporary list. Then check if the unit is really dead, >>if it isn't, continue with its plans. ? > Didn't know that .itervalues() disallowed changing the collection. Hm, I guess it's there to make stuff safer to use. Makes some algorithms a bit more awkward, though. > I think it should be justok to use .values(), as the unit isn't really > used after that anymore, it gets removed from scenario.info.units and > shouldn't be referenced anymore. I tried it out, and it seems to have worked fine. Units die and nothing crashes. Bugs so far: - broken LOS - shortest-path is quite broken, unfortunately. - ? Oh, by the way. It'll be fun trying to make the game playable, because the current going rate for one's army seems to be "slaughter". :-) |
|
From: Marcus A. <maa...@ra...> - 2004-07-05 19:23:42
|
Jan Ekholm wrote: >>Some *.py files use non-ascii characters, which emits a warning in >>python2.3 if no character encoding is declared. I'll fix them as well. > Yeah, I've fixed a few of those as well, but some of them I can't seem to > find. For some file I had to remove all whitespace on a line and reinsert > it before the warning disappeared. I have no idea what triggers it... If Hm, I think I had some old checkout, since now they are gone. Anyway, they were no-break space characters. In ISO-8859-1, octal 240. I guess some editor has put them there when hitting shift-space or some other combination. /Marcus |
|
From: Jan E. <ch...@in...> - 2004-07-05 19:15:14
|
On Mon, 5 Jul 2004, Marcus Alanen wrote:
>Hm. I haven't looked too much into it, but we only do
>"del scenario.info.units[self.id]" in units.py.
>
>An easy solution would be to just iterate using .values(), which
>creates a new temporary list. Then check if the unit is really dead,
>if it isn't, continue with its plans. ?
Didn't know that .itervalues() disallowed changing the collection. Hm,
there *may* be some other similar buglets in there.
I think it should be justok to use .values(), as the unit isn't really
used after that anymore, it gets removed from scenario.info.units and
shouldn't be referenced anymore.
--
You've got a lot of time for abstract thought when you've got your hand
stuck up a dead badger.
-- Terry Pratchett, Johnny and the Bomb
|
|
From: Marcus A. <maa...@ab...> - 2004-07-05 16:04:26
|
Hm. I haven't looked too much into it, but we only do
"del scenario.info.units[self.id]" in units.py.
An easy solution would be to just iterate using .values(), which
creates a new temporary list. Then check if the unit is really dead,
if it isn't, continue with its plans. ?
server: oops, something went wrong. Dumping brain contents:
---------------------------------------------------------------------------
Traceback (most recent call last):
File "./civil-server.py", line 262, in ?
Unit.applyDamage: id: 57, 4 killed, 0 left
Unit.applyDamage: unit 57 is destroyed
Unit.applyDamage: 66 ok, 1 destroyed
Unit.applyDamage: 57: Headquarter Aspen Cavalry HQ destroyed
main ()
File "./civil-server.py", line 253, in main
server.globals.engine.mainLoop ()
File "/export/nobackup/maalanen/civil/src/server/engine/engine.py",
line 106, in mainLoop
self.__update ()
File "/export/nobackup/maalanen/civil/src/server/engine/engine.py",
line 152, in __update
for unit in scenario.info.units.itervalues ():
RuntimeError: dictionary changed size during iteration
|
|
From: Marcus A. <maa...@ab...> - 2004-07-05 15:18:44
|
>>> You can get inspiration from mdk package if you want: >>> http://cvs.mandrakesoft.com/cgi-bin/cvsweb.cgi/contrib-SPECS/civil/ Guillaume, I tried again and things seem to be ok now. Thanks for the link though, I see you have some good fixes there as well. I've just added a build-dependency on python2.3 because that's what my work computer has, but apparently this can be fixed much smoother. > Yeah, there isn't one yet. I never got as far as doing it, I still have a > few minor things I'd like to do for 0.83. I got caught up with a shovel > trying to get the Baghdad-like landscape on our garden to resemble the > Gardens of Eden. Not there yet... :) OK, no need to rush for me, you seem to be the only active one anyway. Some *.py files use non-ascii characters, which emits a warning in python2.3 if no character encoding is declared. I'll fix them as well. /M |
|
From: Jan E. <ch...@in...> - 2004-07-05 13:40:36
|
On Sun, 4 Jul 2004, Marcus Alanen wrote: >Guillaume Rousse wrote: >> Marcus Alanen wrote: >> >>> Hi, I've been trying to make the RPM packages for civil. I have some >>> problems with getting ccivil.so copied into the install (probably >>> rusty rpm skills...), but I'll see what I can do in the next day(s) or >>> so. >> >> You can get inspiration from mdk package if you want: >> http://cvs.mandrakesoft.com/cgi-bin/cvsweb.cgi/contrib-SPECS/civil/ >> >> I'm just waiting for official 0.83 release to update it. > >Chakie, > >I've finally done something for this, so I am able to build the RPM >packages on a Fedora Core 2 at work. > >However, there doesn't seem to be any 0.83 in CVS? All I see is >CIVIL-0_82-3. Yeah, there isn't one yet. I never got as far as doing it, I still have a few minor things I'd like to do for 0.83. I got caught up with a shovel trying to get the Baghdad-like landscape on our garden to resemble the Gardens of Eden. Not there yet... :) I'll do it this week. -- Shadwell hated all southerners and, by inference, was standing at the North Pole. -- Terry Pratchett & Neil Gaiman, Good Omens |
|
From: Marcus A. <maa...@ra...> - 2004-07-05 07:08:05
|
Guillaume Rousse wrote: > Marcus Alanen wrote: > >> Hi, I've been trying to make the RPM packages for civil. I have some >> problems with getting ccivil.so copied into the install (probably >> rusty rpm skills...), but I'll see what I can do in the next day(s) or >> so. > > You can get inspiration from mdk package if you want: > http://cvs.mandrakesoft.com/cgi-bin/cvsweb.cgi/contrib-SPECS/civil/ > > I'm just waiting for official 0.83 release to update it. Chakie, I've finally done something for this, so I am able to build the RPM packages on a Fedora Core 2 at work. However, there doesn't seem to be any 0.83 in CVS? All I see is CIVIL-0_82-3. /Marcus |
|
From: Guillaume R. <ro...@cc...> - 2004-07-01 20:21:27
|
Marcus Alanen wrote: > Hi, I've been trying to make the RPM packages for civil. I have some > problems with getting ccivil.so copied into the install (probably > rusty rpm skills...), but I'll see what I can do in the next day(s) or > so. You can get inspiration from mdk package if you want: http://cvs.mandrakesoft.com/cgi-bin/cvsweb.cgi/contrib-SPECS/civil/ I'm just waiting for official 0.83 release to update it. |