unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
* [ANN] gzochi project development release 0.5
@ 2014-01-15 18:40 Julian Graham
  2014-01-15 18:59 ` Thompson, David
  0 siblings, 1 reply; 9+ messages in thread
From: Julian Graham @ 2014-01-15 18:40 UTC (permalink / raw)
  To: Guile Users

Hi everyone,

I'm pleased to announce the fifth development release of the gzochi
game development framework.

The project description, from Savannah: gzochi (/zoʊ-tʃiː/) is a
framework for developing massively multiplayer online games. A server
container provides services to deployed games, which are written in
Guile Scheme, that abstract and simplify some of the most challenging
and error-prone aspects of online game development: Concurrency, data
persistence, and network communications. A very thin client library
can be embedded to provide connectivity for client applications
written in any language. gzochi can be viewed as an application server
(plus clients) for Guile applications that have special kinds of
workloads -- quick, CPU-bound tasks that require transactional
guarantees around sending messages and accessing data.

This is primarily a bug fix release, focused on improving the
stability and correctness of durable task scheduling and transactional
access to data. Additionally, it includes:

* A new scalable data structure in the Scheme API, based on SRFI-44
sequences: gzochi:managed-sequence

* Reporting of average transaction duration via the server's embedded
administrative web console

* Performance improvements to both the server and reference client
implementations

* ...and more! See the NEWS files in the distribution for details

This is a development release; the framework is largely
feature-complete but likely not bug-free. Nonetheless, there's
extensive server and client documentation, and the distribution
includes two example games with heavily-annotated source code. For
more information, visit http://www.nongnu.org/gzochi/ or check out the
project page on Savannah, at
http://savannah.nongnu.org/projects/gzochi/ -- you can pick up the
release
from the downloads section.


Regards,
Julian



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [ANN] gzochi project development release 0.5
  2014-01-15 18:40 [ANN] gzochi project development release 0.5 Julian Graham
@ 2014-01-15 18:59 ` Thompson, David
  2014-01-15 19:09   ` Julian Graham
  2014-01-15 19:56   ` Panicz Maciej Godek
  0 siblings, 2 replies; 9+ messages in thread
From: Thompson, David @ 2014-01-15 18:59 UTC (permalink / raw)
  To: Julian Graham; +Cc: Guile Users

On Wed, Jan 15, 2014 at 1:40 PM, Julian Graham <joolean@gmail.com> wrote:
> Hi everyone,

Hello, Julian.

>
> I'm pleased to announce the fifth development release of the gzochi
> game development framework.
>
> The project description, from Savannah: gzochi (/zoʊ-tʃiː/) is a
> framework for developing massively multiplayer online games. A server
> container provides services to deployed games, which are written in
> Guile Scheme, that abstract and simplify some of the most challenging
> and error-prone aspects of online game development: Concurrency, data
> persistence, and network communications. A very thin client library
> can be embedded to provide connectivity for client applications
> written in any language. gzochi can be viewed as an application server
> (plus clients) for Guile applications that have special kinds of
> workloads -- quick, CPU-bound tasks that require transactional
> guarantees around sending messages and accessing data.

I am working on a 2D game development library
(https://gitorious.org/guile-2d/guile-2d/) that is still in its early
stages. I'm curious about how much our efforts overlap and if they
could be used together easily. My library is concerned with graphics,
audio, and user input and yours appears to be a client/server
framework, so I think that with our powers combined we can make 2D
multiplayer games with Guile. :)

I think it would be really useful if your website showed some example
code snippets to make it clear as to what problems your software is
solving and how it solves them. It's not immediately clear to me how I
would get started using gzochi.

That said, it's an exciting project. Congrats on the release!

- Dave Thompson



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [ANN] gzochi project development release 0.5
  2014-01-15 18:59 ` Thompson, David
@ 2014-01-15 19:09   ` Julian Graham
  2014-01-15 19:14     ` Thompson, David
  2014-01-15 19:56   ` Panicz Maciej Godek
  1 sibling, 1 reply; 9+ messages in thread
