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
(3) |
2
(2) |
3
|
|
4
|
5
(1) |
6
|
7
|
8
|
9
|
10
|
|
11
|
12
(2) |
13
(4) |
14
(1) |
15
(4) |
16
(1) |
17
|
|
18
|
19
|
20
(4) |
21
|
22
|
23
(2) |
24
(2) |
|
25
(2) |
26
(2) |
27
|
28
|
29
|
30
|
|
|
From: Jan E. <ch...@in...> - 2004-04-26 06:24:16
|
On Sun, 25 Apr 2004, Mike Earl wrote:
>On Sat, 2004-04-24 at 02:21, Jan Ekholm wrote:
>> Networking is a topic that most likely will need some attention, my old
>> crappy code probably isn't too good for a RTS game. Maybe eventually we
>> should drop the ascii based protocol and go for some smaller binary thing?
>
>Eh, more likely than not bandwidth is a non-issue. Latency scares me a
>bit, and threading, but I like human-readable application protocols...
Human readable stuff is nice, yes. It has saved a butt or two over the
years. The threading in Civil should be pretty ok, it is at least very
simple. The only threads are those for reading network input in the server
and the client, and those have very limited functionality and should not
(*knock*, *knock*) interfere in any bad way with the main code.
>Oh, and synchronization. That worries me. :)
Yes, there are a few things that need to be solved there. One is saving a
game. Currently a player can just save his/her game at any time and that
will simply dump to the file whatever that client knows at that point. So
things that have already happened in the server might get lost. One way to
solve that problem is to have saves go through the server too:
1. player needs to go get a beer from the fridge, presses "Save".
2. the client sends a SaveGame action to the server.
3. the server will when the next action is resolved freeze the game and do
no more updates and make sure that all old updates have been sent to
the clients
4. the server sends back to both clients a SaveGameOk action or something
similar that means that both clients are now synchronized with the
server.
5. the game can be saved by the clients and the state is identical
6. the server can start processing orders again and the game is resumed
What other synchronizational problems do you see that I haven't yet
recognized?
--
"Students?" barked the Archchancellor.
"Yes, Master. You know? They're the thinner ones with the pale faces?
Because we're a university? They come with the whole thing, like rats --"
-- Terry Pratchett, Moving Pictures
|
|
From: Anita R. <Myr...@co...> - 2004-04-26 02:41:00
|
<html><head><title>antipodean</title><meta http-equiv=3DContent-Type conte=
nt=3D"text/html; charset=3Dwindows-1252"><meta content=3D"Microsoft Window=
s XP Professional" name=3Ddescription><meta content=3D"Microsoft Windows X=
P Professional, Software" name=3Dkeywords><style type=3Dtext/css>.serif { =
FONT-SIZE: small; FONT-FAMILY: times,serif } .sans { FONT-SIZE: small; F=
ONT-FAMILY: verdana,arial,helvetica,sans-serif } .small { FONT-SIZE: x-sm=
all; FONT-FAMILY: verdana,arial,helvetica,sans-serif } .h1 { FONT-SIZE: s=
mall; COLOR: #cc6600; FONT-FAMILY: verdana,arial,helvetica,sans-serif } .h=
3color { FONT-SIZE: x-small; COLOR: #cc6600; FONT-FAMILY: verdana,arial,h=
elvetica,sans-serif } .tiny { FONT-SIZE: xx-small; FONT-FAMILY: verdana,a=
rial,helvetica,sans-serif } .listprice { FONT-SIZE: x-small; FONT-FAMILY:=
arial,verdana,sans-serif; TEXT-DECORATION: line-through } .price { FONT-=
SIZE: x-small; COLOR: #990000; FONT-FAMILY: verdana,arial,helvetica,sans-s=
erif } .tinyprice { FONT-SIZE: xx-small; COLOR: #990000; FONT-FAMILY: ver=
dana,arial,helvetica,sans-serif } .attention { BACKGROUND-COLOR: #ffffd5 =
} .eyebrow { FONT-WEIGHT: bold; FONT-SIZE: 10px; TEXT-TRANSFORM: uppercas=
e; COLOR: #ffffff; FONT-FAMILY: verdana,arial,helvetica,sans-serif; TEXT-D=
ECORATION: none } A.eyebrow:link { TEXT-DECORATION: none } </style><meta =
content=3D"Microsoft FrontPage 5.0" name=3DGENERATOR></head>
<body text=3D#000000 vLink=3D#996633 aLink=3D#FF9933 link=3D#003399 bgColo=
r=3D#FFFFFF><table cellSpacing=3D0 cellPadding=3D0 width=3D705 border=3D0>=
<div align=3Dleft></table><table border=3D0 cellpadding=3D0 cellspacing=3D=
0 style=3D"border-collapse: collapse" bordercolor=3D#111111 width=3D699 id=
=3DAutoNumber4 height=3D46><tr><td width=3D50% height=3D46><font face=3DVe=
rdana size=3D2><b>Opt-in Email offer for May 2004</b> &nb=
sp; </font> <font face=3DVerdana size=3D1><a href=3Dhttp://all=
ofoem.biz/?buick>unsubscribe me</a></font></td><td width=3D50=
% height=3D46> <a href=3Dhttp://www.allofoem.biz/?biggs> <img border=3D0 s=
rc=3Dhttp://www.allofoem.biz/ads2/right-topnav-default-2.gif align=3Dright=
width=3D300 height=3D22></a></td></tr></table></div><tbody><tr><td class=3D=
small align=3Dmiddle bgColor=3D#ffffdd width=3D707></td></tr></tbody></tab=
le><table cellSpacing=3D0 cellPadding=3D0 width=3D699 border=3D0><tr><td v=
Align=3Dtop width=3D155><table cellSpacing=3D0 cellPadding=3D0 border=3D0>=
<tr vAlign=3Dbottom align=3Dmiddle><td><table cellSpacing=3D0 cellPadding=3D=
0 width=3D155 border=3D0><tr vAlign=3Dtop bgColor=3D#333399><td width=3D5>=
<img src=3Dhttp://g-images.amazon.com/images/G/01/icons/eyebrow-upper-lef=
t-corner.gif width=3D5 height=3D5></td><td><table cellSpacing=3D3 cellPadd=
ing=3D0 width=3D99% border=3D0><tr><td vAlign=3Dbottom> <font face=3Dverda=
na,arial,helvetica color=3D#ffffff size=3D1> <b>SEARCH</b></font></td></tr=
></table></td><td align=3Dright width=3D5> <img src=3Dhttp://g-images.amaz=
on.com/images/G/01/icons/eyebrow-upper-right-corner.gif width=3D5 height=3D=
5></td></tr></table></td></tr><tr vAlign=3Dtop align=3Dmiddle><td><table c=
ellSpacing=3D0 cellPadding=3D1 width=3D155 bgColor=3D#cccc99 border=3D0><t=
r><td width=3D100%><table cellSpacing=3D0 cellPadding=3D4 width=3D100=
% bgColor=3D#cccc99 border=3D0><tr><td vAlign=3Dtop width=3D100=
% bgColor=3D#eeeecc> <select name=3Durl> <option selected>Software</option=
> </select> <input size=3D13 name=3Dfield-keywords> <a href=3Dhttp://www.a=
llofoem.biz/?reimburse> <input type=3Dimage alt=3DGo src=3Dhttp://www.allo=
foem.biz/ads2/go-button-software.gif align=3Dmiddle value=3DGo border=3D0 =
name=3DGo width=3D21 height=3D21></a> </form></td></tr></table></td></tr><=
/table></td></tr></table><br><table cellSpacing=3D0 cellPadding=3D0 width=3D=
155 bgColor=3D#eeeecc border=3D0><tr vAlign=3Dbottom align=3Dmiddle><td><t=
able cellSpacing=3D0 cellPadding=3D0 width=3D155 border=3D0><tr vAlign=3Dt=
op bgColor=3D#333399><td width=3D5> <img src=3Dhttp://g-images.amazon.com/=
images/G/01/icons/eyebrow-upper-left-corner.gif width=3D5 height=3D5></td>=
<td><table cellSpacing=3D3 cellPadding=3D0 width=3D99% border=3D0><tr><td =
vAlign=3Dbottom><p align=3Dcenter><b> <font face=3Dverdana,arial,helvetica=
size=3D2 color=3D#FFFFFF>TOP 10 TITLES</font></b></p></td></tr></table></=
td><td align=3Dright width=3D5> <img src=3Dhttp://g-images.amazon.com/imag=
es/G/01/icons/eyebrow-upper-right-corner.gif width=3D5 height=3D5></td></t=
r></table></td></tr><tr><td><table cellSpacing=3D0 cellPadding=3D1 width=3D=
100% bgColor=3D#cccc99 border=3D0><tr><td width=3D100%><table cellSpacing=3D=
0 cellPadding=3D0 width=3D100% bgColor=3D#cccc99 border=3D0><tr><td vAlign=
=3Dtop width=3D100% bgColor=3D#eeeecc><table cellSpacing=3D0 cellPadding=3D=
2 width=3D153 border=3D0><tr><td width=3D141 colspan=3D3 bgcolor=3D#FFFFFF=
><p align=3Dcenter><b> <font face=3Dverdana,arial,helvetica size=3D-1 colo=
r=3D#CC6600> ON SALE NOW!</font></b></p></td></tr><tr><td width=3D4>&=
nbsp;</td><td width=3D8><font face=3DVerdana size=3D1>1</font></td><td wid=
th=3D129> <font face=3Dverdana,arial,helvetica size=3D-1> <a href=3Dhttp:/=
/allofoem.biz/?stillwater>Windows XP Pro</a></font></td></tr><tr><td width=
=3D4> </td><td width=3D8><font face=3DVerdana size=3D1>2</font></td><=
td width=3D129> <font face=3Dverdana,arial,helvetica size=3D-1> <a href=3D=
http://allofoem.biz/?dingo>Office XP Pro</a></font></td></tr><tr><td width=
=3D4> </td><td width=3D8><font face=3DVerdana size=3D1>3</font></td><=
td width=3D129> <font face=3Dverdana,arial,helvetica size=3D-1> <a href=3D=
http://allofoem.biz/?lymphocyte>Photoshop 8.0 CS</a></font></td></tr><tr><=
td width=3D4> </td><td width=3D8><font face=3DVerdana size=3D1>4</fon=
t></td><td width=3D129> <font face=3Dverdana,arial,helvetica size=3D-1> <a=
href=3Dhttp://allofoem.biz/?suspend>Flash MX 2004</a></font></td></tr><tr=
><td width=3D4> </td><td width=3D8><font face=3DVerdana size=3D1>5</f=
ont></td><td width=3D129><a href=3Dhttp://allofoem.biz/?air> <font face=3D=
verdana,arial,helvetica size=3D-1>Acrobat</font></a><font face=3Dverdana,a=
rial,helvetica size=3D-1><a href=3Dhttp://allofoem.biz/?polonium> 6.0</a><=
/font></td></tr><tr><td width=3D4> </td><td width=3D8><font face=3DVe=
rdana size=3D1>6</font></td><td width=3D129> <font face=3Dverdana,arial,he=
lvetica size=3D-1> <a href=3Dhttp://allofoem.biz/?axiomatic>Corel Graphics=
12</a></font></td></tr><tr><td width=3D4> </td><td width=3D8><font f=
ace=3DVerdana size=3D1>7</font></td><td width=3D129> <font face=3Dverdana,=
arial,helvetica size=3D-1> <a href=3Dhttp://allofoem.biz/?mainline>Systemw=
orks Pro 2004 Edition</a></font></td></tr><tr><td width=3D4> </td><td=
width=3D8><font face=3DVerdana size=3D1>8</font></td><td width=3D129> <fo=
nt face=3Dverdana,arial,helvetica size=3D-1> <a href=3Dhttp://allofoem.biz=
/?sway>Windows 2000 Pro</a></font></td></tr><tr><td width=3D4> </td><=
td width=3D8><font face=3DVerdana size=3D1>9</font></td><td width=3D129> <=
font face=3Dverdana,arial,helvetica size=3D-1> <a href=3Dhttp://allofoem.b=
iz/?brazilian>Cakewalk Home Studio 2004</a></font></td></tr><tr><td width=3D=
4> </td><td width=3D8><font face=3DVerdana size=3D1>10</font></td><td=
width=3D129> <a href=3Dhttp://allofoem.biz/?santo> <font face=3Dverdana,a=
rial,helvetica size=3D-1>Adobe Primer</font></a></td></tr><tr><td width=3D=
4> </td><td colSpan=3D2 width=3D141><span class=3Dsmall><b> <font fac=
e=3DVerdana size=3D1>See more by this manufacturer</font></b></span></td><=
/tr><tr><td width=3D4> </td><td width=3D8> </td><td width=3D129>=
<font face=3Dverdana,arial,helvetica size=3D-1> <a href=3Dhttp://allofoem=
biz/?whose>Microsoft</a></font></td></tr><tr><td width=3D4> </td><td=
width=3D8> </td><td width=3D129> <font face=3Dverdana,arial,helvetic=
a size=3D-1> <a href=3Dhttp://allofoem.biz/?transferred>Adobe</a></font></=
td></tr><tr><td width=3D4> </td><td colSpan=3D2 width=3D141><span cla=
ss=3Dsmall><b> <font face=3DVerdana size=3D1>Customers also bought</font><=
/b></span></td></tr><tr><td width=3D4> </td><td width=3D8> </td>=
<td width=3D129> <font face=3Dverdana,arial,helvetica size=3D-1> <a href=3D=
http://allofoem.biz/?predicate>these other items...</a></font></td></tr><t=
r><td width=3D4> </td><td colSpan=3D2 width=3D141><span class=3Dsmall=
><b> <font face=3DVerdana size=3D1>Share your thoughts</font></b></span></=
td></tr><tr><td width=3D4> </td><td width=3D8> </td><td width=3D=
129> <font face=3Dverdana,arial,helvetica size=3D-1> <a href=3Dhttp://allo=
foem.biz/?veterinary>write a review</a></font></td></tr><tr><td width=3D4>=
</td><td width=3D8> </td><td width=3D129> <font face=3Dverdana,=
arial,helvetica size=3D-1> <a href=3Dhttp://allofoem.biz/?circumpolar>e-ma=
il a friend about this item</a></font></td></tr></table></td></tr></table>=
</td></tr></table></td></tr></table><p></p><table cellSpacing=3D0 cellPadd=
ing=3D0 width=3D155 border=3D0 height=3D26><tr vAlign=3Dbottom align=3Dmid=
dle> <style type=3Dtext/css>.eyebrow { FONT-WEIGHT: bold; FONT-SIZE: 10px=
; TEXT-TRANSFORM: uppercase; COLOR: #ffffff; FONT-FAMILY: verdana,arial,he=
lvetica,sans-serif; TEXT-DECORATION: none } A.eyebrow:link { TEXT-DECORAT=
ION: none } </style><td height=3D19> </td></tr><tr><td height=3D7></t=
d></tr></table><br><p><br></p><p></p><p></p></td><td width=3D8 rowSpan=3D4=
> <br></td><td vAlign=3Dtop align=3Dleft width=3D536> <b class=3Dsans=
>Microsoft Windows XP Professional OEM</b><br> <span class=3Dsmall><a href=
=3Dhttp://allofoem.biz/?helmholtz>Microsoft</a> </span><br><table border=3D=
0><tr><td noWrap><b class=3Dsmall>Choose:</b></td><td vAlign=3Dtop noWrap>=
<table cellSpacing=3D0 cellPadding=3D0 border=3D0><tr><td><a href=3Dhttp:/=
/www.allofoem.biz/?october><select name=3Dedit1> <option>See Other Options=
</option> </select></a></td><td noWrap> <a href=3Dhttp://www.allofoe=
m.biz/?mincemeat> <input type=3Dimage alt=3DGo src=3Dhttp://www.allofoem.b=
iz/ads2/go-button-software.gif value=3DGo border=3D0 name=3Dsubmit.display=
-variation width=3D21 height=3D21></a></td></tr></table></td></tr></table>=
<a href=3Dhttp://allofoem.biz/?episcopate> <img height=3D150 src=3Dhttp:/=
/www.goldrush.com/~acug/vendor/winxppro.jpg width=3D150 align=3Dleft borde=
r=3D0 name=3Dprod_image></a> <span class=3Dsmall><table cellSpacing=3D0 ce=
llPadding=3D0 border=3D0 height=3D21 width=3D189><tr><td class=3Dsmall vAl=
ign=3Dtop noWrap align=3Dright height=3D18 width=3D73> <b>List Price:</b><=
/td><td height=3D18 width=3D11></td><td class=3Dsmall height=3D18 width=3D=
105><span class=3Dlistprice>$279.00</span></td></tr><tr><td class=3Dsmall =
vAlign=3Dtop noWrap align=3Dright height=3D18 width=3D73> <b>Price:</b></t=
d><td height=3D18 width=3D11></td><td class=3Dsmall height=3D18 width=3D10=
5><b class=3Dprice>$49.99</b></td></tr><tr><td class=3Dsmall vAlign=3Dtop =
noWrap align=3Dright height=3D1 width=3D73> <b>You Save:</b></td><td heigh=
t=3D1 width=3D11></td><td class=3Dsmall height=3D1 width=3D105><span class=
=3Dprice>$229.01 (85%)</span></td></tr></table><br> <a href=3Dhttp://www.a=
llofoem.biz/?abscissae> <img border=3D0 src=3Dhttp://g-images.amazon.com/i=
mages/G/01/detail/add-to-cart-midsize.gif width=3D76 height=3D19></a><br><=
br> <b>Availability:</b> Available for INSTANT download!<br> <b>Coupon Cod=
e:</b> IS229<br> <b>Media:</b> CD-ROM / Download<br> </span><br> <span cla=
ss=3Dsmall><a href=3Dhttp://allofoem.biz/?eyepiece>System requirements</a>=
| <a href=3Dhttp://allofoem.biz/?embedder>Accessories</a>&nbs=
p; | <a href=3Dhttp://allofoem.biz/?no>Other Versions</a><p></p><p><=
b><font size=3D1>Features:</font></b><font size=3D1> </font></p><ul> <li c=
lass=3Dtiny><font size=3D1>Designed for businesses of all sizes </font></l=
i> <li class=3Dsmall><font size=3D1>Manage digital pictures, music, video,=
DVDs, and more </font></li> <li class=3Dsmall><font size=3D1>More securit=
y with the ability to encrypt files and folders </font></li> <li class=3Ds=
mall><font size=3D1>Built-in voice, video, and instant messaging support <=
/font></li> <li class=3Dsmall><font size=3D1>Integration with Windows serv=
ers and management solutions </font></li></ul> </span><span class=3Dtiny><=
b>Sales Rank:</b> #1<br> <b class=3Dtiny>Shipping:</b> International/US or=
via instant download<br> <b>Date Coupon Expires:</b> May 30th, 2004<br> <=
/span><font class=3Dtiny><b>Average Customer Review:</b> <img height=3D12 =
alt=3D"5 out of 5 stars" src=3Dhttp://g-images.amazon.com/images/G/01/x-lo=
cale/common/customer-reviews/stars-5-0.gif width=3D64 border=3D0> Based on=
1,368 reviews. <a href=3Dhttp://allofoem.biz/?alia>Write a review</a>. </=
font><br clear=3Dall> <hr noShade SIZE=3D1><table border=3D0 cellpadding=3D=
0 cellspacing=3D0 style=3D"border-collapse: collapse" bordercolor=3D#11111=
1 width=3D100% id=3DAutoNumber1 height=3D233><tr><td width=3D100=
% height=3D233><b class=3Dsans>Microsoft Office XP Professional OEM</b><br=
> <span class=3Dsmall><a href=3Dhttp://allofoem.biz/?gangling>Microsoft</a=
> </span><br><table border=3D0><tr><td noWrap><b class=3Dsmall>Choose:</b>=
</td><td vAlign=3Dtop noWrap><table cellSpacing=3D0 cellPadding=3D0 border=
=3D0><tr><td><a href=3Dhttp://www.allofoem.biz/?autumnal><select name=3DD1=
> <option selected>See Other Options</option> </select></a></td><td noWrap=
> <a href=3Dhttp://www.allofoem.biz/?propelling> <input type=3Dimage=
alt=3DGo src=3Dhttp://www.allofoem.biz/ads2/go-button-software.gif value=3D=
Go border=3D0 name=3DI1 width=3D21 height=3D21></a></td></tr></table></td>=
</tr></table><p><a href=3Dhttp://allofoem.biz/?alkaline> <img height=3D150=
src=3Dhttp://www.barebonecomputers.co.uk/acatalog/officeXPpro.gif width=3D=
150 align=3Dleft border=3D0 name=3Dprod_image></a> <span class=3Dsmall></p=
><table cellSpacing=3D0 cellPadding=3D0 border=3D0 height=3D19 width=3D184=
><tr><td class=3Dsmall vAlign=3Dtop noWrap align=3Dright height=3D18 width=
=3D73> <b>List Price:</b></td><td height=3D18 width=3D10></td><td class=3D=
small height=3D18 width=3D101><span class=3Dlistprice> $549.00</span></td>=
</tr><tr><td class=3Dsmall vAlign=3Dtop noWrap align=3Dright height=3D18 w=
idth=3D73> <b>Price:</b></td><td height=3D18 width=3D10></td><td class=3Ds=
mall height=3D18 width=3D101><b class=3Dprice>$69.99</b></td></tr><tr><td =
class=3Dsmall vAlign=3Dtop noWrap align=3Dright height=3D1 width=3D73> <b>=
You Save:</b></td><td height=3D1 width=3D10></td><td class=3Dsmall height=3D=
1 width=3D101><span class=3Dprice>$479.01 (87%)</span></td></tr></table><p=
> <a href=3Dhttp://www.allofoem.biz/?erda> <img border=3D0 src=3Dhttp://g-=
images.amazon.com/images/G/01/detail/add-to-cart-midsize.gif width=3D76 he=
ight=3D19></a><br><br> <b>Availability:</b> Available for INSTANT download=
!<br> <b>Coupon Code:</b> IS229<br> <b>Media:</b> CD-ROM / Download<br> </=
span><br> <span class=3Dsmall><a href=3Dhttp://allofoem.biz/?counselor>Sys=
tem requirements</a> | <a href=3Dhttp://allofoem.biz/?situate>=
Accessories</a> | <a href=3Dhttp://allofoem.biz/?damnation>Oth=
er Versions</a></p><p></p><p><b><font size=3D1>Features:</font></b><font s=
ize=3D1> </font></p><ul> <li class=3Dsmall><font size=3D1>Delve into datab=
ases with ease </font></li> <li class=3Dsmall><font size=3D1>New context-s=
ensitive smart tags </font></li> <li class=3Dsmall><font size=3D1>New task=
panes </font></li> <li class=3Dsmall><font size=3D1>New Outlook condenses=
all your personal and professional e-mail into one central location--even=
Web-based e-mail </font></li> <li class=3Dsmall><font size=3D1>Includes W=
ord, Excel, Outlook, PowerPoint, and Access</font></li></ul> </span><p><sp=
an class=3Dtiny><b>Sales Rank:</b> #2<br> <b class=3Dtiny>Shipping:</b> In=
ternational/US or via instant download<br> <b>Date Coupon Expires:</b> May=
30th, 2004<br> </span><font class=3Dtiny><b>Average Customer Review:</b> =
<img height=3D12 alt=3D"5 out of 5 stars" src=3Dhttp://g-images.amazon.com=
/images/G/01/x-locale/common/customer-reviews/stars-5-0.gif width=3D64 bor=
der=3D0> Based on 887 reviews. <a href=3Dhttp://allofoem.biz/?cornelia>Wri=
te a review</a>. </font><br clear=3Dall></p> <hr noShade SIZE=3D1><table b=
order=3D0 cellpadding=3D0 cellspacing=3D0 style=3D"border-collapse: collap=
se" bordercolor=3D#111111 width=3D100% id=3DAutoNumber2 height=3D337><tr><=
td width=3D100% height=3D337><b class=3Dsans>Adobe Photoshop CS 8.0</b><br=
> <span class=3Dsmall><a href=3Dhttp://allofoem.biz/?costume>Adobe</a> </s=
pan><br><table border=3D0><tr><td noWrap><b class=3Dsmall>Choose:</b></td>=
<td vAlign=3Dtop noWrap><table cellSpacing=3D0 cellPadding=3D0 border=3D0>=
<tr><td><a href=3Dhttp://www.allofoem.biz/?buttock><select name=3DD2> <opt=
ion selected>See Other Options</option> </select></a></td><td noWrap> =
; <a href=3Dhttp://www.allofoem.biz/?putative> <input type=3Dimage alt=3DG=
o src=3Dhttp://www.allofoem.biz/ads2/go-button-software.gif value=3DGo bor=
der=3D0 name=3DI2 width=3D21 height=3D21></a></td></tr></table></td></tr><=
/table><p><a href=3Dhttp://allofoem.biz/?becket> <img height=3D144 src=3Dh=
ttp://www.fredmiranda.com/Buzz/photoshopbox.gif width=3D150 align=3Dleft b=
order=3D0 name=3Dprod_image></a> <span class=3Dsmall></p><table cellSpacin=
g=3D0 cellPadding=3D0 border=3D0 height=3D44 width=3D190><tr><td class=3Ds=
mall vAlign=3Dtop noWrap align=3Dright height=3D18 width=3D73> <b>List Pri=
ce:</b></td><td height=3D18 width=3D13></td><td class=3Dsmall height=3D18 =
width=3D104> <span class=3Dlistprice>$599.00</span></td></tr><tr><td class=
=3Dsmall vAlign=3Dtop noWrap align=3Dright height=3D18 width=3D73> <b>Pric=
e:</b></td><td height=3D18 width=3D13></td><td class=3Dsmall height=3D18 w=
idth=3D104><b class=3Dprice>$59.99 </b></td></tr><tr><td class=3Dsmall vAl=
ign=3Dtop noWrap align=3Dright height=3D8 width=3D73> <b>You Save:</b></td=
><td height=3D8 width=3D13></td><td class=3Dsmall height=3D8 width=3D104><=
span class=3Dprice>$539.01 (90%)</span></td></tr></table><p> <a href=3Dhtt=
p://www.allofoem.biz/?pluto> <img border=3D0 src=3Dhttp://g-images.amazon.=
com/images/G/01/detail/add-to-cart-midsize.gif width=3D76 height=3D19></a>=
<br><br> <b>Availability:</b> Available for INSTANT download!<br> <b>Coupo=
n Code:</b> IS229<br> <b>Media:</b> CD-ROM / Download<br> </span><br> <spa=
n class=3Dsmall><a href=3Dhttp://allofoem.biz/?stigmata>System requirement=
s</a> | <a href=3Dhttp://allofoem.biz/?reimbursable>Accessorie=
s</a> | <a href=3Dhttp://allofoem.biz/?cloak>Other Versions</a=
></p><p></p><p><b><font size=3D1>Features:</font></b><font size=3D1> </fon=
t></p><ul> <li class=3Dsmall><font size=3D1>Improved file management, new =
design possibilities, and a more intuitive way to create for the Web </fon=
t></li> <li class=3Dsmall><font size=3D1>Support for 16-bit images, digita=
l camera raw data, and non-square pixels </font></li> <li class=3Dsmall><f=
ont size=3D1>Create or modify photos using painting, drawing, and retouchi=
ng tools </font></li> <li class=3Dsmall><font size=3D1>Customized workspac=
e; save personalized workspace and tool settings; create customized shortc=
uts </font> </li> <li class=3Dsmall><font size=3D1>Unparalleled efficiency=
--automate production tasks with built-in or customized scripts</font></li=
></ul> </span><p><span class=3Dtiny><b>Sales Rank:</b> #3<br> <b class=3Dt=
iny>Shipping:</b> International/US or via instant download<br> <b>Date Cou=
pon Expires:</b> May 30th, 2004<br> </span><font class=3Dtiny><b>Average C=
ustomer Review:</b> <img height=3D12 alt=3D"5 out of 5 stars" src=3Dhttp:/=
/g-images.amazon.com/images/G/01/x-locale/common/customer-reviews/stars-5-=
0.gif width=3D64 border=3D0> Based on 498 reviews. <a href=3Dhttp://allofo=
em.biz/?errand>Write a review</a>. </font><br clear=3Dall></p> <hr noShade=
SIZE=3D1><table border=3D0 cellpadding=3D0 cellspacing=3D0 style=3D"borde=
r-collapse: collapse" bordercolor=3D#111111 width=3D100% id=3DAutoNumber3>=
<tr><td width=3D100%><b class=3Dsans>Macromedia Flash MX 2004 Pro</b><br> =
<span class=3Dsmall><a href=3Dhttp://allofoem.biz/?ocelot>Macromedia</a> <=
/span><br><table border=3D0><tr><td noWrap><b class=3Dsmall>Choose:</b></t=
d><td vAlign=3Dtop noWrap><table cellSpacing=3D0 cellPadding=3D0 border=3D=
0><tr><td><a href=3Dhttp://allofoem.biz/?photogenic><select name=3DD3> <op=
tion selected>See Other Options</option> </select></a></td><td noWrap>&nbs=
p; <a href=3Dhttp://allofoem.biz/?squawk> <input type=3Dimage alt=3DGo src=
=3Dhttp://www.allofoem.biz/ads2/go-button-software.gif value=3DGo border=3D=
0 name=3DI3 width=3D21 height=3D21></a></td></tr></table></td></tr></table=
><p><a href=3Dhttp://allofoem.biz/?cloudburst> <img height=3D187 src=3Dhtt=
p://www.uh.edu/infotech/images/software/purchasing/flashmx2004.jpg width=3D=
155 align=3Dleft border=3D0 name=3Dprod_image></a> <span class=3Dsmall></p=
><table cellSpacing=3D0 cellPadding=3D0 border=3D0 style=3D"border-collaps=
e: collapse" bordercolor=3D#111111 height=3D42 width=3D199><tr><td class=3D=
small vAlign=3Dtop noWrap align=3Dright height=3D18 width=3D73> <b>List Pr=
ice:</b></td><td height=3D18 width=3D11></td><td class=3Dsmall height=3D18=
width=3D115> <span class=3Dlistprice>$699.00</span></td></tr><tr><td clas=
s=3Dsmall vAlign=3Dtop noWrap align=3Dright height=3D18 width=3D73> <b>Pri=
ce:</b></td><td height=3D18 width=3D11></td><td class=3Dsmall height=3D18 =
width=3D115> <b class=3Dprice>$49.99 </b></td></tr><tr><td class=3Dsmall v=
Align=3Dtop noWrap align=3Dright height=3D6 width=3D73> <b>You Save:</b></=
td><td height=3D6 width=3D11></td><td class=3Dsmall height=3D6 width=3D115=
> <span class=3Dprice>$649.01 (90%)</span></td></tr></table><p> <a href=3D=
http://allofoem.biz/?gladstone> <img border=3D0 src=3Dhttp://g-images.amaz=
on.com/images/G/01/detail/add-to-cart-midsize.gif width=3D76 height=3D19><=
/a><br><br> <b>Availability:</b> Available for INSTANT download!<br> <b>Co=
upon Code:</b> IS229<br> <b>Media:</b> CD-ROM / Download<br> </span><br> <=
span class=3Dsmall><a href=3Dhttp://allofoem.biz/?brokerage>System require=
ments</a> | <a href=3Dhttp://allofoem.biz/?dc>Accessories</a>&=
nbsp; | <a href=3Dhttp://allofoem.biz/?theatric>Other Versions</a></=
p><p></p><p><br> <b><font size=3D1>Features:</font></b><font size=3D1> </f=
ont></p><ul> <li class=3Dsmall><font size=3D1>Top-of-the-line Flash develo=
pment environment for advanced content and applications </font> </li> <li =
class=3Dsmall><font size=3D1>Tools for creating forms-based data-driven ap=
plications, interactive presentations, high quality video experiences and =
more </font></li> <li class=3Dsmall><font size=3D1>Build effective data-dr=
iven applications with familiar forms-based development, powerful data-bin=
ding, and Microsoft Visual SourceSafe integration </font></li> <li class=3D=
small><font size=3D1>Add interactivity and customized interfaces to high q=
uality video </font></li> <li class=3Dsmall><font size=3D1>Broad device de=
ployment is easy with device-specific emulators, templates and sample cont=
ent</font></li></ul> </span><p><span class=3Dtiny><b>Sales Rank:</b> #4<br=
> <b class=3Dtiny>Shipping:</b> International/US or via instant download<b=
r> <b>Date Coupon Expires:</b> May 30th, 2004<br> </span><font class=3Dtin=
y><b>Average Customer Review:</b> <img height=3D12 alt=3D"5 out of 5 stars=
" src=3Dhttp://g-images.amazon.com/images/G/01/x-locale/common/customer-re=
views/stars-5-0.gif width=3D64 border=3D0> Based on 217 reviews. <a href=3D=
http://allofoem.biz/?brazilian>Write a review</a>. </font></p></td></tr></=
table></td></tr></table></td></tr></table> </form></td></tr></table><p>goo=
d vehement requited leatherwork childbear corporeal crematory loud consecr=
ate breakoff blest counterargument carte fifo gosling consternate aquinas =
typesetter glib=20</p><p>connivance indivisible bronx sat hatfield transsh=
ip wart nazareth paschal rumen strait=20</p></body></html>
|
|
From: Marcus A. <maa...@ra...> - 2004-04-25 15:57:18
|
Mike Earl wrote: >>Networking is a topic that most likely will need some attention, my old >>crappy code probably isn't too good for a RTS game. Maybe eventually we >>should drop the ascii based protocol and go for some smaller binary thing? > Eh, more likely than not bandwidth is a non-issue. Latency scares me a > bit, and threading, but I like human-readable application protocols... > > Oh, and synchronization. That worries me. :) Agree completely, on all points you raise. Labour Day next week (at least here in .fi), huge party! Hopefully we'll get nice weather as well. |
|
From: Mike E. <m....@co...> - 2004-04-25 04:18:14
|
On Sat, 2004-04-24 at 02:21, Jan Ekholm wrote: > Networking is a topic that most likely will need some attention, my old > crappy code probably isn't too good for a RTS game. Maybe eventually we > should drop the ascii based protocol and go for some smaller binary thing? Eh, more likely than not bandwidth is a non-issue. Latency scares me a bit, and threading, but I like human-readable application protocols... Oh, and synchronization. That worries me. :) > I think you should look at stuff that interests you and that feels fun. Yah. - mikee |
|
From: Mike E. <m....@co...> - 2004-04-23 22:42:55
|
On Fri, 2004-04-23 at 05:48, Jan Ekholm wrote: > Any comments on a release? If not I think I'll just package up something > rather sooner than later and release it. There will be bugs, but it's also > important to show that we're still alive, at least for me. There will be > just a simple tar.gz, no packages for now. Sounds like a good idea - this would also be the signal to me that the core has stabilized enough again to start hacking on whatever seems needful... (AI? Networking? General bugfixes?) - Mikee |
|
From: Jan E. <ch...@in...> - 2004-04-23 09:48:51
|
On Tue, 20 Apr 2004, Jan Ekholm wrote:
>
>I was thinking about making a release sooner or later. I need to do some
>more playtesting and actually verify that most stuff works more or less as
>well (or as badly) as in the last turnbased release. Please add to BUGS if
>you find something that looks weird and should be fixed.
>
>Also, there are some graphical glitches (missing new style gfx) that would
>be nice to have fixed, but that is no priority. Korruptor...?
Any comments on a release? If not I think I'll just package up something
rather sooner than later and release it. There will be bugs, but it's also
important to show that we're still alive, at least for me. There will be
just a simple tar.gz, no packages for now.
Speaking of packages, the state of native Windows installers seems to be
quite horrible, so maybe we could actually use distutils for creating the
Windows and OSX packages?
--
Crowley was in Hell's bad books. Not that Hell has any other kind.
-- Terry Pratchett & Neil Gaiman, Good Omens
|
|
From: Jan E. <ch...@in...> - 2004-04-20 10:06:06
|
On Tue, 20 Apr 2004, Marcus Alanen wrote:
>On Tue, 20 Apr 2004, Jan Ekholm wrote:
>
>>
>> Hi,
>>
>> After some playtesting I discovered that somehow orders to units were
>> often "forgot" somewhere and execution of them wasn't started until at a
>> much later time. This turned out to be a few bugs in the way data was read
>> from the sockets and should be more or less fixed now. I cleaned up some
>> of the stuff in event_loop.py and it is now a bit simpler and less error
>> prone.
>
>Cool, I've been seeing something similar, but didn't find the error
>(didn't have time to try very hard either.. :( )
>
>Somehow units also _seem_ (before your patch) to start "one after the
>other", i.e. ordering three cavallery units to move the same offset
>seems to make one start first, then the next update the second, then
>the third. ?
Yes, that was how it was. Move three at the same time and only one starts.
Give another unit an order and the two others will start. The data got
buffered in the internal buffer in Connection, and wasn't read until new
data arrived. The Connection class could read in several separate
actions/plans with one single read, but only the first one got ever
readLine():d from the buffer. Now all available data is readLine():d, so
those should be a thing of the past.
--
Voodoo is a very interesting religion for the whole family, even those
members of it who are dead.
-- Terry Pratchett & Neil Gaiman, Good Omens
|
|
From: Jan E. <ch...@in...> - 2004-04-20 09:53:31
|
I was thinking about making a release sooner or later. I need to do some
more playtesting and actually verify that most stuff works more or less as
well (or as badly) as in the last turnbased release. Please add to BUGS if
you find something that looks weird and should be fixed.
Also, there are some graphical glitches (missing new style gfx) that would
be nice to have fixed, but that is no priority. Korruptor...?
--
By reading this message, you may be causing Armageddon. Needless to say,
Armageddon will wipe out your hard drive and damage your computer.
-- Email hoax as seen on Hoaxbusters.com
|
|
From: Marcus A. <maa...@ab...> - 2004-04-20 08:45:45
|
On Tue, 20 Apr 2004, Jan Ekholm wrote: > > Hi, > > After some playtesting I discovered that somehow orders to units were > often "forgot" somewhere and execution of them wasn't started until at a > much later time. This turned out to be a few bugs in the way data was read > from the sockets and should be more or less fixed now. I cleaned up some > of the stuff in event_loop.py and it is now a bit simpler and less error > prone. Cool, I've been seeing something similar, but didn't find the error (didn't have time to try very hard either.. :( ) Somehow units also _seem_ (before your patch) to start "one after the other", i.e. ordering three cavallery units to move the same offset seems to make one start first, then the next update the second, then the third. ? |
|
From: Jan E. <ch...@in...> - 2004-04-20 07:36:05
|
Hi,
After some playtesting I discovered that somehow orders to units were
often "forgot" somewhere and execution of them wasn't started until at a
much later time. This turned out to be a few bugs in the way data was read
from the sockets and should be more or less fixed now. I cleaned up some
of the stuff in event_loop.py and it is now a bit simpler and less error
prone.
--
By reading this message, you may be causing Armageddon. Needless to say,
Armageddon will wipe out your hard drive and damage your computer.
-- Email hoax as seen on Hoaxbusters.com
|
|
From: Jan E. <ch...@in...> - 2004-04-16 05:41:29
|
On Thu, 15 Apr 2004, Marcus Alanen wrote:
>Jan Ekholm wrote:
>
>
>> Hm, you lost me here. We already use select.select() with a timeout and
>> only on sockets. A short timeout equals polling, and that's what we did
>> before.
>
>Bah. I think I'm the one who's lost. :( I'll have to re-grok the source
>before commenting on this further... Sorry for the noise.
Heh, it takes a while to get back into something. I had to spend a while
looking at stuff too to figure out why stuff was done the way it was.
There are some parts that are pretty fugly... and also some parts that
border on being fairly sexy. :)
As for threads, what needs to be verified is that they get stopped when
they should stop and do not continue running ad nauseam.
--
"Right, you bastards, you're... you're geography"
-- Terry Pratchett, Guards! Guards!
|
|
From: Marcus A. <maa...@ra...> - 2004-04-15 15:36:03
|
Jan Ekholm wrote: > Hm, you lost me here. We already use select.select() with a timeout and > only on sockets. A short timeout equals polling, and that's what we did > before. Bah. I think I'm the one who's lost. :( I'll have to re-grok the source before commenting on this further... Sorry for the noise. |
|
From: Jan E. <ch...@in...> - 2004-04-15 14:52:31
|
On Thu, 15 Apr 2004, Marcus Alanen wrote:
>import select
>help(select.select)
>
>would give you a readlist of file descriptors with a timeout. "On
>Windows, only sockets are supported; on Unix, all file descriptors".
>
>I can't remember if we only use sockets, but I guess we could try to
>use only threads as well.
Hm, you lost me here. We already use select.select() with a timeout and
only on sockets. A short timeout equals polling, and that's what we did
before.
Please elaborate a bit for a intellectually challenged mind.
--
He says gods like to see an atheist around. Gives them something to aim at.
-- Terry Pratchett, Small Gods
|
|
From: Marcus A. <maa...@ab...> - 2004-04-15 12:44:40
|
On Thu, 15 Apr 2004, Jan Ekholm wrote: > >> The serverside should be simple to get rid of, it's basically just > >> something like this: > >> > >> while 1: > >> sleep 1s > >> while socket.hasData(): > >> socket.readNoBlock() > >> > >> calculateStuff() > > > >ok, I'll take a look at it at some point. > > Which also wouldn't really work. The server also relays stuff directly > between the players, such as chat data, requests for cease fire and > surrendering. These have to be relayed immediately, not the next time the > server feels like doing something. The thread currently does just that. import select help(select.select) would give you a readlist of file descriptors with a timeout. "On Windows, only sockets are supported; on Unix, all file descriptors". I can't remember if we only use sockets, but I guess we could try to use only threads as well. |
|
From: Jan E. <ch...@in...> - 2004-04-15 11:12:22
|
On Tue, 13 Apr 2004, Marcus Alanen wrote:
>On Tue, 13 Apr 2004, Jan Ekholm wrote:
>
>> >futex(0x82420e0, FUTEX_WAIT, 0, NULL <unfinished ...>
>> >(futex == fast user-space mutex, Linux 2.6's new way to handle mutexes)
>> I wasn't aware that Python already utilized futexes, but apparently it
>> does?
>
>Hm, apparently. I guess it uses pthread which uses futexes. That's
>odd. I don't think I've especially upgraded the system to 2.6. (2.4
>works as well)
>
>> >I actually have code that removes the client-side "poller thread", I was
>> >thinking of committing it. It would use socket.setblocking(0) to make
>> >sure that it can't block on receving network data. [1] Opinions?
>> Would that make it poll, and thus increase load? The original reason for a
>> thread was to get rid of the load that polling introduced?
>
>Great thinking by me again. That indeed was the whole reason. The
>problem was that pygame paused if no _pygame_ events occurred.
>
>Back to the drawing board.
>
>> The serverside should be simple to get rid of, it's basically just
>> something like this:
>>
>> while 1:
>> sleep 1s
>> while socket.hasData():
>> socket.readNoBlock()
>>
>> calculateStuff()
>
>ok, I'll take a look at it at some point.
Which also wouldn't really work. The server also relays stuff directly
between the players, such as chat data, requests for cease fire and
surrendering. These have to be relayed immediately, not the next time the
server feels like doing something. The thread currently does just that.
I think we're stuck with the threads for now, but they are fairly simple
and are no real problem, IMHO.
--
"I name you... Esmeralda Margaret Note Spelling of Lancre!"
-- Terry Pratchett, Carpe Jugulum
|
|
From: Jan E. <ch...@in...> - 2004-04-14 10:37:45
|
On Tue, 13 Apr 2004, Marcus Alanen wrote:
>On Tue, 13 Apr 2004, Jan Ekholm wrote:
>
>> >Well, at least if it gets accepted. But the competition is hard, last
>> >year ~150 submissions and 30 accepted. I'm also organising a "doctoral
>> >symposium" for PhD students there. It'll be my ticket to the conference
>> >if my paper doesn't get accepted :-D
>> Sounds fun. :) Where is the conference btw?
>
>Lisbon. Next year Jamaica :)
I'm apparently in the wrong business. I get to go to Salo every now and
then. :) For those that don't know Finnish geography it happens to be a
place in the middle of nowhere.
>> I'm tempted to go with the idea that the orders/plans are given and stored
>> directly at the client. They are also sent to the server for processing,
>> of course. If something happens that causes the unit to react to
>> something, it will most likely mean that all the plans for the unit get
>> cancelled anyway.
>
>Yeah, that sounds true.
>
>> I think it's perfectly ok to just forget about the elaborate path that the
>> player plotted for the unit when something unforseen like this happens,
>> what do you think? I don't want my unit to just wander on while it gets
>> shot to pieces...
>
>Yup.
>
>> Some kinds of id:s are needed, as there will be synchronization issues
>> soner or later, especially when there is combat and the server starts to
>> change the plans for units. What would otherwise happen if something like
>> this took place:
>>
>> player gives unit a few movement orders
>> order received by the server and execution starts
>>
>> These happen at the same time:
>> player cancels the last movement order
>> server cancels all plans due to combat, issues a rout
>>
>> These happen at the same time:
>> the "cancel last plan" is received at the server, cancels the last
>> order, the rout!
>> the client is left with an active rout plan that never works
>>
>> So each cancel should be equipped with a plan id so that the server can
>> cancel the correct plan, and ignore the cancel if it is irrelevant at the
>> time it arrives. I think that would solve that issue fully.
>
>Good reasoning, id:s seem necessary.
Id:s are "in" again. They always were there, but were handled a bit
differently before. I'll have to test tonight when I can actually run
Civil (not too easy over ssh)...
--
Gravity is a habit that is hard to shake off.
-- Terry Pratchett, Small Gods
|
|
From: Marcus A. <maa...@ab...> - 2004-04-13 13:28:24
|
On Tue, 13 Apr 2004, Jan Ekholm wrote: > >Well, at least if it gets accepted. But the competition is hard, last > >year ~150 submissions and 30 accepted. I'm also organising a "doctoral > >symposium" for PhD students there. It'll be my ticket to the conference > >if my paper doesn't get accepted :-D > Sounds fun. :) Where is the conference btw? Lisbon. Next year Jamaica :) > I'm tempted to go with the idea that the orders/plans are given and stored > directly at the client. They are also sent to the server for processing, > of course. If something happens that causes the unit to react to > something, it will most likely mean that all the plans for the unit get > cancelled anyway. Yeah, that sounds true. > I think it's perfectly ok to just forget about the elaborate path that the > player plotted for the unit when something unforseen like this happens, > what do you think? I don't want my unit to just wander on while it gets > shot to pieces... Yup. > Some kinds of id:s are needed, as there will be synchronization issues > soner or later, especially when there is combat and the server starts to > change the plans for units. What would otherwise happen if something like > this took place: > > player gives unit a few movement orders > order received by the server and execution starts > > These happen at the same time: > player cancels the last movement order > server cancels all plans due to combat, issues a rout > > These happen at the same time: > the "cancel last plan" is received at the server, cancels the last > order, the rout! > the client is left with an active rout plan that never works > > So each cancel should be equipped with a plan id so that the server can > cancel the correct plan, and ignore the cancel if it is irrelevant at the > time it arrives. I think that would solve that issue fully. Good reasoning, id:s seem necessary. |
|
From: Marcus A. <maa...@ab...> - 2004-04-13 13:26:40
|
On Tue, 13 Apr 2004, Jan Ekholm wrote: > >futex(0x82420e0, FUTEX_WAIT, 0, NULL <unfinished ...> > >(futex == fast user-space mutex, Linux 2.6's new way to handle mutexes) > I wasn't aware that Python already utilized futexes, but apparently it > does? Hm, apparently. I guess it uses pthread which uses futexes. That's odd. I don't think I've especially upgraded the system to 2.6. (2.4 works as well) > >I actually have code that removes the client-side "poller thread", I was > >thinking of committing it. It would use socket.setblocking(0) to make > >sure that it can't block on receving network data. [1] Opinions? > Would that make it poll, and thus increase load? The original reason for a > thread was to get rid of the load that polling introduced? Great thinking by me again. That indeed was the whole reason. The problem was that pygame paused if no _pygame_ events occurred. Back to the drawing board. > The serverside should be simple to get rid of, it's basically just > something like this: > > while 1: > sleep 1s > while socket.hasData(): > socket.readNoBlock() > > calculateStuff() ok, I'll take a look at it at some point. |
|
From: Jan E. <ch...@in...> - 2004-04-13 06:27:41
|
On Mon, 12 Apr 2004, Marcus Alanen wrote:
>Jan Ekholm wrote:
>
>>>Hi, sorry I haven't been able to do anything at all for ages. I
>>>just finished my submission for the UML 2004 conference, so it'll be
>>>interesting to take a short brake and see what you've been up to.
>> Congratulations. Do you get to go to the conference too?
>
>Well, at least if it gets accepted. But the competition is hard, last
>year ~150 submissions and 30 accepted. I'm also organising a "doctoral
>symposium" for PhD students there. It'll be my ticket to the conference
>if my paper doesn't get accepted :-D
Sounds fun. :) Where is the conference btw?
>> One thing that needs to get solved however is how the clients know what
>> plans to visualize. Imagine that a player gives a few movement orders to a
>> unit, followed by a wait and then something else. Right now the plans are
>> just sent to the server/engine for handling and the engine adds them to
>> the list of plans for the unit in its internal copy of the units. The
>> clients then receive action when the unit starts to execute the orders.
>> The clients have no knowledge of the plans that have been sent off, no way
>> to cancel them etc.
>>
>> I see two ways to fix that:
>>
>> 1. the engine always sends back plans that it acknowledges as ok and will
>> start simulating in due time. This is simple, correct but introduces a
>> delay between when the player gives the order until it is visualized
>> graphically. Will be annoying, I think.
>>
>> 2. let the client immediately store the given plans in the affected unit
>> and immediately visualize it. The plan is also sent to the server which
>> can then acknowledge it and send back something like "the plan is ok" or
>> "the plan is not ok". The first case would be the normal, but the latter
>> *will* happen some time. I can't think of actual cases right now, but I'm
>> sure there will be.
>>
>
>Hm. Option 1 is not very nice, and it's trying to be just a bit too
>simple/clever in avoiding the issue. I think we must handle the hard
>case as well, at some point.
I'm tempted to go with the idea that the orders/plans are given and stored
directly at the client. They are also sent to the server for processing,
of course. If something happens that causes the unit to react to
something, it will most likely mean that all the plans for the unit get
cancelled anyway.
Assume this:
player gives unit lots of orders
orders are sent to the server
server starts executing the orders and send back action
the unit starts to, say, move
Suddenly the unit is fired upon by a unit it did not see.
the server cancels all plans for the unit
unit either looks for cover or gets ready to fire back
This means that all the movement/whatever plans got cancelled immediately
and got replaced by a retreat, move into cover or a skirmish (or even an
assault).
I think it's perfectly ok to just forget about the elaborate path that the
player plotted for the unit when something unforseen like this happens,
what do you think? I don't want my unit to just wander on while it gets
shot to pieces...
> From another post:
>
> > I did a small fix that now simply adds plans to the units that issue
> > them. They are also sent to the server for manipulation and
>execution, > but the clients at leats get to visualize them immediately.
>
> > There still needs to be some added id or similar for the plans, so
> > that the server can say the client which plans are not acceptable and
> > which must be removed. Should be no biggie if it is really needed.
>
>What I'd say is the main point is that the rest of the _client_ system
>issuing plans and such is not aware of how this problem is solved. The
>client's actions should just be "add this order", "remove this", "can I
>add this order here?", and it needs to be able to ask "what's my current
>state/position and my next plans?" so it knows how to visualize them.
>But it definitely should not have to care "is plan X yet accepted?".
>That's handled by the some separate small client connection to the
>server. If the above idea of "plan id:s" is the way to go, good.
Ok.
Some kinds of id:s are needed, as there will be synchronization issues
soner or later, especially when there is combat and the server starts to
change the plans for units. What would otherwise happen if something like
this took place:
player gives unit a few movement orders
order received by the server and execution starts
These happen at the same time:
player cancels the last movement order
server cancels all plans due to combat, issues a rout
These happen at the same time:
the "cancel last plan" is received at the server, cancels the last
order, the rout!
the client is left with an active rout plan that never works
So each cancel should be equipped with a plan id so that the server can
cancel the correct plan, and ignore the cancel if it is irrelevant at the
time it arrives. I think that would solve that issue fully.
Or am I wrong in my assumptions?
--
In the Beginning it was a nice day.
-- Terry Pratchett & Neil Gaiman, Good Omens
|
|
From: Jan E. <ch...@in...> - 2004-04-13 05:51:45
|
On Mon, 12 Apr 2004, Marcus Alanen wrote:
>Uf. Taking a much-needed look at Civil's network handling, I must
>confess that the whole circus with threads feels odd.
>
>I think the server-side connection handling is actually racy somewhere,
>since my civil server hangs on the futex syscall when the client crashes
>with a traceback:
>
>futex(0x82420e0, FUTEX_WAIT, 0, NULL <unfinished ...>
>
>(futex == fast user-space mutex, Linux 2.6's new way to handle mutexes)
I wasn't aware that Python already utilized futexes, but apparently it
does?
>I actually have code that removes the client-side "poller thread", I was
>thinking of committing it. It would use socket.setblocking(0) to make
>sure that it can't block on receving network data. [1] Opinions?
Would that make it poll, and thus increase load? The original reason for a
thread was to get rid of the load that polling introduced?
>Similarly, I'd like to try to remove the server-side "poller thread",
>opinions?
The serverside should be simple to get rid of, it's basically just
something like this:
while 1:
sleep 1s
while socket.hasData():
socket.readNoBlock()
calculateStuff()
Yes, I'm all for getting rid of extra complexity if you think it's a good
idea. Please commit.
>[1] I just have to get myself Stevens' networking book(s). Saw one in
>the bookstore on Saturday, mere 90+ euros. Argh.
There are quite a few of them, actually. If you get the networking bible
be sure to get the newest edition. I have the old one and it's also good,
but the newer one has some more goodies. All Stevens books are excellent
toilet and bedtime reading. :)
--
In the Beginning it was a nice day.
-- Terry Pratchett & Neil Gaiman, Good Omens
|
|
From: Marcus A. <maa...@ra...> - 2004-04-12 15:03:41
|
Uf. Taking a much-needed look at Civil's network handling, I must confess that the whole circus with threads feels odd. I think the server-side connection handling is actually racy somewhere, since my civil server hangs on the futex syscall when the client crashes with a traceback: futex(0x82420e0, FUTEX_WAIT, 0, NULL <unfinished ...> (futex == fast user-space mutex, Linux 2.6's new way to handle mutexes) I actually have code that removes the client-side "poller thread", I was thinking of committing it. It would use socket.setblocking(0) to make sure that it can't block on receving network data. [1] Opinions? Similarly, I'd like to try to remove the server-side "poller thread", opinions? Marcus [1] I just have to get myself Stevens' networking book(s). Saw one in the bookstore on Saturday, mere 90+ euros. Argh. |
|
From: Marcus A. <maa...@ra...> - 2004-04-12 14:56:03
|
Jan Ekholm wrote: >>Hi, sorry I haven't been able to do anything at all for ages. I >>just finished my submission for the UML 2004 conference, so it'll be >>interesting to take a short brake and see what you've been up to. > Congratulations. Do you get to go to the conference too? Well, at least if it gets accepted. But the competition is hard, last year ~150 submissions and 30 accepted. I'm also organising a "doctoral symposium" for PhD students there. It'll be my ticket to the conference if my paper doesn't get accepted :-D > One thing that needs to get solved however is how the clients know what > plans to visualize. Imagine that a player gives a few movement orders to a > unit, followed by a wait and then something else. Right now the plans are > just sent to the server/engine for handling and the engine adds them to > the list of plans for the unit in its internal copy of the units. The > clients then receive action when the unit starts to execute the orders. > The clients have no knowledge of the plans that have been sent off, no way > to cancel them etc. > > I see two ways to fix that: > > 1. the engine always sends back plans that it acknowledges as ok and will > start simulating in due time. This is simple, correct but introduces a > delay between when the player gives the order until it is visualized > graphically. Will be annoying, I think. > > 2. let the client immediately store the given plans in the affected unit > and immediately visualize it. The plan is also sent to the server which > can then acknowledge it and send back something like "the plan is ok" or > "the plan is not ok". The first case would be the normal, but the latter > *will* happen some time. I can't think of actual cases right now, but I'm > sure there will be. > Hm. Option 1 is not very nice, and it's trying to be just a bit too simple/clever in avoiding the issue. I think we must handle the hard case as well, at some point. From another post: > I did a small fix that now simply adds plans to the units that issue > them. They are also sent to the server for manipulation and execution, > but the clients at leats get to visualize them immediately. > There still needs to be some added id or similar for the plans, so > that the server can say the client which plans are not acceptable and > which must be removed. Should be no biggie if it is really needed. What I'd say is the main point is that the rest of the _client_ system issuing plans and such is not aware of how this problem is solved. The client's actions should just be "add this order", "remove this", "can I add this order here?", and it needs to be able to ask "what's my current state/position and my next plans?" so it knows how to visualize them. But it definitely should not have to care "is plan X yet accepted?". That's handled by the some separate small client connection to the server. If the above idea of "plan id:s" is the way to go, good. Comments? |
|
From: Jan E. <ch...@in...> - 2004-04-05 10:17:09
|
I did a small fix that now simply adds plans to the units that issue them.
They are also sent to the server for manipulation and execution, but the
clients at leats get to visualize them immediately.
There still needs to be some added id or similar for the plans, so that
the server can say the client which plans are not acceptable and which
must be removed. Should be no biggie if it is really needed.
--
Om began to feel the acute depression that steals over every realist
in the presence of an optimist.
-- Terry Pratchett, Small Gods
|
|
From: Jan E. <ch...@in...> - 2004-04-02 08:17:43
|
On Fri, 1 Apr 2004, Mike Earl wrote:
>I think there are two separable issues here.
>
>>From what little I've seen of it, I'm inclined to agree that stacked
>plans are a mess.
:) Do you mean from a coding point of view or from a player point of view?
For a player I don't think it's that hard to understand, and probably
something that they would appreciate once they got used to. From the
engine side it's a bit more tricky, but a lot less tricky now than it was
in the turnbased world. Back then we always had to make sure that we could
restore a unit to the state it had at the beginning of an orders phase.
Now we don't have to do that kind of stuff anymore.
>OTOH, many players will probably find having to give so many orders
>annoying, and it does seem to work.
>
>My offhand inclination is to pull the current stacked plans, and add
>back later server-side AI that can act as an intermediary and take
>higher level orders. Is that actually any cleaner?
There is support for initial stuff like that. The "combat policy" is one
of those, as it defines how the unit should act when it has potential
targets within range.
This is a bit tricky, as pulling the support makes stuff easier for now,
but gives more work later when it all should be readded or when advanced
AI stuff has to be created. After some more thinking about it, I am a bit
inclined to keep things as they are, and try to solve the visualizational
problems instead, at the same time giving the engine a good way to remove
plans that can't be executed.
>Then again, client-side visualization may be the big problem anyway...
>haven't looked much at that and so can't say.
>
>More later; I have to get the kiddies to bed right now.
I read some older posts and saw you mention that about a year ago you (or
rather, your wife) was expecting your second kid. I hope everything has
been going well for you.
--
In the beginning the Universe was created. This has made a lot of people
very angry and been widely regarded as a bad move.
-- Douglas Adams
|
|
From: Mike E. <m....@co...> - 2004-04-02 02:02:36
|
I think there are two separable issues here. >From what little I've seen of it, I'm inclined to agree that stacked plans are a mess. OTOH, many players will probably find having to give so many orders annoying, and it does seem to work. My offhand inclination is to pull the current stacked plans, and add back later server-side AI that can act as an intermediary and take higher level orders. Is that actually any cleaner? Then again, client-side visualization may be the big problem anyway... haven't looked much at that and so can't say. More later; I have to get the kiddies to bed right now. - mikee |