Google Groups Home
Help | Sign in
Announcement: Axiom, a Forth Based Universal Game Programming System
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  17 messages - Collapse all
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
dreamwa...@yahoo.com  
View profile
(2 users)  More options Aug 26 2007, 3:16 pm
Newsgroups: comp.lang.forth
From: dreamwa...@yahoo.com
Date: Sun, 26 Aug 2007 12:16:27 -0700
Local: Sun, Aug 26 2007 3:16 pm
Subject: Announcement: Axiom, a Forth Based Universal Game Programming System
If you are interested in programming abstract strategy games, puzzles,
and a variety of other related applications (or you are just
interested in novel Forth applications), you might be interested in
"Axiom".  Axiom is a universal game development system that works in
conjunction with the "Zillions Of Games" (tm) product.  It is in the
form of a plug-in DLL engine for Zillions.  Axiom has its own complete
Forth based scripting language as opposed to the built-in Lisp like
language included in the Zillions product.  Axiom provides its own
search engine, allows the game AI to be customized, supports math, and
in general, allows a high degree of customized programming.  Due to
the full power of Forth being available for game programming, Axiom
extends the range of games possible with the Zillions product.

You can find the Axiom development kit (which includes documentation)
along with several Axiom based games at:

http://www.zillions-of-games.com/cgi-bin/zilligames/submissions.cgi/4...

Also, there is a yahoo group dedicated to Axiom:

http://games.groups.yahoo.com/group/axiom-system/

The Zillions of Games (tm) product is a commercial product, however
you can download the development kit and the Forth based Axiom games
for free.  You need to purchase the Zillions product in order to play
these and Zillions games, however if your interest is limited to
examining the game programming, then you can look at the included *.
4th files.

Due to the fact it is Forth based, it may not be for everyone.  In the
yahoo group, there has been some backlash to using Forth (e.g. "Why
didn't you use Java?).  However, my personal experience has been that
Forth is an excellent language for this purpose.

I am not affiliated with the Zillions product in any way.  I'm a Forth
enthusiast and  Axiom has been a hobby project which I am offering to
the public for free.  I've been working on Axiom and the current set
of Axiom based games for the past 1-1/2 years in my 'spare' time.

Thank you for your interest.

-- Greg Schmidt


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Jean-François Michaud  
View profile
 More options Aug 26 2007, 7:27 pm
Newsgroups: comp.lang.forth
From: Jean-François Michaud <come...@comcast.net>
Date: Sun, 26 Aug 2007 16:27:36 -0700
Local: Sun, Aug 26 2007 7:27 pm
Subject: Re: Announcement: Axiom, a Forth Based Universal Game Programming System
On Aug 26, 12:16 pm, dreamwa...@yahoo.com wrote:

Outstanding work Greg! Forth will certainly benefit from your project.

Regards
Jean-Francois Michaud


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Marcel Hendrix  
View profile
 More options Aug 27 2007, 2:00 pm
Newsgroups: comp.lang.forth
From: m...@iae.nl (Marcel Hendrix)
Date: Mon, 27 Aug 2007 20:00:12 +0200
Local: Mon, Aug 27 2007 2:00 pm
Subject: Re: Announcement: Axiom, a Forth Based Universal Game Programming System
dreamwa...@yahoo.com writes Re: Announcement: Axiom, a Forth Based Universal Game Programming System
[..]

> I am not affiliated with the Zillions product in any way.  I'm a Forth
> enthusiast and  Axiom has been a hobby project which I am offering to
> the public for free.  I've been working on Axiom and the current set
> of Axiom based games for the past 1-1/2 years in my 'spare' time.
> Thank you for your interest.

Great idea! You paid attention to doumentation too, and your Forth seems
to really deserve that name (being interactive). Do you care to discuss
why it has <BUILDS, and why there's a unified stack?

BTW, strange game player, Zillion :-) I tried it's chess, but it doesn't
even know when the game is over (I took its king after only 3 moves, but it
pretends not to notice).

It does know how to play tic-tac-toe, though (unfortunately, I do too).

-marcel


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
dreamwa...@yahoo.com  
View profile
(1 user)  More options Aug 27 2007, 3:30 pm
Newsgroups: comp.lang.forth
From: dreamwa...@yahoo.com
Date: Mon, 27 Aug 2007 12:30:59 -0700
Local: Mon, Aug 27 2007 3:30 pm
Subject: Re: Announcement: Axiom, a Forth Based Universal Game Programming System
On Aug 27, 1:00 pm, m...@iae.nl (Marcel Hendrix) wrote:

> dreamwa...@yahoo.com writes Re: Announcement: Axiom, a Forth Based Universal Game Programming System
> [..]

> > I am not affiliated with the Zillions product in any way.  I'm a Forth
> > enthusiast and  Axiom has been a hobby project which I am offering to
> > the public for free.  I've been working on Axiom and the current set
> > of Axiom based games for the past 1-1/2 years in my 'spare' time.
> > Thank you for your interest.

> Great idea! You paid attention to doumentation too, and your Forth seems
> to really deserve that name (being interactive). Do you care to discuss
> why it has <BUILDS, and why there's a unified stack?

ForthScript is subroutine threaded and implemented in C++. I couldn't
see any way
to implement CREATE ... DOES> without dropping into assembly which I
didn't want to do.

This was discussed in the following thread:

http://groups.google.com/group/comp.lang.forth/browse_thread/thread/4...

The gist of it is:

Andrew Haley wrote:
> and the thunk is a magic bit of machine code, usually a single
> instruction, that is placed in the threaded code immediately before
> the DOES> action.  This works with any kind of threading.

As far as a unified stack, I'm not sure what you mean.  ForthScript
has both a data stack and a return stack.
It supports words such as (>R, R>, R, R@ etc.).  Was there something
you found in the documentation that lead
you to believe there was a single stack?

Please let me know if I'm missing something on either one of these
points.

> BTW, strange game player, Zillion :-) I tried it's chess, but it doesn't
> even know when the game is over (I took its king after only 3 moves, but it
> pretends not to notice).

Hmm... It's Chess is pretty strong, especially considering it's a
general game playing
program.  If you are able to make this happen again, please save the
game (in a *.zsg file)
and send it to me.  I can then post it and have the Chess Guru's
examine it.

> It does know how to play tic-tac-toe, though (unfortunately, I do too).

> -marcel

Thank you for your comments and thanks to everyone for the kudos.

Regards,
-- Greg


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Marcel Hendrix  
View profile
 More options Aug 28 2007, 12:41 am
Newsgroups: comp.lang.forth
From: m...@iae.nl (Marcel Hendrix)
Date: Tue, 28 Aug 2007 06:41:15 +0200
Local: Tues, Aug 28 2007 12:41 am
Subject: Re: Announcement: Axiom, a Forth Based Universal Game Programming System
dreamwa...@yahoo.com writes Re: Announcement: Axiom, a Forth Based Universal Game Programming System

> As far as a unified stack, I'm not sure what you mean.  ForthScript
> has both a data stack and a return stack.

[..]

But floating-point numbers are on the data stack, as 32-bit numbers.
IMHO, these are very unfortunate design decisions.

>> BTW, strange game player, Zillion :-) I tried it's chess, but it doesn't
>> even know when the game is over (I took its king after only 3 moves, but it
>> pretends not to notice).
> Hmm... It's Chess is pretty strong, especially considering it's a general game playing
> program.  If you are able to make this happen again, please save the game (in a *.zsg file)
> and send it to me.  I can then post it and have the Chess Guru's examine it.

I only tried the Demo version and didn't realize the best it can do is play
'Loser Chess'. Apparently the rules are quite different. Probably a great
idea in the context of a demo for an extensible system.

-marcel


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
dreamwa...@yahoo.com  
View profile
 More options Aug 28 2007, 7:31 am
Newsgroups: comp.lang.forth
From: dreamwa...@yahoo.com
Date: Tue, 28 Aug 2007 04:31:33 -0700
Local: Tues, Aug 28 2007 7:31 am
Subject: Re: Announcement: Axiom, a Forth Based Universal Game Programming System
On Aug 27, 11:41 pm, m...@iae.nl (Marcel Hendrix) wrote:

> But floating-point numbers are on the data stack, as 32-bit numbers.
> IMHO, these are very unfortunate design decisions.

Pardon my ignorance on this, but besides less stack juggling, what do
you see as the main advantages of having a separate floating point
stack?
So far, in my limited applications to game programming, I haven't run
into difficulties, but then I don't typically perfrom extensive mixed
mode calculations.

> I only tried the Demo version and didn't realize the best it can do is play
> 'Loser Chess'. Apparently the rules are quite different. Probably a great
> idea in the context of a demo for an extensible system.

Right, I forgot that the demo is 'Loser Chess'.  I agree with your
rationale, although some objected to putting a 'Loser' game in the
demo.

-- Greg


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Andrew Haley  
View profile
 More options Aug 28 2007, 11:29 am
Newsgroups: comp.lang.forth
From: Andrew Haley <andre...@littlepinkcloud.invalid>
Date: Tue, 28 Aug 2007 15:29:16 -0000
Local: Tues, Aug 28 2007 11:29 am
Subject: Re: Announcement: Axiom, a Forth Based Universal Game Programming System

Other people have done it.  It's far from being impossible.  I don't
know enough about exactly how your threading scheme works to comment
on how exactly to do it in your system.

> This was discussed in the following thread:
> http://groups.google.com/group/comp.lang.forth/browse_thread/thread/4...
> The gist of it is:
> Andrew Haley wrote:
>> and the thunk is a magic bit of machine code, usually a single
>> instruction, that is placed in the threaded code immediately before
>> the DOES> action.  This works with any kind of threading.
> As far as a unified stack, I'm not sure what you mean.

