Skip to content

Unity game and client code for the Khyron Realm game

License

Notifications You must be signed in to change notification settings

khyron-realm/khyron-realm-game

Repository files navigation


Logo

Khyron Realm - Game

Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. License
  6. References

About The Project

Game

The repository contains the Khyron Realm Game made with Unity using Darkrift 2 Networking.

Built With

Getting Started

Installation

  1. Clone the repo
    git clone https://github.com/khyron-realm/khyron-realm-game.git
  2. Open project in Unity

Usage

More detailes can be found on Wiki

Roadmap

See the open issues for a list of proposed features (and known issues).

Project structure

< PROJECT ROOT >
    |
    |-- Animations                               
    |-- Editor   
    |-- Fonts 
    |-- Materials
    |    | -- Shaders
    |
    |-- Meshes
    |-- Plugins
    |    | -- RainbowAssets
    |
    |-- Prefabs
    |    | -- Buttons
    |    | -- Icons
    |    | -- Robot
    |
    |-- Resources
    |    | -- Blocks
    |    | -- Buttons
    |    | -- IconFolders
    |    | -- Map
    |    | -- Panels
    |    | -- Resources
    |    | -- Robots
    |    | -- UI
    |
    |-- Scenes
    |
    |-- Scriptable Objects
    |    | -- Mine Resources
    |    | -- Player
    |    | -- Prices
    |    | -- Robots
    |
    |-- Scripts
    |    |-- Auxiliary Methods
    |    |    |-- AuxiliaryMethods.cs                   # Auxiliary methods that have universal meaning
    |    |    |-- ObjectPooling.cs                      # Pools objects for different purposes 
    |    |
    |    |-- Bidding   
    |    |   |-- ActivateScanning.cs                    # Activates the scanning procedure and handle inputs 
    |    |    |-- ScanMine.cs                           # It is responsable for discovering one area as user requested
    |    |    |-- StartAuction.cs                       # Start the auction and takes care of time
    |    |
    |    |-- Camera Actions
    |    |    |-- PanPinch.cs                           # Script for moving the camera using touch input 
    |    |    |-- UserTouch.cs                          # Fundamental touch operations simplifiend in methods
    |    |
    |    |-- Canvas
    |    |    |-- CanvasHelper.cs                       # Helps to resize the canvas to fit in safe area of the phone
    |    |
    |    |-- Convert
    |    |    |-- ConvertResources.cs                   # Used for converting resources into energy [Converting floor]
    |    |
    |    |-- GameErrors
    |    |    |-- RaiseGameError.cs                     # Displays on the screen the error that happened {Not enough resources etc}
    |    |
    |    |-- Manager Scripts
    |    |    |-- GameManager                           # Manage game settings during gameplay
    |    |
    |    |-- Mine                      
    |    |    |-- Mine Creation Tools
    |    |        |-- ShapeTheMine.cs                   # Tool used to shape the mine [Only in unity editor used]
    |    |    |-- Values Generation
    |    |        |-- GridGeneratePositions.cs          # Generate blocks for the whole 2d array in the map [Only in unity editor used]
    |    |        |-- GridHiddenValues.cs               # Generate the hidden values for the blocks in the mine
    |    |        |-- GridVisibleValues.cs              # Generate the visible values for the blocks in the mine
    |    |    |-- MineEnergyEstimates.cs                # An estimated price of the mine in energy
    |    |    |-- MineGenerator.cs                      # Generates the mine [Instantiate tilemap]
    |    |    |-- MineTouched.cs                        # Detect if mine is touched and Invokes an event
    |    |    |-- RefreshMineValues.cs                  # Refresh the seeds and coefficients for mine generation
    |    |    |-- ShowMineDetails.cs                    # Shows more buttons and details about the mine [Enter button, refresh button] 
    |    |
    |    |-- Networking
    |    |    |-- Auction
    |    |    |    | -- AuctionRoom.cs                  # Auction room structure
    |    |    |    | -- AuctionManager.cs               # Auction Manager for handling the auction
    |    |    |    | -- Bid.cs                          # Bid structure
    |    |    |    | -- Player.cs                       # Player structure
    |    |    |-- Chat
    |    |    |    | -- ArrayPrefs.cs                   # Array methods  
    |    |    |    | -- ChatGroup.cs                    # Chat group structure
    |    |    |    | -- ChatManager.cs                  # Chat Manager for handling the chat
    |    |    |    | -- ChatMessage.cs                  # Chat message structure
    |    |    |    | -- Filter.cs                       # Chat filter
    |    |    |    | -- MessageType.cs                  # Message type  
    |    |    |-- Friends
    |    |    |    | -- FriendsManager.cs               # Friends Manager for handling friends
    |    |    |-- Headquarters
    |    |    |    | -- BuildTask.cs                    # Build task structure
    |    |    |    | -- HeadquartersManager.cs          # Headquarters Manager for handling hq
    |    |    |    | -- PlayerData.cs                   # Player data structure
    |    |    |    | -- Resource.cs                     # Resource structure
    |    |    |    | -- Robot.cs                        # Robot structure
    |    |    |-- Launcher
    |    |    |    | -- DarkriftServerConnection.cs     # Methods for connecting to the server
    |    |    |    | -- NetworkManager.cs               # Manager for the client connection
    |    |    |    | -- Singleton.cs                    # Singleton class for the network manager
    |    |    |-- Login
    |    |    |    | -- LoginManager.cs                 # Manager for authenticating the user
    |    |    |    | -- Rsa.cs                          # Login types class
    |    |    |    | -- Rsa.cs                          # RSA encryption method
    |    |    |-- Mines
    |    |    |    | -- Mine.cs                         # Mine structure
    |    |    |    | -- MineGenerator.cs                # Mine generator
    |    |    |    | -- MinePlugin.cs                   # Mine Plugin for handling the mines
    |    |    |    | -- MineScan.cs                     # Mine scan structure
    |    |    |    | -- ResourcesData.cs                # Resources data structure
    |    |    |-- MongoDBConnector
    |    |    |    | -- DataLayer.cs                    # Data layer for MongoDB database
    |    |    |    | -- MongoDBPlugin.cs                # MongoDB Plugin for handling MongoDB
    |    |    |-- Tags
    |    |    |    | -- AuctionTags.cs                  # Tags for auction rooms
    |    |    |    | -- ChatTags.cs                     # Tags for game messages
    |    |    |    | -- FriendsTags.cs                  # Tags for login messages
    |    |    |    | -- HeadquartersTags.cs             # Tags for headquarters messages
    |    |    |    | -- LoginTags.cs                    # Tags for login messages
    |    |    |    | -- MineTags.cs                     # Tags for mines
    |    |    |    | -- Tags.cs                         # Tags structure    
    |    |
    |    |-- Panels     
    |    |    |-- BidsDisplayUI.cs                      # Displays the bids in the AuctionScene
    |    |    |-- ChangeScreen.cs                       # Used to change screens in the same scene [HQ -- > Map --> HQ]
    |    |    |-- ClosePanelUsingBackground.cs          # Used to close any panel touching the background [Outside of panel]
    |    |    |-- Confirm.cs                            # Confirmation panel used to make further verification of user decisions 
    |    |    |-- OpenPanel.cs                          # Open the desired panel if gameObject is touched
    |    |    |-- ProgressBar.cs                        # Handle progress bar values and adjust the visuals for it 
    |    |
    |    |-- Pay Operations
    |    |    |-- PayRobots.cs                          # Used to make a transaction or refund regarding robots [Build robot --> pay energy]
    |    |
    |    |-- Robot 
    |    |    |-- DeployRobots.cs                       #
    |    |    |-- HallOfFameInstantiateRobots.cs        # Instantiate panel with robots and
    |    |    |-- RobotManagerUIForMine.cs              # Instantiate buttons in the mine with all trained robots
    |    |    |-- RobotLevelingUp.cs                    # Takes care of robots leveling up
    |    |    |-- RobotManager.cs                       #
    |    |    |-- RobotPlayerProgress.cs                # Struct that store the level and state [lock/unlocked] of the robot
    |    |    |-- RobotsUnlocking.cs                    # Unlocks the robot for user
    |    |
    |    |-- Save
    |    |    |-- Persistent Data Across Scenes
    |    |        |-- GetMineGenerationData.cs          # Static class with data that persist across scenes
    |    |        |-- GetRobotsTrained.cs               # Static class with data that persist across scenes
    |    |        |-- GetTimeTillAuctionEnds.cs         # Static class with data that persist across scenes
    |    |    |-- Serializable Class For Storage Data   
    |    |        |-- MineData.cs                       # Serializable class that have the data about the mine | Used to be save in binary format
    |    |        |-- TimeData.cs                       # Serializable class that have data about the auction time | Used to be save in binary format
    |    |    |-- Values
    |    |        |-- ISaveOperations.cs                # Interface for basic SAVE and LOAD operations of any data
    |    |        |-- MineValues.cs                     #
    |    |        |-- TimeValues.cs                     #
    |    |    |-- SaveSystem.cs                         # Saves and Load data
    |    |
    |    |
    |    |-- Scenes Management                      
    |    |    |-- ChangeScenes.cs                       #
    |    |
    |    |-- Scriptable Objetcts        
    |    |    |-- Mine                     
    |    |        |-- MineResources.cs                  #
    |    |        |-- MineShape.cs                      # Create SO that stores the shape of the mine
    |    |    |-- Player
    |    |        |-- LevelsThresholds.cs               # SO with all the levels threshold in xp for leveling up
    |    |    |-- Resources
    |    |        |-- GameResources.cs                  #
    |    |        |-- PriceToBuildOrUpgrade.cs          # Used for storing the price in resources [4 resources] of any operation
    |    |    |-- Robots
    |    |        |-- Robot.cs                          #
    |    |        |-- RobotLevel.cs                     #
    |    |        |-- StatusRobot.cs                    #
    |    |
    |    |-- Stores
    |    |    |-- ResourcesOperations.cs                # Operations of removing and adding with the resources [all 4]
    |    |    |-- StatBarsOperations.cs                 # Manage values and what is displayed on the stat bars of resources
    |    |    |-- StatsOperaions.cs                     # Manage operations of level and Xp
    |    |    |-- StoreDataPlayerStats.cs               #
    |    |    |-- StoreDaraResources.cs                 #
    |    |    
    |    |-- Tiles Data                        
    |    |    |-- DataOfTile.cs                         #
    |    |    |-- StoreAllTiles.cs                      #
    |    |    |-- TilesRule.cs                          #
    |    |
    |    |-- Timer
    |    |    |-- Timer.cs                              # Keeps track of the time during a process
    |    |
    |    |-- Train
    |    |    |-- BuildRobots.cs                        #
    |    |    |-- BuildRobotsOperations.cs              #
    |    |    |-- RobotsInBuilding.cs                   #
    |    |    |-- RobotsInBuildingOperations.cs         #
    |    |    |-- StoreRobots.cs                        #
    |    |    
    |    |-- Upgrade 
    |    |    |-- UpgradeRobots.cs                      #         
    |
    |-- Sounds
    |-- Tiles
    |-- *********************************************************************************************************************************************

Used Plugins and Software

  1. Rainbow Folders 2
  2. DotWeen
  3. DarkRift Networking 2 - PRO - v2.10.1

License

CC BY-NC-SA 4.0

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

CC BY-NC-SA 4.0

References

  1. Darkrift example Darkrift2_Boilerplate
  2. Project Template adapted from Othneil Drew / Best-README-Template.