Many questions: Menu, Saving, Credits, Select screen...

mersox

Active member
I think I am only a couple months away from FINALLY completing my TMNT: Rescue-Palooza mod. But there are certain issues that I would like to address/fix and that go beyond my capabilities. I will describe them below in both short and long forms in hopes that you guys know or can offer any suggestions on how to fix them or at least get around them.

Here we go:

1. Linking the mod to a specific version of OpenBOR.

Short version: I want to make sure players use the exact engine I provide with the download, and not another version of OpenBOR.

Long version: OK first of all, I don't really know which build of OpenBOR I have been using. The log doesn't state that for some reason. This is what it says:
OpenBoR v3.0 Build , Compile Date: Dec 19 2014
Updating my mod to the newest engine is not really a solution because:
- Players might use older versions of the engine
- The mod will be outdated once again when a new version of OpenBOR rolls out
I plan to have a huge note at the beginning of the game to strongly suggest let OpenBOR users know which version of OpenBOR to use, but I wonder if there's anything else that I could do about that - a more effective solution. Perhaps "merging" the mod and engine in one single package? This would also help people that don't know how to run the game (yes, I get that question some times).

2. Issues with credits/continues.

Alright this is a big one. I have been having trouble with this issue pretty much always.

Short version: Game allows players to continue/join the game again even after losing all credits. This is a problem.

Long version: I want to disable continues in my game. In levels.txt, I am providing 1 credit:
lives 7
credits 1
noshare 1
But after getting a Game Over, players can press start and reappear in the next level, even when they have no credits left! How can I prevent this? This really ruins the game in my opinion.

3. Getting rid of gamepad enabled/disabled option

Short version: I need to get rid of this option in the Options menu.

Long version: When gamepads are accidentally disabled and the keys have already been assigned, players have no choice but to delete their save file in Windows to be able to use the default keyboard keys again. This is bad because:
- you lose your progress
- it's not intuitive. Even if I explain this in a readme file, it's very cumbersome and confusing.

Please help me get rid of this function.

4. Customizing/streamlining options and menu
Short version: I want to hide some of the options that are not relevant to this mod and/or are confusing to players unfamiliar with modding scene
Long version: I want the certain features, specially one that are grayed out/ disabled, to  be completely absent from the options menu. Now, I could use translation.txt (which is a god send BTW) and replace these sentences with a blank. But it would not only mess up the formatting of the options list, it would also be confusing as players will feel that they are selecting an invisible option. Not to mention I also want to hide information that is not translatable, like stuff in the "load game"screen.

Some options I would like to get rid of:
Sound Options
System Options (in particular "cheats")
Some video options like Brightness and Gamma
And in Load Game screen: Credits (because it always will be 0) and level and stage.

Any ideas?

5. Preventing the game to save in certain levels.
Short version: OpenBOR saves automatically at the start of every level. I want to tweak this feature so it only saves at the start of specific stages in a set.

6. Alt remap issue in select screen

Short version: I want all players to always see the main remap in select screen as a primary option. Alternate palettes should only be accessed by pressing up or down, and should never be shown by default.
Long version: I originally went around this by having each characters have the same basic remap 4 times, which means players have to press down 5 times to reach the alternate palettes. It works... but there could be a better solution out there.


7. Hall of fame.
Is it possible to get rid of this in older versions of OpenBOR. I know it's available in newer version, but I;m curious about the one I am using.

8. Lifescore is not working at all, unless I use "next". Is this normal?
 
My two cents:

1. Linking the mod to a specific version of OpenBOR.
OK first of all, I don't really know which build of OpenBOR I have been using. The log doesn't state that for some reason. This is what it says:
OpenBoR v3.0 Build , Compile Date: Dec 19 2014
Yeah this is something we need to address - we already discussed about it: to identify the builds again.

Right now, the only way to identify it is comparing the compile date with the releases. But I can't find any Dec 2014 release.
So you are using something between OpenBOR v3.0 Build 4086 (Nov 2014)  to OpenBOR v3.0 Build 4107 (Feb 2015).
So some of the bugs you may be facing are tied to that old version. For example, bombs won't fall on holes (this was fixed on a build way after the 4432).

Perhaps "merging" the mod and engine in one single package? This would also help people that don't know how to run the game (yes, I get that question some times).
Personally, I am not a fan of this method - unless you are talking about the Android version, because you can't have multiple versions of OpenBOR installed on the same phone. For windows versions, just make a .ZIP with everything already set (like the PAK in paks folder).

This is what I did - and I have different downloads for different systems.  Its better than having one big distribution file and telling people to copy the .pak. And honestly speaking, if someone can't simply run an .exe file...

I think you can add a splash screen telling about the version.

2. Issues with credits/continues.
Maybe this is an issue related to those old builds. I don't have this issue (at 6330).

3. Getting rid of gamepad enabled/disabled option
4. Customizing/streamlining options and menu

AFAIK this is not possible. And advanced sound settings were removed for the next engine update.

5. Preventing the game to save in certain levels.
Use changeopenborvariatn "nosave"

7. Hall of fame.
Works only after build 4396
"nohof", // don't show hall of fame before gameover (4396+)
But its possible to show a different screen there using script. In Updated.c, you can use the trigger "in_halloffamescreen", detects HALL OF FAME screen to show a picture, play a gif or even display an animated entity.





 
Thanks Ilu for your input. I'm quite bummed that some of the options can't be fixed.

Could someone else please confirm that the credits issue doesn't appear en newer builds? Or better, is it also weird that I am having this issue at all? Maybe I have to add an additional command somewhere?

Ilu, regarding the use of changeopenborvariant "nosave" , I guess I have to add it to the levels where I want to disable the save feature. In that case, do I have to remove it in the levels where I do want to save progress as well? Or is nosave deactivated at the start of each level automatically?
 
Menus are hard coded, even in new builds - there's not much you can do to change them directly. We have plans to add some more flexibility, but it is a very low priority for three main reasons:

1. The coding that powers menus is quite complex, and wired into a lot of other stuff. Messing with it could cause a lot of unforeseen problems.
2. Even though they might not be popular, the menus as-is do their job and don't have any bugs.
3. You can already use script to capture key events and effectively disable options yourself. It's a bit tedious to figure out, but it is most certainly doable.

Short version is yes you can disable menu options, but not with the methods you are hoping for.

DC
 
When scripting it is easy to get carried away and forget the engine can handle a lot of things for you I have done it myself many times.  You can use "nosave" the normal way without script just add it to your level header.

music data/music/cammyhd.ogg
#frontpanel data/levels/forest/st01/f02.png
background data/levels/forest/st01/b01.png
panel data/levels/forest/st01/f01.png
direction      both
settime        0
notime          1
noslow          1
nosave 1
scrollspeed 2
nopause 1
order aaaaaaaaaaaaaaaaaa
cameratype 1

#-------1

spawn forest_cut
mp 1
coords  510 195
at      0

And obviously 1=on or don't save and 0=off or do save.
 
msmalik681 said:
When scripting it is easy to get carried away and forget the engine can handle a lot of things for you I have done it myself many times.  You can use "nosave" the normal way without script just add it to your level header.

O Ilusionista said:
Oh Malik is right  - you won't need script for that.
Sorry, I am used to always rely on scripts first - which isn't always the best thing to do.

Thanks Malik! And for the record... I already tried using script. So embarassing.
It didn't work which is why I decided to asked here. I was using cansave instead of nosave.
But now it works fine without script :)


Damon Caskey said:
3. You can already use script to capture key events and effectively disable options yourself. It's a bit tedious to figure out, but it is most certainly doable.

DC, would you happen to have an example of this? Has this been accomplished before?
At the very least I want to disable the option of disabling gamepads.


****************************************************
****************************************************
****************************************************

Continuing with my "credits" issue, allow me to provide more information.

The issue comes up only in multiplayer (as far as I know), in two different ways:

CASE 1
* Player dies during level and HUD shows "game over". They can't respawn at this stage.
* Next stage is the map screen. Defeated player still can't join back in, even when this is a level in which players can join
* Next comes character selection screen, and in here defeated player CAN return, will all his lifes restored.

So, in "normal" gameplay, players can return only in char selection screen (select.txt)

CASE 2:
* Loading a saved game. Players that were defeated before saving, can join anytime even in map level.
So, in loaded savestated, players can join in any stage that doesn't have nojoin 1.

What the heck?
To reiterate, I want to prevent defeated players from return at any moment. No continues :)

This is how my select.txt looks like:


background data/bgs/select.gif
colourselect 1


allowselect leo mike don raph splin april irma casey usagi M_HEAD geng fugi muck aska h_head mona rock traag gran tora shogun meca slash grnd dbag lhead c_dome tokka rahzar tatsu armag



And in levels.txt:

SET STORY

lives 7
credits 1
cansave  2
noshare 1
nosame 1
continuescore 200000


Perhaps my update.c is the problem? It affects the select screen (on purpose, to allow for character unlocking):

void main()
{// Update script for locking certain player
//    drawstring(220,130,3, getindexedvar(0));
//    drawstring(220,150,3, getindexedvar(1));

    if(openborvariant("in_selectscreen")==1){
      int models_cached = openborvariant("models_cached");
      int i = 0;
      int MONA = getglobalvar("mona");
int APRIL = getglobalvar("april");
int USAGI = getglobalvar("usagi");
int TORA = getglobalvar("tora");
int MECA = getglobalvar("meca");
int SLASH = getglobalvar("slash");
int GRND = getglobalvar("grnd");
int DBAG = getglobalvar("dbag");

int FUGI = getglobalvar("fugi");
int H_HEAD = getglobalvar("h_head");
int MUCK = getglobalvar("muck");
int c_dome = getglobalvar("c_dome");
int ROCK = getglobalvar("rock");
int tokka = getglobalvar("tokka");

int IRMA = getglobalvar("IRMA");
int armag = getglobalvar("armag");
int SPLIN = getglobalvar("SPLIN");
int tatsu = getglobalvar("tatsu");
int shogun = getglobalvar("shogun");
int geng = getglobalvar("geng");
int lhead = getglobalvar("lhead");
int ASKA = getglobalvar("ASKA");
int traag = getglobalvar("traag");
int gran = getglobalvar("gran");
int rahzar = getglobalvar("rahzar");

      for( i = 0; i < models_cached; ++i ) {
        char model = getmodelproperty(i,2);

        if( model == "MONA" && MONA != 1 ) {
            changemodelproperty(i,4,0);
           
        }else if( model == "APRIL" && APRIL != 1 ) {
            changemodelproperty(i,4,0);
           
        }else if( model == "USAGI" && USAGI != 1 ) {
            changemodelproperty(i,4,0);
           
        }else if( model == "TORA" && TORA != 1 ) {
            changemodelproperty(i,4,0);
           
        }else if( model == "meca" && MECA != 1 ) {
            changemodelproperty(i,4,0);
           
        }else if( model == "slash" && SLASH != 1 ) {
            changemodelproperty(i,4,0);
           
        }else if( model == "GRND" && GRND != 1 ) {
            changemodelproperty(i,4,0);
           
        }else if( model == "dbag" && DBAG != 1 ) {
            changemodelproperty(i,4,0);
           
        }else if( model == "FUGI" && FUGI != 1 ) {
            changemodelproperty(i,4,0);
           
        }else if( model == "MUCK" && MUCK != 1 ) {
            changemodelproperty(i,4,0);
           
        }else if( model == "H_HEAD" && H_HEAD != 1 ) {
            changemodelproperty(i,4,0);
           
        }else if( model == "c_dome" && c_dome != 1 ) {
            changemodelproperty(i,4,0);
           
        }else if( model == "tokka" && tokka != 1 ) {
            changemodelproperty(i,4,0);
           
        }else if( model == "ROCK" && ROCK != 1 ) {
            changemodelproperty(i,4,0);

        }else if( model == "IRMA" && IRMA != 1 ) {
            changemodelproperty(i,4,0);

        }else if( model == "armag" && armag != 1 ) {
            changemodelproperty(i,4,0);

        }else if( model == "SPLIN" && SPLIN != 1 ) {
            changemodelproperty(i,4,0);

        }else if( model == "tatsu" && tatsu != 1 ) {
            changemodelproperty(i,4,0);

        }else if( model == "shogun" && shogun != 1 ) {
            changemodelproperty(i,4,0);

        }else if( model == "geng" && geng != 1 ) {
            changemodelproperty(i,4,0);

        }else if( model == "lhead" && lhead != 1 ) {
            changemodelproperty(i,4,0);

        }else if( model == "ASKA" && ASKA != 1 ) {
            changemodelproperty(i,4,0);

        }else if( model == "traag" && traag != 1 ) {
            changemodelproperty(i,4,0);

        }else if( model == "gran" && gran != 1 ) {
            changemodelproperty(i,4,0);

}else if( model == "rahzar" && rahzar != 1 ) {
            changemodelproperty(i,4,0);
           
        }



       

     
      }
    } else if(openborvariant("in_menuscreen")==1){
      setindexedvar(0, NULL());
    }




}

 
mersox said:
DC, would you happen to have an example of this? Has this been accomplished before?
At the very least I want to disable the option of disabling gamepads.

