Search Unity

Games DOTS Shooter (ECS, C# Job, Burst Compiler) + Havok

Discussion in 'Works In Progress - Archive' started by Uni-Bit-Studio, Aug 26, 2020.

  1. Uni-Bit-Studio

    Uni-Bit-Studio

    Joined:
    Feb 25, 2019
    Posts:
    90
    Dear developers, we would like to share with you the progress of our project. We are very interested in your opinion and would also like you to help us decide what to do next with the project?
    - Release the project yourself
    - Find a publisher
    - Release the project to the assetstore

    Trailer


    Gameplay Video


    Havok performance test


    100x100 AI test


    Overview


    The project uses the latest technology Unity. The main idea is to create a cross-platform shooter that will work optimally on both low-end devices(Android/IOS) and powerful ones(PC, Consoles). At the current stage, we decided to focus on the mobile version.

    Technologies

    Unity 2019.4, Universal Render Pipeline, ECS, C# Job, Burst Compiler, Dots Physics, Havok, Photon Networking.

    Platforms we plan to focus on

    Android, IOS, PC (Steam), Xbox, PlayStation, VR (Oculus Quest, SteamVR).

    Graphics Content

    At the current stage, all graphics are free or from the asset store.

    Project specifications

    Multiplayer. The project uses Photon Unity Networking (PUN2). All functionality was not affected, except for one feature. The Photon Transform View has been rewritten since it does not use DOTS to move objects. The new controller uses IJobParallelForTransform + BurstCompile to synchronize gameobjects, which has very good performance.

    DOTS. All moving objects, all heavy computing, were developed using ECS, C # Job, and BurstCompile. Each animation, movement, or computation has its own JobComponentSystem, and it gave us a very big increase in performance!
    Physics. We use new physics from Unity, DOTS Physics(Havok). And he is very fast. Hundreds of rigid bodies and raycasts can be in the active scene and this does not affect performance.

    Graphics. We decided to use the new Universal Render Pipeline. By using such technology, we have achieved incredible performance. Different levels of quality graphics were created. Each level can be easily configured using UniversalRenderPipelineAsset. All materials and particles are converted to URP.

    Pool system. We use pooling for each instantiated gameobject (Projectile, avatar, impact, weapon, etc). As a result the game has no CPU spikes or memory leak, and runs very smoothly.

    Project Content. Each graphic object is associated with a configurable file. We can easily replace them. Each content group has its own configurable file (weapons, avatars, locations, shells, etc.). Content is divided into platforms. For each platform, you can create your own art pack. For powerful platforms - more realistic, for the rest - more optimized. But not only for graphic content. All gameplay settings can also be their own for each platform.

    Input. The input system is an independent module. You can switch easily in control (Mobile, keyboard + mouse, joystick)

    Gameplay

    GameModes. Now the game has three game modes.
    - Team Mode (Rounds) - a classic team mode, for fans of CounterStrike. The game is divided into rounds, points to the team bring the won round. If you were killed, you spawn at the beginning of the next round. The mode is more suitable for clan games.
    - Team Mode (Score) - a more dynamic version of the team battle. There are no rounds, the players spawn immediately after the score. Points to the team are earned by the players of the enemy team.
    - Death Match - every man for himself. The game ends when the player collects the first N number of kills. The first three leaders are rewarded.

    Artificial Intelligence. Game AI based on Unity NavMesh. There are three difficulty levels. (Easy, Medium, Hard) Each level is configured separately. So you can create new levels of difficulty. The agent is able to search for the enemy, shoot, recharge, strafe, jump. To each level, you can adjust the running speed, frequency and height of the jump, accuracy, shooting speed of the enemy, you can randomize the position

    Game round system. Each level is controlled by a master client. The system can determine the winner of the round, draw, end of the round. Determines if there are enough players to start the round. If not, then a new player is waiting and the round begins.

    Leaderboard. The game leaderboard can save the statistics of each player separately in the same team points. The number of kills, deaths, points, position in the table.

    Pop-ups and chants. The system can determine who killed whom in real-time and suicides. It can detect a double kill, triple kill.

    Weapons System. Each weapon has its own configurable file. You can create new weapons very easily.

    Projectile settings (Move Speed, with or without acceleration, with or without gravity, damage, explode damage, move type - raycast, impulse, force, beam, and others).

    Weapon setting (Shoot type - automatic to one shot, shoot speed, reload time, ammo count and others).

    Spawn Items System. The game has a spawn system of items such as weapons, health, armor. The system is controlled by the master client. Each spawn point is configured separately (Time, list of items).

    Spawn Player System. Each game location has its own respawn points for players, both for the team mode and for the death mode. With each respawn, the player appears at the safest point.

    Jumpers. In a game on location, there are platforms for jumping so that the player can jump higher usually, like in a Quake

    Avatars. You can choose different avatars before the game. In the future, it is planned to add different characteristics for each avatar.

    Other. Autofire, autoaim

    Performance test

    We tested our game on several android devices. Tested under maximum load (10 AI with hundreds of rigidbodies (projectile) and raycasts calculation).

    Samsung Galaxy S6 - 55 - 60 FPS
    Samsung Galaxy S10+ - 60 FPS (Even in ultra quality settings)
    Xiaomi Mi 6 - 60 FPS (Even in ultra quality settings)
    Huawei P10 Lite - 52 - 60 FPS
    Lenovo Vibe P1 - 58 - 60 FPS
     
  2. khos

    khos

    Joined:
    May 10, 2016
    Posts:
    1,487
    Yes pls!
     
  3. RoyalCoder

    RoyalCoder

    Joined:
    Oct 4, 2013
    Posts:
    301
    This will be much appreciated I think will be an amazing asset a must to have one!
     
  4. Raeion

    Raeion

    Joined:
    Jul 5, 2016
    Posts:
    38
    Well I would like it as an asset so I can buy :D great work !
     
    Mark_01 likes this.
  5. SenseEater

    SenseEater

    Joined:
    Nov 28, 2014
    Posts:
    84
    Would love to grab this on the asset store! Looks good.