playMaker

Author Topic: Let get some "Options" functionality built.  (Read 8585 times)

Red

  • Hero Member
  • *****
  • Posts: 563
Let get some "Options" functionality built.
« on: August 10, 2013, 10:34:08 AM »
A lot of us seem to be more interested in building our games and how they play... and that itself is a very good thing because it shows we have the drive and the passion.

However, when it comes to the little things such as options, that's where we seem to come up against a brick wall. Thing is, a well designed options system can make or break a game's success because if you can't tweak the graphics or sound or controls, you're usually going to get a less-than-optimal gameplay experience.

So, I'd like to start a discussion thread where we can talk about what and how to make a good options menu system.

for simplicity I think that the best option is not to go over how to harness the GUI systems to make it a reality, more to control the function so we can wrap our own GUI system around it.

So, any takers? Let's get to talking because this is something that can really help.

I'm going to snag the first comment to put up a list of features to work on and also give a link to the post where it's discussed as well as a way to track what is done and what needs to be done still.

The end result I'd like to see us come together to collaborate on would be a package that could be on the Wiki page with a rundown of how to install it, how to configure it and how to wrap a GUI System around it... and I think it should be free for anyone that wishes to use it either stock or with customization.
« Last Edit: August 10, 2013, 10:46:38 AM by Red »

Red

  • Hero Member
  • *****
  • Posts: 563
Re: Let get some "Options" functionality built.
« Reply #1 on: August 10, 2013, 10:34:17 AM »
Table of Contents

Visual:
  • Resolution
  • Shadows
  • Textures
  • GUI Scale
  • Resolution
  • Texture quality
  • Windowed mode
  • Post-effects: Bloom (pro only)
  • Post-effects: Blur (pro only)

Audio:
  • SFX volume
  • Music volume
  • Voice volume
  • Audio style (Mono, Stereo, 5.1, 7.1, etc)
  • Audio filtering on/off (pro only)

Controls:
  • Configure Key Bindings
  • Mouse Sensitivity
(If you have a suggestion on what you'd like to see added, leave a comment.)

This is intended to be a team effort... as such, these resources and practices are not to be sold on their own... use them in your own game if you will but do not package up the techniques and systems and sell them on their own. This is meant to be a free resource for anyone looking for them.[/list]
« Last Edit: August 16, 2013, 05:45:34 PM by Red »

escpodgames

  • Hero Member
  • *****
  • Posts: 687
    • Assets
Re: Let get some "Options" functionality built.
« Reply #2 on: August 10, 2013, 07:29:59 PM »
I have been thinking about this for a while now, but from a full game wrapper rather than just the options. In my current game I have a manager gameobject that handles a lot of the functions of my game ie a UI_Manager - controls screens changing, resolutions etc.

Rather than start at the options it might be good to 'design' a universal game setup that we can all work towards.

I vote for a Manager system! every scene has the manager gameobject and every sub manager is a new gameobject parented to that with the name and then "_Manager"

Currently I'm hard at work on a "Social_Manager" that fingers crossed can just be imported into a scene and the variables set to your app (as well as facebook/twitter setup). Would be great to have the above options also do the same.

Suggested managers that need group design

-Input_manager - handles all inputs and sends message to other managers
-UI_Manager (should work with most UI systems :S)

Other ideas
- Control scheme
- LOD levels (used for quality)
- Languages?
« Last Edit: August 10, 2013, 10:11:33 PM by LampRabbit »

Red

  • Hero Member
  • *****
  • Posts: 563
Re: Let get some "Options" functionality built.
« Reply #3 on: August 10, 2013, 09:25:15 PM »
Hmm, I actually like that idea... that way there can be a lot of modularity to it so that if someone only wanted the volume controls, they can grab that.

So, for the interface, each system which would be it's own game object is built to be compact and contained... but with a thread you can use to feed that into the parent object which (if i'm reading this correctly) would have all the values you'd need to access right there and available to be grabbed by whatever GUI system you wanted to use, correct?

escpodgames

  • Hero Member
  • *****
  • Posts: 687
    • Assets
