Hi Dave,
I did take a break from game programming for a while, but in fact I've
started dusting off my chops lately. Mostly I've been improving my
Perlin noise library to use for world generation, for ironically
enough a rogue-like 4x style game I'm designing.
Thanks for pointing out Libtcod actually, I wasn't familiar with it.
Definitely looks like some really interesting games are being made
with it. I'll definitely be checking it out.
As far as whether I think entity-based programming is worthwhile, I
would say that my experiments were very encouraging. Particularly for
writing games in a high-level and slow language like Python. It gives
you great opportunities to push grunt work down into native code where
it belongs. Plus, and probably more importantly, it sets up an
organizational framework other than deep inheritance, which just
doesn't scale or lend itself to maintainability in the long run. Plus
it just makes me itchy generally ;^). And it gives you clean
separation of data, logic and drawing code out of the box.
I did work on backing Grease with numpy and there is significant
progress with that in a branch on github. Doing it generally, as I was
doing, is a considerable undertaking since the data structures need to
be heavily micromanaged to allow you to do fast operations in bulk
across entities. I think using numpy in a more specific application
would be significantly easier. numpy is extremely powerful once you
master its world-view.
Grease was a bit of a victim of being popped off the stack too long. I
needed a good 2D geometry library and I decided to write one for it as
a separate thing. That became planar, which is good on its own, but
sort of lost the goal of doing everything in bulk somewhere along the
way. Designing a good geometry API isn't super hard (though there are
a lot of bad ones IMO), but designing a good bulk-style geometry API
is considerably harder. I also pushed my perfectionism to the max with
planar, and frankly I just couldn't keep it up, eventually I couldn't
make progress fast enough to keep me interested on my own. I attempted
to just go back to Grease to do the numpy work, but my old bones just
can't sit at a computer 20 hours a day anymore, it was starting to
make it really difficult to do my day job so I had to scale back for a
while. But I am still here, and paying attention, and interested 8^).
I think using redis as a backing store for a multiplayer game could be
really good. I caution to keep your expectation realistic for a
one-man (assuming it is just you) project at first. Being ambitious is
good, but you should probably approach it in stages. However, that
said it is difficult to bolt-on multiplayer to an existing game. The
game really needs to designed for it, though it is considerably
simpler for turn based games it's still very complex overall.
As for divorcing it from Pyglet, I'm totally in favor of that. In fact
there is a somewhat recent github fork working on that. Though I'm not
in contact with its author, so I don't know what his goals are with
it. Having separate backends was an intended feature from the start,
though I was focusing on Pyglet only to start with.
Twisted is a little tough to use with games, as you say, because it
has its own event loop, which can be challenging to reconcile with the
event loop of the game engine. There was always a intention to make
Grease have networking, and I think the data-driven entity-based
design really lends itself to that. It was intended that data in
components would be tagged with incrementing generations so that they
could be synchronized efficiently between machines. However, no
development of this has happened. It might even be possible to
implement network syncing of components as a system that runs early to
refresh the component data for the remaining systems to use. It could
work asynchronously doing the network updates outside of the game
steps. If it were me, I wouldn't want to depend on a massive library
like twisted, something lighter weight like gevent would be more my
speed.
Thanks for the kind words about the project. It's not really dead,
just hibernating until I get a fire burning under me to work on it. My
current game idea will probably benefit from an ES approach. I'll take
a closer look at Libtcod later this week, and if I like it I might be
inclined to help get Grease to play well with it. That could be a
starting direction, particularly if we are both working on rogue-likes
8^)
-Casey
> --
> You received this message because you are subscribed to the Google Groups
> "Grease Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to
grease-users...@googlegroups.com.
> For more options, visit
https://groups.google.com/groups/opt_out.
>
>