Sorry man, I know how I would do it, but haven't ever bothered because it would be a huge pain and not useful for me.

Basically, you'd have to know exactly where the player is in the menu screen. And the only way to do that is have an internal array that matches up with the menu, or keep track of every command press, and count them against the known menu items. Either way is very tedious, time consuming, and you can't make any mistakes at all or the whole thing falls apart.

But let's say you do all that - you'll then be able to tell when the player has highlighted an item you don't want them changing. The next step is fairly easy. While the unwanted item is highlighted, you cancel incoming key events from anything other than the Up/Down or Escape. That would stop player from changing anything until they moved on to a different item in the menu. There's some variations on the technique depending on how restrictive you want to be, but that's the basic gist.

Or you can just build your own menu from scratch. Obviously that's a whole new level of PITA, but it is an option.

Before Volcanic went rouge on us (still a sad day), his Rocket Viper had some custom menu work in it. It's not exactly what you need since his inserted a difficulty selector before you actually got to the default menu, but it should give you a place to start.

DC
 
O Ilusionista said:
2. Issues with credits/continues.
Maybe this is an issue related to those old builds. I don't have this issue (at 6330).

I finally upgraded to 6330 and the problem persists. Players die in one level, run out of credits, but then they can join in during the next level.

Edit: Problem is also present on  v6510-dev.  Please help!
 
Hey guys, any ideas on how to solve my credits issue? I am close to releasing my game and this is the last thing I have left to fix. It's a big issue in my opinion, so I would love to hear ideas on how to deal with this
 
O Ilusionista said:
I remember dantedevil  was facing this bug too and managed to bypass it by using a continue screen.
Also, it would be good to report this bug at Github

You're right dear friend!
I had to deal with exactly the same type of bug, but fortunately the "Continue" screen can successfully solve the problem.
;)
 
dantedevil said:
O Ilusionista said:
I remember dantedevil  was facing this bug too and managed to bypass it by using a continue screen.
Also, it would be good to report this bug at Github

You're right dear friend!
I had to deal with exactly the same type of bug, but fortunately the "Continue" screen can successfully solve the problem.
;)

Thanks for chiming in. Are you referring to this type of continue screen? http://www.chronocrash.com/forum/index.php?topic=3125.0

EDIT: Doesn't this lead to issues on multiplayer? One player dies and then the game freezes.... doesn't sound ideal. Or maybe I'm not understanding correctly (very likely)
 
mersox Yes, on this post to be exact http://www.chronocrash.com/forum/index.php?topic=3125.msg50921#msg50921
Althought the way Dante uses on his game is a little different an rely (if I am not wrong) on updatescript, which I am not a very fan of.

And yes, the screen will be paused on Muliplayer. But I don't think its that bad.
 
Thanks for the input. I tested it and it works, but not for my game. Because of the character unlocking script I have in my game, I cannot allow players to respawn/continue during a level (otherwise they're able to select characters that haven't been unlocked yet).

Oh well. I'll just lock players from joining in anytime except in the very beginning of the game and call it a day.

EDIT: nah, that doesn't solve the issue because players can still join during the character select screen. Bah.
 
mersox said:
dantedevil said:
O Ilusionista said:
I remember dantedevil  was facing this bug too and managed to bypass it by using a continue screen.
Also, it would be good to report this bug at Github

You're right dear friend!
I had to deal with exactly the same type of bug, but fortunately the "Continue" screen can successfully solve the problem.
;)

Thanks for chiming in. Are you referring to this type of continue screen? http://www.chronocrash.com/forum/index.php?topic=3125.0

EDIT: Doesn't this lead to issues on multiplayer? One player dies and then the game freezes.... doesn't sound ideal. Or maybe I'm not understanding correctly (very likely)


Sorry for the late response my friend, just today I saw your message.

I use the same system of the mod "Dream of Rage".

Using this system everything works correctly, whether in Single Player mode or in Multiplayer mode.  ;)
 
Back
Top Bottom