Search Unity

Games Ghostly Horizon - Multiplayer 3rd-person spellcaster on spherical worlds

Discussion in 'Works In Progress - Archive' started by Schiva, Jul 29, 2017.

  1. Schiva

    Schiva

    Joined:
    Mar 8, 2017
    Posts:
    18
    Ghostly Horizon - Competitive multiplayer in 3rd-person on spherical worlds.
    (In Development)
    This post contains both Video and Pictures.

    My name is Markus and I want to present my game that is in development currently. I hope to get a discussion and conversation going with you guys to make this game as good as it can be.

    Free Beta will be run through Steam during Fall 2017, to get information and participate be sure to follow the game on Steam!

    Steam Page

    www.ghostlyhorizon.com
    IndieDB



    Ghostly Horizon 7.png

    Gameplay:
    Ghostly Horizon aims at intense and thrilling battles with a focus on player-skill and cooperation. Combat feels dangerous and your winning streak can quickly go down the toilet with one wrong move, especially if you don't work together. Gamemodes are not fully set in stone yet, we need to go through alpha-testing before choosing which gamemodes that works the best but we have a few worked out already. You play as either a Ghost or an Ecto (a plasma being), and they battle for domination over the planet.

    Ghostly Horizon 2.png

    World:
    The world in Ghostly Horizon is a round (spherical) planet with completely free and open circumnavigation. There are no borders or restrictions for player-movement. The planet features full day/night cycle with one sun and two moons along with a variety of biomes, including: Desert, leaf-woods, pine-woods, arctic, lakes and more.

    Ghostly Horizon 10.png

    Spells:
    The vision with spells in Ghostly Horizon is that there shouldn't be two spells that work exactly the same. There are many types of spells: Projectile, Bolt, Sprays, Slash, Ray, Instant, Self-targeted. All of these types have a number of spells in them and each one is unique. There are 7 different elements with 4 spells each. A player can have 2 elements active at one time, each element has its own style and which ones the player chooses will alter the playstyle of the player.

    That was just little bit about the game, you can read more about the game on our website: www.ghostlyhorizon.com

    Ghostly Horizon View 1.png

    Tech:
    The game is written in C# and uLink networking library but as of lately uLinks future is very unstable and we are about to start migrating to Forge Networking Remastered which will be an interesting part in the development.
    Trees and rocks are from the asset-store because I am a programmer mainly and the low-poly series there are just stunning! Though I know some 3D-modelling as well and I use blender to create our player characters (Ghosts and Ectos) as well as the planet.

    This video is not official, it is unlisted on YouTube.
    It's more of a proof of concept for you guys here in the Unity Community.

    An official teaser trailer will be done in 1-2 weeks.

    Team:
    Markus Boberg - Game Designer / Programmer / 2D-art / 3D-art

    Ghostly Horizon View 3.png

    I hope to get questions and a discussion going about Ghostly Horizon.

    Best Regards
    Ghostly Horizon
    Markus Boberg - Game Designer / Programmer
     
    Last edited: Oct 9, 2017
  2. Schiva

    Schiva

    Joined:
    Mar 8, 2017
    Posts:
    18
    Development Until Now

    This is a wall of text so here is a TL;DR if you are just here for the pictures and video:
    We talk about multiplayer implementation, spherical worlds and gravity along with some general development flow until now.

    First off:
    Last week Ghostly Horizon went official with Website, Instagram, Facebook and an IndieDB page.
    So far most interaction with the public has been through Instagram. We are hoping to build a community around this game during the fall and winter for a beta Q4 2017 and early access release Q1 2018.



    Now onto the topic of the day, development until now.
    Development has been active since March 8, 2017. Progress has been made in a rapid pace and that is a due to good planning beforehand. When starting out a game-project one need to think about what type of game this will be. First off, Ghostly Horizon is a multiplayer game with authoritative server, therefore all the code from day 1 is written as multiplayer code, and this is a lot different and more difficult than programming a single-player game with the same features. Secondly Ghostly Horizon is set on a planet, a round sphere that is circumnavigation able which makes the game open-world as well (we have no borders or restrictions in movement).

    The first thing done in development was to get different builds running for the server and for the client and have them connect to each other over the network. We also wanted to have different player templates (prefabs) depending on where they are instantiated, Server, Client or Proxy (See explanation below).
    Player Server = Your player on the server.
    Player Client = Your player on your computer.
    Player Proxy = Your player on other players computers.

    This allows us to have a clean code with only the methods needed for that specific role. For example, the proxy version, how you see other players on your computer and how other players see your player on their computer. This gameobject doesn’t need to have any code at all that takes input from your keyboard. And either the client or proxy need to have code that manages the stats (health, stamina and energy) since this is controlled only by the server version of the player and is synced via the network to the client and proxy. A lot of planning and clever programming goes in to what should happen on the server, client and proxy versions of a player.

    Ghostly Horizon 9.png

    The other thing special about Ghostly Horizon is the spherical world. This has many implications for the game and the development. Game engines like Unity3D and Unreal Engine have standard assets and codes that one can use to make development easier, but these are all built with gravitation in one direction, down, since almost all games are made on a flat surface. We therefore had to program our own gravitation code that draws objects towards one point (the center of the planet). We implemented this code on our players along with a code that makes sure they are pointing their heads in the opposite direction of the gravity. And then we went on to create movement for our players and sync that across the network. Movement is dictated by the server and predicted on the client, so the client cannot hack and teleport his character to the other side of the planet because the server is really the one in control, not the client. If the client is in the wrong position the server will make sure that the client snaps back to where he should be, and proxy versions only move where the server tells them to move. Now we have a sphere with gravity and players that can walk around on it and that movement is synced over the network with an authoritative server. We are on our way!

    Ghostly Horizon 11.png

    Next up was a stats system that is controlled by the server. The player has Health, Stamina and Energy and these regenerates automatically. We wanted to implement a stats system before going on to attacks/spells because we wanted to make sure we have a good way of delivering damage and spending energy etc. before we build the massive codes need for all the different spells in Ghostly Horizon. When we were happy with the stats code we went on to just that, started building up a bunch of different codes that we can build spells of.

    In essence we have a code for projectiles and a code for rays. Along with impact code and status effect code (burning, DoT etc.). But with these codes we have a large and diverse system to create hundreds of different spells that are all slightly different in function, depending on how they use gravity, how they impact, how they deal damage, etc. We have slashes, sprays, rays, instants, projectiles, bolts.
    At release we will have 8 different elements with 4 spells in each element, and no spell is exactly like another. (More on spells in a later blogpost though)

    A major thing to solve with spells was gravity again, and trajectory prediction. To aim the spells we use a trajectory line that simulates how a projectile with this speed and gravity will travel and this would not be so complicated with gravity downwards but when the gravity-angle change for each position this made it a bit harder. This just makes the development fun though, with challenges to overcome.

    After this we made a temporary planet model and filled it with trees and rocks. Created a sun, two moons and a full day-night cycle with a homemade dusk and dawn visual code since this is again something that is standard for flat worlds but not spherical ones. (More about the world in a later blogpost)

    Ghostly Horizon 14.png

    When the planet was in place we needed some gameplay, we went for a conquest style gamemode to begin with. This is not set in stone yet, we need to go through alpha testing to figure out exactly the details on what works and is fun with the different gamemodes.

    Ghostly Horizon 16.png

    This has been very broad strokes about the development but we hope it gave some insight into the project and we are very much open for questions about anything!

    Best Regards
    Ghostly Horizon – www.GhostlyHorizon.com
    Markus Boberg - Game Designer / Programmer
     
  3. Schiva

    Schiva

    Joined:
    Mar 8, 2017
    Posts:
    18
    Roadmap until release

    Alpha testing is around the corner. Alpha testing will be performed on an online server. Most internal testing before this have been done in a local network. Focus during alpha is server and client stability. We need to know how many players the server can handle in one game, how much network traffic it takes and how the server is effected by different amounts of players. When does the server start to walk on its knees?



    When alpha is powering on we will focus on some key changes and test them. These changes include a new gravity script that does not require a “Rigidbody” i.e. a gravity code that does not need physics calculations ingame. This is huge for client/server predictability. This gravity code will first of be implemented on projectile spells and when that is working it will be implemented on player characters.

    When player characters no longer need physics calculations to walk around the spherical world the movement will be totally predictable on the clients, which allows us to make the clientside character controller predictions needed to make an instant responding and smooth movement for the players. Currently all movement is done on the server, which makes it take ping-time before you see the movement on you own screen, it feels slightly off.



    When this is done we will do a revamp of all spells. We take input from alpha and alter all spells to balance them. And all spells will be altered visually and sound will be added.

    After this we will focus on a trailer, and the steam-page will be set-up.

    We have a plan of 4 different gameplay mode to be implemented: Conquest, Invasion, Swarm and Team-Deathmatch. We have these planned and the implementation of them is prepared.

    Player characters (Ghosts and Ectos) will get their correct models and players will have the ability to customize their look in several different ways.



    The UI will get an overhaul, by this point we will have a lot of feedback on the GUI / HUD functionality from alpha testing and the final UI can be implemented. We have a UI setup but with temporary graphics currently.

    The whole planet is to be redone, the current one is a quick build of the idea of the gameworld. The final gameworld will be created from all the input during alpha.

    Now it’s time for Beta testing, we launch a bunch of servers worldwide and invite lots of players to fill them up. We run tests on the servers and collect info from the players computer specs. and their ingame performance (graphics options, FPS etc.). Beta will most likely be done through Steam and we will implement more and more Steam functions during beta.

    As a final note, we are talking with Microsoft about releasing on Xbox One.

    Best Regards
    Ghostly Horizon – www.GhostlyHorizon.com
    Markus Boberg - Game Designer / Programmer
     
  4. Schiva

    Schiva

    Joined:
    Mar 8, 2017
    Posts:
    18
    Steam Page and new Trailer!

    Ghostly Horizon is now present on Steam!
    Check it out, follow and add to your Wishlist.

    Steam Store Page:
    http://store.steampowered.com/app/700590/Ghostly_Horizon/

    Free Beta will be run through Steam during Fall 2017, to get information and participate be sure to follow the game on Steam.

    Currently we are focusing on AI-code, Character customization, Sound Effects and UI implementation.

    Here is a Teaser trailer that was released together with the Steam Page.



    Best Regards
    Ghostly Horizon – www.GhostlyHorizon.com
    Markus Boberg - Game Designer / Programmer
     
  5. Schiva

    Schiva

    Joined:
    Mar 8, 2017
    Posts:
    18
    Beta is Incoming

    Ghostly Horizon is aiming at starting Beta Testing in December 2017.

    To join the beta please Follow the game on Steam now.
    You will be able to get a Steam Beta-Key for the game when the time comes, if you follow the game.

    Steam Store Page:
    http://store.steampowered.com/app/700590/Ghostly_Horizon/

    Development before Beta starts:
    Currently we are working on AI, to be able to provide offline and Co-op gameplay. The AI code is 90% complete, we are working on getting a good aim code for the AI right now. AI can patrol a set path, guard a bunch of objectives or explore the planet in search for enemies. If the AI sees a player it goes into combat mode and if the AI loses track of the player it will travel to the last place it knew that the player was and search around that area for a while before going back to its original objective of patrolling, guarding or exploring

    After the AI is done we are implementing a new network sync code that only sync players and AI that are close to each other in-game. This allows us to have more players on a server since not all data needs to be sent to all players (as most games do). We can do this in a good way because the game-world is a round planet.

    When the new net-sync is done we are creating a Character Customization system. The current Ghosts and Ectos in the screenshots and videos are placeholders during Alpha.

    GameModes during beta will be:
    Battle Royale - Free for all PvP with shrinking play-area for intense fighting.
    Conquest - Side-based PvP. Battle over objectives and destroy the enemies home.
    Arena - PvP, Coop, Singleplayer. Fight it out 1v1 or 3v3 in different arenas around the planet.
    Survival - Coop, Singleplayer. The Ectos have invaded, you need to survive and kill as many as possible.

    Here is a video showing the lobby screen (without the UI), a camera that circulates the planet randomly.


    Best Regards
    Markus Boberg - Game Designer / Programmer
    Ghostly Horizon Team
     
  6. Schiva

    Schiva

    Joined:
    Mar 8, 2017
    Posts:
    18
    Update
    So what has been done since last time we updated you guys? Well, a lot to say the least. We have built a complete AI system to include in your upcoming battles, which will be an essential part of the Ghostly Horizon experience. The AI will be able to assume different types of roles in the game including Patrol, Guard, Explore, Linger, Hunt, and Combat.

    We have finished development of the different game modes, which will be next weeks feature that we showcase for you guys. To let you in on an early secret, Ghostly Horizon will feature 4 game modes: Conquest, Battle Royale, Invasion and Survival. More about this next week.

    The game map has gone through a complete makeover now showing Friends, AI, Bosses and Enemy players. Enemies are shown for a few seconds when they take damage and to enable a better co-op experience the map now includes area/biome texts to easier navigate and cooperate with your teammates.

    We have also had some work done on our spells including rebalancing all spells and healing spells, replaced two spells (the game now has Meteor and Thundercloud) as well as made all shields better both in use and looks.

    To finish of this week’s progress report we would like to introduce our feature of the week, which this week is Character customization.

    Feature of the week: Character customization
    In any game you play, you want to be able to customize your character after your own preferences to make it more of your own. Of course, this is possible in Ghostly Horizon. To make your own character more personalized we have included the possibility to change cloths, eyes, crystals, inside glow and more. In below video you can get a inside look on how this is done and what you will be able to do.



    Hope you enjoyed reading about the progress of the game and we can’t tell you how excited we are to soon be able to release the beta and hear what you guys think.

    Best regards,
    Ghostly Horizon Team