From: Julian Graham @ 2014-01-15 19:09 UTC (permalink / raw)
  To: Thompson, David; +Cc: Guile Users

Hi Dave,

On Wed, Jan 15, 2014 at 1:59 PM, Thompson, David
<dthompson2@worcester.edu> wrote:
> I am working on a 2D game development library
> (https://gitorious.org/guile-2d/guile-2d/) that is still in its early
> stages. I'm curious about how much our efforts overlap and if they
> could be used together easily. My library is concerned with graphics,
> audio, and user input and yours appears to be a client/server
> framework, so I think that with our powers combined we can make 2D
> multiplayer games with Guile. :)

Cool!


> I think it would be really useful if your website showed some example
> code snippets to make it clear as to what problems your software is
> solving and how it solves them. It's not immediately clear to me how I
> would get started using gzochi.

The gzochid manual has a kind of rationale section which describes the
problem space that gzochi addresses:
http://www.nongnu.org/gzochi/gzochid.html#Conceptual-overview. There's
also a trivial application you can look at to get a sense of what
gzochi application code looks like:
http://www.nongnu.org/gzochi/gzochid.html#An-example-application

For a deeper dive into non-trivial application development, you'll
need to download the distribution and take a look at the two example
games, Mazewar and AberMUD, which are both "remixes" of classic
network multiplier games, and which have fairly exhaustive
documentation and inline comments.

I'm going to be polishing up the web site soon, and I'll try to bring
some of that stuff closer to the surface. Let me know if you've got
additional thoughts on how to make the site or documentation more
useful / accessible.


Regards,
Julian



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [ANN] gzochi project development release 0.5
  2014-01-15 19:09   ` Julian Graham
@ 2014-01-15 19:14     ` Thompson, David
  2014-01-15 19:22       ` Julian Graham
  0 siblings, 1 reply; 9+ messages in thread
From: Thompson, David @ 2014-01-15 19:14 UTC (permalink / raw)
  To: Julian Graham; +Cc: Guile Users

On Wed, Jan 15, 2014 at 2:09 PM, Julian Graham <joolean@gmail.com> wrote:
> Hi Dave,
>
> The gzochid manual has a kind of rationale section which describes the
> problem space that gzochi addresses:
> http://www.nongnu.org/gzochi/gzochid.html#Conceptual-overview. There's
> also a trivial application you can look at to get a sense of what
> gzochi application code looks like:
> http://www.nongnu.org/gzochi/gzochid.html#An-example-application

Thanks for the links.

> For a deeper dive into non-trivial application development, you'll
> need to download the distribution and take a look at the two example
> games, Mazewar and AberMUD, which are both "remixes" of classic
> network multiplier games, and which have fairly exhaustive
> documentation and inline comments.

I perused the examples directory. Wasn't expecting so much C. ;)

> I'm going to be polishing up the web site soon, and I'll try to bring
> some of that stuff closer to the surface. Let me know if you've got
> additional thoughts on how to make the site or documentation more
> useful / accessible.

I think some code snippets with commentary staring you in the face on
the home page would go a long way.

- Dave



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [ANN] gzochi project development release 0.5
  2014-01-15 19:14     ` Thompson, David
@ 2014-01-15 19:22       ` Julian Graham
  2014-01-15 19:24         ` Thompson, David
  0 siblings, 1 reply; 9+ messages in thread
From: Julian Graham @ 2014-01-15 19:22 UTC (permalink / raw)
  To: Thompson, David; +Cc: Guile Users

> I perused the examples directory. Wasn't expecting so much C. ;)

