Friday, 2007-02-23

*** tpb has joined #tp00:00
*** ChanServ sets mode: +o tpb00:00
*** mithro has quit IRC00:04
*** mithro has joined #tp00:44
mithrohowdy people00:48
nashhey00:53
mithronash: i just had a really cool idea :)01:00
nash?01:00
mithrotp04 supports "filter" negotiation01:00
nashWhich means what?01:00
mithroIE Encryption and Compression01:00
nashRight01:00
mithroI was wondering if there was a "32bit padded strings" filter, would it be okay?01:01
nashOnly useful if it is guaranteed on the server01:02
mithrothat way we don't break backwards compatibiltiy and you get your fast copying?01:02
mithronash: we could make it a "required" filter01:02
nashBecause if the server doesn't have it, then you need to write both anyway.01:02
nashHowever, a filter means the server needs to have code for both cases anyway, and the server can gain the most from it01:03
mithromaybe go the reverse then?01:03
nashA filter for TP03 protocol?01:03
mithro32bit padded strings is default, and have a "compat" filter, which removes the extra null bytes?01:03
nashWorks for me ;-)01:04
* mithro just was pondering01:04
* nash approves thinking of different ways to solve the problem ;-)01:04
mithrojust finishing up the highlights document01:04
nashSweet01:04
mithroi guess bz2 or 7z compression would be a better option for things like mobiles where bytes make a difference01:05
nashCan you explain to me how to do orders properly?  I don't get it - there isn't quite enough information in the protocol doc to describe how to issue them with lists01:05
nashNot really.  bz2 is block orientated01:05
nashThey are also CPU limited (especially when people insist on running java and crap on them)01:05
mithrodunno much about compression :)01:07
nashYou need something that can compress a stream well - gzip does that well.  bz2 takes the whole object and compresses it in large chunks01:08
nashthe -N options dictate how large chunks to use01:09
nashBIgger chunks == better compression01:09
nashOn small (read packet size) chunks... it would be useless, and you'd have to pad the messages up anyway01:09
nashAs far as data usage is concerned, I wouldn't worry about compression until you start sending media01:10
nashEverything else is too small to worry about01:10
mithroyou pay per kb on GPRS :)01:10
nashI know01:10
nashBut by the time you get to a stage where it is really an issue we shoudl mostly be on EVDO or EDGE networks01:11
mithronash: and telstra will still be charging you per kilobyte ;)01:11
nashActually go look at the charge rates for 'next-g' - it's charged at ~$100/Gb at the moment.  So thats what 0.01c/kb?01:15
nashAnd many plans include free usage01:16
mithroahh well, looks like it changed in the last 6 months01:16
mithrostill wireless sucks bandwidth wise (as soon as you get lots of people using it)01:17
nashI still think it is a non-issue at this time01:18
nashFilters allow it to be added later - all good.01:18
nashBut need to find perfect solution now?  Why bother?01:18
mithroi guess so :)01:20
mithrobtw by this time next year we sould have some type of MIDP client for tp :)01:20
nashWorry about getting the core things work01:20
nashWhich platform?01:20
nashLike you know MIDP implementations are less then portable.  And that generally as soon as you want to run a midp app on another device you need to modify the code.  Often substantially.01:22
nashUnless the situation has changed in hte past 12 months (/me doubts it)01:22
mithronash: it's not quite that bad - it depends on what you are trying to do01:23
nashI'll wait until I see it01:24
mithrousing any of the gaming api's it kind of sucks01:24
nashNot using the gaming APIs it sucked too01:24
mithroahh well, we'll find out the hard way then :)01:24
nashWe crashed a certain nokia phone by passing an empty string to a label ;-)01:24
mithroi won't say MIDP programming is easy01:25
mithro:)01:25
nashWe had someone resign over it ;-)01:25
mithroahh well, I'm getting students of the "Advanced MIDP Programing & Design Course" to do it as their major project01:27
mithroso it's not going to be all that pretty i'm guessing01:27
mithrobut then doing things on mobile phones suck anyway01:28
mithroanyway, just formatting the post now01:28
mithroarg, I'm nine IO pins short01:30
mithrowhich is such an inconvient number01:30
nashAnywya - I'll be back shortly - lunch01:31
mithrohttp://blog.mithis.net/archives/tp/15-tp-protocol-overview01:48
tpb<http://ln-s.net/JB-> (at blog.mithis.net)01:48
mithroback02:29
nashheyo02:29
nashI just got back too02:29
nashreading your overview now02:29
nashAnd I need you to go through the order stuff with me... ;-)02:29
mithronash: okay02:30
mithroorders are currently the most complicated part02:30
nashI noticed.  Although I think full designs may be non-trivial too ...02:30
mithroyes, but MiniSec doesn't support designs ;)02:31
mithroand there is a good "implimentation document" on how to do designs easily02:31
mithrothe actual GUI for Designs is hard to do, but the backend code isn't that hard02:33
nashYeah, I know02:34
mithrobackend code for orders is hard, while the gui is pretty easy02:34
nashNot as easy as I would like02:34
nashIt's a problem with too much conceptial knowledge.02:34
nashFor instance there is no way for an AI to really understand what a particular order does.02:35
mithronash: yes - knowledge of what an order does is ruleset defined02:35
mithro~(except orders with an ID under 1000)02:35
tpbBugger all, I dunno, mithro.02:35
*** Demitar_ has quit IRC02:36
nashSo ID < 1000 always does the same thing with the same name?02:37
mithronash: thats the idea currently - not set in stone yet02:37
nashokay02:38
nashAnyway - can you explain the argument type List (6) works?02:39
nashAlso you have a mistake in the order args:02:39
nash for the string type, the description reads: "A number textual string"02:40
mithrobtw i'm very lagged at the moment02:40
mithronash: that is a stupid description :)02:42
nashThat's okay - it's text ;-)02:42
nashYes, the description was written late at night... in a hurry ;-)02:42
mithroit's a string with length02:43
mithroand that really should be a UInt32 too02:43
mithrocan you log bug reports, web access here is being dicky02:43
nashshall do02:44
nashSo can you explain the list argument to me...02:44
nashI want to build a "1 Frigate hull" on a planet - what should it look like?02:44
mithrookay02:46
mithrothe way this work is a little contrived at the moment - should be fixed in tp0402:47
mithrofirst, insert an empty BuildFleet order02:47
*** Demitar_ has joined #tp02:47
* nash doesn't care... This is the only thing stopping my first AI from working...02:48
mithrothen retreve the empty buildfleet order02:48
mithrothe read only parts will now be populated with stuff02:48
mithroie02:48
mithroThe possible selections, A list of:02:48
mithro    * a UInt32, read only, id of what can be selected02:48
mithro    * a String, read only, String Name of can be selected02:48
mithro    * a UInt32, read only, Maximum number of can to be selected02:48
nashThen I send it back... Eek.  Two round trips to set an order :-(02:49
nashHow do I get the order back?02:49
mithronash: sadly, yes :(02:49
mithroGet Order02:49
mithroactually 3 round trips02:49
mithroInsert Order -> Okay02:50
mithroGet Order -> Order02:50
nashOkay - so when I do the insert order... how do I get the correct one back?  How do I find it again basically?02:51
mithroRemove Order -> Okay02:53
mithroInsert Order -> Okay02:53
mithroyou can pipline the first 2 and the second 202:53
mithrothat is more sucky then I remeber :/02:54
nashYeah...02:54
mithroso when you send an Insert Order with slot == 202:54
mithrothe order will end up in slot number 202:55
mithroonly tricky one is when you send with slot == -1 (which means it will end up in the last position)02:55
mithronash: can you log a feature request "Inserting new orders really sucks"?02:55
* nash notes he'll be trying hard to pipeline all of them... my client is pretty 02:57
nashmithro: So can I send in slot 833 even though there are no slots ready?02:57
nashAnd I shall bug report it02:57
mithronash: if you send in slot 833 you'll get a fail notice back02:58
nashThats no good.  A "experiment" set of slots would be nice so you can in parallel send a few orders in unique slots and get the responses back - so you could pipeline the lot safely03:01
nashAlso is the server guaranteed to act on messages in order?03:01
mithrothe "Prode Order" should be what you want03:01
mithroit's like doing an Insert but without actually doing an insert03:01
mithrohowever I don't think tpserver-cpp ever added support03:02
nashSo if do an "add" "read" "delete" in one go will it work03:02
nash:-(03:02
* nash notes that may be why he couldn't get probe order to work03:02
mithro A Probe Order frame gets an order as if the order given was put in the object's order queue. These probes should occur as if no orders currently exist on object and should have no side-effects. This is used to get the read-only fields for an order which is needed for good offline operation.03:03
mithroThe data in this frame is the same as an Insert Order frame. The server replies with the Order frame as if they were already on the object. Fail frames are possible if the order type is not allowed, or the object or order type doesn't exist.03:03
mithrowe should poke Lee about it03:03
mithrobut yes a "add", "read", "delete" should work as long as the add did03:03
mithrothe server will preform orders in order they are found in the queue03:03
nashYep... Just making sure there is no chance of 2 & 3 being swapped03:04
nashBut how do I get the probe order back?03:04
mithrobeing swapped?03:04
nashWith the add, read, delete  message queue03:04
mithroProbe Orders return an Order Frame, not a Okay03:04
nashAhh...03:04
nashBut do they work?03:05
nashYou think not?03:05
mithrobtw position 0 should always be "safe"03:05
mithronash: my guest is 85% likely not to work03:05
mithrobut as Probe and Insert orders are the same format just different id number it can't hurt to try03:05
nashExcept postion 0 may be used already.03:05
* nash gives it a burl03:05
mithroit's an Insert operation03:08
nashBTW: The big surprise is the fact I have an almost working AI - except orders ;-)03:08
mithrotreat the order queue as a Link List03:08
nashIf it was a linked list I'd be happy - but the problem is parallel ops mean I can't determine the current state without a state model locally - which is pants :-(03:09
nashEspecially since failures can really screw me up03:09
nashIf I could name order slots, or refer to them by some other ID it would be extremely useful for parallel ops03:10
nashHowever, does the server support order queues currently?03:10
mithronash: what you mean? "However, does the server support order queues currently?"03:11
nashmore then one order?03:11
mithroyes03:11
nashcool03:11
mithrovery much so03:11
nashIs there a limit at all?03:11
mithroUInt32-103:11
nashand RAM ;-)03:12
mithroyes, and the normal storage constraints03:12
nashThats the sort of limits I like ;-)03:12
nashYes - sizeof(void*) comes to mind ;-)03:12
mithromost tp limits are of the normal storage constraint type I think03:13
*** Demitar_ has quit IRC03:14
nashThats good to know03:15
mithrothe most I have done in one queue is 32803:16
* nash doesn't want to think about what he would do if this AI was up to scratch...03:17
nashhmm.. seem to still get failures.03:20
mithroon?03:23
nashprobe03:24
* nash will check code again in a second03:24
* mithro checks the tpserver-cpp source03:25
nashI could easily be screwing it up however03:25
nashI'm tlking on 2 irc channels, and writing two programs here...03:25
mithrovoid Player::processProbeOrder(Frame * frame){03:26
mithro  Logger::getLogger()->debug("doing probe order frame");03:26
mithro03:26
mithrolooks like there is support03:26
mithrodunno if it works03:26
nashProbably me then03:26
mithrodon't be so sure ;)03:27
mithrobtw make sure you are only sending valid order types to the correct objects03:27
nashWell I'm sending the wrong length for a start...03:29
nashOkay here is what I'm sending03:30
nashbuf[0] = htonl(o->oid); /* What */03:30
nashbuf[1] = htonl(-1); /* Slot */03:30
nashbuf[2] = htonl(build_id); /* Order type */03:30
nashbuf[3] = htonl(0);       /* Number of turns == 0 */03:30
nashbuf[4] = htonl(0);       /* Resource list */03:30
nashbuf[5] = htonl(0);      /* List : Possible selections */03:30
nashbuf[6] = htonl(0);/* List: # items */03:30
nashDoes that look right?03:30
nashAhh...03:34
nashfound one issue03:34
nashAnd I crashed the server :-(03:36
nash2007-02-23 14:39:21 < Debug > [0;mdoing probe order frame03:38
nash2007-02-23 14:39:21 < Debug > [0;mlen < 0 or length < upackptr + len, len = -1472983288, length = 2803:38
nash2007-02-23 14:39:21 < Debug > [0;mCaught exception03:38
nash2007-02-23 14:39:21 < Debug > [0;mRemoving a file descriptor 203:38
nash2007-02-23 14:39:21 < Info  > [0;mConsole closed03:38
nash2007-02-23 14:39:21 < Info  > [0;mTP-server exiting03:38
*** Demitar_ has joined #tp03:38
nashmithro: You there?03:44
mithroyes03:44
mithrosorry was working on another screen03:44
mithroif you say my name my xchat flashes03:44
nashokay03:44
mithroouch :)03:45
mithronash: no that doesn't look right at all03:45
mithrolog a bug report about chasing the server however03:46
nashI shall03:46
mithroi think you are miss-understanding something here03:46
mithroFirst you have to get the "order descriptions" from the server, they describe what "extra data" order type have in them03:46
mithroIE A Nop only has a number of turns03:47
mithroA BuildFleet order has a List of Items03:47
mithroA MergeFleet has a Target03:47
mithro(actually a BuildFleet has a List of Items - "what to build" and a String - "Name of the new fleet")03:48
nashI know that03:48
mithroso why are you sending a numbers of turns on a buildfleet?03:49
mithroor am I just going mad?03:49
nashBecause the order format has that - which must be set to 0 when the client sends it.03:49
mithroyes it turns out i'm just going mad :P you are right03:50
nashOkay - cool03:50
nashIt's a bit weird I have to say...03:50
* nash thinks the insert order frame should be different to the order frame03:50
mithroyes the above insert order frame looks fine now I'm on the same page as you :)03:51
nashGood03:51
nashIt's not me being crazy then03:52
nashThe error message I'm getting is something to do pulling out a string!?03:52
mithroahh03:53
mithroyour missing03:53
mithrobuf[6] = htonl(0); /* List: fleet name */03:53
mithros/6/7/03:53
nashEek... the server by the reads off the end of the buffer03:53
nashhad that03:53
mithrowhy not start with a NOp order? :)03:54
nashWhy?  If I can get Build Move & colonise working my first AI is working.03:54
nashExcellent - got it03:55
mithrowhat was it?03:55
nashWait.03:57
nashThat still doesn't make sense03:57
nashI submitted the order okay, but how do I get the arg list back?03:58
nashI thought I was to do a probe with no args to get the arg list back03:58
mithroi guess a nop isn't useful for an AI04:00
mithroor Minisec really :)04:00
mithronash: when you do a probe with no args it should return a "Order" Frame04:01
nashBut I do no args... and it barfs04:02
mithrowhich means the "Possible Selections list" of the order frame will be non-zero04:03
nashOkay - shall I paste what I'm sending now - and you can tell me if it makes sense to you?04:04
mithrookay04:04
nashbuf[0] = htonl(o->oid); /* What */04:04
nashbuf[1] = htonl(-1); /* Slot */04:04
nashbuf[2] = htonl(build_id); /* Order type */04:04
nashbuf[3] = htonl(0);       /* Number of turns == 0 */04:04
nashbuf[4] = htonl(0);       /* Resource list */04:04
nashbuf[5] = htonl(0);      /* List : Possible selections */04:04
nashbuf[6] = htonl(0);/* List: # items */04:04
nashbuf[7] = htonl(0);/* strlen */04:04
nashSo I have a list of 9 items to build, and a name of 0.04:05
nashIf I send no args... it also kills the server04:05
nashmithro: thoughts?04:14
* nash pokes mithro04:20
* nash pokes mithro with a large post04:36
mithrosorry05:25
mithrogot called away05:25
mithroyou still there?05:26
mithronash: ping05:29
nashI am now05:30
nashmithro: :-)05:34
mithro:)05:34
mithroso did you get any further?05:35
nashnot really haven't done any more since i pasted above05:37
nashbeen doing this worky stuff.05:37
nashSo should teh argument less packet work?05:40
mithrono05:45
mithrothe argumentless packet should return a fail05:46
* nash notes the argless packet returns a "socket closed"05:46
mithrothat is wrong :)05:47
mithrohrm, intresting...05:48
nashI've reported the bug05:51
mithroi think i found your problem05:51
nash?05:52
mithrobuf[7] = htonl(0); /* Maximum String Length */05:52
mithrobuf[8] = htonl(0); /* Empty String */05:52
mithrotpserver shouldn't be acting the way it is on the other hand too05:53
nashStill kills the server05:54
nashNope - fixes it when I type it correctly.05:54
*** tpb has joined #tp06:00
*** ChanServ sets mode: +o tpb06:00
mithroso it's kind of working?06:12
nashYeah06:12
nashThanks06:12
nashNeed to actually parse the response... see if I can make sesne fo the lsit06:13
nashbut that will wait until I get home06:13
nashThere needs to be a lot better way of doing this BTW06:13
*** Demitar_ has quit IRC06:16
mithronash: i think you are right06:16
nashI don't think I would have ever figured it out by myself06:17
nashI would have had to go read more server code06:17
nashor other clients06:17
mithrodid the probe work?06:18
mithroor did you send an insert06:18
nashProbe worked.06:18
mithroI have to admit, I find you way of doing it a bit weird06:18
nashWhich bit?06:19
tpbSomebody said Which bit is that, nash06:19
mithrothe way I wrote the protocol stuff is to create a "struct" parser06:19
mithrothen I just give it the structure of the packet06:19
mithroIE with the above it would be something like06:19
nashAhh.. I have that too - but it is easier to debug somethign where I build it manually06:19
nashEspecially for things without strings06:20
nashtpe_util_parse_packet(datastream, "formatstring", &o1... ); for instance06:20
mithroparse("III[ISI][II]IS", o->oid, -1, build_id, 0, void*, void*, 0, "");06:20
nashYep06:20
nashI do06:20
mithroahh cool :)06:20
mithrobtw you can turn on debugging in tpclient-pywx and see the stuff it sends over the wire06:21
mithroRed is to the server, Green is from the server (or possibly the other way around)06:21
nashI'd like to implement it myself as much as possible - to make sure the protocol is correct - independant implementation as much as possible06:22
mithroI havn't had to deal with raw protocol in a long time :)06:24
* mithro migth think of heading home himself06:26
nashgot a while yet06:26
nashNeed to rendevous with my wife on the way... and she doesn't finish for a while :-(06:26
* nash wants to go home too 06:26
nashAnywya - have a good one06:29
nashTalk to later - I'll prob be online tonight again06:30
nashI'll definitly be trying to finish that AI ;-)06:30
*** Demitar_ has joined #tp06:40
*** nash has quit IRC06:45
*** Demitar_ has quit IRC07:20
*** Demitar_ has joined #tp07:34
*** nash has joined #tp07:55
* nash waves07:56
mithronash: heading home now08:03
mithrosee ya!08:03
nashokay08:03
nashtalk to you later08:03
*** Demitar_ has quit IRC08:19
*** mithro has quit IRC08:24
*** Demitar_ has joined #tp08:42
*** mithro has joined #tp09:12
*** Demitar_ has quit IRC09:17
*** nash has quit IRC09:17
mithroopps09:20
*** nash has joined #tp09:29
*** Demitar_ has joined #tp09:33
mithrowb nash09:43
nashheyo09:46
nashmithro: BTW: Probe order seems broken ;-/09:47
mithro:/09:47
mithrowhats probe returning you?09:47
nashThe order type is '0' when it gets back09:47
nashThe response is oid:1 slot:1 type: 0 Turns: 309:48
nashthats the first 4 values in the body09:51
nashAhh... found it - another twek to what I'm sending - and now I'm getting something sane09:52
mithronash: what are you getting now?09:53
nash76 -1 2 009:53
nashThe -1 is a bit strange09:54
mithrofor a order probe?09:55
nashI'd expect to betold where it would be inserted09:56
nashokay - seem to be on my way09:57
mithroreturn from an Insert is Okay Frame?09:59
nashGive me a few minutes...eating ;-)10:00
nashYou know the annoying thing is, I could have guessed the '2' parameter was what I needed from all of that...10:02
mithro2 parameter?10:04
nashbuild a frigate...10:04
mithroahh10:11
CIA-20[email protected] * libtpclient-py/ (setup.py tp/__init__.py tp/__init__.py):10:16
CIA-20pkg_resources fixes.:10:16
CIA-20 Fixes bug [1666745]. Should also work in cases where pkg_resources doesn't exist.10:16
CIA-20[email protected]t * libtpclient-py-dev/ (setup.py tp/__init__.py tp/__init__.py):10:16
CIA-20pkg_resources fixes.:10:16
CIA-20 Fixes bug [1666745]. Should also work in cases where pkg_resources doesn't exist.10:16
CIA-20[email protected] * libtpproto-py/ (setup.py tp/__init__.py tp/__init__.py):10:17
CIA-20pkg_resources fixes.:10:17
CIA-20 Fixes bug [1666745]. Should also work in cases where pkg_resources doesn't exist.10:17
mithronash: any more luck?10:19
nashTrying now10:20
nashOhh... a new segv - on my end10:22
mithrookay :)10:24
nashstrange... it's the code was working fine before...10:28
mithrohow do you debug, use gdb?10:29
nashessentially (ddd generally)10:30
nashOf course for this a bit of printf is actually useful to just dump shit out10:30
mithrois there a printf which prints binary safe output?10:31
nash%x works fairly well10:32
mithro%x is for ints?10:35
nashYes10:36
*** Demitar_ has quit IRC10:37
nashNow the insert is failing :-(10:41
* nash reverts to painful processing10:45
nashWhen I'm sending back messages do I need to include the possible options?10:47
nashmithro: ?10:51
tpbhmm... mithro: is this ok, nash10:51
mithronash: no10:51
nashtpb: ignore nash10:51
*** Demitar_ has joined #tp10:51
mithro"read-only" fields can be empty in every send10:51
nashSo I need to send it back - but empty?10:52
* nash thinks sending empty fields is stupid10:52
nashbingo... problem is nash is an idiot10:58
nash:-)10:59
nashBlerg - send a bad frame... crash the server...11:01
mithronash: that is bad11:04
mithrolog lots of bug reports about it :)11:04
nashI've already put one in11:05
nashwhere is llnz when I want to bitch to him...11:05
mithrohe he11:05
*** Demitar_ has quit IRC11:07
nashmithro: Sorry to be a pain... but I want to check this...11:10
mithronash: it's fine11:11
mithroit's been good to have a fresh pair of eyes11:11
nashMessage is : <oid> <slot (-1)> <build id (2)> <turns 0> <resource list (0)> <# items to build (1)> <What to build (2 - frigate)> <how many (1)> <string (0 length)>11:14
nashApparently the length is wrong on the server11:17
nashmithro: how does that look?11:21
mithrohold on a sec11:21
nashyep11:22
mithrohrm, that looks okay11:23
mithroi would have put it like this11:23
nash?11:24
mithro Message is : <oid> <slot (-1)> <build id (2)> <turns 0> <resource list (0)> <to build list (1 length) [<frigate (2), how many (1)>]> <string (0 length)>11:25
nashClearered - so still 9 args in length right?11:28
nashThat all seems sane?11:28
mithrohrm, seems so...11:28
mithrois it not working?11:29
nashNot at all11:30
nash2007-02-23 22:32:59 < Debug > [0;mlen < 0 or length < upackptr + len, len = 137824000, length = 3611:31
mithrohrm...11:31
nashLooks like it is reading garbage again11:31
mithrohrm...11:33
nashI'm sending length 36 - obviously11:34
nashBest place to look?11:37
mithrohold on a sec11:37
mithrocan you do a byte dump of what you are sending?11:39
mithroincluding the header11:39
nashswapped or unswapped?11:40
mithroswapped11:40
nash00000040 ffffffff 00000002 00000000 00000000 00000001 00000002 00000001 00000000 6172edb711:42
nashWire:40000000 ffffffff 02000000 00000000 00000000 01000000 02000000 01000000 00000000 b7ed7261 Sending Seq 17 Type 12 Len: 36 [(nil)]11:42
nashOkay a bit confusing but...11:42
nashFirst line is what I'm passing in11:42
nashSecond line is byte swapped after htonl()11:42
mithrohrm, that doesn't look right11:43
nashThe sequence is 17, message type 12. Length = 36 (the nil is for my callback - ignore it)11:43
nashIgnore the last byte - I dump a extra word11:43
nashs/byte/word11:43
nashyes, no, not enough elephants?11:48
nashmithro: ?11:51
tpbhmm... mithro: is this ok, nash11:51
nashtpb: help11:51
tpbnash: (help [<plugin>] [<command>]) -- This command gives a useful description of what <command> does. <plugin> is only necessary if the command is in more than one plugin.11:51
nashtpb: help plugins11:52
tpbnash: Error: There is no command "plugins".11:52
nashtpb: help plugin11:52
tpbnash: (plugin <command>) -- Returns the plugin(s) that <command> is in.11:52
mithronash: sorry this is taking me longer then I would have previously11:52
nashtres cool11:52
mithroi've found an extra int from somewhere11:53
nashIs that the list of options from the server?11:54
nashis it a zero?11:54
nashYep11:55
nash  int selsize = f->unpackInt(); // selectable list (should be zero)11:55
mithrono11:56
nashSure? In ListParameter::unpackFrame there is that line11:58
nashdoesn't help however11:59
mithro0x54(T) 0x50(P) 0x30(0) 0x33(3)12:02
mithro0x0 0x0 0x0 0x2912:02
mithro0x0 0x0 0x0 0xc                         <-- type12:02
mithro0x0 0x0 0x0 0x33(3)                     <-- length12:02
mithro0x0 0x0 0x0 0xb                         <-- Object ID12:02
mithro0x0 0x0 0x0 0x0                         <-- Slot number12:02
mithro0x0 0x0 0x0 0x2                         <-- Order Type ID (Build Fleet)12:02
mithro0x0 0x0 0x0 0x0                         <-- Number of Turns12:02
mithro0x0 0x0 0x0 0x0                         <-- Resource List - Length 012:02
mithro0x0 0x0 0x0 0x0                         <-- Possible Selections List - Length 012:02
mithro0x0 0x0 0x0 0x1                         <-- Selection List - Length 112:02
mithro0x0 0x0 0x0 0x2                     <-- Selection Type, Frigate Type12:02
mithro0x0 0x0 0x0 0x1                     <-- Selection Amount12:02
mithro0x0 0x0 0x0 0x0                         <-- ?12:02
mithro0x0 0x0 0x0 0x7                         <-- Name String (Length)12:02
mithro0x41(A) 0x20( ) 0x46(F) 0x6c(l) 0x65(e) 0x65(e) 0x74(t)12:02
nashHmm....12:03
mithroi can't figure out where that extra 0 is coming from12:03
nashcan't see where it is dealt with either12:03
mithroo!12:04
mithroI know now12:04
nash>12:04
nash?12:04
mithro0x54(T) 0x50(P) 0x30(0) 0x33(3)12:05
mithro0x0 0x0 0x0 0x2912:05
mithro0x0 0x0 0x0 0xc                         <-- type12:05
mithro0x0 0x0 0x0 0x33(3)                     <-- length12:05
mithro0x0 0x0 0x0 0xb                         <-- Object ID12:05
mithro0x0 0x0 0x0 0x0                         <-- Slot number12:05
mithro0x0 0x0 0x0 0x2                         <-- Order Type ID (Build Fleet)12:05
mithro0x0 0x0 0x0 0x0                         <-- Number of Turns12:05
mithro0x0 0x0 0x0 0x0                         <-- Resource List - Length 012:05
mithro0x0 0x0 0x0 0x0                         <-- Possible Selections List - Length 012:05
mithro0x0 0x0 0x0 0x1                         <-- Selection List - Length 112:05
mithro    0x0 0x0 0x0 0x2                         <-- Selection Type, Frigate Type12:05
mithro    0x0 0x0 0x0 0x1                         <-- Selection Amount12:05
mithro0x0 0x0 0x0 0x0                         <-- Maximum Length of the following string12:05
mithro0x0 0x0 0x0 0x7                         <-- Name String (Length)12:05
mithro0x41(A) 0x20( ) 0x46(F) 0x6c(l) 0x65(e) 0x65(e) 0x74(t)12:05
mithrothere12:05
mithroso now to compare to yours12:06
nashMissing that maximum length12:06
mithroyes12:06
mithrothats a bit nasty - it's very easy to confuse the maximum length and the actual length of the string12:06
nashI'm just not sending it, and the server is foolishly reading uninted data for my string (taking my string as max, and uninit as data - ie a really strange string)12:08
mithroyour bug reports  have increased our activity rating :)12:09
nashI'll let you submit this one if you like ;-)12:09
nashgot a MsgOK - that fixed it12:10
mithrohe he okay12:10
mithrowhich one?12:10
nashThat overflow bug12:11
JLPmorning all12:12
nashhow long does it take to build a frigate?12:12
mithronash: 4 turns12:12
mithroor is it 2?12:12
nashwait 2 minutes then... ;-)12:12
mithrocan't remeber :)12:12
nashAnd I'll tell you how it foes12:12
nashs/foes/goes12:12
nashOh - got a message - saying it is complete - but I can't see it?12:13
mithrohrm?12:13
mithrobtw, the message should contain a reference to the new object?12:13
* nash isn't handling that yet ;-)12:14
nashSo it may well12:14
nashIs it in orbit around a sun or a planet?12:14
mithroplanet probably12:15
nashSo ships can be at either?12:15
nashWhen I do a colonise - do I need to send to star or planet?12:15
mithroa planet12:17
mithro"Stars" don't really exist12:17
mithroStarSystems are just container objects12:17
nashokay12:17
mithrothey actually do nothing for AI users :)12:17
nashokay12:17
mithrosame with galaxy12:18
mithrouniverse is useful because it tells you the current turn12:18
mithrobtw what did you think of the highlights?12:20
nashgood12:21
nashA few things I'll probably comment on, but should be a good improvement12:21
mithronash: i need comments on my blog ;)12:24
mithroon a side note I might forward to the mailing list12:24
nashThen I'll reply ;-)12:24
nashOkay - how do I send a ship to a planet, as opposed to a star?12:26
nashMove order jsut takes a coord?  And coords are the  same for a star and it's planets?12:26
nashNope... sorry - they are slightly different12:27
nashSlightly12:27
mithroyeah, very slightly :)12:27
nashBTW: Where is the intercept order?12:27
mithrothere is no intercept order12:30
mithrojust calculate where to move yourself :P12:30
nashSilly - then you can never catch a ship if they want to avoid you - even if you are faster.12:31
mithrowhy?12:31
nashbecause the person being chased slightly adjusts course each turn and you have to guess12:32
nashAn AI routine to do that would be easy12:32
mithroahh12:33
mithrolog a bug report :)12:33
nashmithro: The string issue is more to do with the fact the server throws an exception12:36
mithronash: about the intercept order, log a bug report :)12:38
nashI did12:38
nashshould be there now12:38
mithrocool12:40
nashCool - I have so many ships my popup runs out of space..,12:44
nashMy client now handles turns ending... Now I just need to get it to colonise ;-)12:44
mithrocool12:44
nashThats the AI bit...12:45
nashBTW: The AI is scuch you can turn it on or off ;-)12:45
mithrocool12:46
mithroso where are these screenshots :)12:46
nashStill coming... Want a screenshot of the AI in motion12:47
mithroyes12:47
nashLots of ships in orbit is boring12:47
CIA-20[email protected] * web/dev/documents/ (protocol3.php protocol3.php protocol3.php protocol3.php): Fixed the small error and added a note.12:48
* nash waits to see a new turn - and there it was... awesome...12:49
mithrocool12:50
nashHmm... there is still a few issues... the client seems to get some of the data multiple times on a new turn...12:51
nashThats one thing I need to report - objects should have  parents12:52
mithrowhy?12:55
nashJust because it makes things a lot easier for me12:56
nashIt's a request...12:56
mithroyou can easily build the parent easy enough/12:56
nashBTW: 18 bugs12:56
mithrohe he12:56
nashI can build the parent, but every time an object updates I need to check it's list of children and see if it changed, and update them as well12:57
nashThe way I do it at the moment is to just delete all the parent links, update the object, then relink the children12:58
mithronash: ahh okay, send an email13:01
nashdid a bug13:01
nashWon't get lost there13:01
mithrookay13:02
mithrowe are redoing objects anyway - so it's a good time13:03
nashcool13:03
nashActually I don't have any issues with objects as they stand...13:03
nashbut still13:03
mithronash: well we have to define all objects seperately13:04
nashYeah, but you can't really abstract it too far - they do have a meaning aside from a list of properties13:04
mithroI think AI's are always going to be Ruleset specific13:05
nashOh yea13:06
nashand clients I think need at least a strong hint13:06
mithroyeah, good hinting is the hard part13:07
nashmore robust then AIs - but it works best if they know what it is13:07
mithroI would be intrested on your thoughts about "[tp-devel] Object property brain dump" thread13:10
nashRemind me when I'm more awake13:11
nashAnyway, I'm heading to bed...13:12
mithronash: okay have a good night13:12
nashYou too13:12
*** nash has quit IRC13:12
*** JLP has quit IRC14:29
CIA-20[email protected] * libtpproto-py/tp/netlib/ (common.py common.py): (log message trimmed)16:35
CIA-20Adding tlslite support.:16:36
CIA-20 tlslite is a pure python implimentation of TLS. It supports a bunch of libraries16:36
CIA-20 to make the library much faster (OpenSSL, pyCrypto, pyGMP, etc)16:36
CIA-20 For some reason when connecting to my local tpserver-cpp the following patch16:36
CIA-20 needs to be applied to tlslite.16:36
CIA-20 Lines around 73 need to be change to look like the below.16:36
*** JLP has joined #tp17:10
*** mithro has quit IRC19:59
*** mithro has joined #tp20:44

Generated by irclog2html.py 2.5 by Marius Gedminas - find it at mg.pov.lt!