[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-games-devel
Subject:    Re: [Kde-games-devel] Kapman sprite system (also,
From:       Eugene Trounev <eugene.trounev () gmail ! com>
Date:       2008-12-10 16:37:56
Message-ID: 200812101137.57849.eugene.trounev () gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


I agree with Mauricio here. As an artist I love the ID system, as it makes my 
life so much easier. Also I really would like us to keep all the artwork in 1 
file per theme. Kpat is a good example of how bad this separation is (faces in 
one file, back in the other, background in third, game elements in forth, and 
fifth). However Matthew rises a valid point - KDEGames animation framework 
sucks :) And his idea of using Plasma like *hints* right inside svg files is 
very nice! .desktop configs are fine by the way.

On Wednesday 10 December 2008 07:03:16 Mauricio Piacentini wrote:
> Matthew Woehlke wrote:
> > Ok, so in fiddling with Kapman graphics, I ran into some problems with
> > the sprite system, mostly in the set of assumptions it makes (only one
> > enemy graphic, number of animation frames or lack thereof), and the
> > kdegames-wide item that has been the bane of my existence since 4.0,
> > requiring every bloody thing to have an id.
>
> ...
>
> > Let me say it again. I *hate* assigning id's to every blody thing. I
> > also hate having to group, and I really, *REALLY* hate having to make
> > invisible objects so that id'd things are the right size. As you'll no
> > doubt see from the attached svg's, I very much prefer defining elements
> > based on their position in the document. It's much easier (easier to
> > make, easier to edit, leads to neater svg's, no invisible objects, no
> > need to group)... and even allows tricks like frame re-use (check out
> > where the second four of eight frames for the blink animation are ;-) ).
> > Not to mention that for the enemies I have 22 id'd objects versus 80 I'd
> > need otherwise (and for the player, I'd otherwise need 36, and I have a
> > whole *2*).
> >
> > Anyway, one question is obviously if I can convince people to see the
> > light in this respect :-).
>
> Well, I do not agree with you, but I think we discussed this before in
> the mailing list a few months ago, didn't we? Assigning IDs works for
> all of the other games, and let authors free to not worry about pixel
> locations, which are troublesome in SVG art. It also brings imo other
> advantages: you COULD have code in the game to check for missed
> elements, for example, and you can let the theme author decide the scale
> and positioning of things in the game screen directly using SVG elements
> (like in KBlocks), without having to deal with keys in the .desktop files.
> All of these are not earth shattering features, but one is important
> imo: the ability of QSvgRenderer to render an element separately if you
> identify it by the ID. This alone is a huge benefit code wise: I am not
> sure how you are going to reproduce this in your whole SVG theme, but I
> think it will require rendering of the whole SVG and slicing the pixmaps
>   afterwards. It should not be problematic for Kapman, but in some cases
> (KMahjongg for example) it is bad to render the whole tileset and look
> for a specific position if you only want one element at a different
> size. Did you think about a solution to this yet?
>
> > The other big question is on the animation system itself, if it looks
> > sane, etc. Most of it is described in the README (which is written to
> > describe the whole theme but is incomplete at the moment). Basically,
> > it's magic-id to identify each sprite or block of sprites, with
> > additional magic id's to give the animation parameters and other hints.
> > Plus one magic id gives the size scale for everything. Obviously the
> > colors aren't important, but I've consistently used blue for block
> > identifiers, green for art hints (only one), and magenta for animation
> > hints. And red for the scale-indicator.
>
> ---
>
> > So... thoughts? Especially from Thomas and/or Pierre-Benoit? It's a
> > decent amount of work but will *really* open up new theming
> > possibilities.
> >
> > Implementation-wise, the first thing I plan on writing is obviously a
> > class to import multiple frames from a so-laid-out SVG; this will be
> > used both for the sprites and also the wall tiles. Then comes tile
> > logic... :-) I'm not sure if I'll want to tackle improving the animation
> > system or tying in a tile engine first; both are not changes to be made
> > while in freeze. (Maybe I should start a work branch in playground?)
>
> I think that you could try a branch to see how these ideas shape up. I
> still think using IDs open up more opportunities than it creates
> problems, and I think it is in line with what other SVG clients in the
> project are doing (plasmoids?)
> Thoughts from artists?
>
> Regards,
> Mauricio Piacentini
> _______________________________________________
> kde-games-devel mailing list
> kde-games-devel@kde.org
> https://mail.kde.org/mailman/listinfo/kde-games-devel