Your question was re "history and rationale for CREATE vs. <BUILDS"
and had nothing at all to do with unified stacks.

Andrew.


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
dreamwa...@yahoo.com  
View profile
(1 user)  More options Aug 28 2007, 11:52 am
Newsgroups: comp.lang.forth
From: dreamwa...@yahoo.com
Date: Tue, 28 Aug 2007 08:52:29 -0700
Local: Tues, Aug 28 2007 11:52 am
Subject: Re: Announcement: Axiom, a Forth Based Universal Game Programming System
On Aug 28, 11:29 am, Andrew Haley <andre...@littlepinkcloud.invalid>
wrote:

[On supporting CREATE .. DOES>]

> Other people have done it.  It's far from being impossible.  I don't
> know enough about exactly how your threading scheme works to comment
> on how exactly to do it in your system.

For details on ForthScript's threading, see section 5 "Internals
within "ForthScript.pdf" that is part of the Axiom development kit at:
http://www.zillionsofgames.com/cgi-bin/zilligames/submissions.cgi/161...

> Your question was re "history and rationale for CREATE vs. <BUILDS"
> and had nothing at all to do with unified stacks.

True enough, that reference was my response to part one of Marcel's
two part question:

>Do you care to discuss why it has <BUILDS, and why there's a unified stack?

-- Greg

    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Andrew Haley  
View profile
 More options Aug 28 2007, 1:55 pm
Newsgroups: comp.lang.forth
From: Andrew Haley <andre...@littlepinkcloud.invalid>
Date: Tue, 28 Aug 2007 17:55:49 -0000
Local: Tues, Aug 28 2007 1:55 pm
Subject: Re: Announcement: Axiom, a Forth Based Universal Game Programming System

dreamwa...@yahoo.com wrote:
> On Aug 28, 11:29 am, Andrew Haley <andre...@littlepinkcloud.invalid>
> wrote:
> [On supporting CREATE .. DOES>]
>> Other people have done it.  It's far from being impossible.  I don't
>> know enough about exactly how your threading scheme works to comment
>> on how exactly to do it in your system.
> For details on ForthScript's threading, see section 5 "Internals
> within "ForthScript.pdf" that is part of the Axiom development kit at:
> http://www.zillionsofgames.com/cgi-bin/zilligames/submissions.cgi/161...

OK, that all looks pretty conventional.  To implement CREATE .. DOES>,
your DOES> should modify the CFA of the most recently created word.
As as example, consider something like

  : const   create ,   does> @ ;

DOES> makes the CFA of the most recently created word point into the
middle of the list of CFAs inside CONST, and then DOES> exits from
CONST.

The list of CFAs in CONST looks like this, with "&" meaning the CFA of
the following word:

   & CREATE  & ,  & DOES>  & (DODOES)  & @  & ,  & EXIT

So, when you do

   CONST FOO

you create a new word whose CFA points to the address of (DODOES)
within the body of CONST.  The action of (DODOES) is somewhat system
dependent, but it needs to get the address of the parameter field of
the current definition.

Andrew.


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Marcel Hendrix  
View profile
 More options Aug 28 2007, 2:05 pm
Newsgroups: comp.lang.forth
From: m...@iae.nl (Marcel Hendrix)
Date: Tue, 28 Aug 2007 20:05:51 +0200
Local: Tues, Aug 28 2007 2:05 pm
Subject: Re: Announcement: Axiom, a Forth Based Universal Game Programming System
dreamwa...@yahoo.com writes Re: Announcement: Axiom, a Forth Based Universal Game Programming System

> On Aug 27, 11:41 pm, m...@iae.nl (Marcel Hendrix) wrote:
>> But floating-point numbers are on the data stack, as 32-bit numbers.
>> IMHO, these are very unfortunate design decisions.
> Pardon my ignorance on this, but besides less stack juggling, what do
> you see as the main advantages of having a separate floating point
> stack?

Is less stack juggling not compelling enough?

Source code clarity: with a unified stack, you are never completely sure
that there is not a float involved somewhere, whereas with a separate
stack you simply write
  :  x ( adam bertha -- xantippe ) ( F: r -- cos{r} ) ... ;

Then there is efficiency: a separate stack works much faster when you
use the hardware FPU or SSE2 unit. Most fast Forths use a separate
FP stack, so your code can never be directly used on/ported to/checked
through them.

With a separate FP stack you switch to double or quad precision without
rewriting any code. (Say you want your Fractal generator upgraded to
256 bits with Julian Noble's ideas.)

-marcel


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Andrew Haley  
View profile
 More options Aug 28 2007, 2:15 pm
Newsgroups: comp.lang.forth
From: Andrew Haley <andre...@littlepinkcloud.invalid>
Date: Tue, 28 Aug 2007 18:15:16 -0000
Local: Tues, Aug 28 2007 2:15 pm
Subject: Re: Announcement: Axiom, a Forth Based Universal Game Programming System