Community Project | Cardinal Menu System Instructions, Help, and Discussion



  • About:

    Here is the game menu from our game, Cardinal Fall, for use by the community.
    This project packages a combination of other community projects to create a single, easy to implement menu system.
    We will do our best to update the project with new engine releases.

    License:

    This Menu System is free to use under the Creative Commons Attribution 4.0 International License. CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
    3rd Party Assets are discussed in the credits section below.
    More up to date information is available in the Readme.

    Screenshots:

    (To view screenshots, click the spoiler button below.)
    :::
    0_1470957328119_FriendsList.PNG
    0_1470957340083_HostGame.PNG
    0_1470957382025_ServerList.PNG
    :::

    Video:

    https://www.youtube.com/watch?v=6kugnmNxYcE

    Features:

    • Server Browser (With Steam and LAN support)
    • Client Internet and LAN Hosting Menu
    • Steam Friends List With Avatars
    • Pervasive Graphics Settings
    • Player Control Mapping
    • Controller Support
    • Game Settings
    • Credits Page

    Download:

    Metahusk Downloads: Cardinal Menu

    Getting Started:

    (To read the directions, click the spoiler button below.)
    :::

    1. Create a Project Directory folder in your Unreal 4 Projects Directory.

    Example Structure: C:\Users\User\Documents\Unreal Projects\Directory_Name

    1. Download the project or Clone the development files to your Unreal 4 Projects Directory using your favorite mercurial client.

    Hg Repository URL: http://repositories.metahusk.com/menu.hg

    Common Mercurial Clients: SourceTree, TortoiseHG, or SmartGitHG

    1. Download and Install Microsoft's Visual Studio Community 2015 for Windows Desktop

    Visual Studio Community 2015

    4a. Navigate to \Your_Directory\Plugins and extract the files in VictoryPlugin(newest-version).zip to the plugins directory into a folder called VictoryPlugin

    Plugins Directory Structure: \Your_Directory\Plugins\VictoryPlugin"plugin files"

    4b. ONLY UE4.14 and PREVIOUS: Navigate to \Your_Directory\Plugins and extract the files in MainMenuLib(newest-version).zip to the plugins directory into a folder called MainMenuLib

    Plugins Directory Structure: \Your_Directory\Plugins\MainMenuLib"plugin files"

    4c. Navigate to \Your_Directory\Plugins and extract the files in AdvancedSessions(newest-version).zip to the plugins directory into a folder called AdvancedSessions

    Plugins Directory Structure: \Your_Directory\Plugins\AdvancedSessions"plugin files"

    4d. Navigate to \Your_Directory\Plugins and extract the files in LoadingScreen-master(newest-version).zip to the plugins directory into a folder called LoadingScreen-master

    Plugins Directory Structure: \Your_Directory\Plugins\LoadingScreen-master"plugin files"

    4e. Navigate to \Your_Directory\Plugins and extract the files in GamepadUMGPlugin(newest-version).zip to the plugins directory into a folder called GamepadUMGPlugin

    Plugins Directory Structure: \Your_Directory\Plugins\GamepadUMGPlugin"plugin files"

    1. Execute cardinal.uproject and click Yes to Recompile Project Modules.
      0_1470810235398_rebuild.PNG

    2. Enable The Web Browser Plugin at Edit -> Plugins -> Widgets -> Web Browser
      0_1470814419201_browser.PNG

    3. Navigate to the MainMenu Blueprints folder at \Cardinal\MainMenu\Blueprints
      0_1470810249459_enumerations.PNG

    4. Insert your GameModes into Enum_GameModes, list your available map names to Enum_Maps, and set your server host's preferred maximum number of players to Enum_NumberOfPlayers using the supplied pattern. For skipped number of player options, use the enumeration's integer. For the number of players option you'd like available, spell out the integer. For example: 0, 1, Three will leave a server with a maximum of "Three Players." (Please note the game modes and player limits are not implemented in the actual project. This is up to the end user to implement.)
      0_1470810298370_gamemodes.PNG
      0_1470810343718_maps.PNG
      0_1470810359503_players.PNG

    5. Enjoy :)
      NOTE: To utilize Steam, you must launch as a "Standalone Game" or utilize a packaged build both with Steam running.
      0_1470810240172_play.PNG
      :::

    How To Import Cardinal Menu To Your Project:

    (To read the directions, click the spoiler button below.)
    :::

    1. Open your project's Project Directory folder in windows explorer.

    Example Structure: C:\Users\User\Documents\Unreal Projects\Project_Name

    1. Download the project files from the webpage.

    Download URL: metahusk.com/cardinal-menu/

    1. Convert your project to a C++ project if it's a Blueprint Only project.

    Convert a BP/Content Project to a C++ Project

    1. Navigate to \Your_Directory\Content and extract the \CardinalMenu\Content\Cardinal and \CardinalMenu\Content\ThirdPersonExample and \CardinalMenu\Content\Movies into your project's content folder.

    2. Navigate to \Your_Directory and extract the \CardinalMenu\Plugins folder into your project's root directory.

    6a. Navigate to \Your_Directory\Plugins and extract the files in VictoryPlugin(newest-version).zip to the plugins directory into a folder called VictoryPlugin

    Plugins Directory Structure: \Your_Directory\Plugins\VictoryPlugin"plugin files"

    6b. ONLY UE4.14 and PREVIOUS: Navigate to \Your_Directory\Plugins and extract the files in MainMenuLib(newest-version).zip to the plugins directory into a folder called MainMenuLib

    Plugins Directory Structure: \Your_Directory\Plugins\MainMenuLib"plugin files"

    6c. Navigate to \Your_Directory\Plugins and extract the files in AdvancedSessions(newest-version).zip to the plugins directory into a folder called AdvancedSessions

    Plugins Directory Structure: \Your_Directory\Plugins\AdvancedSessions"plugin files"

    6d. Navigate to \Your_Directory\Plugins and extract the files in LoadingScreen-master(newest-version).zip to the plugins directory into a folder called LoadingScreen-master

    Plugins Directory Structure: \Your_Directory\Plugins\LoadingScreen-master"plugin files"

    6e. Navigate to \Your_Directory\Plugins and extract the files in GamepadUMGPlugin(newest-version).zip to the plugins directory into a folder called GamepadUMGPlugin

    Plugins Directory Structure: \Your_Directory\Plugins\GamepadUMGPlugin"plugin files"

    1. Open \CardinalMenu\Source\CardinalMenu.Target.cs and paste bUsesSteam = true; into your \Your_Directory\Source\YourProject.Target.cs like so:

    public class YourProjectTarget : TargetRules
    {
    public YourProjectTarget(TargetInfo Target)
    {
    Type = TargetType.Game;
    bUsesSteam = true;
    }

    1. Open \CardinalMenu\Source\CardinalMenu\CardinalMenu.Build.cs and paste the PublicDependencyModuleNames and PrivateDependencyModuleNames into your \Your_Directory\Source\YourProject\YourProject.Build.cs like so:
     PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore",  "AdvancedSessions", "OnlineSubsystem", "OnlineSubsystemUtils", "Networking", "Sockets", "OnlineSubsystemSteam", "OnlineSubsystemNull", "MoviePlayer" });
    

    NOTE: If UE4.14 or previous, add "MainMenuLib" to PublicDependencyModuleNames

      PrivateDependencyModuleNames.AddRange(new string[] { "OnlineSubsystem", "Sockets", "Networking", "OnlineSubsystemSteam", "OnlineSubsystemNull" });
    
    1. Open \CardinalMenu\Config\DefaultEngine.ini and paste the following into your \Your_Directory\Config\DefaultEngine.ini as shown:

    [/Script/Engine.GameEngine]
    !NetDriverDefinitions=ClearArray
    +NetDriverDefinitions=>(DefName="GameNetDriver",DriverClassName="/Script/OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")

    [OnlineSubsystem]
    DefaultPlatformService=Steam
    PollingIntervalInMs=20
    bHasVoiceEnabled=false

    [OnlineSubsystemSteam]
    bEnabled=true
    SteamDevAppId=480
    GameServerQueryPort=27015
    bRelaunchInSteam=false
    GameVersion=1.0.0.0
    bVACEnabled=1
    bAllowP2PPacketRelay=true
    P2PConnectionTimeout=90

    [/Script/OnlineSubsystemSteam.SteamNetDriver]
    NetConnectionClassName="/Script/OnlineSubsystemSteam.SteamNetConnection"

    [Voice]
    bEnabled=false

    1. Right click on \Your_Directory\YourProject.uproject and select Generate Visual Studio project files.

    2. Open YourProject.sln, in Solution Explorer (typically located on the right) right click on Games and select Build.

    3. Execute cardinal.uproject and click Yes to Recompile Project Modules, if asked.
      0_1470810235398_rebuild.PNG

    4. Open Project Settings and select Maps and Modes. Set Game Default Map and Editor Startup Map to MainMenu. Set Default GameMode to ThirdPersonGameMode. Set the Game Instance Class to BP_GameInstance.

    5. Open the map MainMenu File -> Open Level at /Cardina/Mainmenu/Maps. Under the Blueprints button above the map make sure World Override is set to -> BP_MenuGameMode (should be set)

    15a. Enable The Web Browser Plugin at Edit -> Plugins -> Widgets -> Web Browser
    0_1470814419201_browser.PNG

    15b. UE4.14 or Previous Only Enable MainMenuLib Plugin at Edit -> Plugins -> Other -> MainMenuLib

    15c. Enable Loading Screen Plugin at Edit -> Plugins -> Loading -> Loading Screen

    15d. Enable Advanced Sessions Plugin at Edit -> Plugins -> Advanced Sessions Plugin -> Advanced Sessions

    15e. Enable Online Subsystem Steam Plugin at Edit -> Plugins -> Online Platform -> Online Subsystem Steam

    15f. Enable Gamepad UMG Plugin and Victory Plugin at Edit -> Plugins -> Installed -> Rama

    1. Restart The Editor and click Yes to Recompile Project Modules, if asked.

    2. Set Up LoadingScreen by opening Edit -> Project Settings -> Game -> Loading Screen. Under Startup Screen Uncheck Auto Complete when Loading Completes, Check Movies are Skippable, Uncheck Wait For Manual Stop, Uncheck Show UIOverlay. Go to Movie Paths and add UE4Logo and MetahuskIntro to the array. Under Default Screen Check Auto Complete when Loading Completes, Check Movies are Skippable, Uncheck Wait For Manual Stop, Uncheck Show UIOverlay. Go to Movie Paths and add LoadingRed to the array.

    3. Navigate to the MainMenu Blueprints folder at \Cardinal\MainMenu\Blueprints
      0_1470810249459_enumerations.PNG

    4. Insert your GameModes into Enum_GameModes, list your available map names to Enum_Maps, and set your server host's preferred maximum number of players to Enum_NumberOfPlayers using the supplied pattern. For skipped number of player options, use the enumeration's integer. For the number of players option you'd like available, spell out the integer. For example: 0, 1, Three will leave a server with a maximum of "Three Players." (Please note the game modes and player limits are not implemented in the actual project. This is up to the end user to implement.)
      0_1470810298370_gamemodes.PNG
      0_1470810343718_maps.PNG
      0_1470810359503_players.PNG

    5. Enjoy :)
      NOTE: To utilize Steam, you must launch as a "Standalone Game" or utilize a packaged build both with Steam running.
      0_1470810240172_play.PNG
      :::

    Known Bugs:

    (To view the known bugs, click the spoiler button below.)

    :::

    Bug: Client Returning to "Main Menu" can't join another game.
    Fix: Fixed 08/07/2016 at Changeset - a1943cb579fc

    Bug: The Editor's Play In Viewport option does not stretch the menu title bar all the way to the edge of the screen on some resolutions
    Fix: Use Play In New Editor Window

    Bug: Split screen menu cannot be scaled to overlay on the calling player's screen
    Fix: Unknown, possibly in future engine release

    Bug: Player input control mappings are not in the correct order
    Fix: The engine re-orders inputs, change them to alphabetical order in your DefaultInput.ini

    Bug: Cannot host a session after importing project files
    Fix: Make sure BP_GameInstance is set in your game mode

    Bug: Joining players in PIE spawn as spectators and not pawns
    Fix: Make sure Auto Connect To Servers is not checked under Play -> Advanced Settings -> Multiplayer options
    :::

    Credits:

    Project Credits:
    Metahusk, mordentral, rama, Thaddeus Delude (parvan), The Tune Peddler, ZioYuri78, Nick Darnell

    Cardinal Menu:
    This project was put together by Metahusk using a collection of community content. Please credit everyone listed here and provide a link to our websites.
    (http://metahusk.com)

    Project Blueprints:
    This project’s blueprint files are released under the Creative Commons Attribution 4.0 International License. CC BY 4.0
    Please provide credit where credit is due. You must credit the following people listed below. You can find this information in the project’s readme.
    (https://creativecommons.org/licenses/by/4.0/)

    Main Menu by ZioYuri78:
    The basic menu framework is an adaptation of ZioYuri78’s ‘Main menu and in game menu with basic game, graphics, controls and audio settings.’
    (https://forums.unrealengine.com/showthread.php?103583-C-Blueprint-Main-menu-and-in-game-menu-with-basic-game-graphics-controls-and-audio-settings)

    Online Browser by mordentral:
    The online browser utilizes mordentral’s Advanced Sessions Plugin.
    (https://forums.unrealengine.com/showthread.php?69901-Advanced-Sessions-Plugin)

    Rebindable Keys by rama:
    The key binding system utilizes Rama’s UMG Rebindable Key System, Rebind keys at Runtime.
    (https://forums.unrealengine.com/showthread.php?51449-Full-Project-Rama-s-UMG-Rebindable-Key-System-Rebind-keys-at-Runtime!)

    Background Music by The Tune Peddler:
    The music used in this project is owned by The Tune Peddler. You do not have permission to use the project’s music without agreeing to the terms at The Tune Peddler’s website. As of July 2016, this includes a $5 a month subscription fee.
    (http://thetunepeddler.com/)

    LoadingScreen plugin by Nick Darnell:
    The LoadingScreen plugin was provided by Nick Darnell and was released under The MIT License.
    (https://github.com/ue4plugins/LoadingScreen)

    How To Help:

    Respond to this thread below with your ideas.
    If you have a bug fix, would like to contribute, or expand on this project, please say so.
    We will contact you and grant you commit privileges on the repository.

    How To Donate:

    Our organization is a IRS 501(c)(3) recognized tax exempt nonprofit.
    We will provide written (emailed) donor acknowledgment letters to those who donate $250 or more to our organization as required by the IRS. Our apologies to donors outside of the United States. We will not be able to provide you with any tax benefits for donating to our organization.

    Donation acknowledgment letters will include

    The corporate name and EIN of our organization
    The name of the donor as it appears on PayPal
    The date and ammount of the contribution
    A statement that our organization is a valid 501(c)(3) organization
    An affirmation that no goods or services were provided to the donor
    And information about how your donation was used

    Thank you,
    Donate Through Paypal Here



  • I downloaded this just to see how filters are made but they don't work. I downloaded the demo, put it on 2 computers with steam and friends worked, finding server worked but filters did not. I set filter gamemode to deathmatch and started server on the other computer with gamemode CTF and it was found even through filter.



  • Thanks for reporting the issue. I'm looking into it. I recently added new game modes and changed how that section worked.



  • You caught a bug I missed. Thanks! Mordentral's filters in the AdvancedSessions Plugin do work. I was passing an integer for the radio buttons and it was set to not filter if 0 and filter if 1 but I changed the filters to an array and the integer now passes numbers greater than 1... which means if you clicked radio button int 2 or 3 without pressing "1" it doesn't engage filters. Oops, I'm releasing the fix today. If you find more, let me know.



  • The issue has been fixed in v160811.



  • It doesn't seem like the server lines update the number of players that are in a server, you just set TOTPLAYING to 1 and then it never gets updated. Am I missing something?



  • It doesn't seem like the server lines update the number of players that are in a server, you just set TOTPLAYING to 1 and then it never gets updated. Am I missing something?



  • The logic for the total players has to be put into game state and the Steam session has to be updated. We haven't included that logic as of yet. (Just like level transitions and so on) Basically the online session gets broadcasted once when you create the server and the gamestate never updates it.

    It's not too hard to implement. You just need to count the number of players in your game and update the online session to reflect this every time someone joins and leaves the game.

    We are working on a game right now. When I implement that into our game I will copy the BP nodes into the Cardinal Menu project and share it. It just hasn't been built yet.

    Thanks for trying the project!



  • I should probably mention that in the documentation. I hope to have that feature implemented in a month or so.



  • Thanks Thaddeus, appreciate the explanation. I've been working on my own game myself and tried getting the current players in a server just by dragging a "Get Current Players" function off the find sessions advanced results which works for LAN but always returns as 1 for some reason with Steam. I'll have to try updating it manually like you described above.



  • Thanks Thaddeus, appreciate the explanation. I've been working on my own game myself and tried getting the current players in a server just by dragging a "Get Current Players" function off the find sessions advanced results which works for LAN but always returns as 1 for some reason with Steam. I'll have to try updating it manually like you described above.



  • We just tested 4.13 and the persistent graphics settings need to be reworked. We will probably migrate away from the MainMenuLib plugin. The update may take a while. So far no other bugs have been discovered outside of minor depreciated blueprint functions.



  • We released the project for 4.13 today. I'm not quite sure if the graphics settings will cause issues but so far I've experienced no issues. We will probably slate that fix for the next engine version. Please report any bugs you find.



  • We released a new version. This release includes a simple single player button (as requested), cleans up some of the debug printing to console, and includes a simple map loading video.



  • Why ping steam 9999 ?



  • Guest said in Community Project | Cardinal Menu System Instructions, Help, and Discussion:

    Why ping steam 9999 ?

    There's a bug with the engine that causes that. We are waiting until it's fixed. (Hopefully soon)



  • @Thaddeus-Delude Thanks for the reply



  • The project has been released for Unreal Engine 4.14 today. So far there have been no reported bugs. Please let us know if you find any.



  • Great work! I have been playing around it and works quite well! Out of curiosity, have you gotten this to work for a dedicated server? While i have gotten dedicated servers working in other scenarios ( Null OSS) can't seem to get one to work with Steam.



  • Great work! I have been playing around it and works quite well! Out of curiosity, have you gotten this to work for a dedicated server? While i have gotten dedicated servers working in other scenarios ( Null OSS) can't seem to get one to work with Steam.


 

Looks like your connection to Metahusk Community was lost, please wait while we try to reconnect.