Yeah, that'd be the clients – the server side of these applications is
all Scheme. This is going to sound crazy, but it hadn't occurred to me
to provide a reference client in Scheme. I'll be sure to add one in
the next release!



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [ANN] gzochi project development release 0.5
  2014-01-15 19:22       ` Julian Graham
@ 2014-01-15 19:24         ` Thompson, David
  0 siblings, 0 replies; 9+ messages in thread
From: Thompson, David @ 2014-01-15 19:24 UTC (permalink / raw)
  To: Julian Graham; +Cc: Guile Users

On Wed, Jan 15, 2014 at 2:22 PM, Julian Graham <joolean@gmail.com> wrote:
> This is going to sound crazy, but it hadn't occurred to me
> to provide a reference client in Scheme. I'll be sure to add one in
> the next release!

That would be great!

Happy hacking and whatnot. :)



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [ANN] gzochi project development release 0.5
  2014-01-15 18:59 ` Thompson, David
  2014-01-15 19:09   ` Julian Graham
@ 2014-01-15 19:56   ` Panicz Maciej Godek
  2014-01-15 20:43     ` Thompson, David
  1 sibling, 1 reply; 9+ messages in thread
From: Panicz Maciej Godek @ 2014-01-15 19:56 UTC (permalink / raw)
  To: Thompson, David; +Cc: Guile Users

[-- Attachment #1: Type: text/plain, Size: 2617 bytes --]

Hi guys!
Since I'm also an author of a(nother) multimedia framework
in guile+sdl/opengl called SLAYER, I thought that I might join
the conversation :)

Perhaps it would make sense to collaborate more and to somehow
integrate our efforts. It might seem difficult at first, because
I guess that everyone of us does his work in his spare time,
and our plans and visions might be vague, but it would be really
nice if we were able at least to formulate the intersections of our
goals.

Mine is to create games that would teach their players programming,
i.e. to show that some repeatable actions could be automated quite
easily and naturally with simple scripts, that could later on become
more complex.

I thought that it would be more motivating if a gameplay was set
up in a competetive environment, so that the players would easily
see that even simple programatic enhancements of their user
interface would give them an advantage over their opponents.

I came up with the idea of a 3d robot sword battle game, where
the players can come up with new moves for their avatars,
and even write scripts that would control their robots entirely.

For that reason, SLAYER is equipped with bindings to Open
Dynamics Engine, and also has a stub of a text editor widget
(which obiously allows to evaluate lisp expressions in a similar
way emacs+geiser does ;])

Some time ago, I have also been experimenting with a design
of a general network architecture, but I eventually dropped it,
believing that there were some more urgent things to be done.

Anyway, the goal is ambitious, and I think that for that reason
we have a lot in common. There are also some ideas that I
see in guile-2d and that I truly love and would love to steal,
but that's impossible, because it's LGPL :)

I also see that our approach differs in that I have been
using the GOOPS system extensively for the GUI design
(which has some advantages, despite its drawbacks, such
as decreased portability between other Scheme
implementations)

One thing that might seem dubious is my decision to keep
slayer a stand-alone application (rather than guile module).
It is not a deep decision and could be changed rather easily,
but as for now it has proven good at some points (namely,
it gave me a better control over the program behaviour while
I was creating a Windows port), and a pain-in-the-ass at
anothers (it's difficult to create slayer applications using the
emacs+geiser methodology).

Anyway, if any of you thinks that we could cooperate,
I'm really looking forward to it. I'd also like to hear about
your goals and ideas, if you're willing to share :)

