Jump to content
Mike at BrashMonkey

Please post feature suggestions here.

Recommended Posts

I'd like it if the easing (besier) options were a little clearer as to up to where does it influence the animation, since I can add it in a keyframe in the middle of the animation and it shows a control based on 'ms'. Be it either a timelien representation of where it is affecting the animation. Something you could drag the box along the timeline and the changes would be more visible and more logical to visual artists. You know ? Something you can drag and drop to define the length, not parameters you can't visibly see.

Share this post


Link to post
Share on other sites

- I would like to help more when there are bugs, so it would be great to have more details when Spriter crash (a log or something).

- When the scml is malformed, Spriter should not crash and should say "cannot read scml" and explain the reason.

Share this post


Link to post
Share on other sites

I just thought of a great feature for the Spriter format: clipping rectangles! (Apologies in advance if someone's already suggested it :oops:)

Since you already have rectangle primitives, all you need is a special axis-aligned (i.e. can't be rotated) subclass of that. When an image or sub-entity* is made a child of this rectangle, only parts of said image/entity that coincide with the rectangle will be drawn.

I don't have much experience with C2 or the other "game authoring systems" you're targeting, but most low-level 2D rendering libraries I've seen (e.g. Flash/AS3, SDL, libgosu) have included a mechanism for clipping graphics primitives to a rectangle, so implementation should be quite simple.

While I realize this could be implemented at the renderer level using the current rectangle primitive, I feel it is both useful and powerful enough that the ability to preview the effect in Spriter in real-time would be worth adding.

* (IMO, sub-entities should be called "components")

Share this post


Link to post
Share on other sites

(Sorry for double-posting...)

These might already be on the "todo" list, but I think there are some problems with the new "hiding/locking" mechanism.

Currently, only selected items can be hidden, shown, locked, or unlocked. However, once you've hidden/locked something, it can no longer be selected. Thus, you cannot show/unlock individual items. As it stands, you have to unlock and show all items, then manually hide/lock everything you still want hidden/locked.

Suggested solutions:


  1. [*:1ohwu6eh]Add a right-click menu to the Hierarchy and Z-order lists.
    [*:1ohwu6eh]Right-clicking a locked object should show a menu with only "Hide this object" and "Unlock this object" options.

Other suggestions:


  1. [*:1ohwu6eh]Right-clicking an unselected object should make it the only selected object, then bring up the menu.
    [*:1ohwu6eh]If nothing is selected, the menu should not include the "...selected objects" items.

Share this post


Link to post
Share on other sites

Can the export window when exporting to .PNG/.GIF retain the previous values, or at the very least have an option to retain them? I'm in a situation where I'm using character maps to hide portions of the sprite, and exporting it in two separate files. I would like to have them have the same size and such, and it's a real pain to have to remember all of the settings that I specified for the previous export, especially the bounding box sizes for the images.

Share this post


Link to post
Share on other sites

It's probably already in this huge list somewhere, but I would really appreciate it if right-clicking on the play button would just stop at the end instead of auto-rewinding. It should probably be optional (in case I'm the only weirdo who wants it this way ;)).

EDIT: I forgot to mention the dilemma of how to handle right-clicking when the head is already at the end of the time-line. You could have it restart from the beginning, but sometimes it might be nice to be able to go from somewhere in the middle to the end. In that case, you should probably save the head position when play is right-clicked, and rewind back there if it's right-clicked again with the head at the end. Just my two cents...

Share this post


Link to post
Share on other sites

Maybe this is possible right now, im using spriter for a few days...

im implementing a custom curve, that i need it for other objects too, it will be great if i can copy paste that curve somehow, if that is possible, can anyone teach me.

tx and cheers!

Share this post


Link to post
Share on other sites

I have begun working with Spriter again and have been for the past month or so, and I a renewed view on spriter.

These are my biggest nuances currently with spriter:

-What's the logic behind having to rotate images counter-clockwise so they will be scaled properly inside spriter? I have to say that this is not intuitive in the least, at least for the end user.

-The stepping on scaling a bone when dragging with the mouse is way too big, making subtle scaling animation a chore to do.

