Veliri

module
v0.0.0-...-54eea7a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 11, 2020 License: MIT

README

Veliri

браузерная многопользовательская игра в жанре RTS.

Игра повествует о конфликте колонизационных армий за территорию и ресурсы на необитаемой планете.

Опробовать и посмотреть основное описание можно тут (но скорее всего там все лежит С: ):
http://a1c30afd5c6d.sn.mynetname.net

Concept Artist - https://www.artstation.com/tripoltri
Лор/Тексты заданий - Андрей Бабиченко

стек искользуемый в проекте:
front - HTML/CSS/JS/JQUERY/Phaser2CE/WebSocket
back - Golang/Gorilla/PostgreSQl/WebSocket
описание структуры бд с коментариями лежит в папке https://github.com/TrashPony/Veliri/tree/master/db_game

ВАЖНО: Код в этом репозитории устаревший т.к. последующая разработка идет в приватном репозитории

Игра делится на 2 основных сервиса и множество мелких
База - Место где игроки берут задания, создают/разбирают вещи, торгуют и конфигурируют отряды

Base

Workbench

Processor

Inventory

Inventory

Inventory

Глобалка - соотвественно сама игра С:. Игроки на ней перемещаются, воюют, захватывают территории, добывают ресурсы, строят здания поддержки и пр.

GlobalMap

Глобальная карта в игре состояит из секторов, перемещение между которыми происходят через специальные ворота (телепорты)

GlobalMap

У каждого телепорта есть N количество точеку выхода. Если они все заняты то телепорт не работает :)

GlobalMap

Игрок может управлять на карте до 7ми юнитов одновременно. 1 Это основная мобильная платформа которая может в себе содержать дроны поменьше.

GlobalMap

Поиск пути реализован на основе алгоритма А*, но немного модифицирован что бы ходить по прямой Х_х
зеленые квадраты результат поиска пути по алгоритму А*
синии линии это реальный путь который пройдет юнит

GlobalMap

На глобальной карте реализована механика тумана войны + радар
Если обьект видно визуально то игрок получает полную информацию о нем. 
Если обьект видит только радар то игрок получает информацию о 
его место положение и типо обьекта, у каждого типа обьекта своя метка.
[обьект на земле, обьект структура, обьект летает, обьект ресурсы и тд]

Для структур, растений правила немного другие, игрок всегда видит 
информацию по ним но информарция всегда отдается та которую игрок видил 
визуально в последний раз. (тоесть игрок может видить обьект на карте а он уже мертв. 
И он получит обновление информации только когда снова увидит его визуально)

GlobalMap

Строительство - в игре можно строить вспомогательные строения
К ним относятся:
-- Радар
-- Силовой щит (защита от атак)
-- ПРО (Сбивает приближающиеся ракеты)
-- Склад (доп. Инвентарь (хранение вещей))
-- Генератор помех (невидимость для радаров)
-- Турели (атакуют врагов)
-- Генератор которые питание другие строения

Строения во время работа потребляют энергию, если ее не хватает
то строение перестает выполнять свою функцию

Для постройки необходимо иметь модуль строительства, чертеж и ресурсы в трюме

GlobalMap

GlobalMap

Стрельба - реализован на основе балистики снарядов
 на текущий момент в игре 5 типов оружия
  -- лазеры - тоже на основе балистики хотя наверно можно было бы и сделать hitscan но это не точно
  -- пушки прямой наводки - выпускает снаряд который летит с заданой скоростью
  -- артилерия - имеет подобие высоты проверяет колизии только когда находится у земли
  -- Ракеты прямой наводской - преследуют цель. Если врезается в обьект то взрывается
  -- Ракеты Арта - взлетают вверх и ускоряются когда нахожятся ближе к цели
  
  Урон может быть как по площади так и только по обьекту колизии

У кажлого оружия есть точки откуда следует запускать снаряд 
(на гиф желтые квадратики на другой как работает)

Так же реализованы методы преследования целей

Игра жизнь - не имеет практического применения но зато весело Х)
Создает динамические кусты на карте, мешается при стрельбе, 
мелкие дроны их немогут пройти хотя Мазешипы уничтожают их при движение.

GlobalMap

GlobalMap

ИИ - игровой интелект ботов, основан на основе графа
Конфигруерация поведения выглядит примерно вот так, 
а дальше метод с кучей if

GlobalMap

Фракционная война - в игре можно захватывать сектора
Правила фракционной войны:
    Когда база или союзный к базе юнит замечает вражеского юнита,
     включается режим осады на 120 сек. И эти 120 секунд всегда обновляются 
     если контакт продолжается. (То есть режим осады спадет если база не 
     видит врага 120 сек)
    
    Через 60 секунд после ПЕРВОГО контакта отключаются телепорты в сектор,
     выйти можно зайти нельзя.
    
    Все нпс охранники направляются в точку контакта что бы дать отпор.
    
    Задача нападающих занять и укрепится вокруг базы в зоне ее влияния 
    (как базу в wot)
    
    Шкала захвата работает так изначально она пуста если база нечейная,
     если база принадлежит кому-то то она заполнена фракцией владельца.
     Каждый вражеский боец в зоне захвата сбивает 1 поинт захвата или
     добавляет 1 поинт захвата если шкала заполняется его фракцией.
      -- Кароче довольно стандартно работает.
    
    Шкала захвата может быть заполнена не полностью это экономика 
     базы в 10% то и шкала будет заполнена на 10% (при начале атаки).
     Если экономика падает до 0% то база автоматически перестает быть
     захваченной.

// TODO добавить картинок

Остальное - "github.com/TrashPony/Veliri/src/webSocket/other"

Inventory

Inventory

Inventory

Inventory

- Остальное - это сервис который поднят в любом режиме игры. Поэтому он содержит в себе много маленьких сервисов.
    Это чат, обучение, загрузка аватарки, биографии, запросы на характеристики пользователя, прокачка скилов, 
    просмотр карты мира, запоменание положения окон, сервис нотификаций и может что то еще...

Directories

Path Synopsis
src

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL