widelands-dev team mailing list archive
-
widelands-dev team
-
Mailing list archive
-
Message #02552
Re: *** GMX Spamverdacht *** Re: Fwd: can find any more resources
On 29.07.2014, at 22:56, Tibor Bamhor <tiborb95@xxxxxxxxx> wrote:
> This sounds very good.
>
> I just proposed my ai branch for merge, I will see how it goes, but I hope it will be merged soon and what is discussed here will be implemented next time.
>
>
> 2014-07-29 20:46 GMT+02:00 Fòram na Gàidhlig <fios@xxxxxxxxxxxxxxxxxxx>:
> I've done a bit of refactoring today in this branch:
>
> https://code.launchpad.net/~widelands-dev/widelands/bug-1348795
>
> Check out the new ProductionSite::out_of_resources function - when that
> function sends a message to the player would be the point where the AI
> should do something about the building.
>
> I don't know how the AI API works, but I guess you would either access
> the message or set a flag in the production site for the I to read.
That is a bad coupling direction: logic should not know about AI and should not offer services for it. For this purpose we have notifications.h. The logic should publish a Note here that the AI should subscribe to. For an example see src/logic/immovable.h, struct NoteImmovable. The logic will not care about who subscribes or if anybody subscribes at all. notifications/ contains a simple test case that shows how to use the API.
>
> Message sender at the moment is "produce" or "mine". I don't really know
> what the sender is for, so if it doesn't break anything, feel free to
> change the sender as needed.
The sender is just a string imho. I do not think it is used for anything and I wonder why it is there….
>
>
>
> 29/07/2014 11:19, sgrìobh Tibor Bamhor:
> > This is probably good idea, but how to implement it?
> >
> > In current AI I found following piece of code:
> >
> >
> > // Subscribe to NoteFieldPossession.
> > field_possession_subscriber_ =
> > Notifications::subscribe<NoteFieldPossession>([this](const
> > NoteFieldPossession& note) {
> > if (note.player != player_) {
> > return;
> > }
> > if (note.ownership == NoteFieldPossession::Ownership::GAINED) {
> > unusable_fields.push_back(note.fc);
> > }
> > });
> >
> > Can somebody direct me further?
> >
> > Thanks
> >
> > Tibor
> >
> >
> > 2014-07-29 12:02 GMT+02:00 Fòram na Gàidhlig <fios@xxxxxxxxxxxxxxxxxxx
> > <mailto:fios@xxxxxxxxxxxxxxxxxxx>>:
> >
> > You could check for the code where production programs (for mines) and
> > production sites (for other sites) send "Out of Resources" messages. The
> > production program has a handle on the production site, so both of these
> > could set a flag in the production site that the AI could check for, or
> > whenever the player gets a notification message the AI gest a message as
> > well. This way, the calculation of the check if a site is out of
> > resources remains with the production and worker programs.
> >
> >
> >
> > 29/07/2014 08:52, sgrìobh Tibor Bamhor:
> > > SirVer,
> > >
> > >
> > > I tried, spend some time, but all those namespaces, classes, virtual
> > > functions are too complicated to me. I even failed to identify a place
> > > (source file) where such function would logically belong.
> > >
> > >
> > > :(
> > >
> > >
> > >
> > > 2014-07-25 22:58 GMT+02:00 Holger Rapp <HolgerRapp@xxxxxxx
> > <mailto:HolgerRapp@xxxxxxx>
> > > <mailto:HolgerRapp@xxxxxxx <mailto:HolgerRapp@xxxxxxx>>>:
> > >
> > > Hooray \o/ !!!
> > >
> > > On 25.07.2014, at 22:23, Tibor Bamhor <tiborb95@xxxxxxxxx
> > <mailto:tiborb95@xxxxxxxxx>
> > > <mailto:tiborb95@xxxxxxxxx <mailto:tiborb95@xxxxxxxxx>>> wrote:
> > >
> > >> I will look at it...and do what I can..
> > >>
> > >>
> > >> 2014-07-25 22:08 GMT+02:00 Holger Rapp <HolgerRapp@xxxxxxx
> > <mailto:HolgerRapp@xxxxxxx>
> > >> <mailto:HolgerRapp@xxxxxxx <mailto:HolgerRapp@xxxxxxx>>>:
> > >>
> > >> Which just strengthens my argument, right? The code there is
> > >> already copy and pasted and if anything changes you have to
> > >> change it twice. With your change we need to change it three
> > >> times.
> > >>
> > >> You are a good programmer and can do it. If you do not do it
> > >> you accrue technical debt that others have to suffer under
> > >> later on.
> > >>
> > >>
> > >> On 25.07.2014, at 21:52, Tibor Bamhor <tiborb95@xxxxxxxxx
> > <mailto:tiborb95@xxxxxxxxx>
> > >> <mailto:tiborb95@xxxxxxxxx <mailto:tiborb95@xxxxxxxxx>>>
> > wrote:
> > >>
> > >>> similar procedure is used twice in
> > production_program.cc, but
> > >>> both istances adds some own woodo-magic I dont fully
> > >>> understand and dont need. So there is no
> > count-resources-only
> > >>> algorithm used there so for me it is hard to integrate.
> > Maybe
> > >>> for more skilled programmer it would be doable...
> > >>>
> > >>>
> > >>> 2014-07-25 21:35 GMT+02:00 Holger Rapp
> > <HolgerRapp@xxxxxxx <mailto:HolgerRapp@xxxxxxx>
> > >>> <mailto:HolgerRapp@xxxxxxx <mailto:HolgerRapp@xxxxxxx>>>:
> > >>>
> > >>>
> > >>> On 25.07.2014, at 21:31, Tibor Bamhor
> > <tiborb95@xxxxxxxxx <mailto:tiborb95@xxxxxxxxx>
> > >>> <mailto:tiborb95@xxxxxxxxx
> > <mailto:tiborb95@xxxxxxxxx>>> wrote:
> > >>>
> > >>>> Hi,
> > >>>>
> > >>>> In the meantime I looked into particular cc file (I
> > dont
> > >>>> remember which one) and in AI I implemented basically
> > >>>> the same procedure - AI counts current and starting
> > >>>> amount of resources within radius around a mine and
> > >>>> calculate the % of exhaustion.
> > >>>
> > >>> That is really bad. We already have enough copy & pasted
> > >>> code in Widelands. Please do not add to this. Pull the
> > >>> common function into a new common header and use it from
> > >>> the AI and the old code, please.
> > >>>
> > >>>> Seems it works fine.
> > >>>>
> > >>>> Also it would be usefull if AI could query&modify
> > ware's
> > >>>> target quantities. So far there are no ready-for-AI
> > >>>> functions for this it seems. I am considering to write
> > >>>> them, but perhaps some more skillfull programmer could
> > >>>> do the job.
> > >>>>
> > >>>> To be consistent with similar functions used by AI, new
> > >>>> functions could be:
> > >>>> int send_player_get_ware_target(ware)
> > >>>> bool send_player_set_ware_target(ware, int)
> > >>>>
> > >>>>
> > >>>>
> > >>>>
> > >>>>
> > >>>>
> > >>>> 2014-07-25 21:01 GMT+02:00 Holger Rapp
> > >>>> <HolgerRapp@xxxxxxx <mailto:HolgerRapp@xxxxxxx>
> > <mailto:HolgerRapp@xxxxxxx <mailto:HolgerRapp@xxxxxxx>>>:
> > >>>>
> > >>>>
> > >>>> On 25.07.2014, at 00:04, Tibor Bamhor
> > >>>> <tiborb95@xxxxxxxxx <mailto:tiborb95@xxxxxxxxx>
> > <mailto:tiborb95@xxxxxxxxx <mailto:tiborb95@xxxxxxxxx>>> wrote:
> > >>>>
> > >>>>> well, after some investigation in code it seems
> > >>>>> that mine is able to mine some % of resources
> > >>>>> within some radius. Obviously it does not mine
> > >>>>> resources evenly across fields, so to check one
> > >>>>> (even central) field is not enough.
> > >>>>
> > >>>> You could randomize the field that resources are
> > >>>> taken from, so that this happens evenly.
> > >>>>
> > >>>>>
> > >>>>> Also it seems that there is no avaiable
> > function to
> > >>>>> query if mineable resources are mined or not yet.
> > >>>>> Of course, the mine sends a message ("cant
> > find any
> > >>>>> more resources") but I am not sure if AI can
> > easily
> > >>>>> read them. It would help much…
> > >>>>
> > >>>> So there must be a method in the mine that does it
> > >>>> already. You can pull it out and make it available
> > >>>> for the AI to use. Something like void
> > >>>> percentage_of_coal_available(field, radius,
> > >>>> coal_resource_index,
> > >>>> & total_pieces_of_coal_at_start,
> > >>>> &total_pieces_of_coal_now);
> > >>>>
> > >>>>>
> > >>>>>
> > >>>>>
> > >>>>> ---------- Forwarded message ----------
> > >>>>> From: *Tibor Bamhor* <tiborb95@xxxxxxxxx
> > <mailto:tiborb95@xxxxxxxxx>
> > >>>>> <mailto:tiborb95@xxxxxxxxx
> > <mailto:tiborb95@xxxxxxxxx>>>
> > >>>>> Date: 2014-07-24 23:05 GMT+02:00
> > >>>>> Subject: can find any more resources
> > >>>>> To: widelands-dev@xxxxxxxxxxxxxxxxxxx
> > <mailto:widelands-dev@xxxxxxxxxxxxxxxxxxx>
> > >>>>> <mailto:widelands-dev@xxxxxxxxxxxxxxxxxxx
> > <mailto:widelands-dev@xxxxxxxxxxxxxxxxxxx>>
> > >>>>>
> > >>>>>
> > >>>>> Hi,
> > >>>>>
> > >>>>> Please explain to me:
> > >>>>>
> > >>>>> I am watching a game (testing AI), there is a mine
> > >>>>> that shows "can't find any more resources",
> > >>>>> performance % is 0, it is full of food, yet when I
> > >>>>> click on it and click DBG it shows coal: 19/20.
> > >>>>> This is coal mine (the first/lowest level of
> > mine).
> > >>>>>
> > >>>>> Now for AI it is quite relevant question - AI test
> > >>>>> remaining resource on the field and if 0, the mine
> > >>>>> is to be dismounted. But if mine is not able to
> > >>>>> mine all resources on a field, then things are
> > >>>>> getting more complicated.
> > >>>>>
> > >>>>> Now I noticed that mines have aihint like
> > >>>>> mines_percent=30. Does it mean that this mine can
> > >>>>> mine only 30% of initial amount 20? 30% of 20 is 6
> > >>>>> so the mine should stuck on remaining resources
> > >>>>> 14/20, or not?
> > >>>>>
> > >>>>> Waiting for explanation, thanks!
> > >>>>>
> > >>>>> Tibor
> > >>>>>
> > >>>>>
> > >>>>> _______________________________________________
> > >>>>> Mailing list: https://launchpad.net/~widelands-dev
> > >>>>> Post to :
> > widelands-dev@xxxxxxxxxxxxxxxxxxx
> > <mailto:widelands-dev@xxxxxxxxxxxxxxxxxxx>
> > >>>>> <mailto:widelands-dev@xxxxxxxxxxxxxxxxxxx
> > <mailto:widelands-dev@xxxxxxxxxxxxxxxxxxx>>
> > >>>>> Unsubscribe : https://launchpad.net/~widelands-dev
> > >>>>> More help : https://help.launchpad.net/ListHelp
> > >>>>
> > >>>>
> > >>>> _______________________________________________
> > >>>> Mailing list: https://launchpad.net/~widelands-dev
> > >>>> Post to : widelands-dev@xxxxxxxxxxxxxxxxxxx
> > <mailto:widelands-dev@xxxxxxxxxxxxxxxxxxx>
> > >>>> <mailto:widelands-dev@xxxxxxxxxxxxxxxxxxx
> > <mailto:widelands-dev@xxxxxxxxxxxxxxxxxxx>>
> > >>>> Unsubscribe : https://launchpad.net/~widelands-dev
> > >>>> More help : https://help.launchpad.net/ListHelp
> > >>>
> > >>>
> > >>
> > >>
> > >
> > >
> > >
> > >
> > > _______________________________________________
> > > Mailing list: https://launchpad.net/~widelands-dev
> > > Post to : widelands-dev@xxxxxxxxxxxxxxxxxxx
> > <mailto:widelands-dev@xxxxxxxxxxxxxxxxxxx>
> > > Unsubscribe : https://launchpad.net/~widelands-dev
> > > More help : https://help.launchpad.net/ListHelp
> > >
> > >
> > >
> > > No virus found in this message.
> > > Checked by AVG - www.avg.com <http://www.avg.com> <http://www.avg.com>
> > > Version: 2014.0.4716 / Virus Database: 3986/7937 - Release Date:
> > 07/28/14
> > >
> >
> > _______________________________________________
> > Mailing list: https://launchpad.net/~widelands-dev
> > Post to : widelands-dev@xxxxxxxxxxxxxxxxxxx
> > <mailto:widelands-dev@xxxxxxxxxxxxxxxxxxx>
> > Unsubscribe : https://launchpad.net/~widelands-dev
> > More help : https://help.launchpad.net/ListHelp
> >
> >
> > No virus found in this message.
> > Checked by AVG - www.avg.com <http://www.avg.com>
> > Version: 2014.0.4716 / Virus Database: 3986/7942 - Release Date: 07/29/14
> >
>
> _______________________________________________
> Mailing list: https://launchpad.net/~widelands-dev
> Post to : widelands-dev@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~widelands-dev
> More help : https://help.launchpad.net/ListHelp
>
> _______________________________________________
> Mailing list: https://launchpad.net/~widelands-dev
> Post to : widelands-dev@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~widelands-dev
> More help : https://help.launchpad.net/ListHelp
Attachment:
smime.p7s
Description: S/MIME cryptographic signature
Follow ups
References
-
can find any more resources
From: Tibor Bamhor, 2014-07-24
-
Fwd: can find any more resources
From: Tibor Bamhor, 2014-07-24
-
Re: Fwd: can find any more resources
From: Holger Rapp, 2014-07-25
-
Re: Fwd: can find any more resources
From: Tibor Bamhor, 2014-07-25
-
Re: Fwd: can find any more resources
From: Holger Rapp, 2014-07-25
-
Re: Fwd: can find any more resources
From: Tibor Bamhor, 2014-07-29
-
Re: Fwd: can find any more resources
From: Fòram na Gàidhlig, 2014-07-29
-
Re: Fwd: can find any more resources
From: Tibor Bamhor, 2014-07-29
-
Re: Fwd: can find any more resources
From: Fòram na Gàidhlig, 2014-07-29
-
Re: Fwd: can find any more resources
From: Tibor Bamhor, 2014-07-29