Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. Dismiss Notice

Games [RELEASED] Space Turret: Defense point for Android

Discussion in 'Works In Progress - Archive' started by Kennai, Oct 21, 2019.

?

Rate your overall game experience with Defense Point between 1 (very bad) and 5 (fantastic)

  1. 5

    0 vote(s)
    0.0%
  2. 4

    1 vote(s)
    100.0%
  3. 3

    0 vote(s)
    0.0%
  4. 2

    0 vote(s)
    0.0%
  5. 1

    0 vote(s)
    0.0%
  1. Kennai

    Kennai

    Joined:
    Nov 1, 2018
    Posts:
    27
    Hello! My name is Mike.
    Me and my friend Gabriel are developing a free 3D scifi shooter for android platform. This shooter is something middle between tower defence and space shooter.
    At start it was supposed to be a simple time killer game, where player control sci-fi turret and shoot enemy waves to protect own base. But the longer we worked, the harder the game became! Every thing that we added, was polished so many times... Predict aim system for shooting targets, AI system, campaign level system, save/load, screen transitions, more than 15+ mobile shaders, and etc...
    Simple example is player healthbar. It could be just a bar with some texture. But in our game we wanted some special healthbar (check screens below).
    • 11 unique turrets, 3 ammo types (bullets, rockets & lasers)
    • 5 different types of enemies, including heavy boss
    • Campaign mode or 3 survive modes
    • Survive mode is not just a simple wave spawner. Its a complex system that will track your progress and adopt new waves to keep best game experience for you
    • Player can control up to 3 different turrets and upgrade it in the shop
    • Loading screen with tips & hints
    • Multilanguage support
    • UI can be changed to left handed or right handed
    Trailer


    Link on google play:
    https://play.google.com/store/apps/details?id=com.CrionGames.DefensePoint

    Gameplay



    Loading screen


    Game screenshots




    Player shop


    Player upgrades


    Few loading screenshots that was made with game content




    Link to APK file (have no clue if such links is allowed, will delete if it is forbidden)
    https://en.files.fm/f/6gx2echb

    At this moment we are almost ready to release it, but we need to balance waves, turret's costs and upgrade's costs. Our main goal is to allow player to play it without watching AD after each wave (watching video AD doubles wave resources).
    Currently, campaign is not well balanced and has 2 levels with total 14 waves.
    But survive mode is better balanced.
    I would like to know your opinion about overall concept and survive mode. What to change? What to improve? were you pleased to play? how hard was it?
    Thanks everyone for reading it, waiting your opinion!

    UPD 23.12.2019
    Game is released! :)
     
    Last edited: Dec 23, 2019
  2. Kennai

    Kennai

    Joined:
    Nov 1, 2018
    Posts:
    27
    Added new features (apk link updated)
    -player has a nickname now
    -implemented global scores, each player can check own score and best world score
    -a bit reworked ship models and increased different ship types to 11
    -added save button in menu window
    -updated title in main menu

    in progress
    -add score table for survive mode
    -add overall players score table for all modes

    In long future we plan to add multiplayer mode via WiFi, where up to 3 players can play together. It sounds really cool and should be fun!
    Also it gives possibilities to play via Network with other players, with ranks and etc...

    Global scores is based on awesome asset dreamlo.com
    https://assetstore.unity.com/packag...nstant-leaderboards-and-promocode-system-3862

    score window
     
    Last edited: Oct 24, 2019
  3. Kennai

    Kennai

    Joined:
    Nov 1, 2018
    Posts:
    27
    Added new things (apk updated):
    -reworked reward window, now it shows overall score + round score
    -added window top 100 players scores for each game mode

    next thing is to balance turret costs and upgrade costs, setup proper campaign levels and tests, tests, tests...




    and detailed warp effect with animation
     
  4. Kennai

    Kennai

    Joined:
    Nov 1, 2018
    Posts:
    27
    New update!
    We reworked fighters behaviour and now they behave like a swarm!
    Moreover we greatly improved fighter's perfomance and we can support up to 50 fighters at same time and more!
    Its because fighters is drawed with command Graphics.DrawMeshInstanced

    Fighter swarm video


    Also we balanced turret costs and upgrade costs, and properly setup level 1 with 10 rounds.
    And added rewarded videos

    Link to APK: https://en.files.fm/f/6gx2echb
     
  5. Kennai

    Kennai

    Joined:
    Nov 1, 2018
    Posts:
    27
    This post might be useful for those, who is looking for spawn system and how to store data about levels and rounds.
    Our campaign is using spawn system, based on ScriptableObjects.
    We have few levels. Each level contains 10 rounds. Each level and round is a separate scriptable object.


    What info contains level?
    Each level contains information about localization level name and contains a list of rounds, which is built dinamically.
    Also each level has a folder with same name as level file name. We did it, because our LevelManager will assign all rounds inside folder to a level with same name.


    What info contains round?

    Round contains information about ship level (ship HP, damage, accuracy depends on level, higher level means more strong ship), initial wave index (for test waves) and a list of waves.


    Waves is most important thing in the game, so we tryed to make it very flexible.
    Here is example of wave information


    General info about wave
    Name - wave name in list, we add symbol "+" if wave is spawned with previous wave
    Spawn Wave - condition when Wave should be spawned, possible 4 options
    With prev wave - spawn wave in parralel with previous wave
    After end - spawn wave after previous waves is finished and there is no any ship in space
    After spawn - spawn wave after previous wave has finished to spawn ships
    After ships left - spawn wave when ships amount in space would be lower some value​
    Start delay - delay in seconds before wave will start to spawn ships
    Ships left - this value is used if Spawn Mode = After ships left

    Next info is about ship position
    Spawn position - describes how to spawn ships - in line or randomly and etc. Has 6 options
    Left to right - spawn ships from left side to right side
    Right to left - spawn ships from right side to left side
    Random position - spawn ships randomly inside Box
    Same positions - all ships will have same spawn position, which is created randomly inside SubSpawnCube
    Top to down - spawn ships from top side to bottom side
    Down to top - spawn ships from bottom side to top side​
    Spawn ship delay - delay in seconds

    What is SpawnCube and SubSpawnCube is described below
    Area width, area height and area distance - its scale of SubSpawnBox relative to SpawnBox scale.
    Base width, base height and base distance - its relative coordinates of SubSpawnCube inside SpawnCube

    Invert horizontally - invert horizontally next ship spawn position (explained below)
    Invert vertically - invert vertically next ship spawn position

    Ship settings in wave
    Ship prefab - contains ship prefab
    Activate warp - if flag is set, system will create warp effect when ship is spawned
    Warp time - duration of warp effect
    Inc level - additional increment for ship level, so final ship level would be Base ship level + Inc level
    Min amount
    - min amount of ships in wave
    Max amount - max amount of ships in wave

    Use flock - this flag is used for swarm ships, it will create swarm group and assign it to all ships in wave
    Flock Id - swarm group Id

    End of wave info!

    SpawnCube and SubSpawnCube
    Here I will try to explain what this stuff is, look at pict below



    Huge cube - is a SpawnCube, its static cube which dosnt change position or anything else.
    Small cube inside it - its SubSpawnCube, this cube can change own scale and position.
    SubSpawnCube can have same scale as huge cube or be very thin or be a point - it depends on wave settings.
    All wave ships will be spawned inside that SubSpawnCube.

    Invert horizontally and vertically

    This picture explain how Invert horizontally flag is working. After each ship spawn, system will invert SubSpawnCube (blue rectangle) Y position. And vise versa for Invert vertically, after each ship spawn, system will invert X position.
    This is a result of invert horizontally & vertically

    and this is a result of invert horizontally


    Hope this post would be helpful for someone.
    In next post I will try to explain what problems did we encountered when trying to set up campaign levels.
     
    Last edited: Nov 11, 2019
  6. Kennai

    Kennai

    Joined:
    Nov 1, 2018
    Posts:
    27
    Here I am :)
    Prepearing to release takes so much time ohh
    So, in this post I want to explain problems with our spawn system. After we setup first campaign with 10 rounds (each round had 5-10 waves) and with boss, we played it few times. Then we adjusted some rounds and nothing more.
    After it we tryed to test this campaign with our testers. What seemed normal to us was terrible for testers!
    Testers demanded to completely redo the campaign, to make it more complex. They said 10 waves is nothing for one round, its very short round!
    Unfortunatelly, they were right.
    We tryed to setup new campaign but with so huge amount of settings it would take alot of time!
    So we realised that our spawn system had too much settings that didnt allow us to change campaign fast.
    I thought alot about how can I simplify it and after few days I figured out very nice solution.
    Main idea was that no one cares about what ship, in what position and how many will spawn. Therefore we can use random settings, select random ship, choose random amount, choose random spawn mode and etc.
    Then I thought about round and wave difficult. I decided to use points amount.
    When system spawn a ship, it consume some points. Different ship types consume different points:
    Fighter - 1 point
    Fregate - 2 points and so on.

    Each round also has points (which is increased with each round).
    First round - 30 points, second round - 35 and so on.
    Since round consist of waves, each wave can request random amount of points from a round (from 5 to 10 points).
    Wave will use this points to generate ships.
    If wave requested 10 points, it can generate 10 fighters or 5 fregates.

    So now, to setup campaign we will need:
    • amount of rounds in campaign;
    • initial round points
    • increment of round points;
    • initial wave points;
    • increment of wave points per round;
    • a list of possible ship types.


    each ship type will have:
    • ship prefab
    • min round to spawn;
    • ship points;
    • min ship amount;
    • max ship amount (limit);
    • min spawn delay;
    • max spawn delay;


    After I coded new spawn system which used new data, our life become much easier!
    We could faster setup round and wave power!
    But there was problem with random wave generation.
    Each time we played same round - it generated absolutelly random wave sequences with random ship amounts.
    But we was needed to replicate spawn sequences every time then player plays same round.
    And here helped alot System.Random. It can be initialized with constant value and then generate same sequences of random values!
    After I implemented System.Random, our spawn system became finished!
    We received positive feedback from testers so now we could focus on other important tasks.

    Thanks everyone for reading this.
    If you have any questions, dont hesitate to ask it :)
     
  7. Kennai

    Kennai

    Joined:
    Nov 1, 2018
    Posts:
    27
    Game is released on google play! :)
    First post is updated