[-- Attachment #2: Type: text/html, Size: 4550 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [ANN] gzochi project development release 0.5
  2014-01-15 19:56   ` Panicz Maciej Godek
@ 2014-01-15 20:43     ` Thompson, David
  2014-01-17  9:43       ` Panicz Maciej Godek
  0 siblings, 1 reply; 9+ messages in thread
From: Thompson, David @ 2014-01-15 20:43 UTC (permalink / raw)
  To: Panicz Maciej Godek; +Cc: Guile Users

On Wed, Jan 15, 2014 at 2:56 PM, Panicz Maciej Godek
<godek.maciek@gmail.com> wrote:
> Hi guys!
> Since I'm also an author of a(nother) multimedia framework
> in guile+sdl/opengl called SLAYER, I thought that I might join
> the conversation :)
>
> Perhaps it would make sense to collaborate more and to somehow
> integrate our efforts. It might seem difficult at first, because
> I guess that everyone of us does his work in his spare time,
> and our plans and visions might be vague, but it would be really
> nice if we were able at least to formulate the intersections of our
> goals.

Yes, I agree.

> Mine is to create games that would teach their players programming,
> i.e. to show that some repeatable actions could be automated quite
> easily and naturally with simple scripts, that could later on become
> more complex.
>
> I thought that it would be more motivating if a gameplay was set
> up in a competetive environment, so that the players would easily
> see that even simple programatic enhancements of their user
> interface would give them an advantage over their opponents.
>
> I came up with the idea of a 3d robot sword battle game, where
> the players can come up with new moves for their avatars,
> and even write scripts that would control their robots entirely.
>
> For that reason, SLAYER is equipped with bindings to Open
> Dynamics Engine, and also has a stub of a text editor widget
> (which obiously allows to evaluate lisp expressions in a similar
> way emacs+geiser does ;])
>
> Some time ago, I have also been experimenting with a design
> of a general network architecture, but I eventually dropped it,
> believing that there were some more urgent things to be done.

You could perhaps use gzochi for this now.

> Anyway, the goal is ambitious, and I think that for that reason
> we have a lot in common. There are also some ideas that I
> see in guile-2d and that I truly love and would love to steal,
> but that's impossible, because it's LGPL :)

I guess there is a gap in my understanding of the compatibility
between the GPL and LGPL. I chose the LGPL for 2 reasons: It is the
same license as Guile and there are already a million game libraries
out there that are either proprietary or more liberally licensed so I
also opted for a more liberal license. I could surely grant exceptions
to let you use my code for SLAYER, if necessary.

> I also see that our approach differs in that I have been
> using the GOOPS system extensively for the GUI design
> (which has some advantages, despite its drawbacks, such
> as decreased portability between other Scheme
> implementations)

Ah, I have chosen to not depend on GOOPS in favor of plain old record types.

> One thing that might seem dubious is my decision to keep
> slayer a stand-alone application (rather than guile module).
> It is not a deep decision and could be changed rather easily,
> but as for now it has proven good at some points (namely,
> it gave me a better control over the program behaviour while
> I was creating a Windows port), and a pain-in-the-ass at
> anothers (it's difficult to create slayer applications using the
> emacs+geiser methodology).

Our differing choices is a good example of "embedding vs. extending".
You've probably already read this article
(https://twistedmatrix.com/users/glyph/rant/extendit.html) but it
explains exactly why I prefer to extend.

One of Guile-2d's main goals is to work really nicely with Emacs +
Geiser. I am working on a patch for the Guile 2.0.10 release that will
allow any Guile program that runs an event loop to integrate a REPL
server that doesn't have the multi-threading issues present with the
normal REPL server. So, if you are open to turning SLAYER into a
shared library, I hope that a free REPL server will sweeten the deal.
:)

> Anyway, if any of you thinks that we could cooperate,
> I'm really looking forward to it. I'd also like to hear about
> your goals and ideas, if you're willing to share :)

I would definitely like to cooperate. Perhaps there is a library or
two that we could extract from our projects for everyone to use.

My main goal is to apply the Emacs philosophy to game development. I
want guile-2d to be an easy way to create 2D games interactively using
the REPL with the ideal environment being Emacs + Geiser. Ideally,
guile-2d will remain pure Guile and use the CFFI to call out to other
libraries.

- Dave



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [ANN] gzochi project development release 0.5
  2014-01-15 20:43     ` Thompson, David
@ 2014-01-17  9:43       ` Panicz Maciej Godek
  0 siblings, 0 replies; 9+ messages in thread
From: Panicz Maciej Godek @ 2014-01-17  9:43 UTC (permalink / raw)
  To: Thompson, David; +Cc: Guile Users

Hi!

<2014/1/15 Thompson, David <dthompson2@worcester.edu>

> > For that reason, SLAYER is equipped with bindings to Open
> > Dynamics Engine, and also has a stub of a text editor widget
> > (which obiously allows to evaluate lisp expressions in a similar
> > way emacs+geiser does ;])
> >
> > Some time ago, I have also been experimenting with a design
> > of a general network architecture, but I eventually dropped it,
> > believing that there were some more urgent things to be done.
>
> You could perhaps use gzochi for this now.

I'd have to read a bit more about it, because although it sounds
really cool (and may turn out to suit my needs exactly), the
documentation is rather voluminous.
So if I manage to keep up with my ideas, I'll definitely dive into it :]

> > Anyway, the goal is ambitious, and I think that for that reason
> > we have a lot in common. There are also some ideas that I
> > see in guile-2d and that I truly love and would love to steal,
> > but that's impossible, because it's LGPL :)
>
> I guess there is a gap in my understanding of the compatibility
> between the GPL and LGPL. I chose the LGPL for 2 reasons: It is the
> same license as Guile and there are already a million game libraries
> out there that are either proprietary or more liberally licensed so I
> also opted for a more liberal license. I could surely grant exceptions
> to let you use my code for SLAYER, if necessary.

Well, I meant that it's impossible, because it's free software :)
I decided to equip SLAYER with GPL mainly because I wouldn't any
non-free modifications to appear, because however strange it may
sound, there seem to be many people who don't have a clue about the
idea of free software.

But anyway, I think that FSF favours GPL over LGPL, and that it is
possible to convert LGPL to GPL (which is more restrictive) and not
the other way around.

> > I also see that our approach differs in that I have been
> > using the GOOPS system extensively for the GUI design
> > (which has some advantages, despite its drawbacks, such
> > as decreased portability between other Scheme
> > implementations)
>
> Ah, I have chosen to not depend on GOOPS in favor of plain old record types.

I am curious what caused that decision. It seems reasonable, because
it allows to keep the source relatively portable. On the other hand,
GUI goes rather naturally with OOP, and although it's still an
experiment, and I'm lacking certain features that are present in some
more widespread OOP systems, it's certainly
comfortable to have that multi-method dispatch, as it allows to write
programs in a more flexible (and a little carefree) manner.

The nice thing about it is that it works a little bit like the natural
language, where the meaning of certain words depend on their context.

But I actually dislike a few aspects. First that I know of no good
method for creating hidden slots, i.e. such that their storage would
be accessible only via virtually allocated slots.

The second is that there is there is no way to specify a type for a
slot. I can only provide a comment, but it's not particularly
reliable.

It is also slightly annoying that I have to define a class before I
can refer to it, e.g. in a method definition. It causes the code to be
scattered around in the file.

> > One thing that might seem dubious is my decision to keep
> > slayer a stand-alone application (rather than guile module).
> > It is not a deep decision and could be changed rather easily,
> > but as for now it has proven good at some points (namely,
> > it gave me a better control over the program behaviour while
> > I was creating a Windows port), and a pain-in-the-ass at
> > anothers (it's difficult to create slayer applications using the
> > emacs+geiser methodology).
>
> Our differing choices is a good example of "embedding vs. extending".
> You've probably already read this article
> (https://twistedmatrix.com/users/glyph/rant/extendit.html) but it
> explains exactly why I prefer to extend.
>
> One of Guile-2d's main goals is to work really nicely with Emacs +
> Geiser. I am working on a patch for the Guile 2.0.10 release that will
> allow any Guile program that runs an event loop to integrate a REPL
> server that doesn't have the multi-threading issues present with the
> normal REPL server. So, if you are open to turning SLAYER into a
> shared library, I hope that a free REPL server will sweeten the deal.
> :)

Well, for now I plan to stick to the "embedding" strategy, although I
realize its shortcomings. The big idea is to make sure that every
module that uses SLAYER is able to use all features of multimedia
environment, which should also be simple to use (so SLAYER does not
provide all the modes that SDL or OpenGL do, and binds only a few
procedures from SDL_ttf, for instance).

In the future, if I ever decide to create SLAYER2 that would be based
on SDL2 library, I will certainly make it a loadable module for Guile
-- that's because the specifics of the SDL2 library are such, that you
can create multiple windows.

Since SDL1.2 is tied to one window, I think that it's reasonable to
assume that all the modules can access it in some way.

On the other hand, I think that the architecture of SLAYER makes it
relatively easy to cooperate with REPL (which has actually been proven
with the aforementioned text-area widget). Since SLAYER runs its own
event loop, it's rather straightforward to evaluate Scheme expressions
there, provided that they are available.

However, it is not unlikely that I'm missing something with those
multi-threading issuses. But the solution that I have been using so
far was that I only used supplementary threads only to handle the
network connections, and all the packages that were received from a
socket were being propagated to the main thread using the SDL User
Events.

> > Anyway, if any of you thinks that we could cooperate,
> > I'm really looking forward to it. I'd also like to hear about
> > your goals and ideas, if you're willing to share :)
>
> I would definitely like to cooperate. Perhaps there is a library or
> two that we could extract from our projects for everyone to use.

I think that it might be an excellent idea. There's also this
CPAN-inspired guile-lib project that contains a set of libraries, so
perhaps it would be a good idea to have a module that would be shipped
with Guile and that would allow to easily access some set of modules
from an external repository.

The difficult part is on deciding which things go beyond a
programmer's private language and are actually worth becoming public.
But I think that it's a matter of a good discussion :)

I took an approach such that I have one module that defines a set of
language extensions that I use commonly in my programs, which e.g.
re-exports some popular modules like srfi-1, srfi-2 or (ice-9 match),
and also adds a few of my own extensions. This often saves me a lot of
writing.

Besides I admit that whenever I find it reasonable, I create modules
that do not require SLAYER and go well with pure Guile. The Open
Dynamics Engine wrapper library is such case, that could easily be
taken to another project (however, it consists of a low level code
that requires C++11 compiler to get built)

> My main goal is to apply the Emacs philosophy to game development. I
> want guile-2d to be an easy way to create 2D games interactively using
> the REPL with the ideal environment being Emacs + Geiser. Ideally,
> guile-2d will remain pure Guile and use the CFFI to call out to other
> libraries.

I see. It is a nice philosophy :)
I didn't focus so much on Emacs integration, because I'd like SLAYER
to provide its own editor, that would be more accessible to a broader
class of users (the default keystrokes are always a source of
amusement for the newcomers, and setting up Geiser, although not
particularly difficult, is still non-trivial, unlike setting up the
environment to evaluate Emacs Lisp expressions). Plus I'd like to
integrate it with multimedia content better (Emacs is great for
editing text, but -- despite the existence of such projects as GNEVE
-- it isn't equally good for editing videos or sounds).



^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2014-01-17  9:43 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-15 18:40 [ANN] gzochi project development release 0.5 Julian Graham
2014-01-15 18:59 ` Thompson, David
2014-01-15 19:09   ` Julian Graham
2014-01-15 19:14     ` Thompson, David
2014-01-15 19:22       ` Julian Graham
2014-01-15 19:24         ` Thompson, David
2014-01-15 19:56   ` Panicz Maciej Godek
2014-01-15 20:43     ` Thompson, David
2014-01-17  9:43       ` Panicz Maciej Godek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).