-Why every time I key a bone, it also keys all it's children? This really breaks my workflow since I constantly have to delete those keyframes and I see no reason for them to be created. My only guess is so I can delete a bone and it's children remain where they are, but I have never come across a reason or can't think of one where I would want to delete a bone, if I want a part of the character to dissapear or something, I just hide the image, not touch the bone.

-It should be made clear that pixel art mode is enabled when making renders.

-Save UI layout and background color on close, it's a pain in the butt having to rearrange everything every time I start up spriter ( which is a lot due to it's tendency to freezing/crashing).

-Why am I allowed to select multiple images on the z-order tab if I can't do anything with that selection? If you can't allow me to drag several images across the z-order at once, don't let me select multiple images so I get the illusion that I can.

-What's the use of the object palette? Images showed are too small to be of any use, you can't click on it to select a bone or image, and I have no clue what combine selected object with does( I thought it could be used to bring objects that where present in other animations but not the current one, that's not the case it seems).

-Why second view doesn't have 0.75, 0.50, 0.25 options? This makes it useless to those of use who work with large files to be scaled later. Also, its Buttons take too much space.

-Changing background color doesn't nee such a central space, normally I just change the color once when I start working and don't touch it again, so the series of buttons are just adding to the visual clutter.

-UI is desperate for a visual overhaul, currently it looks like some patch job made on winforms.

-Object properties wastes a lot of space and yet it feels cluttered.

- I don't need a billion decimals for x and y, truth is I don't need to see decimals at all for these.

- xScale and yScale could do with 2 decimals, 3 tops.

- Angle and alpha don't need decimals at all.

- Taking off all these numbers would allow the panel to be smaller and much less cumbersome.

- Without all these needless info the object properties pane could be redesigned into a small floating panel

- The timeline is not very good.

- The play/stop/etc buttons are flat and enclosed on a square, while all other buttons have anti-aliased drawings.

- The beveled rounded rectangles for user input look bad.

- The way it changes the distribution of elements when one is clicked looks bad.

- The increase/decrease arrow buttons are useless.

- I see no reason to change the whole layout when I click a box for input, just highlight that box and be done with it.

- I'm guessing that the "..." and the "Char Maps" buttons are placeholders for not yet made images, since quite a while.

- Button images are visual noise, make them more explicit and make them a flat color. Look at any graphic program like Adobe ones

for ideas.

- Let me "minimize" panels, I don't need the all the panels all the time, yet in order to get the space occupied by them for work I

have to close them all, making it a chore to bring them back up when I need them.

- I think the ui in general would greatly benefit from a more actual look, like a flat design

(http://interiorimg.com/WP_images4/78367.png), to get a away from the win95 vibe.

- File menu -> Other file actions... to me it doesn't look like you ran out of space on the file menu, so I see no purpose in hiding these functions under a generically named submenu.

And to wrap up:

Spriter is unstable, a lot of people who work with it know it. There are lots of posts here from people saying how much spriter crashes, and every time Mike pops the same answer of how he works with it everyday and it never crashes. The sad part is that only a few people will bother to make an account and report a crash, most people will download the software, crash a few times, uninstall and forget about it. This is particularly worrisome if you consider that spriter is almost impossible to find using google without knowing it's exact name, so the crashes and maybe coupled with the bad looking ui are probably shooing potential customers away.

You guys say that we need to report the crashes and how to reproduce them, but the truth is that they usually happen at random, with no apparent reason, examples: "was watching and animation, paused it and spriter went unresponsive and crashed moments later", or "was saving and spriter crashed", or "minimized the window, and when I maximized it spriter crashed" or "tried to scale a bone and spriter crashed"; it's already enough for the user to have to deal with loss of work and time, and most of us don't even know where to start looking at a cause of a crash, we just know it crashed and pissed us off and made us wonder why we even use this software.

So, instead of developing new features, which somehow always creep up on new version announcements, why not develop some kind of error log? I have no clue of the implications of implementing such a thing, mind you, so I don't know if it's extremely hard to do or if it would be of any use at all, but it's what I think spriter currently needs the most.

Share this post


Link to post
Share on other sites

Thanks again everyone for taking the time to report issues and send feature requests.

and welcome back tombmonkey,

Thanks for the awesomely concise feedback. All of these things will be addressed as soon as we can...some sooner than others.

In the meantime, the reason for the need to have images not inherently "angled" in the actual image file IF the user wants to be able to stretch them without distortion is simply because all modern game engines and authoring systems support basic vertical and horizontal stretching of "sprites", but not necessarily "deforming" the sprite. Most people don't plan to stretch their characters limbs very much or at all, so for most its not an issue...for those of us who do want to stretch, for now we have to take that little extra step of making sure the source body part images are not angled. BUT, once skin mode is finished and fully working, we plan on a mode to turn all sprites in any animation to "skins", which would then allow for the deforming required so that you could then stretch a fully assembled character any way you'd like and they wouldn't come apart at the seems, with each limb distorting differently.

I made this video which explains this in better detail quite a while back:

I also fully understand how frustrating crash bugs are, especially ones who's cause is very hard to figure out. Edgar fixes bugs as fast as he can once we know they exist, so we hugely appreciate when users like you take the time to report them. Even just mentioning the OS you're on and what you happened to be doing the last time it crashed can be very helpful...this can even help Edgar add small bug-tracking script into Spriter to help find what might be causing the crash. (he's done so in the past.)

It's also important to know that specific types of work-flow can give you a very different experience with beta software. I've used Spriter for hours a day for months (the last several builds) without a single freeze or crash while working on the art packs, but just recently with b10 I started using a specific set of features in a specific order that is causing Spriter to lock-up...so I think I've finally found at least one of these big trouble-makers that people like you have been reporting, but that we, as of yet had been unable to reproduce.

I'll report back once I've figured out how to reproduce it and once Edgar has a chance to look into it.

Thanks again everyone for your support, feedback, testing and patience.

cheers,

Mike at BrashMonkey

Share this post


Link to post
Share on other sites

Well worked with spriter for last 2 days, found these feature requirements, not sure if any of these listed before or already have some solution, I am anyway going to test it for next few weeks and uploading assets on scirra store. So will keep updating as I go.

1) Z order needs a change. when we drag and drop any body art, it always come at the top, it should come on top of the last layer selected in the z order. This will remove the hassle of dragging layers from the top to the very bottom, especially when there are too many parts.

If that is not possible, provide a shortcut key

say ctrl + up down/ arrow, for moving the selected layers in z order up and down. Shift + ctrl + up/down arrow to move them to the very top and very bottom respectively. ( similar to photoshop layers)

This will make the workflow very fast.

2) in the edit menu, try to add customized keyboard shortcut settings, so we can change and add our own short cuts, for example zooming in and out ctrl + and - are the default zooming in and out for many browsers and software. Its bit awkward to press ctrl + alt +space. so if we can edit and customize shortcuts, that will help. ( unless this is already implemented and I have somehow missed it)

3) The animation timeline when docked cannot be stretched after a particular height. If I undock it it can be streched to show all layers but that misses the point. It should be like flash where the timeline can be stretched to any height even when it is docked. In turn making the canvas size smaller when time line is stretched so it makes the canvas still viewable, even if it is small.

