Advertisement
Guest User

bots

a guest
Mar 28th, 2018
997
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 69.14 KB | None | 0 0
  1.  
  2. Session Start: Sat Mar 24 22:17:47 2018
  3. Session Ident: #Earthempires
  4. [22:17] * Now talking in #Earthempires
  5. [22:17] * Topic is '#earthempires Welcome to Earth Empires! If you need help or a moderator join #help (please be patient).'
  6. [22:17] * Set by Primeval on Fri May 19 16:34:36 2017
  7. [22:17] <EarthEmpires> [Marshal] I join channels, slap a bunch of people and then quit.
  8. [22:18] <04Marshal> just in time to hear qz's lesson
  9. [22:29] <qzjul> hihi
  10. [22:30] <qzjul> ya in theory lol
  11. [22:30] * Akula licks qz
  12. [22:30] <qzjul> o.O
  13. [22:31] <qzjul> Okay, so who's here for the seminar? =D
  14. [22:31] * Marshal raises hand
  15. [22:32] <qzjul> I'm going to collect some useful links, but maybe get some people started on setup and such
  16. [22:32] <Gerdler> me too
  17. [22:32] <04Marshal> i', here to log it
  18. [22:32] <qzjul> good stuff
  19. [22:32] <qzjul> what OS are you guys all running?
  20. [22:32] <Gerdler> win 8 :(
  21. [22:32] <qzjul> the readme for the bots is... old
  22. [22:32] <04Marshal> win10 1709
  23. [22:32] <qzjul> so part of my idea of this was to kindof update it based on running through it with you guys
  24. [22:33] <qzjul> okay so a couple windows things... kk I have a windows box that can run it too
  25. [22:35] <04Marshal> centos in vm
  26. [22:35] <qzjul> Which of you are interested in contributing, and which are interested in just running it and following?
  27. [22:35] <qzjul> To just clone & run: Clone the project from github: https://github.com/jhaagsma/ee_npc
  28. [22:35] <04Marshal> <---------- logging lesson for future generations
  29. [22:36] <Akula> LIES ! the logging will lead to it being included in paper manufacture
  30. [22:37] <Getafix> I'm on Win 10 too
  31. [22:38] <Gerdler> Im interested in working on the code. I have been playing around with it on notepad++ already and phpdesigner too before, just never managed to run it.
  32. [22:38] * Joins: mob (mob@EE-E347D6DE.lightspeed.hstntx.sbcglobal.net)
  33. [22:39] <qzjul> okay, perfect, i was just cleaning up some of the README
  34. [22:39] <qzjul> To Contribute:
  35. [22:39] <qzjul> Fork the project, using the fork button in Github
  36. [22:40] <qzjul> Then clone it locally, as described in the Run On *** sections
  37. [22:40] <qzjul> Then clone it locally, make changes, and push them to github.
  38. [22:40] <qzjul> When you're happy with them, create a pull request, and I'll merge in your changes after reviewing them. It would be better to make smaller changes at a time, so I can digest them ;-)
  39. [22:40] <qzjul> I'm going to fire up my Windows box and see where it's at
  40. [22:40] <Getafix> Do we still need to download the x86 Version of the MS VC package, or a newer version?
  41. [22:43] * Joins: Don_TOB_{FR} (Mibbit@EE-CBE7FDFA.tbcn.telia.com)
  42. [22:45] * Joins: qz|win10 (qzjul@975B237.84E9E112.C165DEF8.IP)
  43. [22:46] <qz|win10> okay, i don't know what i missed, i'm going to switch back and forth a bit
  44. [22:46] <Getafix> also, I'm reading the instructions for "To Run On Windows", and I don't see the file php_curl.dll in c:\php\ext
  45. [22:46] <qz|win10> ah not much
  46. [22:46] <04Marshal> <Getafix> Do we still need to download the x86 Version of the MS VC package, or a newer version?
  47. [22:46] <qz|win10> kk, that was for a way old version of PHP, and I'm not sure that's valid anymore
  48. [22:47] <qz|win10> newer version
  49. [22:48] <qz|win10> 7.2 ideally i think
  50. [22:48] <qz|win10> i'm already using PHP 7 features
  51. [22:48] <qz|win10> https://windows.php.net/downloads/releases/php-7.2.3-Win32-VC15-x64.zip
  52. [22:50] <qz|win10> you don't have php_curl.dll in php/ext ??
  53. [22:52] <Getafix> not unless its in one of the sub-directories of EXT
  54. [22:52] <Getafix> I have the version 7.2 installed now
  55. [22:52] <qz|win10> hm, it was right there in /ext
  56. [22:52] <qz|win10> did you get the one i pasted above?
  57. [22:53] <qz|win10> i might have gotten the thread-safe version
  58. [22:53] * Joins: Paladine (Mibbit@EE-F33549F1.bchsia.telus.net)
  59. [22:53] <qz|win10> hello! just getting the installation process figured out
  60. [22:53] <Paladine> sounds good!
  61. [22:53] <qz|win10> I see php_curl.dll in both versions of x64 at least
  62. [22:54] <Paladine> php on windows sounds like a nightmare, lol
  63. [22:54] <qz|win10> haha ya
  64. [22:54] <qz|win10> well
  65. [22:54] <qz|win10> not that bad
  66. [22:54] <qz|win10> I normally use linux, but so far we have 2 windows users, so NP
  67. [22:54] <qz|win10> Paladine, what OS?
  68. [22:54] <Paladine> Mac right now, but I have the bot running on a freebsd droplet
  69. [22:54] <qz|win10> if you want to Contribute, fork https://github.com/jhaagsma/ee_npc and clone locally; otherwise just clone it
  70. [22:55] <qz|win10> ah nice, you're ahead of the game then!
  71. [22:55] <mob> think i could run the bot on my raspberry pi 3 b+
  72. [22:55] <qz|win10> yep, absolutely
  73. [22:56] <qz|win10> a pi has more than enough go for the bots
  74. [22:56] * pang waves
  75. [22:56] <Paladine> yeah seems pretty resource low to keep it run
  76. [22:56] <qz|win10> hihi pang
  77. [22:56] <Paladine> running*
  78. [22:57] <qz|win10> yea; given i have almost 3000 countries running over 4 copies of the bots, and it doesn't even register on my CPU, not too bad
  79. [22:57] <mob> lol i have so many pi's its crazy
  80. [22:57] <qz|win10> pi's are useful!
  81. [22:57] <mob> i got one with pi hole on it to vlock adds
  82. [22:57] <mob> works great is also stops trackinf
  83. [22:58] <Paladine> I have been thinking of doing one of those too, just runs as a dns server?
  84. [22:58] <mob> its great
  85. [22:58] <mob> simple to do
  86. [22:59] <jayr> stfu mob
  87. [22:59] <Requiem_> hey qz can you make a written tutorial sometime? i cant be at my computer right now
  88. [22:59] <Gerdler> I think QZ main purpose with the bots is to be rank 1 in the leaderboard for total NW.
  89. [22:59] <Gerdler> req there is kindof a written tutorial
  90. [22:59] <qz|win10> Requiem: https://github.com/jhaagsma/ee_npc has a README
  91. [22:59] <qz|win10> that i'm updating
  92. [22:59] <Requiem_> ok thank you!
  93. [23:02] <qz|win10> I'm just trying to clone the damned thing myself onto this machine, give me a minute
  94. [23:02] <qz|win10> windows always makes things a bit trickier
  95. [23:03] <Paladine> haha, sounds like a job for vagrant
  96. [23:04] <c3lph1> Yo ppl
  97. [23:06] <qz|win10> hey hey
  98. [23:06] <qz|win10> okay
  99. [23:06] <qz|win10> i missed step 12
  100. [23:06] <mob> #Bottalk
  101. [23:07] <Getafix> I have the correct version of php for Windows now and I see the php_curl.dll file and am moving ahead slowly
  102. [23:07] <qz|win10> I clearly have caused some errors in country creation
  103. [23:07] <qz|win10> but, working now
  104. [23:07] <qz|win10> awesome@Getafix
  105. [23:08] <qz|win10> If you just started, it will spew errors on country creation
  106. [23:08] <qz|win10> but i can fix some of those
  107. [23:09] <c3lph1> Is there any chance where we can have a server which has programmable bots and players? :P
  108. [23:09] <Gerdler> we do
  109. [23:09] <Gerdler> the ai server
  110. [23:09] <c3lph1> Players don’t play there
  111. [23:09] <Gerdler> I have played there
  112. [23:10] <Gerdler> I won it
  113. [23:10] <Gerdler> :P
  114. [23:10] <qz|win10> technically you can play on it
  115. [23:10] <qz|win10> it's not really the idea
  116. [23:10] <Paladine> Yeah ai server lets you have 25 bot countries
  117. [23:10] <qz|win10> but it works
  118. [23:10] <Gerdler> what do you mean technically? I wonned it! sure can play it!
  119. [23:10] <04Marshal> lol
  120. [23:10] <c3lph1> It would be easier to program / test bot in real environment.
  121. [23:10] <qz|win10> haha i mean there's no link on the portal ;-)
  122. [23:11] <Gerdler> I type in /ai :)
  123. [23:11] <04Marshal> no link to alpha or alpha ffa either
  124. [23:11] <qz|win10> aplha and alphaffa have links!
  125. [23:11] <qz|win10> you just need to check some box
  126. [23:11] <Gerdler> really?
  127. [23:11] <Gerdler> I always just typed it in
  128. [23:11] <c3lph1> On ai server the prices are all very unrealistic.
  129. [23:12] <Gerdler> yeah that would be what we want to fix
  130. [23:12] <qz|win10> or... I need to check some box?
  131. [23:12] <qz|win10> I thought it was available in preferences, but maybe not
  132. [23:12] <04Marshal> yes since i can't see boxes
  133. [23:12] <04Marshal> related to alphas
  134. [23:12] <Getafix> now I can't find the line ;extension=php_curl.dll in php.ini-development
  135. [23:12] <qz|win10> ya you just have to add it
  136. [23:12] <qz|win10> I updated the README to say that now
  137. [23:12] <Gerdler> Geta search for curl
  138. [23:12] <Getafix> any particular place?
  139. [23:13] <qz|win10> probably after [curl]
  140. [23:13] <Gerdler> its far down
  141. [23:13] <Getafix> ok I'll try that
  142. [23:14] <Gerdler> line 887
  143. [23:15] <c3lph1> Anyone here is a web designer?
  144. [23:15] <jayr> hmmm
  145. [23:15] <qz|win10> man, the windows instructions are so much harder *sigh* lol
  146. [23:15] <qz|win10> Definitely not a web designer, pang is good at that stuff though
  147. [23:15] <Gerdler> somehow you nailed it
  148. [23:15] <c3lph1> I hate windows lol
  149. [23:15] <Paladine> Web developer, but usually have the designs provided lol
  150. [23:15] <qz|win10> yea, design is a whole other thing
  151. [23:16] <c3lph1> Which language Paladine ?
  152. [23:16] <Paladine> WordPress/php
  153. [23:16] <Gerdler> QZ its working for me somehow
  154. [23:16] <pang> I do product-focused work now primarily :p
  155. [23:16] <qz|win10> Gerdler, woo! that's awesome
  156. [23:16] <Ivanfluff> Gerdler add 100 oil bots
  157. [23:16] <Ivanfluff> tyvm
  158. [23:17] <qz|win10> If i recall correctly, /ai is basically an ACCELERATED version of alliance
  159. [23:17] <Zorp> Reporting in. I use linux though so no need to pander to me :p
  160. [23:17] <qz|win10> Zorp, perfect :) the instructions for linux are easy anyway
  161. [23:17] * Quits: jayr (Mibbit@EE-9D1EFC32.sub-174-206-7.myvzw.com) (Quit: http://www.mibbit.com ajax IRC Client)
  162. [23:17] <qz|win10> kk i'm switching back to linux now that i've verified the windows procedure
  163. [23:17] <c3lph1> Linux is awesome., but I think OSX is slightly better.
  164. [23:18] <Zorp> Windows sucks anyway
  165. [23:18] <Zorp> Osx sux too :p
  166. [23:18] <mob> where you check the box at
  167. [23:18] <Getafix> windows sux
  168. [23:18] <Gerdler> QZ there was one thing I had to change in your instructions for windows
  169. [23:18] <Gerdler> #2
  170. [23:19] <pang> if anyone is having trouble working in their OS, might be worth checking out VirtualBox and running a Ubuntu VM
  171. [23:19] <Gerdler> or I just missunderstood
  172. [23:19] <c3lph1> Or buy a Mac
  173. [23:19] <pang> Mac FTW!
  174. [23:19] <c3lph1> You design Pang?
  175. [23:20] <qzjul> alrighty i'm here
  176. [23:20] <pang> I do interaction design moreso than visual design
  177. [23:20] <qzjul> I prefer Linux to OSX for so many reasons....
  178. [23:20] <qzjul> mob: I must have been mistaken, I must have to do it in the db or something
  179. [23:21] <qzjul> pang: good call, ubuntu VM is easy peasy
  180. [23:21] <qzjul> Gerdler, which bit?
  181. [23:21] <qzjul> oh
  182. [23:21] <Gerdler> I just missunderstood since it was on the same line
  183. [23:21] <qzjul> ya you don't need the MS VC bit
  184. [23:21] <Gerdler> 2.1
  185. [23:21] <qzjul> ya, i renumbered it
  186. [23:21] <Gerdler> i saved as php 2.1
  187. [23:22] <qzjul> ahhhhhhh i see
  188. [23:22] <Gerdler> and I couldnt call that in cmd
  189. [23:22] <c3lph1> If you design a different interface for EE pang I’ll build it. I’m css/ JS pro
  190. [23:22] <pang> oh, I’m already a bunch of the way down that path lol
  191. [23:22] <c3lph1> Oh cool
  192. [23:22] <c3lph1> Need any help with it?
  193. [23:23] <qzjul> OK WHO HAS THE BOTS RUNNING NOW? :) WHO NEEDS HELP STILL?
  194. [23:24] <Paladine> running
  195. [23:24] <Zorp> I'm on phone, But intend to log the chat for future use :)
  196. [23:25] <qzjul> Zorp, k
  197. [23:25] <Gerdler> I got the bots running. phear me!
  198. [23:25] <qzjul> Gerdler, Getafix, c3lph1, Marshal, mob ? Ivanfluff ?
  199. [23:25] <qzjul> woo GJ
  200. [23:26] <Ivanfluff> im just watching
  201. [23:26] <qzjul> Ivanfluff, cool
  202. [23:26] <Gerdler> I got a question tho...
  203. [23:26] <qzjul> yep?
  204. [23:26] <Gerdler> https://windows.php.net/download/
  205. [23:26] <Gerdler> does it matter if i pick thread safe or non?
  206. [23:26] <qzjul> I don't think so
  207. [23:26] * Quits: KILLERFLUFFIER (martiansru@8322405F.A2EEDC11.B66E1E.IP) (Ping timeout)
  208. [23:27] <Gerdler> thats what I guessed too
  209. [23:27] <qzjul> I haven't read into what that means exactly
  210. [23:27] <qzjul> I'm not doing any multi-threading though
  211. [23:27] <Gerdler> im just fumbling in the dark.
  212. [23:27] <qzjul> Getafix, how goes?
  213. [23:28] * Joins: gains (pierreb@5590076A.AB4350F1.68906801.IP)
  214. [23:28] <qzjul> well, maybe we'll see him shortly
  215. [23:29] <qzjul> Alright, lets start running through things
  216. [23:29] <qzjul> If you haven't already guessed, ee_npc.php is the main file for the script
  217. [23:29] <qzjul> you run that one, and it loads configurations that you write into config.php
  218. [23:30] <qzjul> The rest of the files are loaded at various times, as required; I am *trying* to move to an auto-loader style of loading
  219. [23:30] <qzjul> any of the files that are like: SomeName.class.php will autoload when calling class SomeName
  220. [23:30] <Getafix> not so well. Not to worry, I will copy this irc log and work on it further later
  221. [23:31] <qzjul> I'll run through some of what's in the files, but I will make a NOTE that I am trying to remove *MOST* functionality from the main script (ee_npc.php) into classes, to get in line with best practice, and make things more readable
  222. [23:32] <qzjul> Getafix, I can take a couple to help, if you let me know where you're at?
  223. [23:32] <qzjul> (Given others might have similar issues)
  224. [23:32] <qzjul> Gerdler, etc, any questions so far?
  225. [23:32] * Joins: KILLERFLUFFIER (martiansru@8322405F.A2EEDC11.B66E1E.IP)
  226. [23:33] <Gerdler> no so far so good. I mean you have added a lot of classes recently so Im not too familiar with those yet
  227. [23:33] <qzjul> Ya, fair; the only things *completely* new are Allies.class.php and GDI.class.php
  228. [23:34] <qzjul> If you want to look at GDI.class.php you'll see what I'm kindof going for
  229. [23:34] <Getafix> first, in the renamed config.php file, I'm not sure how to fill it out properly.
  230. [23:34] * Quits: Akula (Akula@A74343F.16423962.FC103EFF.IP) (Quit: Quit ! Reason : you smell bad)
  231. [23:34] <qzjul> This class just has a join() and a leave() method; so you can call GDI::join() or GDI::leave() and the class handles the rest for you
  232. [23:34] <qzjul> Getafix, okay, cool, lets run through that
  233. [23:35] <Getafix> There is one long line starting with <?php
  234. [23:35] <qzjul> oh really?
  235. [23:35] <qzjul> that probably means it didn't check out "windows style" line endings
  236. [23:36] <qzjul> check the other files in the bots
  237. [23:36] <Zorp> Yeah. Try out notepad2
  238. [23:36] <qzjul> if they are all *also* just one line, then it didn't check out properly
  239. [23:36] <Zorp> Very aimilar to notwpad++
  240. [23:36] <qzjul> ya, try notepad++ or something ya
  241. [23:36] <Getafix> yes, so I don't know the proper format, so I can add the AI API code
  242. [23:36] <gains> or notepad++
  243. [23:36] <qzjul> notepad++ is probably your best fastest bed
  244. [23:36] <qzjul> *bet
  245. [23:36] <Getafix> I have it open in Notepad
  246. [23:36] <qzjul> https://notepad-plus-plus.org/download/v7.5.6.html
  247. [23:36] <gains> some times wordpad have better spacing
  248. [23:37] <qzjul> notepad++ is quite different heh
  249. [23:37] <qzjul> *personally* I use Sublime Text
  250. [23:37] <c3lph1> If you use Linux use vim
  251. [23:37] <gains> if you dont want to install notepad++
  252. [23:37] <qzjul> and have a dozen extensions relating to PHP and styles and such
  253. [23:37] <c3lph1> Vim is the best!
  254. [23:37] <qzjul> lol@c3lph1
  255. [23:37] <c3lph1> :D
  256. [23:37] <gains> not going to argue with that c3lph1 but probably not the best thing to use for the first time
  257. [23:37] <Paladine> sublime text is awesome :)
  258. [23:37] <qzjul> setting up Sublime Text is outside the scope of this seminar though lol
  259. [23:38] <c3lph1> Haha
  260. [23:38] <Gerdler> notepad++ is epic I think I used phpdesigner for the free trial and its great too, for a month
  261. [23:38] <Gerdler> notepad++ has so many other uses
  262. [23:38] <gains> spend 1 hour in vim-adventures.com before starting :P
  263. [23:39] <qzjul> Paladine, agreed; if any contributors are interested in the linter rules I'm using, they're here: https://github.com/jhaagsma/eemphyre-core/blob/master/ruleset/EmPHyre/ruleset.xml
  264. [23:39] <qzjul> some of the code style rules are a bit pedantic, but they do make it look better
  265. [23:39] <qzjul> Getafix, success?
  266. [23:40] <Getafix> I can see it now, and hopefully I have it right. Now I'm going to move the project directory to C: so its easier
  267. [23:40] <qzjul> sounds good
  268. [23:41] <Gerdler> that link, QZ, made me dumber. :P
  269. [23:41] <qzjul> This is part of the reason for this btw! I want to know what issues people will run into
  270. [23:41] <qzjul> Gerdler, it's a bunch of PHPCS rules, that's all
  271. [23:41] <Gerdler> yes :)
  272. [23:41] <qzjul> PHPCS will check your code, and PHPCBF will try to auto-fix it
  273. [23:41] <qzjul> if you note the GDI.class.php file...
  274. [23:42] <qzjul> things like:
  275. [23:42] <qzjul> /**
  276. [23:42] <qzjul> * Join GDI
  277. [23:42] <qzjul> *
  278. [23:42] <qzjul> * @return $result Game Result
  279. [23:42] <qzjul> */
  280. [23:42] <qzjul> that sort of function comment
  281. [23:42] <qzjul> or
  282. [23:42] <qzjul> }//end join()
  283. [23:42] <qzjul> that sort of function end comment
  284. [23:42] <qzjul> is enforced by those rules
  285. [23:42] <Gerdler> ok
  286. [23:43] <qzjul> to some degree those are over the top and maybe unnecessary, but they sure are handy i've found in updating messy code lol
  287. [23:43] <qzjul> so, the ee_npc project was developed pretty fast & dirty to try out the bot api and get going quickly, a couple years back
  288. [23:44] <qzjul> and I'd not been programming steadily for a while, so I didn't follow best practice
  289. [23:44] <c3lph1> K
  290. [23:44] <qzjul> I've spent the last few years actually having to deal with my own code from a few years ago, and dealing with other people's code now, at work, so I'm a little more strict heh
  291. [23:45] <qzjul> and many of the recent changes in the code have been focused on cleaning it up so it's readable
  292. [23:45] <qzjul> both by you and by me
  293. [23:45] <qzjul> country_functions.php for example, has a loose collection of functions related to countries
  294. [23:46] <qzjul> but they're not well organized, so I'll probably try to pull them into some better organization
  295. [23:46] <qzjul> Getafix, running yet?
  296. [23:46] <Getafix> In terminal, to run this, I'm trying from the C:\ prompt c:\>php\php.exe "c:\ee_npc-master"
  297. [23:46] <qzjul> err
  298. [23:46] <qzjul> you have to actually put the ee_npc.php as the command
  299. [23:46] <Getafix> could not open input file
  300. [23:47] <qzjul> so like:
  301. [23:47] <qzjul> C:\php\php.exe "C:\Users\qzjul\ee_npc\ee_ncp.php"
  302. [23:47] <Gerdler> c:\>php\php.exe "c:\ee_npc-master\ee_npc.php"
  303. [23:47] <qzjul> hm, if you're at C:\> you still need to go C:\php\php.exe "C:\Users\qzjul\ee_npc\ee_ncp.php"
  304. [23:48] <Gerdler> not ncp
  305. [23:48] <qzjul> C:\>C:\php\php.exe "C:\Users\qzjul\ee_npc\ee_ncp.php"
  306. [23:48] <qzjul> err
  307. [23:48] <qzjul> npc
  308. [23:48] <qzjul> sure
  309. [23:48] <qzjul> npc
  310. [23:48] <qzjul> Non-Player_Country :)
  311. [23:48] <qzjul> C:\>C:\php\php.exe "C:\Users\qzjul\ee_npc\ee_npc.php"
  312. [23:50] <Zorp> oy vey
  313. [23:50] <Gerdler> you running?
  314. [23:51] <qzjul> Alright, so if you've gotten a chance to look at GDI.class.php as a basic example, then pop open Allies.class.php to take a peek at my more recent ideas on more complex things
  315. [23:52] <qzjul> Allies basically encapsulate the options for allies, similar to GDI
  316. [23:52] <Gerdler> yeah I been looking at that a bit
  317. [23:52] <Getafix> No, its not working, I may have the wrong versions of something on here, don't worry about me
  318. [23:52] <Gerdler> what error message you get?
  319. [23:52] <Getafix> don't worry
  320. [23:53] <Gerdler> it says that? :P
  321. [23:53] <qzjul> but it additionally has a fill() method which has some more complex logic that use the other class members
  322. [23:53] <qzjul> that's kindof the general idea I'll be moving towards
  323. [23:53] <Getafix> be happy, too
  324. [23:54] <Gerdler> :)
  325. [23:54] <qzjul> so, I anticipate the next things I'll implement, in order, will be:
  326. [23:55] <qzjul> Country Search; (own) Country News; War; Spy;
  327. [23:55] <qzjul> those will probably each have their own classes
  328. [23:55] <qzjul> War and Spy will ALMOST CERTAINLY invoke search, you see
  329. [23:55] <Gerdler> hmm
  330. [23:55] <qzjul> and I'll probably make additional classes for concepts such as "Retal" or "LandGrab"
  331. [23:56] <Paladine> Is there an api ready for attack/spy?
  332. [23:56] <qzjul> I'm hoping to make a "Destock" class to pull some things out of country_functions
  333. [23:56] <qzjul> Paladine, not quite, but I think I can do that pretty quickly actually
  334. [23:56] <Gerdler> lol you gonna make the bots win
  335. [23:56] <Paladine> kk
  336. [23:56] <qzjul> well
  337. [23:57] <qzjul> So the plan - and this is where additional contributers could help a lot - is to start varying their "Personalities" if you will
  338. [23:57] <c3lph1> Will bots share spy info ?
  339. [23:58] <qzjul> basically, I'd like to make "defensive" through "aggressive" (through "suicial"?) personalities, and then a separate axis for "lean" vs "heavy" military
  340. [23:58] <qzjul> c3lph1, unlikely
  341. [23:58] <qzjul> so, to run through how it all works... let's see
  342. [23:59] <qzjul> ee_npc gets run
  343. [23:59] <Gerdler> a constantly rising NW/land goal and DPA goal, perhaps with some sort of exponential component would go a long way to create more player-like market interactions
  344. [23:59] <qzjul> it loads config and stuff
  345. [23:59] <qzjul> then it gets server info
  346. [23:59] <qzjul> then drops into a while(1) loop
  347. [23:59] <qzjul> It checks if it has enough countries for the server, and if not, makes them
  348. [00:00] <qzjul> It loads saved config data for each country in turn, and if it doesn't have any, generates it
  349. [00:00] <qzjul> This config info is where the strat is stored, GDI preference, and where personalities will be stored
  350. [00:01] <qzjul> I've already created an "aggro" stub but it doesn't do anything at the moment
  351. [00:01] <c3lph1> K
  352. [00:02] <qzjul> There's also a "price tolerance" for each country
  353. [00:02] <Gerdler> hmm
  354. [00:02] <qzjul> basically, how far they're happy to go beyond the pre-set values and averages
  355. [00:03] <Gerdler> on express I saw $3k res/bus and $1.3k for agri just a few hours ago
  356. [00:03] <qzjul> I'll admit I don't fully remember how I implemented that, but basically it's just a way so that they behave differently on the market
  357. [00:03] <qzjul> None of them ever will undercut by more than 50%
  358. [00:03] <Gerdler> :)
  359. [00:03] <qzjul> and none of them will ever place over by more than 1.5x
  360. [00:03] <qzjul> and those are the *extremes*
  361. [00:04] <qzjul> the standard deviation is 10%
  362. [00:04] <Gerdler> is that where you use the new math class?
  363. [00:04] <qzjul> so most of the time they'll be placing right close to current market price
  364. [00:04] <c3lph1> The issue isn’t undercutting by 50%
  365. [00:04] <qzjul> ya, the math class pulled out the purebell function and the sd function
  366. [00:04] <c3lph1> It’s selling small batches of tech and they eventually cause the precise to drop more than 50%
  367. [00:04] <qzjul> and any other fancy bits of math will go there too
  368. [00:05] <qzjul> c3lph1, they never sell less than 20 turns of tech
  369. [00:05] <qzjul> we'll go through the strats in a bit
  370. [00:05] <c3lph1> Yeah but they sell 87 tech points here and there
  371. [00:05] <qzjul> okay, so AFTER it loads the country's preferences, it chooses which strat to play
  372. [00:05] <qzjul> the strat is based on the saved preference
  373. [00:05] <c3lph1> Then the next bot does too
  374. [00:06] <c3lph1> Until it crashes price
  375. [00:06] <qzjul> c3lph1, I don't think that actually happens?
  376. [00:06] <c3lph1> Check express
  377. [00:06] <Gerdler> the average price is what is important tho
  378. [00:06] <qzjul> I've never seen the bots do that at least
  379. [00:06] <c3lph1> Prices at 1200$
  380. [00:06] <qzjul> the last techer posted this as its final sale, on express:
  381. [00:06] <qzjul> [22:04:25] --- SELL Public: 647 t_mil @$2537
  382. [00:06] <qzjul> 2560 t_bus @$2938
  383. [00:06] <qzjul> 5555 t_res @$3663
  384. [00:06] <qzjul> 627 t_agri @$5361
  385. [00:06] <qzjul> 7306 t_war @$4450
  386. [00:06] <qzjul> 420 t_ms @$1806
  387. [00:06] <qzjul> 331 t_weap @$2037
  388. [00:06] <qzjul> 680 t_indy @$2340
  389. [00:06] <qzjul> 14 t_spy @$1432
  390. [00:06] <qzjul> 8948 t_sdi @$4887
  391. [00:07] <qzjul> so sure, it sold 14 spy, but it probably made very little, if any, spy
  392. [00:07] <c3lph1> Yeah
  393. [00:07] <qzjul> that was one turn
  394. [00:07] <Gerdler> if the game is populated by few players there wont be orders to fix the undercuts
  395. [00:07] <qzjul> sdi and agri and bus/res are pretty high too, so i don't see it being a huge issue
  396. [00:07] <Gerdler> that rarely happens with wanted techs in FFA or alliance
  397. [00:07] <c3lph1> If you go on express there’s like 10 orders of under 100 tech that drop price
  398. [00:08] <qzjul> that's a self-correcting problem though
  399. [00:08] <qzjul> the market will handle that
  400. [00:08] <qzjul> if there's demand they'll get eaten up fast
  401. [00:08] <qzjul> you'll note agri is still high
  402. [00:08] <Gerdler> I would not be against reducing the size of the standard deviation to 5%.
  403. [00:08] <qzjul> consider the last turns of the last casher on express:
  404. [00:09] <qzjul> [22:04:51] Playing Casher Turns for #83 https://qz.earthempires.com/express/434/ranks/83
  405. [00:09] <qzjul> [22:04:51] --- Indy production: 100% spy
  406. [00:09] <qzjul> [22:04:51] Bus: 171%; Res: 169.5%
  407. [00:09] <qzjul> [22:04:51] 45 turns left
  408. [00:09] <qzjul> [22:04:51] 44 Turns - Built 35 ent and 30 res (51%) $216M ($+3.4M) 588k Bu (-6515) API: 7
  409. [00:09] <qzjul> [22:04:51] 15 Turns - Explored 328 Acres (29T) (12362 A) $316M ($+100M) 399k Bu (-189.1k) API: 2
  410. [00:09] <qzjul> [22:04:51] --- LOW FOOD ---
  411. [00:09] <qzjul> [22:04:51] --- BUY Public: 449k food @ $39 $299M ($-17.6M)
  412. [00:09] <qzjul> [22:04:51] --- BUY Public: 7255 t_bus @$2756 (171.2%) $279M ($-20M)
  413. [00:09] <qzjul> [22:04:51] --- BUY Public: 5716 t_res @$3498 (169.7%) $259M ($-20M)
  414. [00:09] <qzjul> [22:04:51] --- BUY Public: 7255 t_bus @$2756 (171.9%) $239M ($-20M)
  415. [00:09] <qzjul> [22:04:51] 14 Turns - Built 35 ent and 30 res (50%) $240M ($+3.5M) 827k Bu (-6560) API: 12
  416. [00:09] <qzjul> [22:04:51] --- BUY Public: 329 t_res @$3498 (169.7%) $239M ($-1.2M)
  417. [00:09] <qzjul> [22:04:51] --- BUY Public: 329 t_res @$3498 (169.7%) $237M ($-1.2M)
  418. [00:09] <buch> Oi
  419. [00:09] <qzjul> [22:04:51] --- BUY Public: 329 t_res @$3498 (169.8%) $236M ($-1.2M)
  420. [00:09] <qzjul> [22:04:51] 13 Turns - Cashed 1 turns $241M ($+4.3M) 820k Bu (-6576) API: 8
  421. [00:09] <qzjul> [22:04:51] --- BUY Public: 410 t_res @$3498 (169.8%) $239M ($-1.4M)
  422. [00:09] <qzjul> [22:04:51] --- BUY Public: 410 t_res @$3498 (169.9%) $238M ($-1.4M)
  423. [00:09] <qzjul> [22:04:51] --- BUY Public: 661 t_mil @$2168 (97%) $236M ($-1.4M)
  424. [00:09] <qzjul> [22:04:51] 12 Turns - Built 35 ent and 30 res (51%) $237M ($+3.5M) 814k Bu (-6623) API: 8
  425. [00:09] <qzjul> [22:04:51] --- BUY Public: 336 t_res @$3498 (169.9%) $236M ($-1.2M)
  426. [00:09] <qzjul> [22:04:51] --- BUY Public: 336 t_res @$3498 (170%) $235M ($-1.2M)
  427. [00:09] <qzjul> [22:04:51] --- BUY Public: 336 t_res @$3498 (170%) $234M ($-1.2M)
  428. [00:09] <qzjul> [22:04:51] 11 Turns - Built 35 ent and 30 res (51%) $235M ($+3.6M) 807k Bu (-6673) API: 8
  429. [00:09] <qzjul> [22:04:52] --- BUY Public: 338 t_res @$3498 (170%) $234M ($-1.2M)
  430. [00:09] <qzjul> [22:04:52] --- BUY Public: 338 t_res @$3498 (170.1%) $232M ($-1.2M)
  431. [00:10] <qzjul> [22:04:52] --- BUY Public: 338 t_res @$3498 (170.1%) $231M ($-1.2M)
  432. [00:10] <qzjul> [22:04:52] 10 Turns - Built 35 ent and 30 res (52%) $232M ($+3.6M) 800k Bu (-6724) API: 8
  433. [00:10] <qzjul> [22:04:52] --- BUY Public: 341 t_res @$3498 (170.2%) $231M ($-1.2M)
  434. [00:10] <qzjul> [22:04:52] --- BUY Public: 550 t_mil @$2168 (96.9%) $230M ($-1.2M)
  435. [00:10] <qzjul> [22:04:52] --- BUY Public: 341 t_res @$3498 (170.2%) $229M ($-1.2M)
  436. [00:10] <qzjul> [22:04:52] 0 Turns - Explored 100 Acres (10T) (12462 A) $265M ($+36.3M) 733k Bu (-67.6k) API: 8
  437. [00:10] <qzjul> [22:04:52] --- BUY Public: 2916 t_res @$3498 (170.4%) $255M ($-10.2M)
  438. [00:10] <qzjul> [22:04:52] --- BUY Public: 3701 t_bus @$2756 (172.1%) $245M ($-10.2M)
  439. [00:10] <qzjul> [22:04:52] --- DPA Target: 222 (Current: 156)
  440. [00:10] <qzjul> [22:04:52] --- BUY Public: 83.6k m_tr @ $121 $234M ($-10.2M)
  441. [00:10] <qzjul> it just gobbled up bus/res/bus/res/res/res/res/res/mil/res/res/res/res/res/res/res/mil/res/res/bus
  442. [00:10] <qzjul> so, as long as there's demand, the price will equilibriate
  443. [00:10] <Getafix> hey I got it running a rainbow :)
  444. [00:10] <qzjul> now, none of the bots are currently buying spy tech
  445. [00:10] <qzjul> so that's part of that issue
  446. [00:10] <qzjul> I may add that to their personalities once they start requiring spies
  447. [00:10] <qzjul> wooo Getafix!
  448. [00:10] <c3lph1> It is corrected but the problem is the price crashes and then the bots sell a large portion of tech at a cheap price stunting their growth
  449. [00:11] <qzjul> the bots produce based on the current price though
  450. [00:11] <qzjul> okay, while we're on that subject, lets jump into strats
  451. [00:11] <Gerdler> I have a question tho.. what does the bot read as the price(like price('bus')) if the market is empty? is it the 9000?
  452. [00:11] <qzjul> Gerdler, good question
  453. [00:11] <Gerdler> $nogoods_high = 9000;
  454. [00:11] <Gerdler> $nogoods_low = 2000;
  455. [00:11] <Gerdler> $nogoods_stddev = 1500;
  456. [00:11] <Gerdler> $nogoods_step = 1;
  457. [00:11] <Gerdler> these are new I think
  458. [00:11] <qzjul> Gerdler, i think those are old
  459. [00:12] <qzjul> but ya, i was just looking for that
  460. [00:12] <c3lph1> If the price drops to 1200 tech briefly then the bots aren’t smart enough to sell high knowing the price will jump again
  461. [00:12] <qzjul> so if there's no goods it jams it up based on those
  462. [00:13] <c3lph1> Shouldn’t it use the market history instead of current price?
  463. [00:13] <Gerdler> thats harder. but yea
  464. [00:13] <qzjul> that's a whole other kettle of fish
  465. [00:13] <c3lph1> Just use the average
  466. [00:13] <c3lph1> It’s a function already built
  467. [00:13] <qzjul> honestly, I don't know that that makes a ton of difference
  468. [00:13] <c3lph1> It would
  469. [00:14] <Gerdler> it can do if its a sparsely populated server like express
  470. [00:14] <qzjul> if you do a standard deviation around the current price vs the average, you'll come out with a very similar number i think
  471. [00:15] <Gerdler> yeah but you wouldnt have the crashing effect with 3 bots placing under each others in a row
  472. [00:15] <qzjul> possibly if the good has basically no demand
  473. [00:15] <qzjul> true
  474. [00:15] <c3lph1> ^^
  475. [00:15] <qzjul> but the price will average out eventually
  476. [00:15] <Gerdler> if no farmer plays in the meantime agri will have average price of 3k and the lowest batch can be at 1300
  477. [00:15] <Zorp> I dont think it would be similar
  478. [00:15] <qzjul> because they'll *stop making it*
  479. [00:15] <qzjul> the second and third bots will stop producing those techs
  480. [00:16] <c3lph1> I just know players sell based on average rate not current
  481. [00:16] <Gerdler> yes but they will still sell old techs they got, small annoying batches
  482. [00:16] <qzjul> sure; i still think it'll *effectively* be the same
  483. [00:16] <qzjul> BUT
  484. [00:16] <qzjul> guess what!
  485. [00:16] <c3lph1> Small batches are crashing tech prices.
  486. [00:16] <qzjul> you can contribute to the NPC code now ;-)
  487. [00:17] <qzjul> haha
  488. [00:17] <c3lph1> Lol true
  489. [00:17] <Paladine> lol
  490. [00:17] <qzjul> so, write that, submit a pull request, and i'll add it in
  491. [00:17] <Gerdler> when I buy techs on alliance I sometimes just set an order above current price and wait for it to kick in as there 50-100 small 10-200 tech points batches before the first real batch
  492. [00:17] <qzjul> they have access to orders, but don't use them yet
  493. [00:17] <c3lph1> What’s the variable that you use to post the average rate on history tab?
  494. [00:18] <c3lph1> And the class
  495. [00:18] <qzjul> Ah the bots don't have access to market history yet
  496. [00:18] <qzjul> we'll get there
  497. [00:18] <qzjul> but, you could have each bot note the history in an array and jam it in a separate file
  498. [00:18] <qzjul> or can wait for that to come in the API
  499. [00:19] <qzjul> anyway
  500. [00:19] <qzjul> Back to the NPC flow & Strats!
  501. [00:19] <Gerdler> ^^
  502. [00:19] <qzjul> NPC loads settings, finds out what strat the country is from the settings, then plays one of:
  503. [00:19] <qzjul> switch ($cpref->strat) {
  504. [00:19] <qzjul> case 'F':
  505. [00:19] <qzjul> $c = play_farmer_strat($server, $cnum);
  506. [00:19] <qzjul> $playfactor = 0.8;
  507. [00:19] <qzjul> break;
  508. [00:19] <qzjul> case 'T':
  509. [00:19] <qzjul> $c = play_techer_strat($server, $cnum);
  510. [00:19] <qzjul> $playfactor = 0.5;
  511. [00:19] <qzjul> break;
  512. [00:19] <qzjul> case 'C':
  513. [00:19] <qzjul> $c = play_casher_strat($server, $cnum);
  514. [00:19] <qzjul> break;
  515. [00:19] <qzjul> case 'I':
  516. [00:19] <qzjul> $c = play_indy_strat($server, $cnum);
  517. [00:19] <qzjul> $playfactor = 0.33;
  518. [00:19] <qzjul> break;
  519. [00:19] <qzjul> default:
  520. [00:20] <qzjul> $c = play_rainbow_strat($server, $cnum);
  521. [00:20] <qzjul> }
  522. [00:20] <qzjul> Farmer, Techer, Casher, Indy, Rainbow
  523. [00:20] <qzjul> no oilers yet because I didn't write them
  524. [00:20] <qzjul> largely because on the AI server, no AI's buy oil, yet
  525. [00:20] <c3lph1> !!!
  526. [00:20] <qzjul> (this, incidentally, is part of the issue with running just on AI)
  527. [00:20] <qzjul> questions so far?
  528. [00:20] <c3lph1> Maybe make them buy it anyways?
  529. [00:20] <Paladine> nadda
  530. [00:20] <gains> qzjul, you should update the readme for linux, its not correct
  531. [00:21] <qzjul> gains, damn, what'd I miss
  532. [00:21] <gains> curl and i get a warning when i run the script
  533. [00:21] <gains> [22:04:59] Entering Infinite LoopPHP Fatal error: Uncaught Error: Call to undefined function EENPC\curl_init() in /root/ee_npc/communication.php:41
  534. [00:21] <qzjul> ah poop@curl, you're right
  535. [00:21] <c3lph1> What’s the error?
  536. [00:22] <qzjul> sudo apt install php-curl
  537. [00:22] <gains> also says [22:04:59] No Settings File Found before unix time
  538. [00:22] <c3lph1> Yup need curl
  539. [00:22] <gains> i took curl
  540. [00:22] <qzjul> that's fine, it'll generate a settings file
  541. [00:22] <gains> :)
  542. [00:22] <Getafix> I have that same message in Windows 10 terminal
  543. [00:23] <gains> working way better now
  544. [00:23] <qzjul> no doubt!
  545. [00:23] <qzjul> alrighty
  546. [00:23] <qzjul> so
  547. [00:23] <qzjul> each of the 5 (current) strats are in their own files
  548. [00:23] <qzjul> I might change them to be classes, but they'll still be in their own files
  549. [00:23] <Getafix> me too, NO Settings File Gound
  550. [00:23] <c3lph1> Getafix you have it working now?
  551. [00:24] <Getafix> How do I "take curl"?
  552. [00:24] <c3lph1> Did you rename the file? I remember that was somethhhing you had to do.
  553. [00:24] <qzjul> might make them extend from a Strat class or something
  554. [00:24] <qzjul> err
  555. [00:24] <Getafix> sorry, I am a noob. A rainbow in an infinite loop is all I deserve :)
  556. [00:24] <qzjul> uhh
  557. [00:24] <c3lph1> I’m on phone right now. So I can’t look.
  558. [00:25] <qzjul> what'd i miss exactly?
  559. [00:25] <qzjul> if you've made a config.php file, it should have something like 'save_settings_file' => 'settings.json'
  560. [00:25] <qzjul> in it
  561. [00:25] <qzjul> and if it doesn't find one it'll make it
  562. [00:25] <c3lph1> I remember the settings file wasn’t correct name and you had to rename it — is that their issue?
  563. [00:25] <qzjul> eventually
  564. [00:26] <qzjul> I don't think I had to rename it?
  565. [00:26] <c3lph1> Ok continue your seminar I’ll look it up later
  566. [00:26] <qz|win10> oh, you DO have to rename the "config.php" seminar
  567. [00:26] <qz|win10> err
  568. [00:26] <qz|win10> file
  569. [00:26] <Getafix> I do have that line in the config file, that I can now see in Notepad ++
  570. [00:26] <qz|win10> "config.php"
  571. [00:27] <qz|win10> also the server must have ended or something, because I just glanced at my thing and it's stuck in a destocking loop
  572. [00:27] <qz|win10> which I was editing yesterday
  573. [00:27] <Gerdler> yeah its example_config and you gotta rewrite it with your info and rename it config
  574. [00:28] <c3lph1> Yeah it’s name config_example
  575. [00:28] <c3lph1> You have to rename it to config right?
  576. [00:28] <Gerdler> yes
  577. [00:28] <c3lph1> I remembered that
  578. [00:28] <c3lph1> Noobs won’t know that
  579. [00:29] <Getafix> I did that. Does Getafix have to capitalized?
  580. [00:29] <qz|win10> It was in the README
  581. [00:30] <c3lph1> Oh there you go
  582. [00:30] <Gerdler> ohh right I kept the ' ' things. does it work both with and without them?
  583. [00:30] <qz|win10> err no, if you take out the 'quotes' around things everythign will break
  584. [00:31] <Getafix> is there supposed to be a ); at the end of the config file after 'save_settings_file' => 'settings.json' ?
  585. [00:31] <qz|win10> no, just optionally a comma there
  586. [00:31] <qz|win10> there should be a ]; on the next line
  587. [00:31] <qz|win10> it's an array
  588. [00:32] <qz|win10> I'm going to change the readme to say you should CD to the directory that the script is in
  589. [00:32] <c3lph1> It is supposed to have it
  590. [00:32] <qz|win10> and run C:\php\php.exe ee_npc.php
  591. [00:32] <c3lph1> Arrays are either array() or []
  592. [00:34] <c3lph1> https://www.irccloud.com/pastebin/NV1jAkhB
  593. [00:34] <Overlord> 7URL (irccloud.com/pastebi) - 7Title: Snippet | IRCCloud - 7Speed: 2.67 KB@5.61 KB/s
  594. [00:35] <c3lph1> The ); needs to be there
  595. [00:35] <qz|win10> yea, old style is array() and new style is []
  596. [00:36] <c3lph1> Are you on 5.6 or7+?
  597. [00:36] <qzjul> alright
  598. [00:36] <Zorp> 7
  599. [00:36] <qzjul> 7+ now
  600. [00:36] <c3lph1> Nice!
  601. [00:36] <qzjul> I've been using the ?? operator for simplicity
  602. [00:37] <qzjul> so it *needs* to be 7+ now
  603. [00:37] <c3lph1> ?? Lol wth
  604. [00:37] <Gerdler> my bots are destocking
  605. [00:37] <qzjul> instead of $something = isset($value) ? $value : $default; you can just do $something = $value ?? $default;
  606. [00:37] <qzjul> and it's exactly the same
  607. [00:37] <qzjul> yea, the server is ending
  608. [00:37] <qzjul> you all might have to do a git pull
  609. [00:38] <c3lph1> Oh nice!
  610. [00:38] <qzjul> I pushed in a fix for the destocking loop *since* we started the seminar
  611. [00:38] <qzjul> I'd forgotten to commit yesterday
  612. [00:38] <Gerdler> isnt there like a 2 min turn rate on ai server?
  613. [00:38] <Paladine> haha, destocking has been going on for awhile...
  614. [00:39] <qzjul> yea, but it auto-destocks 50 turns before the end of the reset
  615. [00:39] <Gerdler> but this is 140 turns before the end?
  616. [00:39] <qzjul> so we've probably been destocking for 20 minutes
  617. [00:39] <Gerdler> what is turn rate?
  618. [00:39] <qzjul> 2 min probably?
  619. [00:39] <qzjul> = 100 minutes?
  620. [00:39] <Gerdler> I suck at math
  621. [00:39] <qzjul> end of reset in 1.3 hours?
  622. [00:40] <Gerdler> yes
  623. [00:40] <qzjul> so at 22:20 game time it probably started destocking ya?
  624. [00:40] <qzjul> okay!
  625. [00:41] <qzjul> Back on track lol...
  626. [00:41] <qzjul> Getafix, you all good?
  627. [00:41] <qzjul> Everybody get a git pull in and restart your bots?
  628. [00:41] <c3lph1> Can we build custom scripts and you implement that script for that specific bot?
  629. [00:41] <qzjul> c3lph1, what do you mean by that?
  630. [00:41] <c3lph1> :p
  631. [00:42] <c3lph1> I build a personality bot with a strat— and when bots are created it gives that specific bot that script to run.
  632. [00:42] <qzjul> Okay, so, back to the strats, and relevant to c3lph1's question
  633. [00:42] <qzjul> I have 5 strats there
  634. [00:42] * Joins: buch (AndChat493@83F58226.60861F4F.2205B856.IP)
  635. [00:43] <Getafix> Thanks very much qzjul, I am a bit behind in this infinite loop. I'm not a coder, so I think I will go and do some basic reading because this discussion is beyond my abilities. I'll work on it some more over the next while.
  636. [00:43] <qzjul> If somebody created say CelphiCasher_strat.php (or in the future CelphiCasher.class.php ) then I'd probably incorporate it into the bot, and give saay 5% of the cashers to run that
  637. [00:43] <qzjul> Getafix, sounds good, PM me in IRC or in forums any time and I'll respond *eventually* lol
  638. [00:43] <Getafix> Thanks!!
  639. [00:44] <c3lph1> That way ppl who code the bots can see their bots on live server.
  640. [00:44] <qzjul> or, ideally, you'd incorporate it to do that (after asking me a percentage) and I'd just merge it in
  641. [00:45] <qzjul> yea; you wouldn't necessarily know which are yours, but you'd potentially be able to figure it out
  642. [00:45] <c3lph1> You’d get different personalities.
  643. [00:45] <Gerdler> you can easily make a change that is spyable like adding 1CS after reaching your bpt goals
  644. [00:45] <qzjul> yea, exactly
  645. [00:46] <qzjul> true; though everybody else would be able to see all the code anyway
  646. [00:46] <qzjul> given it's open sourced on github
  647. [00:46] * Quits: Link (Link@9FF03CFA:84A89EAA:36A98F7C:IP) (Ping timeout)
  648. [00:46] <c3lph1> We need a different name generator.
  649. [00:46] <qzjul> add a function
  650. [00:46] <qzjul> i'll incorporate it
  651. [00:46] <qzjul> name generator is low priority lol
  652. [00:47] <Gerdler> wont it be really complex to potentially have like 3-5 bot codes...
  653. [00:47] <qzjul> no, exactly, it's easy for me to add more
  654. [00:47] <qzjul> Back to the seminar flow! lol
  655. [00:47] <c3lph1> Yeah my bad
  656. [00:47] <c3lph1> Lol
  657. [00:47] <qzjul> lets look at farmer_strat.php
  658. [00:47] <qzjul> farmer is the simplest thing
  659. [00:47] <qzjul> it makes farms
  660. [00:47] <qzjul> buys agri tech
  661. [00:47] <qzjul> and def
  662. [00:47] <qzjul> and sells bushels
  663. [00:47] <qzjul> makes sense ya?
  664. [00:48] <qzjul> k
  665. [00:48] <qzjul> so
  666. [00:48] <c3lph1> Yup
  667. [00:48] <qzjul> the way it loads (all strats) is a little ugly at the moment, but I'll try to fix that
  668. [00:48] <Gerdler> mostly buys res/bus tech but ya. :)
  669. [00:48] <Gerdler> //what, goal, priority
  670. [00:48] <Gerdler> ['t_agri',215,8],
  671. [00:48] <Gerdler> ['t_bus',178,4],
  672. [00:48] <Gerdler> ['t_res',178,4],
  673. [00:48] <Gerdler> ['t_mil',94,1],
  674. [00:48] <qzjul> sure, that too
  675. [00:49] <Gerdler> agri is max at 230% so it is the same as the indy bots you just changed ;)
  676. [00:49] <qzjul> and again, we can alter those priorities with personalities and such
  677. [00:49] <qzjul> it is?
  678. [00:49] <qzjul> i thought it was 220 lol
  679. [00:49] <c3lph1> Those are too high :P
  680. [00:49] <qzjul> maybe my brain is back in the old days
  681. [00:49] <Gerdler> yeah i think agri was max 225 before I forget.
  682. [00:49] <Ivanfluff> those bus res are really high
  683. [00:49] <qzjul> what's a good %age for an agri these days then?
  684. [00:49] <Ivanfluff> 220
  685. [00:49] <Ivanfluff> and lower bus res
  686. [00:50] <c3lph1> Depends on govt
  687. [00:50] <qzjul> ['t_agri',220,8],
  688. [00:50] <qzjul> ['t_bus',175,4],
  689. [00:50] <qzjul> ['t_res',175,4],
  690. [00:50] <qzjul> ['t_mil',95,1],
  691. [00:50] <qzjul> true
  692. [00:50] <c3lph1> But yeah 220 for farmer
  693. [00:50] <qzjul> like that?
  694. [00:50] <Ivanfluff> id go 170 bus res
  695. [00:50] <Gerdler> 228
  696. [00:50] <c3lph1> Bus too high
  697. [00:50] <c3lph1> Red too high
  698. [00:50] <Getafix> because you are not techers!
  699. [00:50] <qzjul> ['t_agri',228,8],
  700. [00:50] <qzjul> ['t_bus',175,4],
  701. [00:50] <qzjul> ['t_res',175,4],
  702. [00:50] <qzjul> ['t_mil',95,1],
  703. [00:50] <Ivanfluff> if we want the bots to be like players they need to be like players
  704. [00:50] <qzjul> ja?
  705. [00:51] <Gerdler> I like it
  706. [00:51] <Ivanfluff> what player stocks with 228 agri or bus res at 175
  707. [00:51] <c3lph1> None
  708. [00:51] <Ivanfluff> id have gone like 220 170 170
  709. [00:51] <c3lph1> That 8% would be too expensive
  710. [00:51] <Gerdler> ivan they stocked bus/res tech before
  711. [00:52] <Ivanfluff> true enough
  712. [00:52] <Gerdler> if you are all-xp you'd get 225-228% depending on price
  713. [00:52] <Gerdler> on alliance
  714. [00:52] <c3lph1> But as a player what do you do gerd
  715. [00:52] <Ivanfluff> we dont want em to get more military either
  716. [00:52] <Ivanfluff> the breaks are insane as they are
  717. [00:52] <qzjul> okay how's about i do this for now lol:
  718. [00:52] <Ivanfluff> so ok im with gerdler
  719. [00:52] <qzjul> ['t_agri',226,8],
  720. [00:52] <qzjul> ['t_bus',173,4],
  721. [00:52] <qzjul> ['t_res',173,4],
  722. [00:52] <qzjul> ['t_mil',95,1],
  723. [00:52] <qzjul> haha okay
  724. [00:52] <Gerdler> celphi as an all-xp player Id get something like that^
  725. [00:52] <c3lph1> But he plans to have them atk
  726. [00:53] <Ivanfluff> depends on tech prices really gerdler if they were cheap sure
  727. [00:53] <Ivanfluff> if it was expensive u wouldnt
  728. [00:53] <qzjul> thing is currently many of them are sitting on a few $B in cash
  729. [00:53] <Gerdler> yeah and we dont know the prices, but the bots gotta spend on something
  730. [00:53] <c3lph1> I think 170bus res is pushing it
  731. [00:53] <qzjul> and they don't *really* understand stockpiling yet
  732. [00:53] <Ivanfluff> nod gerdler
  733. [00:53] <c3lph1> Realistically I think it’s 220 /170/170
  734. [00:54] <Gerdler> no way
  735. [00:54] <qzjul> anyway, the exact numbers don't matter
  736. [00:54] <c3lph1> Or even 165/165
  737. [00:54] <qzjul> we can change those eventually
  738. [00:54] <Ivanfluff> like gerdler said they need to blow cash badly
  739. [00:54] <qzjul> or make a distribution
  740. [00:54] <Ivanfluff> else id agree with you celphi
  741. [00:55] <Gerdler> sorry for getting us off-track lol
  742. [00:55] <qzjul> np
  743. [00:55] <qzjul> anyway
  744. [00:55] <Ivanfluff> tbh we should discuss tpa too lol
  745. [00:55] <c3lph1> :D
  746. [00:55] <qzjul> so, again a little ugly, once it loads it, it checks if it's a monarchy
  747. [00:55] <Ivanfluff> the ranging is insane
  748. [00:55] <qzjul> and chooses a different govt if it is
  749. [00:55] <Ivanfluff> :P
  750. [00:56] <qzjul> tpa? tanks? turrets?
  751. [00:56] <qzjul> because there is no goal for those
  752. [00:56] <Ivanfluff> tech per acre
  753. [00:56] <qzjul> oh
  754. [00:56] <qzjul> ehh
  755. [00:56] <qzjul> they don't care
  756. [00:56] <Ivanfluff> i meant in the game not for bots
  757. [00:56] <Gerdler> :)
  758. [00:56] <qzjul> oh
  759. [00:56] <qzjul> gotcha
  760. [00:56] <qzjul> anyway
  761. [00:56] <qzjul> so currently it chooses between a handful of sensible options
  762. [00:57] <qzjul> so that it doesn't always choose X or Y for a given strat
  763. [00:57] <c3lph1> That part works!
  764. [00:57] <qzjul> for a farmer, most of the time it's going to choose Fasc, but will choose rep or dict or demo
  765. [00:57] <qzjul> (**aside: things like change_govt will go in their own class soon, I hope)
  766. [00:58] <qzjul> then it grabs PM & market info, because all strats do that currently
  767. [00:58] <qzjul> for a farmer, I don't think it makes any decisions based on the market, so that's less relevant
  768. [00:58] <qzjul> a this point, an indy or techer would decide what to make though
  769. [00:58] <Gerdler> pm stands for private or public? :)
  770. [00:58] <qzjul> PM is private
  771. [00:58] <qzjul> i can make that make more sense with classes! ;-)
  772. [00:59] <gains> so when can i run this in 1a?
  773. [00:59] <qzjul> indy's, incidentally, had a bug up until a few days ago, where they decided what to make based on def/acre and price, but didn't consider that jets weren't defense
  774. [01:00] <qzjul> gains, you can't but you can contribute to this project, which *is* running in 1A right now
  775. [01:00] <Gerdler> :)
  776. [01:00] <qzjul> the idea is that you can play your bots, and test them, and try to win, on AI server
  777. [01:00] <qzjul> and if you want to contribute to the alliance/express/FFA bots, then you do so with this project
  778. [01:00] <gains> but i want my own botz to kill Ivanfluff with
  779. [01:00] <c3lph1> How often does ai server run?
  780. [01:01] <qzjul> constantly
  781. [01:01] <c3lph1> The set I mean
  782. [01:01] <qzjul> oh
  783. [01:01] <c3lph1> 2days?
  784. [01:01] <Paladine> around 3 days
  785. [01:01] <qzjul> it's like alliance, but 2 min turns instead of 20?
  786. [01:01] <qzjul> or something?
  787. [01:01] <c3lph1> K
  788. [01:01] <qzjul> i tried to keep the values all *relatively* the same
  789. [01:02] <c3lph1> Can you make link to it on homepage? :)
  790. [01:02] <qzjul> so like the PS time is /10 as well
  791. [01:02] <c3lph1> K
  792. [01:02] <qzjul> just type in /ai lol
  793. [01:02] <Ivanfluff> just like the good old days then gains :D
  794. [01:02] <c3lph1> Pfft —
  795. [01:02] <qzjul> gains, ya, you can make a bot targeting Ivan ;-) just commit it to the project lol
  796. [01:03] <c3lph1> Lol!!!
  797. [01:03] <Ivanfluff> its the problem being the top player around, everyone wants to target you :(
  798. [01:03] <qzjul> but you have to make it target using behaviours rather than numbers or names ;)
  799. [01:04] <qzjul> that said, if anybody makes a bot that just targets the top 10 with suicides, i'll probably edit that out lol
  800. [01:04] <Ivanfluff> just use "hit best player in the game" function
  801. [01:04] <Ivanfluff> :D
  802. [01:04] <qzjul> heh
  803. [01:04] <c3lph1> Haha
  804. [01:04] <qzjul> anyway
  805. [01:04] <Gerdler> ...
  806. [01:04] <qzjul> bots!
  807. [01:04] <Gerdler> !
  808. [01:04] <Ivanfluff> gerdler just got jealous
  809. [01:04] <qzjul> they all have something like play_strat_turn()
  810. [01:04] <qzjul> so, play_farmer_turn
  811. [01:05] <qzjul> this bit i've especially cleaned up recently
  812. [01:05] <qzjul> this is basically where the fundamentals of the strat are laid down
  813. [01:05] <qzjul> the order in which the ladder logic is run is kindof key
  814. [01:05] <qzjul> I am very happy to accept alternate styles of logic, by the way
  815. [01:05] <qzjul> this is a very rudimentary approach to playing a strategy
  816. [01:05] <c3lph1> K
  817. [01:06] <qzjul> I'm going to paste the function here:
  818. [01:06] <qzjul> function play_farmer_turn(&$c)
  819. [01:06] <qzjul> {
  820. [01:06] <qzjul> //c as in country!
  821. [01:06] <qzjul> $target_bpt = 65;
  822. [01:06] <qzjul> global $turnsleep;
  823. [01:06] <qzjul> usleep($turnsleep);
  824. [01:06] <c3lph1> Yeah
  825. [01:06] <qzjul> //out($main->turns . ' turns left');
  826. [01:06] <qzjul> if ($c->shouldBuildSingleCS($target_bpt)) {
  827. [01:06] <qzjul> //LOW BPT & CAN AFFORD TO BUILD
  828. [01:06] <qzjul> //build one CS if we can afford it and are below our target BPT
  829. [01:06] <qzjul> return build_cs(); //build 1 CS
  830. [01:06] <qzjul> } elseif ($c->protection == 0 && $c->food > 7000
  831. [01:06] <qzjul> && (
  832. [01:06] <qzjul> $c->foodnet > 0 && $c->foodnet > 3 * $c->foodcon && $c->food > 30 * $c->foodnet
  833. [01:06] <qzjul> || $c->turns == 1
  834. [01:06] <qzjul> )
  835. [01:06] <c3lph1> They’re all the same across all servers?
  836. [01:06] <qzjul> ) { //Don't sell less than 30 turns of food unless you're on your last turn (and desperate?)
  837. [01:06] <qzjul> return sellextrafood_farmer($c);
  838. [01:06] <qzjul> } elseif ($c->shouldBuildSpyIndies()) {
  839. [01:06] <qzjul> //build a full BPT of indies if we have less than that, and we're out of protection
  840. [01:06] <qzjul> return build_indy($c);
  841. [01:06] <qzjul> } elseif ($c->shouldBuildFullBPT($target_bpt)) {
  842. [01:06] <qzjul> //build a full BPT if we can afford it
  843. [01:06] <qzjul> return build_farmer($c);
  844. [01:06] <qzjul> } elseif ($c->shouldBuildFourCS($target_bpt)) {
  845. [01:06] <qzjul> //build 4CS if we can afford it and are below our target BPT (80)
  846. [01:06] <qzjul> return build_cs(4); //build 4 CS
  847. [01:06] <qzjul> } elseif ($c->built() > 50) { //otherwise... explore if we can
  848. [01:06] <qzjul> return explore($c, min(max(1, $c->turns - 1), max(1, turns_of_money($c) - 3)));
  849. [01:06] <qzjul> } else { //otherwise... cash
  850. [01:06] <qzjul> return cash($c);
  851. [01:06] <qzjul> }
  852. [01:07] <qzjul> }//end play_farmer_turn()
  853. [01:07] <qzjul> yea, all across all servers are the same
  854. [01:07] <c3lph1> 65bpt isn’t realistic on express.
  855. [01:07] <qzjul> is it too high?
  856. [01:07] <c3lph1> So we need differ strays based on server
  857. [01:07] <Gerdler> considering how much acres they lose and rebuild it might be
  858. [01:07] <c3lph1> *strats
  859. [01:07] <qzjul> I feel like I made it lower since my original was 80
  860. [01:08] <qzjul> I'm *quite* happy for the target bpt to be a function of turns left in the reset, for example
  861. [01:08] <Gerdler> 65 is optimal for 17k acres.
  862. [01:08] <Gerdler> there is issue with the dicts
  863. [01:08] <Gerdler> in express
  864. [01:08] <qzjul> since I'd like to continue to generate additional bots as the server runs
  865. [01:08] * Joins: havoc (434798b1@23F2D619.E22D1821.A98BAB01.IP)
  866. [01:08] <qzjul> Okay, have you all had a chance to digest the above function?
  867. [01:08] <qzjul> any thoughts/questions on it?
  868. [01:09] <c3lph1> Yeah—
  869. [01:09] <Gerdler> other than some numbers that might change
  870. [01:09] <Gerdler> I think its logical and easy to understand given some time with it
  871. [01:10] <Gerdler> the techer is more complex and has taken a long time to balance I guess for that reason. but its in a better place now
  872. [01:10] <c3lph1> Shouldn’t build bpt after landgoal is reached
  873. [01:10] <qzjul> yea; it's kindof evolved a bit too, after some stupid behaviours
  874. [01:10] <Gerdler> landgoal?
  875. [01:10] <c3lph1> Err CS that is
  876. [01:11] <qzjul> there's no land goal, because there's no stockpiling
  877. [01:11] <qzjul> ya, techer has had quite a number of stupid behaviours
  878. [01:11] <c3lph1> Should add landgoal
  879. [01:11] <qzjul> we can write stockpiling, but I would have to think about how to write the logic for that to begin, given they're continually farmed
  880. [01:12] <Paladine> some combination of land goal and how much of the set remains
  881. [01:13] <Gerdler> the techer bots should have that yes but I dont see how its needed on the others
  882. [01:13] <Gerdler> maybe rainbow bots too
  883. [01:13] <c3lph1> Bc exploring at 5A a turn is pointless
  884. [01:13] <Gerdler> they never get to that
  885. [01:13] <qzjul> well, cashing is better than exploring, but it's hard to say when that should happen if they're being farmed
  886. [01:13] <c3lph1> Even 10A
  887. [01:14] <Gerdler> hey thats very well worth it depending on time left
  888. [01:14] <qzjul> I all-x past 7A returns as a Rep though =/
  889. [01:14] <Gerdler> yep
  890. [01:14] <c3lph1> On alliance sure
  891. [01:14] * qzjul always all-x casher's because it's easy
  892. [01:14] <c3lph1> Not express.
  893. [01:15] <qzjul> we can probably figure out some sort of "Turns left" land goal
  894. [01:16] <Gerdler> yeah like if acres*turns_taken> turns_left*C then return cash
  895. [01:16] <qzjul> anyway, so, to compare and contrast with farmer, techer is the most complicated function:
  896. [01:16] <qzjul> function play_techer_turn(&$c)
  897. [01:16] <qzjul> {
  898. [01:16] <qzjul> //c as in country!
  899. [01:16] <qzjul> $target_bpt = 65;
  900. [01:16] <qzjul> global $turnsleep, $mktinfo, $server_avg_land;
  901. [01:16] <qzjul> $mktinfo = null;
  902. [01:16] <qzjul> usleep($turnsleep);
  903. [01:16] <qzjul> //out($main->turns . ' turns left');
  904. [01:16] <qzjul> if ($c->shouldBuildSingleCS($target_bpt)) {
  905. [01:16] <qzjul> //LOW BPT & CAN AFFORD TO BUILD
  906. [01:16] <qzjul> //build one CS if we can afford it and are below our target BPT
  907. [01:16] <qzjul> return build_cs(); //build 1 CS
  908. [01:16] <qzjul> } elseif ($c->protection == 0 && total_cansell_tech($c) > 20 * $c->tpt && selltechtime($c)
  909. [01:16] <qzjul> || $c->turns == 1 && total_cansell_tech($c) > 20
  910. [01:16] <qzjul> ) {
  911. [01:16] <c3lph1> Techer has best chance as bot imo because it requires the least land
  912. [01:16] <qzjul> //never sell less than 20 turns worth of tech
  913. [01:16] <qzjul> //always sell if we can????
  914. [01:16] <qzjul> return sell_max_tech($c);
  915. [01:16] <qzjul> } elseif ($c->shouldBuildSpyIndies()) {
  916. [01:16] <qzjul> //build a full BPT of indies if we have less than that, and we're out of protection
  917. [01:16] <qzjul> return build_indy($c);
  918. [01:16] <qzjul> } elseif ($c->shouldBuildFullBPT($target_bpt)) {
  919. [01:16] <qzjul> //build a full BPT if we can afford it
  920. [01:16] <qzjul> return build_techer($c);
  921. [01:16] <qzjul> } elseif ($c->shouldBuildFourCS($target_bpt)) {
  922. [01:17] <qzjul> //build 4CS if we can afford it and are below our target BPT (80)
  923. [01:17] <qzjul> return build_cs(4); //build 4 CS
  924. [01:17] <qzjul> } elseif ($c->tpt > $c->land * 0.17 * 1.3 && $c->tpt > 100 && rand(0, 100) > 2) {
  925. [01:17] <qzjul> //tech per turn is greater than land*0.17 -- just kindof a rough "don't tech below this" rule...
  926. [01:17] <qzjul> return tech_techer($c);
  927. [01:17] <qzjul> } elseif ($c->built() > 50
  928. [01:17] <qzjul> && ($c->land < 5000 || rand(0, 100) > 95 && $c->land < $server_avg_land)
  929. [01:17] <qzjul> ) {
  930. [01:17] <qzjul> //otherwise... explore if we can, for the early bits of the set
  931. [01:17] <qzjul> return explore($c, min(max(1, $c->turns - 1), max(1, min(turns_of_money($c), turns_of_food($c)) - 3)));
  932. [01:17] <qzjul> } else { //otherwise, tech, obviously
  933. [01:17] <qzjul> return tech_techer($c);
  934. [01:17] <qzjul> }
  935. [01:17] <qzjul> }//end play_techer_turn()
  936. [01:17] <qzjul> basically, its the same, but trying to decide when it should tech instead of explore is tricky
  937. [01:17] <qzjul> I *think* it's much better now
  938. [01:17] <qzjul> mostly, i tweaked this last bit: rand(0, 100) > 2
  939. [01:17] <qzjul> I think that used to be rand(0, 100) > 50
  940. [01:17] <qzjul> or something
  941. [01:17] <gains> code is easy to read. just have to find time for it
  942. [01:18] <qzjul> yea, year ya; it'll be easier soon i hope
  943. [01:18] <Gerdler> yeah it was changed a bit by izarc early last year
  944. [01:18] <qzjul> (not the time thing, the reading)
  945. [01:18] <qzjul> ya, zarc tweaked it, and i tweaked it more the other day
  946. [01:18] <Gerdler> there are still issues based on the govt afaik
  947. [01:18] <qzjul> oh
  948. [01:18] <qzjul> i also nerfed the tendency to explore
  949. [01:18] <qzjul> rand(0, 100) > 95
  950. [01:18] <Ivanfluff> i just wanna add something before i go to bed
  951. [01:18] <Gerdler> theo and tyr techers have different tax income and therefore behave differently
  952. [01:18] <qzjul> that was way higher before
  953. [01:19] <qzjul> Ivanfluff, hm?
  954. [01:19] <Ivanfluff> i think its important to keep the end goal in sight
  955. [01:19] <qzjul> definitely@Ivan
  956. [01:19] <Ivanfluff> and not just optimize everything for the fluff of it
  957. [01:20] <Ivanfluff> bots can prolly be scripted to play better then most players but it doesnt really benefit the game
  958. [01:20] <Gerdler> I agree with this...
  959. [01:20] <qzjul> I'm perfectly happy for the bots to make non-perfect-decisions; they just have to not be so bad they're falling all over themselves
  960. [01:20] <gains> Ivanfluff thats why he asked for this, so we could make our own bots
  961. [01:20] <gains> so they get more random
  962. [01:21] <Ivanfluff> nod qz
  963. [01:21] <qzjul> even if they're floundering around, it's useful for the market and game
  964. [01:21] <Gerdler> well
  965. [01:21] <c3lph1> It’s hard to program a useful bot on ai server bc none of the bots can sell tech above 2k so it’s unrealistic conditions.
  966. [01:21] <qzjul> I fixed the dpa issue and people started instantly complaining that they're hard to farm now lol
  967. [01:21] <04Marshal> for techmartket not for military
  968. [01:21] <Ivanfluff> dpa?
  969. [01:21] <qzjul> defence per acre
  970. [01:21] <04Marshal> def per acre
  971. [01:21] <gains> defense per acres
  972. [01:21] <Ivanfluff> its not the dpa its the def allies
  973. [01:21] <qzjul> ah right
  974. [01:21] <qzjul> well
  975. [01:22] <Zorp> They're not hard to farm X_X
  976. [01:22] <Gerdler> its dpa too actually but its nice enough still
  977. [01:22] <qzjul> my plan is to make it so that there's a personality for allying
  978. [01:22] <qzjul> as in, 60% will ally, 30% won't
  979. [01:22] <qzjul> 30% will GDI
  980. [01:22] <qzjul> and those won't be the same %ages
  981. [01:22] <c3lph1> They shouldn’t be easy to farm lol
  982. [01:22] <qzjul> should create a much more rounded profile to the countries
  983. [01:22] <c3lph1> They’re not farm bots lol
  984. [01:22] <qzjul> basically, what I want, is to create a nice CONTINUOUS curve from awesome players to shitty botw
  985. [01:22] <Ivanfluff> define easy celphi
  986. [01:22] <qzjul> *bots
  987. [01:23] <qzjul> and ideally there'd be some overlap between bots and players in the middle
  988. [01:23] <c3lph1> Like they should carry various defenses. Like what players do
  989. [01:23] <qzjul> yea
  990. [01:23] <c3lph1> Some high some medium some low
  991. [01:23] <qzjul> yea
  992. [01:23] <Gerdler> but on ivans point I gotta say this: making bots retal is FAR FAR more important than making them landgrab, imo.
  993. [01:24] <gains> amg
  994. [01:24] <gains> stop it Gerdler
  995. [01:24] <c3lph1> Agree
  996. [01:24] <gains> i want acres not lose acres
  997. [01:24] <c3lph1> That’s what players do anyways
  998. [01:24] <qzjul> well i want some of them to retal
  999. [01:24] <qzjul> but not all of them
  1000. [01:24] <qzjul> it's got to be some risk
  1001. [01:24] <qzjul> and some will do so without spying
  1002. [01:24] <Gerdler> the thing that keeps the dpa a bit random-ish now is the nwpa goal and the fact that their turns taken are varied
  1003. [01:24] <qzjul> some will do with spying
  1004. [01:24] <qzjul> etc
  1005. [01:24] <c3lph1> The closer to a player actions the better
  1006. [01:25] <Ivanfluff> not necesarily
  1007. [01:25] <qzjul> I really want a huge variety
  1008. [01:25] <Ivanfluff> we dont care if the bots finish t10 or not
  1009. [01:25] <qzjul> I don't want them to all be clones of each other
  1010. [01:25] <Ivanfluff> varity, market depth etc awesome
  1011. [01:25] <Ivanfluff> variety
  1012. [01:25] <qzjul> but what I *don't* want is 150 humans with an average nw of like 10M and 150 bot players with an average nw of 2M
  1013. [01:26] <c3lph1> Exactly
  1014. [01:26] <c3lph1> Basically defeats explore button
  1015. [01:26] <qzjul> that said, that *is* a better start than an empty bottom
  1016. [01:26] <Getafix> sounds good!
  1017. [01:26] <Gerdler> but they should retal with special attacks and missiles just not the set-ruiner kind where some bot does 40 ABs and 10 nukes on a poor guy who went on vacation and forgot to login and buy defence when the bot he hit 2 weeks ago grew up...
  1018. [01:26] <qzjul> I think the bots remove pressure from players to some degree
  1019. [01:26] <c3lph1> Yup
  1020. [01:26] <qzjul> which is probably good given the size of the community now
  1021. [01:26] <c3lph1> Larger pull
  1022. [01:27] <qzjul> if we had 20k players it'd be a little different
  1023. [01:27] <c3lph1> *pool
  1024. [01:27] <qzjul> mhmm
  1025. [01:27] <qzjul> and if there's bots with human-like behaviour, than i'd be more comfortable adding more of them
  1026. [01:28] <qzjul> if we have a variety of bots to the point where you're not sure if the better ones are human or not, then we can make say twice as many bots as players
  1027. [01:28] <c3lph1> Yup
  1028. [01:28] <qzjul> given in all likelihood players will be better than bots for the forseeable future
  1029. [01:28] <Gerdler> is it a good thing if we dont know who is the bot?
  1030. [01:28] <qzjul> yes, i would say that is good
  1031. [01:29] <Gerdler> if we dont know who is a bot we dont know who to farm
  1032. [01:29] <Ivanfluff> we gonna make bots tag up too?
  1033. [01:29] <Ivanfluff> get pacts?
  1034. [01:29] <Ivanfluff> pay reps? :P
  1035. [01:29] <Gerdler> they have pacts
  1036. [01:29] <Gerdler> ahh
  1037. [01:29] <Getafix> negotiate?
  1038. [01:29] <Ivanfluff> i meant alliance pacts
  1039. [01:29] <qzjul> ya, i'd like to make 20-30% of the bots tag up too
  1040. [01:29] <Gerdler> I have FDP with the bots
  1041. [01:29] <Ivanfluff> lets call it SKYNET!
  1042. [01:29] * Marshal slaps Ivanfluff around a bit with a large trout
  1043. [01:30] <qzjul> negotiation would be cool, but would probably involve a whole other interface around the clans
  1044. [01:30] <Ivanfluff> lets just make all the bots FS all the players
  1045. [01:30] <Gerdler> make an alicebot to negotiate
  1046. [01:30] <c3lph1> Lol Ivan.
  1047. [01:30] <Ivanfluff> if so can they have boobs as well? FA used to be so much more fun with FAs with boobs
  1048. [01:31] <Ivanfluff> night fluffers
  1049. [01:31] <Getafix> I think we like being able to identify the bots. It would be interesting if some could retal and stuff, but they are there to be farmed so we don't have to farm people, I thought.
  1050. [01:32] <Ivanfluff> we're pretty much always gonna be able to id the bots
  1051. [01:32] <Gerdler> yeah if the problem that I need land can be solved without harming new players I think that is 100% a good thing
  1052. [01:32] <Ivanfluff> unless the bots starts hidding in real tags
  1053. [01:32] <qzjul> I'd like to point out that as recently as 4 or 5 sets ago, the bots placed some decent countries
  1054. [01:32] <qzjul> https://qz.earthempires.com/alliance/46/ranks
  1055. [01:32] <Gerdler> you dont know what happened that set
  1056. [01:32] <c3lph1> Qzjul it’s a bit tricky to make a successful bot on ai to work on reg server bc tech prices are like 1/3 the price
  1057. [01:32] <qzjul> true i don't
  1058. [01:32] <Zorp> Md fsed the entire server
  1059. [01:33] <Zorp> Only sol was left to new
  1060. [01:33] <qzjul> ahh heh
  1061. [01:33] <Gerdler> was not that set
  1062. [01:33] <qzjul> but sets around it have bots in T100 still
  1063. [01:33] <Gerdler> https://qz.earthempires.com/alliance/45/ranks
  1064. [01:33] <Getafix> It was great on Express when you added the colour to the bots on the scoreboard, so we could see what their characteristics were
  1065. [01:33] <Ivanfluff> yeah it was that set
  1066. [01:33] <Ivanfluff> no country of mine in the t10
  1067. [01:34] <qzjul> ya, so i think as long as the names and clans are autogenerated, it shoudl be kinda obvious
  1068. [01:34] <qzjul> but maybe not at first glance
  1069. [01:34] <qzjul> interesting that last set in express had some decent bots
  1070. [01:34] <Getafix> I think they should be good players, but clearly marked as bots, or relatively easy to identify
  1071. [01:34] <qzjul> would you agree that they're easy to identify now?
  1072. [01:34] <Getafix> yes
  1073. [01:35] <Gerdler> yes
  1074. [01:35] <qzjul> I think bot clans will still be super easy to identify
  1075. [01:35] <Gerdler> good
  1076. [01:35] <qzjul> cool, no problem then
  1077. [01:35] <Gerdler> :)
  1078. [01:35] <qzjul> we can, perhaps, make a subset of bots that are harder to identify
  1079. [01:35] <qzjul> all the possibilities
  1080. [01:35] <qzjul> okay
  1081. [01:35] <qzjul> so
  1082. [01:35] <qzjul> do you all know how to contribute?
  1083. [01:35] * Quits: Link (Link@5DACDCFB:BAFD1971:36A98F7C:IP) (Ping timeout)
  1084. [01:36] <Paladine> yeah
  1085. [01:36] <Gerdler> yes
  1086. [01:36] <Zorp> I know how to contribute genetic material
  1087. [01:36] <Zorp> Only takes a few minutes
  1088. [01:36] <qzjul> okay; anybody want to make some small change to one of the strats, like change a random number, push, and submit a pull request?
  1089. [01:36] <Gerdler> I will only make small changes to balance things I see as issues. not broad changes like new classes
  1090. [01:36] <qzjul> that's fine
  1091. [01:37] <Paladine> At some point are you going to create a github project board or some other way to track tasks/stuff that needs to be done?
  1092. [01:37] <qzjul> I expect most contributors will only do tweaks until they're pretty comfortable with them
  1093. [01:37] <Getafix> I'll take a PHP tutorial
  1094. [01:37] <qzjul> Paladine, there is an AI Development form in EE
  1095. [01:37] <qzjul> but I'm quite happy to do a board in github
  1096. [01:37] <qzjul> github is probably easier
  1097. [01:37] <qzjul> but you can submit issues - as you did the other day =D
  1098. [01:38] <Paladine> Just thinking if everyone goes off and does their own thing to be pulled, there might be quite a bit of redundancy
  1099. [01:39] <qzjul> that's true
  1100. [01:39] <c3lph1> That’s why you could add personality files
  1101. [01:39] <qzjul> I just added a few project boards
  1102. [01:40] <Paladine> sweet :)
  1103. [01:40] <qzjul> If anybody has any ideas or things, post them or tell me to or something, I haven't really played with permissions in github ever lol
  1104. [01:40] <qzjul> I use bitbucket at work because we're too cheap to pay for github =/
  1105. [01:41] <Paladine> lol, we have both
  1106. [01:41] <Paladine> yet use jira for tracking
  1107. [01:41] <qzjul> lol, that sounds complicated
  1108. [01:42] <Paladine> Yeah, I work for government
  1109. [01:42] <Paladine> lol
  1110. [01:42] <qzjul> I'm still trying to get my boss/coworker to actually *USE* source control =/
  1111. [01:42] <04Marshal> CIA AGENT
  1112. [01:42] <04Marshal> !!!!!!!!!!!
  1113. [01:42] <qzjul> and functions for that matter =/
  1114. [01:42] <Paladine> haha provincial government :P
  1115. [01:42] <qzjul> ah cool!
  1116. [01:42] <qzjul> which province Paladine?
  1117. [01:42] <Paladine> BC
  1118. [01:43] <qzjul> cool; you in Victoria?
  1119. [01:43] <Paladine> Yeah, work across from the legislature
  1120. [01:43] <qzjul> not sure what %age of govt is there vs van
  1121. [01:43] <qzjul> gotcha; i thought most was on the island
  1122. [01:43] <Paladine> Still mostly here, though quite a bit of justice is in van
  1123. [01:43] <qzjul> i used to live in sidney when my dad was based out of the airport there
  1124. [01:44] <qzjul> gotcha
  1125. [01:44] <Paladine> Nice! I am saanich :)
  1126. [01:44] <qzjul> crazy!
  1127. [01:44] <qzjul> alrighty
  1128. [01:44] <qzjul> so, anybody have any questions or thoughts?
  1129. [01:45] <qzjul> I'm probably going to roll out to dinner soon if there's nothing else people want to touch on
  1130. [01:45] <Paladine> Nothing else from me
  1131. [01:45] <qzjul> If anybody wants to *actually develop something*, I'll probably do some tonight and/or tomorrow
  1132. [01:46] <qzjul> and if i'm at my computer or work i'll probably answer questions via irc (if i'm here) or hangouts
  1133. [01:46] <qzjul> jhaagsma@gmail.com on hangouts
  1134. [01:46] <Paladine> I'll take a look tonight, maybe experiment on the fork that I cloned
  1135. [01:46] <qzjul> also, as paladine discovered, if you actually open an issue, it emails me, and I'm *usually* pretty hooked into my email
  1136. [01:46] <Paladine> haha, I was surprised how quick you fixed that bug
  1137. [01:47] <qzjul> :-)
  1138. [01:47] <qzjul> i have the bot code checked out at work
  1139. [01:47] <qzjul> so it's easy for me to make minor tweaks heh
  1140. [01:47] <Gerdler> should i use issues for submitting or pull request?
  1141. [01:48] <qzjul> if you fix them, pull request
  1142. [01:48] <qzjul> also, you can open an issue *AND* fix it and submit a pull request
  1143. [01:48] <qzjul> i haven't figured out a workflow for that
  1144. [01:49] <Paladine> I think with the project boards, issues can be assigned (or self assigned in this case)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement