Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: Lisp, C++ and game development

9 views
Skip to first unread message

Sashank Varma

unread,
Nov 11, 2004, 1:12:25 PM11/11/04
to
In article <1100192102.9...@c13g2000cwb.googlegroups.com>,
"Jeff M." <mas...@gmail.com> wrote:

> This doesn't belong in "Lisp sucks" or "C++ sucks". Nor is this a rant
> on either language, so let's not start any flame wars. However, as a
> professional, console game developer (that happens to love Lisp), I
> thought I'd post my feelings on this subject...
>
> http://www.retrobyte.org/essays.php
>
> I'm sure people will agree, disagree and agree to disagree. That's
> fine. But I'd like any [constructive] feedback on the essay.

From the essay:

> Postscript. I pray this doesn't cause more posts... :)

Sorry, but I had to respond: I really enjoyed your write-up
and learned a lot abbout where the bottlenecks really are
in game development. Thanks for taking the time to write
it. And for my part, I will now bow out of this thread...

M Jared Finder

unread,
Nov 11, 2004, 1:28:32 PM11/11/04
to
Jeff M. wrote:
> This doesn't belong in "Lisp sucks" or "C++ sucks". Nor is this a rant
> on either language, so let's not start any flame wars. However, as a
> professional, console game developer (that happens to love Lisp), I
> thought I'd post my feelings on this subject...
>
> http://www.retrobyte.org/essays.php
>
> I'm sure people will agree, disagree and agree to disagree. That's
> fine. But I'd like any [constructive] feedback on the essay.

At the end you state:
"The only (console) development house that I'm aware of to use Lisp was
Naughty Doc, Inc. for the game Crash Bandicoot."

I was under the impression that Naughty Dog used Lisp primarily for Jak
(the postmortem linked to is for Jak and Daxter)) and not for Crash
Bandicoot. I know that Sucker Punch also uses a Lisp for their Sly
Cooper games, though from talking to them it appears to be a stripped
down Lisp without most of the interactive development features that make
Lisp so appealing.

-- MJF

mikel

unread,
Nov 11, 2004, 2:09:43 PM11/11/04
to
Jeff M. wrote:

> This doesn't belong in "Lisp sucks" or "C++ sucks". Nor is this a rant
> on either language, so let's not start any flame wars. However, as a
> professional, console game developer (that happens to love Lisp), I
> thought I'd post my feelings on this subject...
>
> http://www.retrobyte.org/essays.php
>
> I'm sure people will agree, disagree and agree to disagree. That's
> fine. But I'd like any [constructive] feedback on the essay.
>

Then, contrary to the expressed wish in your essay, it's certainly going
to cause more posts, isn't it?

:-)

Your essay made me remember an interesting phenomenon I saw in one
system I worked on. There were two versions of it, one in Lisp and one
in C++. The display subsystem of the Lisp version was faster. There were
various reasons, but an important one was GC: the C++ code copied a lot
of buffers because they got passed around in fairly complex ways, so it
could be quite difficult to know when one could be deallocated. To avoid
that problem, the C++ programmers just copied. The Lisp was GCed, so the
Lisp programmers never had to worry about it; they just passed the
buffers around, which reduced both memory use and CPU cycles spent copying.

Dirk Gerrits

unread,
Nov 11, 2004, 2:12:24 PM11/11/04
to
"Jeff M." <mas...@gmail.com> writes:

> This doesn't belong in "Lisp sucks" or "C++ sucks". Nor is this a rant
> on either language, so let's not start any flame wars. However, as a
> professional, console game developer (that happens to love Lisp), I
> thought I'd post my feelings on this subject...
>
> http://www.retrobyte.org/essays.php
>
> I'm sure people will agree, disagree and agree to disagree. That's
> fine. But I'd like any [constructive] feedback on the essay.

Just a couple of points.

You write:

"(loop (progn
(update-ai)
(update-physics)
(render-world)))"

But why not just:

(loop
(update-ai)
(update-physics)
(render-world))

?

Further down you write "most of the advantages Lisp has in processing
numbers (bignums, inherent complex data types, etc) aren't used in
games, anyway". I agree with this, but I do wonder whether such
features don't just remain unused only because they aren't readily
available. Compare this with Paul Graham not missing recursion in
Basic. [1]

Overall I like your essay, but with all due respect, I seriously doubt
its ability to stop any flame wars. ;)

Kind regards,

Dirk Gerrits

[1] http://www.paulgraham.com/avg.html

Cameron MacKinnon

unread,
Nov 11, 2004, 2:19:41 PM11/11/04
to
Jeff M. wrote:
> This doesn't belong in "Lisp sucks" or "C++ sucks". Nor is this a rant
> on either language, so let's not start any flame wars. However, as a
> professional, console game developer (that happens to love Lisp), I
> thought I'd post my feelings on this subject...
>
> http://www.retrobyte.org/essays.php
>
> I'm sure people will agree, disagree and agree to disagree. That's
> fine. But I'd like any [constructive] feedback on the essay.

Naughty Doc => Naughty Dog
Seemlessly => seamlessly
Upkept => isn't a word
The final sentence in your 'Conclusion' section is ungrammatical.

Your abstract doesn't mention your thesis, instead it discusses why you
felt compelled to write the essay.

We don't actually get your thesis until the conclusion: "Hopefully I've
shown that [Lisp] is just as good as C++, and that C++ is just as good
as Lisp [for games programming]."

Unfortunately, the reader isn't shown that the thesis is likely. You
mention a number of factors for and against each language, but without
data on the relative weightings of each, it is difficult to conclude
more than "there are advantages and disadvantages to each." More
concrete numbers, e.g. "As code and assets typically occupy 10% and 90%
of the storage medium respectively, a 25% increase in code size reduces
asset storage available by 2.8%" would help the reader weigh the
probability of your argument being correct.

That's the end of my comments on the form of the essay. As to the
argument itself, I think I must disagree.

It seems to me highly unlikely that two languages with such marked
differences in underlying philosophy and such different typical
developer use patterns would turn out to be so evenly matched in one
particular domain, viz the construction of state of the art video games.

It would certainly be difficult to create an experiment or to gather
numbers measuring the relative strengths of these languages in this
field. But difficulty marshalling resources for a definitively
persuasive argument should not tempt us to declare the contest a draw.

Duane Rettig

unread,
Nov 11, 2004, 3:45:53 PM11/11/04
to
"Jeff M." <mas...@gmail.com> writes:

> It was my understanding that GOAL was written for Crash Bandicoot and
> was used on subsequent titles (like Jak and Daxter). Jak was just what
> the post-mortem was on. Someone please correct me if I am wrong,
> though.

No, GOAL was written for Jak and Daxter. An earlier version,
called GOOL (Game object oriented language) was also written
in CL (using Allegro CL) and produced output that was run on
the target (PS2) with an engine written in either C or C++
(can't remember which). GOAL uses similar technology, but is
a newer generation than GOOL, and not only produces the character
data for the game, but also the engine.

Lisp will never win this argument. When I mentioned ND and
Crash may years ago in this newsgroup, it was met with a
comment like "but that's not _really_ using Lisp for games;
show me a game that actually _runs_ in Lisp, and I'll be
convinced". So when Andy Gavin did just that (unbeknownst to me,
until he asked us for help in optimizing the compiler) - we now
get "yes, but there are not enough of them to _really_ be
considered as using Lisp in games". And so on, and so on...

--
Duane Rettig du...@franz.com Franz Inc. http://www.franz.com/
555 12th St., Suite 1450 http://www.555citycenter.com/
Oakland, Ca. 94607 Phone: (510) 452-2000; Fax: (510) 452-0182

Kenneth Tilton

unread,
Nov 11, 2004, 5:55:48 PM11/11/04
to
In article <1100208063.9...@c13g2000cwb.googlegroups.com>,
"Tayssir John Gabbour" <tayss...@yahoo.com> wrote:

> Duane Rettig wrote:
> > Lisp will never win this argument. When I mentioned ND and
> > Crash may years ago in this newsgroup, it was met with a
> > comment like "but that's not _really_ using Lisp for games;
> > show me a game that actually _runs_ in Lisp, and I'll be
> > convinced". So when Andy Gavin did just that (unbeknownst to me,
> > until he asked us for help in optimizing the compiler) - we now
> > get "yes, but there are not enough of them to _really_ be
> > considered as using Lisp in games". And so on, and so on...
>

> Fortunately, Lisp doesn't need to "win" in the sense of beating back
> the arguments of all comers. The games industry is enormously messed up
> on all sorts of levels:
> http://www.livejournal.com/users/ea_spouse/
>

Boy, just reading that made something click. At least one of the recent
Roads to lisp began because some hardcore types on a game development
forum periodically launch into rants on the greatness of Lisp.

Maybe GQ should be talking to them instead of us. :)

kt

Jeff

unread,
Nov 11, 2004, 7:01:41 PM11/11/04
to
Tayssir John Gabbour wrote:

> The games industry is enormously messed
> up on all sorts of levels:
> http://www.livejournal.com/users/ea_spouse/

Haha! That's great. We were all just laughing at it here at my work
today, in fact. We have several former EA employees on staff and they
confirm every word of it. Thank goodness most development studios are
not like that.

Jeff M.

--
(surf-to "http://www.retrobyte.org/")
(mail-to (concatenate 'string "massung" "@" "gmail.com"))

Jeff

unread,
Nov 11, 2004, 7:10:27 PM11/11/04
to
Dirk Gerrits wrote:

> "Jeff M." <mas...@gmail.com> writes:
>
> > This doesn't belong in "Lisp sucks" or "C++ sucks". Nor is this a
> > rant on either language, so let's not start any flame wars.
> > However, as a professional, console game developer (that happens to
> > love Lisp), I thought I'd post my feelings on this subject...
> >
> > http://www.retrobyte.org/essays.php
> >
> > I'm sure people will agree, disagree and agree to disagree. That's
> > fine. But I'd like any [constructive] feedback on the essay.
>
> Just a couple of points.
>

> But why not just:
>
> (loop
> (update-ai)
> (update-physics)
> (render-world))

Ack! You're right. Fixed.

> Further down you write "most of the advantages Lisp has in processing
> numbers (bignums, inherent complex data types, etc) aren't used in
> games, anyway". I agree with this, but I do wonder whether such
> features don't just remain unused only because they aren't readily
> available.

I've often wondered exactly the same thing. I don't know the answer,
but my gut reaction would be to say 'no', only because games are simple
in nature (kids play them, so they have to be). I could possibly see
some of these data types being used, like bit arrays for genetic
algorithms, though.

> Overall I like your essay, but with all due respect, I seriously doubt
> its ability to stop any flame wars. ;)

Thanks. And I agree, but hopefully the next time someone reads Jack
Palevich's article and comes over here to post, the first reply might
be the above URL and "nuf sed".

G.A.

unread,
Nov 12, 2004, 5:32:03 AM11/12/04
to
"Jeff M." <mas...@gmail.com> wrote in message
news:1100192102.9...@c13g2000cwb.googlegroups.com...

> This doesn't belong in "Lisp sucks" or "C++ sucks". Nor is this a rant
> on either language, so let's not start any flame wars. However, as a
> professional, console game developer (that happens to love Lisp), I
> thought I'd post my feelings on this subject...
>
> http://www.retrobyte.org/essays.php
>
> I'm sure people will agree, disagree and agree to disagree. That's
> fine. But I'd like any [constructive] feedback on the essay.
>
> Jeff M.

On the subject of Naughty Dog, there's a recent post from one of their guys
on a mailing list which indicates that they're starting to use C++
(apparently with some hacked lisp-wannabe additions). Here's the quote...

"After using a completely custom language for our last three PS2 projects,
coming back to C++ has been a pretty rude awakening. We were hoping we
could work around some of the deficiencies of C++ with a good preprocessor,
ideally one that provided more than symple hygienic macro substitution..."


Tim Bradshaw

unread,
Nov 12, 2004, 4:51:35 AM11/12/04
to
* Duane Rettig wrote:
> Lisp will never win this argument. When I mentioned ND and
> Crash may years ago in this newsgroup, it was met with a
> comment like "but that's not _really_ using Lisp for games;
> show me a game that actually _runs_ in Lisp, and I'll be
> convinced". So when Andy Gavin did just that (unbeknownst to me,
> until he asked us for help in optimizing the compiler) - we now
> get "yes, but there are not enough of them to _really_ be
> considered as using Lisp in games". And so on, and so on...

