Request Have an option to make skins into seperate characters

Discussion in 'Features' started by A.D.A.M., Jan 2, 2014.

  1. A.D.A.M.

    A.D.A.M. Level 6: Lakitu

    Ok, I'm really late, but this is really bothering me. So I'm play Super Mario Crossover. And I want to do a retro Mario thing, so I want to only play as Mario, Luigi, Peach, and Toad. BUT if I get or lose any power ups as Mario or Luigi, it also effects Toad or Peach. So I'm playing as Luigi, and I die. Then I chose Toad, and I die. If I had an extra Fire Flower with Peach or Mario, I could have two more fire flowers to use.
    The same thing with Pit and Samus.
    The sharing power ups thing is annoying me. It'd be more fun if there was somehow an option to replace characters with the skins of other characters. We already have an option to disable characters and skins.
     
    Frozsoul, Mitewing and Faruga like this.
  2. Rey D

    Rey D Level 12: Super Mod
    Patron

    You die, you lose. That's the rule.
    If you're so annoyed by losing, use cheats or save files.

    The whole goal of skins was to "add characters" without plummeting the game file size with character codes.
     
  3. Mitewing

    Mitewing Level 9: Spike Top

    I think an idea of adding a skin to the character selection HUD is a good idea. This can be saved in the game file. I always thought Proto Man was deserving his own individual slot.
     
    Faruga likes this.
  4. A.D.A.M.

    A.D.A.M. Level 6: Lakitu

    You can still have the same number of characters. Just let me choose to use some different characters.
     
  5. uglyrodent

    uglyrodent Level 9: Spike Top

    Characters take up a lot of space; even if they're exactly the same (say Toad was a separate character who acts exactly like Mario), the code has to be copied and reused for Toad.

    If you did this for every skin, the amount of data used for characters would easily be several times the amount it is right now.

    That's why the skins exist; they let us make new "characters" that share code with the other characters. It saves a shitload of space, even when they have unique quirks. The thing is that by sharing the code, they also share that character's status.
    You may not like it, but it's necessary if you want to have a lot of skins without making the game unplayably big.

    If every skin was treated as a totally separate character, the game would be much, MUCH larger than it is now and nobody wants that. In addition to the massive filesize, things like the character select menu would be so huge and complex that it would be damn near impossible to navigate.
     
    ThomasMink and Rey D like this.
  6. Rey D

    Rey D Level 12: Super Mod
    Patron

    You have 1 red ball, 1 green ball and 1 blue ball in a box.
    You don't want to have the green and blue ones, you let them for other people, so you hide them.
    If you want more red balls, you need to add external red balls, so you add 2 red balls.

    That makes 2 additional balls to the initial 3 ; the green and blue ones didn't disappear just because you hid them.
    Same goes for the game ; additional characters means bigger file. That's how programming works.
     
  7. Frozsoul

    Frozsoul Level 6: Lakitu

    I actually think this request is a very good idea. Aside from not having to share power-ups among the skins of a character, another advantage is that you could finally have multiple "skins" on the same team for survival mode (e.g. Link, Mega Man, and Rokko Chan on a team)

    Rey D and Uglyrodent make a good point about character skins being able to keep the game's file size down. I agree that is probably the most beneficial trait of skins, to allow additional characters without heavily increasing the size of the game. However, I think there's a way to accommodate this request without heavily increasing the size of the game - instead of changing all of the skins to new characters, allow duplicate characters to be added by the player on the character select screen. So for example, if you wanted both ProtoMan and MegaMan as separate characters, you would simply add another MegaMan icon to the character select screen. You could then for example change the skin of the new MegaMan icon to Protoman. This would add minimal additional overhead to the game since you're still re-using an existing character's code - you're just adding another instance of the same character.

    To address Uglyrodent's second point about the selection screen, the game already allows scrolling of skins (a la Megaman skins) so it wouldn't be a stretch to add the same capability to the character selection. But if somehow there was still too much resulting overhead, you could restrict the game to having a maximum number of selectable characters (e.g. 10), but allow duplicates. This request is much easier to accommodate now that characters can already be deselected.
     
    Last edited: Jan 2, 2014
    Urutsune, Faruga and Mitewing like this.
  8. Mitewing

    Mitewing Level 9: Spike Top

    To prevent problems with lag, limit the number of custom character skins slots on the selection screen, plus allow to add additional skins of its own, so Proto Man could take his personal skins with him, for example.
     
  9. Frozsoul

    Frozsoul Level 6: Lakitu

    I'm not sure what you mean. In my example, there would be two Mega Man characters available on the select screen. Each would be able to independently change to any of their Mega Man character skins at any time.
     
    Last edited: Jan 2, 2014
    Urutsune likes this.
  10. uglyrodent

    uglyrodent Level 9: Spike Top

    This would unbalance Survival mode, to be honest. The limit of characters you have available is why it's a challenge; without that you're basically just playing All Characters.

    N-no. I'm sorry but this is exactly what wouldn't work.

    First off, consider that programming this functionality would, in and of itself, increase the game's size. I can't expertly comment on how much, but it would.

    Additionally, the "another instance of the same character" thing is exactly what we're trying to avoid. That is what causes extra data to be necessary. If it's using another character's code, then it will also be using that character's status; exactly the way it is now. But if it's running as a separate character, it needs to be distinct and use a different copy of that code. Even if that code is identical, it's still several more lines of code being loaded.

    I know that skin windows can already be selected, but that's on an entirely different scale. As it is now, the game has ten sections of skins, most of which don't even need to scroll (only a couple of characters need it, and even then it's just one extra row).
    With rows of five (as it is now), we would be dealing with a character select screen more than twenty rows tall. It's a pretty big difference when it comes to actually finding the specific skin you want.

    Restricting it I guess would fix that problem, but then you're counter-acting this feature in the first place. I don't understand what you mean by "allow duplicates".
    EDIT: I see what you meant about duplicates.

    That might work, but I still feel like it wouldn't really be an easy addition. Can't really comment though.
    This much is true, but I doubt it would be a lot easier. The deselection feature just lets you determine whether certain variables-which were already there when this feature was added-show up and whether they can be selected by Random. What you are talking about involves adding upwards of ninety distinct characters, all mushed together on one screen; this is exactly the opposite of the convenience offered by the current skin system.
     
    Rey D likes this.
  11. Frozsoul

    Frozsoul Level 6: Lakitu

    I may have been unclear. If we use my example above, you could say choose Link, Mega Man (Mega Man character skin) and Mega Man (Rokko Chan skin) as your characters. You would still have three characters/lives to lose, and after losing all three characters, it would be game over regardless of your actual lives remaining (i.e. the rules of Survival mode would still be in tact)

    Not sure how this unbalances Survival mode. If you're saying that Survival mode is only balanced if each character is unique, I would respond to that by saying:
    1. We already have Mario and Luigi as separate characters, who are hardly unique from each other
    2. Some character skins are already unique from other skins for the same character (e.g. Proto Man vs. Rokko Chan)

    I agree that this would, in and of itself, increase the game's size. However, I highly doubt it would increase it that much; probably not much more than adding the ability to deselect characters and customize visible skins. For example, in All Characters mode I would imagine the game's engine initially loads all ten characters at the start. To add a few line(s) of code to load another one of those same characters again in the roster is probably not a lot of overhead; though Jay would be best to comment on that.

    You're right that each new character added would add to the game's memory, since it has to track the status of that character separately. However, as mentioned, if you limit the game to having only a maximum number of characters available (e.g. 10, but hopefully a bit more) then I don't see why this would cause a lot of extra data. For example, if I decide to deselect Luigi and have another Samus character available instead, why would that cause a lot of extra data?

    That's true in my example, if (a) the game allow lots of character slots to be available, and (b) the player manually chooses to have that many character slots available. However, a maximum number of character slots would solve this situation, if it's still deemed a problem.

    Here's an example. I disable Luigi as a character. I then add Mega Man as a character. Now my character roster looks like this:

    Example Select Screen 1.PNG

    For the second (newly added) Mega Man character, I hide all skins except Proto Man. Now my roster looks like this:

    Example Select Screen 2.PNG

    Well again, I'm not sure in my solution if the game would allow upwards of eighty new character slots to be added (for a total of ninety selectable characters), there would probably have to be a limit on how many character slots could be added (perhaps even zero, with only substitutions allowed). And again, if the number of characters exceeds 10, they don't have to be mushed together on one screen if scrolling is allowed from the main character menu.

    I don't really see how this goes against the convenience offered by the current skin system. I'm not suggesting to replace the current skin system; I'm only proposing that existing characters can show up as selectable more than once on the character select screen. If the player doesn't want to add any new character slots, they can keep with the current system. But for those who don't want to share power-ups among certain character skins, or want multiple character skins available as separate characters in Survival mode, they could use this option.
     
    Last edited: Jan 2, 2014
    Urutsune and Mitewing like this.
  12. Rey D

    Rey D Level 12: Super Mod
    Patron

    Pretty sure that he isn't anymore. Blaine is the one who knows the code best.
    But I also suppose that Blaine hasn't been working on SMBC stuffs for a short while, so Jay is in the best position, in that regard.

    To my understanding of the current code, the status track is bound to the character's code, with skins being branches of the same char.

    First things first, to allow skins to keep track of seperate status, it would need a seperate mode so it wouldn't interfere with the current system. That's more code for the menu, and I'm not sure how heavy that is.

    As for the actual indie skin system, it would mean an entire new mode where the status track is not bound to the character but each skin having one seperatedly, whether activated or not. I doubt that Flash is flexible enough to allow to "forget" characters and skins when running (otherwise they'd use such feature to run the game more smoothly).

    For clearer explanation, I'll write pseudo codes to illustrate a simplified version of the character select systems:
    Character select:
    if character is Mario:
    :s:have Mush ?: no
    :s:have Fireflower ?: no

    :s:if skin is SMB:
    :s::s:then use SMB Mario graphics
    :s::s:then use SMB music

    :s:if skin is SMB2:
    :s::s:then use SMB2 Mario graphics
    :s::s:then use SMB2 musics

    if character is Mega Man:
    :s:have mush ?: no
    :s:have Super Arm ?: no
    :s:have Metal Blades ?: no
    :s:have Hard Knuckle ?: no

    :s:if skin is Mega Man:
    :s::s:then use MM1 graphics
    :s::s:then use MM1 music

    :s:if character is Rock:
    :s::s:then disable charge shot
    :s::s:then disable slide
    :s::s:then use Rock graphics
    :s::s:then use MM1 music
    Character select:
    if character is Mario:
    :s:if skin is SMB:

    :s::s:have Mush ?: no
    :s::s:have Fireflower ?: no

    :s::s:then use SMB Mario graphics
    :s::s:then use SMB music

    :s:if skin is SMB2:
    :s::s:have Mush ?: no
    :s::s:have Fireflower ?: no

    :s::s:then use SMB2 graphics
    :s::s:then use SMB2 musics


    if character is Mega Man:
    :s:if skin is Mega Man

    :s::s:have mush ?: no
    :s::s:have Super Arm ?: no
    :s::s:have Metal Blades ?: no
    :s::s:have Hard Knuckle ?: no

    :s::s:then use MM1 graphics
    :s::s:then use MM1 music
    :s:if character is Rock:
    :s::s:have mush ?: no
    :s::s:have Super Arm ?: no
    :s::s:have Metal Blades ?: no
    :s::s:have Hard Knuckle ?: no

    :s::s:then disable charge shot
    :s::s:then disable slide
    :s::s:then use Rock graphics
    :s::s:then use MM1 music
    Keep in mind this is a really simple construction meant to explain why it's bigger in the new mode. How bigger and how consequential it could be is out of my knowledge.


    However, it should be noted that for it not to interfere with the current system, it will probably need too much work for Jay to decide to add it himself, as he clearly stated he doesn't want to work on it much.
    I do not discourage discussion, though, as this could come in handy if the source code is ever released, and that the community somehow decides to take over the game.
     
    Last edited: Jan 3, 2014
  13. Frozsoul

    Frozsoul Level 6: Lakitu

    I think you raise a good point. In my thinking I had mistakenly assumed that when characters are disabled they are not loaded in memory; however it's much more likely that all ten characters are initially loaded in memory, and disabling them simply means they unable to be selected. If that is the case, then yes, in my example, every time a new character is added (i.e. each time one of the existing 10 characters is re-added as selectable) it would mean additional loading time and memory requirements for the game.

    However, I'm not sure this means that the game cannot (or should not) allow additional character slots. It all depends on how much memory is required to allow another character. From what I can tell, the only data the game needs to keep track of for each character is:
    • Mushroom status (and Fire Flower status for classic power-up mode)
    • Upgrades (for modern power-up mode)
    • Skin selected
    As Flash is an object-oriented language, I assume this is all that's required to be stored for each new character slot, which would mean very little additional overhead. However, if the game is set up in a way that each new character duplicated would have to redundantly load everything in memory again (e.g. all of the physics coding) then yes, I can see how this would become unfeasible.

    I should also note that my solution above doesn't require any additional coding to accommodate each skin; it only requires a bit of up-front coding to allow additional (duplicate) characters to be added to the select screen.
     
    Urutsune likes this.
  14. Mitewing

    Mitewing Level 9: Spike Top

    Frozsoul's idea is brilliant. Basically they'd be a certain number of custom slots permitted. When you add a character to a custom slot, it copies all the code into it, then with the disable skins option you can change the "new" character to your liking.
     
    Frozsoul likes this.
  15. A.D.A.M.

    A.D.A.M. Level 6: Lakitu

    Well, if this request is impossible, another solution is to do what Super Mario Deluxe Vs Boo did, and have the ability to power up your character before starting a level, by pressing a secret button or something, as a cheat. Or power down your character. You can scroll through Regular>Mushroom>fire flower>regular...
    I don't know how this would work on the other power up system, though.
     
  16. Urutsune

    Urutsune Level 6: Lakitu

    Sigh I am no programer so this is tuff for me throw in anything here. So the game keeps data of the character condition of what powerups and skin it has? What if there is only just an extra separately selectable condition for a character that would be selectable from the character select screen from an extra character icon. Basically the game would keep data of two different condition for just one character, from the character select you would just actually select which condition you want to use. This would give the illusion of an extra duplicate character while in reality there is just one with multiple condition.
    Hope I make sense here...
     
    Frozsoul likes this.
  17. Frozsoul

    Frozsoul Level 6: Lakitu

    Brilliant! So in the case of a duplicate character (say MegaMan), the game would simply track two sets of data (mushroom status, power-ups, skin selected, skins hidden) for Megaman and the data that's saved/loaded depends on which Megaman character you're playing as. Looking again at the example below, the game would store only one MegaMan character even though two appear to be selectable. By adding another MegaMan character (skinned as Protoman below) the game would only need to store additional data specific to the second MegaMan (ProtoMan) rather than adding the overhead of a whole additional character to the game.

    [​IMG]

    While this might involve a bit more programming effort to implement, it would avoid the potentially huge memory required to add many character slots!

    Edit: Perhaps to make this discussion more clear, any of the duplicate characters should be referred to as clones. So in the example above, there is one character (MegaMan skinned as MegaMan) and one clone (Megaman skinned as Protoman) The game only stores the physics, attributes, etc. for one character (Megaman) but has two sets of mushroom, power-ups, skin data (one for Megaman skinned as Megaman, and one for Megaman clone skinned as Protoman)
     
    Last edited: Jan 3, 2014
  18. Mitewing

    Mitewing Level 9: Spike Top

    It shouldn't be too hard to set aside a couple of 'data slots' for cloned characters. These slots can be changed at anytime and be part of any saved game.
     

Share This Page