That thread concerning load problems for sprites made me realized that there's a couple of things in SGDK2 that could be improved I think. I worked with recent versions of SGDK2 for 2 years, so here are the things that annoy me a little:
1- Sorting dropdown lists:
I have a lot of sprites, maps, counters, you name it in my project. I think it was a huge improvement to have all of them sorted in alphabetical order in the project tree. It would be great if these elements were sorted in the same fashion in dropdown lists for rules, tileset counters, etc. My dropdown lists are huge, and I use the letters to get to the right element faster, but since they are not sorted, it's still long to select the right one.
2- Frameset "del" button:
When I create a new frameset, the first thing I do is to give it a name. So I focus the text field, select the "New " part of "New Frameset" and press "del" button. And then "boing!" I get an error because no frames are selected. It would be nice if SGDK2 noticed that I focused the name textbox and not a frame in the frame set to delete.
3- Global Counters can't be lower than 0:
Sometimes, I use global counters to store values of a sprite because I want other sprites to access a single sprite value. For example, the sprites dx or dy. If the sprite is going up or left, I can't store the value, because counters don't go below 0. Since sprites' counter can go below 0 and you don't get an error for storing one property value in another property, it can be confusing.
4- Global counters and sprite counters are integer:
Many values in SGDK2 are floats rather than ints. When I want to store speed, exact location, etc. I have to round or truncate the decimal to get them stored into a counter. I lose precision. It would be nice if counters (both global and sprites) could be stored as floats.
5- Accessing sprites values from another sprite:
It would be great if rules within a sprite could allow access to values of another sprite in the same map. Not easy to do I guess, since at design time, sprite rules don't care about which map they're in, so there's no real clean way to access another sprite. But maybe there could be a "layer" or "map" property into the sprite that would be set to the current "map" or "layer" the sprite is in when activated and then, using this in the sprite rules, a rule could access the property, get the right sprite in the list of sprites of the layer and then reach the desired property. Maybe a difficult feature to implement, but it would be so much easier to make sprites interact. Of course, there must be a lot of exception handling done in this not to crash the game at runtime...
6- Graphic sheet design size:
I know I have big images in my game, but I don't really understand why the graphic sheet prevents to zoom in when the borders of the image can't fit into my screen. It makes it real hard to edit images within SGDK2. On a small laptop screen, it's not pleasant to modify big images if you can't zoom in.
7- Graphic sheet movement of windows:
The graphic sheet consists of 4 sub-windows or palettes: 1 the image you work on, 2 image at normal size, color palette and the graphic sheet navigator. When I load a graphic sheet with big cells, palettes can get out the screen. In relation with report #6
, i have to reduce the zoom, and it seems there is code to replace the palettes in a logical way. But sometimes, the "replace windows" code gets a little erratic and when I want to replace them in a way that suits me best, they go crazy and move out where I don't want them to be. It would be nice if this replace windows code was optional. Maybe a checkbox in the palette window to turn it off. That would be great!
8- Output text that is not debug nor message:
In my game, I want to show text in the menu and some places. There are statistics to show. I can find only 2 ways to output text in SGDK2: via the showmessage (but you get a frame around it and can't really place the text where you want) or via logdebuglabel (but it won't show in release mode and ignores spaces). It would be nice to have a tool to write frameless text, with spaces where you want on the screen.
9- Global counter with dynamic max value:
It would be nice to be able to set the max value of a counter at runtime. I did it in my game (it's a partial class after all), but maybe other people would find this interesting. But why would they want to change the max value of a counter? Well, I use it to show a lifebar. The max amount of life a character has can change during the game. If I set the value to max possible value at the beginning, it can be confusing for the player (why am I always damaged) or give him unwanted clues (I'm still missing life upgrades).
Hum... I can't think of anything else at the moment.
Like I said, these things annoy me, but they aren't showstoppers at all. I think it would make SGDK2 easier and a better experience.
Any one of these upgrades would be a great asset I think.
What do you think?
Thanks a lot!