Well, I think it depends on the definition of `win'. It tends to end
up meaning `persuade people whose minds have been destroyed by various
ideological cults to agree with you'. Well, you can never win in that
sense, just because the people concerned (on both sides) don't have
fully functioning minds, and so *can't* be persuaded. I'd rather see
an alternative definition: `make loads of money'.

--tim

Jeff

unread,
Nov 12, 2004, 9:09:59 AM11/12/04
to
G.A. wrote:

Do you have a link? I'd like to put that into the essay.

G.A.

unread,
Nov 12, 2004, 9:35:04 AM11/12/04
to

"Jeff" <mas...@gmail.com> wrote in message
news:Xu3ld.31380$5K2.14104@attbi_s03...

Here. Remove the 'JEFF's from the link which I've added to keep spiders
away...

http://lists.midnigJEFFhtryder.com/pipermail/sweng-gameJEFFdev-midnightryder.com/2004-November/002611.html


Dirk Gerrits

unread,
Nov 12, 2004, 10:08:03 AM11/12/04
to
Kenneth Tilton <kti...@nyc.rr.com> writes:
> "Tayssir John Gabbour" <tayss...@yahoo.com> wrote:
>> http://www.livejournal.com/users/ea_spouse/
>
> Boy, just reading that made something click. At least one of the recent
> Roads to lisp began because some hardcore types on a game development
> forum periodically launch into rants on the greatness of Lisp.

Do you mean http://alu.cliki.net/Dirk%20Gerrits's%20Road%20to%20Lisp ?
In that case, the hardcore type would be Vesa Karvonen, the game
development forum would be Flipcode, and one of the periodical rant
would be
http://www.flipcode.com/cgi-bin/fcmsg.cgi?thread_show=6459&msg=41559.

It is now two years later to the day, and all my ambitions of working
60-80 hour weeks in a cubicle of some game development house hacking C++
have melted away. Does any one sell "Lisp shattered my life-long
dreams" T-shirts? ;)

Kind regards,

Dirk Gerrits

Dirk Gerrits

unread,
Nov 12, 2004, 10:27:35 AM11/12/04
to
"Jeff" <mas...@gmail.com> writes:

> Dirk Gerrits wrote:
>
>> Further down you write "most of the advantages Lisp has in processing
>> numbers (bignums, inherent complex data types, etc) aren't used in
>> games, anyway". I agree with this, but I do wonder whether such
>> features don't just remain unused only because they aren't readily
>> available.
>
> I've often wondered exactly the same thing. I don't know the answer,
> but my gut reaction would be to say 'no', only because games are simple
> in nature (kids play them, so they have to be). I could possibly see
> some of these data types being used, like bit arrays for genetic
> algorithms, though.

I was thinking on a larger scale. Common Lisp's built-in data
structures are very nice, but that's just one small piece of the puzzle.

Way back when Lisp was young (and was still called LISP) people were
using it for things that were absolutely inconceivable in other
languages of the time. All that despite these languages all being
Turing complete and thus "equivalent in power".

Nowadays, the other language camps have a huge advantage in numbers, and
have stolen some bits and pieces from Lisp here and there, allowing them
to also pull off incredible feats.

I am very interested to see whether or not, and to what extent, an
advantage in language outweighs an advantage in numbers. Can Lispers
create really good games that would not be reasonable to create in
C/C++/Java/C#? I don't know, but I'd rather try then torture myself
with C++ any longer.

>> Overall I like your essay, but with all due respect, I seriously doubt
>> its ability to stop any flame wars. ;)
>
> Thanks. And I agree, but hopefully the next time someone reads Jack
> Palevich's article and comes over here to post, the first reply might
> be the above URL and "nuf sed".

I doubt it, but let's hope for it anyway. :)

Kind regards,

Dirk Gerrits

John Thingstad

unread,
Nov 12, 2004, 10:56:34 AM11/12/04
to
On Fri, 12 Nov 2004 15:08:03 GMT, Dirk Gerrits <di...@dirkgerrits.com>
wrote:

>
> It is now two years later to the day, and all my ambitions of working
> 60-80 hour weeks in a cubicle of some game development house hacking C++
> have melted away. Does any one sell "Lisp shattered my life-long
> dreams" T-shirts? ;)
>
> Kind regards,
>
> Dirk Gerrits

Naw, but I have a "I lost 10 years of my life to C++" T shirt :)

--
Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/

Marco Antoniotti

unread,
Nov 12, 2004, 11:54:47 AM11/12/04
to

However, working 60-80 hours a week hacking Common Lisp is hardly a
solution :)

Cheers
--
Marco


Duane Rettig

unread,
Nov 12, 2004, 12:35:36 PM11/12/04
to
"G.A." <smNOeck...@hotmTHANKSail.com> writes:

It's interesting to see someone who _wants_ to get away from Lisp
actually _complain_ about deficiencies in his language of choice.
But perhaps that is not the case here; perhaps this particular
developer has a pro-lisp bent anyway.

We've had a lot of experience with customers moving away from CL;
we do our best to make sure that it wasn't something we did or did
not do, but then we just say goodbye without stressing over it,
they need to do what they need to do. We had a sales manager
many years ago that would say "OK, goodbye; I'll see you in
a year or two" and many times, sure enough, we'd see them back
again after a failled attempt to go back to C++...

Sometimes they do not actually _leave_ CL, but just run some
parallel development on another language, "just in case".

Duane Rettig

unread,
Nov 12, 2004, 12:38:18 PM11/12/04
to
Tim Bradshaw <t...@cley.com> writes:

But if you mean "everyone makes loads of money", then the only such
schemes like that are called "get rich quick" schemes. And if you
mean "some people make loads of money", then Lisp has already "won".

Mark McConnell

unread,
Nov 12, 2004, 10:36:04 AM11/12/04
to
"Tayssir John Gabbour" <tayss...@yahoo.com> wrote in message news:<1100208063.9...@c13g2000cwb.googlegroups.com>...
> And frankly, seeing what's going on in my nation, I am frankly not
> surprised that people will actively work against their own
> self-interest, believe the most hyper-simplified binary versions of
> reality, and so forth.

I'm curious--what is your nation?

Tayssir John Gabbour

unread,
Nov 12, 2004, 6:10:45 PM11/12/04
to
"John Thingstad" <john.th...@chello.no> wrote in message news:<opshczwk...@mjolner.upc.no>...

> On Fri, 12 Nov 2004 15:08:03 GMT, Dirk Gerrits <di...@dirkgerrits.com>
> wrote:
> > It is now two years later to the day, and all my ambitions of working
> > 60-80 hour weeks in a cubicle of some game development house hacking C++
> > have melted away. Does any one sell "Lisp shattered my life-long
> > dreams" T-shirts? ;)
>
> Naw, but I have a "I lost 10 years of my life to C++" T shirt :)

I should think about making a t-shirt pointing out there's two common
language families: the Lisp family, and the LOOP family. ;) The way I
deal with programming less expressive languages is to think, "Well,
I'm programming using the Loop macro," and suddenly it's the same
silly fun as making a LOOP. You know, all these naming ceremonies...
"I dub thee tmp1!"


MfG,
Tayssir

Jeff M.

unread,
Nov 11, 2004, 2:43:31 PM11/11/04
to
Thank you for the comments (and the spelling mistakes... no matter how
many proof reads are done, there's always one more to find).

I understand your request for numbers, but, to be honest, I don't
really have the time to try and pump out a mini-game for each, but a
co-worker and I have thought about doing it for a "show and tell"
argument. The difficulty in doing this is that (as you say) patterns
used for each -- even if they were the same end product -- would be
very different. Enough so, that perhaps a benchmark would be useless.
Then again, this may be exactly the kind of benchmark that is needed.

What I find most difficult to discuss in the essay are the differences
in programming styles, and how that would affect the final product.
Lisp programmers would (hopefully) take advantage of many things
available to him/her that a C++ programmer wouldn't. I wasn't
attempting to claim a draw between the two languages anywhere except
game-side, in terms of graphical performance. There is so much more to
game development other than this (tools, scripting, level design, the
list goes on), and that was a point I tried to stress. These are the
areas where one language will outperform another (but not necessarily
in all areas). Perhaps that didn't get stressed enough.
Thanks for taking the time to read and reply.

Jeff M.

Vladimir Sedach

unread,
Nov 13, 2004, 2:28:15 AM11/13/04
to
Some technical comments (I think the rest of the article is pretty
good on it's own merits (that is, disregarding all the flame-wars
going on right now)):

"Lisp, on the other hand, doesn't need an interpreter. It can just run
Lisp code that is stored on the disk (and even compile it at load time
for more speed)."

Well, Lisp can also compile code into binary files too. One thing you
should also mention is that the structure of most Lisp runtimes
permits them to dump the entire application memory image to disk very
quickly. Depending on how large the image is and what portion of it is
static, this may be a good way to do save games (at least on systems
with hard-drives).

I think Lisp's dynamism and malleability is the one thing that not
even Greenspun's Tenth can provide an ersatz for. Shiro Kawai wrote an
excellent pair of articles on how Lisp and Allegrostore were used for
production tracking at Square films that made an impression on me
(change-class totally kicks ass), and that I think are relevant to the
more general problem of game production pipelines as well:
http://www.lava.net/~shiro/Private/essay/gdc2002.html
http://www.shiro.dreamhost.com/scheme/docs/jlugm2000.html

Then of course you shouldn't knock Lisp for numerical computations
either until you've read about the Supercomputer Toolkit project at
MIT and HP:
ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-1329.pdf

I think Lisp numerical mini-languages such as the one used in the
Toolkit can be a very big win over C++ in terms of performance,
especially on vectored processors. It almost pains me to think of all
the effort wasted on trying to squeeze out parallelism from for loops
by vectorizing C compilers.

Vladimir

Tayssir John Gabbour

unread,
Nov 13, 2004, 3:53:15 AM11/13/04
to

US. I think the main presidential candidates were too similar, and
neither offered people what they really needed; unless distractions are
what we need.

What is there to say; politicians are salesmen whose currency is votes.
MfG,
Tayssir

Trent Buck

unread,
Nov 13, 2004, 4:08:34 AM11/13/04
to
Quoth Tayssir John Gabbour on or about 2004-11-13:

> US. I think the main presidential candidates were too similar, and
> neither offered people what they really needed; unless distractions are
> what we need.

I feel sorry for Bill Van Auken -- more people voted `None of the Above'
than for him. Only 2078 votes from the whole of .us, poor bastard.

