[Kde-games-devel] Fw: Konquest - patch for distance function

Gustavo Moura gugario at gmail.com
Mon May 21 01:04:27 CEST 2007


I think better than a simple comment could be something like this....

double CoreLogic::distInTurns(Planet* p1, Planet* p2) {

    //...
    const int LIGHT_YEARS_PER_TURN = 2;
    return sqrt( double(x*x + y*y) ) / LIGHT_YEARS_PER_TURN;
}

of course, that requires changing the function name, and some extra
modifications.  But it would totally avoid confusion!

My 2 cents.

Gustavo

On 5/20/07, Pinaraf <pinaraf at gmail.com> wrote:
> Then I'll revert my "fix" with a comment in the code to prevent any further
> discussion about this :)
>
>
>
> On 5/20/07, Jack Grahl < mnvl16 at yahoo.co.uk> wrote:
> >
> >
> >
> >
> >
> >
> >
> >
> > It is half the distance because the ships travel two squares in 1 turn,
> IOW
> > 2 squares = 1 'light years' =  1 turn.
> > This is desirable behaviour in my opinion, otherwise if ships took twice
> as many turns to move the same distance the game would be much slower and
> more boring.
> >
> >
> > ----- Original Message ----
> > From: Pinaraf < pinaraf at gmail.com>
> >
> > To: Jack Grahl <mnvl16 at yahoo.co.uk >
> > Cc: KDE games development <kde-games-devel at kde.org>
> > Sent: Sunday, 20 May, 2007 9:59:46 AM
> > Subject: Re: [Kde-games-devel] Konquest - patch for distance function
> >
> > Hi
> >
> > The problem now is : why is it half the euclidian distance ? Honestly, I
> don't remember...
> > The distance==0 problem is different. If you divide by two, you get 0
> between (0,0) and (1,1) because 1/2 and 1/2 are 0 when converted to an
> integer...
> >
> >
> > On 5/20/07, Jack Grahl < mnvl16 at yahoo.co.uk> wrote:
> > >
> > >
> > >
> > > Hi Pinaraf,
> > > Glad to hear that you are maintaining Konquest.
> > > The patch that I sent you was the wrong way around! It should have
> replaced the code where you divide by 2 half way through the calculation,
> with dividing by two only at the end. According to what you told me, this
> modification has already been done. The older version of the game that I
> have actually does have the distance function such that the distance from
> (0,0) to any of (1,0), (0,1) and (1,1) is zero!
> > > Just to make things clear, the current function is half the correct
> Euclidean distance, or the distance if the unit is taken as being two grid
> squares.
> > > I'm pleased that the AI patch was also included. Sorry to bother you
> with comments about stuff that has already been fixed. Clearly I should get
> hold of the KDE4 version, and get back to you if there are any more
> improvements to be made.
> > >
> > > Best wishes, and thanks for getting back to me so quickly
> > > Jack Grahl
> > >
> > >
> > > ----- Original Message ----
> > > From: Pinaraf < pinaraf at gmail.com>
> > > To: KDE games development <kde-games-devel at kde.org>
> > > Cc: Jack Grahl < mnvl16 at yahoo.co.uk>
> > > Sent: Sunday, 20 May, 2007 12:52:45 AM
> > > Subject: Re: [Kde-games-devel] Konquest - patch for distance function
> > >
> > > Hi
> > >
> > > I'm maintaining Konquest (ok, problem is : I don't really know what to
> do...)
> > > I started maintaining it for KDE4 only, I never looked at the KDE 3.5
> code and honestly I don't want to, I think it'd be a great waste of time to
> backport the changes : scalable graphics (even without svg), better user
> interface, better AI...
> > > The AI patch has been integrated in KDE4, and it was a shame it wasn't
> applied before in KDE3.5.
> > > The distance computation code in KDE4 is the following :
> > >     Coordinate  diff = p1->sector()->coord() - p2->sector()->coord();
> > >     return sqrt( double( ( diff.x() * diff.x() )
> > >                          + ( diff.y() * diff.y() ) ) ) / 2;
> > > And it's mathematically correct. The distance between two points is half
> the square root of the sum of square differences... (hard to explain)
> > > If you have two points, (0, 0) and (1, 1). The distance between them is
> sqrt(2)/2
> > > With your computation code, it's 1 ==> there is no difference between
> going to (1,0), (0,1) and (1,1)
> > >
> > > Also please before modifying Konquest : look at the KDE4 version.
> > > I don't think it's worth the effort of maintaining the KDE 3 version
> considering that KDE3 end is near, most distributions are now packaging KDE
> 4 parts (for instance Suse 10.3 will include Kdegames 4...), and KDE 4 games
> are just great.
> > >
> > > Of course, I'm open to any suggestion on Konquest, and the same apply
> for other kde games. But for konquest, please... don't care about the KDE 3
> version, I don't want to play with that code :p
> > >
> > >
> > >
> > > On 5/20/07, Jack Grahl <mnvl16 at yahoo.co.uk > wrote:
> > > > Hi there,
> > > > I've written a modification to the 'distance' function in Konquest,
> which calculates the distance between planets. The new function is
> essentially the same, but changes the order of operations to better conserve
> accuracy. The accuracy isn't critical since the number of turns ships take
> to travel between planets is obviously an integer. However the new function
> is more understandable (when using the ruler) and easier to estimate by eye
> (since it is closer to usual distance in the plane). Of course this changes
> the strategy, but not critically since the relative distances of the planets
> are more important than their layout in the plane.
> > > > I was also wondering whether this game is being actively maintained at
> the moment. Someone submitted a nice patch several years ago which improved
> the AI for the game and would have simplified improving it further, by
> abstracting it from the core game engine. This patch doesn't seem to ever
> have been applied. There are also several more modifications to this game
> I'd like to do gradually - mainly to do with useability. Perhaps someone
> could let me know what the situation is?
> > > > Best wishes,
> > > > Jack Grahl
> > > >
> > > >
> > > > --- kdegames-3.5.5/kdegames-3.5.5/konquest/gamecore.cc
> 2007-05-19 21:26:38.000000000 +0100
> > > > +++ kdegames-3.5.5-dist/kdegames-3.5.5/konquest/gamecore.cc
> 2005-09-10 09:18:23.000000000 +0100
> > > > @@ -49,10 +49,10 @@
> > > > double
> > > > CoreLogic::distance( Planet *p1, Planet *p2 )
> > > > {
> > > > -    int k = (p1->getSector().getRow() - p2->getSector().getRow());
> > > > -    int l = (p1->getSector().getColumn() -
> p2->getSector().getColumn());
> > > > +    int k = (p1->getSector().getRow() - p2->getSector().getRow()) /
> 2;
> > > > +    int l = (p1->getSector().getColumn() -
> p2->getSector().getColumn()) / 2;
> > > >
> > > > -    return (sqrt(double((k*k) + (l*l))) / 2);
> > > > +    return sqrt(double((k*k) + (l*l)));
> > > > }
> > > >
> > > > double
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> ___________________________________________________________
> > > > Yahoo! Answers - Got a question? Someone out there knows the answer.
> Try it
> > > > now.
> > > > http://uk.answers.yahoo.com/
> > > > _______________________________________________
> > > > kde-games-devel mailing list
> > > > kde-games-devel at kde.org
> > > > https://mail.kde.org/mailman/listinfo/kde-games-devel
> > > >
> > >
> > >
> > >
> > > ________________________________
>  Web email has come of age. Don't settle for less than the All New Yahoo!
> Mail.
> >
> >
> >
> > ________________________________
>  Yahoo! Mail is the world's favourite email. Don't settle for less, sign up
> for your free account today.
> >
> > ________________________________
>  What kind of emailer are you? Find out today - get a free analysis of your
> email personality. Take the quiz at the Yahoo! Mail Championship.
> > _______________________________________________
> > kde-games-devel mailing list
> > kde-games-devel at kde.org
> > https://mail.kde.org/mailman/listinfo/kde-games-devel
> >
> >
>
>
> _______________________________________________
> kde-games-devel mailing list
> kde-games-devel at kde.org
> https://mail.kde.org/mailman/listinfo/kde-games-devel
>
>


More information about the kde-games-devel mailing list