enigma-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Enigma-devel] Enigma editor, again


From: Petr Machata
Subject: Re: [Enigma-devel] Enigma editor, again
Date: Tue, 19 Jul 2005 03:42:48 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.5) Gecko/20050119 MultiZilla/1.7.0.1j

Karen Pouelle wrote:
> I have been creating levels in XML by hand.
> As I noted before, the data-centric concept need not
> limit the type of expressions of that data. For example,
>
>   <floors>
>     <fill kind="fl-concrete"/>
> ...
>
> The "fl-" prefix is required, which seems inconsistant with
> the rest of the tags which know by context which object
> prefix to assume.
>
> In LUA, fill can specifiy a rectangular range,
>
> fill_floor("fl-concrete", 6, 3, 2, 3)
>
> but not in XML.
> This sort of thing can only currently be done with multiple
> row tags:
> <row y="3">-6 concrete 1</row>
> <row y="4">-6 concrete 1</row>
> <row y="5">-6 concrete 1</row>
>
> But as you see, it's much more verbose.  Additionally, row
> doesn't take an x parameter (does it?)  Wouldn't it be nice
> to create tagged sections which have an x offset?

Xml format, if I understand it correctly, was created as simple for
machines to process, as possible. For this reason, there are no high
level constructs, such as logical objects, fill areas, etc. Machines
don't need them. Actually machines don't /want/ them, as using them
programatically is more difficult than simply dumping atom-per-atom to
level file. Main reason is that editors prepare data for game, and in
game you need atoms, not abstractions. And editors make the mistake of
mimicking that.

> And what about a tag for when one is trying to make
> checkerboard patterns exclusively in XML format
> with only row tags?
>
> What would be nice is to create objects - data objects.
> They are still data-centric, just more complex.
> For example, the same rectangle could be an
> object that's easily translatable:
>
> <object name="start block" x="6" y="3">
>   <row>concrete 1</row>
>   <row>concrete 1</row>
>   <row>concrete 1</row>
> </object>
>
> Or even better:
>
> <object name="start block" x="6" y="3" width="2" height="3">
>   <fill kind="concrete" />
> </object>
>
> Now that these are objects, they can be manipulated
> by the editor more easily as a group.  Also, they can
> be translated by just changing the object's parameters.
>
> An editor would be useful to me if it could manipulate
> this data format to do simple translations to selected
> objects and areas, such as slide, flip horizontal/vertical,
> and turn counter-clockwise/clockwise/twice
> (for 180 degree turn).  Currently, I text-tag the XML
> sections I wish to translate and run it through a script
> to do such translations - or just edit the row entries by hand.
>
> And what about tiling with an object?
> <fill object="start block" x="0" y="0" width="77" height="13" />
>
> The last four parameters could be optional.
> If either width or height parameters are missing, then
> the level width or height (respectively) is assumed
> (from tag <level width="77" height="13">).
>
> If x or y were missing, then of course 0 would be assumed
> respectively.
>
> Believe me, a graphical editor would be nice, but it must
> be able to do useful things that would normally take me
> longer to do by hand - otherwise I'll still be using the text
> editor.

And that's the point. What you talk about -- if I understand it correcly
-- is VERY similar to my intention. Most of what I'm talking about is
just a representation. Nothing more. The editor would simply make it
simple to edit the representation for anyone, not just überhackers that
can cite xml standard in half-sleep. You want handcrafted levels? Most
probably translation from that high level format to pure lua or xml will
be ready sooner than sexy and usable GUI. Most orthogonal way of
translating levels is of course xslt, but hey... we have some ordinary
users out there...

I had a mail from Daniel recently. His basic point was that I'm doing a
meta level editor, rather than level editor, and that this can turn out
to be very difficult. But I strongly believe that we need rich editor. Why?

1) We need an editor. As a matter of fact, all serious games come with
editor, external or internal. Current external editors aren't better
that hand hacking lua and xml, and forcing enigma people to hack lua and
xml isn't the way we want to go. There are clever people out there, who
could contribude levels of unseen quality, if only there was comfortable
way to build them. (And contribute, but that's another issue. Anyone
volunteers to implement zip levelpacks?)

2) We want internal editor. There was a ton of work put into enigma
display, behavior, cross-platformity and performance. The people behind
those other editors are reinventing it from scratch. Keeping in sync
with those editors would be a pain, if only someone wanted to keep that
sync at all. And if it was possible -- only one of the editors is open
source.

3) Most importantly: we want to make editing simple. You are quite
right: hacking text is still the fastest way to edit levels. If you want
to move door, your adjust two coordinates, and all state stays intact.
But look: in editor, you could just drag the door and drop it somewhere
else. If you dragged the turnstile, its arms would simply follow. If the
pool of water turns out to be too big, just grab the edge and shrink it.
That's what I have in mind when I say "rich editor".

Most work in level, in my opinion, is tweaking. Yes, there is base idea,
core puzzle or something. It won't work without one. But then you have
to really build the level, which inevitably includes a lot of tweaking,
trial and error, etc. XML allows it. But editor has to *support* it.

> I hope those ideas are useful. I think others would appreciate
> a data-centric, yet robust format also.

Thanks for your response, it was an inspiring read.

> Karen

PM

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]