I have not started animating yet, so will keep updating once I test it more. Till now spriter has been very stable, probably it has to do with high RAM and Graphic cards my work station has.

Share this post


Link to post
Share on other sites

Hi famekrafts,

Thanks for the feedback.

1) You don't need to drag sprites in the z-order list to change their z-order. You can hold Control after selecting a sprite, then press the up or down arrows to go down or up and the left or right arrows to go all the way to the top or bottom of the z-order stack. (it's funny this is what you recommend...did you try? It works fine for me.)

2) We do indeed plan to let users customize their keyboard shortcuts...but can't promise how soon this will happen.

3) Not sure about this one, I'll mention it to Edgar.

cheers,

Mike at BrashMonkey

Share this post


Link to post
Share on other sites
Hi famekrafts,

Thanks for the feedback.

1) You don't need to drag sprites in the z-order list to change their z-order. You can hold Control after selecting a sprite, then press the up or down arrows to go down or up and the left or right arrows to go all the way to the top or bottom of the z-order stack. (it's funny this is what you recommend...did you try? It works fine for me.)

2) We do indeed plan to let users customize their keyboard shortcuts...but can't promise how soon this will happen.

3) Not sure about this one, I'll mention it to Edgar.

cheers,

Mike at BrashMonkey

Mike

Actually I did not try it, I am still going through the manual.

That is fine, even if it is implemented in future.

Share this post


Link to post
Share on other sites
Can the export window when exporting to .PNG/.GIF retain the previous values, or at the very least have an option to retain them? I'm in a situation where I'm using character maps to hide portions of the sprite, and exporting it in two separate files. I would like to have them have the same size and such, and it's a real pain to have to remember all of the settings that I specified for the previous export, especially the bounding box sizes for the images.

Agree with this.

And will be even better if Spriter can export all entity's animations at once, instead exporting per animation.

Also, the advanced timeline window is kinda useless since I can't set the height when it's docked. But when undocked it will be covering the other dock/panel.

Barely use it because of that issue.

Share this post


Link to post
Share on other sites
Hi famekrafts,

Thanks for the feedback.

1) You don't need to drag sprites in the z-order list to change their z-order. You can hold Control after selecting a sprite, then press the up or down arrows to go down or up and the left or right arrows to go all the way to the top or bottom of the z-order stack. (it's funny this is what you recommend...did you try? It works fine for me.)

2) We do indeed plan to let users customize their keyboard shortcuts...but can't promise how soon this will happen.

3) Not sure about this one, I'll mention it to Edgar.

cheers,

Mike at BrashMonkey

Mike an update

For moving the layers in z order, ctrl and arrow keys are working for only one layer, what if we select more than 2-3 layers and move it with ctrl + arrow keys?

That feature will also help.

Share this post


Link to post
Share on other sites

Hi Mike

I went through the tutorial on your site for animation:

These are the few things I suggest :

1)Playback animation should stop if we click anywhere on the timeline.

2)If we are using too many bones especially close together it becomes very difficult to hover over the edge of the bones so that the rotation or scaling option becomes visible. If we move even a mm around, the options disappear. This makes it a bit time consuming to rotate the bones.

It is ok for now but for future try to add an option where we can select a bone by left click, the rotate scale feature automatically hovers with the rotate icon and binding box.

I mean keep both the options- what is now and the one I mentioned above for few extra bones which are very close by.

The issue here is when we are checking the animation, it is not practical to zoom in every time to rotate the bones, especially when they are intersecting each other or very close to one another

Screenshot attached.

66gfwk.png

3) Timeline is very confusing. We are not really sure, how the time is calculated, is it fps or simply seconds or mseconds.

We can control the speed with play speed scroller, but how do we determine what length the actual animation will be when exported to gif or png sequence or imported into a game engine.

4) I tried exporting few gif images and the files size was going over 2 mb (maybe something to do with the HD size of my graphics). If we bring the HD size into Scirra or Unity, can I scale it down in the game engine or should I scale it down before in spriter only?

Anyone who has used animestudio or flash before, can grasp spriter very easily and it is really looking good.

Share this post


Link to post
Share on other sites
I tried exporting few gif images and the files size was going over 2 mb (maybe something to do with the HD size of my graphics). If we bring the HD size into Scirra or Unity…

The main reason to use Spriter is to not have to export frames of the animations to your game engine of choice. It's when you use the animations directly in the game engine that it becomes a really interesting tool.

Share this post


Link to post
Share on other sites
I tried exporting few gif images and the files size was going over 2 mb (maybe something to do with the HD size of my graphics). If we bring the HD size into Scirra or Unity…

The main reason to use Spriter is to not have to export frames of the animations to your game engine of choice. It's when you use the animations directly in the game engine that it becomes a really interesting tool.

I know that but I have to give my clients other options as well, especially who do not use unity or construct2. I am creating these especially for game assets packs.

Hopefully in future plugins for all of the game engines will be ready but currently spriter supports only these 2 main game engines.

Share this post


Link to post
Share on other sites

I am not sure if these are features that have already been suggested, and if so, I apologize, I'm sure one day I will read all 40 pages in this thread but not quite today.

After trying the free version of spriter for a day or two I was convinced and bought the pro version.

I have continued messing around a little bit and checked the forums out,and have had many ideas about animations that would be fun to make and that I might find useful in my game project.

Several features sprung to mind that I think would be neat, if possible.

I have no idea if these would be considered extraneous, a lot of code (too much) to implement, or too niche-oriented or some other reason its not feasible, practical or possible, or goes beyond the scope of spriter, or perhaps some are already planned or have been thought of by others.

Another possibility is that some of the things I might just might already be implemented or at least be far easier to too than is worth making it a feature.

At the very least I would hope somebody might get a fresh idea for a new animation.

Anyways here goes:

1. Instead of onion-skinning the sprites only, allow the user to select whether to show sprites only, bones only, or both in the onion skin.

2. Allow a sprite to have a 'no-draw' zone or even it's own 'canvas' that if a part of it were to pass beyond a certain point that it would not be displayed there.

Alternative: Allow an object (or another sprite) to be created (think 'mask') that would block some/all sprites set behind it in z-order (even where this mask has transparent pixels.)

Secondly, instead of simple blocking the sprite past a certain x or y coordinate for instance, one could select between that and using a different image.

Reasoning: There is a large amount of interesting things one could do in an animation with this feature.

- Pull a tall rabbit out of a short hat

- Have something rise from a dimensional portal

- Cartoon effects like peeking out from behind a thin tree or other object even though the char is too wide to hide behind it in reality.

- Open a rolled up parchment

- Turn on a lightsaber. Ok this one is really easy to do with only two images of course (rounded endpiece and multiples instance of the shaft portion), but it would trim the .scml file down a bit.

- Felix's Bag/Mary Poppins' bag. Same concept, making something tall come from something it shouldn't be able to.

-Have a char walk behind something translucent where for instance part of his leg is covered but not the whole thing and seeing the character through the curtain would make him either darker, blurry, a different color etc. You could then have those parts of the character that Are obscured use different sprites.

The possibilities are endless.

3. Allow a mode that creates a sort of pseudo3d effect where one would set the perspective and spriter could decide where to foreshorten the body parts, and when an object crossed the perspective, and a different 'face' could be shown.

eg: A character has his arms held straight out and started spinning. If spriter knew when to switch images for body parts it would be a lot less work to create many animations.

This above all else I might suggest as a feature edition is probably the least likely to see light, as even I know it might be far too much of a hassle to implement, and also accomplishable with a 3d animation program much much more easily.

4. Allow a sprite to be a parent to another sprite, such that the child sprite could only paint on its parents non-transparent pixels. Would be good for various graphic effects.

5. Allow all the pivot points to be displayed or hidden at will as you can do with bones and sprites.

Also perhaps (though not sure how useful this would be) allowing a pivot point for a sprite to be set at its parent bone's coordinates?

6. After seeing the papagayo (sp?) preview for the new release, I remembered seeing a similar feature in a 3d program, allowing you to dynamically adjust a character's facial expression with facial recognition through a webcam. Perhaps something similar is possible in 2d.

7. Have a ability to show the animation frame by frame or in small n-frame chunks as an alternative to playback.

I am sure you guys are always busy concocting various things for spriter but I figured a little public brainstorm never hurt anyone.

Hope at the very least I haven't completely bored anyone with my wall of text, and that at least one of my 'suggestions' is considering interesting xD

EDIT: I would like to say that even without any additional features, Spriter is definitely one of my favourite programs I have had in my uhmm, toolbelt. Keep up the great work guys. :P

Share this post


Link to post
Share on other sites

Hi,

* Would be nice to have a way of optionally locking pivot points so they will not be changed at any point by error. This would help in some engines where pivot points can not be changed (neither tweened easily) in runtime. When I say locking pivot points I could say locking anything, that would be nice too (ie. prohibit locking the rotation / translation of sprites if you want to ensure any movement is performed through bones)

* Would be nice to have a "compact scml / scon" option. There are redundant info, for example when a timeline do not change in all the animation, I think its pointless to keep repeating the same key over and over. I manually trim the exceed of keys, I could develop a tool for doing this but it would be nice if Spriter optionally could compact the output.

Share this post


Link to post
Share on other sites

i wanna look in spriter the animations mask.

for blend 2 o more animations in one.

for example run with out weapon, and the pose of the arms with the weapon, to create the run with weapon animation.

Share this post


Link to post
Share on other sites

I realize I've not yet received any feedback on the quality (or lack there-of) of my previous suggestions, and in reality since my post I realize many of those suggestions are probably short-sighted and perhaps unnecessary.