[Attachment #5 (text/html)]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" \
"http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" \
content="1" /><style type="text/css"> p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'Liberation Sans'; font-size:10pt; \
font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">I agree with Mauricio here. As an artist I love the ID system, as \
it makes my life so much easier. Also I really would like us to keep all the artwork \
in 1 file per theme. Kpat is a good example of how bad this separation is (faces in \
one file, back in the other, background in third, game elements in forth, and fifth). \
However Matthew rises a valid point - KDEGames animation framework sucks :) And his \
idea of using Plasma like *hints* right inside svg files is very nice! .desktop \
configs are fine by the way.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;"></p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">On Wednesday 10 December 2008 07:03:16 Mauricio \
Piacentini wrote:</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; \
Matthew Woehlke wrote:</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; &gt; Ok, so in fiddling with Kapman graphics, I ran into some \
problems with</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; &gt; \
the sprite system, mostly in the set of assumptions it makes (only one</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; &gt; enemy graphic, \
number of animation frames or lack thereof), and the</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; &gt; kdegames-wide item that has been the \
bane of my existence since 4.0,</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; &gt; requiring every bloody thing to have an id.</p> <p \
style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt;</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; ...</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt;</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; &gt; Let me say it \
again. I *hate* assigning id's to every blody thing. I</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; &gt; also hate having to group, and I \
really, *REALLY* hate having to make</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; &gt; invisible objects so that id'd things \
are the right size. As you'll no</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; &gt; doubt see from the attached svg's, I very much prefer \
defining elements</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; &gt; \
based on their position in the document. It's much easier (easier to</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; &gt; make, easier to \
edit, leads to neater svg's, no invisible objects, no</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; &gt; need to group)... and even allows \
tricks like frame re-use (check out</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; &gt; where the second four of eight frames for the blink \
animation are ;-) ).</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; &gt; Not to mention that for the enemies I have 22 id'd \
objects versus 80 I'd</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; &gt; need otherwise (and for the player, I'd otherwise need \
36, and I have a</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; &gt; \
whole *2*).</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; \
&gt;</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; &gt; \
Anyway, one question is obviously if I can convince people to see the</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; &gt; light in this \
respect :-).</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt;</p> <p \
style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; Well, I do not agree \
with you, but I think we discussed this before in</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; the mailing list a few months ago, didn't \
we? Assigning IDs works for</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; all of the other games, and let authors free to not worry \
about pixel</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; \
locations, which are troublesome in SVG art. It also brings imo other</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; advantages: you COULD \
have code in the game to check for missed</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; elements, for example, and you can let the \
theme author decide the scale</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; and positioning of things in the game screen directly using \
SVG elements</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; (like \
in KBlocks), without having to deal with keys in the .desktop files.</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; All of these are not \
earth shattering features, but one is important</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; imo: the ability of QSvgRenderer to render \
an element separately if you</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; identify it by the ID. This alone is a huge benefit code \
wise: I am not</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; sure \
how you are going to reproduce this in your whole SVG theme, but I</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; think it will require \
rendering of the whole SVG and slicing the pixmaps</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt;   afterwards. It should not be problematic \
for Kapman, but in some cases</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; (KMahjongg for example) it is bad to render the whole tileset \
and look</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; for a \
specific position if you only want one element at a different</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; size. Did you think \
about a solution to this yet?</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt;</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; &gt; The other big question is on the animation system \
itself, if it looks</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; &gt; sane, etc. Most of it is described in the README (which \
is written to</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; &gt; \
describe the whole theme but is incomplete at the moment). Basically,</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; &gt; it's magic-id to \
identify each sprite or block of sprites, with</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; &gt; additional magic id's to give the \
animation parameters and other hints.</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; &gt; Plus one magic id gives the size scale \
for everything. Obviously the</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; &gt; colors aren't important, but I've consistently used blue \
for block</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; &gt; \
identifiers, green for art hints (only one), and magenta for animation</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; &gt; hints. And red for \
the scale-indicator.</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt;</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; ---</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt;</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; &gt; So... thoughts? Especially from Thomas and/or \
Pierre-Benoit? It's a</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; &gt; decent amount of work but will *really* open up new \
theming</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; &gt; \
possibilities.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; \
&gt;</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; &gt; \
Implementation-wise, the first thing I plan on writing is obviously a</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; &gt; class to import \
multiple frames from a so-laid-out SVG; this will be</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; &gt; used both for the sprites and also the \
wall tiles. Then comes tile</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; &gt; logic... :-) I'm not sure if I'll want to tackle \
improving the animation</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; &gt; system or tying in a tile engine first; both are not \
changes to be made</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; &gt; \
while in freeze. (Maybe I should start a work branch in playground?)</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt;</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; I think that you could \
try a branch to see how these ideas shape up. I</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; still think using IDs open up more \
opportunities than it creates</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; problems, and I think it is in line with what other SVG \
clients in the</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; \
project are doing (plasmoids?)</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; Thoughts from artists?</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt;</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; Regards,</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">&gt; Mauricio Piacentini</p> <p style=" \
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; kde-games-devel mailing \
list</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">&gt; \
kde-games-devel@kde.org</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">&gt; \
https://mail.kde.org/mailman/listinfo/kde-games-devel</p></body></html>



_______________________________________________
kde-games-devel mailing list
kde-games-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-games-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic