A Developer's Resource
&
Co..

ZeredaGames

Let's Play!

My Core Project:

Some Background on the project

About The Build:

I'm building a pack of mini-games that I've built and updated over time. I'm in partner with a few people, I'm the main coder and the rest are audio designers, modelers and artists of various types. I've got the A OK's from a few bigger name artist's who are willing to offer Some of their music to our cause, this is Huge!  All they have asked it return was recognition. Well that should be pretty easy to fulfill that goal, but I'd like to take it one step further and get those people more recognized for their work, and their good deeds by mean's of donation upon turn-around. The games currently are not included at this time to the main build as i want to get the base core working first. I know most of the games them selves are working like they should but I have 10 scenes I'm working that are general application scenes not games scenes or games menu scenes. This is what I'm currently working on perfecting. This would include 4 splash screens, a video scene, a click to load scene, a start scene, a loading scene, a scorecard, and a tutorials scene for tutorials I'll be setting up now and later. On the Video Scene it can be skipped by any button or click, and i use it as a screen saver, the click to load scene, only loads the next scene at this time but will be used for checking updates and login before letting player click to play if not already logged in. When clicked, it will load the loading scene instead of next and checks what game selection has been picked. Because we just started the application, the selection should be NotSelected automatically loading the home scene. yes i know forward then backward.. It'll all make sense once complete.

In a little More Detail

If NotSelected & is on the loading scene,  it loads the home scene and continues with its routine until finished letting the scene load behind the loading Panel. I've set it up this way, so i could have different loading screens for different games but still use the same script to do so.. just have a different prefab to load with different hints, Images and other settings for each game type.. if the scene isn't the loading scene when the loading screen manager is awaken it is set to non active after a certain amount of time and reactivated by the MainLevelManager when the player wants to load another scene and is on the loading screen.

If we want to use a different loading screen for another game, then simply just change what string name to load *in the inspector on main game manager of the prefab for the loading screen you want to use All loading screen types have been made into easy to load prefabs. It load's the prefab 1 time on Awake Method, rather then in the update to call all the time. Everything is in a persistent data style, so that objects never go missing from scene to scene to scene. I was getting tired of changing the objects variables directly in code all the time and so made it into prefabs and load them by string name.

What is the home scene for?

On the Home scene each time we get here, it starts an IEnumerator to load the screen saver level after 5 min AKF. if player hits any key or mouse control, it Stops and restarts the IEnumerator. And this only happens if on the home scene otherwise it StopCourentine(AFKTimer()) on scene change before any other line of code is read. This way it only runs this method on repeat on 1 very small scene with not much to load. Any weird hiccups you would have in any other scene by doing this are avoided by killing the Courentine before any other change.. I do return to scene 4 then 5 but never 0,1,2,or 3. Also on the Home Scene, there are buttons to Load the Next scene, open options, an about page, and a quit button. Options are where all the Main settings are managed by the player that the engine can check from and override engines defaults.If the scene is aloud and able, the settings will activate or deactivate by their settings. otherwise set by engine defaults. The about page is simple af, it is where i store/display my permanently stored credits thank your updates and anything to do with partners and or participant's assets packs we used an so forth. The next scene, is a scene that has a bunch of buttons (16 in fact) on a scroll view window. Each button is an image with text of the game name and the text changes color on mouse over and on click. To Be precise, the button component is actually on the text component Not the Parent GameObject, it also play's a sound on click. the button loads and activates a  game object prefab and sets a setting by a string value. The object has a script and depending on selection, loads the resources required and sets them in place. The new things that loaded are a video preview of the game that loops, text for a title, a blurb on the game and 1 or 2 buttons depending on the game type aka Online or Offline games types. each having both a stand alone for testing and offline play and an online mode to connect with other users. The button has 2 methods attached one to set selection and the other to load the loading screen if the check is not a fail. otherwise it simply closes the window panel for now. Would like to add a warning in telling the player what just appends and why it did;t load the scene they specified.

Online Mode:

If the game has an Online Mode, an Online Play and an Offline Play buttons will appear otherwise a simple play button only will show. Each button first Checks if level is unlocked , and if it is, load's the loading scene loading the new L-Screen prefab set by selection/play button, and sets GameSelection Enum on main game manager and does work accordingly.  If game is locked aka paid for game not paid for yet, it display's "You cannot play this game yet!, We're sorry, here is why: " + Reason; When player clicks or hits any key it closes warning. Not much else is set up at this time because i was reading up on multiplayer applications on Unity and learned some sad news, the old way of doing it is going to be removed in 2 years time and a whole new system is being created as i type this. This tells me early on any and all multiplayer parts of my build will require a rewrite at some point. so my main focus is cleaning everything up nicely for a core asset pack until the new release of the new system so i can begin learning it and implementing it into the build thus making it a permanent online game at that point.

More or less in words that's how my engine is working.

Core scripts include:

 1.MainGameManager.cs(2364 Lines of code)
//The main core component check's if anything is missing and adds them to itself as a child. Doesn't Destroy On Load.

 2.MainLevelManager.cs(1667 Lines of code)
//The main script that controls all scene changes of many various types,

 3.LoadingScreenManager.cs(730 Lines of code)