-t

Shiro Kawai

unread,
Nov 13, 2004, 9:26:38 AM11/13/04
to
Vladimir Sedach <(string-downcase (concatenate 'string last-name (subseq first-name 0 1)))@cpsc.ucalgary.ca> wrote in message news:<87pt2im...@shawnews.cg.shawcable.net>...

> I think Lisp's dynamism and malleability is the one thing that not
> even Greenspun's Tenth can provide an ersatz for. Shiro Kawai wrote an
> excellent pair of articles on how Lisp and Allegrostore were used for
> production tracking at Square films that made an impression on me
> (change-class totally kicks ass), and that I think are relevant to the
> more general problem of game production pipelines as well:
> http://www.lava.net/~shiro/Private/essay/gdc2002.html
> http://www.shiro.dreamhost.com/scheme/docs/jlugm2000.html

FYI, this one may also be relevant to the current topic.
http://www.shiro.dreamhost.com/scheme/docs/ILC2002.html
We ran Scheme on PS2 architecture.

Dirk Gerrits

unread,
Nov 13, 2004, 10:16:29 AM11/13/04
to
"John Thingstad" <john.th...@chello.no> writes:

> On Fri, 12 Nov 2004 15:08:03 GMT, Dirk Gerrits <di...@dirkgerrits.com>
> wrote:
>> Does any one sell "Lisp shattered my life-long dreams" T-shirts? ;)
>

> Naw, but I have a "I lost 10 years of my life to C++" T shirt :)

Ooh, gimme. :)

Kind regards,

Dirk Gerrits

Tayssir John Gabbour

unread,
Nov 13, 2004, 4:27:23 PM11/13/04
to

The Dems have, showing typical contempt for free speech, have pulled
out an array of dirty tactics to stop citizens from voting for who we
want:
http://c2.com/cgi/wiki?NaderVsTheLeastWorst

I mean, obviously I thought swing-state voting for the Least Worst was
important. But that's the trap -- voting out of fear for the Least
Worst, so the Dems can expect to win a reasonable ~50% of the time. I
suspect though, they can no longer play this game against the
well-mobilized GOP; the GOP is very effective on a grassroots level.
MfG,
Tayssir

0 new messages