However, I have others. (No guarantees that the quality has improved)

* Limitations on things like rotation (aka joint-range limits for an example)

This is something that is mainly useful for things like humanoids for instance.

Being able to manually set a max extent for various things such as rotation or x or y values of sprites or bones would allow you to do things like force a foot to remain on the ground while you move the rest of the body, or prevent your character from bending his/her/its elbow/knee etc too far and might result in an easier time in making animations by having the constraints do much of the tweaking you might normally have to do manually. These options could also remain local to the actual spriter data, as once the animation is completed, they could become irrelevant.

EDIT: I do feel silly sometimes when I realize my enthusiasm sometimes precedes my investigative powers. It seems that at least to some degree, in spriter pro at least, this is implemented already though not to the full extent I have described. IK Locking Will manage this in certain instances.

* Multiple layers to spriter projects

Imagine a boss who is many times wider than a character fighting it. If the .scmls all had layers you could define then the boss' arm closest to the foreground would be able to pass all the way in front of the character and allow the boss to grab the character with both arms (the one in the back being behind the characters entire set of layers)

Also, one could have swords literally stab someone in the gut, rather than fly in front of them, for instance.

One other neat thing one could do with this is create object that orbit the character by changing layers. This could also be done with z-order, but with layers, would allow these objects to orbit any other entities in the same scene as well.

*along with character maps, how about palette switches?

*I notice there is a button to reload all images, which presumably would update changes to files.

Is there a way to have a smart directory, so if a new file gets created in your project folder it will automatically show up in spriter? Or if not a smart directory, a 'Refresh directory contents' button would work.

Share this post


Link to post
Share on other sites

I'd like to request a feature that sounds simple but I'm not sure how it would implement since it requires an engine running Box2D or something.

It would be awesome if you could set bones with a check box that sets tem to have Physics On/Off. You would be able to put pieces of clothes, hair or dangly objects on your character.

Share this post


Link to post
Share on other sites

The list continues.

I have just downloaded Spriter b11 and have discovered that something hasn't changed that I expected might have.

Perhaps it was by design... but at any rate:

When using onion skins, the first keyframe (perhaps only if that keyframe is at time entry 0) will not show up even though I dragged the red onion skin 'object/highlighted region' (for lack of a better term) far to the left of the 0 time entry.

I think it should show any keyframe you have highlighted, not just keyframes the onion skin 'object's endpoint is past.

I have not checked whether this behaviour applies to any keyframe the onion skins' endpoint lies exactly on or if it just the time entry at 0, but I'm sure that wouldn't be too difficult to check.

Could simply be a change from '<' to '<=' that would 'fix' this.

Another thing is I think it would be neat if when you right-click any object, be it in the canvas or the palette or the z-order widgets, that more options would be present than the 4 currently available (Show all, hide selected, unlock all, lock selected).

A more context sensitive menu would be of use.

As an example, some options in this context menu could be doing things right at the coordinate of the canvas you clicked, such as:

'Create Action Point here.', 'Insert [highlighted object in palette] here.', 'Insert [highlighted object in palette with default pivot point here.]', 'Change selected sprite to skin.' (and vice-versa), 'Flip selected object(s) horizontally/vertically', 'Delete [object]' etc.

A third thing I'd like to see is a more fully-realized onion skin mode (toggleable between standard and full behaviour) where even the tweened frames would show up in the onion, at different transparancy levels to denote distance of the frame from current frame in the timeline, somewhat like how flash does it.

Another thing that might be useful is the ability to (while using fullchain constraint IK) is to have rotation disabled for one or more bones in said chain, so you could have for instance the foot rotate, the hip rotate, the pelvis rotate, but force the knee to maintain its orientation relative to its child and parent (and thus the upper and lower leg sprites would maintain the same relative orientation).

I am sure as always, many of my suggestions are overcomplicated or pipedreamish, but I love to dream so I'm ok with that.

Cheers.

Share this post


Link to post
Share on other sites

Will you have this kind of feature soon? I saw in a video that you have something that looked like a bicep flexing...

How about being able to turn a solid leg with a foot into a 3 point bone system like this dino monster?

]

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...