Re: Let get some "Options" functionality built.
« Reply #4 on: August 10, 2013, 10:10:24 PM »
UI and Input is a little more complex as it tends to be rather custom built (Main menu, options, boosts, results, grandmas underwear) But if the structure is setup for the main ones (main menu, options) its just a matter of copying the same method.

My current UI/Input system uses tags so it could be use for most GUI systems out there (I'm guessing) But it gets rather involved having to setup a tag per input and then tagging a gameobject with that tag and layer 'UI' and telling the UI_input system what to do if that tag is registered ... need to try to simplify it a bit (mainly tags are annoying)

But yes, if the input manager registers a "MainMenu_Play" tag it will send an event to another manager ... for example the UI_Manager "UI/PLAY_GAME" This will change the screen (again the way you do that is open for discussion.

If we assume that the input manager exists and just fires off events to other managers gameobjects we can start with the options if you like. Also are we focusing on PC? mobile?
« Last Edit: August 10, 2013, 10:13:28 PM by LampRabbit »

Red

  • Hero Member
  • *****
  • Posts: 563
Re: Let get some "Options" functionality built.
« Reply #5 on: August 11, 2013, 02:10:01 PM »
Okay, well, i've been playing around with a system that should help set a screen resolution.

What I was thinking was to set up a system that on start would get the screen resolution and calculate it so as to extract the aspect ratio of the screen itself... so, if the aspect ratio was able to be detected then there could be a collection of arrays that you can select with things like "aspect 5:4" or "aspect 16:10' and in there there would be common selections of screen sizes to choose from.

I think this would be better for the PC/console builds... Since I have no experience with mobile development, i'm not sure what this could be applied to on that side of things.

escpodgames

  • Hero Member
  • *****
  • Posts: 687
    • Assets
Re: Let get some "Options" functionality built.
« Reply #6 on: August 11, 2013, 06:24:49 PM »
PC sounds like the best bet to start with, we could (depends how far we take this) make iOS/Android versions of each manager.

I like the sound of your system so far, post something when its view-able .. ill start thinking about an aspect.

escpodgames

  • Hero Member
  • *****
  • Posts: 687
    • Assets
Re: Let get some "Options" functionality built.
« Reply #7 on: August 11, 2013, 10:21:17 PM »
Have been thinking about the input system and how to remove some of the setup. The main function is button press/release events for UI
Note - I'm not using a GUI system at all, just good old 3D which has its perks.

Current system
Mouse pick - gets gameobjects on the UI layer (need to put input gameobjects on a layer)
An Event is sent if the mouse pick was released while a gameobject on this layer is selected.
Checks the tag of the object and sends it to the correct state to send off an event.... too much setup

Would like to get rid of the tag and use the gameobjects name potentially... and store them in an array hmmm

escpodgames

  • Hero Member
  • *****
  • Posts: 687
    • Assets
Re: Let get some "Options" functionality built.
« Reply #8 on: August 12, 2013, 01:52:12 AM »
The more we can use array maker the better, this way dev's can add as many resolutions as they need/want. Currently I'm doing the same with Gamecenter leaderboards where an array holds the leaderboard ID's and that is all the dev needs to set. The easier it is to add and remove the better without having to change how it works.

Red

  • Hero Member
  • *****
  • Posts: 563
Re: Let get some "Options" functionality built.
« Reply #9 on: August 16, 2013, 05:48:42 PM »
Yes, I am in full agreement with using ArrayMaker... Because you are correct, having a system where you can control it with an array would be far better than having everything hard-coded in.

... And it'd also give me the impetus to get off my arse and learn it. I know, I know... I should have learned it a long time ago but I've kinda dreaded the whole thing since I'm one of those people that learns by doing and not by reading... and I will admit to a personal fault of mine in that it is a bit intimidating. (that is totally on me though and in no way am i suggesting even slightly that it's lacking... it's all on me.)

Though, back on topic... What i'd like to ask is whether all of the sub-actions should be their own item or whether they should all be in one item. Reason i'm wondering is that if the "Visual" system which i've got started now (which is just a new project right at the current moment) could have either but if it has all the bells and whistles, maybe adding in a way to slot them all in as sub-objects of the "visual" holder itself might help... I'm sure a system that will gather the children of the children should help in the gathering phase but having ALL the things might be overkill for someone whom only really wants something like a "toggle full-screen" or "choose resolution."
« Last Edit: August 16, 2013, 05:57:34 PM by Red »

escpodgames

  • Hero Member
  • *****
  • Posts: 687
    • Assets
Re: Let get some "Options" functionality built.
« Reply #10 on: August 16, 2013, 11:06:48 PM »
I guess one thing we have to consider is that the majority of people who use playmaker will need something simple, that is easy to add or remove components (like unity) without having to dig into how it works but just fill in a few variables. Also thinking about the potential of some noob wanting to use it and breaking it ... the less complexity the user has to deal with the better this will be. In saying that, not many people understand arraymaker or have used it, so if we do utilize array maker it should only be a part of the system, and not used in the setup. That could make it harder

I'd suggest if a gameobject is turned on it will take affect, for example -Managers/Options/Visual/Anti aliasing - if turned on it will work, if turned off OR deleted will not work and produce no errors

escpodgames

  • Hero Member
  • *****
  • Posts: 687
    • Assets
Re: Let get some "Options" functionality built.
« Reply #11 on: August 16, 2013, 11:43:41 PM »
I'm keen to help work on this as my next game will be for PC (and maybe IOS/Android) But I wont start full time for a few weeks yet. But I might take a look at Anti-aliasing, might be a good example to start with as its options are rather basic - on/off and amount. (All image effects automatically disable themselves when they can not run on end-users graphics card.)

Also, we would have presets
So the player can pick the standard, good, best style quality options.
« Last Edit: August 17, 2013, 06:59:05 AM by LampRabbit »

escpodgames

  • Hero Member
  • *****
  • Posts: 687
    • Assets
Re: Let get some "Options" functionality built.
« Reply #12 on: August 18, 2013, 07:13:59 PM »
Made a start on the setup -

Manager -> Options -> Graphics -> Anti-aliasing

The Anti-aliasing gameobject fsm sets the anti-aliasing level based on presets of (Very low, low, medium, high, very high) this preset is set on the graphics level while the anti-aliasing can be changed on top of that. so a user can set the general level of graphical quality and then tweak individual aspect if needed. This way the system is always branching down and anything can be removed.
« Last Edit: August 22, 2013, 06:43:46 AM by LampRabbit »

escpodgames

  • Hero Member
  • *****
  • Posts: 687
    • Assets
Re: Let get some "Options" functionality built.
« Reply #13 on: August 23, 2013, 06:08:04 AM »
Looks like it's just you and me! Bought your third person framework (mainly to see how you did the cameras). Started on my third person PC game today, been creating an overview for the game just to get an idea of what it needs and where it goes. Was planning to make it extremely modular so it could be released but i'd have to resolve some setup issues with the input manager before I would do that. Adding a new input in this new system is way easier than my current game (sigh) but I want it to be even easier to add more or change existing inputs (mainly buttons) One thing I'm looking at atm is keyboard selecting of menus as well as mouse clicks or touches (will be optional).

Options menu
Display settings - (Full screen, display resolutions)
Graphics settings - (Preset quality levels)
Audio settings - (SFX volume, Music volume, Voice volume)

Red

  • Hero Member
  • *****
  • Posts: 563
Re: Let get some "Options" functionality built.
« Reply #14 on: August 23, 2013, 03:23:45 PM »
Hey, Wow! Thank you for purchasing the asset pack! (if you ever need help, feel free to contact me.)

To bring an update, i've been working with that "detect aspect ratio" feature I've been trying and it seems that it isn't going to be very good since the data it can go on (resolution) isn't neccessarily related to the actual screen aspect ratio per-se... what I mean by this is that the system i've tried can detect it... but what it returns is pretty much useless since a basic drop-down of screen resolutions is much more appropriate (though i'm sure I could add a "This is a X:Y ratio" but that's more end-user convenience.)