A bit of background info:
So, I've been watching the SC2mapster forums/news posts since the ability to publish map editing. I have dinked around with the map editor in the past for War3/FT/SC/BW/. Usually I find that the built in functions are insufficient for the ideas that I have and I typically get bored once it comes down to any type of custom scripting/defining my own built-in functions - I figure if I'm going to write code in some specific language (even as basic as script can be) that I might as well just use a better programming language/etc.
However, with SC 2, it seems the map development has had a significant overhaul and a massive amount of new features have been implemented. Since I am no artist, it appeals to me greatly to develop "maps" for SC 2.
My project: (SUBJECT TO CHANGE)
Currently I am working on creating a TRADITIONAL rpg; this being said, it will feature;
a fully functioning custom menu, multiple characters interchangeable in story and battle, armor/weapon sets visible on character current equipment, a 'decent' (lets be honest, its not gonna be FF7/10/13/XenoGears/Chrono Trigger/ETC) story, implementation of community ideas (SEE:http://www.sc2mapster.com/maps/train-system/; http://forums.sc2mapster.com/development/project-workplace/2511-reaper-sidescroller/), a unique use of HP/MANA/ENERGY/CLASS/STATS/ETC (ALL USUAL + SOME MODS TO TRADITIONAL RPG VALUES), character development, and of course - awesome mini games.
MY REAL PLAN:
Yes, 'my project', is what I would love to develop and distribute - Currently I work 38+ hours a week and also have a life, so it will take a significant amount of time to complete. That being said, here's what I have in the past 2 weeks I've been working on it + some commentary on how I've implemented each system;
Main Menu System (usually 'called' when on the 'world map')
Battle/Camera System (this is pretty much junk, I've barely worked on it/implemented my own custom features)
Implementation of the Main Menu System:
This took more time to figure out how to properly accomplish, than it did to actually assemble the menu.
Currently, there are 2 characters that can be moved around in 3 possible slots. However, if I simply "turned on" (modified variables), for the other chars to display, 90% of the coding would be done and shown (i.e. 6 chars with 3 slots + a "reserve" section, would be shown).
HOW I DID IT: So, the way I implemented this system was by using 100% and absolutely 100% dialogs. This new feature is amazing and completely annoying at the same time.
small background info: TO MY KNOWLEDGE - there are basically 2 ways to display "CUSTOM" (I.E. ANY X,Y, POSITION I WANT) 2D TEXT on screen; Use 2D text that displays "in game", or 2D text that displays through dialogs. With 'in game' 2d text, it is a pain in the ass, - I.E. my "MENU" should display no matter where the camera is, where the char is, etc, at the usual locations THE VIEWABLE SCREEN. I'd have to always move the camera to some location, or have the menu move with the current camera position, in order to have my menu display - which is not optimal. With dialogs, it is ALSO a pain in the ass, if one wants to create text at a x,y position, the only features available are; Button (this works, but is limited (50 MAX BUTTONS AT A TIME)/Unassigned Dialog (which is useless, cause if you destroy all dialogs (turn them off), GG). Another annoyance with buttons; in order to have those display as text - they must always have their "background" turned off, and their "hover" turned off ( SET THE TEXTURE TO "BLANK). So basically, the entire menu is created with SCREEN DIALOG IMAGES, and BUTTON DIALOGS. I don't take advantage of creating any type of "loop" system, as it's just an annoyance to govern that at the moment, and I find it easier to call, or disable/enable trigger, depending on values of cursor location (i.e. the RIGHT FACING arrow).
So back to 'HOW I DID IT' - Basically, Screen images govern all the icons/images/etc and each are assigned a unique value. Based on parameters such as; WHAT CHARACTERS IN MY PARTY, THEIR LVL, THEIR XP, THEIR HP, MANA/ETC, the UI is created. Such as; WHAT CHARS ARE IN MY PARTY (ARRAY) (1) = 0, THAT MEANS CHAR # 1 IS NOT IN MY PARTY, if WHAT CHARS ARE IN MY PARTY (ARRAY) (1)=1, then CHAR # 1 is IN the party/etc/etc. So, the menu is designed around this type of logic.
The battle system, well thats real simple (just boss bar labels atm - I currently am developing a custom 'boss bar' that will implement the same type of UI featured in the 'MAIN MENU' system).
Anyways, this thread was created to simply hear some reaction from the community, showcase some of my talent (maybe another project could entice me to work for them (FOR FREE OF COURSE), maybe inspire map editors, showcase SC 2 possibilities, and to see if anyone would also like to help me with this project/offer some more efficient solutions to my implementations.
THE PROJECT SOURCE IS OPEN TO ALL AND AVAILABLE UPON A SIMPLE PERSONAL MESSAGE.
Thanks for reading this erratic/somewhat logical post (I've had about 6 Sierra Nevada's, YUP).
With dialogs, it is ALSO a pain in the ass, if one wants to create text at a x,y position, the only features available are; Button (this works, but is limited (50 MAX BUTTONS AT A TIME)/Unassigned Dialog (which is useless, cause if you destroy all dialogs (turn them off), GG).
you can create as many buttons as you want, you are using screen buttons under the UI category witch you should never use because those display for every player (unless you intend to have a static button available at all times for players). you need to use the dialog button and embed the button in your dialog box. If you intend for this system to have more than one player you will need to re-work it.
oh also you need to create a dialog for each player with their own array assignments. and the buttons on those dialog boxes with their own array assignments or you are going to have players opening and closing the same dialog box on each others screen. You should also destroy these boxes instead of hiding them for 2 reasons, memory (you are limited by 2.5megs) and if any information updates on the dialogs you need to re-create it so that updated information is reflected in the dialog. so make a function that creates the players dialog and another that destroys it to simulate open/close.
Yes, I have seen your UI and I think it does look really nice - there is however 1 important difference between our implementations.
The RPG I am developing relies on keyboard input (since there is obv lag with these functions, the game is being designed for a stand-alone 1 player RPG "TRADITIONAL"). I am am assuming (since I could not find any other function), that you remove your menu by destroying all the dialogs, and call them back up by using the "create dialog" (no assigned value) function?
This is what I initially did, but I found an inherit problem with that when having a screen image (like my cursor 'the right facing arrow on the menu').
Basically, the only way I could find to hide the menu was to "destroy all dialogs" - however, the only way you can "create" a dialog with a unique value is to "display"
Hense, the loop fails because when the menu is called back for a 2nd time, it can't display the cursor (it needs a unique value in order to be moved) since the dialogs have been destroyed when it was initially closed - Which is why I have to have unique values/hide each button for this type of input.
So, I might be confused, but I am fairly certain that you can't "create" a dialog box that has an individual characteristic to it - and you can't "hide" all dialogs.
Lemme know your thoughts, thanks for the input too btw!
I created my own functions to destroy the dialogs and re-create them. if you want it to loop the dialogs back open do not destroy them re-open the with the show/hide dialog in the dialog section of the functions. and this is a viable IU with just show/hiding if its only for 1 player. Otherwise you have to create custom functions to re-create the menu every time to player click the menu button and destroys the menu when the player closes the menu.
Again, the problem with the "show/hide" dialog is you can only specify certain dialogs, not "all" - how would I do "Hide all dialogs?" - only options I can find are last created/etc.
make a global variable that keeps count of now many dialogs you have open and loop through them to close them all. here is an example of how i open and close my main menu
GameMenu-Show/HideMainMenuEventsDialog-AnyDialogItemisClickedbyPlayerAnyPlayerLocalVariablesi=0<Integer>x=0<Integer>ConditionsOrConditionsGameMenu-MainMenuButton[(Triggeringplayer)] == (Used dialog item)
Actions
General - If (Conditions) then do (Actions) else do (Actions)
If
Game Menu - Visible[(Triggeringplayer)] == true
Then
Variable - Set Game Menu - Visible[(Triggeringplayer)] = false
Variable - Set Game Menu - Crystarium Open[(Triggeringplayer)] = false
General - Repeat (Actions) Game Menu - Number of dialogs times
Actions
Dialog - Destroy Game Menu - Dialog[(Triggeringplayer)][i]
Variable - Modify i: + 1
General - Repeat (Actions) 36 times
Actions
Dialog - Hide Crystarium - Dialog[(Triggeringplayer)][x] for (Player group((Triggering player)))
Variable - Modify x: + 1
Else
Variable - Set Game Menu - Visible[(Triggeringplayer)] = true
Game Menu - Generate Main Menu((Triggering player), 1500, 1100, 30, 50, Top Left, 100, Hide, No File)
Dialog - Show Game Menu - Dialog[(Triggeringplayer)][i] for (Player group((Triggering player)))
Just out of curostiy why create/destroy, as you mentioned you can hide, but it seems your saying that you can only hide or show a dialog for all players, that should not be true or vaild! In the function to show or hide a dialog under player group there is a conversion function that will convert a player index to a player group, (ie takes a specific player number) using this method you should be able to by all means show and hide a dialog for a specific player and not all instead of having to dynamicly destroy/re-create a dialog for a player each time. (though theres nothing wrong with that method ethier) I will admit I havn't had a chance to test it personaly in a multiplayer game, but from what I seen from this and using a simple paramater or varible to hold the player index should make it a very simple task and should work. (after all this isn't war3 anymore!) Just some info.
I don't see why you have to destroy dialogs either, you can just hide them and it will still update whatever is on it if you modify the labels/buttons.
I don't think you should assume that the keyboard lag is insurmountable, it's just the same lag that applies to every player input on Battle.net right now. It won't be perfect but it'll be playable when the Battle.net lag is fixed. If you're making this to be reused by other developers it should definitely handle multiplayer properly.
why everybody thinks you have to create a dialog 16 times to make it usable in multiplayer?
you NEVER need a dialog or dialog button array because of mp.
why everybody thinks you have to create a dialog 16 times to make it usable in multiplayer?
you NEVER need a dialog or dialog button array because of mp.
I disagree everyone on my map has to have their own dialog boxes because they are different, and constantly displaying different buttons and information, the party system is a perfect example if you have 6 different parties in a game you cant just create 1 dialog and show/hide it because a) the information about the parties would never be accurate and b) you would see information based on whoever last updated the dialog. also when constantly creating and destroying dialogs to keep them updated with information you do need to array them because if player 1 creates his dialog and assignes your non-arrayed variable to his button it works fine but if player 2 opens his dialog that button variable now gets assigned to his button on his dialog and player 1's button is now useless.
Based on your comment i would assume you have never made your own advanced custom UI that is playable by more than 1 person or you have a single dialog box that is static that never gets changed and you are just showing and hiding it for a single person.
It is VERY difficult to make a custom UI that is constantly changed based on player information and the game state, not to mention time consuming.
sry but thats just wrong.
you only need one dialog and can change it like you want for every player.
personally i never needed a dialog array. and i got some custom ui working ~
when you test your UI with more than 1 player and it fails horribly you can post your apology here because what you are talking about flat out does not work. Video or it did not happen.
it is totally clear that you really DON'T need to make arrays for different players as mille said.
i also coded my working custom UI without any arrays because of different players.
that's why those UI functions aren't global but player based.
perhaps you already use for "All" players - but then you really need arrays which is senseless. xD
the thing with destroying a dialog is also very funny because you don't need to destroy a dialog if you just want to hide it for some players or just for a single player.^^
when you test your UI with more than 1 player and it fails horribly you can post your apology here because what you are talking about flat out does not work. Video or it did not happen.
chill, no need to get rude, i just want to help you and others who didnt figure it out yet.
if you create every dialog/dialog item as an array you will waste a lot of memory, and its really not necessary. if you want i can post some example code later.
A bit of background info: So, I've been watching the SC2mapster forums/news posts since the ability to publish map editing. I have dinked around with the map editor in the past for War3/FT/SC/BW/. Usually I find that the built in functions are insufficient for the ideas that I have and I typically get bored once it comes down to any type of custom scripting/defining my own built-in functions - I figure if I'm going to write code in some specific language (even as basic as script can be) that I might as well just use a better programming language/etc.
However, with SC 2, it seems the map development has had a significant overhaul and a massive amount of new features have been implemented. Since I am no artist, it appeals to me greatly to develop "maps" for SC 2.
My project: (SUBJECT TO CHANGE)
Currently I am working on creating a TRADITIONAL rpg; this being said, it will feature;
a fully functioning custom menu, multiple characters interchangeable in story and battle, armor/weapon sets visible on character current equipment, a 'decent' (lets be honest, its not gonna be FF7/10/13/XenoGears/Chrono Trigger/ETC) story, implementation of community ideas (SEE:http://www.sc2mapster.com/maps/train-system/; http://forums.sc2mapster.com/development/project-workplace/2511-reaper-sidescroller/), a unique use of HP/MANA/ENERGY/CLASS/STATS/ETC (ALL USUAL + SOME MODS TO TRADITIONAL RPG VALUES), character development, and of course - awesome mini games.
MY REAL PLAN: Yes, 'my project', is what I would love to develop and distribute - Currently I work 38+ hours a week and also have a life, so it will take a significant amount of time to complete. That being said, here's what I have in the past 2 weeks I've been working on it + some commentary on how I've implemented each system;
Implementation of the Main Menu System:
This took more time to figure out how to properly accomplish, than it did to actually assemble the menu.
Currently, there are 2 characters that can be moved around in 3 possible slots. However, if I simply "turned on" (modified variables), for the other chars to display, 90% of the coding would be done and shown (i.e. 6 chars with 3 slots + a "reserve" section, would be shown).
HOW I DID IT: So, the way I implemented this system was by using 100% and absolutely 100% dialogs. This new feature is amazing and completely annoying at the same time.
small background info: TO MY KNOWLEDGE - there are basically 2 ways to display "CUSTOM" (I.E. ANY X,Y, POSITION I WANT) 2D TEXT on screen; Use 2D text that displays "in game", or 2D text that displays through dialogs. With 'in game' 2d text, it is a pain in the ass, - I.E. my "MENU" should display no matter where the camera is, where the char is, etc, at the usual locations THE VIEWABLE SCREEN. I'd have to always move the camera to some location, or have the menu move with the current camera position, in order to have my menu display - which is not optimal. With dialogs, it is ALSO a pain in the ass, if one wants to create text at a x,y position, the only features available are; Button (this works, but is limited (50 MAX BUTTONS AT A TIME)/Unassigned Dialog (which is useless, cause if you destroy all dialogs (turn them off), GG). Another annoyance with buttons; in order to have those display as text - they must always have their "background" turned off, and their "hover" turned off ( SET THE TEXTURE TO "BLANK). So basically, the entire menu is created with SCREEN DIALOG IMAGES, and BUTTON DIALOGS. I don't take advantage of creating any type of "loop" system, as it's just an annoyance to govern that at the moment, and I find it easier to call, or disable/enable trigger, depending on values of cursor location (i.e. the RIGHT FACING arrow).
So back to 'HOW I DID IT' - Basically, Screen images govern all the icons/images/etc and each are assigned a unique value. Based on parameters such as; WHAT CHARACTERS IN MY PARTY, THEIR LVL, THEIR XP, THEIR HP, MANA/ETC, the UI is created. Such as; WHAT CHARS ARE IN MY PARTY (ARRAY) (1) = 0, THAT MEANS CHAR # 1 IS NOT IN MY PARTY, if WHAT CHARS ARE IN MY PARTY (ARRAY) (1)=1, then CHAR # 1 is IN the party/etc/etc. So, the menu is designed around this type of logic.
The battle system, well thats real simple (just boss bar labels atm - I currently am developing a custom 'boss bar' that will implement the same type of UI featured in the 'MAIN MENU' system).
Anyways, this thread was created to simply hear some reaction from the community, showcase some of my talent (maybe another project could entice me to work for them (FOR FREE OF COURSE), maybe inspire map editors, showcase SC 2 possibilities, and to see if anyone would also like to help me with this project/offer some more efficient solutions to my implementations.
THE PROJECT SOURCE IS OPEN TO ALL AND AVAILABLE UPON A SIMPLE PERSONAL MESSAGE.
Thanks for reading this erratic/somewhat logical post (I've had about 6 Sierra Nevada's, YUP).
CHEERS
nice work i am also in the process of creating a complete custom ui. It's looking good.
you can create as many buttons as you want, you are using screen buttons under the UI category witch you should never use because those display for every player (unless you intend to have a static button available at all times for players). you need to use the dialog button and embed the button in your dialog box. If you intend for this system to have more than one player you will need to re-work it.
also, you can create 2d test anywhere on the dialog box using the (label) function under the dialog category and here is a good list of different fonts.
http://static.sc2mapster.com/content/attachments/3/164/3ICE_s_SC2_Styles.jpg
Here is an example of my UI:
http://forums.sc2mapster.com/development/project-workplace/1546-final-fantasy-13-open-rpg/#posts
@Pandaros_Brewmaster: Go
oh also you need to create a dialog for each player with their own array assignments. and the buttons on those dialog boxes with their own array assignments or you are going to have players opening and closing the same dialog box on each others screen. You should also destroy these boxes instead of hiding them for 2 reasons, memory (you are limited by 2.5megs) and if any information updates on the dialogs you need to re-create it so that updated information is reflected in the dialog. so make a function that creates the players dialog and another that destroys it to simulate open/close.
Yes, I have seen your UI and I think it does look really nice - there is however 1 important difference between our implementations.
The RPG I am developing relies on keyboard input (since there is obv lag with these functions, the game is being designed for a stand-alone 1 player RPG "TRADITIONAL"). I am am assuming (since I could not find any other function), that you remove your menu by destroying all the dialogs, and call them back up by using the "create dialog" (no assigned value) function?
This is what I initially did, but I found an inherit problem with that when having a screen image (like my cursor 'the right facing arrow on the menu').
Basically, the only way I could find to hide the menu was to "destroy all dialogs" - however, the only way you can "create" a dialog with a unique value is to "display"
Hense, the loop fails because when the menu is called back for a 2nd time, it can't display the cursor (it needs a unique value in order to be moved) since the dialogs have been destroyed when it was initially closed - Which is why I have to have unique values/hide each button for this type of input.
So, I might be confused, but I am fairly certain that you can't "create" a dialog box that has an individual characteristic to it - and you can't "hide" all dialogs.
Lemme know your thoughts, thanks for the input too btw!
I created my own functions to destroy the dialogs and re-create them. if you want it to loop the dialogs back open do not destroy them re-open the with the show/hide dialog in the dialog section of the functions. and this is a viable IU with just show/hiding if its only for 1 player. Otherwise you have to create custom functions to re-create the menu every time to player click the menu button and destroys the menu when the player closes the menu.
Again, the problem with the "show/hide" dialog is you can only specify certain dialogs, not "all" - how would I do "Hide all dialogs?" - only options I can find are last created/etc.
make a global variable that keeps count of now many dialogs you have open and loop through them to close them all. here is an example of how i open and close my main menu
Hmm, do you think it would be possible to get a copy of your map in order to check this out?
I'm basically a bit confused on the functions you have defined;
Are you using data tables to store these values, or local/global variables?
i am not distributing the map, the functions are my own custom ones that generate the different menus.
any everything is stored in variables.
Your map looks really nice. I'd love to see play Final Fantasy like maps :)
Anyway, you don't have to quote the full text of what the other just say. The post is right before yours :p
Just out of curostiy why create/destroy, as you mentioned you can hide, but it seems your saying that you can only hide or show a dialog for all players, that should not be true or vaild! In the function to show or hide a dialog under player group there is a conversion function that will convert a player index to a player group, (ie takes a specific player number) using this method you should be able to by all means show and hide a dialog for a specific player and not all instead of having to dynamicly destroy/re-create a dialog for a player each time. (though theres nothing wrong with that method ethier) I will admit I havn't had a chance to test it personaly in a multiplayer game, but from what I seen from this and using a simple paramater or varible to hold the player index should make it a very simple task and should work. (after all this isn't war3 anymore!) Just some info.
I don't see why you have to destroy dialogs either, you can just hide them and it will still update whatever is on it if you modify the labels/buttons.
Here's your basic show/hide game UI for a player. I've tested it and it works with user created dialogs without them popping up on another screen.
This is awesome.
I don't think you should assume that the keyboard lag is insurmountable, it's just the same lag that applies to every player input on Battle.net right now. It won't be perfect but it'll be playable when the Battle.net lag is fixed. If you're making this to be reused by other developers it should definitely handle multiplayer properly.
why everybody thinks you have to create a dialog 16 times to make it usable in multiplayer?
you NEVER need a dialog or dialog button array because of mp.
I disagree everyone on my map has to have their own dialog boxes because they are different, and constantly displaying different buttons and information, the party system is a perfect example if you have 6 different parties in a game you cant just create 1 dialog and show/hide it because a) the information about the parties would never be accurate and b) you would see information based on whoever last updated the dialog. also when constantly creating and destroying dialogs to keep them updated with information you do need to array them because if player 1 creates his dialog and assignes your non-arrayed variable to his button it works fine but if player 2 opens his dialog that button variable now gets assigned to his button on his dialog and player 1's button is now useless.
Based on your comment i would assume you have never made your own advanced custom UI that is playable by more than 1 person or you have a single dialog box that is static that never gets changed and you are just showing and hiding it for a single person.
It is VERY difficult to make a custom UI that is constantly changed based on player information and the game state, not to mention time consuming.
sry but thats just wrong.
you only need one dialog and can change it like you want for every player.
personally i never needed a dialog array. and i got some custom ui working ~
when you test your UI with more than 1 player and it fails horribly you can post your apology here because what you are talking about flat out does not work. Video or it did not happen.
hiho,
@NeoDeathXp: you made my day.^^
it is totally clear that you really DON'T need to make arrays for different players as mille said. i also coded my working custom UI without any arrays because of different players. that's why those UI functions aren't global but player based. perhaps you already use for "All" players - but then you really need arrays which is senseless. xD
the thing with destroying a dialog is also very funny because you don't need to destroy a dialog if you just want to hide it for some players or just for a single player.^^
Robbepop
chill, no need to get rude, i just want to help you and others who didnt figure it out yet.
if you create every dialog/dialog item as an array you will waste a lot of memory, and its really not necessary. if you want i can post some example code later.
greez