Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Session Start: Sat Mar 24 22:17:47 2018
- Session Ident: #Earthempires
- [22:17] * Now talking in #Earthempires
- [22:17] * Topic is '#earthempires Welcome to Earth Empires! If you need help or a moderator join #help (please be patient).'
- [22:17] * Set by Primeval on Fri May 19 16:34:36 2017
- [22:17] <EarthEmpires> [Marshal] I join channels, slap a bunch of people and then quit.
- [22:18] <04Marshal> just in time to hear qz's lesson
- [22:29] <qzjul> hihi
- [22:30] <qzjul> ya in theory lol
- [22:30] * Akula licks qz
- [22:30] <qzjul> o.O
- [22:31] <qzjul> Okay, so who's here for the seminar? =D
- [22:31] * Marshal raises hand
- [22:32] <qzjul> I'm going to collect some useful links, but maybe get some people started on setup and such
- [22:32] <Gerdler> me too
- [22:32] <04Marshal> i', here to log it
- [22:32] <qzjul> good stuff
- [22:32] <qzjul> what OS are you guys all running?
- [22:32] <Gerdler> win 8 :(
- [22:32] <qzjul> the readme for the bots is... old
- [22:32] <04Marshal> win10 1709
- [22:32] <qzjul> so part of my idea of this was to kindof update it based on running through it with you guys
- [22:33] <qzjul> okay so a couple windows things... kk I have a windows box that can run it too
- [22:35] <04Marshal> centos in vm
- [22:35] <qzjul> Which of you are interested in contributing, and which are interested in just running it and following?
- [22:35] <qzjul> To just clone & run: Clone the project from github: https://github.com/jhaagsma/ee_npc
- [22:35] <04Marshal> <---------- logging lesson for future generations
- [22:36] <Akula> LIES ! the logging will lead to it being included in paper manufacture
- [22:37] <Getafix> I'm on Win 10 too
- [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.
- [22:38] * Joins: mob (mob@EE-E347D6DE.lightspeed.hstntx.sbcglobal.net)
- [22:39] <qzjul> okay, perfect, i was just cleaning up some of the README
- [22:39] <qzjul> To Contribute:
- [22:39] <qzjul> Fork the project, using the fork button in Github
- [22:40] <qzjul> Then clone it locally, as described in the Run On *** sections
- [22:40] <qzjul> Then clone it locally, make changes, and push them to github.
- [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 ;-)
- [22:40] <qzjul> I'm going to fire up my Windows box and see where it's at
- [22:40] <Getafix> Do we still need to download the x86 Version of the MS VC package, or a newer version?
- [22:43] * Joins: Don_TOB_{FR} (Mibbit@EE-CBE7FDFA.tbcn.telia.com)
- [22:45] * Joins: qz|win10 (qzjul@975B237.84E9E112.C165DEF8.IP)
- [22:46] <qz|win10> okay, i don't know what i missed, i'm going to switch back and forth a bit
- [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
- [22:46] <qz|win10> ah not much
- [22:46] <04Marshal> <Getafix> Do we still need to download the x86 Version of the MS VC package, or a newer version?
- [22:46] <qz|win10> kk, that was for a way old version of PHP, and I'm not sure that's valid anymore
- [22:47] <qz|win10> newer version
- [22:48] <qz|win10> 7.2 ideally i think
- [22:48] <qz|win10> i'm already using PHP 7 features
- [22:48] <qz|win10> https://windows.php.net/downloads/releases/php-7.2.3-Win32-VC15-x64.zip
- [22:50] <qz|win10> you don't have php_curl.dll in php/ext ??
- [22:52] <Getafix> not unless its in one of the sub-directories of EXT
- [22:52] <Getafix> I have the version 7.2 installed now
- [22:52] <qz|win10> hm, it was right there in /ext
- [22:52] <qz|win10> did you get the one i pasted above?
- [22:53] <qz|win10> i might have gotten the thread-safe version
- [22:53] * Joins: Paladine (Mibbit@EE-F33549F1.bchsia.telus.net)
- [22:53] <qz|win10> hello! just getting the installation process figured out
- [22:53] <Paladine> sounds good!
- [22:53] <qz|win10> I see php_curl.dll in both versions of x64 at least
- [22:54] <Paladine> php on windows sounds like a nightmare, lol
- [22:54] <qz|win10> haha ya
- [22:54] <qz|win10> well
- [22:54] <qz|win10> not that bad
- [22:54] <qz|win10> I normally use linux, but so far we have 2 windows users, so NP
- [22:54] <qz|win10> Paladine, what OS?
- [22:54] <Paladine> Mac right now, but I have the bot running on a freebsd droplet
- [22:54] <qz|win10> if you want to Contribute, fork https://github.com/jhaagsma/ee_npc and clone locally; otherwise just clone it
- [22:55] <qz|win10> ah nice, you're ahead of the game then!
- [22:55] <mob> think i could run the bot on my raspberry pi 3 b+
- [22:55] <qz|win10> yep, absolutely
- [22:56] <qz|win10> a pi has more than enough go for the bots
- [22:56] * pang waves
- [22:56] <Paladine> yeah seems pretty resource low to keep it run
- [22:56] <qz|win10> hihi pang
- [22:56] <Paladine> running*
- [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
- [22:57] <mob> lol i have so many pi's its crazy
- [22:57] <qz|win10> pi's are useful!
- [22:57] <mob> i got one with pi hole on it to vlock adds
- [22:57] <mob> works great is also stops trackinf
- [22:58] <Paladine> I have been thinking of doing one of those too, just runs as a dns server?
- [22:58] <mob> its great
- [22:58] <mob> simple to do
- [22:59] <jayr> stfu mob
- [22:59] <Requiem_> hey qz can you make a written tutorial sometime? i cant be at my computer right now
- [22:59] <Gerdler> I think QZ main purpose with the bots is to be rank 1 in the leaderboard for total NW.
- [22:59] <Gerdler> req there is kindof a written tutorial
- [22:59] <qz|win10> Requiem: https://github.com/jhaagsma/ee_npc has a README
- [22:59] <qz|win10> that i'm updating
- [22:59] <Requiem_> ok thank you!
- [23:02] <qz|win10> I'm just trying to clone the damned thing myself onto this machine, give me a minute
- [23:02] <qz|win10> windows always makes things a bit trickier
- [23:03] <Paladine> haha, sounds like a job for vagrant
- [23:04] <c3lph1> Yo ppl
- [23:06] <qz|win10> hey hey
- [23:06] <qz|win10> okay
- [23:06] <qz|win10> i missed step 12
- [23:06] <mob> #Bottalk
- [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
- [23:07] <qz|win10> I clearly have caused some errors in country creation
- [23:07] <qz|win10> but, working now
- [23:07] <qz|win10> awesome@Getafix
- [23:08] <qz|win10> If you just started, it will spew errors on country creation
- [23:08] <qz|win10> but i can fix some of those
- [23:09] <c3lph1> Is there any chance where we can have a server which has programmable bots and players? :P
- [23:09] <Gerdler> we do
- [23:09] <Gerdler> the ai server
- [23:09] <c3lph1> Players don’t play there
- [23:09] <Gerdler> I have played there
- [23:10] <Gerdler> I won it
- [23:10] <Gerdler> :P
- [23:10] <qz|win10> technically you can play on it
- [23:10] <qz|win10> it's not really the idea
- [23:10] <Paladine> Yeah ai server lets you have 25 bot countries
- [23:10] <qz|win10> but it works
- [23:10] <Gerdler> what do you mean technically? I wonned it! sure can play it!
- [23:10] <04Marshal> lol
- [23:10] <c3lph1> It would be easier to program / test bot in real environment.
- [23:10] <qz|win10> haha i mean there's no link on the portal ;-)
- [23:11] <Gerdler> I type in /ai :)
- [23:11] <04Marshal> no link to alpha or alpha ffa either
- [23:11] <qz|win10> aplha and alphaffa have links!
- [23:11] <qz|win10> you just need to check some box
- [23:11] <Gerdler> really?
- [23:11] <Gerdler> I always just typed it in
- [23:11] <c3lph1> On ai server the prices are all very unrealistic.
- [23:12] <Gerdler> yeah that would be what we want to fix
- [23:12] <qz|win10> or... I need to check some box?
- [23:12] <qz|win10> I thought it was available in preferences, but maybe not
- [23:12] <04Marshal> yes since i can't see boxes
- [23:12] <04Marshal> related to alphas
- [23:12] <Getafix> now I can't find the line ;extension=php_curl.dll in php.ini-development
- [23:12] <qz|win10> ya you just have to add it
- [23:12] <qz|win10> I updated the README to say that now
- [23:12] <Gerdler> Geta search for curl
- [23:12] <Getafix> any particular place?
- [23:13] <qz|win10> probably after [curl]
- [23:13] <Gerdler> its far down
- [23:13] <Getafix> ok I'll try that
- [23:14] <Gerdler> line 887
- [23:15] <c3lph1> Anyone here is a web designer?
- [23:15] <jayr> hmmm
- [23:15] <qz|win10> man, the windows instructions are so much harder *sigh* lol
- [23:15] <qz|win10> Definitely not a web designer, pang is good at that stuff though
- [23:15] <Gerdler> somehow you nailed it
- [23:15] <c3lph1> I hate windows lol
- [23:15] <Paladine> Web developer, but usually have the designs provided lol
- [23:15] <qz|win10> yea, design is a whole other thing
- [23:16] <c3lph1> Which language Paladine ?
- [23:16] <Paladine> WordPress/php
- [23:16] <Gerdler> QZ its working for me somehow
- [23:16] <pang> I do product-focused work now primarily :p
- [23:16] <qz|win10> Gerdler, woo! that's awesome
- [23:16] <Ivanfluff> Gerdler add 100 oil bots
- [23:16] <Ivanfluff> tyvm
- [23:17] <qz|win10> If i recall correctly, /ai is basically an ACCELERATED version of alliance
- [23:17] <Zorp> Reporting in. I use linux though so no need to pander to me :p
- [23:17] <qz|win10> Zorp, perfect :) the instructions for linux are easy anyway
- [23:17] * Quits: jayr (Mibbit@EE-9D1EFC32.sub-174-206-7.myvzw.com) (Quit: http://www.mibbit.com ajax IRC Client)
- [23:17] <qz|win10> kk i'm switching back to linux now that i've verified the windows procedure
- [23:17] <c3lph1> Linux is awesome., but I think OSX is slightly better.
- [23:18] <Zorp> Windows sucks anyway
- [23:18] <Zorp> Osx sux too :p
- [23:18] <mob> where you check the box at
- [23:18] <Getafix> windows sux
- [23:18] <Gerdler> QZ there was one thing I had to change in your instructions for windows
- [23:18] <Gerdler> #2
- [23:19] <pang> if anyone is having trouble working in their OS, might be worth checking out VirtualBox and running a Ubuntu VM
- [23:19] <Gerdler> or I just missunderstood
- [23:19] <c3lph1> Or buy a Mac
- [23:19] <pang> Mac FTW!
- [23:19] <c3lph1> You design Pang?
- [23:20] <qzjul> alrighty i'm here
- [23:20] <pang> I do interaction design moreso than visual design
- [23:20] <qzjul> I prefer Linux to OSX for so many reasons....
- [23:20] <qzjul> mob: I must have been mistaken, I must have to do it in the db or something
- [23:21] <qzjul> pang: good call, ubuntu VM is easy peasy
- [23:21] <qzjul> Gerdler, which bit?
- [23:21] <qzjul> oh
- [23:21] <Gerdler> I just missunderstood since it was on the same line
- [23:21] <qzjul> ya you don't need the MS VC bit
- [23:21] <Gerdler> 2.1
- [23:21] <qzjul> ya, i renumbered it
- [23:21] <Gerdler> i saved as php 2.1
- [23:22] <qzjul> ahhhhhhh i see
- [23:22] <Gerdler> and I couldnt call that in cmd
- [23:22] <c3lph1> If you design a different interface for EE pang I’ll build it. I’m css/ JS pro
- [23:22] <pang> oh, I’m already a bunch of the way down that path lol
- [23:22] <c3lph1> Oh cool
- [23:22] <c3lph1> Need any help with it?
- [23:23] <qzjul> OK WHO HAS THE BOTS RUNNING NOW? :) WHO NEEDS HELP STILL?
- [23:24] <Paladine> running
- [23:24] <Zorp> I'm on phone, But intend to log the chat for future use :)
- [23:25] <qzjul> Zorp, k
- [23:25] <Gerdler> I got the bots running. phear me!
- [23:25] <qzjul> Gerdler, Getafix, c3lph1, Marshal, mob ? Ivanfluff ?
- [23:25] <qzjul> woo GJ
- [23:26] <Ivanfluff> im just watching
- [23:26] <qzjul> Ivanfluff, cool
- [23:26] <Gerdler> I got a question tho...
- [23:26] <qzjul> yep?
- [23:26] <Gerdler> https://windows.php.net/download/
- [23:26] <Gerdler> does it matter if i pick thread safe or non?
- [23:26] <qzjul> I don't think so
- [23:26] * Quits: KILLERFLUFFIER (martiansru@8322405F.A2EEDC11.B66E1E.IP) (Ping timeout)
- [23:27] <Gerdler> thats what I guessed too
- [23:27] <qzjul> I haven't read into what that means exactly
- [23:27] <qzjul> I'm not doing any multi-threading though
- [23:27] <Gerdler> im just fumbling in the dark.
- [23:27] <qzjul> Getafix, how goes?
- [23:28] * Joins: gains (pierreb@5590076A.AB4350F1.68906801.IP)
- [23:28] <qzjul> well, maybe we'll see him shortly
- [23:29] <qzjul> Alright, lets start running through things
- [23:29] <qzjul> If you haven't already guessed, ee_npc.php is the main file for the script
- [23:29] <qzjul> you run that one, and it loads configurations that you write into config.php
- [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
- [23:30] <qzjul> any of the files that are like: SomeName.class.php will autoload when calling class SomeName
- [23:30] <Getafix> not so well. Not to worry, I will copy this irc log and work on it further later
- [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
- [23:32] <qzjul> Getafix, I can take a couple to help, if you let me know where you're at?
- [23:32] <qzjul> (Given others might have similar issues)
- [23:32] <qzjul> Gerdler, etc, any questions so far?
- [23:32] * Joins: KILLERFLUFFIER (martiansru@8322405F.A2EEDC11.B66E1E.IP)
- [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
- [23:33] <qzjul> Ya, fair; the only things *completely* new are Allies.class.php and GDI.class.php
- [23:34] <qzjul> If you want to look at GDI.class.php you'll see what I'm kindof going for
- [23:34] <Getafix> first, in the renamed config.php file, I'm not sure how to fill it out properly.
- [23:34] * Quits: Akula (Akula@A74343F.16423962.FC103EFF.IP) (Quit: Quit ! Reason : you smell bad)
- [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
- [23:34] <qzjul> Getafix, okay, cool, lets run through that
- [23:35] <Getafix> There is one long line starting with <?php
- [23:35] <qzjul> oh really?
- [23:35] <qzjul> that probably means it didn't check out "windows style" line endings
- [23:36] <qzjul> check the other files in the bots
- [23:36] <Zorp> Yeah. Try out notepad2
- [23:36] <qzjul> if they are all *also* just one line, then it didn't check out properly
- [23:36] <Zorp> Very aimilar to notwpad++
- [23:36] <qzjul> ya, try notepad++ or something ya
- [23:36] <Getafix> yes, so I don't know the proper format, so I can add the AI API code
- [23:36] <gains> or notepad++
- [23:36] <qzjul> notepad++ is probably your best fastest bed
- [23:36] <qzjul> *bet
- [23:36] <Getafix> I have it open in Notepad
- [23:36] <qzjul> https://notepad-plus-plus.org/download/v7.5.6.html
- [23:36] <gains> some times wordpad have better spacing
- [23:37] <qzjul> notepad++ is quite different heh
- [23:37] <qzjul> *personally* I use Sublime Text
- [23:37] <c3lph1> If you use Linux use vim
- [23:37] <gains> if you dont want to install notepad++
- [23:37] <qzjul> and have a dozen extensions relating to PHP and styles and such
- [23:37] <c3lph1> Vim is the best!
- [23:37] <qzjul> lol@c3lph1
- [23:37] <c3lph1> :D
- [23:37] <gains> not going to argue with that c3lph1 but probably not the best thing to use for the first time
- [23:37] <Paladine> sublime text is awesome :)
- [23:37] <qzjul> setting up Sublime Text is outside the scope of this seminar though lol
- [23:38] <c3lph1> Haha
- [23:38] <Gerdler> notepad++ is epic I think I used phpdesigner for the free trial and its great too, for a month
- [23:38] <Gerdler> notepad++ has so many other uses
- [23:38] <gains> spend 1 hour in vim-adventures.com before starting :P
- [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
- [23:39] <qzjul> some of the code style rules are a bit pedantic, but they do make it look better
- [23:39] <qzjul> Getafix, success?
- [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
- [23:40] <qzjul> sounds good
- [23:41] <Gerdler> that link, QZ, made me dumber. :P
- [23:41] <qzjul> This is part of the reason for this btw! I want to know what issues people will run into
- [23:41] <qzjul> Gerdler, it's a bunch of PHPCS rules, that's all
- [23:41] <Gerdler> yes :)
- [23:41] <qzjul> PHPCS will check your code, and PHPCBF will try to auto-fix it
- [23:41] <qzjul> if you note the GDI.class.php file...
- [23:42] <qzjul> things like:
- [23:42] <qzjul> /**
- [23:42] <qzjul> * Join GDI
- [23:42] <qzjul> *
- [23:42] <qzjul> * @return $result Game Result
- [23:42] <qzjul> */
- [23:42] <qzjul> that sort of function comment
- [23:42] <qzjul> or
- [23:42] <qzjul> }//end join()
- [23:42] <qzjul> that sort of function end comment
- [23:42] <qzjul> is enforced by those rules
- [23:42] <Gerdler> ok
- [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
- [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
- [23:44] <qzjul> and I'd not been programming steadily for a while, so I didn't follow best practice
- [23:44] <c3lph1> K
- [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
- [23:45] <qzjul> and many of the recent changes in the code have been focused on cleaning it up so it's readable
- [23:45] <qzjul> both by you and by me
- [23:45] <qzjul> country_functions.php for example, has a loose collection of functions related to countries
- [23:46] <qzjul> but they're not well organized, so I'll probably try to pull them into some better organization
- [23:46] <qzjul> Getafix, running yet?
- [23:46] <Getafix> In terminal, to run this, I'm trying from the C:\ prompt c:\>php\php.exe "c:\ee_npc-master"
- [23:46] <qzjul> err
- [23:46] <qzjul> you have to actually put the ee_npc.php as the command
- [23:46] <Getafix> could not open input file
- [23:47] <qzjul> so like:
- [23:47] <qzjul> C:\php\php.exe "C:\Users\qzjul\ee_npc\ee_ncp.php"
- [23:47] <Gerdler> c:\>php\php.exe "c:\ee_npc-master\ee_npc.php"
- [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"
- [23:48] <Gerdler> not ncp
- [23:48] <qzjul> C:\>C:\php\php.exe "C:\Users\qzjul\ee_npc\ee_ncp.php"
- [23:48] <qzjul> err
- [23:48] <qzjul> npc
- [23:48] <qzjul> sure
- [23:48] <qzjul> npc
- [23:48] <qzjul> Non-Player_Country :)
- [23:48] <qzjul> C:\>C:\php\php.exe "C:\Users\qzjul\ee_npc\ee_npc.php"
- [23:50] <Zorp> oy vey
- [23:50] <Gerdler> you running?
- [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
- [23:52] <qzjul> Allies basically encapsulate the options for allies, similar to GDI
- [23:52] <Gerdler> yeah I been looking at that a bit
- [23:52] <Getafix> No, its not working, I may have the wrong versions of something on here, don't worry about me
- [23:52] <Gerdler> what error message you get?
- [23:52] <Getafix> don't worry
- [23:53] <Gerdler> it says that? :P
- [23:53] <qzjul> but it additionally has a fill() method which has some more complex logic that use the other class members
- [23:53] <qzjul> that's kindof the general idea I'll be moving towards
- [23:53] <Getafix> be happy, too
- [23:54] <Gerdler> :)
- [23:54] <qzjul> so, I anticipate the next things I'll implement, in order, will be:
- [23:55] <qzjul> Country Search; (own) Country News; War; Spy;
- [23:55] <qzjul> those will probably each have their own classes
- [23:55] <qzjul> War and Spy will ALMOST CERTAINLY invoke search, you see
- [23:55] <Gerdler> hmm
- [23:55] <qzjul> and I'll probably make additional classes for concepts such as "Retal" or "LandGrab"
- [23:56] <Paladine> Is there an api ready for attack/spy?
- [23:56] <qzjul> I'm hoping to make a "Destock" class to pull some things out of country_functions
- [23:56] <qzjul> Paladine, not quite, but I think I can do that pretty quickly actually
- [23:56] <Gerdler> lol you gonna make the bots win
- [23:56] <Paladine> kk
- [23:56] <qzjul> well
- [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
- [23:57] <c3lph1> Will bots share spy info ?
- [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
- [23:58] <qzjul> c3lph1, unlikely
- [23:58] <qzjul> so, to run through how it all works... let's see
- [23:59] <qzjul> ee_npc gets run
- [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
- [23:59] <qzjul> it loads config and stuff
- [23:59] <qzjul> then it gets server info
- [23:59] <qzjul> then drops into a while(1) loop
- [23:59] <qzjul> It checks if it has enough countries for the server, and if not, makes them
- [00:00] <qzjul> It loads saved config data for each country in turn, and if it doesn't have any, generates it
- [00:00] <qzjul> This config info is where the strat is stored, GDI preference, and where personalities will be stored
- [00:01] <qzjul> I've already created an "aggro" stub but it doesn't do anything at the moment
- [00:01] <c3lph1> K
- [00:02] <qzjul> There's also a "price tolerance" for each country
- [00:02] <Gerdler> hmm
- [00:02] <qzjul> basically, how far they're happy to go beyond the pre-set values and averages
- [00:03] <Gerdler> on express I saw $3k res/bus and $1.3k for agri just a few hours ago
- [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
- [00:03] <qzjul> None of them ever will undercut by more than 50%
- [00:03] <Gerdler> :)
- [00:03] <qzjul> and none of them will ever place over by more than 1.5x
- [00:03] <qzjul> and those are the *extremes*
- [00:04] <qzjul> the standard deviation is 10%
- [00:04] <Gerdler> is that where you use the new math class?
- [00:04] <qzjul> so most of the time they'll be placing right close to current market price
- [00:04] <c3lph1> The issue isn’t undercutting by 50%
- [00:04] <qzjul> ya, the math class pulled out the purebell function and the sd function
- [00:04] <c3lph1> It’s selling small batches of tech and they eventually cause the precise to drop more than 50%
- [00:04] <qzjul> and any other fancy bits of math will go there too
- [00:05] <qzjul> c3lph1, they never sell less than 20 turns of tech
- [00:05] <qzjul> we'll go through the strats in a bit
- [00:05] <c3lph1> Yeah but they sell 87 tech points here and there
- [00:05] <qzjul> okay, so AFTER it loads the country's preferences, it chooses which strat to play
- [00:05] <qzjul> the strat is based on the saved preference
- [00:05] <c3lph1> Then the next bot does too
- [00:06] <c3lph1> Until it crashes price
- [00:06] <qzjul> c3lph1, I don't think that actually happens?
- [00:06] <c3lph1> Check express
- [00:06] <Gerdler> the average price is what is important tho
- [00:06] <qzjul> I've never seen the bots do that at least
- [00:06] <c3lph1> Prices at 1200$
- [00:06] <qzjul> the last techer posted this as its final sale, on express:
- [00:06] <qzjul> [22:04:25] --- SELL Public: 647 t_mil @$2537
- [00:06] <qzjul> 2560 t_bus @$2938
- [00:06] <qzjul> 5555 t_res @$3663
- [00:06] <qzjul> 627 t_agri @$5361
- [00:06] <qzjul> 7306 t_war @$4450
- [00:06] <qzjul> 420 t_ms @$1806
- [00:06] <qzjul> 331 t_weap @$2037
- [00:06] <qzjul> 680 t_indy @$2340
- [00:06] <qzjul> 14 t_spy @$1432
- [00:06] <qzjul> 8948 t_sdi @$4887
- [00:07] <qzjul> so sure, it sold 14 spy, but it probably made very little, if any, spy
- [00:07] <c3lph1> Yeah
- [00:07] <qzjul> that was one turn
- [00:07] <Gerdler> if the game is populated by few players there wont be orders to fix the undercuts
- [00:07] <qzjul> sdi and agri and bus/res are pretty high too, so i don't see it being a huge issue
- [00:07] <Gerdler> that rarely happens with wanted techs in FFA or alliance
- [00:07] <c3lph1> If you go on express there’s like 10 orders of under 100 tech that drop price
- [00:08] <qzjul> that's a self-correcting problem though
- [00:08] <qzjul> the market will handle that
- [00:08] <qzjul> if there's demand they'll get eaten up fast
- [00:08] <qzjul> you'll note agri is still high
- [00:08] <Gerdler> I would not be against reducing the size of the standard deviation to 5%.
- [00:08] <qzjul> consider the last turns of the last casher on express:
- [00:09] <qzjul> [22:04:51] Playing Casher Turns for #83 https://qz.earthempires.com/express/434/ranks/83
- [00:09] <qzjul> [22:04:51] --- Indy production: 100% spy
- [00:09] <qzjul> [22:04:51] Bus: 171%; Res: 169.5%
- [00:09] <qzjul> [22:04:51] 45 turns left
- [00:09] <qzjul> [22:04:51] 44 Turns - Built 35 ent and 30 res (51%) $216M ($+3.4M) 588k Bu (-6515) API: 7
- [00:09] <qzjul> [22:04:51] 15 Turns - Explored 328 Acres (29T) (12362 A) $316M ($+100M) 399k Bu (-189.1k) API: 2
- [00:09] <qzjul> [22:04:51] --- LOW FOOD ---
- [00:09] <qzjul> [22:04:51] --- BUY Public: 449k food @ $39 $299M ($-17.6M)
- [00:09] <qzjul> [22:04:51] --- BUY Public: 7255 t_bus @$2756 (171.2%) $279M ($-20M)
- [00:09] <qzjul> [22:04:51] --- BUY Public: 5716 t_res @$3498 (169.7%) $259M ($-20M)
- [00:09] <qzjul> [22:04:51] --- BUY Public: 7255 t_bus @$2756 (171.9%) $239M ($-20M)
- [00:09] <qzjul> [22:04:51] 14 Turns - Built 35 ent and 30 res (50%) $240M ($+3.5M) 827k Bu (-6560) API: 12
- [00:09] <qzjul> [22:04:51] --- BUY Public: 329 t_res @$3498 (169.7%) $239M ($-1.2M)
- [00:09] <qzjul> [22:04:51] --- BUY Public: 329 t_res @$3498 (169.7%) $237M ($-1.2M)
- [00:09] <buch> Oi
- [00:09] <qzjul> [22:04:51] --- BUY Public: 329 t_res @$3498 (169.8%) $236M ($-1.2M)
- [00:09] <qzjul> [22:04:51] 13 Turns - Cashed 1 turns $241M ($+4.3M) 820k Bu (-6576) API: 8
- [00:09] <qzjul> [22:04:51] --- BUY Public: 410 t_res @$3498 (169.8%) $239M ($-1.4M)
- [00:09] <qzjul> [22:04:51] --- BUY Public: 410 t_res @$3498 (169.9%) $238M ($-1.4M)
- [00:09] <qzjul> [22:04:51] --- BUY Public: 661 t_mil @$2168 (97%) $236M ($-1.4M)
- [00:09] <qzjul> [22:04:51] 12 Turns - Built 35 ent and 30 res (51%) $237M ($+3.5M) 814k Bu (-6623) API: 8
- [00:09] <qzjul> [22:04:51] --- BUY Public: 336 t_res @$3498 (169.9%) $236M ($-1.2M)
- [00:09] <qzjul> [22:04:51] --- BUY Public: 336 t_res @$3498 (170%) $235M ($-1.2M)
- [00:09] <qzjul> [22:04:51] --- BUY Public: 336 t_res @$3498 (170%) $234M ($-1.2M)
- [00:09] <qzjul> [22:04:51] 11 Turns - Built 35 ent and 30 res (51%) $235M ($+3.6M) 807k Bu (-6673) API: 8
- [00:09] <qzjul> [22:04:52] --- BUY Public: 338 t_res @$3498 (170%) $234M ($-1.2M)
- [00:09] <qzjul> [22:04:52] --- BUY Public: 338 t_res @$3498 (170.1%) $232M ($-1.2M)
- [00:10] <qzjul> [22:04:52] --- BUY Public: 338 t_res @$3498 (170.1%) $231M ($-1.2M)
- [00:10] <qzjul> [22:04:52] 10 Turns - Built 35 ent and 30 res (52%) $232M ($+3.6M) 800k Bu (-6724) API: 8
- [00:10] <qzjul> [22:04:52] --- BUY Public: 341 t_res @$3498 (170.2%) $231M ($-1.2M)
- [00:10] <qzjul> [22:04:52] --- BUY Public: 550 t_mil @$2168 (96.9%) $230M ($-1.2M)
- [00:10] <qzjul> [22:04:52] --- BUY Public: 341 t_res @$3498 (170.2%) $229M ($-1.2M)
- [00:10] <qzjul> [22:04:52] 0 Turns - Explored 100 Acres (10T) (12462 A) $265M ($+36.3M) 733k Bu (-67.6k) API: 8
- [00:10] <qzjul> [22:04:52] --- BUY Public: 2916 t_res @$3498 (170.4%) $255M ($-10.2M)
- [00:10] <qzjul> [22:04:52] --- BUY Public: 3701 t_bus @$2756 (172.1%) $245M ($-10.2M)
- [00:10] <qzjul> [22:04:52] --- DPA Target: 222 (Current: 156)
- [00:10] <qzjul> [22:04:52] --- BUY Public: 83.6k m_tr @ $121 $234M ($-10.2M)
- [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
- [00:10] <qzjul> so, as long as there's demand, the price will equilibriate
- [00:10] <Getafix> hey I got it running a rainbow :)
- [00:10] <qzjul> now, none of the bots are currently buying spy tech
- [00:10] <qzjul> so that's part of that issue
- [00:10] <qzjul> I may add that to their personalities once they start requiring spies
- [00:10] <qzjul> wooo Getafix!
- [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
- [00:11] <qzjul> the bots produce based on the current price though
- [00:11] <qzjul> okay, while we're on that subject, lets jump into strats
- [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?
- [00:11] <qzjul> Gerdler, good question
- [00:11] <Gerdler> $nogoods_high = 9000;
- [00:11] <Gerdler> $nogoods_low = 2000;
- [00:11] <Gerdler> $nogoods_stddev = 1500;
- [00:11] <Gerdler> $nogoods_step = 1;
- [00:11] <Gerdler> these are new I think
- [00:11] <qzjul> Gerdler, i think those are old
- [00:12] <qzjul> but ya, i was just looking for that
- [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
- [00:12] <qzjul> so if there's no goods it jams it up based on those
- [00:13] <c3lph1> Shouldn’t it use the market history instead of current price?
- [00:13] <Gerdler> thats harder. but yea
- [00:13] <qzjul> that's a whole other kettle of fish
- [00:13] <c3lph1> Just use the average
- [00:13] <c3lph1> It’s a function already built
- [00:13] <qzjul> honestly, I don't know that that makes a ton of difference
- [00:13] <c3lph1> It would
- [00:14] <Gerdler> it can do if its a sparsely populated server like express
- [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
- [00:15] <Gerdler> yeah but you wouldnt have the crashing effect with 3 bots placing under each others in a row
- [00:15] <qzjul> possibly if the good has basically no demand
- [00:15] <qzjul> true
- [00:15] <c3lph1> ^^
- [00:15] <qzjul> but the price will average out eventually
- [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
- [00:15] <Zorp> I dont think it would be similar
- [00:15] <qzjul> because they'll *stop making it*
- [00:15] <qzjul> the second and third bots will stop producing those techs
- [00:16] <c3lph1> I just know players sell based on average rate not current
- [00:16] <Gerdler> yes but they will still sell old techs they got, small annoying batches
- [00:16] <qzjul> sure; i still think it'll *effectively* be the same
- [00:16] <qzjul> BUT
- [00:16] <qzjul> guess what!
- [00:16] <c3lph1> Small batches are crashing tech prices.
- [00:16] <qzjul> you can contribute to the NPC code now ;-)
- [00:17] <qzjul> haha
- [00:17] <c3lph1> Lol true
- [00:17] <Paladine> lol
- [00:17] <qzjul> so, write that, submit a pull request, and i'll add it in
- [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
- [00:17] <qzjul> they have access to orders, but don't use them yet
- [00:17] <c3lph1> What’s the variable that you use to post the average rate on history tab?
- [00:18] <c3lph1> And the class
- [00:18] <qzjul> Ah the bots don't have access to market history yet
- [00:18] <qzjul> we'll get there
- [00:18] <qzjul> but, you could have each bot note the history in an array and jam it in a separate file
- [00:18] <qzjul> or can wait for that to come in the API
- [00:19] <qzjul> anyway
- [00:19] <qzjul> Back to the NPC flow & Strats!
- [00:19] <Gerdler> ^^
- [00:19] <qzjul> NPC loads settings, finds out what strat the country is from the settings, then plays one of:
- [00:19] <qzjul> switch ($cpref->strat) {
- [00:19] <qzjul> case 'F':
- [00:19] <qzjul> $c = play_farmer_strat($server, $cnum);
- [00:19] <qzjul> $playfactor = 0.8;
- [00:19] <qzjul> break;
- [00:19] <qzjul> case 'T':
- [00:19] <qzjul> $c = play_techer_strat($server, $cnum);
- [00:19] <qzjul> $playfactor = 0.5;
- [00:19] <qzjul> break;
- [00:19] <qzjul> case 'C':
- [00:19] <qzjul> $c = play_casher_strat($server, $cnum);
- [00:19] <qzjul> break;
- [00:19] <qzjul> case 'I':
- [00:19] <qzjul> $c = play_indy_strat($server, $cnum);
- [00:19] <qzjul> $playfactor = 0.33;
- [00:19] <qzjul> break;
- [00:19] <qzjul> default:
- [00:20] <qzjul> $c = play_rainbow_strat($server, $cnum);
- [00:20] <qzjul> }
- [00:20] <qzjul> Farmer, Techer, Casher, Indy, Rainbow
- [00:20] <qzjul> no oilers yet because I didn't write them
- [00:20] <qzjul> largely because on the AI server, no AI's buy oil, yet
- [00:20] <c3lph1> !!!
- [00:20] <qzjul> (this, incidentally, is part of the issue with running just on AI)
- [00:20] <qzjul> questions so far?
- [00:20] <c3lph1> Maybe make them buy it anyways?
- [00:20] <Paladine> nadda
- [00:20] <gains> qzjul, you should update the readme for linux, its not correct
- [00:21] <qzjul> gains, damn, what'd I miss
- [00:21] <gains> curl and i get a warning when i run the script
- [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
- [00:21] <qzjul> ah poop@curl, you're right
- [00:21] <c3lph1> What’s the error?
- [00:22] <qzjul> sudo apt install php-curl
- [00:22] <gains> also says [22:04:59] No Settings File Found before unix time
- [00:22] <c3lph1> Yup need curl
- [00:22] <gains> i took curl
- [00:22] <qzjul> that's fine, it'll generate a settings file
- [00:22] <gains> :)
- [00:22] <Getafix> I have that same message in Windows 10 terminal
- [00:23] <gains> working way better now
- [00:23] <qzjul> no doubt!
- [00:23] <qzjul> alrighty
- [00:23] <qzjul> so
- [00:23] <qzjul> each of the 5 (current) strats are in their own files
- [00:23] <qzjul> I might change them to be classes, but they'll still be in their own files
- [00:23] <Getafix> me too, NO Settings File Gound
- [00:23] <c3lph1> Getafix you have it working now?
- [00:24] <Getafix> How do I "take curl"?
- [00:24] <c3lph1> Did you rename the file? I remember that was somethhhing you had to do.
- [00:24] <qzjul> might make them extend from a Strat class or something
- [00:24] <qzjul> err
- [00:24] <Getafix> sorry, I am a noob. A rainbow in an infinite loop is all I deserve :)
- [00:24] <qzjul> uhh
- [00:24] <c3lph1> I’m on phone right now. So I can’t look.
- [00:25] <qzjul> what'd i miss exactly?
- [00:25] <qzjul> if you've made a config.php file, it should have something like 'save_settings_file' => 'settings.json'
- [00:25] <qzjul> in it
- [00:25] <qzjul> and if it doesn't find one it'll make it
- [00:25] <c3lph1> I remember the settings file wasn’t correct name and you had to rename it — is that their issue?
- [00:25] <qzjul> eventually
- [00:26] <qzjul> I don't think I had to rename it?
- [00:26] <c3lph1> Ok continue your seminar I’ll look it up later
- [00:26] <qz|win10> oh, you DO have to rename the "config.php" seminar
- [00:26] <qz|win10> err
- [00:26] <qz|win10> file
- [00:26] <Getafix> I do have that line in the config file, that I can now see in Notepad ++
- [00:26] <qz|win10> "config.php"
- [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
- [00:27] <qz|win10> which I was editing yesterday
- [00:27] <Gerdler> yeah its example_config and you gotta rewrite it with your info and rename it config
- [00:28] <c3lph1> Yeah it’s name config_example
- [00:28] <c3lph1> You have to rename it to config right?
- [00:28] <Gerdler> yes
- [00:28] <c3lph1> I remembered that
- [00:28] <c3lph1> Noobs won’t know that
- [00:29] <Getafix> I did that. Does Getafix have to capitalized?
- [00:29] <qz|win10> It was in the README
- [00:30] <c3lph1> Oh there you go
- [00:30] <Gerdler> ohh right I kept the ' ' things. does it work both with and without them?
- [00:30] <qz|win10> err no, if you take out the 'quotes' around things everythign will break
- [00:31] <Getafix> is there supposed to be a ); at the end of the config file after 'save_settings_file' => 'settings.json' ?
- [00:31] <qz|win10> no, just optionally a comma there
- [00:31] <qz|win10> there should be a ]; on the next line
- [00:31] <qz|win10> it's an array
- [00:32] <qz|win10> I'm going to change the readme to say you should CD to the directory that the script is in
- [00:32] <c3lph1> It is supposed to have it
- [00:32] <qz|win10> and run C:\php\php.exe ee_npc.php
- [00:32] <c3lph1> Arrays are either array() or []
- [00:34] <c3lph1> https://www.irccloud.com/pastebin/NV1jAkhB
- [00:34] <Overlord> 7URL (irccloud.com/pastebi) - 7Title: Snippet | IRCCloud - 7Speed: 2.67 KB@5.61 KB/s
- [00:35] <c3lph1> The ); needs to be there
- [00:35] <qz|win10> yea, old style is array() and new style is []
- [00:36] <c3lph1> Are you on 5.6 or7+?
- [00:36] <qzjul> alright
- [00:36] <Zorp> 7
- [00:36] <qzjul> 7+ now
- [00:36] <c3lph1> Nice!
- [00:36] <qzjul> I've been using the ?? operator for simplicity
- [00:37] <qzjul> so it *needs* to be 7+ now
- [00:37] <c3lph1> ?? Lol wth
- [00:37] <Gerdler> my bots are destocking
- [00:37] <qzjul> instead of $something = isset($value) ? $value : $default; you can just do $something = $value ?? $default;
- [00:37] <qzjul> and it's exactly the same
- [00:37] <qzjul> yea, the server is ending
- [00:37] <qzjul> you all might have to do a git pull
- [00:38] <c3lph1> Oh nice!
- [00:38] <qzjul> I pushed in a fix for the destocking loop *since* we started the seminar
- [00:38] <qzjul> I'd forgotten to commit yesterday
- [00:38] <Gerdler> isnt there like a 2 min turn rate on ai server?
- [00:38] <Paladine> haha, destocking has been going on for awhile...
- [00:39] <qzjul> yea, but it auto-destocks 50 turns before the end of the reset
- [00:39] <Gerdler> but this is 140 turns before the end?
- [00:39] <qzjul> so we've probably been destocking for 20 minutes
- [00:39] <Gerdler> what is turn rate?
- [00:39] <qzjul> 2 min probably?
- [00:39] <qzjul> = 100 minutes?
- [00:39] <Gerdler> I suck at math
- [00:39] <qzjul> end of reset in 1.3 hours?
- [00:40] <Gerdler> yes
- [00:40] <qzjul> so at 22:20 game time it probably started destocking ya?
- [00:40] <qzjul> okay!
- [00:41] <qzjul> Back on track lol...
- [00:41] <qzjul> Getafix, you all good?
- [00:41] <qzjul> Everybody get a git pull in and restart your bots?
- [00:41] <c3lph1> Can we build custom scripts and you implement that script for that specific bot?
- [00:41] <qzjul> c3lph1, what do you mean by that?
- [00:41] <c3lph1> :p
- [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.
- [00:42] <qzjul> Okay, so, back to the strats, and relevant to c3lph1's question
- [00:42] <qzjul> I have 5 strats there
- [00:42] * Joins: buch (AndChat493@83F58226.60861F4F.2205B856.IP)
- [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.
- [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
- [00:43] <qzjul> Getafix, sounds good, PM me in IRC or in forums any time and I'll respond *eventually* lol
- [00:43] <Getafix> Thanks!!
- [00:44] <c3lph1> That way ppl who code the bots can see their bots on live server.
- [00:44] <qzjul> or, ideally, you'd incorporate it to do that (after asking me a percentage) and I'd just merge it in
- [00:45] <qzjul> yea; you wouldn't necessarily know which are yours, but you'd potentially be able to figure it out
- [00:45] <c3lph1> You’d get different personalities.
- [00:45] <Gerdler> you can easily make a change that is spyable like adding 1CS after reaching your bpt goals
- [00:45] <qzjul> yea, exactly
- [00:46] <qzjul> true; though everybody else would be able to see all the code anyway
- [00:46] <qzjul> given it's open sourced on github
- [00:46] * Quits: Link (Link@9FF03CFA:84A89EAA:36A98F7C:IP) (Ping timeout)
- [00:46] <c3lph1> We need a different name generator.
- [00:46] <qzjul> add a function
- [00:46] <qzjul> i'll incorporate it
- [00:46] <qzjul> name generator is low priority lol
- [00:47] <Gerdler> wont it be really complex to potentially have like 3-5 bot codes...
- [00:47] <qzjul> no, exactly, it's easy for me to add more
- [00:47] <qzjul> Back to the seminar flow! lol
- [00:47] <c3lph1> Yeah my bad
- [00:47] <c3lph1> Lol
- [00:47] <qzjul> lets look at farmer_strat.php
- [00:47] <qzjul> farmer is the simplest thing
- [00:47] <qzjul> it makes farms
- [00:47] <qzjul> buys agri tech
- [00:47] <qzjul> and def
- [00:47] <qzjul> and sells bushels
- [00:47] <qzjul> makes sense ya?
- [00:48] <qzjul> k
- [00:48] <qzjul> so
- [00:48] <c3lph1> Yup
- [00:48] <qzjul> the way it loads (all strats) is a little ugly at the moment, but I'll try to fix that
- [00:48] <Gerdler> mostly buys res/bus tech but ya. :)
- [00:48] <Gerdler> //what, goal, priority
- [00:48] <Gerdler> ['t_agri',215,8],
- [00:48] <Gerdler> ['t_bus',178,4],
- [00:48] <Gerdler> ['t_res',178,4],
- [00:48] <Gerdler> ['t_mil',94,1],
- [00:48] <qzjul> sure, that too
- [00:49] <Gerdler> agri is max at 230% so it is the same as the indy bots you just changed ;)
- [00:49] <qzjul> and again, we can alter those priorities with personalities and such
- [00:49] <qzjul> it is?
- [00:49] <qzjul> i thought it was 220 lol
- [00:49] <c3lph1> Those are too high :P
- [00:49] <qzjul> maybe my brain is back in the old days
- [00:49] <Gerdler> yeah i think agri was max 225 before I forget.
- [00:49] <Ivanfluff> those bus res are really high
- [00:49] <qzjul> what's a good %age for an agri these days then?
- [00:49] <Ivanfluff> 220
- [00:49] <Ivanfluff> and lower bus res
- [00:50] <c3lph1> Depends on govt
- [00:50] <qzjul> ['t_agri',220,8],
- [00:50] <qzjul> ['t_bus',175,4],
- [00:50] <qzjul> ['t_res',175,4],
- [00:50] <qzjul> ['t_mil',95,1],
- [00:50] <qzjul> true
- [00:50] <c3lph1> But yeah 220 for farmer
- [00:50] <qzjul> like that?
- [00:50] <Ivanfluff> id go 170 bus res
- [00:50] <Gerdler> 228
- [00:50] <c3lph1> Bus too high
- [00:50] <c3lph1> Red too high
- [00:50] <Getafix> because you are not techers!
- [00:50] <qzjul> ['t_agri',228,8],
- [00:50] <qzjul> ['t_bus',175,4],
- [00:50] <qzjul> ['t_res',175,4],
- [00:50] <qzjul> ['t_mil',95,1],
- [00:50] <Ivanfluff> if we want the bots to be like players they need to be like players
- [00:50] <qzjul> ja?
- [00:51] <Gerdler> I like it
- [00:51] <Ivanfluff> what player stocks with 228 agri or bus res at 175
- [00:51] <c3lph1> None
- [00:51] <Ivanfluff> id have gone like 220 170 170
- [00:51] <c3lph1> That 8% would be too expensive
- [00:51] <Gerdler> ivan they stocked bus/res tech before
- [00:52] <Ivanfluff> true enough
- [00:52] <Gerdler> if you are all-xp you'd get 225-228% depending on price
- [00:52] <Gerdler> on alliance
- [00:52] <c3lph1> But as a player what do you do gerd
- [00:52] <Ivanfluff> we dont want em to get more military either
- [00:52] <Ivanfluff> the breaks are insane as they are
- [00:52] <qzjul> okay how's about i do this for now lol:
- [00:52] <Ivanfluff> so ok im with gerdler
- [00:52] <qzjul> ['t_agri',226,8],
- [00:52] <qzjul> ['t_bus',173,4],
- [00:52] <qzjul> ['t_res',173,4],
- [00:52] <qzjul> ['t_mil',95,1],
- [00:52] <qzjul> haha okay
- [00:52] <Gerdler> celphi as an all-xp player Id get something like that^
- [00:52] <c3lph1> But he plans to have them atk
- [00:53] <Ivanfluff> depends on tech prices really gerdler if they were cheap sure
- [00:53] <Ivanfluff> if it was expensive u wouldnt
- [00:53] <qzjul> thing is currently many of them are sitting on a few $B in cash
- [00:53] <Gerdler> yeah and we dont know the prices, but the bots gotta spend on something
- [00:53] <c3lph1> I think 170bus res is pushing it
- [00:53] <qzjul> and they don't *really* understand stockpiling yet
- [00:53] <Ivanfluff> nod gerdler
- [00:53] <c3lph1> Realistically I think it’s 220 /170/170
- [00:54] <Gerdler> no way
- [00:54] <qzjul> anyway, the exact numbers don't matter
- [00:54] <c3lph1> Or even 165/165
- [00:54] <qzjul> we can change those eventually
- [00:54] <Ivanfluff> like gerdler said they need to blow cash badly
- [00:54] <qzjul> or make a distribution
- [00:54] <Ivanfluff> else id agree with you celphi
- [00:55] <Gerdler> sorry for getting us off-track lol
- [00:55] <qzjul> np
- [00:55] <qzjul> anyway
- [00:55] <Ivanfluff> tbh we should discuss tpa too lol
- [00:55] <c3lph1> :D
- [00:55] <qzjul> so, again a little ugly, once it loads it, it checks if it's a monarchy
- [00:55] <Ivanfluff> the ranging is insane
- [00:55] <qzjul> and chooses a different govt if it is
- [00:55] <Ivanfluff> :P
- [00:56] <qzjul> tpa? tanks? turrets?
- [00:56] <qzjul> because there is no goal for those
- [00:56] <Ivanfluff> tech per acre
- [00:56] <qzjul> oh
- [00:56] <qzjul> ehh
- [00:56] <qzjul> they don't care
- [00:56] <Ivanfluff> i meant in the game not for bots
- [00:56] <Gerdler> :)
- [00:56] <qzjul> oh
- [00:56] <qzjul> gotcha
- [00:56] <qzjul> anyway
- [00:56] <qzjul> so currently it chooses between a handful of sensible options
- [00:57] <qzjul> so that it doesn't always choose X or Y for a given strat
- [00:57] <c3lph1> That part works!
- [00:57] <qzjul> for a farmer, most of the time it's going to choose Fasc, but will choose rep or dict or demo
- [00:57] <qzjul> (**aside: things like change_govt will go in their own class soon, I hope)
- [00:58] <qzjul> then it grabs PM & market info, because all strats do that currently
- [00:58] <qzjul> for a farmer, I don't think it makes any decisions based on the market, so that's less relevant
- [00:58] <qzjul> a this point, an indy or techer would decide what to make though
- [00:58] <Gerdler> pm stands for private or public? :)
- [00:58] <qzjul> PM is private
- [00:58] <qzjul> i can make that make more sense with classes! ;-)
- [00:59] <gains> so when can i run this in 1a?
- [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
- [01:00] <qzjul> gains, you can't but you can contribute to this project, which *is* running in 1A right now
- [01:00] <Gerdler> :)
- [01:00] <qzjul> the idea is that you can play your bots, and test them, and try to win, on AI server
- [01:00] <qzjul> and if you want to contribute to the alliance/express/FFA bots, then you do so with this project
- [01:00] <gains> but i want my own botz to kill Ivanfluff with
- [01:00] <c3lph1> How often does ai server run?
- [01:01] <qzjul> constantly
- [01:01] <c3lph1> The set I mean
- [01:01] <qzjul> oh
- [01:01] <c3lph1> 2days?
- [01:01] <Paladine> around 3 days
- [01:01] <qzjul> it's like alliance, but 2 min turns instead of 20?
- [01:01] <qzjul> or something?
- [01:01] <c3lph1> K
- [01:01] <qzjul> i tried to keep the values all *relatively* the same
- [01:02] <c3lph1> Can you make link to it on homepage? :)
- [01:02] <qzjul> so like the PS time is /10 as well
- [01:02] <c3lph1> K
- [01:02] <qzjul> just type in /ai lol
- [01:02] <Ivanfluff> just like the good old days then gains :D
- [01:02] <c3lph1> Pfft —
- [01:02] <qzjul> gains, ya, you can make a bot targeting Ivan ;-) just commit it to the project lol
- [01:03] <c3lph1> Lol!!!
- [01:03] <Ivanfluff> its the problem being the top player around, everyone wants to target you :(
- [01:03] <qzjul> but you have to make it target using behaviours rather than numbers or names ;)
- [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
- [01:04] <Ivanfluff> just use "hit best player in the game" function
- [01:04] <Ivanfluff> :D
- [01:04] <qzjul> heh
- [01:04] <c3lph1> Haha
- [01:04] <qzjul> anyway
- [01:04] <Gerdler> ...
- [01:04] <qzjul> bots!
- [01:04] <Gerdler> !
- [01:04] <Ivanfluff> gerdler just got jealous
- [01:04] <qzjul> they all have something like play_strat_turn()
- [01:04] <qzjul> so, play_farmer_turn
- [01:05] <qzjul> this bit i've especially cleaned up recently
- [01:05] <qzjul> this is basically where the fundamentals of the strat are laid down
- [01:05] <qzjul> the order in which the ladder logic is run is kindof key
- [01:05] <qzjul> I am very happy to accept alternate styles of logic, by the way
- [01:05] <qzjul> this is a very rudimentary approach to playing a strategy
- [01:05] <c3lph1> K
- [01:06] <qzjul> I'm going to paste the function here:
- [01:06] <qzjul> function play_farmer_turn(&$c)
- [01:06] <qzjul> {
- [01:06] <qzjul> //c as in country!
- [01:06] <qzjul> $target_bpt = 65;
- [01:06] <qzjul> global $turnsleep;
- [01:06] <qzjul> usleep($turnsleep);
- [01:06] <c3lph1> Yeah
- [01:06] <qzjul> //out($main->turns . ' turns left');
- [01:06] <qzjul> if ($c->shouldBuildSingleCS($target_bpt)) {
- [01:06] <qzjul> //LOW BPT & CAN AFFORD TO BUILD
- [01:06] <qzjul> //build one CS if we can afford it and are below our target BPT
- [01:06] <qzjul> return build_cs(); //build 1 CS
- [01:06] <qzjul> } elseif ($c->protection == 0 && $c->food > 7000
- [01:06] <qzjul> && (
- [01:06] <qzjul> $c->foodnet > 0 && $c->foodnet > 3 * $c->foodcon && $c->food > 30 * $c->foodnet
- [01:06] <qzjul> || $c->turns == 1
- [01:06] <qzjul> )
- [01:06] <c3lph1> They’re all the same across all servers?
- [01:06] <qzjul> ) { //Don't sell less than 30 turns of food unless you're on your last turn (and desperate?)
- [01:06] <qzjul> return sellextrafood_farmer($c);
- [01:06] <qzjul> } elseif ($c->shouldBuildSpyIndies()) {
- [01:06] <qzjul> //build a full BPT of indies if we have less than that, and we're out of protection
- [01:06] <qzjul> return build_indy($c);
- [01:06] <qzjul> } elseif ($c->shouldBuildFullBPT($target_bpt)) {
- [01:06] <qzjul> //build a full BPT if we can afford it
- [01:06] <qzjul> return build_farmer($c);
- [01:06] <qzjul> } elseif ($c->shouldBuildFourCS($target_bpt)) {
- [01:06] <qzjul> //build 4CS if we can afford it and are below our target BPT (80)
- [01:06] <qzjul> return build_cs(4); //build 4 CS
- [01:06] <qzjul> } elseif ($c->built() > 50) { //otherwise... explore if we can
- [01:06] <qzjul> return explore($c, min(max(1, $c->turns - 1), max(1, turns_of_money($c) - 3)));
- [01:06] <qzjul> } else { //otherwise... cash
- [01:06] <qzjul> return cash($c);
- [01:06] <qzjul> }
- [01:07] <qzjul> }//end play_farmer_turn()
- [01:07] <qzjul> yea, all across all servers are the same
- [01:07] <c3lph1> 65bpt isn’t realistic on express.
- [01:07] <qzjul> is it too high?
- [01:07] <c3lph1> So we need differ strays based on server
- [01:07] <Gerdler> considering how much acres they lose and rebuild it might be
- [01:07] <c3lph1> *strats
- [01:07] <qzjul> I feel like I made it lower since my original was 80
- [01:08] <qzjul> I'm *quite* happy for the target bpt to be a function of turns left in the reset, for example
- [01:08] <Gerdler> 65 is optimal for 17k acres.
- [01:08] <Gerdler> there is issue with the dicts
- [01:08] <Gerdler> in express
- [01:08] <qzjul> since I'd like to continue to generate additional bots as the server runs
- [01:08] * Joins: havoc (434798b1@23F2D619.E22D1821.A98BAB01.IP)
- [01:08] <qzjul> Okay, have you all had a chance to digest the above function?
- [01:08] <qzjul> any thoughts/questions on it?
- [01:09] <c3lph1> Yeah—
- [01:09] <Gerdler> other than some numbers that might change
- [01:09] <Gerdler> I think its logical and easy to understand given some time with it
- [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
- [01:10] <c3lph1> Shouldn’t build bpt after landgoal is reached
- [01:10] <qzjul> yea; it's kindof evolved a bit too, after some stupid behaviours
- [01:10] <Gerdler> landgoal?
- [01:10] <c3lph1> Err CS that is
- [01:11] <qzjul> there's no land goal, because there's no stockpiling
- [01:11] <qzjul> ya, techer has had quite a number of stupid behaviours
- [01:11] <c3lph1> Should add landgoal
- [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
- [01:12] <Paladine> some combination of land goal and how much of the set remains
- [01:13] <Gerdler> the techer bots should have that yes but I dont see how its needed on the others
- [01:13] <Gerdler> maybe rainbow bots too
- [01:13] <c3lph1> Bc exploring at 5A a turn is pointless
- [01:13] <Gerdler> they never get to that
- [01:13] <qzjul> well, cashing is better than exploring, but it's hard to say when that should happen if they're being farmed
- [01:13] <c3lph1> Even 10A
- [01:14] <Gerdler> hey thats very well worth it depending on time left
- [01:14] <qzjul> I all-x past 7A returns as a Rep though =/
- [01:14] <Gerdler> yep
- [01:14] <c3lph1> On alliance sure
- [01:14] * qzjul always all-x casher's because it's easy
- [01:14] <c3lph1> Not express.
- [01:15] <qzjul> we can probably figure out some sort of "Turns left" land goal
- [01:16] <Gerdler> yeah like if acres*turns_taken> turns_left*C then return cash
- [01:16] <qzjul> anyway, so, to compare and contrast with farmer, techer is the most complicated function:
- [01:16] <qzjul> function play_techer_turn(&$c)
- [01:16] <qzjul> {
- [01:16] <qzjul> //c as in country!
- [01:16] <qzjul> $target_bpt = 65;
- [01:16] <qzjul> global $turnsleep, $mktinfo, $server_avg_land;
- [01:16] <qzjul> $mktinfo = null;
- [01:16] <qzjul> usleep($turnsleep);
- [01:16] <qzjul> //out($main->turns . ' turns left');
- [01:16] <qzjul> if ($c->shouldBuildSingleCS($target_bpt)) {
- [01:16] <qzjul> //LOW BPT & CAN AFFORD TO BUILD
- [01:16] <qzjul> //build one CS if we can afford it and are below our target BPT
- [01:16] <qzjul> return build_cs(); //build 1 CS
- [01:16] <qzjul> } elseif ($c->protection == 0 && total_cansell_tech($c) > 20 * $c->tpt && selltechtime($c)
- [01:16] <qzjul> || $c->turns == 1 && total_cansell_tech($c) > 20
- [01:16] <qzjul> ) {
- [01:16] <c3lph1> Techer has best chance as bot imo because it requires the least land
- [01:16] <qzjul> //never sell less than 20 turns worth of tech
- [01:16] <qzjul> //always sell if we can????
- [01:16] <qzjul> return sell_max_tech($c);
- [01:16] <qzjul> } elseif ($c->shouldBuildSpyIndies()) {
- [01:16] <qzjul> //build a full BPT of indies if we have less than that, and we're out of protection
- [01:16] <qzjul> return build_indy($c);
- [01:16] <qzjul> } elseif ($c->shouldBuildFullBPT($target_bpt)) {
- [01:16] <qzjul> //build a full BPT if we can afford it
- [01:16] <qzjul> return build_techer($c);
- [01:16] <qzjul> } elseif ($c->shouldBuildFourCS($target_bpt)) {
- [01:17] <qzjul> //build 4CS if we can afford it and are below our target BPT (80)
- [01:17] <qzjul> return build_cs(4); //build 4 CS
- [01:17] <qzjul> } elseif ($c->tpt > $c->land * 0.17 * 1.3 && $c->tpt > 100 && rand(0, 100) > 2) {
- [01:17] <qzjul> //tech per turn is greater than land*0.17 -- just kindof a rough "don't tech below this" rule...
- [01:17] <qzjul> return tech_techer($c);
- [01:17] <qzjul> } elseif ($c->built() > 50
- [01:17] <qzjul> && ($c->land < 5000 || rand(0, 100) > 95 && $c->land < $server_avg_land)
- [01:17] <qzjul> ) {
- [01:17] <qzjul> //otherwise... explore if we can, for the early bits of the set
- [01:17] <qzjul> return explore($c, min(max(1, $c->turns - 1), max(1, min(turns_of_money($c), turns_of_food($c)) - 3)));
- [01:17] <qzjul> } else { //otherwise, tech, obviously
- [01:17] <qzjul> return tech_techer($c);
- [01:17] <qzjul> }
- [01:17] <qzjul> }//end play_techer_turn()
- [01:17] <qzjul> basically, its the same, but trying to decide when it should tech instead of explore is tricky
- [01:17] <qzjul> I *think* it's much better now
- [01:17] <qzjul> mostly, i tweaked this last bit: rand(0, 100) > 2
- [01:17] <qzjul> I think that used to be rand(0, 100) > 50
- [01:17] <qzjul> or something
- [01:17] <gains> code is easy to read. just have to find time for it
- [01:18] <qzjul> yea, year ya; it'll be easier soon i hope
- [01:18] <Gerdler> yeah it was changed a bit by izarc early last year
- [01:18] <qzjul> (not the time thing, the reading)
- [01:18] <qzjul> ya, zarc tweaked it, and i tweaked it more the other day
- [01:18] <Gerdler> there are still issues based on the govt afaik
- [01:18] <qzjul> oh
- [01:18] <qzjul> i also nerfed the tendency to explore
- [01:18] <qzjul> rand(0, 100) > 95
- [01:18] <Ivanfluff> i just wanna add something before i go to bed
- [01:18] <Gerdler> theo and tyr techers have different tax income and therefore behave differently
- [01:18] <qzjul> that was way higher before
- [01:19] <qzjul> Ivanfluff, hm?
- [01:19] <Ivanfluff> i think its important to keep the end goal in sight
- [01:19] <qzjul> definitely@Ivan
- [01:19] <Ivanfluff> and not just optimize everything for the fluff of it
- [01:20] <Ivanfluff> bots can prolly be scripted to play better then most players but it doesnt really benefit the game
- [01:20] <Gerdler> I agree with this...
- [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
- [01:20] <gains> Ivanfluff thats why he asked for this, so we could make our own bots
- [01:20] <gains> so they get more random
- [01:21] <Ivanfluff> nod qz
- [01:21] <qzjul> even if they're floundering around, it's useful for the market and game
- [01:21] <Gerdler> well
- [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.
- [01:21] <qzjul> I fixed the dpa issue and people started instantly complaining that they're hard to farm now lol
- [01:21] <04Marshal> for techmartket not for military
- [01:21] <Ivanfluff> dpa?
- [01:21] <qzjul> defence per acre
- [01:21] <04Marshal> def per acre
- [01:21] <gains> defense per acres
- [01:21] <Ivanfluff> its not the dpa its the def allies
- [01:21] <qzjul> ah right
- [01:21] <qzjul> well
- [01:22] <Zorp> They're not hard to farm X_X
- [01:22] <Gerdler> its dpa too actually but its nice enough still
- [01:22] <qzjul> my plan is to make it so that there's a personality for allying
- [01:22] <qzjul> as in, 60% will ally, 30% won't
- [01:22] <qzjul> 30% will GDI
- [01:22] <qzjul> and those won't be the same %ages
- [01:22] <c3lph1> They shouldn’t be easy to farm lol
- [01:22] <qzjul> should create a much more rounded profile to the countries
- [01:22] <c3lph1> They’re not farm bots lol
- [01:22] <qzjul> basically, what I want, is to create a nice CONTINUOUS curve from awesome players to shitty botw
- [01:22] <Ivanfluff> define easy celphi
- [01:22] <qzjul> *bots
- [01:23] <qzjul> and ideally there'd be some overlap between bots and players in the middle
- [01:23] <c3lph1> Like they should carry various defenses. Like what players do
- [01:23] <qzjul> yea
- [01:23] <c3lph1> Some high some medium some low
- [01:23] <qzjul> yea
- [01:23] <Gerdler> but on ivans point I gotta say this: making bots retal is FAR FAR more important than making them landgrab, imo.
- [01:24] <gains> amg
- [01:24] <gains> stop it Gerdler
- [01:24] <c3lph1> Agree
- [01:24] <gains> i want acres not lose acres
- [01:24] <c3lph1> That’s what players do anyways
- [01:24] <qzjul> well i want some of them to retal
- [01:24] <qzjul> but not all of them
- [01:24] <qzjul> it's got to be some risk
- [01:24] <qzjul> and some will do so without spying
- [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
- [01:24] <qzjul> some will do with spying
- [01:24] <qzjul> etc
- [01:24] <c3lph1> The closer to a player actions the better
- [01:25] <Ivanfluff> not necesarily
- [01:25] <qzjul> I really want a huge variety
- [01:25] <Ivanfluff> we dont care if the bots finish t10 or not
- [01:25] <qzjul> I don't want them to all be clones of each other
- [01:25] <Ivanfluff> varity, market depth etc awesome
- [01:25] <Ivanfluff> variety
- [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
- [01:26] <c3lph1> Exactly
- [01:26] <c3lph1> Basically defeats explore button
- [01:26] <qzjul> that said, that *is* a better start than an empty bottom
- [01:26] <Getafix> sounds good!
- [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...
- [01:26] <qzjul> I think the bots remove pressure from players to some degree
- [01:26] <c3lph1> Yup
- [01:26] <qzjul> which is probably good given the size of the community now
- [01:26] <c3lph1> Larger pull
- [01:27] <qzjul> if we had 20k players it'd be a little different
- [01:27] <c3lph1> *pool
- [01:27] <qzjul> mhmm
- [01:27] <qzjul> and if there's bots with human-like behaviour, than i'd be more comfortable adding more of them
- [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
- [01:28] <c3lph1> Yup
- [01:28] <qzjul> given in all likelihood players will be better than bots for the forseeable future
- [01:28] <Gerdler> is it a good thing if we dont know who is the bot?
- [01:28] <qzjul> yes, i would say that is good
- [01:29] <Gerdler> if we dont know who is a bot we dont know who to farm
- [01:29] <Ivanfluff> we gonna make bots tag up too?
- [01:29] <Ivanfluff> get pacts?
- [01:29] <Ivanfluff> pay reps? :P
- [01:29] <Gerdler> they have pacts
- [01:29] <Gerdler> ahh
- [01:29] <Getafix> negotiate?
- [01:29] <Ivanfluff> i meant alliance pacts
- [01:29] <qzjul> ya, i'd like to make 20-30% of the bots tag up too
- [01:29] <Gerdler> I have FDP with the bots
- [01:29] <Ivanfluff> lets call it SKYNET!
- [01:29] * Marshal slaps Ivanfluff around a bit with a large trout
- [01:30] <qzjul> negotiation would be cool, but would probably involve a whole other interface around the clans
- [01:30] <Ivanfluff> lets just make all the bots FS all the players
- [01:30] <Gerdler> make an alicebot to negotiate
- [01:30] <c3lph1> Lol Ivan.
- [01:30] <Ivanfluff> if so can they have boobs as well? FA used to be so much more fun with FAs with boobs
- [01:31] <Ivanfluff> night fluffers
- [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.
- [01:32] <Ivanfluff> we're pretty much always gonna be able to id the bots
- [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
- [01:32] <Ivanfluff> unless the bots starts hidding in real tags
- [01:32] <qzjul> I'd like to point out that as recently as 4 or 5 sets ago, the bots placed some decent countries
- [01:32] <qzjul> https://qz.earthempires.com/alliance/46/ranks
- [01:32] <Gerdler> you dont know what happened that set
- [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
- [01:32] <qzjul> true i don't
- [01:32] <Zorp> Md fsed the entire server
- [01:33] <Zorp> Only sol was left to new
- [01:33] <qzjul> ahh heh
- [01:33] <Gerdler> was not that set
- [01:33] <qzjul> but sets around it have bots in T100 still
- [01:33] <Gerdler> https://qz.earthempires.com/alliance/45/ranks
- [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
- [01:33] <Ivanfluff> yeah it was that set
- [01:33] <Ivanfluff> no country of mine in the t10
- [01:34] <qzjul> ya, so i think as long as the names and clans are autogenerated, it shoudl be kinda obvious
- [01:34] <qzjul> but maybe not at first glance
- [01:34] <qzjul> interesting that last set in express had some decent bots
- [01:34] <Getafix> I think they should be good players, but clearly marked as bots, or relatively easy to identify
- [01:34] <qzjul> would you agree that they're easy to identify now?
- [01:34] <Getafix> yes
- [01:35] <Gerdler> yes
- [01:35] <qzjul> I think bot clans will still be super easy to identify
- [01:35] <Gerdler> good
- [01:35] <qzjul> cool, no problem then
- [01:35] <Gerdler> :)
- [01:35] <qzjul> we can, perhaps, make a subset of bots that are harder to identify
- [01:35] <qzjul> all the possibilities
- [01:35] <qzjul> okay
- [01:35] <qzjul> so
- [01:35] <qzjul> do you all know how to contribute?
- [01:35] * Quits: Link (Link@5DACDCFB:BAFD1971:36A98F7C:IP) (Ping timeout)
- [01:36] <Paladine> yeah
- [01:36] <Gerdler> yes
- [01:36] <Zorp> I know how to contribute genetic material
- [01:36] <Zorp> Only takes a few minutes
- [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?
- [01:36] <Gerdler> I will only make small changes to balance things I see as issues. not broad changes like new classes
- [01:36] <qzjul> that's fine
- [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?
- [01:37] <qzjul> I expect most contributors will only do tweaks until they're pretty comfortable with them
- [01:37] <Getafix> I'll take a PHP tutorial
- [01:37] <qzjul> Paladine, there is an AI Development form in EE
- [01:37] <qzjul> but I'm quite happy to do a board in github
- [01:37] <qzjul> github is probably easier
- [01:37] <qzjul> but you can submit issues - as you did the other day =D
- [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
- [01:39] <qzjul> that's true
- [01:39] <c3lph1> That’s why you could add personality files
- [01:39] <qzjul> I just added a few project boards
- [01:40] <Paladine> sweet :)
- [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
- [01:40] <qzjul> I use bitbucket at work because we're too cheap to pay for github =/
- [01:41] <Paladine> lol, we have both
- [01:41] <Paladine> yet use jira for tracking
- [01:41] <qzjul> lol, that sounds complicated
- [01:42] <Paladine> Yeah, I work for government
- [01:42] <Paladine> lol
- [01:42] <qzjul> I'm still trying to get my boss/coworker to actually *USE* source control =/
- [01:42] <04Marshal> CIA AGENT
- [01:42] <04Marshal> !!!!!!!!!!!
- [01:42] <qzjul> and functions for that matter =/
- [01:42] <Paladine> haha provincial government :P
- [01:42] <qzjul> ah cool!
- [01:42] <qzjul> which province Paladine?
- [01:42] <Paladine> BC
- [01:43] <qzjul> cool; you in Victoria?
- [01:43] <Paladine> Yeah, work across from the legislature
- [01:43] <qzjul> not sure what %age of govt is there vs van
- [01:43] <qzjul> gotcha; i thought most was on the island
- [01:43] <Paladine> Still mostly here, though quite a bit of justice is in van
- [01:43] <qzjul> i used to live in sidney when my dad was based out of the airport there
- [01:44] <qzjul> gotcha
- [01:44] <Paladine> Nice! I am saanich :)
- [01:44] <qzjul> crazy!
- [01:44] <qzjul> alrighty
- [01:44] <qzjul> so, anybody have any questions or thoughts?
- [01:45] <qzjul> I'm probably going to roll out to dinner soon if there's nothing else people want to touch on
- [01:45] <Paladine> Nothing else from me
- [01:45] <qzjul> If anybody wants to *actually develop something*, I'll probably do some tonight and/or tomorrow
- [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
- [01:46] <qzjul> jhaagsma@gmail.com on hangouts
- [01:46] <Paladine> I'll take a look tonight, maybe experiment on the fork that I cloned
- [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
- [01:46] <Paladine> haha, I was surprised how quick you fixed that bug
- [01:47] <qzjul> :-)
- [01:47] <qzjul> i have the bot code checked out at work
- [01:47] <qzjul> so it's easy for me to make minor tweaks heh
- [01:47] <Gerdler> should i use issues for submitting or pull request?
- [01:48] <qzjul> if you fix them, pull request
- [01:48] <qzjul> also, you can open an issue *AND* fix it and submit a pull request
- [01:48] <qzjul> i haven't figured out a workflow for that
- [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