//The Loading screen manager controls all scene changes in pair with the MainLevelManager and display's a loading screen in various way's, such as Changing an image with or without fade, Hints that work similarly, use async or not, control's preset level data for certain things aka my start scenes in all my mini games, and Includes a LoadingScreenMusicManager as-well.

 4.OnSetButtons.cs (1116 Lines of code)
//The OnSetButtons were all removed from  MainGameManager because it was becoming too long

 5.ToggleButtons.cs(372 Lines of code)
//All the ToggleButtons were removed from MainGameManager because it was becoming too long

 6.KeyBindings.cs(1920 Lines of code)
//All Preset KeyCodes for various different things, and is Controlled by an editor window.

 7.OptionsControllerMain.cs(466 Lines of code)
//The main controller for settings across all games types things like full screen, ambient occlusion, depth of field, and so forth. *Note* if it doesn't apply to game type it gets disabled in my settings not unities for most things as of yet, still building in pair with new Unity PostProcessingEffects

 8.PlayerPrefsManager.cs(1600 Lines of code)
//The Save location for all the OptionsController settings Also Encrypts and decrypts PP's if developer wanted to

 9.AmbienceManager.cs(207 Lines of code)
//The Manager that controls a music manager. Not overrides but uses one to change it when needed

 10.SFXManager.cs(200 Lines of code)
//Same As Above

 11.MenuMusicManager.cs(253 Lines of code)
//Same As Above

 12.GameMusicManager.cs(238 Lines of code)
//Same As Above

 13.CreditsManager.cs(190 Lines of code)
//The main component that stores all my credits to helpers and participants of the build project.

there are a lot of other scripts as one would know but these are the main ones I'm focusing on currently.

Other Plans

Incorporate: (Mobile Setting)

- PlayFabs

- Basic Localization for 36 languages

- Facebook Mobile integration

- Google Play Mobile integration

- SimpleIAP modified [Have started not complete]

- InventoryMasterGUI modified [Have started not complete]

- PostProcessing Effects (Make a Manager) [Have started not complete]

- SaveData to location outside of unity both server option and to player PC option

- ProBuilder (Make a button to import in our window)

- ProGrids (Make a button to import in our window)


Incorporate: (Console Setting)

- PlayFabs

- Basic Localization for 36 languages

- PostProcessing Effects (Make a Manager) [Have started not complete]

- SaveData to location outside of unity both server option and to player PC option

- ProBuilder (Make a button to import in our window)

- ProGrids (Make a button to import in our window)

                Presented to you by ZeredaGames & Co.

Current Scripts Displayed:

ZeredaGames.Core

    All codes below are going to be changed and automatically update on here when they do. There are currently errors and many need reviewing. This seems to be the easiest way to do it. I have everything in 1 gist ATM and will change that soon but for an immediate look at what I'm working on have a look below.

Git Hub Description:

"My core scripts ready for review and corrections. All scripts here are subject to change and should probably not be used like they are. They are part of a pack I'm working on for the Unity Asset Store, and will be available for a very small fee upon actual completion. On Completion this public gist will be closed. If you are a coder in the industry, who might be intested in learning more about the project or would like to partake in the project at hand, please contact me through my Facebook project page, @zeredagamesProject."

PS. Since this was so easy to do, I'm going to be setting up all my tutorials in this same sort of format using gist.github. to do so. These will be removed as time goes on, and as the are corrected, new ones will replace these ones, as tutorials and such are built. Each tutorial will have it's own page, and each section of the tutorial will be broken down in sections also. This page here, will be used  for any and all scripts that need further inspection.

Notes:

I know i have definitely over complicated a few things in my scripts for specific reason though. I want all my assets to be clean and super easy to use so when ready to add to the asset store, they don't cause anyone many if any, hoping No issues. Tool tips are a must and visualization and eye appeal in the inspector i Want but more then likely do not need so much. Some of the partners are new to unity but are intrigued by it and would like to start learning more about it. It makes it nice to work with code, when you do not need to open the script to know what each variable is doing and whats going on. At least this is what has been requested of me. At this time this is all that has been done for scenes.



I have stand alone versions already build of a few games others are preset Ideas or future content in courses I'm in, and all can be easily changed and adjusted.

ZeredaGames.Core: The core scripts to any and all my release games. Will be a purchasable pack on the asset store upon completion On the most Resent Version of Unity when released, as I'll be building it and upgrading with each new Unity Version. Learning the new features and adding them in as i see fit.The package on the asset store will consist of 10x pre-made scenes and 13 managers already done and set up for you via various prefabs. There will be 3-6 loading screen prefabs for various types and styles, maybe even more all depends, 1x player controller with option's for Top Down final fantasy/Pokemon style , 3rd person - with 3 camera view presets, first person only option, 2d side-scroller - player follow cam/player controller, 3d driving camera/player controller/ or the choice to not use our player controllers all together. You would just need to tick off on the main game manager that you are not using the player controllers we provide. Any script that call's the player controller will be set to not call it and search for an object tagged "Player" Instead, and all basic info will be passed through via that and serialization. There will be one script for each Manager/Controller and all their various options. I'll then be making custom editors, so when the options are picked via an enum drop down list, only the settings that apply to that option appear in the inspector. Some of the details , mention above are not fully implemented or complete as of yet, but by the time I am Finnish it all will be. Well that's my blurb about this Viewable.

Hope you all are as excited as i am :)

Thamas bell - @ ZeredaGames & Co.